Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | All identifiers to be quoted in square brackets, for compatibility with MS-Access. (CVS 370) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e17a858c9eeb70c62f54c88e6be5897e |
User & Date: | drh 2002-02-14 21:42:51.000 |
Context
2002-02-17
| ||
00:30 | Make the sqliteParseInfoReset() function locale to the select.c file. (CVS 371) (check-in: 2336b1eada user: drh tags: trunk) | |
2002-02-14
| ||
21:42 | All identifiers to be quoted in square brackets, for compatibility with MS-Access. (CVS 370) (check-in: e17a858c9e user: drh tags: trunk) | |
13:00 | Version 2.3.2 (CVS 446) (check-in: 4d06700007 user: drh tags: trunk) | |
Changes
Changes to VERSION.
|
| | | 1 | 2.3.3 |
Changes to src/expr.c.
︙ | ︙ | |||
8 9 10 11 12 13 14 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** ** $Id: expr.c,v 1.41 2002/02/14 21:42:51 drh Exp $ */ #include "sqliteInt.h" /* ** Recursively delete an expression tree. */ |
︙ | ︙ | |||
153 154 155 156 157 158 159 160 161 162 163 164 165 166 | ** ** 3. One of the special names "ROWID", "OID", or "_ROWID_". */ case TK_ID: { int cnt = 0; /* Number of matches */ int i; /* Loop counter */ char *z = sqliteStrNDup(pExpr->token.z, pExpr->token.n); if( z==0 ) return 1; for(i=0; i<pTabList->nId; i++){ int j; Table *pTab = pTabList->a[i].pTab; if( pTab==0 ) continue; for(j=0; j<pTab->nCol; j++){ if( sqliteStrICmp(pTab->aCol[j].zName, z)==0 ){ | > | 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | ** ** 3. One of the special names "ROWID", "OID", or "_ROWID_". */ case TK_ID: { int cnt = 0; /* Number of matches */ int i; /* Loop counter */ char *z = sqliteStrNDup(pExpr->token.z, pExpr->token.n); sqliteDequote(z); if( z==0 ) return 1; for(i=0; i<pTabList->nId; i++){ int j; Table *pTab = pTabList->a[i].pTab; if( pTab==0 ) continue; for(j=0; j<pTab->nCol; j++){ if( sqliteStrICmp(pTab->aCol[j].zName, z)==0 ){ |
︙ | ︙ |
Changes to src/tokenize.c.
︙ | ︙ | |||
11 12 13 14 15 16 17 | ************************************************************************* ** An tokenizer for SQL ** ** This file contains C code that splits an SQL input string up into ** individual tokens and sends those tokens one-by-one over to the ** parser for analysis. ** | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ************************************************************************* ** An tokenizer for SQL ** ** This file contains C code that splits an SQL input string up into ** individual tokens and sends those tokens one-by-one over to the ** parser for analysis. ** ** $Id: tokenize.c,v 1.35 2002/02/14 21:42:51 drh Exp $ */ #include "sqliteInt.h" #include "os.h" #include <ctype.h> #include <stdlib.h> /* |
︙ | ︙ | |||
328 329 330 331 332 333 334 335 336 337 338 339 340 341 | i += 2; while( z[i] && isdigit(z[i]) ){ i++; } *tokenType = TK_FLOAT; }else if( z[0]=='.' ){ *tokenType = TK_FLOAT; } return i; } default: { if( !isIdChar[*z] ){ break; } for(i=1; isIdChar[z[i]]; i++){} *tokenType = sqliteKeywordCode((char*)z, i); | > > > > > | 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 | i += 2; while( z[i] && isdigit(z[i]) ){ i++; } *tokenType = TK_FLOAT; }else if( z[0]=='.' ){ *tokenType = TK_FLOAT; } return i; } case '[': { for(i=1; z[i] && z[i-1]!=']'; i++){} *tokenType = TK_ID; return i; } default: { if( !isIdChar[*z] ){ break; } for(i=1; isIdChar[z[i]]; i++){} *tokenType = sqliteKeywordCode((char*)z, i); |
︙ | ︙ |
Changes to src/util.c.
︙ | ︙ | |||
10 11 12 13 14 15 16 | ** ************************************************************************* ** Utility functions used throughout sqlite. ** ** This file contains functions for allocating memory, comparing ** strings, and stuff like that. ** | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ** ************************************************************************* ** Utility functions used throughout sqlite. ** ** This file contains functions for allocating memory, comparing ** strings, and stuff like that. ** ** $Id: util.c,v 1.37 2002/02/14 21:42:51 drh Exp $ */ #include "sqliteInt.h" #include <stdarg.h> #include <ctype.h> /* ** If malloc() ever fails, this global variable gets set to 1. |
︙ | ︙ | |||
345 346 347 348 349 350 351 352 353 354 355 356 357 | } /* ** Convert an SQL-style quoted string into a normal string by removing ** the quote characters. The conversion is done in-place. If the ** input does not begin with a quote character, then this routine ** is a no-op. */ void sqliteDequote(char *z){ int quote; int i, j; if( z==0 ) return; quote = z[0]; | > > > > > > > > | > | 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 | } /* ** Convert an SQL-style quoted string into a normal string by removing ** the quote characters. The conversion is done in-place. If the ** input does not begin with a quote character, then this routine ** is a no-op. ** ** 2002-Feb-14: This routine is extended to remove MS-Access style ** brackets from around identifers. For example: "[a-b-c]" becomes ** "a-b-c". */ void sqliteDequote(char *z){ int quote; int i, j; if( z==0 ) return; quote = z[0]; switch( quote ){ case '\'': break; case '"': break; case '[': quote = ']'; break; default: return; } for(i=1, j=0; z[i]; i++){ if( z[i]==quote ){ if( z[i+1]==quote ){ z[j++] = quote; i++; }else{ z[j++] = 0; |
︙ | ︙ |
Changes to www/changes.tcl.
︙ | ︙ | |||
12 13 14 15 16 17 18 19 20 21 22 23 24 25 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2002 Feb 14 (2.3.2)} { <li>Bug fix: There was an incorrect assert() in pager.c. The real code was all correct (as far as is known) so everything should work OK if you compile with -DNDEBUG=1. But without disability the assertions, there could be a fault.</li> } | > > > > > | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2002 Feb * (2.3.3)} { <li>Allow identifiers to be quoted in square brackets, for compatibility with MS-Access.</li> } chng {2002 Feb 14 (2.3.2)} { <li>Bug fix: There was an incorrect assert() in pager.c. The real code was all correct (as far as is known) so everything should work OK if you compile with -DNDEBUG=1. But without disability the assertions, there could be a fault.</li> } |
︙ | ︙ |