[patches] Re: [PATCH 1/1] index: make index:min/max return a tuple with correct key

v.shpilevoy at tarantool.org v.shpilevoy at tarantool.org
Wed Mar 7 16:42:31 MSK 2018


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;
 }





More information about the Tarantool-patches mailing list