Tarantool development patches archive
 help / color / mirror / Atom feed
* [tarantool-patches] [PATCH 0/4] Replace space id with space ptrs in VDBE runtime
@ 2018-03-20 23:48 Nikita Pettik
  2018-03-20 23:48 ` [tarantool-patches] [PATCH 1/4] sql: pass space pointer to OP_OpenRead/OpenWrite Nikita Pettik
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: Nikita Pettik @ 2018-03-20 23:48 UTC (permalink / raw)
  To: tarantool-patches; +Cc: Nikita Pettik

Branch: https://github.com/tarantool/tarantool/tree/np/gh-3252-slit-dml-and-ddl-sql
Issue: https://github.com/tarantool/tarantool/issues/3252

In order to avoid additional lookups during VDBE execution,
it was suggested to pass pointer fetched at query compilation time to
opcodes which create cursors (i.e. OP_OpenRead and OP_OpenWrite).
However, any DDL routine may invalidate pointers. Thus, to operate on
system spaces (which are used during DDL) new opcodes have been introduced:
OP_SInsert and OP_SDelete. But originally, SQL DDL under hood used nested
parsing to generate code for non-trivial deletion. For instance:
"DELETE FROM _INDEX WHERE id = space_id AND iid > 0" -- to remove all
secondary indexes. To use new operands such nested parsing has been
substituted with hardcoded VDBE programs.
Finally, fresh pointer to space can also be obtained at VDBE rutime using
new opcode OP_SIDtoPtr, which converts space id to ptr and saves it to
given register. This opcode should be used when it is impossible to avoid
mixing DDL and DML routine in the same query
(e.g. CREATE TABLE AS SELECT FROM ...).

Nikita Pettik (4):
  sql: pass space pointer to OP_OpenRead/OpenWrite
  sql: introduce opcodes to operate on system spaces
  sql: rework code generation for DDL routine
  sql: rework OP_OpenWrite/OpenRead

 src/box/sql.c                |  51 ++++---
 src/box/sql/analyze.c        |  17 ++-
 src/box/sql/build.c          | 321 ++++++++++++++++++++++---------------------
 src/box/sql/expr.c           |  14 +-
 src/box/sql/fkey.c           |  11 +-
 src/box/sql/insert.c         |  37 ++++-
 src/box/sql/opcodes.c        |  51 +++----
 src/box/sql/opcodes.h        |  59 ++++----
 src/box/sql/select.c         |  11 +-
 src/box/sql/sqliteInt.h      |   5 +
 src/box/sql/tarantoolInt.h   |  11 +-
 src/box/sql/trigger.c        |  27 ++--
 src/box/sql/vdbe.c           | 310 +++++++++++++++++++++--------------------
 src/box/sql/vdbe.h           |   1 +
 src/box/sql/vdbeInt.h        |   1 +
 src/box/sql/vdbeaux.c        |  13 ++
 src/box/sql/where.c          |  12 +-
 test/sql/transition.result   |  11 +-
 test/sql/transition.test.lua |   8 +-
 19 files changed, 550 insertions(+), 421 deletions(-)

-- 
2.15.1

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2018-03-27 16:28 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-20 23:48 [tarantool-patches] [PATCH 0/4] Replace space id with space ptrs in VDBE runtime Nikita Pettik
2018-03-20 23:48 ` [tarantool-patches] [PATCH 1/4] sql: pass space pointer to OP_OpenRead/OpenWrite Nikita Pettik
2018-03-21 13:14   ` [tarantool-patches] " Kirill Yukhin
2018-03-22 10:07     ` n.pettik
2018-03-22 11:04       ` v.shpilevoy
2018-03-23 16:01         ` n.pettik
2018-03-20 23:48 ` [tarantool-patches] [PATCH 2/4] sql: introduce opcodes to operate on system spaces Nikita Pettik
2018-03-22 11:42   ` [tarantool-patches] " v.shpilevoy
2018-03-22 12:23     ` n.pettik
2018-03-22 13:09       ` v.shpilevoy
2018-03-23 16:20         ` n.pettik
2018-03-20 23:48 ` [tarantool-patches] [PATCH 3/4] sql: rework code generation for DDL routine Nikita Pettik
2018-03-22 13:57   ` [tarantool-patches] " v.shpilevoy
2018-03-23 16:33     ` n.pettik
2018-03-20 23:48 ` [tarantool-patches] [PATCH 4/4] sql: rework OP_OpenWrite/OpenRead Nikita Pettik
2018-03-22 14:11   ` [tarantool-patches] " v.shpilevoy
2018-03-23 16:39     ` n.pettik
2018-03-24 12:37 ` [tarantool-patches] Re: [PATCH 0/4] Replace space id with space ptrs in VDBE runtime v.shpilevoy
2018-03-27 16:28   ` n.pettik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox