[Tarantool-patches] [PATCH v1 0/9] schema: rework _trigger space
Kirill Shcherbatov
kshcherbatov at tarantool.org
Mon Oct 14 19:03:15 MSK 2019
This patchset reworks structures that represent SQL triggers to inherent
them from base trigger class. It is an important step to introduce a
LUA persistent trigger in Tarantool as well as to support SQL triggers
evaluation on the server side.
In scope of this patchset the _triggers space was extended with a new fields.
The _trigger space updated format is:
[<name> STRING, <space_id> UINT32, <opts> MAP, <language> STR,
<type> STR, <event_manipulation> STR,
<action_timing> STR, <code> STR]
Now trigger is produced mostly by tuple-based metadata definition instead of
naive SQL request parsing.
Branch: http://github.com/tarantool/tarantool/tree/kshch/gh-4343-persistent-triggers
Issue: https://github.com/tarantool/tarantool/issues/4343
Kirill Shcherbatov (9):
sql: remove redundant pointer in TriggerStep
box: rename struct trigger to lua_trigger
box: introduce trigger_event_manipulation enum
box: introduce trigger_action_timing enum
sql: use rlist to organize triggers in a list
sql: rework CREATE TABLE rule in parser
sql: wrap all ASTs in sql_trigger_expr structure
sql: inherit sql_trigger from a new trigger class
schema: rework _trigger system space
src/box/CMakeLists.txt | 2 +
src/box/alter.cc | 438 +++++++++--------
src/box/alter.h | 34 +-
src/box/applier.cc | 28 +-
src/box/applier.h | 2 +-
src/box/bootstrap.snap | Bin 5934 -> 5981 bytes
src/box/ck_constraint.c | 2 +-
src/box/ck_constraint.h | 4 +-
src/box/errcode.h | 1 +
src/box/error.cc | 2 +-
src/box/fk_constraint.c | 6 +-
src/box/iproto.cc | 4 +-
src/box/lua/call.c | 4 +-
src/box/lua/sequence.c | 4 +-
src/box/lua/space.cc | 4 +-
src/box/lua/tuple.c | 2 +-
src/box/lua/upgrade.lua | 16 +
src/box/memtx_space.c | 8 +-
src/box/recovery.cc | 2 +-
src/box/relay.cc | 6 +-
src/box/replication.cc | 8 +-
src/box/replication.h | 4 +-
src/box/schema.cc | 2 +-
src/box/schema_def.h | 5 +
src/box/session.cc | 4 +-
src/box/session.h | 4 +-
src/box/space.c | 11 +-
src/box/space.h | 4 +-
src/box/sql.c | 105 ++--
src/box/sql.h | 125 +++--
src/box/sql/build.c | 97 +++-
src/box/sql/delete.c | 27 +-
src/box/sql/fk_constraint.c | 109 +++--
src/box/sql/insert.c | 42 +-
src/box/sql/parse.y | 26 +-
src/box/sql/parse_def.h | 29 +-
src/box/sql/prepare.c | 7 +-
src/box/sql/resolve.c | 15 +-
src/box/sql/sqlInt.h | 111 ++---
src/box/sql/tokenize.c | 16 +-
src/box/sql/trigger.c | 448 ++++++------------
src/box/sql/update.c | 45 +-
src/box/sql/vdbe.c | 18 +-
src/box/trigger.c | 73 +++
src/box/trigger.h | 80 ++++
src/box/trigger_def.c | 131 +++++
src/box/trigger_def.h | 194 ++++++++
src/box/txn.c | 8 +-
src/box/txn.h | 14 +-
src/box/vinyl.c | 32 +-
src/box/vy_lsm.c | 2 +-
src/box/vy_scheduler.c | 4 +-
src/box/vy_tx.c | 2 +-
src/lib/core/cbus.c | 2 +-
src/lib/core/fiber.c | 6 +-
src/lib/core/trigger.cc | 6 +-
src/lib/core/trigger.h | 20 +-
src/lib/swim/swim.c | 2 +-
src/lua/swim.c | 2 +-
src/lua/trigger.c | 6 +-
src/lua/trigger.h | 2 +-
src/lua/utils.h | 2 +-
src/main.cc | 4 +-
test/box-py/bootstrap.result | 5 +-
test/box/access_misc.result | 139 +++---
test/box/misc.result | 1 +
test/sql/ddl.result | 6 +-
test/sql/ddl.test.lua | 6 +-
.../gh2141-delete-trigger-drop-table.result | 36 +-
.../gh2141-delete-trigger-drop-table.test.lua | 4 +-
test/sql/persistency.result | 36 +-
test/sql/persistency.test.lua | 8 +-
test/sql/triggers.result | 91 ++--
test/sql/triggers.test.lua | 30 +-
test/sql/upgrade.result | 16 +-
test/sql/upgrade.test.lua | 4 +-
test/unit/CMakeLists.txt | 3 +-
test/unit/cbus.c | 6 +-
test/unit/swim.c | 14 +-
test/unit/swim_test_utils.c | 6 +-
80 files changed, 1695 insertions(+), 1139 deletions(-)
create mode 100644 src/box/trigger.c
create mode 100644 src/box/trigger.h
create mode 100644 src/box/trigger_def.c
create mode 100644 src/box/trigger_def.h
--
2.23.0
More information about the Tarantool-patches
mailing list