-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
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
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
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
-f795afd63f19ab61c2b3b96621cb6dda31ce0379
\ No newline at end of file
+3399b01219b9e75b93587b5634d199d9e6fb6e42
\ No newline at end of file
*************************************************************************
** 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"
TriggerStep *sqliteTriggerInsertStep(Token*, IdList*, ExprList*, Select*, int);
TriggerStep *sqliteTriggerUpdateStep(Token*, ExprList*, Expr*, int);
TriggerStep *sqliteTriggerDeleteStep(Token*, Expr*);
+void sqliteDeleteTrigger(Trigger*);
/*
** Recursively delete a Trigger structure
*/
-void sqliteDeleteTrigger(Trigger *pTrigger)
-{
+void sqliteDeleteTrigger(Trigger *pTrigger){
TriggerStep *pTriggerStep;
pTriggerStep = pTrigger->step_list;
/* 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;
** 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"
*/
for(i=0; i<nExpr; i++){
exprAnalyze(base, &aExpr[i]);
- if( pParse->trigStack && 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;
+ }
}
}
** 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.
*/