summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-06-16 18:16:33 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-06-16 18:16:33 +0300
commitd0416ff9158de23df9b916801ec3d27d85403c00 (patch)
tree841d3607f3cca9adb6d0bf1c779c47747b00c010
parent1babeb47a4b68ee2a02a3493a871c0484055538c (diff)
extmod/modbtree: Actually implement end key support for .items().
-rw-r--r--extmod/modbtree.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/extmod/modbtree.c b/extmod/modbtree.c
index 181f5d717..cdcfe6619 100644
--- a/extmod/modbtree.c
+++ b/extmod/modbtree.c
@@ -153,6 +153,16 @@ STATIC mp_obj_t btree_iternext(mp_obj_t self_in) {
}
CHECK_ERROR(res);
+ if (self->end_key != mp_const_none) {
+ DBT end_key;
+ end_key.data = (void*)mp_obj_str_get_data(self->end_key, &end_key.size);
+ BTREE *t = self->db->internal;
+ if (t->bt_cmp(&key, &end_key) >= 0) {
+ self->end_key = MP_OBJ_NULL;
+ return MP_OBJ_STOP_ITERATION;
+ }
+ }
+
mp_obj_tuple_t *pair = mp_obj_new_tuple(2, NULL);
pair->items[0] = mp_obj_new_bytes(key.data, key.size);
pair->items[1] = mp_obj_new_bytes(val.data, val.size);