From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 9FE0922A32 for ; Fri, 28 Dec 2018 04:34:57 -0500 (EST) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MolHZdZDDQhL for ; Fri, 28 Dec 2018 04:34:57 -0500 (EST) Received: from smtp40.i.mail.ru (smtp40.i.mail.ru [94.100.177.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 608FB22A30 for ; Fri, 28 Dec 2018 04:34:57 -0500 (EST) From: Nikita Pettik Subject: [tarantool-patches] [PATCH 0/8] Eliminate affinity from source code Date: Fri, 28 Dec 2018 11:34:44 +0200 Message-Id: Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: tarantool-patches@freelists.org Cc: v.shpilevoy@tarantool.org, Nikita Pettik Branch: https://github.com/tarantool/tarantool/tree/np/gh-3698-eliminate-affinity Issue: https://github.com/tarantool/tarantool/issues/3698 https://github.com/tarantool/tarantool/issues/3886 Main purpose of current patch-set is to remove affinity from source code. We are starting from introducing itermediate converstors from affinity to field type and vice versa. Then, step-by-step we are replacing affinity usages with field type. Non-trivial part of this patch-set is removing numeric affinity (see third patch in series and commit message). It worth noting that current patch-set also fixes issue connected with invisible to query optimizer indexes, which are created from Lua: to choose suitable index QO checked affinity compatibility of key part and field def. As a result, indexes created without affinity field couldn't be used to process query. Nikita Pettik (8): sql: remove SQLITE_ENABLE_UPDATE_DELETE_LIMIT define sql: use field type instead of affinity for type_def sql: remove numeric affinity sql: replace affinity with field type for func sql: replace field type with affinity for VDBE runtime sql: replace affinity with field type in struct Expr sql: clean-up affinity from SQL source code Remove affinity from field definition src/box/field_def.c | 20 --- src/box/field_def.h | 18 --- src/box/lua/lua_sql.c | 12 +- src/box/sql.c | 14 +- src/box/sql/analyze.c | 5 +- src/box/sql/build.c | 19 +-- src/box/sql/date.c | 17 ++- src/box/sql/delete.c | 16 +- src/box/sql/expr.c | 281 ++++++++++++++++------------------- src/box/sql/fkey.c | 8 +- src/box/sql/func.c | 91 ++++++------ src/box/sql/insert.c | 60 +++----- src/box/sql/main.c | 4 +- src/box/sql/parse.y | 38 +++-- src/box/sql/resolve.c | 24 +-- src/box/sql/select.c | 29 ++-- src/box/sql/sqliteInt.h | 107 +++++-------- src/box/sql/update.c | 17 +-- src/box/sql/vdbe.c | 120 +++++++-------- src/box/sql/vdbeInt.h | 2 +- src/box/sql/vdbeaux.c | 19 ++- src/box/sql/vdbemem.c | 37 ++--- src/box/sql/where.c | 37 ++--- src/box/sql/whereInt.h | 3 +- src/box/sql/wherecode.c | 59 +++----- src/box/sql/whereexpr.c | 34 ++--- test/sql-tap/cast.test.lua | 10 +- test/sql-tap/lua-tables.test.lua | 38 ++++- test/sql-tap/tkt-80e031a00f.test.lua | 12 +- test/sql/iproto.result | 2 +- test/sql/types.result | 15 +- test/sql/upgrade.result | 6 +- 32 files changed, 516 insertions(+), 658 deletions(-) -- 2.15.1