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 42E5E227B4 for ; Wed, 17 Jul 2019 05:55:02 -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 D-HlO5IT0SeC for ; Wed, 17 Jul 2019 05:55:02 -0400 (EDT) Received: from smtpng2.m.smailru.net (smtpng2.m.smailru.net [94.100.179.3]) (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 0090222CE9 for ; Wed, 17 Jul 2019 05:55:01 -0400 (EDT) From: imeevma@tarantool.org Subject: [tarantool-patches] [PATCH v4 3/4] sql: remove VDBE from TXN Date: Wed, 17 Jul 2019 12:54:57 +0300 Message-Id: In-Reply-To: References: 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 VDBE was added to TXN because the generated identifiers were added to VDBE in the sequence_next() function. Since they are now stored in the VDBE itself, it is not necessary to have it in TXN. Follow-up #4188 --- src/box/sql/vdbe.c | 4 ++-- src/box/sql/vdbe.h | 3 +-- src/box/sql/vdbeInt.h | 2 +- src/box/sql/vdbeaux.c | 10 ++++------ src/box/txn.h | 17 ----------------- 5 files changed, 8 insertions(+), 28 deletions(-) diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c index 951303c..3b38bc2 100644 --- a/src/box/sql/vdbe.c +++ b/src/box/sql/vdbe.c @@ -2898,7 +2898,7 @@ case OP_CheckViewReferences: { * Otherwise, raise an error with appropriate error message. */ case OP_TransactionBegin: { - if (sql_txn_begin(p) != 0) + if (sql_txn_begin() != 0) goto abort_due_to_error; p->auto_commit = false ; break; @@ -2954,7 +2954,7 @@ case OP_TransactionRollback: { */ case OP_TTransaction: { if (!box_txn()) { - if (sql_txn_begin(p) != 0) + if (sql_txn_begin() != 0) goto abort_due_to_error; } else { p->anonymous_savepoint = sql_savepoint(p, NULL); diff --git a/src/box/sql/vdbe.h b/src/box/sql/vdbe.h index 4f94643..fde898d 100644 --- a/src/box/sql/vdbe.h +++ b/src/box/sql/vdbe.h @@ -175,11 +175,10 @@ Vdbe *sqlVdbeCreate(Parse *); * Allocate and initialize SQL-specific struct which completes * original Tarantool's txn struct using region allocator. * - * @param v Vdbe with which associate this transaction. * @retval NULL on OOM, new psql_txn struct on success. **/ struct sql_txn * -sql_alloc_txn(struct Vdbe *v); +sql_alloc_txn(); /** * Prepare given VDBE to execution: initialize structs connected diff --git a/src/box/sql/vdbeInt.h b/src/box/sql/vdbeInt.h index 6bfeecc..30cac07 100644 --- a/src/box/sql/vdbeInt.h +++ b/src/box/sql/vdbeInt.h @@ -440,7 +440,7 @@ u32 sqlVdbeSerialGet(const unsigned char *, u32, Mem *); int sqlVdbeExec(Vdbe *); int sqlVdbeList(Vdbe *); int -sql_txn_begin(Vdbe *p); +sql_txn_begin(); Savepoint * sql_savepoint(Vdbe *p, const char *zName); diff --git a/src/box/sql/vdbeaux.c b/src/box/sql/vdbeaux.c index d1388f2..4e6d7d8 100644 --- a/src/box/sql/vdbeaux.c +++ b/src/box/sql/vdbeaux.c @@ -77,7 +77,7 @@ sqlVdbeCreate(Parse * pParse) } struct sql_txn * -sql_alloc_txn(struct Vdbe *v) +sql_alloc_txn() { struct sql_txn *txn = region_alloc_object(&fiber()->gc, struct sql_txn); @@ -86,7 +86,6 @@ sql_alloc_txn(struct Vdbe *v) "struct sql_txn"); return NULL; } - txn->vdbe = v; txn->pSavepoint = NULL; txn->fk_deferred_count = 0; return txn; @@ -106,11 +105,10 @@ sql_vdbe_prepare(struct Vdbe *vdbe) * check FK violations, at least now. */ if (txn->psql_txn == NULL) { - txn->psql_txn = sql_alloc_txn(vdbe); + txn->psql_txn = sql_alloc_txn(); if (txn->psql_txn == NULL) return -1; } - txn->psql_txn->vdbe = vdbe; } return 0; } @@ -1997,7 +1995,7 @@ sqlVdbeCheckFk(Vdbe * p, int deferred) } int -sql_txn_begin(Vdbe *p) +sql_txn_begin() { if (in_txn()) { diag_set(ClientError, ER_ACTIVE_TRANSACTION); @@ -2006,7 +2004,7 @@ sql_txn_begin(Vdbe *p) struct txn *ptxn = txn_begin(false); if (ptxn == NULL) return -1; - ptxn->psql_txn = sql_alloc_txn(p); + ptxn->psql_txn = sql_alloc_txn(); if (ptxn->psql_txn == NULL) { box_txn_rollback(); return -1; diff --git a/src/box/txn.h b/src/box/txn.h index baeaa0e..271d5f9 100644 --- a/src/box/txn.h +++ b/src/box/txn.h @@ -118,8 +118,6 @@ struct sql_txn { * VDBE to the next in the same transaction. */ uint32_t fk_deferred_count; - /** Current VDBE. */ - struct Vdbe *vdbe; }; /** @@ -412,21 +410,6 @@ txn_last_stmt(struct txn *txn) } /** - * Return VDBE that is being currently executed. - * - * @retval VDBE that is being currently executed. - * @retval NULL Either txn or ptxn_sql or vdbe is NULL; - */ -static inline struct Vdbe * -txn_vdbe() -{ - struct txn *txn = in_txn(); - if (txn == NULL || txn->psql_txn == NULL) - return NULL; - return txn->psql_txn->vdbe; -} - -/** * FFI bindings: do not throw exceptions, do not accept extra * arguments */ -- 2.7.4