diff --git a/mod/box/index.h b/mod/box/index.h index 156d2920ca10c693ecfdedd50b5ce43f66458c97..caf0eb95caf1e0af42ae7f06670501fcd992951b 100644 --- a/mod/box/index.h +++ b/mod/box/index.h @@ -134,6 +134,4 @@ struct iterator { void (*free)(struct iterator *); }; -struct box_tuple *iterator_first_equal(struct iterator *it); - #endif /* TARANTOOL_BOX_INDEX_H_INCLUDED */ diff --git a/mod/box/index.m b/mod/box/index.m index e1314b27aeaea9c25fe4c316aa433659cd559579..5b3883c6dc180af6efdc3bf002be92005718cd8f 100644 --- a/mod/box/index.m +++ b/mod/box/index.m @@ -42,7 +42,7 @@ iterator_next_equal(struct iterator *it __attribute__((unused))) return NULL; } -struct box_tuple * +static struct box_tuple * iterator_first_equal(struct iterator *it) { it->next_equal = iterator_next_equal; diff --git a/mod/box/tree.m b/mod/box/tree.m index 424158b4319a539f1c5c09bad8621121bef342f6..17b191c0858b9864a1fa909c4cab59ed5495ea1f 100644 --- a/mod/box/tree.m +++ b/mod/box/tree.m @@ -822,10 +822,7 @@ tree_iterator_free(struct iterator *iterator) assert(iterator->next == tree_iterator_next); struct tree_iterator *it = tree_iterator(iterator); - if (key_def->is_unique && part_count == key_def->part_count) - it->base.next_equal = iterator_first_equal; - else - it->base.next_equal = tree_iterator_next_equal; + it->base.next_equal = tree_iterator_next_equal; it->key_data.data = key; it->key_data.part_count = part_count; diff --git a/test/box_big/tree_pk.result b/test/box_big/tree_pk.result index 319e07a0bbb177c52eb5dbb1a88ef716b741b113..183ba44dcb997c314fd7f707cc46c38fa1632758 100644 --- a/test/box_big/tree_pk.result +++ b/test/box_big/tree_pk.result @@ -93,3 +93,12 @@ Found 2 tuples: lua box.space[3]:truncate() --- ... +insert into t2 values (200, 'select me!') +Insert OK, 1 row affected +select * from t2 where k0 = 200 +Found 1 tuple: +[200, 'select me!'] +select * from t2 where k0 = 199 +No match +select * from t2 where k0 = 201 +No match diff --git a/test/box_big/tree_pk.test b/test/box_big/tree_pk.test index 090a90182aa1da98fb4f17f2dbfd314e629c343d..fbf92797b49f3b4eb81d03e802918e07ca6d0f5b 100644 --- a/test/box_big/tree_pk.test +++ b/test/box_big/tree_pk.test @@ -60,3 +60,9 @@ exec sql "call box.crossjoin(3, 3, 5)" exec sql "call box.crossjoin(3, 3, 10000)" exec sql "call box.crossjoin(3, 2, 10000)" exec admin "lua box.space[3]:truncate()" + +# Bug #922520 - select missing keys +exec sql "insert into t2 values (200, 'select me!')" +exec sql "select * from t2 where k0 = 200" +exec sql "select * from t2 where k0 = 199" +exec sql "select * from t2 where k0 = 201"