From: Nikita Pettik <korablev@tarantool.org> To: tarantool-patches@freelists.org Cc: v.shpilevoy@tarantool.org, Nikita Pettik <korablev@tarantool.org> Subject: [tarantool-patches] [PATCH 0/4] Rework SQL transaction processing Date: Thu, 3 May 2018 21:49:21 +0300 [thread overview] Message-ID: <cover.1525368399.git.korablev@tarantool.org> (raw) Branch: https://github.com/tarantool/tarantool/tree/np/rework-sql-transactions Issue: https://github.com/tarantool/tarantool/issues/3237 https://github.com/tarantool/tarantool/issues/3313 https://github.com/tarantool/tarantool/issues/3379 This patch-set consists of several fixes related to SQL transactions. First patch provides slight refactoring of transactions processing in SQL: instead of using one opcode OP_AutoCommit for BEGIN, COMMIT and ROLLBACK handling during VDBE execution, three different opcodes are added. Moreover, redundant switches of auto-commit flag are removed. Now, it is set during VDBE creation and can be changed only by BEGIN statement or by DML request (since DML must be surrounded in a separate txn). Second patch is the main in series and introduces transitive transactions between SQL and Lua. To implement this feature, deferred FK counter has become attribute of transaction, and removed from VDBE. Last two patches fix bugs connected with SQL savepoints: first one led to assertion fault due to wrong assert condition; second one resulted in incorrect processing of RELEASE statement due to obsolete SQLite code. Nikita Pettik (4): sql: remove OP_AutoCommit opcode sql: allow transitive Lua <-> SQL transactions sql: allow SAVEPOINT statement outside transaction sql: fix SAVEPOINT RELEASE statement src/box/errcode.h | 1 + src/box/sql/build.c | 51 ++----- src/box/sql/fkey.c | 66 +++------ src/box/sql/main.c | 8 +- src/box/sql/parse.y | 11 +- src/box/sql/pragma.c | 3 - src/box/sql/sqliteInt.h | 33 ++++- src/box/sql/status.c | 3 +- src/box/sql/vdbe.c | 176 ++++++++++++----------- src/box/sql/vdbeInt.h | 29 +--- src/box/sql/vdbeapi.c | 4 - src/box/sql/vdbeaux.c | 83 +++++------ src/box/txn.c | 18 ++- src/box/txn.h | 22 ++- test/box/misc.result | 1 + test/sql/gh-3313-savepoints-outside-txn.result | 32 +++++ test/sql/gh-3313-savepoints-outside-txn.test.lua | 18 +++ test/sql/gh-3379-release-savepoints.result | 40 ++++++ test/sql/gh-3379-release-savepoints.test.lua | 26 ++++ test/sql/transitive-transactions.result | 124 ++++++++++++++++ test/sql/transitive-transactions.test.lua | 67 +++++++++ 21 files changed, 555 insertions(+), 261 deletions(-) create mode 100644 test/sql/gh-3313-savepoints-outside-txn.result create mode 100644 test/sql/gh-3313-savepoints-outside-txn.test.lua create mode 100644 test/sql/gh-3379-release-savepoints.result create mode 100644 test/sql/gh-3379-release-savepoints.test.lua create mode 100644 test/sql/transitive-transactions.result create mode 100644 test/sql/transitive-transactions.test.lua -- 2.15.1
next reply other threads:[~2018-05-03 18:49 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-03 18:49 Nikita Pettik [this message] 2018-05-03 18:49 ` [tarantool-patches] [PATCH 1/4] sql: remove OP_AutoCommit opcode Nikita Pettik 2018-05-04 14:12 ` [tarantool-patches] " Vladislav Shpilevoy 2018-05-05 19:14 ` n.pettik 2018-05-03 18:49 ` [tarantool-patches] [PATCH 2/4] sql: allow transitive Lua <-> SQL transactions Nikita Pettik 2018-05-04 14:12 ` [tarantool-patches] " Vladislav Shpilevoy 2018-05-05 19:14 ` n.pettik 2018-05-03 18:49 ` [tarantool-patches] [PATCH 3/4] sql: allow SAVEPOINT statement outside transaction Nikita Pettik 2018-05-04 14:12 ` [tarantool-patches] " Vladislav Shpilevoy 2018-05-05 19:15 ` n.pettik 2018-05-03 18:49 ` [tarantool-patches] [PATCH 4/4] sql: fix SAVEPOINT RELEASE statement Nikita Pettik 2018-05-04 14:12 ` [tarantool-patches] " Vladislav Shpilevoy 2018-05-05 19:16 ` n.pettik 2018-05-07 13:31 ` [tarantool-patches] Re: [PATCH 0/4] Rework SQL transaction processing Vladislav Shpilevoy 2018-05-11 7:17 ` Kirill Yukhin 2018-05-11 10:08 ` Kirill Yukhin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=cover.1525368399.git.korablev@tarantool.org \ --to=korablev@tarantool.org \ --cc=tarantool-patches@freelists.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [tarantool-patches] [PATCH 0/4] Rework SQL transaction processing' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox