[patches] Re: [PATCH 1/1] index: make index:min/max return a tuple with correct key
Konstantin Osipov
kostja at tarantool.org
Wed Mar 7 20:23:34 MSK 2018
* v.shpilevoy at tarantool.org <v.shpilevoy at tarantool.org> [18/03/07 16:46]:
It turns out this patch breaks 2.0, selectB.test.lua in sql-tap
suite.
Somehow vdbe relies on the old behaviour of max.
Could you please investigate?
> Used EQ/REQ instead of manual LE, GE + cmp().
>
>
> diff --git a/src/box/index.cc b/src/box/index.cc
> index 5d1ad3571..1ab0aba58 100644
> --- a/src/box/index.cc
> +++ b/src/box/index.cc
> @@ -38,7 +38,6 @@
> #include "txn.h"
> #include "rmean.h"
> #include "info.h"
> -#include "tuple_compare.h"
>
> /* {{{ Utilities. **********************************************/
>
> @@ -562,14 +561,11 @@ int
> generic_index_min(struct index *index, const char *key,
> uint32_t part_count, struct tuple **result)
> {
> - struct iterator *it = index_create_iterator(index, ITER_GE,
> + struct iterator *it = index_create_iterator(index, ITER_EQ,
> key, part_count);
> if (it == NULL)
> return -1;
> int rc = iterator_next(it, result);
> - if (*result != NULL && tuple_compare_with_key(*result, key, part_count,
> - index->def->key_def) != 0)
> - *result = NULL;
> iterator_delete(it);
> return rc;
> }
> @@ -578,14 +574,11 @@ int
> generic_index_max(struct index *index, const char *key,
> uint32_t part_count, struct tuple **result)
> {
> - struct iterator *it = index_create_iterator(index, ITER_LE,
> + struct iterator *it = index_create_iterator(index, ITER_REQ,
> key, part_count);
> if (it == NULL)
> return -1;
> int rc = iterator_next(it, result);
> - if (*result != NULL && tuple_compare_with_key(*result, key, part_count,
> - index->def->key_def) != 0)
> - *result = NULL;
> iterator_delete(it);
> return rc;
> }
>
--
Konstantin Osipov, Moscow, Russia, +7 903 626 22 32
http://tarantool.org - www.twitter.com/kostja_osipov
More information about the Tarantool-patches
mailing list