From: imeevma@tarantool.org
To: korablev@tarantool.org, tarantool-patches@freelists.org
Cc: v.shpilevoy@tarantool.org
Subject: [tarantool-patches] [PATCH v7 2/2] sql: remove psql_txn from Vdbe
Date: Sat, 27 Oct 2018 14:18:13 +0300 [thread overview]
Message-ID: <3ec6fdd18a0fdb3c5d15ceed1beb296a6c327e29.1540638002.git.imeevma@gmail.com> (raw)
In-Reply-To: <cover.1540638002.git.imeevma@gmail.com>
It makes no sense to store it here, and it has never
did. SQL transaction specific things shall be taken
from global txn object, as any transaction specific
things.
---
src/box/sql/vdbe.c | 15 +++++++++------
src/box/sql/vdbeInt.h | 2 --
src/box/sql/vdbeaux.c | 10 +++-------
3 files changed, 12 insertions(+), 15 deletions(-)
diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c
index 2571492..1e732a9 100644
--- a/src/box/sql/vdbe.c
+++ b/src/box/sql/vdbe.c
@@ -2882,7 +2882,8 @@ case OP_Savepoint: {
Savepoint *pNew;
Savepoint *pSavepoint;
Savepoint *pTmp;
- struct sql_txn *psql_txn = p->psql_txn;
+ struct txn *txn = in_txn();
+ struct sql_txn *psql_txn = txn != NULL ? txn->psql_txn : NULL;
if (psql_txn == NULL) {
assert(!box_txn());
@@ -2960,7 +2961,7 @@ case OP_Savepoint: {
assert(pSavepoint == psql_txn->pSavepoint);
psql_txn->pSavepoint = pSavepoint->pNext;
} else {
- p->psql_txn->fk_deferred_count =
+ psql_txn->fk_deferred_count =
pSavepoint->tnt_savepoint->fk_deferred_count;
}
}
@@ -4802,8 +4803,9 @@ case OP_Param: { /* out2 */
case OP_FkCounter: {
if ((user_session->sql_flags & SQLITE_DeferFKs || pOp->p1 != 0) &&
!p->auto_commit) {
- assert(p->psql_txn != NULL);
- p->psql_txn->fk_deferred_count += pOp->p2;
+ struct txn *txn = in_txn();
+ assert(txn != NULL && txn->psql_txn != NULL);
+ txn->psql_txn->fk_deferred_count += pOp->p2;
} else {
p->nFkConstraint += pOp->p2;
}
@@ -4825,8 +4827,9 @@ case OP_FkCounter: {
case OP_FkIfZero: { /* jump */
if ((user_session->sql_flags & SQLITE_DeferFKs || pOp->p1) &&
!p->auto_commit) {
- assert(p->psql_txn != NULL);
- if (p->psql_txn->fk_deferred_count == 0)
+ struct txn *txn = in_txn();
+ assert(txn != NULL && txn->psql_txn != NULL);
+ if (txn->psql_txn->fk_deferred_count == 0)
goto jump_to_p2;
} else {
if (p->nFkConstraint == 0)
diff --git a/src/box/sql/vdbeInt.h b/src/box/sql/vdbeInt.h
index 7a7d3de..19b35b7 100644
--- a/src/box/sql/vdbeInt.h
+++ b/src/box/sql/vdbeInt.h
@@ -363,8 +363,6 @@ struct Vdbe {
* ignoreRaised variable helps to track such situations
*/
u8 ignoreRaised; /* Flag for ON CONFLICT IGNORE for triggers */
- /** Data related to current transaction. */
- struct sql_txn *psql_txn;
/** The auto-commit flag. */
bool auto_commit;
/**
diff --git a/src/box/sql/vdbeaux.c b/src/box/sql/vdbeaux.c
index ae73f25..3efe252 100644
--- a/src/box/sql/vdbeaux.c
+++ b/src/box/sql/vdbeaux.c
@@ -86,7 +86,6 @@ sql_alloc_txn(struct Vdbe *v)
return NULL;
}
txn->vdbe = v;
- v->psql_txn = txn;
txn->pSavepoint = NULL;
txn->fk_deferred_count = 0;
return txn;
@@ -109,11 +108,7 @@ sql_vdbe_prepare(struct Vdbe *vdbe)
txn->psql_txn = sql_alloc_txn(vdbe);
if (txn->psql_txn == NULL)
return -1;
- } else {
- vdbe->psql_txn = txn->psql_txn;
}
- } else {
- vdbe->psql_txn = NULL;
}
return 0;
}
@@ -2244,8 +2239,9 @@ sqlite3VdbeCloseStatement(Vdbe * p, int eOp)
int
sqlite3VdbeCheckFk(Vdbe * p, int deferred)
{
- if ((deferred && p->psql_txn != NULL &&
- p->psql_txn->fk_deferred_count > 0) ||
+ struct txn *txn = in_txn();
+ if ((deferred && txn != NULL && txn->psql_txn != NULL &&
+ txn->psql_txn->fk_deferred_count > 0) ||
(!deferred && p->nFkConstraint > 0)) {
p->rc = SQLITE_CONSTRAINT_FOREIGNKEY;
p->errorAction = ON_CONFLICT_ACTION_ABORT;
--
2.7.4
next prev parent reply other threads:[~2018-10-27 11:18 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-27 11:18 [tarantool-patches] [PATCH v7 0/2] sql: return all generated ids via IPROTO imeevma
2018-10-27 11:18 ` [tarantool-patches] [PATCH v7 1/2] " imeevma
2018-11-01 12:21 ` [tarantool-patches] " Konstantin Osipov
2018-10-27 11:18 ` imeevma [this message]
2018-10-28 21:28 ` [tarantool-patches] Re: [PATCH v7 0/2] " Vladislav Shpilevoy
2018-10-29 0:37 ` n.pettik
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=3ec6fdd18a0fdb3c5d15ceed1beb296a6c327e29.1540638002.git.imeevma@gmail.com \
--to=imeevma@tarantool.org \
--cc=korablev@tarantool.org \
--cc=tarantool-patches@freelists.org \
--cc=v.shpilevoy@tarantool.org \
--subject='Re: [tarantool-patches] [PATCH v7 2/2] sql: remove psql_txn from Vdbe' \
/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