Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Clean up some compiler warnings. (CVS 575) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
3399b01219b9e75b93587b5634d199d9 |
User & Date: | drh 2002-05-21 13:18:26.000 |
Context
2002-05-21
| ||
13:43 | Double-quoted strings resolve to column names if possible. Single-quoted strings continue to be interpreted as string literals. (CVS 576) (check-in: 55e7d65496 user: drh tags: trunk) | |
13:18 | Clean up some compiler warnings. (CVS 575) (check-in: 3399b01219 user: drh tags: trunk) | |
13:02 | Modify the shell so that when it is doing a ".dump" it always uses single quotes and not double quotes for quoting literal strings. This is for portability to other databases that only support single quote string literals. (CVS 574) (check-in: f795afd63f user: drh tags: trunk) | |
Changes
Changes to src/sqliteInt.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 | /* ** 2001 September 15 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** Internal interface definitions for SQLite. ** | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* ** 2001 September 15 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** Internal interface definitions for SQLite. ** ** @(#) $Id: sqliteInt.h,v 1.112 2002/05/21 13:18:26 drh Exp $ */ #include "sqlite.h" #include "hash.h" #include "vdbe.h" #include "parse.h" #include "btree.h" #include <stdio.h> |
︙ | ︙ | |||
819 820 821 822 823 824 825 | int sqliteTriggersExist(Parse* , Trigger* , int , int , int, ExprList*); int sqliteCodeRowTrigger(Parse*, int, ExprList*, int, Table *, int, int, int); void sqliteViewTriggers(Parse*, Table*, Expr*, int, ExprList*); TriggerStep *sqliteTriggerSelectStep(Select*); TriggerStep *sqliteTriggerInsertStep(Token*, IdList*, ExprList*, Select*, int); TriggerStep *sqliteTriggerUpdateStep(Token*, ExprList*, Expr*, int); TriggerStep *sqliteTriggerDeleteStep(Token*, Expr*); | > | 819 820 821 822 823 824 825 826 | int sqliteTriggersExist(Parse* , Trigger* , int , int , int, ExprList*); int sqliteCodeRowTrigger(Parse*, int, ExprList*, int, Table *, int, int, int); void sqliteViewTriggers(Parse*, Table*, Expr*, int, ExprList*); TriggerStep *sqliteTriggerSelectStep(Select*); TriggerStep *sqliteTriggerInsertStep(Token*, IdList*, ExprList*, Select*, int); TriggerStep *sqliteTriggerUpdateStep(Token*, ExprList*, Expr*, int); TriggerStep *sqliteTriggerDeleteStep(Token*, Expr*); void sqliteDeleteTrigger(Trigger*); |
Changes to src/trigger.c.
︙ | ︙ | |||
243 244 245 246 247 248 249 | return pTriggerStep; } /* ** Recursively delete a Trigger structure */ | | < | 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | return pTriggerStep; } /* ** Recursively delete a Trigger structure */ void sqliteDeleteTrigger(Trigger *pTrigger){ TriggerStep *pTriggerStep; pTriggerStep = pTrigger->step_list; while( pTriggerStep ){ TriggerStep * pTmp = pTriggerStep; pTriggerStep = pTriggerStep->pNext; |
︙ | ︙ | |||
669 670 671 672 673 674 675 | sqliteVdbeAddOp(v, OP_Rewind, oldIdx, endOfLoop); /* Loop thru the view snapshot, executing triggers for each row */ startOfLoop = sqliteVdbeCurrentAddr(v); /* Build the updated row if required */ if( pChanges ){ | | | 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 | sqliteVdbeAddOp(v, OP_Rewind, oldIdx, endOfLoop); /* Loop thru the view snapshot, executing triggers for each row */ startOfLoop = sqliteVdbeCurrentAddr(v); /* Build the updated row if required */ if( pChanges ){ int ii; aXRef = sqliteMalloc( sizeof(int) * pTab->nCol ); if( aXRef==0 ) goto trigger_cleanup; for(ii = 0; ii < pTab->nCol; ii++){ aXRef[ii] = -1; } |
︙ | ︙ |
Changes to src/where.c.
︙ | ︙ | |||
9 10 11 12 13 14 15 | ** May you share freely, never taking more than you give. ** ************************************************************************* ** This module contains C code that generates VDBE code used to process ** the WHERE clause of SQL statements. Also found here are subroutines ** to generate VDBE code to evaluate expressions. ** | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ** May you share freely, never taking more than you give. ** ************************************************************************* ** This module contains C code that generates VDBE code used to process ** the WHERE clause of SQL statements. Also found here are subroutines ** to generate VDBE code to evaluate expressions. ** ** $Id: where.c,v 1.45 2002/05/21 13:18:26 drh Exp $ */ #include "sqliteInt.h" /* ** The query generator uses an array of instances of this structure to ** help it analyze the subexpressions of the WHERE clause. Each WHERE ** clause subexpression is separated from the others by an AND operator. |
︙ | ︙ | |||
212 213 214 215 216 217 218 | memset(aExpr, 0, sizeof(aExpr)); nExpr = exprSplit(ARRAYSIZE(aExpr), aExpr, pWhere); /* Analyze all of the subexpressions. */ for(i=0; i<nExpr; i++){ exprAnalyze(base, &aExpr[i]); | > > > > | | | > | | | < | | > | < | < | < > | | 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 | memset(aExpr, 0, sizeof(aExpr)); nExpr = exprSplit(ARRAYSIZE(aExpr), aExpr, pWhere); /* Analyze all of the subexpressions. */ for(i=0; i<nExpr; i++){ exprAnalyze(base, &aExpr[i]); /* 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; } } } /* Figure out a good nesting order for the tables. aOrder[0] will ** be the index in pTabList of the outermost table. aOrder[1] will ** be the first nested loop and so on. aOrder[pTabList->nId-1] will ** be the innermost loop. ** ** 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. */ for(i=0; i<pTabList->nId; i++){ aOrder[i] = i; } |
︙ | ︙ |