aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2021-01-29 21:31:59 +0000
committerdrh <>2021-01-29 21:31:59 +0000
commitd086aa0a480f6fabf0bb4f0952ae84d79d4295f4 (patch)
tree58aaf928912893062a1aed0834c4ab95d03cbbb7 /src
parentdac9a5f7df0e65f35d6f9de423a90cb7eb52c8b6 (diff)
downloadsqlite-d086aa0a480f6fabf0bb4f0952ae84d79d4295f4.tar.gz
sqlite-d086aa0a480f6fabf0bb4f0952ae84d79d4295f4.zip
RETURNING works even if "PRAGMA count_changes=ON" is set.
FossilOrigin-Name: a9122d97577b239704cdee1a90a3b0dbff8bdf9dea2324d7315bd47238dcc8eb
Diffstat (limited to 'src')
-rw-r--r--src/build.c2
-rw-r--r--src/delete.c1
-rw-r--r--src/insert.c1
-rw-r--r--src/update.c1
4 files changed, 5 insertions, 0 deletions
diff --git a/src/build.c b/src/build.c
index a25c9c6d8..74c5319ca 100644
--- a/src/build.c
+++ b/src/build.c
@@ -1267,6 +1267,8 @@ void sqlite3AddReturning(Parse *pParse, ExprList *pList){
Returning *pRet;
Hash *pHash;
sqlite3 *db = pParse->db;
+ assert( !pParse->bReturning );
+ pParse->bReturning = 1;
pRet = sqlite3DbMallocZero(db, sizeof(*pRet));
if( pRet==0 ){
sqlite3ExprListDelete(db, pList);
diff --git a/src/delete.c b/src/delete.c
index 064ae7325..e9b092b24 100644
--- a/src/delete.c
+++ b/src/delete.c
@@ -387,6 +387,7 @@ void sqlite3DeleteFrom(
if( (db->flags & SQLITE_CountRows)!=0
&& !pParse->nested
&& !pParse->pTriggerTab
+ && !pParse->bReturning
){
memCnt = ++pParse->nMem;
sqlite3VdbeAddOp2(v, OP_Integer, 0, memCnt);
diff --git a/src/insert.c b/src/insert.c
index 6047969c0..4f549f352 100644
--- a/src/insert.c
+++ b/src/insert.c
@@ -954,6 +954,7 @@ void sqlite3Insert(
if( (db->flags & SQLITE_CountRows)!=0
&& !pParse->nested
&& !pParse->pTriggerTab
+ && !pParse->bReturning
){
regRowCount = ++pParse->nMem;
sqlite3VdbeAddOp2(v, OP_Integer, 0, regRowCount);
diff --git a/src/update.c b/src/update.c
index f8cb2afed..82a6eb635 100644
--- a/src/update.c
+++ b/src/update.c
@@ -643,6 +643,7 @@ void sqlite3Update(
if( (db->flags&SQLITE_CountRows)!=0
&& !pParse->pTriggerTab
&& !pParse->nested
+ && !pParse->bReturning
&& pUpsert==0
){
regRowCount = ++pParse->nMem;