Hello. Thanks for the fixes!
On 03/07/2018 12:46, Ivan Koptelov wrote:
Thank for the review. Previous mail contains patch with an error. Here it is
fixed.
Hello. Thanks for the fixes! See my 6 comments below.Are you sure? I searched through the whole project and didn't find it.
And I have pushed more fixes on the branch. Please,
look and squash.
Now every sqlite struct Index is created with tnt struct
index_def inside. This allows us to use tnt index_def
in work with sqlite indexes in the same manner as with
tnt index and is a step to remove sqlite Index with
tnt index.
Fields coll_array, coll_id_array, aiColumn, sort_order
and zName are removed from Index. All usages of this
fields changed to usage of corresponding index_def
fields.
index_is_unique(), sql_index_collation() and
index_column_count() are removed with calls of
index_def corresponding fields.
Closes: #3369
---
Branch:
https://github.com/tarantool/tarantool/tree/sb/gh-3369-use-index-def-in-select-and-where
Issue:https://github.com/tarantool/tarantool/issues/3369
src/box/sql.c | 54 ++-
src/box/sql/analyze.c | 85 ++---
src/box/sql/build.c | 713 +++++++++++++++++------------------
src/box/sql/delete.c | 10 +-
src/box/sql/expr.c | 61 +--
src/box/sql/fkey.c | 132 +++----
src/box/sql/insert.c | 145 ++++---
src/box/sql/pragma.c | 30 +-
src/box/sql/select.c | 2 +-
src/box/sql/sqliteInt.h | 111 ++----
src/box/sql/update.c | 39 +-
src/box/sql/vdbeaux.c | 2 +-
src/box/sql/vdbemem.c | 21 +-
src/box/sql/where.c | 180 ++++-----
src/box/sql/wherecode.c | 102 ++---
test/sql-tap/colname.test.lua | 4 +-
test/sql/message-func-indexes.result | 8 +-
17 files changed, 821 insertions(+), 878 deletions(-)
-
-/** Return true if given index is unique and not nullable. */
-bool
-index_is_unique_not_null(const Index *idx)
4. Same as on the previous review. Still is used in a pair of places.
There is only a variable with the same name in one place.
diff --git a/src/box/sql/where.c b/src/box/sql/where.c
index 85143ed20..7ca02095f 100644
--- a/src/box/sql/where.c
+++ b/src/box/sql/where.c
@@ -3058,6 +3064,8 @@ whereLoopAddBtree(WhereLoopBuilder * pBuilder, /*
WHERE clause information */
if (pSrc->pIBIndex)
break;
}
+ if (&sPk == pProbe && sPk.def != NULL)
+ index_def_delete(sPk.def);
return rc;
}