diff --git a/manifest b/manifest index c7c379a3d2..245fc76249 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Modify\sthe\sshell\sso\sthat\swhen\sit\sis\sdoing\sa\s".dump"\sit\salways\suses\ssingle\nquotes\sand\snot\sdouble\squotes\sfor\squoting\sliteral\sstrings.\s\sThis\sis\sfor\nportability\sto\sother\sdatabases\sthat\sonly\ssupport\ssingle\squote\sstring\sliterals.\s(CVS\s574) -D 2002-05-21T13:02:24 +C Clean\sup\ssome\scompiler\swarnings.\s(CVS\s575) +D 2002-05-21T13:18:26 F Makefile.in 6291a33b87d2a395aafd7646ee1ed562c6f2c28c F Makefile.template 4e11752e0b5c7a043ca50af4296ec562857ba495 F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0 @@ -41,7 +41,7 @@ F src/select.c 1b623a7d826ec7c245bc542b665d61724da2a62d F src/shell.c 1d22fe870ee852cfb975fd000dbe3973713d0a15 F src/shell.tcl 27ecbd63dd88396ad16d81ab44f73e6c0ea9d20e F src/sqlite.h.in 0038faa6d642de06b91143ee65a131bd831d020b -F src/sqliteInt.h aa18969cf0426fa6bb42c2f2c5baf1179710376e +F src/sqliteInt.h 7ef986dab669bf334bd90aac0cb73f8ef3254ca4 F src/table.c eed2098c9b577aa17f8abe89313a9c4413f57d63 F src/tclsqlite.c 9300c9606a38bc0c75d6c0bc8a6197ab979353d1 F src/test1.c 09d95048b66ce6dcd2bae90f443589043d7d631e @@ -49,12 +49,12 @@ F src/test2.c 669cc22781c6461a273416ec1a7414d25c081730 F src/test3.c 4e52fff8b01f08bd202f7633feda5639b7ba2b5e F src/threadtest.c 81f0598e0f031c1bd506af337fdc1b7e8dff263f F src/tokenize.c f12f78c58b2a79ea4eee880efad63a328e103c62 -F src/trigger.c 143d3d2bd1318b88b095b4081dcbb10c842bc1b7 +F src/trigger.c d40853730bf392ec7c3b25fc65550af40b9094f6 F src/update.c 46c4b3e86c066cd8a0dcf0b75e4580bcf113aeb0 F src/util.c 707c30f8c13cddace7c08556ac450c0b786660b3 F src/vdbe.c 5fd717e6a42e98e4f244a2149267004f71f23679 F src/vdbe.h 126a651ba26f05de075dcc6da5466244a31af6b8 -F src/where.c 7e482af684197f5137380aa5c9ae0693f7fe7be4 +F src/where.c 293985b6cf8391c3dcef9efcac4654884370513a F test/all.test e4d3821eeba751829b419cd47814bd20af4286d1 F test/bigrow.test 8ab252dba108f12ad64e337b0f2ff31a807ac578 F test/btree.test bf326f546a666617367a7033fa2c07451bd4f8e1 @@ -134,7 +134,7 @@ F www/speed.tcl da8afcc1d3ccc5696cfb388a68982bc3d9f7f00f F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279 F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331 F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218 -P 592da1346872e1373bd13525d05d0f33c1056709 -R 5638c8cae4ddcb726be8720dd9e1a853 +P f795afd63f19ab61c2b3b96621cb6dda31ce0379 +R f30d941f16e46cee9269d14d467bbb83 U drh -Z ceb2821fff2339f48ed3c9973b432282 +Z deb3155eb826aa47da17dfd5a82d0d75 diff --git a/manifest.uuid b/manifest.uuid index e7ad4216cf..548059996a 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f795afd63f19ab61c2b3b96621cb6dda31ce0379 \ No newline at end of file +3399b01219b9e75b93587b5634d199d9e6fb6e42 \ No newline at end of file diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 92716c63f8..3a66ff7ce9 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -11,7 +11,7 @@ ************************************************************************* ** Internal interface definitions for SQLite. ** -** @(#) $Id: sqliteInt.h,v 1.111 2002/05/21 11:38:12 drh Exp $ +** @(#) $Id: sqliteInt.h,v 1.112 2002/05/21 13:18:26 drh Exp $ */ #include "sqlite.h" #include "hash.h" @@ -823,3 +823,4 @@ TriggerStep *sqliteTriggerSelectStep(Select*); TriggerStep *sqliteTriggerInsertStep(Token*, IdList*, ExprList*, Select*, int); TriggerStep *sqliteTriggerUpdateStep(Token*, ExprList*, Expr*, int); TriggerStep *sqliteTriggerDeleteStep(Token*, Expr*); +void sqliteDeleteTrigger(Trigger*); diff --git a/src/trigger.c b/src/trigger.c index d26ddb9eaa..3f6139d9a7 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -247,8 +247,7 @@ TriggerStep *sqliteTriggerDeleteStep(Token *pTableName, Expr *pWhere){ /* ** Recursively delete a Trigger structure */ -void sqliteDeleteTrigger(Trigger *pTrigger) -{ +void sqliteDeleteTrigger(Trigger *pTrigger){ TriggerStep *pTriggerStep; pTriggerStep = pTrigger->step_list; @@ -673,7 +672,7 @@ void sqliteViewTriggers( /* Build the updated row if required */ if( pChanges ){ - int ii, jj; + int ii; aXRef = sqliteMalloc( sizeof(int) * pTab->nCol ); if( aXRef==0 ) goto trigger_cleanup; diff --git a/src/where.c b/src/where.c index 31dc799ce2..00ddfe74fb 100644 --- a/src/where.c +++ b/src/where.c @@ -13,7 +13,7 @@ ** the WHERE clause of SQL statements. Also found here are subroutines ** to generate VDBE code to evaluate expressions. ** -** $Id: where.c,v 1.44 2002/05/19 23:43:14 danielk1977 Exp $ +** $Id: where.c,v 1.45 2002/05/21 13:18:26 drh Exp $ */ #include "sqliteInt.h" @@ -216,21 +216,24 @@ WhereInfo *sqliteWhereBegin( */ for(i=0; itrigStack && pParse->trigStack->newIdx >= 0 ){ - aExpr[i].prereqRight = - aExpr[i].prereqRight & ~(1 << pParse->trigStack->newIdx - base); - aExpr[i].prereqLeft = - aExpr[i].prereqLeft & ~(1 << pParse->trigStack->newIdx - base); - aExpr[i].prereqAll = - aExpr[i].prereqAll & ~(1 << pParse->trigStack->newIdx - base); - } - if( pParse->trigStack && pParse->trigStack->oldIdx >= 0 ){ - aExpr[i].prereqRight = - aExpr[i].prereqRight & ~(1 << pParse->trigStack->oldIdx - base); - aExpr[i].prereqLeft = - aExpr[i].prereqLeft & ~(1 << pParse->trigStack->oldIdx - base); - aExpr[i].prereqAll = - aExpr[i].prereqAll & ~(1 << pParse->trigStack->oldIdx - base); + + /* If we are executing a trigger body, remove all references to + ** new.* and old.* tables from the prerequisite masks. + */ + if( pParse->trigStack ){ + int x; + if( (x = pParse->trigStack->newIdx) >= 0 ){ + int mask = ~(1 << (x - base)); + aExpr[i].prereqRight &= mask; + aExpr[i].prereqLeft &= mask; + aExpr[i].prereqAll &= mask; + } + if( (x = pParse->trigStack->oldIdx) >= 0 ){ + int mask = ~(1 << (x - base)); + aExpr[i].prereqRight &= mask; + aExpr[i].prereqLeft &= mask; + aExpr[i].prereqAll &= mask; + } } } @@ -239,7 +242,7 @@ WhereInfo *sqliteWhereBegin( ** be the first nested loop and so on. aOrder[pTabList->nId-1] will ** be the innermost loop. ** - ** Someday will put in a good algorithm here to reorder the loops + ** Someday we will put in a good algorithm here to reorder the loops ** for an effiecient query. But for now, just use whatever order the ** tables appear in in the pTabList. */