[tarantool-patches] [PATCH 00/10] sql: cleanup in struct Index and struct Table

Nikita Pettik korablev at tarantool.org
Sun Aug 12 17:12:56 MSK 2018


Branch: https://github.com/tarantool/tarantool/tree/np/cleanup-in-Index-and-Table
Issues:
https://github.com/tarantool/tarantool/issues/3561
https://github.com/tarantool/tarantool/issues/3565
https://github.com/tarantool/tarantool/issues/3566

Current patch-set is preliminary to finishing DD integration.
It gets rid off all functional fields from original SQLite's struct
Index and struct Table, which can be substituted with corresponding
fields from server structures or be calculated using them.

It is worth mentioning ninth patch in series which removes support of
ON CONFLICT error actions related to index uniqueness. Firstly, alongside
with it INSERT and UPDATE code generation has been slightly simplified:
removed a lot of excess register allocations; moved cursors' allocations
closer to their usages (auxiliary cursors on secondary indexes are
required only to process REPLACE or IGNORE conflict actions);
significantly reworked function which generates code to process
constraint checks. To sump up, all these changes result in fixing
assertion fault during INSERT OR REPLACE and incorrect behavior
of UPDATE OR IGNORE statements.

* To those who will review *
I deliberately separated all commits on removing fields since this way
seems to be easier to review and understand provided changes.
After review I can squash some of them, if you want so.

Nikita Pettik (10):
  sql: remove suport of ALTER TABLE ADD COLUMN
  sql: remove string of fields collation from Table
  sql: remove index hash from struct Table
  sql: remove flags from struct Table 
  sql: remove affinity string of columns from Index
  sql: completely remove support of partial indexes
  sql: remove index type from struct Index
  sql: use secondary indexes to process OP_Delete
  sql: disable ON CONFLICT actions for indexes
  sql: move autoincrement field number to server

 src/box/space_def.c                      |   3 +
 src/box/space_def.h                      |   5 +
 src/box/sql.c                            |  37 +-
 src/box/sql/alter.c                      | 185 ------
 src/box/sql/analyze.c                    |   2 +-
 src/box/sql/build.c                      | 263 +++------
 src/box/sql/delete.c                     |  20 +-
 src/box/sql/insert.c                     | 968 ++++++++-----------------------
 src/box/sql/main.c                       |  45 +-
 src/box/sql/parse.y                      |  42 +-
 src/box/sql/pragma.c                     |  10 +-
 src/box/sql/prepare.c                    |   9 +-
 src/box/sql/select.c                     |   4 +-
 src/box/sql/sqliteInt.h                  | 198 ++++---
 src/box/sql/tarantoolInt.h               |  16 +-
 src/box/sql/update.c                     | 252 ++------
 src/box/sql/vdbe.c                       |  11 +-
 src/box/sql/vdbeaux.c                    |  11 +-
 src/box/sql/vdbemem.c                    |   3 +-
 src/box/sql/where.c                      |  64 +-
 src/box/sql/wherecode.c                  |   7 +-
 test/sql-tap/conflict3.test.lua          | 402 -------------
 test/sql-tap/gh-2931-savepoints.test.lua |   2 +-
 test/sql-tap/gh2140-trans.test.lua       |  54 +-
 test/sql-tap/gh2964-abort.test.lua       |  11 +-
 test/sql-tap/index1.test.lua             | 111 +---
 test/sql-tap/null.test.lua               |   6 +-
 test/sql-tap/tkt-4a03edc4c8.test.lua     |   6 +-
 test/sql-tap/triggerC.test.lua           |   2 +-
 test/sql/on-conflict.result              | 134 +++--
 test/sql/on-conflict.test.lua            |  79 ++-
 31 files changed, 733 insertions(+), 2229 deletions(-)
 delete mode 100755 test/sql-tap/conflict3.test.lua

-- 
2.15.1





More information about the Tarantool-patches mailing list