Index: third_party/sqlite/src/src/tokenize.c |
diff --git a/third_party/sqlite/src/src/tokenize.c b/third_party/sqlite/src/src/tokenize.c |
index 97c4b7b59a7297835eac4ea27418d2efa066ea3e..c624efdcc7c7947ba73304c2b8c12fb333960bce 100644 |
--- a/third_party/sqlite/src/src/tokenize.c |
+++ b/third_party/sqlite/src/src/tokenize.c |
@@ -14,8 +14,6 @@ |
** 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.163 2009/07/03 22:54:37 drh Exp $ |
*/ |
#include "sqliteInt.h" |
#include <stdlib.h> |
@@ -84,16 +82,7 @@ const unsigned char ebcdicToAscii[] = { |
** But the feature is undocumented. |
*/ |
#ifdef SQLITE_ASCII |
-const char sqlite3IsAsciiIdChar[] = { |
-/* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ |
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 2x */ |
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 3x */ |
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4x */ |
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 5x */ |
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6x */ |
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* 7x */ |
-}; |
-#define IdChar(C) (((c=C)&0x80)!=0 || (c>0x1f && sqlite3IsAsciiIdChar[c-0x20])) |
+#define IdChar(C) ((sqlite3CtypeMap[(unsigned char)C]&0x46)!=0) |
#endif |
#ifdef SQLITE_EBCDIC |
const char sqlite3IsEbcdicIdChar[] = { |
@@ -134,8 +123,9 @@ int sqlite3GetToken(const unsigned char *z, int *tokenType){ |
} |
case '-': { |
if( z[1]=='-' ){ |
+ /* IMP: R-15891-05542 -- syntax diagram for comments */ |
for(i=2; (c=z[i])!=0 && c!='\n'; i++){} |
- *tokenType = TK_SPACE; |
+ *tokenType = TK_SPACE; /* IMP: R-22934-25134 */ |
return i; |
} |
*tokenType = TK_MINUS; |
@@ -166,9 +156,10 @@ int sqlite3GetToken(const unsigned char *z, int *tokenType){ |
*tokenType = TK_SLASH; |
return 1; |
} |
+ /* IMP: R-15891-05542 -- syntax diagram for comments */ |
for(i=3, c=z[2]; (c!='*' || z[i]!='/') && (c=z[i])!=0; i++){} |
if( c ) i++; |
- *tokenType = TK_SPACE; |
+ *tokenType = TK_SPACE; /* IMP: R-22934-25134 */ |
return i; |
} |
case '%': { |
@@ -489,6 +480,7 @@ abort_parse: |
assert( pzErrMsg!=0 ); |
if( pParse->zErrMsg ){ |
*pzErrMsg = pParse->zErrMsg; |
+ sqlite3_log(pParse->rc, "%s", *pzErrMsg); |
pParse->zErrMsg = 0; |
nErr++; |
} |
@@ -504,7 +496,7 @@ abort_parse: |
} |
#endif |
#ifndef SQLITE_OMIT_VIRTUALTABLE |
- sqlite3DbFree(db, pParse->apVtabLock); |
+ sqlite3_free(pParse->apVtabLock); |
#endif |
if( !IN_DECLARE_VTAB ){ |
@@ -512,7 +504,7 @@ abort_parse: |
** structure built up in pParse->pNewTable. The calling code (see vtab.c) |
** will take responsibility for freeing the Table structure. |
*/ |
- sqlite3DeleteTable(pParse->pNewTable); |
+ sqlite3DeleteTable(db, pParse->pNewTable); |
} |
sqlite3DeleteTrigger(db, pParse->pNewTrigger); |
@@ -526,7 +518,7 @@ abort_parse: |
while( pParse->pZombieTab ){ |
Table *p = pParse->pZombieTab; |
pParse->pZombieTab = p->pNextZombie; |
- sqlite3DeleteTable(p); |
+ sqlite3DeleteTable(db, p); |
} |
if( nErr>0 && pParse->rc==SQLITE_OK ){ |
pParse->rc = SQLITE_ERROR; |