1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Fix another problem with ALTER TABLE and vector UPDATE statements within triggers.

FossilOrigin-Name: a0df216f7c3f8963efba0b1ffee65d6a63309d846ffdcf2d2932cb4f1d4967b7
This commit is contained in:
dan
2021-09-29 18:33:26 +00:00
parent eda0001d89
commit ab632bc97e
4 changed files with 33 additions and 13 deletions

View File

@@ -1,5 +1,5 @@
C Add\snew\stest\sfile\srtreedoc3.test. C Fix\sanother\sproblem\swith\sALTER\sTABLE\sand\svector\sUPDATE\sstatements\swithin\striggers.
D 2021-09-29T16:38:02.070 D 2021-09-29T18:33:26.405
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -501,7 +501,7 @@ F src/date.c e0632f335952b32401482d099321bbf12716b29d6e72836b53ae49683ebae4bf
F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
F src/dbstat.c bea044cfe99eab6c527837e196a5335c128989bdb354cf1b4973b85ea561d66b F src/dbstat.c bea044cfe99eab6c527837e196a5335c128989bdb354cf1b4973b85ea561d66b
F src/delete.c 3ce6af6b64c8b476de51ccc32da0cb3142d42e65754e1d8118addf65b8bcba15 F src/delete.c 3ce6af6b64c8b476de51ccc32da0cb3142d42e65754e1d8118addf65b8bcba15
F src/expr.c 7628ab5359d7643bfd5b6027a7774419dd12bfbb2bc1f0d2a75bd12dd8c97304 F src/expr.c 82797e5d82422d34ede9a95ba459f40c317b2daadb21109a21abfd42f84e3ed8
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 1905af1821b88321e1bb9d6a69e704495b6844a9b6c29398d40117cc251e893c F src/fkey.c 1905af1821b88321e1bb9d6a69e704495b6844a9b6c29398d40117cc251e893c
F src/func.c 812ac5383067bed7150d8597e83c47b714d73db0e62af55811d1a145243e58e1 F src/func.c 812ac5383067bed7150d8597e83c47b714d73db0e62af55811d1a145243e58e1
@@ -665,7 +665,7 @@ F test/altermalloc3.test 4660ac6240a8c82ba3947b927612dcc7c05a8eec3fe3c9f38e047ca
F test/alterqf.test 67568ad152db8c1187b15633b801242cf960f1beafc51261a3d1725d910baeb2 F test/alterqf.test 67568ad152db8c1187b15633b801242cf960f1beafc51261a3d1725d910baeb2
F test/altertab.test a13e11cb1933575002367613b1094f0eeb31f493e4bd9ebeca73279fe00c85e7 F test/altertab.test a13e11cb1933575002367613b1094f0eeb31f493e4bd9ebeca73279fe00c85e7
F test/altertab2.test b0d62f323ca5dab42b0bc028c52e310ebdd13e655e8fac070fe622bad7852c2b F test/altertab2.test b0d62f323ca5dab42b0bc028c52e310ebdd13e655e8fac070fe622bad7852c2b
F test/altertab3.test 9a8aad735c48440c05787b4ab5ac821340a72c6febd1ff8bf74e065fb75882b2 F test/altertab3.test 78372063fae383ba41d1ad0ff1446e148f3c96815e648f830a55ba33668b4a69
F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
F test/analyze.test 547bb700f903107b38611b014ca645d6b5bb819f5210d7bf39c40802aafeb7d7 F test/analyze.test 547bb700f903107b38611b014ca645d6b5bb819f5210d7bf39c40802aafeb7d7
F test/analyze3.test 4440c4932247adb2b4e0c838f657c19dc7af4f56859255436dc4e855f39b9324 F test/analyze3.test 4440c4932247adb2b4e0c838f657c19dc7af4f56859255436dc4e855f39b9324
@@ -1928,7 +1928,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P bbfd083c26086fb103fec88faa59a01e689e0b7fce38c09d8846bb472a0e6760 P 54604869861cc5866d5de87785599ca56f75067f8cb7fe22e32912b3a037e37b
R 1037eaccd5510af0a78ced89d8bc5f27 R c102c10e7d90535120f47ae5b9d857b8
U dan U dan
Z 19b69f1d272ce42a44f4a2c19e639601 Z 5f5b68ce84257c8f070b0080ca6a87b5

View File

@@ -1 +1 @@
54604869861cc5866d5de87785599ca56f75067f8cb7fe22e32912b3a037e37b a0df216f7c3f8963efba0b1ffee65d6a63309d846ffdcf2d2932cb4f1d4967b7

View File

@@ -516,12 +516,16 @@ Expr *sqlite3ExprForVectorField(
pRet->pLeft = pVector; pRet->pLeft = pVector;
} }
}else{ }else{
if( pVector->op==TK_VECTOR ) pVector = pVector->x.pList->a[iField].pExpr; if( pVector->op==TK_VECTOR ){
pRet = sqlite3ExprDup(pParse->db, pVector, 0); Expr **ppVector = &pVector->x.pList->a[iField].pExpr;
if( pRet && IN_RENAME_OBJECT ){ pVector = *ppVector;
SWAP(Expr, *pRet, *pVector); if( IN_RENAME_OBJECT ){
sqlite3RenameTokenRemap(pParse, pRet, pVector); /* This must be a vector UPDATE inside a trigger */
*ppVector = 0;
return pVector;
}
} }
pRet = sqlite3ExprDup(pParse->db, pVector, 0);
} }
return pRet; return pRet;
} }

View File

@@ -672,6 +672,22 @@ do_execsql_test 27.4 {
finish_test finish_test
#-------------------------------------------------------------------------
reset_db
do_execsql_test 28.1 {
CREATE TABLE t1(a,b,c,d);
CREATE TRIGGER AFTER INSERT ON t1 BEGIN
UPDATE t1 SET (c,d)=(a,b);
END;
ALTER TABLE t1 RENAME TO t2;
}
do_execsql_test 28.2 {
SELECT sql FROM sqlite_schema WHERE type=trigger
} {{CREATE TRIGGER AFTER INSERT ON t2 BEGIN
UPDATE t1 SET (c,d)=(a,b);
END}}
finish_test finish_test