From: imeevma@tarantool.org To: korablev@tarantool.org Cc: tarantool-patches@freelists.org Subject: [tarantool-patches] [PATCH v4 0/4] sql: do not show IDs generated by trigger Date: Wed, 17 Jul 2019 12:54:49 +0300 [thread overview] Message-ID: <cover.1563356272.git.imeevma@gmail.com> (raw) Currently, if an INSERT was executed by a trigger during the execution of a statement, if there were any generated identifiers, they can be displayed as a result of the statement. This is incorrect, since we are not able to divide the IDs obtained into those that belong to the table mentioned in the statement and those that do not belong to this table. https://github.com/tarantool/tarantool/issues/4188 https://github.com/tarantool/tarantool/tree/imeevma/gh-4188-remove-additonal-generated-ids Changes in v2: 1) Patch was divided into 3 new patches. Changes in v3: 1) Removed tests in refactoring patch "sql: remove unnecessary AUTOINCREMENT ID generation". They shows nothing. 2) Changed the way to check that INSERT executed by trigger. 3) Fixed a bug with the display of generated AUTOINCREMENT identifiers, even if INSERT failed in the case of INSERT OR IGNORE. Changes in v4: 1) Changed the solution for the issue. Now it works without new opcode. However, new argument was added to OP_IdxInsert. 2) Now the patch in which VDBE does not take into account failed inserts becomes practically useless. It has been removed. However, a new patch was added that corrects row_count in the specified case. Mergen Imeev (4): sql: remove unnecessary AUTOINCREMENT ID generation sql: skip autoinc IDs generated inside SQL trigger sql: remove VDBE from TXN sql: do not increase row-count if INSERT or REPLACE failed src/box/sequence.c | 19 +++++--- src/box/sequence.h | 13 +++-- src/box/sql/insert.c | 18 ++++--- src/box/sql/sqlInt.h | 3 +- src/box/sql/update.c | 2 +- src/box/sql/vdbe.c | 54 ++++++++------------- src/box/sql/vdbe.h | 3 +- src/box/sql/vdbeInt.h | 2 +- src/box/sql/vdbeaux.c | 10 ++-- src/box/txn.h | 17 ------- test/sql/iproto.result | 2 - test/sql/row-count.result | 30 ++++++++++++ test/sql/row-count.test.lua | 8 ++++ test/sql/triggers.result | 114 ++++++++++++++++++++++++++++++++++++++++++++ test/sql/triggers.test.lua | 24 ++++++++++ 15 files changed, 239 insertions(+), 80 deletions(-) -- 2.7.4
next reply other threads:[~2019-07-17 9:54 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-07-17 9:54 imeevma [this message] 2019-07-17 9:54 ` [tarantool-patches] [PATCH v4 1/4] sql: remove unnecessary AUTOINCREMENT ID generation imeevma 2019-07-17 9:54 ` [tarantool-patches] [PATCH v4 2/4] sql: skip autoinc IDs generated inside SQL trigger imeevma 2019-07-17 16:58 ` [tarantool-patches] " n.pettik 2019-07-19 9:33 ` Mergen Imeev 2019-07-17 9:54 ` [tarantool-patches] [PATCH v4 3/4] sql: remove VDBE from TXN imeevma 2019-07-17 9:54 ` [tarantool-patches] [PATCH v4 4/4] sql: do not increase row-count if INSERT or REPLACE failed imeevma 2019-07-17 16:57 ` [tarantool-patches] " n.pettik 2019-07-17 18:08 ` [tarantool-patches] " Мерген Имеев 2019-07-19 9:36 ` Mergen Imeev 2019-07-22 10:48 ` n.pettik 2019-07-22 11:26 ` Mergen Imeev 2019-07-24 13:55 ` [tarantool-patches] Re: [PATCH v4 0/4] sql: do not show IDs generated by trigger 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.1563356272.git.imeevma@gmail.com \ --to=imeevma@tarantool.org \ --cc=korablev@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [tarantool-patches] [PATCH v4 0/4] sql: do not show IDs generated by trigger' \ /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