[tarantool-patches] [PATCH v3 3/4] sql: remove VDBE from TXN
imeevma at tarantool.org
imeevma at tarantool.org
Thu Jul 11 11:22:36 MSK 2019
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 d6b32f5..47ef0ab 100644
--- a/src/box/sql/vdbe.c
+++ b/src/box/sql/vdbe.c
@@ -2928,7 +2928,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;
@@ -2984,7 +2984,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 baeeb46..0912eaf 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 d1ef220..0aa32b6 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;
};
/**
@@ -406,21 +404,6 @@ void
txn_on_stop(struct trigger *trigger, void *event);
/**
- * 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
More information about the Tarantool-patches
mailing list