[tarantool-patches] Re: [PATCH v8.5] sql: add index_def to struct Index
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Tue Jul 3 15:13:06 MSK 2018
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.
>>
>> 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.
> Are you sure? I searched through the whole project and didn't find it.
> There is only a variable with the same name in one place.
Sorry, my fault. It is just a variable.
> 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);
It will not be deleted since pProbe is changed in the cycle above.
I have checked it by putting assert(false) under this 'if'.
And I have already fixed it on the branch.
> return rc;
> }
>
I have pushed my last fixes on the branch. Please, look, squash and then
LGTM. Nikita, please, review after the squash.
More information about the Tarantool-patches
mailing list