]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use sqlite3FkOldmask() in delete.c instead of assuming that foreign key constraints...
authordan <dan@noemail.net>
Thu, 24 Sep 2009 10:42:09 +0000 (10:42 +0000)
committerdan <dan@noemail.net>
Thu, 24 Sep 2009 10:42:09 +0000 (10:42 +0000)
FossilOrigin-Name: ce554a393401fc2fb9b5be049ddd383070102934

manifest
manifest.uuid
src/delete.c

index 82189dbe19d88f284cf994093f2bc322b72bbda7..c905bafc68dac56c1a24dc7db60e5ed5508a5703 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sunused\sparameter\sfrom\ssqlite3CodeRowTrigger().\sFix\sheader\scomments\sfor\sthis\sfunction\sand\sCodeRowTriggerDirect().
-D 2009-09-24T09:05:50
+C Use\ssqlite3FkOldmask()\sin\sdelete.c\sinstead\sof\sassuming\sthat\sforeign\skey\sconstraints\salways\srequire\sall\scolumns\sof\sthe\sdeleted\srow\sto\sbe\sstored\sin\sregisters.
+D 2009-09-24T10:42:10
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 4ca3f1dd6efa2075bcb27f4dc43eef749877740d
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -113,7 +113,7 @@ F src/build.c c6c8d4ce8c0a464bb25d0c3bfdb27834ad16d902
 F src/callback.c 10d237171472865f58fb07d515737238c9e06688
 F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
 F src/date.c 657ff12ca0f1195b531561afacbb38b772d16638
-F src/delete.c bf701123de11d3fcd9a1a5051a989a2571e936f7
+F src/delete.c 2a3d6fc0861b2f8dbd9feb7847b390267b281c60
 F src/expr.c c7f3f718bd5c392344ec8694a41c1824f30cf375
 F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
 F src/fkey.c a1c293cca23700bae7924396055c8d6a14f711c2
@@ -755,7 +755,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P f0c56fa90dc95aff6fe6764b5ab75a90199247b0
-R 3c7a8aab5d0340b30cd3467ee24fad54
+P 0443f7c9112ca91aa45c78a3d6287e5fcf5c3b73
+R e07c9a9cb837e7f36918e6bb0deed30f
 U dan
-Z 48453b478adafba355c75f89420399d3
+Z beebdfe4b57e96fc594592f7d6108da4
index 77542a6491815bd131a0d758478a087f5e2b57f2..6c6becd5287ac14271540ea63c09964b24137f60 100644 (file)
@@ -1 +1 @@
-0443f7c9112ca91aa45c78a3d6287e5fcf5c3b73
\ No newline at end of file
+ce554a393401fc2fb9b5be049ddd383070102934
\ No newline at end of file
index 438ba3307d901f00916730031f88b80a0a06e18a..d93ee36a023627872370fd1ebf4b3566bf0e87b3 100644 (file)
@@ -499,6 +499,7 @@ void sqlite3GenerateRowDelete(
     /* TODO: Could use temporary registers here. Also could attempt to
     ** avoid copying the contents of the rowid register.  */
     mask = sqlite3TriggerOldmask(pParse, pTrigger, 0, pTab, onconf);
+    mask |= sqlite3FkOldmask(pParse, pTab, 0);
     iOld = pParse->nMem+1;
     pParse->nMem += (1 + pTab->nCol);
 
@@ -506,7 +507,7 @@ void sqlite3GenerateRowDelete(
     ** used by any BEFORE and AFTER triggers that exist.  */
     sqlite3VdbeAddOp2(v, OP_Copy, iRowid, iOld);
     for(iCol=0; iCol<pTab->nCol; iCol++){
-      if( 1 || mask==0xffffffff || mask&(1<<iCol) ){
+      if( mask==0xffffffff || mask&(1<<iCol) ){
         int iTarget = iOld + iCol + 1;
         sqlite3VdbeAddOp3(v, OP_Column, iCur, iCol, iTarget);
         sqlite3ColumnDefault(v, pTab, iCol, iTarget);