From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id C50BD22C8D for ; Wed, 17 Jul 2019 05:54:52 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mn-6YTEOc5BS for ; Wed, 17 Jul 2019 05:54:52 -0400 (EDT) Received: from smtpng1.m.smailru.net (smtpng1.m.smailru.net [94.100.181.251]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 7FCDA227B4 for ; Wed, 17 Jul 2019 05:54:52 -0400 (EDT) From: imeevma@tarantool.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 Message-Id: Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-Help: List-Unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-Subscribe: List-Owner: List-post: List-Archive: To: korablev@tarantool.org Cc: tarantool-patches@freelists.org 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