summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2007-02-20 00:09:43 +0000
committerIlia Alshanetsky <iliaa@php.net>2007-02-20 00:09:43 +0000
commit03e5b080a323976288cceff0f2051a7cffeda379 (patch)
treef18e501c1d727b273c6fe983691747e726fc3b11
parentc6402df3a7b764ef5f8352ea2f317367ea383147 (diff)
downloadphp-git-03e5b080a323976288cceff0f2051a7cffeda379.tar.gz
Upgraded SQLite 3 library to version 3.3.13
-rw-r--r--NEWS2
-rw-r--r--ext/pdo_sqlite/sqlite/VERSION2
-rw-r--r--ext/pdo_sqlite/sqlite/src/btree.c6
-rw-r--r--ext/pdo_sqlite/sqlite/src/build.c12
-rw-r--r--ext/pdo_sqlite/sqlite/src/callback.c5
-rw-r--r--ext/pdo_sqlite/sqlite/src/delete.c11
-rw-r--r--ext/pdo_sqlite/sqlite/src/expr.c59
-rw-r--r--ext/pdo_sqlite/sqlite/src/func.c63
-rw-r--r--ext/pdo_sqlite/sqlite/src/opcodes.h12
-rw-r--r--ext/pdo_sqlite/sqlite/src/os_unix.c31
-rw-r--r--ext/pdo_sqlite/sqlite/src/parse.c2311
-rw-r--r--ext/pdo_sqlite/sqlite/src/parse.h26
-rw-r--r--ext/pdo_sqlite/sqlite/src/parse.y19
-rw-r--r--ext/pdo_sqlite/sqlite/src/select.c25
-rw-r--r--ext/pdo_sqlite/sqlite/src/sqliteInt.h10
-rw-r--r--ext/pdo_sqlite/sqlite/src/tclsqlite.c4
-rw-r--r--ext/pdo_sqlite/sqlite/src/test1.c44
-rw-r--r--ext/pdo_sqlite/sqlite/src/test3.c78
-rw-r--r--ext/pdo_sqlite/sqlite/src/update.c7
-rw-r--r--ext/pdo_sqlite/sqlite/src/vdbemem.c1
-rw-r--r--ext/pdo_sqlite/sqlite/src/where.c81
21 files changed, 1561 insertions, 1248 deletions
diff --git a/NEWS b/NEWS
index 75b672701f..71cbcb40d8 100644
--- a/NEWS
+++ b/NEWS
@@ -4,7 +4,7 @@ PHP NEWS
- Upgraded libraries bundled in the Windows distribution. (Edin)
. c-client (imap) to version 2006e
. libpq (PostgreSQL) to version 8.2.3
-- Upgraded SQLite 3 to version 3.3.12 (Ilia)
+- Upgraded SQLite 3 to version 3.3.13 (Ilia)
- Upgraded PCRE to version 7.0 (Nuno)
- Added --ri switch to CLI which allows to check extension information. (Marcus)
- Added tidyNode::getParent() method (John, Nuno)
diff --git a/ext/pdo_sqlite/sqlite/VERSION b/ext/pdo_sqlite/sqlite/VERSION
index 4d541eb209..6c165c2846 100644
--- a/ext/pdo_sqlite/sqlite/VERSION
+++ b/ext/pdo_sqlite/sqlite/VERSION
@@ -1 +1 @@
-3.3.12
+3.3.13
diff --git a/ext/pdo_sqlite/sqlite/src/btree.c b/ext/pdo_sqlite/sqlite/src/btree.c
index 595f19ffa1..d3a6694fe7 100644
--- a/ext/pdo_sqlite/sqlite/src/btree.c
+++ b/ext/pdo_sqlite/sqlite/src/btree.c
@@ -5890,6 +5890,7 @@ int sqlite3BtreePageDump(Btree *p, int pgno, int recursive){
** aResult[7] = Header size in bytes
** aResult[8] = Local payload size
** aResult[9] = Parent page number
+** aResult[10]= Page number of the first overflow page
**
** This routine is used for testing and debugging only.
*/
@@ -5938,6 +5939,11 @@ int sqlite3BtreeCursorInfo(BtCursor *pCur, int *aResult, int upCnt){
}else{
aResult[9] = pPage->pParent->pgno;
}
+ if( tmpCur.info.iOverflow ){
+ aResult[10] = get4byte(&tmpCur.info.pCell[tmpCur.info.iOverflow]);
+ }else{
+ aResult[10] = 0;
+ }
releaseTempCursor(&tmpCur);
return SQLITE_OK;
}
diff --git a/ext/pdo_sqlite/sqlite/src/build.c b/ext/pdo_sqlite/sqlite/src/build.c
index f600395b48..b2da7fb548 100644
--- a/ext/pdo_sqlite/sqlite/src/build.c
+++ b/ext/pdo_sqlite/sqlite/src/build.c
@@ -1222,6 +1222,10 @@ void sqlite3AddCollateType(Parse *pParse, const char *zType, int nType){
** If no versions of the requested collations sequence are available, or
** another error occurs, NULL is returned and an error message written into
** pParse.
+**
+** This routine is a wrapper around sqlite3FindCollSeq(). This routine
+** invokes the collation factory if the named collation cannot be found
+** and generates an error message.
*/
CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char *zName, int nName){
sqlite3 *db = pParse->db;
@@ -2457,7 +2461,7 @@ void sqlite3CreateIndex(
const char *zColName = pListItem->zName;
Column *pTabCol;
int requestedSortOrder;
- char *zColl; /* Collation sequence */
+ char *zColl; /* Collation sequence name */
for(j=0, pTabCol=pTab->aCol; j<pTab->nCol; j++, pTabCol++){
if( sqlite3StrICmp(zColName, pTabCol->zName)==0 ) break;
@@ -2467,6 +2471,12 @@ void sqlite3CreateIndex(
pTab->zName, zColName);
goto exit_create_index;
}
+ /* TODO: Add a test to make sure that the same column is not named
+ ** more than once within the same index. Only the first instance of
+ ** the column will ever be used by the optimizer. Note that using the
+ ** same column more than once cannot be an error because that would
+ ** break backwards compatibility - it needs to be a warning.
+ */
pIndex->aiColumn[i] = j;
if( pListItem->pExpr ){
assert( pListItem->pExpr->pColl );
diff --git a/ext/pdo_sqlite/sqlite/src/callback.c b/ext/pdo_sqlite/sqlite/src/callback.c
index ac748361bb..788b622109 100644
--- a/ext/pdo_sqlite/sqlite/src/callback.c
+++ b/ext/pdo_sqlite/sqlite/src/callback.c
@@ -195,6 +195,11 @@ static CollSeq *findCollSeqEntry(
**
** If the entry specified is not found and 'create' is true, then create a
** new entry. Otherwise return NULL.
+**
+** A separate function sqlite3LocateCollSeq() is a wrapper around
+** this routine. sqlite3LocateCollSeq() invokes the collation factory
+** if necessary and generates an error message if the collating sequence
+** cannot be found.
*/
CollSeq *sqlite3FindCollSeq(
sqlite3 *db,
diff --git a/ext/pdo_sqlite/sqlite/src/delete.c b/ext/pdo_sqlite/sqlite/src/delete.c
index ee1bc930b2..ea9e99b877 100644
--- a/ext/pdo_sqlite/sqlite/src/delete.c
+++ b/ext/pdo_sqlite/sqlite/src/delete.c
@@ -106,7 +106,8 @@ void sqlite3DeleteFrom(
AuthContext sContext; /* Authorization context */
int oldIdx = -1; /* Cursor for the OLD table of AFTER triggers */
NameContext sNC; /* Name context to resolve expressions in */
- int iDb;
+ int iDb; /* Database number */
+ int memCnt = 0; /* Memory cell used for change counting */
#ifndef SQLITE_OMIT_TRIGGER
int isView; /* True if attempting to delete from a view */
@@ -204,7 +205,8 @@ void sqlite3DeleteFrom(
** we are counting rows.
*/
if( db->flags & SQLITE_CountRows ){
- sqlite3VdbeAddOp(v, OP_Integer, 0, 0);
+ memCnt = pParse->nMem++;
+ sqlite3VdbeAddOp(v, OP_MemInt, 0, memCnt);
}
/* Special case: A DELETE without a WHERE clause deletes everything.
@@ -221,7 +223,7 @@ void sqlite3DeleteFrom(
sqlite3OpenTable(pParse, iCur, iDb, pTab, OP_OpenRead);
}
sqlite3VdbeAddOp(v, OP_Rewind, iCur, sqlite3VdbeCurrentAddr(v)+2);
- addr2 = sqlite3VdbeAddOp(v, OP_AddImm, 1, 0);
+ addr2 = sqlite3VdbeAddOp(v, OP_MemIncr, 1, memCnt);
sqlite3VdbeAddOp(v, OP_Next, iCur, addr2);
sqlite3VdbeResolveLabel(v, endOfLoop);
sqlite3VdbeAddOp(v, OP_Close, iCur, 0);
@@ -251,7 +253,7 @@ void sqlite3DeleteFrom(
sqlite3VdbeAddOp(v, IsVirtual(pTab) ? OP_VRowid : OP_Rowid, iCur, 0);
sqlite3VdbeAddOp(v, OP_FifoWrite, 0, 0);
if( db->flags & SQLITE_CountRows ){
- sqlite3VdbeAddOp(v, OP_AddImm, 1, 0);
+ sqlite3VdbeAddOp(v, OP_MemIncr, 1, memCnt);
}
/* End the database scan loop.
@@ -354,6 +356,7 @@ void sqlite3DeleteFrom(
** invoke the callback function.
*/
if( db->flags & SQLITE_CountRows && pParse->nested==0 && !pParse->trigStack ){
+ sqlite3VdbeAddOp(v, OP_MemLoad, memCnt, 0);
sqlite3VdbeAddOp(v, OP_Callback, 1, 0);
sqlite3VdbeSetNumCols(v, 1);
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows deleted", P3_STATIC);
diff --git a/ext/pdo_sqlite/sqlite/src/expr.c b/ext/pdo_sqlite/sqlite/src/expr.c
index 22c267cf95..6d21918cd0 100644
--- a/ext/pdo_sqlite/sqlite/src/expr.c
+++ b/ext/pdo_sqlite/sqlite/src/expr.c
@@ -50,6 +50,24 @@ char sqlite3ExprAffinity(Expr *pExpr){
}
/*
+** Set the collating sequence for expression pExpr to be the collating
+** sequence named by pToken. Return a pointer to the revised expression.
+** The collating sequence is marked as "explicit" using the EP_ExpCollate
+** flag. An explicit collating sequence will override implicit
+** collating sequences.
+*/
+Expr *sqlite3ExprSetColl(Parse *pParse, Expr *pExpr, Token *pName){
+ CollSeq *pColl;
+ if( pExpr==0 ) return 0;
+ pColl = sqlite3LocateCollSeq(pParse, (char*)pName->z, pName->n);
+ if( pColl ){
+ pExpr->pColl = pColl;
+ pExpr->flags |= EP_ExpCollate;
+ }
+ return pExpr;
+}
+
+/*
** Return the default collation sequence for the expression pExpr. If
** there is no default collation type, return 0.
*/
@@ -158,9 +176,20 @@ static int binaryCompareP1(Expr *pExpr1, Expr *pExpr2, int jumpIfNull){
** type.
*/
static CollSeq* binaryCompareCollSeq(Parse *pParse, Expr *pLeft, Expr *pRight){
- CollSeq *pColl = sqlite3ExprCollSeq(pParse, pLeft);
- if( !pColl ){
- pColl = sqlite3ExprCollSeq(pParse, pRight);
+ CollSeq *pColl;
+ assert( pLeft );
+ assert( pRight );
+ if( pLeft->flags & EP_ExpCollate ){
+ assert( pLeft->pColl );
+ pColl = pLeft->pColl;
+ }else if( pRight->flags & EP_ExpCollate ){
+ assert( pRight->pColl );
+ pColl = pRight->pColl;
+ }else{
+ pColl = sqlite3ExprCollSeq(pParse, pLeft);
+ if( !pColl ){
+ pColl = sqlite3ExprCollSeq(pParse, pRight);
+ }
}
return pColl;
}
@@ -205,8 +234,18 @@ Expr *sqlite3Expr(int op, Expr *pLeft, Expr *pRight, const Token *pToken){
if( pToken ){
assert( pToken->dyn==0 );
pNew->span = pNew->token = *pToken;
- }else if( pLeft && pRight ){
- sqlite3ExprSpan(pNew, &pLeft->span, &pRight->span);
+ }else if( pLeft ){
+ if( pRight ){
+ sqlite3ExprSpan(pNew, &pLeft->span, &pRight->span);
+ if( pRight->flags && EP_ExpCollate ){
+ pNew->flags |= EP_ExpCollate;
+ pNew->pColl = pRight->pColl;
+ }
+ }
+ if( pLeft->flags && EP_ExpCollate ){
+ pNew->flags |= EP_ExpCollate;
+ pNew->pColl = pLeft->pColl;
+ }
}
return pNew;
}
@@ -890,7 +929,9 @@ static int lookupName(
/* Substitute the rowid (column -1) for the INTEGER PRIMARY KEY */
pExpr->iColumn = j==pTab->iPKey ? -1 : j;
pExpr->affinity = pTab->aCol[j].affinity;
- pExpr->pColl = sqlite3FindCollSeq(db, ENC(db), zColl,-1, 0);
+ if( (pExpr->flags & EP_ExpCollate)==0 ){
+ pExpr->pColl = sqlite3FindCollSeq(db, ENC(db), zColl,-1, 0);
+ }
if( i<pSrcList->nSrc-1 ){
if( pItem[1].jointype & JT_NATURAL ){
/* If this match occurred in the left table of a natural join,
@@ -946,7 +987,9 @@ static int lookupName(
cnt++;
pExpr->iColumn = iCol==pTab->iPKey ? -1 : iCol;
pExpr->affinity = pTab->aCol[iCol].affinity;
- pExpr->pColl = sqlite3FindCollSeq(db, ENC(db), zColl,-1, 0);
+ if( (pExpr->flags & EP_ExpCollate)==0 ){
+ pExpr->pColl = sqlite3FindCollSeq(db, ENC(db), zColl,-1, 0);
+ }
pExpr->pTab = pTab;
break;
}
@@ -1046,7 +1089,7 @@ static int lookupName(
n = sizeof(Bitmask)*8-1;
}
assert( pMatch->iCursor==pExpr->iTable );
- pMatch->colUsed |= 1<<n;
+ pMatch->colUsed |= ((Bitmask)1)<<n;
}
lookupname_end:
diff --git a/ext/pdo_sqlite/sqlite/src/func.c b/ext/pdo_sqlite/sqlite/src/func.c
index c3444baa0e..455bd2beb0 100644
--- a/ext/pdo_sqlite/sqlite/src/func.c
+++ b/ext/pdo_sqlite/sqlite/src/func.c
@@ -272,6 +272,25 @@ static void randomFunc(
}
/*
+** Implementation of randomblob(N). Return a random blob
+** that is N bytes long.
+*/
+static void randomBlob(
+ sqlite3_context *context,
+ int argc,
+ sqlite3_value **argv
+){
+ int n;
+ unsigned char *p;
+ assert( argc==1 );
+ n = sqlite3_value_int(argv[0]);
+ if( n<1 ) n = 1;
+ p = sqlite3_malloc(n);
+ sqlite3Randomness(n, p);
+ sqlite3_result_blob(context, (char*)p, n, sqlite3_free);
+}
+
+/*
** Implementation of the last_insert_rowid() SQL function. The return
** value is the same as the sqlite3_last_insert_rowid() API function.
*/
@@ -547,6 +566,12 @@ static void versionFunc(
sqlite3_result_text(context, sqlite3_version, -1, SQLITE_STATIC);
}
+/* Array for converting from half-bytes (nybbles) into ASCII hex
+** digits. */
+static const char hexdigits[] = {
+ '0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
+};
/*
** EXPERIMENTAL - This is not an official function. The interface may
@@ -572,10 +597,6 @@ static void quoteFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
break;
}
case SQLITE_BLOB: {
- static const char hexdigits[] = {
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
- };
char *zText = 0;
int nBlob = sqlite3_value_bytes(argv[0]);
char const *zBlob = sqlite3_value_blob(argv[0]);
@@ -621,11 +642,41 @@ static void quoteFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
}
}
+/*
+** The hex() function. Interpret the argument as a blob. Return
+** a hexadecimal rendering as text.
+*/
+static void hexFunc(
+ sqlite3_context *context,
+ int argc,
+ sqlite3_value **argv
+){
+ int i, n;
+ const unsigned char *pBlob;
+ char *zHex, *z;
+ assert( argc==1 );
+ pBlob = sqlite3_value_blob(argv[0]);
+ n = sqlite3_value_bytes(argv[0]);
+ z = zHex = sqlite3_malloc(n*2 + 1);
+ if( zHex==0 ) return;
+ for(i=0; i<n; i++, pBlob++){
+ unsigned char c = *pBlob;
+ *(z++) = hexdigits[(c>>4)&0xf];
+ *(z++) = hexdigits[c&0xf];
+ }
+ *z = 0;
+ sqlite3_result_text(context, zHex, n*2, sqlite3_free);
+}
+
#ifdef SQLITE_SOUNDEX
/*
** Compute the soundex encoding of a word.
*/
-static void soundexFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
+static void soundexFunc(
+ sqlite3_context *context,
+ int argc,
+ sqlite3_value **argv
+){
char zResult[8];
const u8 *zIn;
int i, j;
@@ -1021,8 +1072,10 @@ void sqlite3RegisterBuiltinFunctions(sqlite3 *db){
{ "coalesce", -1, 0, SQLITE_UTF8, 0, ifnullFunc },
{ "coalesce", 0, 0, SQLITE_UTF8, 0, 0 },
{ "coalesce", 1, 0, SQLITE_UTF8, 0, 0 },
+ { "hex", 1, 0, SQLITE_UTF8, 0, hexFunc },
{ "ifnull", 2, 0, SQLITE_UTF8, 1, ifnullFunc },
{ "random", -1, 0, SQLITE_UTF8, 0, randomFunc },
+ { "randomblob", 1, 0, SQLITE_UTF8, 0, randomBlob },
{ "nullif", 2, 0, SQLITE_UTF8, 1, nullifFunc },
{ "sqlite_version", 0, 0, SQLITE_UTF8, 0, versionFunc},
{ "quote", 1, 0, SQLITE_UTF8, 0, quoteFunc },
diff --git a/ext/pdo_sqlite/sqlite/src/opcodes.h b/ext/pdo_sqlite/sqlite/src/opcodes.h
index 80598e2a6f..2e18d83425 100644
--- a/ext/pdo_sqlite/sqlite/src/opcodes.h
+++ b/ext/pdo_sqlite/sqlite/src/opcodes.h
@@ -28,9 +28,9 @@
#define OP_NotNull 67 /* same as TK_NOTNULL */
#define OP_Rowid 23
#define OP_Real 126 /* same as TK_FLOAT */
-#define OP_String8 88 /* same as TK_STRING */
+#define OP_String8 89 /* same as TK_STRING */
#define OP_And 62 /* same as TK_AND */
-#define OP_BitNot 87 /* same as TK_BITNOT */
+#define OP_BitNot 88 /* same as TK_BITNOT */
#define OP_VFilter 24
#define OP_NullRow 25
#define OP_Noop 26
@@ -84,8 +84,8 @@
#define OP_Halt 65
#define OP_Expire 74
#define OP_Or 61 /* same as TK_OR */
-#define OP_DropIndex 86
-#define OP_IdxInsert 89
+#define OP_DropIndex 85
+#define OP_IdxInsert 87
#define OP_ShiftLeft 77 /* same as TK_LSHIFT */
#define OP_FifoRead 90
#define OP_Column 91
@@ -117,7 +117,7 @@
#define OP_VOpen 114
#define OP_AggFinal 115
#define OP_OpenWrite 116
-#define OP_Negative 85 /* same as TK_UMINUS */
+#define OP_Negative 86 /* same as TK_UMINUS */
#define OP_Le 71 /* same as TK_LE */
#define OP_VNext 117
#define OP_AbsValue 118
@@ -154,7 +154,7 @@
#define NOPUSH_MASK_2 0xedaf
#define NOPUSH_MASK_3 0xf1eb
#define NOPUSH_MASK_4 0xfffe
-#define NOPUSH_MASK_5 0x62ef
+#define NOPUSH_MASK_5 0x61ef
#define NOPUSH_MASK_6 0xbfcf
#define NOPUSH_MASK_7 0x23bf
#define NOPUSH_MASK_8 0xf87b
diff --git a/ext/pdo_sqlite/sqlite/src/os_unix.c b/ext/pdo_sqlite/sqlite/src/os_unix.c
index d7f05ac14b..8ac272e5e2 100644
--- a/ext/pdo_sqlite/sqlite/src/os_unix.c
+++ b/ext/pdo_sqlite/sqlite/src/os_unix.c
@@ -565,7 +565,7 @@ static sqlite3LockingStyle sqlite3TestLockingStyle(const char *filePath,
lockInfo.l_whence = SEEK_SET;
lockInfo.l_type = F_RDLCK;
- if (fcntl(fd, F_GETLK, (int) &lockInfo) != -1) {
+ if (fcntl(fd, F_GETLK, &lockInfo) != -1) {
return posixLockingStyle;
}
@@ -1000,10 +1000,14 @@ int sqlite3UnixIsDirWritable(char *zBuf){
*/
static int seekAndRead(unixFile *id, void *pBuf, int cnt){
int got;
+ i64 newOffset;
#ifdef USE_PREAD
got = pread(id->h, pBuf, cnt, id->offset);
#else
- lseek(id->h, id->offset, SEEK_SET);
+ newOffset = lseek(id->h, id->offset, SEEK_SET);
+ if( newOffset!=id->offset ){
+ return -1;
+ }
got = read(id->h, pBuf, cnt);
#endif
if( got>0 ){
@@ -1043,10 +1047,14 @@ static int unixRead(OsFile *id, void *pBuf, int amt){
*/
static int seekAndWrite(unixFile *id, const void *pBuf, int cnt){
int got;
+ i64 newOffset;
#ifdef USE_PREAD
got = pwrite(id->h, pBuf, cnt, id->offset);
#else
- lseek(id->h, id->offset, SEEK_SET);
+ newOffset = lseek(id->h, id->offset, SEEK_SET);
+ if( newOffset!=id->offset ){
+ return -1;
+ }
got = write(id->h, pBuf, cnt);
#endif
if( got>0 ){
@@ -1160,13 +1168,26 @@ static int full_fsync(int fd, int fullSync, int dataOnly){
#if HAVE_FULLFSYNC
if( fullSync ){
rc = fcntl(fd, F_FULLFSYNC, 0);
- }else
-#endif /* HAVE_FULLFSYNC */
+ }else{
+ rc = 1;
+ }
+ /* If the FULLFSYNC failed, fall back to attempting an fsync().
+ * It shouldn't be possible for fullfsync to fail on the local
+ * file system (on OSX), so failure indicates that FULLFSYNC
+ * isn't supported for this file system. So, attempt an fsync
+ * and (for now) ignore the overhead of a superfluous fcntl call.
+ * It'd be better to detect fullfsync support once and avoid
+ * the fcntl call every time sync is called.
+ */
+ if( rc ) rc = fsync(fd);
+
+#else
if( dataOnly ){
rc = fdatasync(fd);
}else{
rc = fsync(fd);
}
+#endif /* HAVE_FULLFSYNC */
#endif /* defined(SQLITE_NO_SYNC) */
return rc;
diff --git a/ext/pdo_sqlite/sqlite/src/parse.c b/ext/pdo_sqlite/sqlite/src/parse.c
index a861619ce1..524803948d 100644
--- a/ext/pdo_sqlite/sqlite/src/parse.c
+++ b/ext/pdo_sqlite/sqlite/src/parse.c
@@ -4,7 +4,7 @@
/* First off, code is include which follows the "include" declaration
** in the input file. */
#include <stdio.h>
-#line 56 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 56 "parse.y"
#include "sqliteInt.h"
#include "parse.h"
@@ -43,7 +43,7 @@ struct TrigEvent { int a; IdList * b; };
*/
struct AttachKey { int type; Token key; };
-#line 48 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 48 "parse.c"
/* Next is all token values, in a form suitable for use by makeheaders.
** This section will be null unless lemon is run with the -m switch.
*/
@@ -120,7 +120,7 @@ typedef union {
#define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse
#define sqlite3ParserARG_STORE yypParser->pParse = pParse
#define YYNSTATE 587
-#define YYNRULE 311
+#define YYNRULE 312
#define YYERRORSYMBOL 139
#define YYERRSYMDT yy497
#define YYFALLBACK 1
@@ -176,411 +176,415 @@ typedef union {
** yy_default[] Default action for each state.
*/
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 290, 68, 300, 70, 151, 169, 570, 420, 62, 62,
- /* 10 */ 62, 62, 205, 64, 64, 64, 64, 65, 65, 66,
- /* 20 */ 66, 66, 67, 477, 569, 568, 433, 439, 69, 64,
- /* 30 */ 64, 64, 64, 65, 65, 66, 66, 66, 67, 65,
- /* 40 */ 65, 66, 66, 66, 67, 61, 59, 296, 443, 444,
- /* 50 */ 440, 440, 63, 63, 62, 62, 62, 62, 582, 64,
- /* 60 */ 64, 64, 64, 65, 65, 66, 66, 66, 67, 290,
- /* 70 */ 570, 387, 420, 149, 2, 80, 161, 115, 240, 341,
- /* 80 */ 245, 342, 173, 249, 298, 1, 566, 207, 569, 393,
- /* 90 */ 250, 522, 899, 121, 586, 433, 439, 2, 583, 58,
- /* 100 */ 577, 21, 64, 64, 64, 64, 65, 65, 66, 66,
- /* 110 */ 66, 67, 290, 473, 61, 59, 296, 443, 444, 440,
- /* 120 */ 440, 63, 63, 62, 62, 62, 62, 393, 64, 64,
- /* 130 */ 64, 64, 65, 65, 66, 66, 66, 67, 433, 439,
- /* 140 */ 92, 178, 67, 473, 343, 346, 347, 388, 385, 56,
- /* 150 */ 379, 207, 236, 407, 394, 395, 348, 61, 59, 296,
- /* 160 */ 443, 444, 440, 440, 63, 63, 62, 62, 62, 62,
- /* 170 */ 171, 64, 64, 64, 64, 65, 65, 66, 66, 66,
- /* 180 */ 67, 290, 479, 428, 208, 522, 110, 490, 452, 432,
- /* 190 */ 406, 223, 394, 395, 532, 21, 408, 318, 517, 68,
- /* 200 */ 453, 70, 151, 567, 412, 150, 487, 433, 439, 146,
- /* 210 */ 147, 584, 890, 454, 890, 494, 172, 157, 488, 411,
- /* 220 */ 28, 337, 415, 261, 290, 495, 61, 59, 296, 443,
- /* 230 */ 444, 440, 440, 63, 63, 62, 62, 62, 62, 412,
- /* 240 */ 64, 64, 64, 64, 65, 65, 66, 66, 66, 67,
- /* 250 */ 433, 439, 581, 314, 389, 417, 417, 417, 549, 204,
- /* 260 */ 68, 460, 70, 151, 262, 261, 197, 290, 339, 61,
- /* 270 */ 59, 296, 443, 444, 440, 440, 63, 63, 62, 62,
- /* 280 */ 62, 62, 318, 64, 64, 64, 64, 65, 65, 66,
- /* 290 */ 66, 66, 67, 433, 439, 410, 548, 393, 284, 409,
- /* 300 */ 412, 430, 521, 165, 411, 41, 381, 473, 432, 295,
- /* 310 */ 423, 424, 61, 59, 296, 443, 444, 440, 440, 63,
- /* 320 */ 63, 62, 62, 62, 62, 376, 64, 64, 64, 64,
- /* 330 */ 65, 65, 66, 66, 66, 67, 477, 488, 300, 290,
- /* 340 */ 76, 415, 205, 483, 332, 234, 238, 370, 267, 266,
- /* 350 */ 489, 68, 384, 70, 151, 369, 393, 383, 205, 434,
- /* 360 */ 435, 367, 394, 395, 178, 433, 439, 343, 346, 347,
- /* 370 */ 529, 504, 572, 207, 417, 417, 417, 528, 169, 348,
- /* 380 */ 420, 437, 438, 79, 61, 59, 296, 443, 444, 440,
- /* 390 */ 440, 63, 63, 62, 62, 62, 62, 358, 64, 64,
- /* 400 */ 64, 64, 65, 65, 66, 66, 66, 67, 290, 436,
- /* 410 */ 428, 208, 486, 115, 240, 341, 245, 342, 173, 249,
- /* 420 */ 318, 394, 395, 530, 318, 393, 250, 217, 318, 509,
- /* 430 */ 405, 520, 152, 224, 433, 439, 321, 423, 424, 517,
- /* 440 */ 492, 493, 411, 35, 231, 420, 411, 35, 469, 510,
- /* 450 */ 411, 35, 477, 61, 59, 296, 443, 444, 440, 440,
- /* 460 */ 63, 63, 62, 62, 62, 62, 412, 64, 64, 64,
- /* 470 */ 64, 65, 65, 66, 66, 66, 67, 290, 522, 178,
- /* 480 */ 351, 503, 343, 346, 347, 299, 318, 404, 21, 297,
- /* 490 */ 394, 395, 318, 334, 348, 482, 318, 457, 318, 393,
- /* 500 */ 207, 457, 302, 433, 439, 457, 22, 174, 411, 36,
- /* 510 */ 420, 148, 531, 308, 411, 35, 523, 470, 411, 41,
- /* 520 */ 411, 49, 61, 59, 296, 443, 444, 440, 440, 63,
- /* 530 */ 63, 62, 62, 62, 62, 318, 64, 64, 64, 64,
- /* 540 */ 65, 65, 66, 66, 66, 67, 290, 447, 338, 452,
- /* 550 */ 253, 66, 66, 66, 67, 428, 448, 411, 49, 232,
- /* 560 */ 230, 453, 10, 292, 394, 395, 393, 309, 250, 456,
- /* 570 */ 411, 3, 433, 439, 454, 420, 328, 20, 543, 141,
- /* 580 */ 584, 889, 324, 889, 446, 446, 393, 430, 322, 165,
- /* 590 */ 393, 61, 59, 296, 443, 444, 440, 440, 63, 63,
- /* 600 */ 62, 62, 62, 62, 310, 64, 64, 64, 64, 65,
- /* 610 */ 65, 66, 66, 66, 67, 290, 371, 318, 271, 541,
- /* 620 */ 91, 581, 293, 540, 466, 318, 206, 318, 587, 388,
- /* 630 */ 385, 394, 395, 55, 324, 359, 446, 446, 329, 411,
- /* 640 */ 29, 433, 439, 324, 481, 446, 446, 411, 24, 411,
- /* 650 */ 33, 394, 395, 515, 545, 394, 395, 274, 290, 272,
- /* 660 */ 61, 59, 296, 443, 444, 440, 440, 63, 63, 62,
- /* 670 */ 62, 62, 62, 318, 64, 64, 64, 64, 65, 65,
- /* 680 */ 66, 66, 66, 67, 433, 439, 546, 493, 303, 396,
- /* 690 */ 397, 398, 580, 289, 823, 411, 54, 360, 515, 515,
- /* 700 */ 189, 290, 363, 61, 59, 296, 443, 444, 440, 440,
- /* 710 */ 63, 63, 62, 62, 62, 62, 144, 64, 64, 64,
- /* 720 */ 64, 65, 65, 66, 66, 66, 67, 433, 439, 539,
- /* 730 */ 357, 539, 248, 216, 412, 468, 168, 157, 273, 515,
- /* 740 */ 515, 515, 312, 120, 290, 198, 61, 71, 296, 443,
- /* 750 */ 444, 440, 440, 63, 63, 62, 62, 62, 62, 368,
- /* 760 */ 64, 64, 64, 64, 65, 65, 66, 66, 66, 67,
- /* 770 */ 433, 439, 426, 426, 304, 305, 307, 248, 247, 412,
- /* 780 */ 324, 364, 446, 446, 175, 176, 177, 290, 261, 261,
- /* 790 */ 59, 296, 443, 444, 440, 440, 63, 63, 62, 62,
- /* 800 */ 62, 62, 155, 64, 64, 64, 64, 65, 65, 66,
- /* 810 */ 66, 66, 67, 433, 439, 462, 156, 125, 248, 248,
- /* 820 */ 248, 420, 463, 367, 261, 255, 335, 193, 468, 556,
- /* 830 */ 558, 75, 162, 77, 296, 443, 444, 440, 440, 63,
- /* 840 */ 63, 62, 62, 62, 62, 318, 64, 64, 64, 64,
- /* 850 */ 65, 65, 66, 66, 66, 67, 72, 325, 318, 4,
- /* 860 */ 318, 412, 318, 294, 259, 559, 257, 411, 25, 318,
- /* 870 */ 219, 320, 72, 325, 318, 4, 153, 235, 180, 294,
- /* 880 */ 411, 52, 411, 97, 411, 94, 420, 320, 327, 218,
- /* 890 */ 410, 411, 99, 501, 409, 318, 411, 100, 319, 432,
- /* 900 */ 318, 261, 318, 174, 327, 392, 191, 183, 318, 116,
- /* 910 */ 412, 318, 412, 416, 261, 432, 318, 411, 111, 74,
- /* 920 */ 73, 429, 411, 112, 411, 17, 621, 72, 316, 317,
- /* 930 */ 411, 98, 415, 411, 34, 74, 73, 480, 411, 95,
- /* 940 */ 318, 412, 560, 72, 316, 317, 72, 325, 415, 4,
- /* 950 */ 318, 205, 318, 294, 318, 275, 5, 318, 261, 292,
- /* 960 */ 323, 320, 411, 53, 330, 417, 417, 417, 418, 419,
- /* 970 */ 12, 378, 411, 113, 411, 114, 411, 26, 327, 411,
- /* 980 */ 37, 417, 417, 417, 418, 419, 12, 508, 507, 432,
- /* 990 */ 159, 205, 318, 458, 261, 220, 221, 222, 102, 375,
- /* 1000 */ 421, 318, 23, 318, 377, 318, 82, 318, 506, 74,
- /* 1010 */ 73, 202, 467, 279, 411, 38, 472, 72, 316, 317,
- /* 1020 */ 280, 318, 415, 411, 27, 411, 39, 411, 40, 411,
- /* 1030 */ 42, 318, 200, 476, 548, 277, 441, 246, 505, 199,
- /* 1040 */ 318, 511, 201, 411, 43, 318, 512, 455, 318, 13,
- /* 1050 */ 475, 318, 170, 411, 44, 417, 417, 417, 418, 419,
- /* 1060 */ 12, 524, 411, 30, 498, 499, 318, 411, 31, 19,
- /* 1070 */ 411, 45, 318, 411, 46, 484, 318, 13, 241, 318,
- /* 1080 */ 513, 318, 125, 318, 254, 374, 276, 266, 411, 47,
- /* 1090 */ 242, 291, 537, 538, 411, 48, 205, 256, 411, 32,
- /* 1100 */ 258, 411, 11, 411, 50, 411, 51, 252, 350, 125,
- /* 1110 */ 125, 544, 552, 125, 170, 553, 563, 89, 89, 9,
- /* 1120 */ 380, 260, 579, 265, 288, 355, 186, 362, 402, 365,
- /* 1130 */ 366, 268, 269, 143, 225, 270, 555, 565, 278, 281,
- /* 1140 */ 282, 576, 425, 326, 427, 461, 504, 465, 551, 243,
- /* 1150 */ 514, 562, 160, 391, 399, 400, 401, 8, 315, 413,
- /* 1160 */ 82, 226, 333, 227, 81, 331, 57, 516, 228, 345,
- /* 1170 */ 78, 209, 167, 459, 233, 210, 407, 464, 122, 83,
- /* 1180 */ 336, 340, 211, 491, 496, 301, 244, 501, 103, 500,
- /* 1190 */ 497, 502, 285, 518, 229, 525, 414, 286, 519, 352,
- /* 1200 */ 526, 527, 533, 237, 181, 474, 239, 354, 478, 185,
- /* 1210 */ 182, 356, 214, 184, 86, 535, 215, 187, 118, 361,
- /* 1220 */ 547, 190, 129, 372, 373, 130, 554, 311, 131, 561,
- /* 1230 */ 132, 573, 135, 96, 133, 578, 390, 139, 574, 575,
- /* 1240 */ 263, 403, 138, 213, 101, 622, 623, 163, 60, 536,
- /* 1250 */ 164, 422, 431, 442, 449, 445, 140, 154, 166, 450,
- /* 1260 */ 451, 6, 90, 14, 13, 471, 7, 123, 158, 124,
- /* 1270 */ 485, 93, 212, 84, 344, 104, 117, 251, 105, 85,
- /* 1280 */ 106, 179, 242, 353, 142, 18, 534, 126, 306, 349,
- /* 1290 */ 170, 127, 109, 264, 188, 107, 542, 287, 550, 128,
- /* 1300 */ 192, 15, 87, 88, 194, 195, 557, 119, 196, 136,
- /* 1310 */ 137, 134, 16, 564, 571, 108, 313, 203, 145, 283,
- /* 1320 */ 382, 386, 900, 585,
+ /* 0 */ 289, 900, 121, 586, 205, 169, 2, 435, 61, 61,
+ /* 10 */ 61, 61, 435, 63, 63, 63, 63, 64, 64, 65,
+ /* 20 */ 65, 65, 66, 230, 198, 299, 420, 426, 68, 63,
+ /* 30 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 230,
+ /* 40 */ 67, 447, 69, 151, 230, 60, 59, 294, 430, 431,
+ /* 50 */ 427, 427, 62, 62, 61, 61, 61, 61, 411, 63,
+ /* 60 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 230,
+ /* 70 */ 289, 487, 515, 435, 570, 415, 80, 67, 435, 69,
+ /* 80 */ 151, 63, 63, 63, 63, 64, 64, 65, 65, 65,
+ /* 90 */ 66, 230, 569, 568, 248, 386, 420, 426, 2, 572,
+ /* 100 */ 58, 115, 238, 340, 243, 341, 173, 417, 417, 417,
+ /* 110 */ 570, 387, 384, 249, 289, 60, 59, 294, 430, 431,
+ /* 120 */ 427, 427, 62, 62, 61, 61, 61, 61, 569, 63,
+ /* 130 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 230,
+ /* 140 */ 420, 426, 92, 64, 64, 65, 65, 65, 66, 230,
+ /* 150 */ 245, 392, 56, 171, 566, 207, 406, 443, 208, 60,
+ /* 160 */ 59, 294, 430, 431, 427, 427, 62, 62, 61, 61,
+ /* 170 */ 61, 61, 205, 63, 63, 63, 63, 64, 64, 65,
+ /* 180 */ 65, 65, 66, 230, 289, 368, 522, 411, 522, 111,
+ /* 190 */ 378, 207, 447, 467, 223, 403, 21, 532, 21, 172,
+ /* 200 */ 157, 317, 66, 230, 336, 404, 520, 443, 208, 486,
+ /* 210 */ 420, 426, 146, 147, 517, 488, 489, 393, 394, 148,
+ /* 220 */ 531, 224, 487, 410, 41, 407, 415, 567, 289, 60,
+ /* 230 */ 59, 294, 430, 431, 427, 427, 62, 62, 61, 61,
+ /* 240 */ 61, 61, 476, 63, 63, 63, 63, 64, 64, 65,
+ /* 250 */ 65, 65, 66, 230, 420, 426, 491, 492, 417, 417,
+ /* 260 */ 417, 155, 549, 331, 211, 65, 65, 65, 66, 230,
+ /* 270 */ 546, 492, 289, 60, 59, 294, 430, 431, 427, 427,
+ /* 280 */ 62, 62, 61, 61, 61, 61, 467, 63, 63, 63,
+ /* 290 */ 63, 64, 64, 65, 65, 65, 66, 230, 420, 426,
+ /* 300 */ 548, 299, 178, 297, 522, 342, 345, 346, 472, 67,
+ /* 310 */ 460, 69, 151, 577, 21, 338, 347, 60, 59, 294,
+ /* 320 */ 430, 431, 427, 427, 62, 62, 61, 61, 61, 61,
+ /* 330 */ 530, 63, 63, 63, 63, 64, 64, 65, 65, 65,
+ /* 340 */ 66, 230, 409, 523, 76, 289, 408, 478, 452, 482,
+ /* 350 */ 392, 369, 266, 265, 283, 149, 405, 445, 521, 165,
+ /* 360 */ 453, 317, 205, 67, 517, 69, 151, 529, 503, 152,
+ /* 370 */ 248, 420, 426, 454, 528, 493, 161, 115, 238, 340,
+ /* 380 */ 243, 341, 173, 410, 35, 494, 580, 288, 79, 249,
+ /* 390 */ 60, 59, 294, 430, 431, 427, 427, 62, 62, 61,
+ /* 400 */ 61, 61, 61, 411, 63, 63, 63, 63, 64, 64,
+ /* 410 */ 65, 65, 65, 66, 230, 289, 393, 394, 178, 485,
+ /* 420 */ 508, 342, 345, 346, 178, 296, 317, 342, 345, 346,
+ /* 430 */ 366, 317, 347, 20, 317, 141, 317, 457, 347, 150,
+ /* 440 */ 509, 420, 426, 22, 295, 438, 439, 435, 410, 35,
+ /* 450 */ 328, 260, 472, 410, 28, 232, 410, 35, 410, 36,
+ /* 460 */ 60, 59, 294, 430, 431, 427, 427, 62, 62, 61,
+ /* 470 */ 61, 61, 61, 411, 63, 63, 63, 63, 64, 64,
+ /* 480 */ 65, 65, 65, 66, 230, 289, 436, 481, 23, 502,
+ /* 490 */ 298, 234, 380, 301, 317, 217, 317, 476, 333, 317,
+ /* 500 */ 392, 317, 457, 337, 168, 157, 421, 422, 207, 231,
+ /* 510 */ 457, 420, 426, 435, 313, 388, 410, 35, 410, 49,
+ /* 520 */ 204, 410, 41, 410, 49, 410, 3, 197, 424, 425,
+ /* 530 */ 60, 59, 294, 430, 431, 427, 427, 62, 62, 61,
+ /* 540 */ 61, 61, 61, 382, 63, 63, 63, 63, 64, 64,
+ /* 550 */ 65, 65, 65, 66, 230, 289, 443, 423, 357, 252,
+ /* 560 */ 434, 411, 210, 292, 308, 350, 393, 394, 448, 309,
+ /* 570 */ 456, 322, 438, 439, 320, 1, 433, 433, 19, 392,
+ /* 580 */ 541, 420, 426, 191, 540, 375, 584, 891, 543, 891,
+ /* 590 */ 584, 890, 174, 890, 472, 392, 358, 445, 323, 165,
+ /* 600 */ 60, 59, 294, 430, 431, 427, 427, 62, 62, 61,
+ /* 610 */ 61, 61, 61, 383, 63, 63, 63, 63, 64, 64,
+ /* 620 */ 65, 65, 65, 66, 230, 289, 370, 581, 9, 452,
+ /* 630 */ 91, 581, 10, 236, 409, 207, 392, 359, 408, 392,
+ /* 640 */ 156, 453, 169, 362, 435, 393, 394, 320, 291, 433,
+ /* 650 */ 433, 420, 426, 249, 454, 320, 327, 433, 433, 260,
+ /* 660 */ 462, 393, 394, 515, 515, 545, 515, 463, 270, 289,
+ /* 670 */ 60, 59, 294, 430, 431, 427, 427, 62, 62, 61,
+ /* 680 */ 61, 61, 61, 82, 63, 63, 63, 63, 64, 64,
+ /* 690 */ 65, 65, 65, 66, 230, 420, 426, 480, 302, 216,
+ /* 700 */ 261, 303, 393, 394, 822, 393, 394, 273, 515, 271,
+ /* 710 */ 435, 515, 334, 289, 60, 59, 294, 430, 431, 427,
+ /* 720 */ 427, 62, 62, 61, 61, 61, 61, 233, 63, 63,
+ /* 730 */ 63, 63, 64, 64, 65, 65, 65, 66, 230, 420,
+ /* 740 */ 426, 247, 247, 304, 247, 318, 306, 587, 387, 384,
+ /* 750 */ 395, 396, 397, 320, 219, 433, 433, 289, 60, 70,
+ /* 760 */ 294, 430, 431, 427, 427, 62, 62, 61, 61, 61,
+ /* 770 */ 61, 317, 63, 63, 63, 63, 64, 64, 65, 65,
+ /* 780 */ 65, 66, 230, 420, 426, 476, 247, 391, 272, 247,
+ /* 790 */ 539, 356, 539, 410, 29, 175, 176, 177, 162, 260,
+ /* 800 */ 260, 289, 5, 59, 294, 430, 431, 427, 427, 62,
+ /* 810 */ 62, 61, 61, 61, 61, 377, 63, 63, 63, 63,
+ /* 820 */ 64, 64, 65, 65, 65, 66, 230, 420, 426, 392,
+ /* 830 */ 311, 120, 392, 319, 205, 260, 366, 465, 254, 189,
+ /* 840 */ 556, 558, 260, 75, 260, 77, 307, 376, 294, 430,
+ /* 850 */ 431, 427, 427, 62, 62, 61, 61, 61, 61, 260,
+ /* 860 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66,
+ /* 870 */ 230, 72, 324, 411, 4, 260, 559, 258, 293, 256,
+ /* 880 */ 174, 125, 317, 560, 317, 274, 321, 72, 324, 193,
+ /* 890 */ 4, 153, 621, 180, 293, 393, 394, 367, 393, 394,
+ /* 900 */ 374, 218, 321, 326, 410, 24, 410, 33, 183, 317,
+ /* 910 */ 428, 206, 441, 441, 447, 317, 276, 317, 55, 326,
+ /* 920 */ 363, 468, 239, 411, 469, 411, 455, 411, 13, 144,
+ /* 930 */ 447, 410, 53, 240, 74, 73, 291, 410, 52, 410,
+ /* 940 */ 96, 116, 411, 72, 315, 316, 582, 474, 415, 170,
+ /* 950 */ 74, 73, 479, 317, 507, 506, 317, 500, 416, 72,
+ /* 960 */ 315, 316, 72, 324, 415, 4, 205, 317, 329, 293,
+ /* 970 */ 317, 458, 483, 444, 13, 410, 94, 321, 410, 99,
+ /* 980 */ 417, 417, 417, 418, 419, 12, 583, 466, 317, 410,
+ /* 990 */ 100, 471, 410, 110, 326, 475, 417, 417, 417, 418,
+ /* 1000 */ 419, 12, 497, 498, 512, 447, 125, 159, 244, 317,
+ /* 1010 */ 410, 112, 220, 221, 222, 102, 537, 538, 317, 251,
+ /* 1020 */ 317, 125, 317, 504, 505, 74, 73, 349, 202, 125,
+ /* 1030 */ 278, 410, 17, 510, 72, 315, 316, 279, 524, 415,
+ /* 1040 */ 410, 97, 410, 34, 410, 95, 317, 511, 544, 200,
+ /* 1050 */ 125, 548, 552, 253, 170, 317, 199, 255, 317, 201,
+ /* 1060 */ 553, 257, 89, 317, 259, 563, 317, 89, 410, 25,
+ /* 1070 */ 317, 417, 417, 417, 418, 419, 12, 410, 54, 186,
+ /* 1080 */ 410, 113, 354, 317, 264, 410, 114, 317, 410, 26,
+ /* 1090 */ 361, 364, 410, 37, 579, 365, 287, 317, 267, 317,
+ /* 1100 */ 143, 317, 373, 275, 265, 410, 38, 268, 290, 410,
+ /* 1110 */ 27, 317, 269, 205, 555, 565, 317, 277, 317, 410,
+ /* 1120 */ 39, 410, 40, 410, 42, 317, 280, 317, 281, 317,
+ /* 1130 */ 576, 317, 225, 410, 43, 401, 503, 379, 410, 44,
+ /* 1140 */ 410, 30, 317, 325, 440, 317, 461, 410, 31, 410,
+ /* 1150 */ 45, 410, 46, 410, 47, 442, 317, 551, 317, 464,
+ /* 1160 */ 317, 241, 513, 516, 410, 48, 344, 410, 32, 562,
+ /* 1170 */ 160, 390, 398, 399, 400, 8, 314, 412, 410, 11,
+ /* 1180 */ 410, 50, 410, 51, 82, 332, 226, 81, 330, 227,
+ /* 1190 */ 57, 406, 414, 228, 78, 167, 229, 209, 83, 413,
+ /* 1200 */ 459, 122, 335, 339, 500, 490, 235, 495, 242, 473,
+ /* 1210 */ 237, 300, 477, 499, 496, 501, 103, 284, 246, 514,
+ /* 1220 */ 518, 519, 525, 526, 527, 351, 533, 181, 285, 182,
+ /* 1230 */ 184, 214, 353, 185, 535, 187, 215, 355, 86, 118,
+ /* 1240 */ 360, 547, 190, 129, 139, 371, 262, 372, 130, 536,
+ /* 1250 */ 554, 310, 131, 132, 573, 90, 133, 135, 93, 138,
+ /* 1260 */ 578, 574, 575, 109, 213, 561, 101, 119, 389, 18,
+ /* 1270 */ 98, 402, 622, 623, 163, 164, 429, 312, 432, 71,
+ /* 1280 */ 449, 437, 446, 140, 154, 166, 450, 6, 451, 470,
+ /* 1290 */ 7, 123, 14, 13, 124, 158, 484, 212, 84, 343,
+ /* 1300 */ 104, 348, 250, 105, 85, 117, 106, 240, 179, 352,
+ /* 1310 */ 142, 534, 126, 305, 170, 263, 188, 107, 286, 550,
+ /* 1320 */ 127, 128, 15, 542, 192, 87, 194, 88, 195, 557,
+ /* 1330 */ 196, 136, 137, 134, 16, 108, 571, 282, 381, 564,
+ /* 1340 */ 203, 145, 385, 901, 585,
};
static const YYCODETYPE yy_lookahead[] = {
- /* 0 */ 16, 218, 16, 220, 221, 21, 148, 23, 70, 71,
- /* 10 */ 72, 73, 111, 75, 76, 77, 78, 79, 80, 81,
- /* 20 */ 82, 83, 84, 148, 166, 167, 42, 43, 74, 75,
- /* 30 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 79,
- /* 40 */ 80, 81, 82, 83, 84, 61, 62, 63, 64, 65,
- /* 50 */ 66, 67, 68, 69, 70, 71, 72, 73, 20, 75,
- /* 60 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 16,
- /* 70 */ 148, 142, 88, 22, 145, 22, 90, 91, 92, 93,
- /* 80 */ 94, 95, 96, 97, 209, 19, 228, 229, 166, 23,
- /* 90 */ 104, 148, 140, 141, 142, 42, 43, 145, 60, 46,
- /* 100 */ 157, 158, 75, 76, 77, 78, 79, 80, 81, 82,
- /* 110 */ 83, 84, 16, 162, 61, 62, 63, 64, 65, 66,
- /* 120 */ 67, 68, 69, 70, 71, 72, 73, 23, 75, 76,
- /* 130 */ 77, 78, 79, 80, 81, 82, 83, 84, 42, 43,
- /* 140 */ 44, 90, 84, 162, 93, 94, 95, 1, 2, 19,
- /* 150 */ 228, 229, 201, 23, 88, 89, 105, 61, 62, 63,
- /* 160 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- /* 170 */ 156, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- /* 180 */ 84, 16, 201, 79, 80, 148, 21, 161, 12, 59,
- /* 190 */ 169, 154, 88, 89, 157, 158, 170, 148, 177, 218,
- /* 200 */ 24, 220, 221, 99, 190, 156, 170, 42, 43, 79,
- /* 210 */ 80, 19, 20, 37, 22, 39, 202, 203, 88, 170,
- /* 220 */ 171, 207, 92, 148, 16, 49, 61, 62, 63, 64,
- /* 230 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 190,
- /* 240 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- /* 250 */ 42, 43, 60, 143, 144, 125, 126, 127, 11, 149,
- /* 260 */ 218, 219, 220, 221, 189, 148, 156, 16, 81, 61,
- /* 270 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- /* 280 */ 72, 73, 148, 75, 76, 77, 78, 79, 80, 81,
- /* 290 */ 82, 83, 84, 42, 43, 108, 49, 23, 159, 112,
- /* 300 */ 190, 162, 163, 164, 170, 171, 189, 162, 59, 165,
- /* 310 */ 166, 167, 61, 62, 63, 64, 65, 66, 67, 68,
- /* 320 */ 69, 70, 71, 72, 73, 215, 75, 76, 77, 78,
- /* 330 */ 79, 80, 81, 82, 83, 84, 148, 88, 16, 16,
- /* 340 */ 132, 92, 111, 20, 210, 211, 201, 100, 101, 102,
- /* 350 */ 170, 218, 242, 220, 221, 124, 23, 240, 111, 42,
- /* 360 */ 43, 148, 88, 89, 90, 42, 43, 93, 94, 95,
- /* 370 */ 177, 178, 239, 229, 125, 126, 127, 184, 21, 105,
- /* 380 */ 23, 64, 65, 132, 61, 62, 63, 64, 65, 66,
- /* 390 */ 67, 68, 69, 70, 71, 72, 73, 209, 75, 76,
- /* 400 */ 77, 78, 79, 80, 81, 82, 83, 84, 16, 92,
- /* 410 */ 79, 80, 20, 91, 92, 93, 94, 95, 96, 97,
- /* 420 */ 148, 88, 89, 182, 148, 23, 104, 214, 148, 30,
- /* 430 */ 168, 169, 156, 191, 42, 43, 165, 166, 167, 177,
- /* 440 */ 186, 187, 170, 171, 148, 88, 170, 171, 115, 50,
- /* 450 */ 170, 171, 148, 61, 62, 63, 64, 65, 66, 67,
- /* 460 */ 68, 69, 70, 71, 72, 73, 190, 75, 76, 77,
- /* 470 */ 78, 79, 80, 81, 82, 83, 84, 16, 148, 90,
- /* 480 */ 16, 20, 93, 94, 95, 213, 148, 157, 158, 213,
- /* 490 */ 88, 89, 148, 213, 105, 20, 148, 225, 148, 23,
- /* 500 */ 229, 225, 103, 42, 43, 225, 19, 43, 170, 171,
- /* 510 */ 23, 181, 182, 209, 170, 171, 182, 115, 170, 171,
- /* 520 */ 170, 171, 61, 62, 63, 64, 65, 66, 67, 68,
- /* 530 */ 69, 70, 71, 72, 73, 148, 75, 76, 77, 78,
- /* 540 */ 79, 80, 81, 82, 83, 84, 16, 20, 148, 12,
- /* 550 */ 20, 81, 82, 83, 84, 79, 20, 170, 171, 211,
- /* 560 */ 222, 24, 19, 99, 88, 89, 23, 217, 104, 225,
- /* 570 */ 170, 171, 42, 43, 37, 88, 39, 19, 18, 21,
- /* 580 */ 19, 20, 107, 22, 109, 110, 23, 162, 163, 164,
- /* 590 */ 23, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- /* 600 */ 70, 71, 72, 73, 217, 75, 76, 77, 78, 79,
- /* 610 */ 80, 81, 82, 83, 84, 16, 56, 148, 14, 25,
- /* 620 */ 21, 60, 151, 29, 22, 148, 193, 148, 0, 1,
- /* 630 */ 2, 88, 89, 200, 107, 41, 109, 110, 187, 170,
- /* 640 */ 171, 42, 43, 107, 81, 109, 110, 170, 171, 170,
- /* 650 */ 171, 88, 89, 148, 94, 88, 89, 53, 16, 55,
- /* 660 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- /* 670 */ 71, 72, 73, 148, 75, 76, 77, 78, 79, 80,
- /* 680 */ 81, 82, 83, 84, 42, 43, 186, 187, 183, 7,
- /* 690 */ 8, 9, 245, 246, 134, 170, 171, 226, 148, 148,
- /* 700 */ 156, 16, 231, 61, 62, 63, 64, 65, 66, 67,
- /* 710 */ 68, 69, 70, 71, 72, 73, 114, 75, 76, 77,
- /* 720 */ 78, 79, 80, 81, 82, 83, 84, 42, 43, 100,
- /* 730 */ 101, 102, 227, 183, 190, 22, 202, 203, 134, 148,
- /* 740 */ 148, 148, 243, 244, 16, 156, 61, 62, 63, 64,
- /* 750 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 215,
- /* 760 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- /* 770 */ 42, 43, 125, 126, 183, 183, 183, 227, 227, 190,
- /* 780 */ 107, 237, 109, 110, 100, 101, 102, 16, 148, 148,
- /* 790 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- /* 800 */ 72, 73, 89, 75, 76, 77, 78, 79, 80, 81,
- /* 810 */ 82, 83, 84, 42, 43, 27, 148, 22, 227, 227,
- /* 820 */ 227, 23, 34, 148, 148, 14, 148, 156, 115, 189,
- /* 830 */ 189, 131, 19, 133, 63, 64, 65, 66, 67, 68,
- /* 840 */ 69, 70, 71, 72, 73, 148, 75, 76, 77, 78,
- /* 850 */ 79, 80, 81, 82, 83, 84, 16, 17, 148, 19,
- /* 860 */ 148, 190, 148, 23, 53, 189, 55, 170, 171, 148,
- /* 870 */ 146, 31, 16, 17, 148, 19, 156, 148, 156, 23,
- /* 880 */ 170, 171, 170, 171, 170, 171, 88, 31, 48, 214,
- /* 890 */ 108, 170, 171, 98, 112, 148, 170, 171, 148, 59,
- /* 900 */ 148, 148, 148, 43, 48, 148, 22, 156, 148, 148,
- /* 910 */ 190, 148, 190, 148, 148, 59, 148, 170, 171, 79,
- /* 920 */ 80, 162, 170, 171, 170, 171, 113, 87, 88, 89,
- /* 930 */ 170, 171, 92, 170, 171, 79, 80, 81, 170, 171,
- /* 940 */ 148, 190, 189, 87, 88, 89, 16, 17, 92, 19,
- /* 950 */ 148, 111, 148, 23, 148, 189, 192, 148, 148, 99,
- /* 960 */ 16, 31, 170, 171, 148, 125, 126, 127, 128, 129,
- /* 970 */ 130, 91, 170, 171, 170, 171, 170, 171, 48, 170,
- /* 980 */ 171, 125, 126, 127, 128, 129, 130, 91, 92, 59,
- /* 990 */ 5, 111, 148, 148, 148, 10, 11, 12, 13, 189,
- /* 1000 */ 20, 148, 22, 148, 124, 148, 122, 148, 179, 79,
- /* 1010 */ 80, 26, 204, 28, 170, 171, 148, 87, 88, 89,
- /* 1020 */ 35, 148, 92, 170, 171, 170, 171, 170, 171, 170,
- /* 1030 */ 171, 148, 47, 148, 49, 189, 92, 148, 148, 54,
- /* 1040 */ 148, 179, 57, 170, 171, 148, 179, 20, 148, 22,
- /* 1050 */ 20, 148, 22, 170, 171, 125, 126, 127, 128, 129,
- /* 1060 */ 130, 148, 170, 171, 7, 8, 148, 170, 171, 19,
- /* 1070 */ 170, 171, 148, 170, 171, 20, 148, 22, 92, 148,
- /* 1080 */ 20, 148, 22, 148, 148, 100, 101, 102, 170, 171,
- /* 1090 */ 104, 106, 51, 52, 170, 171, 111, 148, 170, 171,
- /* 1100 */ 148, 170, 171, 170, 171, 170, 171, 20, 20, 22,
- /* 1110 */ 22, 20, 20, 22, 22, 20, 20, 22, 22, 69,
- /* 1120 */ 135, 148, 20, 148, 22, 234, 233, 148, 150, 148,
- /* 1130 */ 148, 148, 148, 192, 194, 148, 148, 148, 148, 148,
- /* 1140 */ 148, 148, 230, 224, 230, 173, 178, 173, 195, 173,
- /* 1150 */ 173, 195, 6, 147, 147, 147, 147, 22, 155, 190,
- /* 1160 */ 122, 195, 119, 196, 120, 117, 121, 173, 197, 174,
- /* 1170 */ 131, 223, 113, 153, 97, 212, 23, 161, 153, 99,
- /* 1180 */ 116, 99, 212, 172, 172, 40, 172, 98, 19, 174,
- /* 1190 */ 180, 172, 175, 161, 198, 172, 199, 175, 180, 15,
- /* 1200 */ 172, 172, 153, 205, 152, 206, 205, 153, 206, 153,
- /* 1210 */ 152, 38, 212, 152, 131, 153, 212, 152, 61, 153,
- /* 1220 */ 185, 185, 19, 153, 15, 188, 195, 153, 188, 195,
- /* 1230 */ 188, 33, 185, 160, 188, 138, 1, 216, 153, 153,
- /* 1240 */ 235, 20, 216, 176, 176, 113, 113, 113, 19, 236,
- /* 1250 */ 113, 20, 20, 92, 11, 108, 19, 19, 22, 20,
- /* 1260 */ 20, 118, 238, 22, 22, 115, 118, 19, 113, 20,
- /* 1270 */ 20, 238, 44, 19, 44, 19, 32, 20, 19, 19,
- /* 1280 */ 19, 96, 104, 16, 21, 232, 17, 99, 36, 44,
- /* 1290 */ 22, 45, 241, 134, 99, 19, 45, 5, 1, 103,
- /* 1300 */ 123, 19, 69, 69, 114, 14, 17, 244, 116, 103,
- /* 1310 */ 123, 114, 19, 124, 20, 14, 247, 136, 19, 137,
- /* 1320 */ 58, 3, 248, 4,
+ /* 0 */ 16, 140, 141, 142, 111, 21, 145, 23, 70, 71,
+ /* 10 */ 72, 73, 23, 75, 76, 77, 78, 79, 80, 81,
+ /* 20 */ 82, 83, 84, 85, 156, 16, 42, 43, 74, 75,
+ /* 30 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ /* 40 */ 217, 59, 219, 220, 85, 61, 62, 63, 64, 65,
+ /* 50 */ 66, 67, 68, 69, 70, 71, 72, 73, 190, 75,
+ /* 60 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ /* 70 */ 16, 89, 148, 89, 148, 93, 22, 217, 89, 219,
+ /* 80 */ 220, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ /* 90 */ 84, 85, 166, 167, 85, 142, 42, 43, 145, 239,
+ /* 100 */ 46, 92, 93, 94, 95, 96, 97, 125, 126, 127,
+ /* 110 */ 148, 1, 2, 104, 16, 61, 62, 63, 64, 65,
+ /* 120 */ 66, 67, 68, 69, 70, 71, 72, 73, 166, 75,
+ /* 130 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ /* 140 */ 42, 43, 44, 79, 80, 81, 82, 83, 84, 85,
+ /* 150 */ 226, 23, 19, 156, 228, 229, 23, 79, 80, 61,
+ /* 160 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ /* 170 */ 72, 73, 111, 75, 76, 77, 78, 79, 80, 81,
+ /* 180 */ 82, 83, 84, 85, 16, 124, 148, 190, 148, 21,
+ /* 190 */ 228, 229, 59, 22, 154, 157, 158, 157, 158, 202,
+ /* 200 */ 203, 148, 84, 85, 207, 168, 169, 79, 80, 170,
+ /* 210 */ 42, 43, 79, 80, 177, 170, 161, 89, 90, 181,
+ /* 220 */ 182, 191, 89, 170, 171, 170, 93, 99, 16, 61,
+ /* 230 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ /* 240 */ 72, 73, 148, 75, 76, 77, 78, 79, 80, 81,
+ /* 250 */ 82, 83, 84, 85, 42, 43, 186, 187, 125, 126,
+ /* 260 */ 127, 90, 11, 210, 211, 81, 82, 83, 84, 85,
+ /* 270 */ 186, 187, 16, 61, 62, 63, 64, 65, 66, 67,
+ /* 280 */ 68, 69, 70, 71, 72, 73, 115, 75, 76, 77,
+ /* 290 */ 78, 79, 80, 81, 82, 83, 84, 85, 42, 43,
+ /* 300 */ 49, 16, 91, 209, 148, 94, 95, 96, 162, 217,
+ /* 310 */ 218, 219, 220, 157, 158, 81, 105, 61, 62, 63,
+ /* 320 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ /* 330 */ 182, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ /* 340 */ 84, 85, 108, 182, 132, 16, 112, 201, 12, 20,
+ /* 350 */ 23, 100, 101, 102, 159, 22, 169, 162, 163, 164,
+ /* 360 */ 24, 148, 111, 217, 177, 219, 220, 177, 178, 156,
+ /* 370 */ 85, 42, 43, 37, 184, 39, 91, 92, 93, 94,
+ /* 380 */ 95, 96, 97, 170, 171, 49, 245, 246, 132, 104,
+ /* 390 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ /* 400 */ 71, 72, 73, 190, 75, 76, 77, 78, 79, 80,
+ /* 410 */ 81, 82, 83, 84, 85, 16, 89, 90, 91, 20,
+ /* 420 */ 30, 94, 95, 96, 91, 212, 148, 94, 95, 96,
+ /* 430 */ 148, 148, 105, 19, 148, 21, 148, 224, 105, 156,
+ /* 440 */ 50, 42, 43, 19, 165, 166, 167, 23, 170, 171,
+ /* 450 */ 187, 148, 162, 170, 171, 148, 170, 171, 170, 171,
+ /* 460 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ /* 470 */ 71, 72, 73, 190, 75, 76, 77, 78, 79, 80,
+ /* 480 */ 81, 82, 83, 84, 85, 16, 20, 20, 22, 20,
+ /* 490 */ 212, 201, 189, 103, 148, 213, 148, 148, 212, 148,
+ /* 500 */ 23, 148, 224, 148, 202, 203, 42, 43, 229, 221,
+ /* 510 */ 224, 42, 43, 89, 143, 144, 170, 171, 170, 171,
+ /* 520 */ 149, 170, 171, 170, 171, 170, 171, 156, 64, 65,
+ /* 530 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ /* 540 */ 71, 72, 73, 240, 75, 76, 77, 78, 79, 80,
+ /* 550 */ 81, 82, 83, 84, 85, 16, 79, 93, 209, 20,
+ /* 560 */ 20, 190, 211, 151, 216, 16, 89, 90, 20, 216,
+ /* 570 */ 224, 165, 166, 167, 107, 19, 109, 110, 19, 23,
+ /* 580 */ 25, 42, 43, 22, 29, 214, 19, 20, 18, 22,
+ /* 590 */ 19, 20, 43, 22, 162, 23, 41, 162, 163, 164,
+ /* 600 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ /* 610 */ 71, 72, 73, 242, 75, 76, 77, 78, 79, 80,
+ /* 620 */ 81, 82, 83, 84, 85, 16, 56, 60, 69, 12,
+ /* 630 */ 21, 60, 19, 201, 108, 229, 23, 225, 112, 23,
+ /* 640 */ 148, 24, 21, 231, 23, 89, 90, 107, 99, 109,
+ /* 650 */ 110, 42, 43, 104, 37, 107, 39, 109, 110, 148,
+ /* 660 */ 27, 89, 90, 148, 148, 95, 148, 34, 14, 16,
+ /* 670 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ /* 680 */ 71, 72, 73, 122, 75, 76, 77, 78, 79, 80,
+ /* 690 */ 81, 82, 83, 84, 85, 42, 43, 81, 183, 183,
+ /* 700 */ 189, 183, 89, 90, 134, 89, 90, 53, 148, 55,
+ /* 710 */ 89, 148, 148, 16, 61, 62, 63, 64, 65, 66,
+ /* 720 */ 67, 68, 69, 70, 71, 72, 73, 148, 75, 76,
+ /* 730 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 42,
+ /* 740 */ 43, 226, 226, 183, 226, 148, 183, 0, 1, 2,
+ /* 750 */ 7, 8, 9, 107, 146, 109, 110, 16, 61, 62,
+ /* 760 */ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ /* 770 */ 73, 148, 75, 76, 77, 78, 79, 80, 81, 82,
+ /* 780 */ 83, 84, 85, 42, 43, 148, 226, 148, 134, 226,
+ /* 790 */ 100, 101, 102, 170, 171, 100, 101, 102, 19, 148,
+ /* 800 */ 148, 16, 192, 62, 63, 64, 65, 66, 67, 68,
+ /* 810 */ 69, 70, 71, 72, 73, 92, 75, 76, 77, 78,
+ /* 820 */ 79, 80, 81, 82, 83, 84, 85, 42, 43, 23,
+ /* 830 */ 243, 244, 23, 16, 111, 148, 148, 22, 14, 156,
+ /* 840 */ 189, 189, 148, 131, 148, 133, 209, 124, 63, 64,
+ /* 850 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 148,
+ /* 860 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ /* 870 */ 85, 16, 17, 190, 19, 148, 189, 53, 23, 55,
+ /* 880 */ 43, 22, 148, 189, 148, 189, 31, 16, 17, 156,
+ /* 890 */ 19, 156, 113, 156, 23, 89, 90, 214, 89, 90,
+ /* 900 */ 189, 213, 31, 48, 170, 171, 170, 171, 156, 148,
+ /* 910 */ 93, 193, 125, 126, 59, 148, 189, 148, 200, 48,
+ /* 920 */ 237, 115, 93, 190, 115, 190, 20, 190, 22, 114,
+ /* 930 */ 59, 170, 171, 104, 79, 80, 99, 170, 171, 170,
+ /* 940 */ 171, 148, 190, 88, 89, 90, 20, 20, 93, 22,
+ /* 950 */ 79, 80, 81, 148, 92, 93, 148, 98, 148, 88,
+ /* 960 */ 89, 90, 16, 17, 93, 19, 111, 148, 148, 23,
+ /* 970 */ 148, 148, 20, 162, 22, 170, 171, 31, 170, 171,
+ /* 980 */ 125, 126, 127, 128, 129, 130, 60, 204, 148, 170,
+ /* 990 */ 171, 148, 170, 171, 48, 148, 125, 126, 127, 128,
+ /* 1000 */ 129, 130, 7, 8, 20, 59, 22, 5, 148, 148,
+ /* 1010 */ 170, 171, 10, 11, 12, 13, 51, 52, 148, 20,
+ /* 1020 */ 148, 22, 148, 148, 179, 79, 80, 20, 26, 22,
+ /* 1030 */ 28, 170, 171, 179, 88, 89, 90, 35, 148, 93,
+ /* 1040 */ 170, 171, 170, 171, 170, 171, 148, 179, 20, 47,
+ /* 1050 */ 22, 49, 20, 148, 22, 148, 54, 148, 148, 57,
+ /* 1060 */ 20, 148, 22, 148, 148, 20, 148, 22, 170, 171,
+ /* 1070 */ 148, 125, 126, 127, 128, 129, 130, 170, 171, 233,
+ /* 1080 */ 170, 171, 234, 148, 148, 170, 171, 148, 170, 171,
+ /* 1090 */ 148, 148, 170, 171, 20, 148, 22, 148, 148, 148,
+ /* 1100 */ 192, 148, 100, 101, 102, 170, 171, 148, 106, 170,
+ /* 1110 */ 171, 148, 148, 111, 148, 148, 148, 148, 148, 170,
+ /* 1120 */ 171, 170, 171, 170, 171, 148, 148, 148, 148, 148,
+ /* 1130 */ 148, 148, 194, 170, 171, 150, 178, 135, 170, 171,
+ /* 1140 */ 170, 171, 148, 223, 230, 148, 173, 170, 171, 170,
+ /* 1150 */ 171, 170, 171, 170, 171, 230, 148, 195, 148, 173,
+ /* 1160 */ 148, 173, 173, 173, 170, 171, 174, 170, 171, 195,
+ /* 1170 */ 6, 147, 147, 147, 147, 22, 155, 190, 170, 171,
+ /* 1180 */ 170, 171, 170, 171, 122, 119, 195, 120, 117, 196,
+ /* 1190 */ 121, 23, 161, 197, 131, 113, 198, 222, 99, 199,
+ /* 1200 */ 153, 153, 116, 99, 98, 172, 205, 172, 172, 206,
+ /* 1210 */ 205, 40, 206, 174, 180, 172, 19, 175, 85, 161,
+ /* 1220 */ 161, 180, 172, 172, 172, 15, 153, 152, 175, 152,
+ /* 1230 */ 152, 227, 153, 153, 153, 152, 227, 38, 131, 61,
+ /* 1240 */ 153, 185, 185, 19, 215, 153, 235, 15, 188, 236,
+ /* 1250 */ 195, 153, 188, 188, 33, 238, 188, 185, 238, 215,
+ /* 1260 */ 138, 153, 153, 241, 176, 195, 176, 244, 1, 232,
+ /* 1270 */ 160, 20, 113, 113, 113, 113, 93, 247, 108, 19,
+ /* 1280 */ 11, 20, 20, 19, 19, 22, 20, 118, 20, 115,
+ /* 1290 */ 118, 19, 22, 22, 20, 113, 20, 44, 19, 44,
+ /* 1300 */ 19, 44, 20, 19, 19, 32, 19, 104, 97, 16,
+ /* 1310 */ 21, 17, 99, 36, 22, 134, 99, 19, 5, 1,
+ /* 1320 */ 45, 103, 19, 45, 123, 69, 114, 69, 14, 17,
+ /* 1330 */ 116, 103, 123, 114, 19, 14, 20, 137, 58, 124,
+ /* 1340 */ 136, 19, 3, 248, 4,
};
-#define YY_SHIFT_USE_DFLT (-100)
-#define YY_SHIFT_MAX 386
+#define YY_SHIFT_USE_DFLT (-108)
+#define YY_SHIFT_MAX 385
static const short yy_shift_ofst[] = {
- /* 0 */ 146, 840, 985, -16, 840, 930, 930, 930, 274, 104,
- /* 10 */ -99, 96, 930, 930, 930, 930, 930, -46, 247, 476,
- /* 20 */ 567, 798, 331, 331, 53, 165, 208, 251, 323, 392,
- /* 30 */ 461, 530, 599, 642, 685, 642, 642, 642, 642, 642,
- /* 40 */ 642, 642, 642, 642, 642, 642, 642, 642, 642, 642,
- /* 50 */ 642, 642, 728, 771, 771, 856, 930, 930, 930, 930,
- /* 60 */ 930, 930, 930, 930, 930, 930, 930, 930, 930, 930,
- /* 70 */ 930, 930, 930, 930, 930, 930, 930, 930, 930, 930,
- /* 80 */ 930, 930, 930, 930, 930, 930, 930, 930, 930, 930,
- /* 90 */ 930, 930, 930, 930, -62, -62, -14, 27, 27, -40,
- /* 100 */ 470, 464, 560, 567, 567, 567, 567, 567, 567, 567,
- /* 110 */ 798, 58, -100, -100, -100, 130, 322, 176, 176, 192,
- /* 120 */ 561, 628, 357, 567, 357, 567, 567, 567, 567, 567,
- /* 130 */ 567, 567, 567, 567, 567, 567, 567, 567, 880, 231,
- /* 140 */ -99, -99, -99, -100, -100, -100, 249, 249, 51, 389,
- /* 150 */ 475, 66, 527, 536, 537, 333, 402, 543, 563, 682,
- /* 160 */ 567, 567, 187, 567, 567, 487, 567, 567, 713, 567,
- /* 170 */ 567, 673, 713, 567, 567, 399, 399, 399, 567, 567,
- /* 180 */ 673, 567, 567, 673, 567, 594, 629, 567, 567, 673,
- /* 190 */ 567, 567, 567, 673, 567, 567, 567, 673, 673, 567,
- /* 200 */ 567, 567, 567, 567, 558, 782, 602, 647, 647, 700,
- /* 210 */ 788, 788, 788, 860, 788, 788, 795, 884, 884, 1146,
- /* 220 */ 1146, 1146, 1146, 1135, -99, 1038, 1043, 1044, 1048, 1045,
- /* 230 */ 1039, 1059, 1077, 1153, 1077, 1059, 1080, 1064, 1080, 1064,
- /* 240 */ 1082, 1082, 1145, 1082, 1089, 1082, 1169, 1077, 1077, 1153,
- /* 250 */ 1145, 1082, 1082, 1082, 1169, 1184, 1059, 1184, 1059, 1184,
- /* 260 */ 1059, 1059, 1173, 1083, 1184, 1059, 1157, 1157, 1203, 1038,
- /* 270 */ 1059, 1209, 1209, 1209, 1209, 1038, 1157, 1203, 1059, 1198,
- /* 280 */ 1198, 1059, 1059, 1097, -100, -100, -100, -100, -100, -100,
- /* 290 */ 317, 604, 684, 811, 813, 980, 944, 1027, 1030, 1055,
- /* 300 */ 986, 1057, 896, 1060, 1087, 1088, 1041, 1091, 1092, 1095,
- /* 310 */ 1096, 1050, 1102, 38, 1235, 1221, 1132, 1133, 1134, 1137,
- /* 320 */ 1229, 1231, 1232, 1161, 1147, 1237, 1243, 1238, 1239, 1236,
- /* 330 */ 1240, 1143, 1241, 1148, 1242, 1150, 1248, 1249, 1155, 1250,
- /* 340 */ 1244, 1228, 1254, 1230, 1256, 1257, 1259, 1260, 1245, 1261,
- /* 350 */ 1185, 1178, 1267, 1269, 1263, 1188, 1252, 1246, 1268, 1251,
- /* 360 */ 1159, 1195, 1276, 1292, 1297, 1196, 1233, 1234, 1177, 1282,
- /* 370 */ 1190, 1291, 1192, 1289, 1197, 1206, 1187, 1293, 1189, 1294,
- /* 380 */ 1301, 1262, 1181, 1182, 1299, 1318, 1319,
+ /* 0 */ 110, 855, 1002, -16, 855, 946, 946, 946, 327, 128,
+ /* 10 */ -107, 98, 946, 946, 946, 946, 946, -46, 251, 477,
+ /* 20 */ 572, -11, 78, 78, 54, 168, 212, 256, 329, 399,
+ /* 30 */ 469, 539, 609, 653, 697, 653, 653, 653, 653, 653,
+ /* 40 */ 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
+ /* 50 */ 653, 653, 741, 785, 785, 871, 946, 946, 946, 946,
+ /* 60 */ 946, 946, 946, 946, 946, 946, 946, 946, 946, 946,
+ /* 70 */ 946, 946, 946, 946, 946, 946, 946, 946, 946, 946,
+ /* 80 */ 946, 946, 946, 946, 946, 946, 946, 946, 946, 946,
+ /* 90 */ 946, 946, 946, 946, -62, -62, 6, 6, 285, 64,
+ /* 100 */ 184, 549, 570, 572, 572, 572, 572, 572, 572, 572,
+ /* 110 */ 118, -11, -41, -108, -108, 133, 9, 336, 336, 567,
+ /* 120 */ 571, 747, 621, 572, 621, 572, 572, 572, 572, 572,
+ /* 130 */ 572, 572, 572, 572, 572, 572, 572, 572, 723, 61,
+ /* 140 */ -107, -107, -107, -108, -108, -108, -18, -18, 333, 211,
+ /* 150 */ 467, 556, 540, 548, 617, 806, 809, 613, 616, 743,
+ /* 160 */ 572, 572, 234, 572, 572, 424, 572, 572, 171, 572,
+ /* 170 */ 572, 646, 171, 572, 572, 390, 390, 390, 572, 572,
+ /* 180 */ 646, 572, 572, 646, 572, 555, 690, 572, 572, 646,
+ /* 190 */ 572, 572, 572, 646, 572, 572, 572, 646, 646, 572,
+ /* 200 */ 572, 572, 572, 572, 414, 526, 815, 787, 787, 712,
+ /* 210 */ 633, 633, 633, 837, 633, 633, 859, 561, 561, 1164,
+ /* 220 */ 1164, 1164, 1164, 1153, -107, 1062, 1066, 1067, 1071, 1069,
+ /* 230 */ 1168, 1063, 1082, 1082, 1099, 1086, 1099, 1086, 1104, 1104,
+ /* 240 */ 1171, 1104, 1106, 1104, 1197, 1133, 1168, 1133, 1168, 1171,
+ /* 250 */ 1104, 1104, 1104, 1197, 1210, 1082, 1210, 1082, 1210, 1082,
+ /* 260 */ 1082, 1199, 1107, 1210, 1082, 1178, 1178, 1224, 1062, 1082,
+ /* 270 */ 1232, 1232, 1232, 1232, 1062, 1178, 1224, 1082, 1221, 1221,
+ /* 280 */ 1082, 1082, 1122, -108, -108, -108, -108, -108, -108, 464,
+ /* 290 */ 654, 695, 824, 779, 817, 466, 906, 927, 952, 829,
+ /* 300 */ 995, 862, 984, 999, 1007, 965, 1028, 1032, 1040, 1045,
+ /* 310 */ 559, 1074, 926, 1267, 1251, 1159, 1160, 1161, 1162, 1183,
+ /* 320 */ 1170, 1260, 1261, 1262, 1264, 1269, 1265, 1266, 1263, 1268,
+ /* 330 */ 1169, 1270, 1172, 1271, 1174, 1272, 1274, 1182, 1276, 1273,
+ /* 340 */ 1253, 1279, 1255, 1281, 1282, 1284, 1285, 1257, 1287, 1211,
+ /* 350 */ 1203, 1293, 1294, 1289, 1213, 1277, 1275, 1292, 1278, 1181,
+ /* 360 */ 1217, 1298, 1313, 1318, 1218, 1256, 1258, 1201, 1303, 1212,
+ /* 370 */ 1314, 1214, 1312, 1219, 1228, 1209, 1315, 1215, 1316, 1321,
+ /* 380 */ 1280, 1204, 1200, 1322, 1339, 1340,
};
-#define YY_REDUCE_USE_DFLT (-218)
-#define YY_REDUCE_MAX 289
+#define YY_REDUCE_USE_DFLT (-178)
+#define YY_REDUCE_MAX 288
static const short yy_reduce_ofst[] = {
- /* 0 */ -48, 276, 110, -19, 49, 272, 134, 280, 330, -142,
- /* 10 */ 14, 133, 338, 344, 348, 350, 387, 42, 544, -78,
- /* 20 */ 37, 139, 144, 271, -217, -217, -217, -217, -217, -217,
- /* 30 */ -217, -217, -217, -217, -217, -217, -217, -217, -217, -217,
- /* 40 */ -217, -217, -217, -217, -217, -217, -217, -217, -217, -217,
- /* 50 */ -217, -217, -217, -217, -217, 400, 469, 477, 479, 525,
- /* 60 */ 697, 710, 712, 714, 721, 726, 747, 752, 754, 760,
- /* 70 */ 763, 768, 792, 802, 804, 806, 809, 844, 853, 855,
- /* 80 */ 857, 859, 873, 883, 892, 897, 900, 903, 918, 924,
- /* 90 */ 928, 931, 933, 935, -217, -217, 262, -217, -217, -217,
- /* 100 */ -217, 193, 471, 505, 550, 591, 592, 593, 117, -57,
- /* 110 */ 425, -217, -217, -217, -217, 26, 21, 254, 500, 447,
- /* 120 */ 447, -71, -49, -125, 145, 551, 75, 188, 213, 304,
- /* 130 */ 640, 641, 676, 753, 766, 810, 675, 846, 589, 671,
- /* 140 */ 720, 722, 751, 433, 534, 499, 36, 180, 241, 334,
- /* 150 */ 242, 296, 242, 242, 451, 668, 678, 729, 750, 724,
- /* 160 */ 757, 761, 764, 750, 765, 759, 816, 845, 808, 868,
- /* 170 */ 885, 242, 808, 889, 890, 829, 862, 867, 913, 936,
- /* 180 */ 242, 949, 952, 242, 973, 893, 891, 975, 979, 242,
- /* 190 */ 981, 982, 983, 242, 984, 987, 988, 242, 242, 989,
- /* 200 */ 990, 991, 992, 993, 978, 941, 940, 912, 914, 919,
- /* 210 */ 972, 974, 976, 968, 977, 994, 995, 953, 956, 1006,
- /* 220 */ 1007, 1008, 1009, 1003, 969, 966, 967, 971, 996, 997,
- /* 230 */ 948, 1020, 963, 1016, 970, 1025, 998, 999, 1001, 1002,
- /* 240 */ 1011, 1012, 1010, 1014, 1015, 1019, 1017, 1000, 1004, 1032,
- /* 250 */ 1018, 1023, 1028, 1029, 1022, 1052, 1049, 1058, 1054, 1061,
- /* 260 */ 1056, 1062, 1005, 1013, 1065, 1066, 1035, 1036, 1021, 1031,
- /* 270 */ 1070, 1037, 1040, 1042, 1046, 1034, 1047, 1026, 1074, 1024,
- /* 280 */ 1033, 1085, 1086, 1051, 1073, 1067, 1068, 1053, 1063, 1069,
+ /* 0 */ -139, 213, 371, 146, 283, 278, 53, 286, 38, -74,
+ /* 10 */ -3, -140, 288, 346, 351, 348, 353, 92, 683, -38,
+ /* 20 */ 40, 195, 279, 406, -177, -177, -177, -177, -177, -177,
+ /* 30 */ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ /* 40 */ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ /* 50 */ -177, -177, -177, -177, -177, 355, 623, 734, 736, 761,
+ /* 60 */ 767, 769, 805, 808, 819, 822, 840, 861, 870, 872,
+ /* 70 */ 874, 898, 907, 910, 915, 918, 922, 935, 939, 949,
+ /* 80 */ 951, 953, 963, 968, 970, 977, 979, 981, 983, 994,
+ /* 90 */ 997, 1008, 1010, 1012, -177, -177, -177, -177, 37, -177,
+ /* 100 */ -177, 190, 412, 515, 516, 518, 560, 563, 303, 156,
+ /* 110 */ -177, 435, -177, -177, -177, 55, 187, 70, 84, 141,
+ /* 120 */ 141, -47, 290, 94, 432, -76, 511, 349, 282, 637,
+ /* 130 */ 651, 652, 687, 694, 696, 711, 688, 727, -132, 733,
+ /* 140 */ 735, 737, 752, 718, 302, 587, 39, 45, 148, 161,
+ /* 150 */ 30, 307, 30, 30, 263, 492, 564, 579, 597, 608,
+ /* 160 */ 639, 793, 610, 597, 810, 811, 820, 823, 783, 843,
+ /* 170 */ 847, 30, 783, 860, 875, 845, 854, 868, 890, 905,
+ /* 180 */ 30, 909, 913, 30, 916, 846, 848, 936, 942, 30,
+ /* 190 */ 943, 947, 950, 30, 959, 964, 966, 30, 30, 967,
+ /* 200 */ 969, 978, 980, 982, 985, 908, 938, 914, 925, 920,
+ /* 210 */ 973, 986, 988, 958, 989, 990, 992, 962, 974, 1024,
+ /* 220 */ 1025, 1026, 1027, 1021, 987, 991, 993, 996, 998, 1000,
+ /* 230 */ 1031, 975, 1047, 1048, 1001, 1003, 1005, 1006, 1033, 1035,
+ /* 240 */ 1034, 1036, 1039, 1043, 1042, 1004, 1058, 1009, 1059, 1041,
+ /* 250 */ 1050, 1051, 1052, 1053, 1075, 1073, 1077, 1079, 1078, 1080,
+ /* 260 */ 1081, 1011, 1013, 1083, 1087, 1056, 1057, 1029, 1055, 1092,
+ /* 270 */ 1060, 1064, 1065, 1068, 1070, 1072, 1044, 1098, 1017, 1020,
+ /* 280 */ 1108, 1109, 1022, 1110, 1088, 1090, 1037, 1023, 1030,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 593, 820, 898, 708, 898, 820, 898, 820, 898, 843,
- /* 10 */ 712, 872, 816, 820, 898, 898, 898, 791, 898, 843,
- /* 20 */ 898, 624, 843, 843, 743, 898, 898, 898, 898, 898,
- /* 30 */ 898, 898, 898, 744, 898, 819, 815, 811, 813, 812,
- /* 40 */ 745, 732, 741, 748, 724, 857, 750, 751, 757, 758,
- /* 50 */ 873, 876, 779, 797, 778, 898, 898, 898, 898, 898,
- /* 60 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
- /* 70 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
- /* 80 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
- /* 90 */ 898, 898, 898, 898, 781, 802, 617, 780, 790, 782,
- /* 100 */ 783, 677, 612, 898, 898, 898, 898, 898, 898, 898,
- /* 110 */ 898, 784, 785, 798, 799, 898, 898, 898, 898, 898,
- /* 120 */ 898, 593, 708, 898, 708, 898, 898, 898, 898, 898,
- /* 130 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
- /* 140 */ 898, 898, 898, 702, 712, 891, 898, 898, 668, 898,
- /* 150 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 600,
- /* 160 */ 598, 898, 700, 898, 898, 626, 898, 898, 710, 898,
- /* 170 */ 898, 715, 716, 898, 898, 898, 898, 898, 898, 898,
- /* 180 */ 614, 898, 898, 689, 898, 849, 898, 898, 898, 864,
- /* 190 */ 898, 898, 898, 862, 898, 898, 898, 691, 753, 830,
- /* 200 */ 898, 877, 879, 898, 898, 700, 709, 898, 898, 814,
- /* 210 */ 735, 735, 735, 647, 735, 735, 650, 747, 747, 597,
- /* 220 */ 597, 597, 597, 667, 898, 747, 738, 740, 728, 742,
- /* 230 */ 898, 717, 736, 898, 736, 717, 725, 727, 725, 727,
- /* 240 */ 679, 679, 664, 679, 650, 679, 824, 736, 736, 898,
- /* 250 */ 664, 679, 679, 679, 824, 609, 717, 609, 717, 609,
- /* 260 */ 717, 717, 853, 856, 609, 717, 681, 681, 759, 747,
- /* 270 */ 717, 688, 688, 688, 688, 747, 681, 759, 717, 875,
- /* 280 */ 875, 717, 717, 884, 634, 652, 652, 859, 891, 896,
- /* 290 */ 898, 898, 898, 898, 766, 898, 898, 898, 898, 898,
- /* 300 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
- /* 310 */ 898, 836, 898, 898, 898, 898, 771, 767, 898, 768,
- /* 320 */ 898, 898, 898, 898, 694, 898, 898, 898, 898, 898,
- /* 330 */ 898, 898, 729, 898, 739, 898, 898, 898, 898, 898,
- /* 340 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
- /* 350 */ 898, 898, 898, 898, 898, 898, 898, 851, 852, 898,
- /* 360 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
- /* 370 */ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
- /* 380 */ 898, 883, 898, 898, 886, 594, 898, 588, 591, 590,
- /* 390 */ 592, 596, 599, 621, 622, 623, 601, 602, 603, 604,
- /* 400 */ 605, 606, 607, 613, 615, 633, 635, 619, 637, 698,
- /* 410 */ 699, 763, 692, 693, 697, 765, 769, 770, 772, 773,
- /* 420 */ 620, 627, 628, 631, 632, 839, 841, 840, 842, 630,
- /* 430 */ 629, 774, 777, 786, 787, 789, 795, 801, 804, 788,
- /* 440 */ 793, 794, 796, 800, 803, 695, 696, 807, 809, 810,
- /* 450 */ 865, 866, 867, 868, 869, 805, 817, 818, 718, 808,
- /* 460 */ 792, 730, 733, 734, 737, 731, 701, 711, 720, 721,
- /* 470 */ 722, 723, 706, 707, 713, 726, 761, 762, 714, 703,
- /* 480 */ 704, 705, 806, 764, 775, 776, 638, 639, 771, 640,
- /* 490 */ 641, 642, 680, 683, 684, 685, 643, 662, 665, 666,
- /* 500 */ 644, 651, 645, 646, 653, 654, 655, 658, 659, 660,
- /* 510 */ 661, 656, 657, 825, 826, 828, 827, 648, 649, 663,
+ /* 0 */ 593, 819, 899, 708, 899, 819, 899, 819, 899, 844,
+ /* 10 */ 712, 873, 815, 819, 899, 899, 899, 790, 899, 844,
+ /* 20 */ 899, 624, 844, 844, 741, 899, 899, 899, 899, 899,
+ /* 30 */ 899, 899, 899, 742, 899, 818, 814, 810, 812, 811,
+ /* 40 */ 743, 732, 739, 746, 724, 858, 748, 749, 755, 756,
+ /* 50 */ 874, 877, 778, 777, 796, 899, 899, 899, 899, 899,
+ /* 60 */ 899, 899, 899, 899, 899, 899, 899, 899, 899, 899,
+ /* 70 */ 899, 899, 899, 899, 899, 899, 899, 899, 899, 899,
+ /* 80 */ 899, 899, 899, 899, 899, 899, 899, 899, 899, 899,
+ /* 90 */ 899, 899, 899, 899, 780, 801, 779, 789, 617, 781,
+ /* 100 */ 782, 677, 612, 899, 899, 899, 899, 899, 899, 899,
+ /* 110 */ 783, 899, 784, 797, 798, 899, 899, 899, 899, 899,
+ /* 120 */ 899, 593, 708, 899, 708, 899, 899, 899, 899, 899,
+ /* 130 */ 899, 899, 899, 899, 899, 899, 899, 899, 899, 899,
+ /* 140 */ 899, 899, 899, 702, 712, 892, 899, 899, 668, 899,
+ /* 150 */ 899, 899, 899, 899, 899, 899, 899, 899, 899, 600,
+ /* 160 */ 598, 899, 700, 899, 899, 626, 899, 899, 710, 899,
+ /* 170 */ 899, 715, 716, 899, 899, 899, 899, 899, 899, 899,
+ /* 180 */ 614, 899, 899, 689, 899, 850, 899, 899, 899, 865,
+ /* 190 */ 899, 899, 899, 863, 899, 899, 899, 691, 751, 831,
+ /* 200 */ 899, 878, 880, 899, 899, 700, 709, 899, 899, 813,
+ /* 210 */ 735, 735, 735, 647, 735, 735, 650, 745, 745, 597,
+ /* 220 */ 597, 597, 597, 667, 899, 745, 736, 738, 728, 740,
+ /* 230 */ 899, 899, 717, 717, 725, 727, 725, 727, 679, 679,
+ /* 240 */ 664, 679, 650, 679, 823, 828, 899, 828, 899, 664,
+ /* 250 */ 679, 679, 679, 823, 609, 717, 609, 717, 609, 717,
+ /* 260 */ 717, 854, 857, 609, 717, 681, 681, 757, 745, 717,
+ /* 270 */ 688, 688, 688, 688, 745, 681, 757, 717, 876, 876,
+ /* 280 */ 717, 717, 885, 634, 652, 652, 860, 892, 897, 899,
+ /* 290 */ 899, 899, 899, 764, 899, 899, 899, 899, 899, 899,
+ /* 300 */ 899, 899, 899, 899, 899, 899, 899, 899, 899, 899,
+ /* 310 */ 837, 899, 899, 899, 899, 769, 765, 899, 766, 899,
+ /* 320 */ 694, 899, 899, 899, 899, 899, 899, 899, 899, 899,
+ /* 330 */ 899, 729, 899, 737, 899, 899, 899, 899, 899, 899,
+ /* 340 */ 899, 899, 899, 899, 899, 899, 899, 899, 899, 899,
+ /* 350 */ 899, 899, 899, 899, 899, 899, 852, 853, 899, 899,
+ /* 360 */ 899, 899, 899, 899, 899, 899, 899, 899, 899, 899,
+ /* 370 */ 899, 899, 899, 899, 899, 899, 899, 899, 899, 899,
+ /* 380 */ 884, 899, 899, 887, 594, 899, 588, 591, 590, 592,
+ /* 390 */ 596, 599, 621, 622, 623, 601, 602, 603, 604, 605,
+ /* 400 */ 606, 607, 613, 615, 633, 635, 619, 637, 698, 699,
+ /* 410 */ 761, 692, 693, 697, 772, 763, 767, 768, 770, 771,
+ /* 420 */ 785, 786, 788, 794, 800, 803, 787, 792, 793, 795,
+ /* 430 */ 799, 802, 695, 696, 806, 620, 627, 628, 631, 632,
+ /* 440 */ 840, 842, 841, 843, 630, 629, 773, 776, 808, 809,
+ /* 450 */ 866, 867, 868, 869, 870, 804, 816, 817, 718, 807,
+ /* 460 */ 791, 730, 733, 734, 731, 701, 711, 720, 721, 722,
+ /* 470 */ 723, 706, 707, 713, 726, 759, 760, 714, 703, 704,
+ /* 480 */ 705, 805, 762, 774, 775, 638, 639, 769, 640, 641,
+ /* 490 */ 642, 680, 683, 684, 685, 643, 662, 665, 666, 644,
+ /* 500 */ 651, 645, 646, 653, 654, 655, 658, 659, 660, 661,
+ /* 510 */ 656, 657, 824, 825, 829, 827, 826, 648, 649, 663,
/* 520 */ 636, 625, 618, 669, 672, 673, 674, 675, 676, 678,
- /* 530 */ 670, 671, 616, 608, 610, 719, 845, 854, 855, 850,
- /* 540 */ 846, 847, 848, 611, 821, 822, 682, 755, 756, 844,
- /* 550 */ 858, 860, 760, 861, 863, 888, 686, 687, 690, 829,
- /* 560 */ 870, 746, 749, 752, 754, 831, 832, 833, 834, 837,
- /* 570 */ 838, 835, 871, 874, 878, 880, 881, 882, 885, 887,
- /* 580 */ 892, 893, 894, 897, 895, 595, 589,
+ /* 530 */ 670, 671, 616, 608, 610, 719, 846, 855, 856, 851,
+ /* 540 */ 847, 848, 849, 611, 820, 821, 682, 753, 754, 845,
+ /* 550 */ 859, 861, 758, 862, 864, 889, 686, 687, 690, 830,
+ /* 560 */ 871, 744, 747, 750, 752, 832, 833, 834, 835, 838,
+ /* 570 */ 839, 836, 872, 875, 879, 881, 882, 883, 886, 888,
+ /* 580 */ 893, 894, 895, 898, 896, 595, 589,
};
#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0]))
@@ -681,6 +685,7 @@ static const YYCODETYPE yyFallback[] = {
0, /* SLASH => nothing */
0, /* REM => nothing */
0, /* CONCAT => nothing */
+ 0, /* COLLATE => nothing */
0, /* UMINUS => nothing */
0, /* UPLUS => nothing */
0, /* BITNOT => nothing */
@@ -693,7 +698,6 @@ static const YYCODETYPE yyFallback[] = {
0, /* UNIQUE => nothing */
0, /* CHECK => nothing */
0, /* REFERENCES => nothing */
- 0, /* COLLATE => nothing */
0, /* AUTOINCR => nothing */
0, /* ON => nothing */
0, /* DELETE => nothing */
@@ -826,10 +830,10 @@ static const char *const yyTokenName[] = {
"LT", "GE", "ESCAPE", "BITAND",
"BITOR", "LSHIFT", "RSHIFT", "PLUS",
"MINUS", "STAR", "SLASH", "REM",
- "CONCAT", "UMINUS", "UPLUS", "BITNOT",
- "STRING", "JOIN_KW", "CONSTRAINT", "DEFAULT",
- "NULL", "PRIMARY", "UNIQUE", "CHECK",
- "REFERENCES", "COLLATE", "AUTOINCR", "ON",
+ "CONCAT", "COLLATE", "UMINUS", "UPLUS",
+ "BITNOT", "STRING", "JOIN_KW", "CONSTRAINT",
+ "DEFAULT", "NULL", "PRIMARY", "UNIQUE",
+ "CHECK", "REFERENCES", "AUTOINCR", "ON",
"DELETE", "UPDATE", "INSERT", "SET",
"DEFERRABLE", "FOREIGN", "DROP", "UNION",
"ALL", "EXCEPT", "INTERSECT", "SELECT",
@@ -858,10 +862,10 @@ static const char *const yyTokenName[] = {
"sclp", "as", "seltablist", "stl_prefix",
"joinop", "on_opt", "using_opt", "seltablist_paren",
"joinop2", "inscollist", "sortlist", "sortitem",
- "collate", "exprlist", "setlist", "insert_cmd",
- "inscollist_opt", "itemlist", "likeop", "escape",
- "between_op", "in_op", "case_operand", "case_exprlist",
- "case_else", "expritem", "uniqueflag", "idxitem",
+ "exprlist", "setlist", "insert_cmd", "inscollist_opt",
+ "itemlist", "likeop", "escape", "between_op",
+ "in_op", "case_operand", "case_exprlist", "case_else",
+ "expritem", "uniqueflag", "idxitem", "collate",
"nmnum", "plus_opt", "number", "trigger_decl",
"trigger_cmd_list", "trigger_time", "trigger_event", "foreach_clause",
"when_clause", "trigger_cmd", "database_kw_opt", "key_opt",
@@ -1017,174 +1021,175 @@ static const char *const yyRuleName[] = {
/* 140 */ "using_opt ::=",
/* 141 */ "orderby_opt ::=",
/* 142 */ "orderby_opt ::= ORDER BY sortlist",
- /* 143 */ "sortlist ::= sortlist COMMA sortitem collate sortorder",
- /* 144 */ "sortlist ::= sortitem collate sortorder",
+ /* 143 */ "sortlist ::= sortlist COMMA sortitem sortorder",
+ /* 144 */ "sortlist ::= sortitem sortorder",
/* 145 */ "sortitem ::= expr",
/* 146 */ "sortorder ::= ASC",
/* 147 */ "sortorder ::= DESC",
/* 148 */ "sortorder ::=",
- /* 149 */ "collate ::=",
- /* 150 */ "collate ::= COLLATE id",
- /* 151 */ "groupby_opt ::=",
- /* 152 */ "groupby_opt ::= GROUP BY exprlist",
- /* 153 */ "having_opt ::=",
- /* 154 */ "having_opt ::= HAVING expr",
- /* 155 */ "limit_opt ::=",
- /* 156 */ "limit_opt ::= LIMIT expr",
- /* 157 */ "limit_opt ::= LIMIT expr OFFSET expr",
- /* 158 */ "limit_opt ::= LIMIT expr COMMA expr",
- /* 159 */ "cmd ::= DELETE FROM fullname where_opt",
- /* 160 */ "where_opt ::=",
- /* 161 */ "where_opt ::= WHERE expr",
- /* 162 */ "cmd ::= UPDATE orconf fullname SET setlist where_opt",
- /* 163 */ "setlist ::= setlist COMMA nm EQ expr",
- /* 164 */ "setlist ::= nm EQ expr",
- /* 165 */ "cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP",
- /* 166 */ "cmd ::= insert_cmd INTO fullname inscollist_opt select",
- /* 167 */ "cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUES",
- /* 168 */ "insert_cmd ::= INSERT orconf",
- /* 169 */ "insert_cmd ::= REPLACE",
- /* 170 */ "itemlist ::= itemlist COMMA expr",
- /* 171 */ "itemlist ::= expr",
- /* 172 */ "inscollist_opt ::=",
- /* 173 */ "inscollist_opt ::= LP inscollist RP",
- /* 174 */ "inscollist ::= inscollist COMMA nm",
- /* 175 */ "inscollist ::= nm",
- /* 176 */ "expr ::= term",
- /* 177 */ "expr ::= LP expr RP",
- /* 178 */ "term ::= NULL",
- /* 179 */ "expr ::= ID",
- /* 180 */ "expr ::= JOIN_KW",
- /* 181 */ "expr ::= nm DOT nm",
- /* 182 */ "expr ::= nm DOT nm DOT nm",
- /* 183 */ "term ::= INTEGER|FLOAT|BLOB",
- /* 184 */ "term ::= STRING",
- /* 185 */ "expr ::= REGISTER",
- /* 186 */ "expr ::= VARIABLE",
- /* 187 */ "expr ::= CAST LP expr AS typetoken RP",
- /* 188 */ "expr ::= ID LP distinct exprlist RP",
- /* 189 */ "expr ::= ID LP STAR RP",
- /* 190 */ "term ::= CTIME_KW",
- /* 191 */ "expr ::= expr AND expr",
- /* 192 */ "expr ::= expr OR expr",
- /* 193 */ "expr ::= expr LT|GT|GE|LE expr",
- /* 194 */ "expr ::= expr EQ|NE expr",
- /* 195 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
- /* 196 */ "expr ::= expr PLUS|MINUS expr",
- /* 197 */ "expr ::= expr STAR|SLASH|REM expr",
- /* 198 */ "expr ::= expr CONCAT expr",
- /* 199 */ "likeop ::= LIKE_KW",
- /* 200 */ "likeop ::= NOT LIKE_KW",
- /* 201 */ "likeop ::= MATCH",
- /* 202 */ "likeop ::= NOT MATCH",
- /* 203 */ "escape ::= ESCAPE expr",
- /* 204 */ "escape ::=",
- /* 205 */ "expr ::= expr likeop expr escape",
- /* 206 */ "expr ::= expr ISNULL|NOTNULL",
- /* 207 */ "expr ::= expr IS NULL",
- /* 208 */ "expr ::= expr NOT NULL",
- /* 209 */ "expr ::= expr IS NOT NULL",
- /* 210 */ "expr ::= NOT|BITNOT expr",
- /* 211 */ "expr ::= MINUS expr",
- /* 212 */ "expr ::= PLUS expr",
- /* 213 */ "between_op ::= BETWEEN",
- /* 214 */ "between_op ::= NOT BETWEEN",
- /* 215 */ "expr ::= expr between_op expr AND expr",
- /* 216 */ "in_op ::= IN",
- /* 217 */ "in_op ::= NOT IN",
- /* 218 */ "expr ::= expr in_op LP exprlist RP",
- /* 219 */ "expr ::= LP select RP",
- /* 220 */ "expr ::= expr in_op LP select RP",
- /* 221 */ "expr ::= expr in_op nm dbnm",
- /* 222 */ "expr ::= EXISTS LP select RP",
- /* 223 */ "expr ::= CASE case_operand case_exprlist case_else END",
- /* 224 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
- /* 225 */ "case_exprlist ::= WHEN expr THEN expr",
- /* 226 */ "case_else ::= ELSE expr",
- /* 227 */ "case_else ::=",
- /* 228 */ "case_operand ::= expr",
- /* 229 */ "case_operand ::=",
- /* 230 */ "exprlist ::= exprlist COMMA expritem",
- /* 231 */ "exprlist ::= expritem",
- /* 232 */ "expritem ::= expr",
- /* 233 */ "expritem ::=",
- /* 234 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP",
- /* 235 */ "uniqueflag ::= UNIQUE",
- /* 236 */ "uniqueflag ::=",
- /* 237 */ "idxlist_opt ::=",
- /* 238 */ "idxlist_opt ::= LP idxlist RP",
- /* 239 */ "idxlist ::= idxlist COMMA idxitem collate sortorder",
- /* 240 */ "idxlist ::= idxitem collate sortorder",
- /* 241 */ "idxitem ::= nm",
- /* 242 */ "cmd ::= DROP INDEX ifexists fullname",
- /* 243 */ "cmd ::= VACUUM",
- /* 244 */ "cmd ::= VACUUM nm",
- /* 245 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
- /* 246 */ "cmd ::= PRAGMA nm dbnm EQ ON",
- /* 247 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
- /* 248 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
- /* 249 */ "cmd ::= PRAGMA nm dbnm",
- /* 250 */ "nmnum ::= plus_num",
- /* 251 */ "nmnum ::= nm",
- /* 252 */ "plus_num ::= plus_opt number",
- /* 253 */ "minus_num ::= MINUS number",
- /* 254 */ "number ::= INTEGER|FLOAT",
- /* 255 */ "plus_opt ::= PLUS",
- /* 256 */ "plus_opt ::=",
- /* 257 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END",
- /* 258 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
- /* 259 */ "trigger_time ::= BEFORE",
- /* 260 */ "trigger_time ::= AFTER",
- /* 261 */ "trigger_time ::= INSTEAD OF",
- /* 262 */ "trigger_time ::=",
- /* 263 */ "trigger_event ::= DELETE|INSERT",
- /* 264 */ "trigger_event ::= UPDATE",
- /* 265 */ "trigger_event ::= UPDATE OF inscollist",
- /* 266 */ "foreach_clause ::=",
- /* 267 */ "foreach_clause ::= FOR EACH ROW",
- /* 268 */ "foreach_clause ::= FOR EACH STATEMENT",
- /* 269 */ "when_clause ::=",
- /* 270 */ "when_clause ::= WHEN expr",
- /* 271 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
- /* 272 */ "trigger_cmd_list ::=",
- /* 273 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt",
- /* 274 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP",
- /* 275 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select",
- /* 276 */ "trigger_cmd ::= DELETE FROM nm where_opt",
- /* 277 */ "trigger_cmd ::= select",
- /* 278 */ "expr ::= RAISE LP IGNORE RP",
- /* 279 */ "expr ::= RAISE LP raisetype COMMA nm RP",
- /* 280 */ "raisetype ::= ROLLBACK",
- /* 281 */ "raisetype ::= ABORT",
- /* 282 */ "raisetype ::= FAIL",
- /* 283 */ "cmd ::= DROP TRIGGER ifexists fullname",
- /* 284 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
- /* 285 */ "key_opt ::=",
- /* 286 */ "key_opt ::= KEY expr",
- /* 287 */ "database_kw_opt ::= DATABASE",
- /* 288 */ "database_kw_opt ::=",
- /* 289 */ "cmd ::= DETACH database_kw_opt expr",
- /* 290 */ "cmd ::= REINDEX",
- /* 291 */ "cmd ::= REINDEX nm dbnm",
- /* 292 */ "cmd ::= ANALYZE",
- /* 293 */ "cmd ::= ANALYZE nm dbnm",
- /* 294 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
- /* 295 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column",
- /* 296 */ "add_column_fullname ::= fullname",
- /* 297 */ "kwcolumn_opt ::=",
- /* 298 */ "kwcolumn_opt ::= COLUMNKW",
- /* 299 */ "cmd ::= create_vtab",
- /* 300 */ "cmd ::= create_vtab LP vtabarglist RP",
- /* 301 */ "create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm",
- /* 302 */ "vtabarglist ::= vtabarg",
- /* 303 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
- /* 304 */ "vtabarg ::=",
- /* 305 */ "vtabarg ::= vtabarg vtabargtoken",
- /* 306 */ "vtabargtoken ::= ANY",
- /* 307 */ "vtabargtoken ::= lp anylist RP",
- /* 308 */ "lp ::= LP",
- /* 309 */ "anylist ::=",
- /* 310 */ "anylist ::= anylist ANY",
+ /* 149 */ "groupby_opt ::=",
+ /* 150 */ "groupby_opt ::= GROUP BY exprlist",
+ /* 151 */ "having_opt ::=",
+ /* 152 */ "having_opt ::= HAVING expr",
+ /* 153 */ "limit_opt ::=",
+ /* 154 */ "limit_opt ::= LIMIT expr",
+ /* 155 */ "limit_opt ::= LIMIT expr OFFSET expr",
+ /* 156 */ "limit_opt ::= LIMIT expr COMMA expr",
+ /* 157 */ "cmd ::= DELETE FROM fullname where_opt",
+ /* 158 */ "where_opt ::=",
+ /* 159 */ "where_opt ::= WHERE expr",
+ /* 160 */ "cmd ::= UPDATE orconf fullname SET setlist where_opt",
+ /* 161 */ "setlist ::= setlist COMMA nm EQ expr",
+ /* 162 */ "setlist ::= nm EQ expr",
+ /* 163 */ "cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP",
+ /* 164 */ "cmd ::= insert_cmd INTO fullname inscollist_opt select",
+ /* 165 */ "cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUES",
+ /* 166 */ "insert_cmd ::= INSERT orconf",
+ /* 167 */ "insert_cmd ::= REPLACE",
+ /* 168 */ "itemlist ::= itemlist COMMA expr",
+ /* 169 */ "itemlist ::= expr",
+ /* 170 */ "inscollist_opt ::=",
+ /* 171 */ "inscollist_opt ::= LP inscollist RP",
+ /* 172 */ "inscollist ::= inscollist COMMA nm",
+ /* 173 */ "inscollist ::= nm",
+ /* 174 */ "expr ::= term",
+ /* 175 */ "expr ::= LP expr RP",
+ /* 176 */ "term ::= NULL",
+ /* 177 */ "expr ::= ID",
+ /* 178 */ "expr ::= JOIN_KW",
+ /* 179 */ "expr ::= nm DOT nm",
+ /* 180 */ "expr ::= nm DOT nm DOT nm",
+ /* 181 */ "term ::= INTEGER|FLOAT|BLOB",
+ /* 182 */ "term ::= STRING",
+ /* 183 */ "expr ::= REGISTER",
+ /* 184 */ "expr ::= VARIABLE",
+ /* 185 */ "expr ::= expr COLLATE id",
+ /* 186 */ "expr ::= CAST LP expr AS typetoken RP",
+ /* 187 */ "expr ::= ID LP distinct exprlist RP",
+ /* 188 */ "expr ::= ID LP STAR RP",
+ /* 189 */ "term ::= CTIME_KW",
+ /* 190 */ "expr ::= expr AND expr",
+ /* 191 */ "expr ::= expr OR expr",
+ /* 192 */ "expr ::= expr LT|GT|GE|LE expr",
+ /* 193 */ "expr ::= expr EQ|NE expr",
+ /* 194 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
+ /* 195 */ "expr ::= expr PLUS|MINUS expr",
+ /* 196 */ "expr ::= expr STAR|SLASH|REM expr",
+ /* 197 */ "expr ::= expr CONCAT expr",
+ /* 198 */ "likeop ::= LIKE_KW",
+ /* 199 */ "likeop ::= NOT LIKE_KW",
+ /* 200 */ "likeop ::= MATCH",
+ /* 201 */ "likeop ::= NOT MATCH",
+ /* 202 */ "escape ::= ESCAPE expr",
+ /* 203 */ "escape ::=",
+ /* 204 */ "expr ::= expr likeop expr escape",
+ /* 205 */ "expr ::= expr ISNULL|NOTNULL",
+ /* 206 */ "expr ::= expr IS NULL",
+ /* 207 */ "expr ::= expr NOT NULL",
+ /* 208 */ "expr ::= expr IS NOT NULL",
+ /* 209 */ "expr ::= NOT|BITNOT expr",
+ /* 210 */ "expr ::= MINUS expr",
+ /* 211 */ "expr ::= PLUS expr",
+ /* 212 */ "between_op ::= BETWEEN",
+ /* 213 */ "between_op ::= NOT BETWEEN",
+ /* 214 */ "expr ::= expr between_op expr AND expr",
+ /* 215 */ "in_op ::= IN",
+ /* 216 */ "in_op ::= NOT IN",
+ /* 217 */ "expr ::= expr in_op LP exprlist RP",
+ /* 218 */ "expr ::= LP select RP",
+ /* 219 */ "expr ::= expr in_op LP select RP",
+ /* 220 */ "expr ::= expr in_op nm dbnm",
+ /* 221 */ "expr ::= EXISTS LP select RP",
+ /* 222 */ "expr ::= CASE case_operand case_exprlist case_else END",
+ /* 223 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
+ /* 224 */ "case_exprlist ::= WHEN expr THEN expr",
+ /* 225 */ "case_else ::= ELSE expr",
+ /* 226 */ "case_else ::=",
+ /* 227 */ "case_operand ::= expr",
+ /* 228 */ "case_operand ::=",
+ /* 229 */ "exprlist ::= exprlist COMMA expritem",
+ /* 230 */ "exprlist ::= expritem",
+ /* 231 */ "expritem ::= expr",
+ /* 232 */ "expritem ::=",
+ /* 233 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP",
+ /* 234 */ "uniqueflag ::= UNIQUE",
+ /* 235 */ "uniqueflag ::=",
+ /* 236 */ "idxlist_opt ::=",
+ /* 237 */ "idxlist_opt ::= LP idxlist RP",
+ /* 238 */ "idxlist ::= idxlist COMMA idxitem collate sortorder",
+ /* 239 */ "idxlist ::= idxitem collate sortorder",
+ /* 240 */ "idxitem ::= nm",
+ /* 241 */ "collate ::=",
+ /* 242 */ "collate ::= COLLATE id",
+ /* 243 */ "cmd ::= DROP INDEX ifexists fullname",
+ /* 244 */ "cmd ::= VACUUM",
+ /* 245 */ "cmd ::= VACUUM nm",
+ /* 246 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
+ /* 247 */ "cmd ::= PRAGMA nm dbnm EQ ON",
+ /* 248 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
+ /* 249 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
+ /* 250 */ "cmd ::= PRAGMA nm dbnm",
+ /* 251 */ "nmnum ::= plus_num",
+ /* 252 */ "nmnum ::= nm",
+ /* 253 */ "plus_num ::= plus_opt number",
+ /* 254 */ "minus_num ::= MINUS number",
+ /* 255 */ "number ::= INTEGER|FLOAT",
+ /* 256 */ "plus_opt ::= PLUS",
+ /* 257 */ "plus_opt ::=",
+ /* 258 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END",
+ /* 259 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
+ /* 260 */ "trigger_time ::= BEFORE",
+ /* 261 */ "trigger_time ::= AFTER",
+ /* 262 */ "trigger_time ::= INSTEAD OF",
+ /* 263 */ "trigger_time ::=",
+ /* 264 */ "trigger_event ::= DELETE|INSERT",
+ /* 265 */ "trigger_event ::= UPDATE",
+ /* 266 */ "trigger_event ::= UPDATE OF inscollist",
+ /* 267 */ "foreach_clause ::=",
+ /* 268 */ "foreach_clause ::= FOR EACH ROW",
+ /* 269 */ "foreach_clause ::= FOR EACH STATEMENT",
+ /* 270 */ "when_clause ::=",
+ /* 271 */ "when_clause ::= WHEN expr",
+ /* 272 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
+ /* 273 */ "trigger_cmd_list ::=",
+ /* 274 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt",
+ /* 275 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP",
+ /* 276 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select",
+ /* 277 */ "trigger_cmd ::= DELETE FROM nm where_opt",
+ /* 278 */ "trigger_cmd ::= select",
+ /* 279 */ "expr ::= RAISE LP IGNORE RP",
+ /* 280 */ "expr ::= RAISE LP raisetype COMMA nm RP",
+ /* 281 */ "raisetype ::= ROLLBACK",
+ /* 282 */ "raisetype ::= ABORT",
+ /* 283 */ "raisetype ::= FAIL",
+ /* 284 */ "cmd ::= DROP TRIGGER ifexists fullname",
+ /* 285 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
+ /* 286 */ "key_opt ::=",
+ /* 287 */ "key_opt ::= KEY expr",
+ /* 288 */ "database_kw_opt ::= DATABASE",
+ /* 289 */ "database_kw_opt ::=",
+ /* 290 */ "cmd ::= DETACH database_kw_opt expr",
+ /* 291 */ "cmd ::= REINDEX",
+ /* 292 */ "cmd ::= REINDEX nm dbnm",
+ /* 293 */ "cmd ::= ANALYZE",
+ /* 294 */ "cmd ::= ANALYZE nm dbnm",
+ /* 295 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
+ /* 296 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column",
+ /* 297 */ "add_column_fullname ::= fullname",
+ /* 298 */ "kwcolumn_opt ::=",
+ /* 299 */ "kwcolumn_opt ::= COLUMNKW",
+ /* 300 */ "cmd ::= create_vtab",
+ /* 301 */ "cmd ::= create_vtab LP vtabarglist RP",
+ /* 302 */ "create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm",
+ /* 303 */ "vtabarglist ::= vtabarg",
+ /* 304 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
+ /* 305 */ "vtabarg ::=",
+ /* 306 */ "vtabarg ::= vtabarg vtabargtoken",
+ /* 307 */ "vtabargtoken ::= ANY",
+ /* 308 */ "vtabargtoken ::= lp anylist RP",
+ /* 309 */ "lp ::= LP",
+ /* 310 */ "anylist ::=",
+ /* 311 */ "anylist ::= anylist ANY",
};
#endif /* NDEBUG */
@@ -1245,9 +1250,9 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
case 156:
case 190:
case 207:
-#line 374 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 375 "parse.y"
{sqlite3SelectDelete((yypminor->yy43));}
-#line 1252 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1257 "parse.c"
break;
case 170:
case 171:
@@ -1255,14 +1260,14 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
case 197:
case 205:
case 211:
- case 219:
- case 222:
+ case 218:
+ case 221:
+ case 223:
case 224:
- case 225:
case 236:
-#line 618 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 616 "parse.y"
{sqlite3ExprDelete((yypminor->yy450));}
-#line 1267 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1272 "parse.c"
break;
case 175:
case 183:
@@ -1271,52 +1276,52 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
case 198:
case 200:
case 210:
+ case 212:
case 213:
- case 214:
- case 217:
- case 223:
-#line 855 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 216:
+ case 222:
+#line 856 "parse.y"
{sqlite3ExprListDelete((yypminor->yy242));}
-#line 1282 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1287 "parse.c"
break;
case 189:
case 194:
case 202:
case 203:
-#line 487 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 488 "parse.y"
{sqlite3SrcListDelete((yypminor->yy419));}
-#line 1290 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1295 "parse.c"
break;
case 199:
-#line 548 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 546 "parse.y"
{
sqlite3ExprDelete((yypminor->yy84).pLimit);
sqlite3ExprDelete((yypminor->yy84).pOffset);
}
-#line 1298 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1303 "parse.c"
break;
case 206:
case 209:
- case 216:
-#line 504 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 215:
+#line 505 "parse.y"
{sqlite3IdListDelete((yypminor->yy352));}
-#line 1305 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1310 "parse.c"
break;
case 232:
case 237:
-#line 952 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 957 "parse.y"
{sqlite3DeleteTriggerStep((yypminor->yy75));}
-#line 1311 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1316 "parse.c"
break;
case 234:
-#line 936 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 941 "parse.y"
{sqlite3IdListDelete((yypminor->yy354).b);}
-#line 1316 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1321 "parse.c"
break;
case 239:
-#line 1020 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 1025 "parse.y"
{sqlite3ExprDelete((yypminor->yy158));}
-#line 1321 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1326 "parse.c"
break;
default: break; /* If no destructor action specified: do nothing */
}
@@ -1480,11 +1485,11 @@ static void yy_shift(
while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
/* Here code is inserted which will execute if the parser
** stack every overflows */
-#line 44 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 44 "parse.y"
sqlite3ErrorMsg(pParse, "parser stack overflow");
pParse->parseError = 1;
-#line 1490 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1495 "parse.c"
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument var */
return;
}
@@ -1654,14 +1659,12 @@ static const struct {
{ 206, 0 },
{ 198, 0 },
{ 198, 3 },
- { 210, 5 },
- { 210, 3 },
+ { 210, 4 },
+ { 210, 2 },
{ 211, 1 },
{ 173, 1 },
{ 173, 1 },
{ 173, 0 },
- { 212, 0 },
- { 212, 2 },
{ 196, 0 },
{ 196, 3 },
{ 197, 0 },
@@ -1674,17 +1677,17 @@ static const struct {
{ 195, 0 },
{ 195, 2 },
{ 144, 6 },
- { 214, 5 },
- { 214, 3 },
+ { 213, 5 },
+ { 213, 3 },
{ 144, 8 },
{ 144, 5 },
{ 144, 6 },
- { 215, 2 },
- { 215, 1 },
- { 217, 3 },
- { 217, 1 },
- { 216, 0 },
+ { 214, 2 },
+ { 214, 1 },
{ 216, 3 },
+ { 216, 1 },
+ { 215, 0 },
+ { 215, 3 },
{ 209, 3 },
{ 209, 1 },
{ 171, 1 },
@@ -1698,6 +1701,7 @@ static const struct {
{ 170, 1 },
{ 171, 1 },
{ 171, 1 },
+ { 171, 3 },
{ 171, 6 },
{ 171, 5 },
{ 171, 4 },
@@ -1710,12 +1714,12 @@ static const struct {
{ 171, 3 },
{ 171, 3 },
{ 171, 3 },
- { 218, 1 },
- { 218, 2 },
- { 218, 1 },
+ { 217, 1 },
+ { 217, 2 },
+ { 217, 1 },
+ { 217, 2 },
{ 218, 2 },
- { 219, 2 },
- { 219, 0 },
+ { 218, 0 },
{ 171, 4 },
{ 171, 2 },
{ 171, 3 },
@@ -1724,35 +1728,37 @@ static const struct {
{ 171, 2 },
{ 171, 2 },
{ 171, 2 },
+ { 219, 1 },
+ { 219, 2 },
+ { 171, 5 },
{ 220, 1 },
{ 220, 2 },
{ 171, 5 },
- { 221, 1 },
- { 221, 2 },
- { 171, 5 },
{ 171, 3 },
{ 171, 5 },
{ 171, 4 },
{ 171, 4 },
{ 171, 5 },
- { 223, 5 },
- { 223, 4 },
- { 224, 2 },
+ { 222, 5 },
+ { 222, 4 },
+ { 223, 2 },
+ { 223, 0 },
+ { 221, 1 },
+ { 221, 0 },
+ { 212, 3 },
+ { 212, 1 },
+ { 224, 1 },
{ 224, 0 },
- { 222, 1 },
- { 222, 0 },
- { 213, 3 },
- { 213, 1 },
+ { 144, 11 },
{ 225, 1 },
{ 225, 0 },
- { 144, 11 },
- { 226, 1 },
- { 226, 0 },
{ 175, 0 },
{ 175, 3 },
{ 183, 5 },
{ 183, 3 },
- { 227, 1 },
+ { 226, 1 },
+ { 227, 0 },
+ { 227, 2 },
{ 144, 4 },
{ 144, 1 },
{ 144, 2 },
@@ -1876,61 +1882,61 @@ static void yy_reduce(
** break;
*/
case 3:
-#line 100 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 100 "parse.y"
{ sqlite3FinishCoding(pParse); }
-#line 1884 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1890 "parse.c"
break;
case 6:
-#line 103 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 103 "parse.y"
{ sqlite3BeginParse(pParse, 0); }
-#line 1889 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1895 "parse.c"
break;
case 7:
-#line 105 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 105 "parse.y"
{ sqlite3BeginParse(pParse, 1); }
-#line 1894 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1900 "parse.c"
break;
case 8:
-#line 106 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 106 "parse.y"
{ sqlite3BeginParse(pParse, 2); }
-#line 1899 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1905 "parse.c"
break;
case 9:
-#line 112 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 112 "parse.y"
{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy316);}
-#line 1904 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1910 "parse.c"
break;
case 13:
-#line 117 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 117 "parse.y"
{yygotominor.yy316 = TK_DEFERRED;}
-#line 1909 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1915 "parse.c"
break;
case 14:
case 15:
case 16:
case 107:
case 109:
-#line 118 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 118 "parse.y"
{yygotominor.yy316 = yymsp[0].major;}
-#line 1918 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1924 "parse.c"
break;
case 17:
case 18:
-#line 121 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 121 "parse.y"
{sqlite3CommitTransaction(pParse);}
-#line 1924 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1930 "parse.c"
break;
case 19:
-#line 123 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 123 "parse.y"
{sqlite3RollbackTransaction(pParse);}
-#line 1929 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1935 "parse.c"
break;
case 21:
-#line 128 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 128 "parse.y"
{
sqlite3StartTable(pParse,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy178,yymsp[-4].minor.yy316,0,0,yymsp[-2].minor.yy316);
}
-#line 1936 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1942 "parse.c"
break;
case 22:
case 25:
@@ -1941,11 +1947,11 @@ static void yy_reduce(
case 101:
case 112:
case 113:
- case 213:
- case 216:
-#line 132 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 212:
+ case 215:
+#line 132 "parse.y"
{yygotominor.yy316 = 0;}
-#line 1951 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1957 "parse.c"
break;
case 23:
case 24:
@@ -1953,215 +1959,215 @@ static void yy_reduce(
case 78:
case 100:
case 111:
- case 214:
- case 217:
-#line 133 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 213:
+ case 216:
+#line 133 "parse.y"
{yygotominor.yy316 = 1;}
-#line 1963 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1969 "parse.c"
break;
case 26:
-#line 139 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 139 "parse.y"
{
sqlite3EndTable(pParse,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy0,0);
}
-#line 1970 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1976 "parse.c"
break;
case 27:
-#line 142 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 142 "parse.y"
{
sqlite3EndTable(pParse,0,0,yymsp[0].minor.yy43);
sqlite3SelectDelete(yymsp[0].minor.yy43);
}
-#line 1978 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1984 "parse.c"
break;
case 30:
-#line 154 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 154 "parse.y"
{
yygotominor.yy178.z = yymsp[-2].minor.yy178.z;
yygotominor.yy178.n = (pParse->sLastToken.z-yymsp[-2].minor.yy178.z) + pParse->sLastToken.n;
}
-#line 1986 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 1992 "parse.c"
break;
case 31:
-#line 158 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 158 "parse.y"
{
sqlite3AddColumn(pParse,&yymsp[0].minor.yy178);
yygotominor.yy178 = yymsp[0].minor.yy178;
}
-#line 1994 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2000 "parse.c"
break;
case 32:
case 33:
case 34:
case 35:
case 36:
- case 254:
-#line 168 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 255:
+#line 168 "parse.y"
{yygotominor.yy178 = yymsp[0].minor.yy0;}
-#line 2004 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2010 "parse.c"
break;
case 38:
-#line 228 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 229 "parse.y"
{sqlite3AddColumnType(pParse,&yymsp[0].minor.yy178);}
-#line 2009 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2015 "parse.c"
break;
case 39:
case 42:
case 119:
case 120:
case 131:
- case 150:
- case 241:
- case 250:
+ case 240:
+ case 242:
case 251:
case 252:
case 253:
-#line 229 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 254:
+#line 230 "parse.y"
{yygotominor.yy178 = yymsp[0].minor.yy178;}
-#line 2024 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2030 "parse.c"
break;
case 40:
-#line 230 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 231 "parse.y"
{
yygotominor.yy178.z = yymsp[-3].minor.yy178.z;
yygotominor.yy178.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy178.z;
}
-#line 2032 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2038 "parse.c"
break;
case 41:
-#line 234 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 235 "parse.y"
{
yygotominor.yy178.z = yymsp[-5].minor.yy178.z;
yygotominor.yy178.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy178.z;
}
-#line 2040 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2046 "parse.c"
break;
case 43:
-#line 240 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 241 "parse.y"
{yygotominor.yy178.z=yymsp[-1].minor.yy178.z; yygotominor.yy178.n=yymsp[0].minor.yy178.n+(yymsp[0].minor.yy178.z-yymsp[-1].minor.yy178.z);}
-#line 2045 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2051 "parse.c"
break;
case 44:
-#line 242 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 243 "parse.y"
{ yygotominor.yy316 = atoi((char*)yymsp[0].minor.yy178.z); }
-#line 2050 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2056 "parse.c"
break;
case 45:
-#line 243 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 244 "parse.y"
{ yygotominor.yy316 = -atoi((char*)yymsp[0].minor.yy178.z); }
-#line 2055 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2061 "parse.c"
break;
case 50:
case 52:
-#line 252 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 253 "parse.y"
{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy450);}
-#line 2061 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2067 "parse.c"
break;
case 51:
-#line 253 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 254 "parse.y"
{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy450);}
-#line 2066 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2072 "parse.c"
break;
case 53:
-#line 255 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 256 "parse.y"
{
Expr *p = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy450, 0, 0);
sqlite3AddDefaultValue(pParse,p);
}
-#line 2074 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2080 "parse.c"
break;
case 54:
-#line 259 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 260 "parse.y"
{
Expr *p = sqlite3Expr(TK_STRING, 0, 0, &yymsp[0].minor.yy178);
sqlite3AddDefaultValue(pParse,p);
}
-#line 2082 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2088 "parse.c"
break;
case 56:
-#line 268 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 269 "parse.y"
{sqlite3AddNotNull(pParse, yymsp[0].minor.yy316);}
-#line 2087 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2093 "parse.c"
break;
case 57:
-#line 270 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 271 "parse.y"
{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy316,yymsp[0].minor.yy316,yymsp[-2].minor.yy316);}
-#line 2092 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2098 "parse.c"
break;
case 58:
-#line 271 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 272 "parse.y"
{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy316,0,0,0,0);}
-#line 2097 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2103 "parse.c"
break;
case 59:
-#line 272 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 273 "parse.y"
{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy450);}
-#line 2102 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2108 "parse.c"
break;
case 60:
-#line 274 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 275 "parse.y"
{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy178,yymsp[-1].minor.yy242,yymsp[0].minor.yy316);}
-#line 2107 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2113 "parse.c"
break;
case 61:
-#line 275 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 276 "parse.y"
{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy316);}
-#line 2112 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2118 "parse.c"
break;
case 62:
-#line 276 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 277 "parse.y"
{sqlite3AddCollateType(pParse, (char*)yymsp[0].minor.yy178.z, yymsp[0].minor.yy178.n);}
-#line 2117 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2123 "parse.c"
break;
case 65:
-#line 289 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 290 "parse.y"
{ yygotominor.yy316 = OE_Restrict * 0x010101; }
-#line 2122 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2128 "parse.c"
break;
case 66:
-#line 290 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 291 "parse.y"
{ yygotominor.yy316 = (yymsp[-1].minor.yy316 & yymsp[0].minor.yy207.mask) | yymsp[0].minor.yy207.value; }
-#line 2127 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2133 "parse.c"
break;
case 67:
-#line 292 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 293 "parse.y"
{ yygotominor.yy207.value = 0; yygotominor.yy207.mask = 0x000000; }
-#line 2132 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2138 "parse.c"
break;
case 68:
-#line 293 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 294 "parse.y"
{ yygotominor.yy207.value = yymsp[0].minor.yy316; yygotominor.yy207.mask = 0x0000ff; }
-#line 2137 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2143 "parse.c"
break;
case 69:
-#line 294 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 295 "parse.y"
{ yygotominor.yy207.value = yymsp[0].minor.yy316<<8; yygotominor.yy207.mask = 0x00ff00; }
-#line 2142 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2148 "parse.c"
break;
case 70:
-#line 295 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 296 "parse.y"
{ yygotominor.yy207.value = yymsp[0].minor.yy316<<16; yygotominor.yy207.mask = 0xff0000; }
-#line 2147 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2153 "parse.c"
break;
case 71:
-#line 297 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 298 "parse.y"
{ yygotominor.yy316 = OE_SetNull; }
-#line 2152 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2158 "parse.c"
break;
case 72:
-#line 298 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 299 "parse.y"
{ yygotominor.yy316 = OE_SetDflt; }
-#line 2157 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2163 "parse.c"
break;
case 73:
-#line 299 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 300 "parse.y"
{ yygotominor.yy316 = OE_Cascade; }
-#line 2162 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2168 "parse.c"
break;
case 74:
-#line 300 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 301 "parse.y"
{ yygotominor.yy316 = OE_Restrict; }
-#line 2167 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2173 "parse.c"
break;
case 75:
case 76:
@@ -2169,98 +2175,98 @@ static void yy_reduce(
case 93:
case 95:
case 96:
- case 168:
-#line 302 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 166:
+#line 303 "parse.y"
{yygotominor.yy316 = yymsp[0].minor.yy316;}
-#line 2178 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2184 "parse.c"
break;
case 80:
-#line 312 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 313 "parse.y"
{yygotominor.yy178.n = 0; yygotominor.yy178.z = 0;}
-#line 2183 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2189 "parse.c"
break;
case 81:
-#line 313 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 314 "parse.y"
{yygotominor.yy178 = yymsp[-1].minor.yy0;}
-#line 2188 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2194 "parse.c"
break;
case 86:
-#line 319 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 320 "parse.y"
{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy242,yymsp[0].minor.yy316,yymsp[-2].minor.yy316,0);}
-#line 2193 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2199 "parse.c"
break;
case 87:
-#line 321 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 322 "parse.y"
{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy242,yymsp[0].minor.yy316,0,0,0,0);}
-#line 2198 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2204 "parse.c"
break;
case 88:
-#line 322 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 323 "parse.y"
{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy450);}
-#line 2203 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2209 "parse.c"
break;
case 89:
-#line 324 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 325 "parse.y"
{
sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy242, &yymsp[-3].minor.yy178, yymsp[-2].minor.yy242, yymsp[-1].minor.yy316);
sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy316);
}
-#line 2211 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2217 "parse.c"
break;
case 92:
case 94:
-#line 338 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 339 "parse.y"
{yygotominor.yy316 = OE_Default;}
-#line 2217 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2223 "parse.c"
break;
case 97:
-#line 343 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 344 "parse.y"
{yygotominor.yy316 = OE_Ignore;}
-#line 2222 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2228 "parse.c"
break;
case 98:
- case 169:
-#line 344 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 167:
+#line 345 "parse.y"
{yygotominor.yy316 = OE_Replace;}
-#line 2228 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2234 "parse.c"
break;
case 99:
-#line 348 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 349 "parse.y"
{
sqlite3DropTable(pParse, yymsp[0].minor.yy419, 0, yymsp[-1].minor.yy316);
}
-#line 2235 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2241 "parse.c"
break;
case 102:
-#line 358 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 359 "parse.y"
{
sqlite3CreateView(pParse, &yymsp[-7].minor.yy0, &yymsp[-3].minor.yy178, &yymsp[-2].minor.yy178, yymsp[0].minor.yy43, yymsp[-6].minor.yy316, yymsp[-4].minor.yy316);
}
-#line 2242 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2248 "parse.c"
break;
case 103:
-#line 361 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 362 "parse.y"
{
sqlite3DropTable(pParse, yymsp[0].minor.yy419, 1, yymsp[-1].minor.yy316);
}
-#line 2249 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2255 "parse.c"
break;
case 104:
-#line 368 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 369 "parse.y"
{
sqlite3Select(pParse, yymsp[0].minor.yy43, SRT_Callback, 0, 0, 0, 0, 0);
sqlite3SelectDelete(yymsp[0].minor.yy43);
}
-#line 2257 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2263 "parse.c"
break;
case 105:
case 128:
-#line 378 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 379 "parse.y"
{yygotominor.yy43 = yymsp[0].minor.yy43;}
-#line 2263 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2269 "parse.c"
break;
case 106:
-#line 380 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 381 "parse.y"
{
if( yymsp[0].minor.yy43 ){
yymsp[0].minor.yy43->op = yymsp[-1].minor.yy316;
@@ -2268,320 +2274,315 @@ static void yy_reduce(
}
yygotominor.yy43 = yymsp[0].minor.yy43;
}
-#line 2274 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2280 "parse.c"
break;
case 108:
-#line 389 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 390 "parse.y"
{yygotominor.yy316 = TK_ALL;}
-#line 2279 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2285 "parse.c"
break;
case 110:
-#line 393 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 394 "parse.y"
{
yygotominor.yy43 = sqlite3SelectNew(yymsp[-6].minor.yy242,yymsp[-5].minor.yy419,yymsp[-4].minor.yy450,yymsp[-3].minor.yy242,yymsp[-2].minor.yy450,yymsp[-1].minor.yy242,yymsp[-7].minor.yy316,yymsp[0].minor.yy84.pLimit,yymsp[0].minor.yy84.pOffset);
}
-#line 2286 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2292 "parse.c"
break;
case 114:
- case 238:
-#line 414 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 237:
+#line 415 "parse.y"
{yygotominor.yy242 = yymsp[-1].minor.yy242;}
-#line 2292 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2298 "parse.c"
break;
case 115:
case 141:
- case 151:
- case 237:
-#line 415 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 149:
+ case 236:
+#line 416 "parse.y"
{yygotominor.yy242 = 0;}
-#line 2300 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2306 "parse.c"
break;
case 116:
-#line 416 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 417 "parse.y"
{
yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-2].minor.yy242,yymsp[-1].minor.yy450,yymsp[0].minor.yy178.n?&yymsp[0].minor.yy178:0);
}
-#line 2307 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2313 "parse.c"
break;
case 117:
-#line 419 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 420 "parse.y"
{
yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-1].minor.yy242, sqlite3Expr(TK_ALL, 0, 0, 0), 0);
}
-#line 2314 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2320 "parse.c"
break;
case 118:
-#line 422 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 423 "parse.y"
{
Expr *pRight = sqlite3Expr(TK_ALL, 0, 0, 0);
Expr *pLeft = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy178);
yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-3].minor.yy242, sqlite3Expr(TK_DOT, pLeft, pRight, 0), 0);
}
-#line 2323 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2329 "parse.c"
break;
case 121:
-#line 434 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 435 "parse.y"
{yygotominor.yy178.n = 0;}
-#line 2328 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2334 "parse.c"
break;
case 122:
-#line 446 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 447 "parse.y"
{yygotominor.yy419 = sqliteMalloc(sizeof(*yygotominor.yy419));}
-#line 2333 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2339 "parse.c"
break;
case 123:
-#line 447 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 448 "parse.y"
{
yygotominor.yy419 = yymsp[0].minor.yy419;
sqlite3SrcListShiftJoinType(yygotominor.yy419);
}
-#line 2341 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2347 "parse.c"
break;
case 124:
-#line 455 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 456 "parse.y"
{
yygotominor.yy419 = yymsp[-1].minor.yy419;
if( yygotominor.yy419 && yygotominor.yy419->nSrc>0 ) yygotominor.yy419->a[yygotominor.yy419->nSrc-1].jointype = yymsp[0].minor.yy316;
}
-#line 2349 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2355 "parse.c"
break;
case 125:
-#line 459 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 460 "parse.y"
{yygotominor.yy419 = 0;}
-#line 2354 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2360 "parse.c"
break;
case 126:
-#line 460 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 461 "parse.y"
{
yygotominor.yy419 = sqlite3SrcListAppendFromTerm(yymsp[-5].minor.yy419,&yymsp[-4].minor.yy178,&yymsp[-3].minor.yy178,&yymsp[-2].minor.yy178,0,yymsp[-1].minor.yy450,yymsp[0].minor.yy352);
}
-#line 2361 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2367 "parse.c"
break;
case 127:
-#line 465 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 466 "parse.y"
{
yygotominor.yy419 = sqlite3SrcListAppendFromTerm(yymsp[-6].minor.yy419,0,0,&yymsp[-2].minor.yy178,yymsp[-4].minor.yy43,yymsp[-1].minor.yy450,yymsp[0].minor.yy352);
}
-#line 2368 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2374 "parse.c"
break;
case 129:
-#line 476 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 477 "parse.y"
{
sqlite3SrcListShiftJoinType(yymsp[0].minor.yy419);
yygotominor.yy43 = sqlite3SelectNew(0,yymsp[0].minor.yy419,0,0,0,0,0,0,0);
}
-#line 2376 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2382 "parse.c"
break;
case 130:
-#line 483 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 484 "parse.y"
{yygotominor.yy178.z=0; yygotominor.yy178.n=0;}
-#line 2381 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2387 "parse.c"
break;
case 132:
-#line 488 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 489 "parse.y"
{yygotominor.yy419 = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy178);}
-#line 2386 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2392 "parse.c"
break;
case 133:
-#line 492 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 493 "parse.y"
{ yygotominor.yy316 = JT_INNER; }
-#line 2391 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2397 "parse.c"
break;
case 134:
-#line 493 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 494 "parse.y"
{ yygotominor.yy316 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
-#line 2396 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2402 "parse.c"
break;
case 135:
-#line 494 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 495 "parse.y"
{ yygotominor.yy316 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy178,0); }
-#line 2401 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2407 "parse.c"
break;
case 136:
-#line 496 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 497 "parse.y"
{ yygotominor.yy316 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy178,&yymsp[-1].minor.yy178); }
-#line 2406 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2412 "parse.c"
break;
case 137:
case 145:
- case 154:
- case 161:
- case 176:
+ case 152:
+ case 159:
+ case 174:
+ case 202:
+ case 225:
+ case 227:
+ case 231:
+#line 501 "parse.y"
+{yygotominor.yy450 = yymsp[0].minor.yy450;}
+#line 2425 "parse.c"
+ break;
+ case 138:
+ case 151:
+ case 158:
case 203:
case 226:
case 228:
case 232:
-#line 500 "ext/pdo_sqlite/sqlite/src/parse.y"
-{yygotominor.yy450 = yymsp[0].minor.yy450;}
-#line 2419 "ext/pdo_sqlite/sqlite/src/parse.c"
- break;
- case 138:
- case 153:
- case 160:
- case 204:
- case 227:
- case 229:
- case 233:
-#line 501 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 502 "parse.y"
{yygotominor.yy450 = 0;}
-#line 2430 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2436 "parse.c"
break;
case 139:
- case 173:
-#line 505 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 171:
+#line 506 "parse.y"
{yygotominor.yy352 = yymsp[-1].minor.yy352;}
-#line 2436 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2442 "parse.c"
break;
case 140:
- case 172:
-#line 506 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 170:
+#line 507 "parse.y"
{yygotominor.yy352 = 0;}
-#line 2442 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2448 "parse.c"
break;
case 142:
- case 152:
-#line 517 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 150:
+#line 518 "parse.y"
{yygotominor.yy242 = yymsp[0].minor.yy242;}
-#line 2448 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2454 "parse.c"
break;
case 143:
-#line 518 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 519 "parse.y"
{
- yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-4].minor.yy242,yymsp[-2].minor.yy450,yymsp[-1].minor.yy178.n>0?&yymsp[-1].minor.yy178:0);
+ yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-3].minor.yy242,yymsp[-1].minor.yy450,0);
if( yygotominor.yy242 ) yygotominor.yy242->a[yygotominor.yy242->nExpr-1].sortOrder = yymsp[0].minor.yy316;
}
-#line 2456 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2462 "parse.c"
break;
case 144:
-#line 522 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 523 "parse.y"
{
- yygotominor.yy242 = sqlite3ExprListAppend(0,yymsp[-2].minor.yy450,yymsp[-1].minor.yy178.n>0?&yymsp[-1].minor.yy178:0);
+ yygotominor.yy242 = sqlite3ExprListAppend(0,yymsp[-1].minor.yy450,0);
if( yygotominor.yy242 && yygotominor.yy242->a ) yygotominor.yy242->a[0].sortOrder = yymsp[0].minor.yy316;
}
-#line 2464 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2470 "parse.c"
break;
case 146:
case 148:
-#line 531 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 531 "parse.y"
{yygotominor.yy316 = SQLITE_SO_ASC;}
-#line 2470 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2476 "parse.c"
break;
case 147:
-#line 532 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 532 "parse.y"
{yygotominor.yy316 = SQLITE_SO_DESC;}
-#line 2475 "ext/pdo_sqlite/sqlite/src/parse.c"
- break;
- case 149:
-#line 534 "ext/pdo_sqlite/sqlite/src/parse.y"
-{yygotominor.yy178.z = 0; yygotominor.yy178.n = 0;}
-#line 2480 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2481 "parse.c"
break;
- case 155:
-#line 552 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 153:
+#line 550 "parse.y"
{yygotominor.yy84.pLimit = 0; yygotominor.yy84.pOffset = 0;}
-#line 2485 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2486 "parse.c"
break;
- case 156:
-#line 553 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 154:
+#line 551 "parse.y"
{yygotominor.yy84.pLimit = yymsp[0].minor.yy450; yygotominor.yy84.pOffset = 0;}
-#line 2490 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2491 "parse.c"
break;
- case 157:
-#line 555 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 155:
+#line 553 "parse.y"
{yygotominor.yy84.pLimit = yymsp[-2].minor.yy450; yygotominor.yy84.pOffset = yymsp[0].minor.yy450;}
-#line 2495 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2496 "parse.c"
break;
- case 158:
-#line 557 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 156:
+#line 555 "parse.y"
{yygotominor.yy84.pOffset = yymsp[-2].minor.yy450; yygotominor.yy84.pLimit = yymsp[0].minor.yy450;}
-#line 2500 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2501 "parse.c"
break;
- case 159:
-#line 561 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 157:
+#line 559 "parse.y"
{sqlite3DeleteFrom(pParse,yymsp[-1].minor.yy419,yymsp[0].minor.yy450);}
-#line 2505 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2506 "parse.c"
break;
- case 162:
-#line 572 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 160:
+#line 570 "parse.y"
{sqlite3Update(pParse,yymsp[-3].minor.yy419,yymsp[-1].minor.yy242,yymsp[0].minor.yy450,yymsp[-4].minor.yy316);}
-#line 2510 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2511 "parse.c"
break;
- case 163:
-#line 578 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 161:
+#line 576 "parse.y"
{yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-4].minor.yy242,yymsp[0].minor.yy450,&yymsp[-2].minor.yy178);}
-#line 2515 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2516 "parse.c"
break;
- case 164:
-#line 579 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 162:
+#line 577 "parse.y"
{yygotominor.yy242 = sqlite3ExprListAppend(0,yymsp[0].minor.yy450,&yymsp[-2].minor.yy178);}
-#line 2520 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2521 "parse.c"
break;
- case 165:
-#line 585 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 163:
+#line 583 "parse.y"
{sqlite3Insert(pParse, yymsp[-5].minor.yy419, yymsp[-1].minor.yy242, 0, yymsp[-4].minor.yy352, yymsp[-7].minor.yy316);}
-#line 2525 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2526 "parse.c"
break;
- case 166:
-#line 587 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 164:
+#line 585 "parse.y"
{sqlite3Insert(pParse, yymsp[-2].minor.yy419, 0, yymsp[0].minor.yy43, yymsp[-1].minor.yy352, yymsp[-4].minor.yy316);}
-#line 2530 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2531 "parse.c"
break;
- case 167:
-#line 589 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 165:
+#line 587 "parse.y"
{sqlite3Insert(pParse, yymsp[-3].minor.yy419, 0, 0, yymsp[-2].minor.yy352, yymsp[-5].minor.yy316);}
-#line 2535 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2536 "parse.c"
break;
- case 170:
- case 230:
-#line 599 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 168:
+ case 229:
+#line 597 "parse.y"
{yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-2].minor.yy242,yymsp[0].minor.yy450,0);}
-#line 2541 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2542 "parse.c"
break;
- case 171:
- case 231:
-#line 600 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 169:
+ case 230:
+#line 598 "parse.y"
{yygotominor.yy242 = sqlite3ExprListAppend(0,yymsp[0].minor.yy450,0);}
-#line 2547 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2548 "parse.c"
break;
- case 174:
-#line 609 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 172:
+#line 607 "parse.y"
{yygotominor.yy352 = sqlite3IdListAppend(yymsp[-2].minor.yy352,&yymsp[0].minor.yy178);}
-#line 2552 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2553 "parse.c"
break;
- case 175:
-#line 610 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 173:
+#line 608 "parse.y"
{yygotominor.yy352 = sqlite3IdListAppend(0,&yymsp[0].minor.yy178);}
-#line 2557 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2558 "parse.c"
break;
- case 177:
-#line 621 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 175:
+#line 619 "parse.y"
{yygotominor.yy450 = yymsp[-1].minor.yy450; sqlite3ExprSpan(yygotominor.yy450,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); }
-#line 2562 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2563 "parse.c"
break;
- case 178:
- case 183:
- case 184:
-#line 622 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 176:
+ case 181:
+ case 182:
+#line 620 "parse.y"
{yygotominor.yy450 = sqlite3Expr(yymsp[0].major, 0, 0, &yymsp[0].minor.yy0);}
-#line 2569 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2570 "parse.c"
break;
- case 179:
- case 180:
-#line 623 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 177:
+ case 178:
+#line 621 "parse.y"
{yygotominor.yy450 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy0);}
-#line 2575 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2576 "parse.c"
break;
- case 181:
-#line 625 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 179:
+#line 623 "parse.y"
{
Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy178);
Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy178);
yygotominor.yy450 = sqlite3Expr(TK_DOT, temp1, temp2, 0);
}
-#line 2584 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2585 "parse.c"
break;
- case 182:
-#line 630 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 180:
+#line 628 "parse.y"
{
Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-4].minor.yy178);
Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy178);
@@ -2589,32 +2590,39 @@ static void yy_reduce(
Expr *temp4 = sqlite3Expr(TK_DOT, temp2, temp3, 0);
yygotominor.yy450 = sqlite3Expr(TK_DOT, temp1, temp4, 0);
}
-#line 2595 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2596 "parse.c"
break;
- case 185:
-#line 639 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 183:
+#line 637 "parse.y"
{yygotominor.yy450 = sqlite3RegisterExpr(pParse, &yymsp[0].minor.yy0);}
-#line 2600 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2601 "parse.c"
break;
- case 186:
-#line 640 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 184:
+#line 638 "parse.y"
{
Token *pToken = &yymsp[0].minor.yy0;
Expr *pExpr = yygotominor.yy450 = sqlite3Expr(TK_VARIABLE, 0, 0, pToken);
sqlite3ExprAssignVarNumber(pParse, pExpr);
}
-#line 2609 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2610 "parse.c"
break;
- case 187:
-#line 646 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 185:
+#line 643 "parse.y"
+{
+ yygotominor.yy450 = sqlite3ExprSetColl(pParse, yymsp[-2].minor.yy450, &yymsp[0].minor.yy178);
+}
+#line 2617 "parse.c"
+ break;
+ case 186:
+#line 647 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_CAST, yymsp[-3].minor.yy450, 0, &yymsp[-1].minor.yy178);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0);
}
-#line 2617 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2625 "parse.c"
break;
- case 188:
-#line 651 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 187:
+#line 652 "parse.y"
{
yygotominor.yy450 = sqlite3ExprFunction(yymsp[-1].minor.yy242, &yymsp[-4].minor.yy0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0);
@@ -2622,18 +2630,18 @@ static void yy_reduce(
yygotominor.yy450->flags |= EP_Distinct;
}
}
-#line 2628 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2636 "parse.c"
break;
- case 189:
-#line 658 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 188:
+#line 659 "parse.y"
{
yygotominor.yy450 = sqlite3ExprFunction(0, &yymsp[-3].minor.yy0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
}
-#line 2636 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2644 "parse.c"
break;
- case 190:
-#line 662 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 189:
+#line 663 "parse.y"
{
/* The CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP values are
** treated as functions that return constants */
@@ -2643,8 +2651,9 @@ static void yy_reduce(
yygotominor.yy450->span = yymsp[0].minor.yy0;
}
}
-#line 2649 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2657 "parse.c"
break;
+ case 190:
case 191:
case 192:
case 193:
@@ -2652,25 +2661,24 @@ static void yy_reduce(
case 195:
case 196:
case 197:
- case 198:
-#line 671 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 672 "parse.y"
{yygotominor.yy450 = sqlite3Expr(yymsp[-1].major, yymsp[-2].minor.yy450, yymsp[0].minor.yy450, 0);}
-#line 2661 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2669 "parse.c"
break;
- case 199:
- case 201:
-#line 681 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 198:
+ case 200:
+#line 682 "parse.y"
{yygotominor.yy86.eOperator = yymsp[0].minor.yy0; yygotominor.yy86.not = 0;}
-#line 2667 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2675 "parse.c"
break;
- case 200:
- case 202:
-#line 682 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 199:
+ case 201:
+#line 683 "parse.y"
{yygotominor.yy86.eOperator = yymsp[0].minor.yy0; yygotominor.yy86.not = 1;}
-#line 2673 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2681 "parse.c"
break;
- case 205:
-#line 689 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 204:
+#line 690 "parse.y"
{
ExprList *pList;
pList = sqlite3ExprListAppend(0, yymsp[-1].minor.yy450, 0);
@@ -2683,66 +2691,66 @@ static void yy_reduce(
sqlite3ExprSpan(yygotominor.yy450, &yymsp[-3].minor.yy450->span, &yymsp[-1].minor.yy450->span);
if( yygotominor.yy450 ) yygotominor.yy450->flags |= EP_InfixFunc;
}
-#line 2689 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2697 "parse.c"
break;
- case 206:
-#line 702 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 205:
+#line 703 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(yymsp[0].major, yymsp[-1].minor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-1].minor.yy450->span,&yymsp[0].minor.yy0);
}
-#line 2697 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2705 "parse.c"
break;
- case 207:
-#line 706 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 206:
+#line 707 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_ISNULL, yymsp[-2].minor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-2].minor.yy450->span,&yymsp[0].minor.yy0);
}
-#line 2705 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2713 "parse.c"
break;
- case 208:
-#line 710 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 207:
+#line 711 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_NOTNULL, yymsp[-2].minor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-2].minor.yy450->span,&yymsp[0].minor.yy0);
}
-#line 2713 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2721 "parse.c"
break;
- case 209:
-#line 714 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 208:
+#line 715 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_NOTNULL, yymsp[-3].minor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-3].minor.yy450->span,&yymsp[0].minor.yy0);
}
-#line 2721 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2729 "parse.c"
break;
- case 210:
-#line 718 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 209:
+#line 719 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(yymsp[-1].major, yymsp[0].minor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy450->span);
}
-#line 2729 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2737 "parse.c"
break;
- case 211:
-#line 722 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 210:
+#line 723 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy450->span);
}
-#line 2737 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2745 "parse.c"
break;
- case 212:
-#line 726 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 211:
+#line 727 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_UPLUS, yymsp[0].minor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy450->span);
}
-#line 2745 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2753 "parse.c"
break;
- case 215:
-#line 733 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 214:
+#line 734 "parse.y"
{
ExprList *pList = sqlite3ExprListAppend(0, yymsp[-2].minor.yy450, 0);
pList = sqlite3ExprListAppend(pList, yymsp[0].minor.yy450, 0);
@@ -2755,10 +2763,10 @@ static void yy_reduce(
if( yymsp[-3].minor.yy316 ) yygotominor.yy450 = sqlite3Expr(TK_NOT, yygotominor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-4].minor.yy450->span,&yymsp[0].minor.yy450->span);
}
-#line 2761 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2769 "parse.c"
break;
- case 218:
-#line 749 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 217:
+#line 750 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy450, 0, 0);
if( yygotominor.yy450 ){
@@ -2769,10 +2777,10 @@ static void yy_reduce(
if( yymsp[-3].minor.yy316 ) yygotominor.yy450 = sqlite3Expr(TK_NOT, yygotominor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-4].minor.yy450->span,&yymsp[0].minor.yy0);
}
-#line 2775 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2783 "parse.c"
break;
- case 219:
-#line 759 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 218:
+#line 760 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_SELECT, 0, 0, 0);
if( yygotominor.yy450 ){
@@ -2782,10 +2790,10 @@ static void yy_reduce(
}
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
}
-#line 2788 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2796 "parse.c"
break;
- case 220:
-#line 768 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 219:
+#line 769 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy450, 0, 0);
if( yygotominor.yy450 ){
@@ -2796,10 +2804,10 @@ static void yy_reduce(
if( yymsp[-3].minor.yy316 ) yygotominor.yy450 = sqlite3Expr(TK_NOT, yygotominor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-4].minor.yy450->span,&yymsp[0].minor.yy0);
}
-#line 2802 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2810 "parse.c"
break;
- case 221:
-#line 778 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 220:
+#line 779 "parse.y"
{
SrcList *pSrc = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy178);
yygotominor.yy450 = sqlite3Expr(TK_IN, yymsp[-3].minor.yy450, 0, 0);
@@ -2811,10 +2819,10 @@ static void yy_reduce(
if( yymsp[-2].minor.yy316 ) yygotominor.yy450 = sqlite3Expr(TK_NOT, yygotominor.yy450, 0, 0);
sqlite3ExprSpan(yygotominor.yy450,&yymsp[-3].minor.yy450->span,yymsp[0].minor.yy178.z?&yymsp[0].minor.yy178:&yymsp[-1].minor.yy178);
}
-#line 2817 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2825 "parse.c"
break;
- case 222:
-#line 789 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 221:
+#line 790 "parse.y"
{
Expr *p = yygotominor.yy450 = sqlite3Expr(TK_EXISTS, 0, 0, 0);
if( p ){
@@ -2824,10 +2832,10 @@ static void yy_reduce(
sqlite3SelectDelete(yymsp[-1].minor.yy43);
}
}
-#line 2830 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2838 "parse.c"
break;
- case 223:
-#line 801 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 222:
+#line 802 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_CASE, yymsp[-3].minor.yy450, yymsp[-1].minor.yy450, 0);
if( yygotominor.yy450 ){
@@ -2837,45 +2845,45 @@ static void yy_reduce(
}
sqlite3ExprSpan(yygotominor.yy450, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0);
}
-#line 2843 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2851 "parse.c"
break;
- case 224:
-#line 812 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 223:
+#line 813 "parse.y"
{
yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-4].minor.yy242, yymsp[-2].minor.yy450, 0);
yygotominor.yy242 = sqlite3ExprListAppend(yygotominor.yy242, yymsp[0].minor.yy450, 0);
}
-#line 2851 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2859 "parse.c"
break;
- case 225:
-#line 816 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 224:
+#line 817 "parse.y"
{
yygotominor.yy242 = sqlite3ExprListAppend(0, yymsp[-2].minor.yy450, 0);
yygotominor.yy242 = sqlite3ExprListAppend(yygotominor.yy242, yymsp[0].minor.yy450, 0);
}
-#line 2859 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2867 "parse.c"
break;
- case 234:
-#line 843 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 233:
+#line 844 "parse.y"
{
sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy178, &yymsp[-5].minor.yy178, sqlite3SrcListAppend(0,&yymsp[-3].minor.yy178,0), yymsp[-1].minor.yy242, yymsp[-9].minor.yy316,
&yymsp[-10].minor.yy0, &yymsp[0].minor.yy0, SQLITE_SO_ASC, yymsp[-7].minor.yy316);
}
-#line 2867 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2875 "parse.c"
break;
- case 235:
- case 281:
-#line 849 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 234:
+ case 282:
+#line 850 "parse.y"
{yygotominor.yy316 = OE_Abort;}
-#line 2873 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2881 "parse.c"
break;
- case 236:
-#line 850 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 235:
+#line 851 "parse.y"
{yygotominor.yy316 = OE_None;}
-#line 2878 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2886 "parse.c"
break;
- case 239:
-#line 860 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 238:
+#line 861 "parse.y"
{
Expr *p = 0;
if( yymsp[-1].minor.yy178.n>0 ){
@@ -2885,10 +2893,10 @@ static void yy_reduce(
yygotominor.yy242 = sqlite3ExprListAppend(yymsp[-4].minor.yy242, p, &yymsp[-2].minor.yy178);
if( yygotominor.yy242 ) yygotominor.yy242->a[yygotominor.yy242->nExpr-1].sortOrder = yymsp[0].minor.yy316;
}
-#line 2891 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2899 "parse.c"
break;
- case 240:
-#line 869 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 239:
+#line 870 "parse.y"
{
Expr *p = 0;
if( yymsp[-1].minor.yy178.n>0 ){
@@ -2898,114 +2906,119 @@ static void yy_reduce(
yygotominor.yy242 = sqlite3ExprListAppend(0, p, &yymsp[-2].minor.yy178);
if( yygotominor.yy242 ) yygotominor.yy242->a[yygotominor.yy242->nExpr-1].sortOrder = yymsp[0].minor.yy316;
}
-#line 2904 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2912 "parse.c"
break;
- case 242:
-#line 883 "ext/pdo_sqlite/sqlite/src/parse.y"
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy419, yymsp[-1].minor.yy316);}
-#line 2909 "ext/pdo_sqlite/sqlite/src/parse.c"
+ case 241:
+#line 882 "parse.y"
+{yygotominor.yy178.z = 0; yygotominor.yy178.n = 0;}
+#line 2917 "parse.c"
break;
case 243:
+#line 888 "parse.y"
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy419, yymsp[-1].minor.yy316);}
+#line 2922 "parse.c"
+ break;
case 244:
-#line 888 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 245:
+#line 893 "parse.y"
{sqlite3Vacuum(pParse);}
-#line 2915 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2928 "parse.c"
break;
- case 245:
-#line 895 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 246:
+#line 900 "parse.y"
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy178,&yymsp[-2].minor.yy178,&yymsp[0].minor.yy178,0);}
-#line 2920 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2933 "parse.c"
break;
- case 246:
-#line 896 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 247:
+#line 901 "parse.y"
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy178,&yymsp[-2].minor.yy178,&yymsp[0].minor.yy0,0);}
-#line 2925 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2938 "parse.c"
break;
- case 247:
-#line 897 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 248:
+#line 902 "parse.y"
{
sqlite3Pragma(pParse,&yymsp[-3].minor.yy178,&yymsp[-2].minor.yy178,&yymsp[0].minor.yy178,1);
}
-#line 2932 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2945 "parse.c"
break;
- case 248:
-#line 900 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 249:
+#line 905 "parse.y"
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy178,&yymsp[-3].minor.yy178,&yymsp[-1].minor.yy178,0);}
-#line 2937 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2950 "parse.c"
break;
- case 249:
-#line 901 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 250:
+#line 906 "parse.y"
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy178,&yymsp[0].minor.yy178,0,0);}
-#line 2942 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2955 "parse.c"
break;
- case 257:
-#line 915 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 258:
+#line 920 "parse.y"
{
Token all;
all.z = yymsp[-3].minor.yy178.z;
all.n = (yymsp[0].minor.yy0.z - yymsp[-3].minor.yy178.z) + yymsp[0].minor.yy0.n;
sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy75, &all);
}
-#line 2952 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2965 "parse.c"
break;
- case 258:
-#line 924 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 259:
+#line 929 "parse.y"
{
sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy178, &yymsp[-6].minor.yy178, yymsp[-5].minor.yy316, yymsp[-4].minor.yy354.a, yymsp[-4].minor.yy354.b, yymsp[-2].minor.yy419, yymsp[-1].minor.yy316, yymsp[0].minor.yy450, yymsp[-10].minor.yy316, yymsp[-8].minor.yy316);
yygotominor.yy178 = (yymsp[-6].minor.yy178.n==0?yymsp[-7].minor.yy178:yymsp[-6].minor.yy178);
}
-#line 2960 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2973 "parse.c"
break;
- case 259:
- case 262:
-#line 930 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 260:
+ case 263:
+#line 935 "parse.y"
{ yygotominor.yy316 = TK_BEFORE; }
-#line 2966 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2979 "parse.c"
break;
- case 260:
-#line 931 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 261:
+#line 936 "parse.y"
{ yygotominor.yy316 = TK_AFTER; }
-#line 2971 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2984 "parse.c"
break;
- case 261:
-#line 932 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 262:
+#line 937 "parse.y"
{ yygotominor.yy316 = TK_INSTEAD;}
-#line 2976 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2989 "parse.c"
break;
- case 263:
case 264:
-#line 937 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 265:
+#line 942 "parse.y"
{yygotominor.yy354.a = yymsp[0].major; yygotominor.yy354.b = 0;}
-#line 2982 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 2995 "parse.c"
break;
- case 265:
-#line 939 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 266:
+#line 944 "parse.y"
{yygotominor.yy354.a = TK_UPDATE; yygotominor.yy354.b = yymsp[0].minor.yy352;}
-#line 2987 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3000 "parse.c"
break;
- case 266:
case 267:
-#line 942 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 268:
+#line 947 "parse.y"
{ yygotominor.yy316 = TK_ROW; }
-#line 2993 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3006 "parse.c"
break;
- case 268:
-#line 944 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 269:
+#line 949 "parse.y"
{ yygotominor.yy316 = TK_STATEMENT; }
-#line 2998 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3011 "parse.c"
break;
- case 269:
-#line 948 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 270:
+#line 953 "parse.y"
{ yygotominor.yy450 = 0; }
-#line 3003 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3016 "parse.c"
break;
- case 270:
-#line 949 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 271:
+#line 954 "parse.y"
{ yygotominor.yy450 = yymsp[0].minor.yy450; }
-#line 3008 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3021 "parse.c"
break;
- case 271:
-#line 953 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 272:
+#line 958 "parse.y"
{
if( yymsp[-2].minor.yy75 ){
yymsp[-2].minor.yy75->pLast->pNext = yymsp[-1].minor.yy75;
@@ -3015,40 +3028,40 @@ static void yy_reduce(
yymsp[-2].minor.yy75->pLast = yymsp[-1].minor.yy75;
yygotominor.yy75 = yymsp[-2].minor.yy75;
}
-#line 3021 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3034 "parse.c"
break;
- case 272:
-#line 962 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 273:
+#line 967 "parse.y"
{ yygotominor.yy75 = 0; }
-#line 3026 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3039 "parse.c"
break;
- case 273:
-#line 968 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 274:
+#line 973 "parse.y"
{ yygotominor.yy75 = sqlite3TriggerUpdateStep(&yymsp[-3].minor.yy178, yymsp[-1].minor.yy242, yymsp[0].minor.yy450, yymsp[-4].minor.yy316); }
-#line 3031 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3044 "parse.c"
break;
- case 274:
-#line 973 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 275:
+#line 978 "parse.y"
{yygotominor.yy75 = sqlite3TriggerInsertStep(&yymsp[-5].minor.yy178, yymsp[-4].minor.yy352, yymsp[-1].minor.yy242, 0, yymsp[-7].minor.yy316);}
-#line 3036 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3049 "parse.c"
break;
- case 275:
-#line 976 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 276:
+#line 981 "parse.y"
{yygotominor.yy75 = sqlite3TriggerInsertStep(&yymsp[-2].minor.yy178, yymsp[-1].minor.yy352, 0, yymsp[0].minor.yy43, yymsp[-4].minor.yy316);}
-#line 3041 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3054 "parse.c"
break;
- case 276:
-#line 980 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 277:
+#line 985 "parse.y"
{yygotominor.yy75 = sqlite3TriggerDeleteStep(&yymsp[-1].minor.yy178, yymsp[0].minor.yy450);}
-#line 3046 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3059 "parse.c"
break;
- case 277:
-#line 983 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 278:
+#line 988 "parse.y"
{yygotominor.yy75 = sqlite3TriggerSelectStep(yymsp[0].minor.yy43); }
-#line 3051 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3064 "parse.c"
break;
- case 278:
-#line 986 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 279:
+#line 991 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_RAISE, 0, 0, 0);
if( yygotominor.yy450 ){
@@ -3056,10 +3069,10 @@ static void yy_reduce(
sqlite3ExprSpan(yygotominor.yy450, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
}
}
-#line 3062 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3075 "parse.c"
break;
- case 279:
-#line 993 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 280:
+#line 998 "parse.y"
{
yygotominor.yy450 = sqlite3Expr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy178);
if( yygotominor.yy450 ) {
@@ -3067,119 +3080,119 @@ static void yy_reduce(
sqlite3ExprSpan(yygotominor.yy450, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
}
}
-#line 3073 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3086 "parse.c"
break;
- case 280:
-#line 1003 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 281:
+#line 1008 "parse.y"
{yygotominor.yy316 = OE_Rollback;}
-#line 3078 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3091 "parse.c"
break;
- case 282:
-#line 1005 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 283:
+#line 1010 "parse.y"
{yygotominor.yy316 = OE_Fail;}
-#line 3083 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3096 "parse.c"
break;
- case 283:
-#line 1010 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 284:
+#line 1015 "parse.y"
{
sqlite3DropTrigger(pParse,yymsp[0].minor.yy419,yymsp[-1].minor.yy316);
}
-#line 3090 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3103 "parse.c"
break;
- case 284:
-#line 1016 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 285:
+#line 1021 "parse.y"
{
sqlite3Attach(pParse, yymsp[-3].minor.yy450, yymsp[-1].minor.yy450, yymsp[0].minor.yy158);
}
-#line 3097 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3110 "parse.c"
break;
- case 285:
-#line 1021 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 286:
+#line 1026 "parse.y"
{ yygotominor.yy158 = 0; }
-#line 3102 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3115 "parse.c"
break;
- case 286:
-#line 1022 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 287:
+#line 1027 "parse.y"
{ yygotominor.yy158 = yymsp[0].minor.yy450; }
-#line 3107 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3120 "parse.c"
break;
- case 289:
-#line 1028 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 290:
+#line 1033 "parse.y"
{
sqlite3Detach(pParse, yymsp[0].minor.yy450);
}
-#line 3114 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3127 "parse.c"
break;
- case 290:
-#line 1034 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 291:
+#line 1039 "parse.y"
{sqlite3Reindex(pParse, 0, 0);}
-#line 3119 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3132 "parse.c"
break;
- case 291:
-#line 1035 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 292:
+#line 1040 "parse.y"
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy178, &yymsp[0].minor.yy178);}
-#line 3124 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3137 "parse.c"
break;
- case 292:
-#line 1040 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 293:
+#line 1045 "parse.y"
{sqlite3Analyze(pParse, 0, 0);}
-#line 3129 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3142 "parse.c"
break;
- case 293:
-#line 1041 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 294:
+#line 1046 "parse.y"
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy178, &yymsp[0].minor.yy178);}
-#line 3134 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3147 "parse.c"
break;
- case 294:
-#line 1046 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 295:
+#line 1051 "parse.y"
{
sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy419,&yymsp[0].minor.yy178);
}
-#line 3141 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3154 "parse.c"
break;
- case 295:
-#line 1049 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 296:
+#line 1054 "parse.y"
{
sqlite3AlterFinishAddColumn(pParse, &yymsp[0].minor.yy178);
}
-#line 3148 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3161 "parse.c"
break;
- case 296:
-#line 1052 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 297:
+#line 1057 "parse.y"
{
sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy419);
}
-#line 3155 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3168 "parse.c"
break;
- case 299:
-#line 1061 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 300:
+#line 1066 "parse.y"
{sqlite3VtabFinishParse(pParse,0);}
-#line 3160 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3173 "parse.c"
break;
- case 300:
-#line 1062 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 301:
+#line 1067 "parse.y"
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
-#line 3165 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3178 "parse.c"
break;
- case 301:
-#line 1063 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 302:
+#line 1068 "parse.y"
{
sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy178, &yymsp[-2].minor.yy178, &yymsp[0].minor.yy178);
}
-#line 3172 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3185 "parse.c"
break;
- case 304:
-#line 1068 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 305:
+#line 1073 "parse.y"
{sqlite3VtabArgInit(pParse);}
-#line 3177 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3190 "parse.c"
break;
- case 306:
case 307:
case 308:
- case 310:
-#line 1070 "ext/pdo_sqlite/sqlite/src/parse.y"
+ case 309:
+ case 311:
+#line 1075 "parse.y"
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
-#line 3185 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3198 "parse.c"
break;
};
yygoto = yyRuleInfo[yyruleno].lhs;
@@ -3236,7 +3249,7 @@ static void yy_syntax_error(
){
sqlite3ParserARG_FETCH;
#define TOKEN (yyminor.yy0)
-#line 34 "ext/pdo_sqlite/sqlite/src/parse.y"
+#line 34 "parse.y"
if( !pParse->parseError ){
if( TOKEN.z[0] ){
@@ -3246,7 +3259,7 @@ static void yy_syntax_error(
}
pParse->parseError = 1;
}
-#line 3253 "ext/pdo_sqlite/sqlite/src/parse.c"
+#line 3266 "parse.c"
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
}
diff --git a/ext/pdo_sqlite/sqlite/src/parse.h b/ext/pdo_sqlite/sqlite/src/parse.h
index 65c9a5ce90..3a71be199d 100644
--- a/ext/pdo_sqlite/sqlite/src/parse.h
+++ b/ext/pdo_sqlite/sqlite/src/parse.h
@@ -82,19 +82,19 @@
#define TK_SLASH 82
#define TK_REM 83
#define TK_CONCAT 84
-#define TK_UMINUS 85
-#define TK_UPLUS 86
-#define TK_BITNOT 87
-#define TK_STRING 88
-#define TK_JOIN_KW 89
-#define TK_CONSTRAINT 90
-#define TK_DEFAULT 91
-#define TK_NULL 92
-#define TK_PRIMARY 93
-#define TK_UNIQUE 94
-#define TK_CHECK 95
-#define TK_REFERENCES 96
-#define TK_COLLATE 97
+#define TK_COLLATE 85
+#define TK_UMINUS 86
+#define TK_UPLUS 87
+#define TK_BITNOT 88
+#define TK_STRING 89
+#define TK_JOIN_KW 90
+#define TK_CONSTRAINT 91
+#define TK_DEFAULT 92
+#define TK_NULL 93
+#define TK_PRIMARY 94
+#define TK_UNIQUE 95
+#define TK_CHECK 96
+#define TK_REFERENCES 97
#define TK_AUTOINCR 98
#define TK_ON 99
#define TK_DELETE 100
diff --git a/ext/pdo_sqlite/sqlite/src/parse.y b/ext/pdo_sqlite/sqlite/src/parse.y
index 479f94b16d..4380a9b76f 100644
--- a/ext/pdo_sqlite/sqlite/src/parse.y
+++ b/ext/pdo_sqlite/sqlite/src/parse.y
@@ -205,6 +205,7 @@ id(A) ::= ID(X). {A = X;}
%left PLUS MINUS.
%left STAR SLASH REM.
%left CONCAT.
+%left COLLATE.
%right UMINUS UPLUS BITNOT.
// And "ids" is an identifer-or-string.
@@ -515,24 +516,21 @@ using_opt(U) ::= . {U = 0;}
orderby_opt(A) ::= . {A = 0;}
orderby_opt(A) ::= ORDER BY sortlist(X). {A = X;}
-sortlist(A) ::= sortlist(X) COMMA sortitem(Y) collate(C) sortorder(Z). {
- A = sqlite3ExprListAppend(X,Y,C.n>0?&C:0);
+sortlist(A) ::= sortlist(X) COMMA sortitem(Y) sortorder(Z). {
+ A = sqlite3ExprListAppend(X,Y,0);
if( A ) A->a[A->nExpr-1].sortOrder = Z;
}
-sortlist(A) ::= sortitem(Y) collate(C) sortorder(Z). {
- A = sqlite3ExprListAppend(0,Y,C.n>0?&C:0);
+sortlist(A) ::= sortitem(Y) sortorder(Z). {
+ A = sqlite3ExprListAppend(0,Y,0);
if( A && A->a ) A->a[0].sortOrder = Z;
}
sortitem(A) ::= expr(X). {A = X;}
%type sortorder {int}
-%type collate {Token}
sortorder(A) ::= ASC. {A = SQLITE_SO_ASC;}
sortorder(A) ::= DESC. {A = SQLITE_SO_DESC;}
sortorder(A) ::= . {A = SQLITE_SO_ASC;}
-collate(C) ::= . {C.z = 0; C.n = 0;}
-collate(C) ::= COLLATE id(X). {C = X;}
%type groupby_opt {ExprList*}
%destructor groupby_opt {sqlite3ExprListDelete($$);}
@@ -642,6 +640,9 @@ expr(A) ::= VARIABLE(X). {
Expr *pExpr = A = sqlite3Expr(TK_VARIABLE, 0, 0, pToken);
sqlite3ExprAssignVarNumber(pParse, pExpr);
}
+expr(A) ::= expr(E) COLLATE id(C). {
+ A = sqlite3ExprSetColl(pParse, E, &C);
+}
%ifndef SQLITE_OMIT_CAST
expr(A) ::= CAST(X) LP expr(E) AS typetoken(T) RP(Y). {
A = sqlite3Expr(TK_CAST, E, 0, &T);
@@ -877,6 +878,10 @@ idxlist(A) ::= idxitem(Y) collate(C) sortorder(Z). {
}
idxitem(A) ::= nm(X). {A = X;}
+%type collate {Token}
+collate(C) ::= . {C.z = 0; C.n = 0;}
+collate(C) ::= COLLATE id(X). {C = X;}
+
///////////////////////////// The DROP INDEX command /////////////////////////
//
diff --git a/ext/pdo_sqlite/sqlite/src/select.c b/ext/pdo_sqlite/sqlite/src/select.c
index 9fda4c8bf3..f5252d2e0d 100644
--- a/ext/pdo_sqlite/sqlite/src/select.c
+++ b/ext/pdo_sqlite/sqlite/src/select.c
@@ -1950,10 +1950,9 @@ static int multiSelect(
apColl = pKeyInfo->aColl;
for(i=0; i<nOrderByExpr; i++, pOTerm++, apColl++, pSortOrder++){
Expr *pExpr = pOTerm->pExpr;
- char *zName = pOTerm->zName;
- assert( pExpr->op==TK_COLUMN && pExpr->iColumn<nCol );
- if( zName ){
- *apColl = sqlite3LocateCollSeq(pParse, zName, -1);
+ if( (pExpr->flags & EP_ExpCollate) ){
+ assert( pExpr->pColl!=0 );
+ *apColl = pExpr->pColl;
}else{
*apColl = aCopy[pExpr->iColumn];
}
@@ -2476,8 +2475,14 @@ static int processOrderGroupBy(
Expr *pE = pOrderBy->a[i].pExpr;
if( sqlite3ExprIsInteger(pE, &iCol) ){
if( iCol>0 && iCol<=pEList->nExpr ){
+ CollSeq *pColl = pE->pColl;
+ int flags = pE->flags & EP_ExpCollate;
sqlite3ExprDelete(pE);
pE = pOrderBy->a[i].pExpr = sqlite3ExprDup(pEList->a[iCol-1].pExpr);
+ if( pColl && flags ){
+ pE->pColl = pColl;
+ pE->flags |= flags;
+ }
}else{
sqlite3ErrorMsg(pParse,
"%s BY column number %d out of range - should be "
@@ -2912,23 +2917,15 @@ int sqlite3Select(
}
#endif
- /* If there is an ORDER BY clause, resolve any collation sequences
- ** names that have been explicitly specified and create a sorting index.
- **
- ** This sorting index might end up being unused if the data can be
+ /* If there is an ORDER BY clause, then this sorting
+ ** index might end up being unused if the data can be
** extracted in pre-sorted order. If that is the case, then the
** OP_OpenEphemeral instruction will be changed to an OP_Noop once
** we figure out that the sorting index is not needed. The addrSortIndex
** variable is used to facilitate that change.
*/
if( pOrderBy ){
- struct ExprList_item *pTerm;
KeyInfo *pKeyInfo;
- for(i=0, pTerm=pOrderBy->a; i<pOrderBy->nExpr; i++, pTerm++){
- if( pTerm->zName ){
- pTerm->pExpr->pColl = sqlite3LocateCollSeq(pParse, pTerm->zName, -1);
- }
- }
if( pParse->nErr ){
goto select_end;
}
diff --git a/ext/pdo_sqlite/sqlite/src/sqliteInt.h b/ext/pdo_sqlite/sqlite/src/sqliteInt.h
index 0f6dfd04f5..efe84f0f1d 100644
--- a/ext/pdo_sqlite/sqlite/src/sqliteInt.h
+++ b/ext/pdo_sqlite/sqlite/src/sqliteInt.h
@@ -1021,6 +1021,7 @@ struct Expr {
#define EP_VarSelect 0x20 /* pSelect is correlated, not constant */
#define EP_Dequoted 0x40 /* True if the string has been dequoted */
#define EP_InfixFunc 0x80 /* True for an infix function: LIKE, GLOB, etc */
+#define EP_ExpCollate 0x100 /* Collating sequence specified explicitly */
/*
** These macros can be used to test, set, or clear bits in the
@@ -1078,8 +1079,12 @@ struct IdList {
/*
** The bitmask datatype defined below is used for various optimizations.
+**
+** Changing this from a 64-bit to a 32-bit type limits the number of
+** tables in a join to 32 instead of 64. But it also reduces the size
+** of the library by 738 bytes on ix86.
*/
-typedef unsigned int Bitmask;
+typedef u64 Bitmask;
/*
** The following structure describes the FROM clause of a SELECT statement.
@@ -1108,7 +1113,7 @@ struct SrcList {
Select *pSelect; /* A SELECT statement used in place of a table name */
u8 isPopulated; /* Temporary table associated with SELECT is populated */
u8 jointype; /* Type of join between this able and the previous */
- i16 iCursor; /* The VDBE cursor number used to access this table */
+ int iCursor; /* The VDBE cursor number used to access this table */
Expr *pOn; /* The ON clause of a join */
IdList *pUsing; /* The USING clause of a join */
Bitmask colUsed; /* Bit N (1<<N) set if column N or pTab is used */
@@ -1773,6 +1778,7 @@ int sqlite3ReadSchema(Parse *pParse);
CollSeq *sqlite3FindCollSeq(sqlite3*,u8 enc, const char *,int,int);
CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char *zName, int nName);
CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr);
+Expr *sqlite3ExprSetColl(Parse *pParse, Expr *, Token *);
int sqlite3CheckCollSeq(Parse *, CollSeq *);
int sqlite3CheckIndexCollSeq(Parse *, Index *);
int sqlite3CheckObjectName(Parse *, const char *);
diff --git a/ext/pdo_sqlite/sqlite/src/tclsqlite.c b/ext/pdo_sqlite/sqlite/src/tclsqlite.c
index 2f33307c93..e1c1c67901 100644
--- a/ext/pdo_sqlite/sqlite/src/tclsqlite.c
+++ b/ext/pdo_sqlite/sqlite/src/tclsqlite.c
@@ -1055,7 +1055,7 @@ static int DbObjCmd(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){
return TCL_ERROR;
}
nByte = strlen(zSql);
- rc = sqlite3_prepare(pDb->db, zSql, 0, &pStmt, 0);
+ rc = sqlite3_prepare(pDb->db, zSql, -1, &pStmt, 0);
sqlite3_free(zSql);
if( rc ){
Tcl_AppendResult(interp, "Error: ", sqlite3_errmsg(pDb->db), 0);
@@ -1081,7 +1081,7 @@ static int DbObjCmd(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){
}
zSql[j++] = ')';
zSql[j] = 0;
- rc = sqlite3_prepare(pDb->db, zSql, 0, &pStmt, 0);
+ rc = sqlite3_prepare(pDb->db, zSql, -1, &pStmt, 0);
free(zSql);
if( rc ){
Tcl_AppendResult(interp, "Error: ", sqlite3_errmsg(pDb->db), 0);
diff --git a/ext/pdo_sqlite/sqlite/src/test1.c b/ext/pdo_sqlite/sqlite/src/test1.c
index 7402956dd3..af15a2db67 100644
--- a/ext/pdo_sqlite/sqlite/src/test1.c
+++ b/ext/pdo_sqlite/sqlite/src/test1.c
@@ -611,6 +611,46 @@ static void sqlite3ExecFunc(
}
/*
+** Implementation of tkt2213func(), a scalar function that takes exactly
+** one argument. It has two interesting features:
+**
+** * It calls sqlite3_value_text() 3 times on the argument sqlite3_value*.
+** If the three pointers returned are not the same an SQL error is raised.
+**
+** * Otherwise it returns a copy of the text representation of it's
+** argument in such a way as the VDBE representation is a Mem* cell
+** with the MEM_Term flag clear.
+**
+** Ticket #2213 can therefore be tested by evaluating the following
+** SQL expression:
+**
+** tkt2213func(tkt2213func('a string'));
+*/
+static void tkt2213Function(
+ sqlite3_context *context,
+ int argc,
+ sqlite3_value **argv
+){
+ int nText;
+ unsigned char const *zText1;
+ unsigned char const *zText2;
+ unsigned char const *zText3;
+
+ nText = sqlite3_value_bytes(argv[0]);
+ zText1 = sqlite3_value_text(argv[0]);
+ zText2 = sqlite3_value_text(argv[0]);
+ zText3 = sqlite3_value_text(argv[0]);
+
+ if( zText1!=zText2 || zText2!=zText3 ){
+ sqlite3_result_error(context, "tkt2213 is not fixed", -1);
+ }else{
+ char *zCopy = (char *)sqlite3_malloc(nText);
+ memcpy(zCopy, zText1, nText);
+ sqlite3_result_text(context, zCopy, nText, sqlite3_free);
+ }
+}
+
+/*
** Usage: sqlite_test_create_function DB
**
** Call the sqlite3_create_function API on the given database in order
@@ -651,6 +691,10 @@ static int test_create_function(
rc = sqlite3_create_function(db, "hex16", 1, SQLITE_ANY, 0,
hex16Func, 0, 0);
}
+ if( rc==SQLITE_OK ){
+ rc = sqlite3_create_function(db, "tkt2213func", 1, SQLITE_ANY, 0,
+ tkt2213Function, 0, 0);
+ }
#ifndef SQLITE_OMIT_UTF16
/* Use the sqlite3_create_function16() API here. Mainly for fun, but also
diff --git a/ext/pdo_sqlite/sqlite/src/test3.c b/ext/pdo_sqlite/sqlite/src/test3.c
index ebf357e121..5483abaf75 100644
--- a/ext/pdo_sqlite/sqlite/src/test3.c
+++ b/ext/pdo_sqlite/sqlite/src/test3.c
@@ -577,7 +577,7 @@ static int btree_integrity_check(
}
pBt = sqlite3TextToPtr(argv[1]);
nRoot = argc-2;
- aRoot = malloc( sizeof(int)*(argc-2) );
+ aRoot = (int*)malloc( sizeof(int)*(argc-2) );
for(i=0; i<argc-2; i++){
if( Tcl_GetInt(interp, argv[i+2], &aRoot[i]) ) return TCL_ERROR;
}
@@ -586,7 +586,7 @@ static int btree_integrity_check(
#else
zResult = 0;
#endif
- free(aRoot);
+ free((void*)aRoot);
if( zResult ){
Tcl_AppendResult(interp, zResult, 0);
sqliteFree(zResult);
@@ -1186,6 +1186,7 @@ static int btree_payload_size(
** aResult[7] = Header size in bytes
** aResult[8] = Local payload size
** aResult[9] = Parent page number
+** aResult[10]= Page number of the first overflow page
*/
static int btree_cursor_info(
void *NotUsed,
@@ -1197,7 +1198,7 @@ static int btree_cursor_info(
int rc;
int i, j;
int up;
- int aResult[10];
+ int aResult[11];
char zBuf[400];
if( argc!=2 && argc!=3 ){
@@ -1226,6 +1227,76 @@ static int btree_cursor_info(
}
/*
+** Copied from btree.c:
+*/
+static u32 get4byte(unsigned char *p){
+ return (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3];
+}
+
+/*
+** btree_ovfl_info BTREE CURSOR
+**
+** Given a cursor, return the sequence of pages number that form the
+** overflow pages for the data of the entry that the cursor is point
+** to.
+*/
+static int btree_ovfl_info(
+ void *NotUsed,
+ Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
+ int argc, /* Number of arguments */
+ const char **argv /* Text of each argument */
+){
+ Btree *pBt;
+ BtCursor *pCur;
+ Pager *pPager;
+ int rc;
+ int n;
+ int dataSize;
+ u32 pgno;
+ void *pPage;
+ int aResult[11];
+ char zElem[100];
+ Tcl_DString str;
+
+ if( argc!=3 ){
+ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
+ " BTREE CURSOR", 0);
+ return TCL_ERROR;
+ }
+ pBt = sqlite3TextToPtr(argv[1]);
+ pCur = sqlite3TextToPtr(argv[2]);
+ if( (*(void**)pCur) != (void*)pBt ){
+ Tcl_AppendResult(interp, "Cursor ", argv[2], " does not belong to btree ",
+ argv[1], 0);
+ return TCL_ERROR;
+ }
+ pPager = sqlite3BtreePager(pBt);
+ rc = sqlite3BtreeCursorInfo(pCur, aResult, 0);
+ if( rc ){
+ Tcl_AppendResult(interp, errorName(rc), 0);
+ return TCL_ERROR;
+ }
+ dataSize = sqlite3BtreeGetPageSize(pBt) - sqlite3BtreeGetReserve(pBt);
+ Tcl_DStringInit(&str);
+ n = aResult[6] - aResult[8];
+ n = (n + dataSize - 1)/dataSize;
+ pgno = (u32)aResult[10];
+ while( pgno && n-- ){
+ sprintf(zElem, "%d", pgno);
+ Tcl_DStringAppendElement(&str, zElem);
+ if( sqlite3pager_get(pPager, pgno, &pPage)!=SQLITE_OK ){
+ Tcl_DStringFree(&str);
+ Tcl_AppendResult(interp, "unable to get page ", zElem, 0);
+ return TCL_ERROR;
+ }
+ pgno = get4byte((unsigned char*)pPage);
+ sqlite3pager_unref(pPage);
+ }
+ Tcl_DStringResult(interp, &str);
+ return SQLITE_OK;
+}
+
+/*
** The command is provided for the purpose of setting breakpoints.
** in regression test scripts.
**
@@ -1440,6 +1511,7 @@ int Sqlitetest3_Init(Tcl_Interp *interp){
{ "btree_from_db", (Tcl_CmdProc*)btree_from_db },
{ "btree_set_cache_size", (Tcl_CmdProc*)btree_set_cache_size },
{ "btree_cursor_info", (Tcl_CmdProc*)btree_cursor_info },
+ { "btree_ovfl_info", (Tcl_CmdProc*)btree_ovfl_info },
{ "btree_cursor_list", (Tcl_CmdProc*)btree_cursor_list },
};
int i;
diff --git a/ext/pdo_sqlite/sqlite/src/update.c b/ext/pdo_sqlite/sqlite/src/update.c
index 2565787f04..f1cd038b21 100644
--- a/ext/pdo_sqlite/sqlite/src/update.c
+++ b/ext/pdo_sqlite/sqlite/src/update.c
@@ -103,6 +103,7 @@ void sqlite3Update(
AuthContext sContext; /* The authorization context */
NameContext sNC; /* The name-context to resolve expressions in */
int iDb; /* Database containing the table being updated */
+ int memCnt = 0; /* Memory cell used for counting rows changed */
#ifndef SQLITE_OMIT_TRIGGER
int isView; /* Trying to update a view */
@@ -311,7 +312,8 @@ void sqlite3Update(
/* Initialize the count of updated rows
*/
if( db->flags & SQLITE_CountRows && !pParse->trigStack ){
- sqlite3VdbeAddOp(v, OP_Integer, 0, 0);
+ memCnt = pParse->nMem++;
+ sqlite3VdbeAddOp(v, OP_MemInt, 0, memCnt);
}
if( triggers_exist ){
@@ -469,7 +471,7 @@ void sqlite3Update(
/* Increment the row counter
*/
if( db->flags & SQLITE_CountRows && !pParse->trigStack){
- sqlite3VdbeAddOp(v, OP_AddImm, 1, 0);
+ sqlite3VdbeAddOp(v, OP_MemIncr, 1, memCnt);
}
/* If there are triggers, close all the cursors after each iteration
@@ -514,6 +516,7 @@ void sqlite3Update(
** invoke the callback function.
*/
if( db->flags & SQLITE_CountRows && !pParse->trigStack && pParse->nested==0 ){
+ sqlite3VdbeAddOp(v, OP_MemLoad, memCnt, 0);
sqlite3VdbeAddOp(v, OP_Callback, 1, 0);
sqlite3VdbeSetNumCols(v, 1);
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows updated", P3_STATIC);
diff --git a/ext/pdo_sqlite/sqlite/src/vdbemem.c b/ext/pdo_sqlite/sqlite/src/vdbemem.c
index 18aef149b6..87059c8a8d 100644
--- a/ext/pdo_sqlite/sqlite/src/vdbemem.c
+++ b/ext/pdo_sqlite/sqlite/src/vdbemem.c
@@ -137,6 +137,7 @@ int sqlite3VdbeMemNulTerminate(Mem *pMem){
}
pMem->xDel = 0;
pMem->z = z;
+ pMem->flags |= MEM_Term;
}
return SQLITE_OK;
}
diff --git a/ext/pdo_sqlite/sqlite/src/where.c b/ext/pdo_sqlite/sqlite/src/where.c
index d783a11552..f603dfc924 100644
--- a/ext/pdo_sqlite/sqlite/src/where.c
+++ b/ext/pdo_sqlite/sqlite/src/where.c
@@ -43,6 +43,7 @@ int sqlite3_where_trace = 0;
/* Forward reference
*/
typedef struct WhereClause WhereClause;
+typedef struct ExprMaskSet ExprMaskSet;
/*
** The query generator uses an array of instances of this structure to
@@ -106,6 +107,7 @@ struct WhereTerm {
*/
struct WhereClause {
Parse *pParse; /* The parser context */
+ ExprMaskSet *pMaskSet; /* Mapping of table indices to bitmasks */
int nTerm; /* Number of terms */
int nSlot; /* Number of entries in a[] */
WhereTerm *a; /* Each a[] describes a term of the WHERE cluase */
@@ -138,7 +140,6 @@ struct WhereClause {
** numbers all get mapped into bit numbers that begin with 0 and contain
** no gaps.
*/
-typedef struct ExprMaskSet ExprMaskSet;
struct ExprMaskSet {
int n; /* Number of assigned cursor values */
int ix[sizeof(Bitmask)*8]; /* Cursor assigned to each bit */
@@ -186,8 +187,13 @@ struct ExprMaskSet {
/*
** Initialize a preallocated WhereClause structure.
*/
-static void whereClauseInit(WhereClause *pWC, Parse *pParse){
+static void whereClauseInit(
+ WhereClause *pWC, /* The WhereClause to be initialized */
+ Parse *pParse, /* The parsing context */
+ ExprMaskSet *pMaskSet /* Mapping from table indices to bitmasks */
+){
pWC->pParse = pParse;
+ pWC->pMaskSet = pMaskSet;
pWC->nTerm = 0;
pWC->nSlot = ARRAYSIZE(pWC->aStatic);
pWC->a = pWC->aStatic;
@@ -463,7 +469,7 @@ static WhereTerm *findTerm(
}
/* Forward reference */
-static void exprAnalyze(SrcList*, ExprMaskSet*, WhereClause*, int);
+static void exprAnalyze(SrcList*, WhereClause*, int);
/*
** Call exprAnalyze on all terms in a WHERE clause.
@@ -472,12 +478,11 @@ static void exprAnalyze(SrcList*, ExprMaskSet*, WhereClause*, int);
*/
static void exprAnalyzeAll(
SrcList *pTabList, /* the FROM clause */
- ExprMaskSet *pMaskSet, /* table masks */
WhereClause *pWC /* the WHERE clause to be analyzed */
){
int i;
for(i=pWC->nTerm-1; i>=0; i--){
- exprAnalyze(pTabList, pMaskSet, pWC, i);
+ exprAnalyze(pTabList, pWC, i);
}
}
@@ -592,11 +597,11 @@ static void transferJoinMarkings(Expr *pDerived, Expr *pBase){
*/
static void exprAnalyze(
SrcList *pSrc, /* the FROM clause */
- ExprMaskSet *pMaskSet, /* table masks */
WhereClause *pWC, /* the WHERE clause */
int idxTerm /* Index of the term to be analyzed */
){
WhereTerm *pTerm = &pWC->a[idxTerm];
+ ExprMaskSet *pMaskSet = pWC->pMaskSet;
Expr *pExpr = pTerm->pExpr;
Bitmask prereqLeft;
Bitmask prereqAll;
@@ -679,7 +684,7 @@ static void exprAnalyze(
pNewExpr = sqlite3Expr(ops[i], sqlite3ExprDup(pExpr->pLeft),
sqlite3ExprDup(pList->a[i].pExpr), 0);
idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC);
- exprAnalyze(pSrc, pMaskSet, pWC, idxNew);
+ exprAnalyze(pSrc, pWC, idxNew);
pTerm = &pWC->a[idxTerm];
pWC->a[idxNew].iParent = idxTerm;
}
@@ -708,9 +713,9 @@ static void exprAnalyze(
WhereTerm *pOrTerm;
assert( (pTerm->flags & TERM_DYNAMIC)==0 );
- whereClauseInit(&sOr, pWC->pParse);
+ whereClauseInit(&sOr, pWC->pParse, pMaskSet);
whereSplit(&sOr, pExpr, TK_OR);
- exprAnalyzeAll(pSrc, pMaskSet, &sOr);
+ exprAnalyzeAll(pSrc, &sOr);
assert( sOr.nTerm>0 );
j = 0;
do{
@@ -750,7 +755,7 @@ static void exprAnalyze(
transferJoinMarkings(pNew, pExpr);
pNew->pList = pList;
idxNew = whereClauseInsert(pWC, pNew, TERM_VIRTUAL|TERM_DYNAMIC);
- exprAnalyze(pSrc, pMaskSet, pWC, idxNew);
+ exprAnalyze(pSrc, pWC, idxNew);
pTerm = &pWC->a[idxTerm];
pWC->a[idxNew].iParent = idxTerm;
pTerm->nChild = 1;
@@ -787,10 +792,10 @@ or_not_possible:
}
pNewExpr1 = sqlite3Expr(TK_GE, sqlite3ExprDup(pLeft), pStr1, 0);
idxNew1 = whereClauseInsert(pWC, pNewExpr1, TERM_VIRTUAL|TERM_DYNAMIC);
- exprAnalyze(pSrc, pMaskSet, pWC, idxNew1);
+ exprAnalyze(pSrc, pWC, idxNew1);
pNewExpr2 = sqlite3Expr(TK_LT, sqlite3ExprDup(pLeft), pStr2, 0);
idxNew2 = whereClauseInsert(pWC, pNewExpr2, TERM_VIRTUAL|TERM_DYNAMIC);
- exprAnalyze(pSrc, pMaskSet, pWC, idxNew2);
+ exprAnalyze(pSrc, pWC, idxNew2);
pTerm = &pWC->a[idxTerm];
if( isComplete ){
pWC->a[idxNew1].iParent = idxTerm;
@@ -836,6 +841,25 @@ or_not_possible:
#endif /* SQLITE_OMIT_VIRTUALTABLE */
}
+/*
+** Return TRUE if any of the expressions in pList->a[iFirst...] contain
+** a reference to any table other than the iBase table.
+*/
+static int referencesOtherTables(
+ ExprList *pList, /* Search expressions in ths list */
+ ExprMaskSet *pMaskSet, /* Mapping from tables to bitmaps */
+ int iFirst, /* Be searching with the iFirst-th expression */
+ int iBase /* Ignore references to this table */
+){
+ Bitmask allowed = ~getMask(pMaskSet, iBase);
+ while( iFirst<pList->nExpr ){
+ if( (exprTableUsage(pMaskSet, pList->a[iFirst++].pExpr)&allowed)!=0 ){
+ return 1;
+ }
+ }
+ return 0;
+}
+
/*
** This routine decides if pIdx can be used to satisfy the ORDER BY
@@ -858,6 +882,7 @@ or_not_possible:
*/
static int isSortingIndex(
Parse *pParse, /* Parsing context */
+ ExprMaskSet *pMaskSet, /* Mapping from table indices to bitmaps */
Index *pIdx, /* The index we are testing */
int base, /* Cursor number for the table to be sorted */
ExprList *pOrderBy, /* The ORDER BY clause */
@@ -894,7 +919,7 @@ static int isSortingIndex(
if( pExpr->op!=TK_COLUMN || pExpr->iTable!=base ){
/* Can not use an index sort on anything that is not a column in the
** left-most table of the FROM clause */
- return 0;
+ break;
}
pColl = sqlite3ExprCollSeq(pParse, pExpr);
if( !pColl ){
@@ -941,11 +966,12 @@ static int isSortingIndex(
}
j++;
pTerm++;
- if( iColumn<0 ){
+ if( iColumn<0 && !referencesOtherTables(pOrderBy, pMaskSet, j, base) ){
/* If the indexed column is the primary key and everything matches
- ** so far, then we are assured that the index can be used to sort
- ** because the primary key is unique and so none of the other columns
- ** will make any difference
+ ** so far and none of the ORDER BY terms to the right reference other
+ ** tables in the join, then we are assured that the index can be used
+ ** to sort because the primary key is unique and so none of the other
+ ** columns will make any difference
*/
j = nTerm;
}
@@ -957,9 +983,12 @@ static int isSortingIndex(
** this index can be used for sorting. */
return 1;
}
- if( j==pIdx->nColumn && pIdx->onError!=OE_None ){
+ if( pIdx->onError!=OE_None && i==pIdx->nColumn
+ && !referencesOtherTables(pOrderBy, pMaskSet, j, base) ){
/* All terms of this index match some prefix of the ORDER BY clause
- ** and this index is UNIQUE, so this index can be used for sorting. */
+ ** and the index is UNIQUE and no terms on the tail of the ORDER BY
+ ** clause reference other tables in a join. If this is all true then
+ ** the order by clause is superfluous. */
return 1;
}
return 0;
@@ -973,6 +1002,7 @@ static int isSortingIndex(
static int sortableByRowid(
int base, /* Cursor number for table to be sorted */
ExprList *pOrderBy, /* The ORDER BY clause */
+ ExprMaskSet *pMaskSet, /* Mapping from tables to bitmaps */
int *pbRev /* Set to 1 if ORDER BY is DESC */
){
Expr *p;
@@ -980,7 +1010,8 @@ static int sortableByRowid(
assert( pOrderBy!=0 );
assert( pOrderBy->nExpr>0 );
p = pOrderBy->a[0].pExpr;
- if( p->op==TK_COLUMN && p->iTable==base && p->iColumn==-1 ){
+ if( p->op==TK_COLUMN && p->iTable==base && p->iColumn==-1
+ && !referencesOtherTables(pOrderBy, pMaskSet, 1, base) ){
*pbRev = pOrderBy->a[0].sortOrder;
return 1;
}
@@ -1298,7 +1329,7 @@ static double bestIndex(
*/
if( pProbe==0 &&
findTerm(pWC, iCur, -1, 0, WO_EQ|WO_IN|WO_LT|WO_LE|WO_GT|WO_GE,0)==0 &&
- (pOrderBy==0 || !sortableByRowid(iCur, pOrderBy, &rev)) ){
+ (pOrderBy==0 || !sortableByRowid(iCur, pOrderBy, pWC->pMaskSet, &rev)) ){
*pFlags = 0;
*ppIndex = 0;
*pnEq = 0;
@@ -1360,7 +1391,7 @@ static double bestIndex(
/* If the table scan does not satisfy the ORDER BY clause, increase
** the cost by NlogN to cover the expense of sorting. */
if( pOrderBy ){
- if( sortableByRowid(iCur, pOrderBy, &rev) ){
+ if( sortableByRowid(iCur, pOrderBy, pWC->pMaskSet, &rev) ){
flags |= WHERE_ORDERBY|WHERE_ROWID_RANGE;
if( rev ){
flags |= WHERE_REVERSE;
@@ -1444,7 +1475,7 @@ static double bestIndex(
*/
if( pOrderBy ){
if( (flags & WHERE_COLUMN_IN)==0 &&
- isSortingIndex(pParse,pProbe,iCur,pOrderBy,nEq,&rev) ){
+ isSortingIndex(pParse,pWC->pMaskSet,pProbe,iCur,pOrderBy,nEq,&rev) ){
if( flags==0 ){
flags = WHERE_COLUMN_RANGE;
}
@@ -1832,7 +1863,7 @@ WhereInfo *sqlite3WhereBegin(
** subexpression is separated by an AND operator.
*/
initMaskSet(&maskSet);
- whereClauseInit(&wc, pParse);
+ whereClauseInit(&wc, pParse, &maskSet);
whereSplit(&wc, pWhere, TK_AND);
/* Allocate and initialize the WhereInfo structure that will become the
@@ -1863,7 +1894,7 @@ WhereInfo *sqlite3WhereBegin(
for(i=0; i<pTabList->nSrc; i++){
createMask(&maskSet, pTabList->a[i].iCursor);
}
- exprAnalyzeAll(pTabList, &maskSet, &wc);
+ exprAnalyzeAll(pTabList, &wc);
if( sqlite3MallocFailed() ){
goto whereBeginNoMem;
}