| 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;
|
|
|