aboutsummaryrefslogtreecommitdiff
path: root/src/insert.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2019-02-22 23:29:56 +0000
committerdrh <drh@noemail.net>2019-02-22 23:29:56 +0000
commit50ef6716d2ac75314e76546d074efd694969dba2 (patch)
treee7cb12d636e2087291c254ab391201391113f5aa /src/insert.c
parentbc0a55cf0b4c47fbb551583bfda3ed5a1d57d453 (diff)
downloadsqlite-50ef6716d2ac75314e76546d074efd694969dba2.tar.gz
sqlite-50ef6716d2ac75314e76546d074efd694969dba2.zip
Make all ephemeral tables built to hold the RHS of an IN operator be
index-btrees, never table-btrees, regardless of whether or not they are used as IN_INDEX_LOOP or IN_INDEX_MEMBERSHIP. That way, the same ephmerial table can be reused for both cases. FossilOrigin-Name: c2d50df8fd1a1fdae6226a3e77296ded09b53a74540caedd4868e686a93cbc10
Diffstat (limited to 'src/insert.c')
-rw-r--r--src/insert.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/insert.c b/src/insert.c
index 6f044db5a..a68db1a1d 100644
--- a/src/insert.c
+++ b/src/insert.c
@@ -1921,10 +1921,13 @@ void sqlite3CompleteInsertion(
pik_flags |= (update_flags & OPFLAG_SAVEPOSITION);
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
if( update_flags==0 ){
- sqlite3VdbeAddOp4(v, OP_InsertInt,
- iIdxCur+i, aRegIdx[i], 0, (char*)pTab, P4_TABLE
+ int r = sqlite3GetTempReg(pParse);
+ sqlite3VdbeAddOp2(v, OP_Integer, 0, r);
+ sqlite3VdbeAddOp4(v, OP_Insert,
+ iIdxCur+i, aRegIdx[i], r, (char*)pTab, P4_TABLE
);
sqlite3VdbeChangeP5(v, OPFLAG_ISNOOP);
+ sqlite3ReleaseTempReg(pParse, r);
}
#endif
}