Fossil SCM

Update the built-in SQLite to the latest 3.29.0 alpha.

drh 2019-05-23 17:07 trunk
Commit 4f040a180a6ec90d5be3ea0f325cfd12acf2a6801a10c86900e5a166d4c994b1
2 files changed +3098 -2925 +2 -1
+3098 -2925
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1167,11 +1167,11 @@
11671167
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
11681168
** [sqlite_version()] and [sqlite_source_id()].
11691169
*/
11701170
#define SQLITE_VERSION "3.29.0"
11711171
#define SQLITE_VERSION_NUMBER 3029000
1172
-#define SQLITE_SOURCE_ID "2019-05-10 17:54:58 956ca2a452aa3707bca553007a7ef221af3d4f6b0af747d17070926e000f2362"
1172
+#define SQLITE_SOURCE_ID "2019-05-23 16:38:12 d2fe370cafa9b11f6c3eb4e1c3be48d9d2610b9d2f9d9ebf9e50267f9079dfc0"
11731173
11741174
/*
11751175
** CAPI3REF: Run-Time Library Version Numbers
11761176
** KEYWORDS: sqlite3_version sqlite3_sourceid
11771177
**
@@ -3240,10 +3240,11 @@
32403240
** flag is enabled, language features that allow ordinary SQL to
32413241
** deliberately corrupt the database file are disabled. The disabled
32423242
** features include but are not limited to the following:
32433243
** <ul>
32443244
** <li> The [PRAGMA writable_schema=ON] statement.
3245
+** <li> The [PRAGMA journal_mode=OFF] statement.
32453246
** <li> Writes to the [sqlite_dbpage] virtual table.
32463247
** <li> Direct writes to [shadow tables].
32473248
** </ul>
32483249
** </dd>
32493250
**
@@ -13956,16 +13957,17 @@
1395613957
** using C-preprocessor macros. If that is unsuccessful, or if
1395713958
** -DSQLITE_BYTEORDER=0 is set, then byte-order is determined
1395813959
** at run-time.
1395913960
*/
1396013961
#ifndef SQLITE_BYTEORDER
13961
-# if defined(i386) || defined(__i386__) || defined(_M_IX86) || \
13962
- defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \
13963
- defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \
13964
- defined(__arm__) || defined(_M_ARM64)
13962
+# if defined(i386) || defined(__i386__) || defined(_M_IX86) || \
13963
+ defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \
13964
+ defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \
13965
+ defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64)
1396513966
# define SQLITE_BYTEORDER 1234
13966
-# elif defined(sparc) || defined(__ppc__)
13967
+# elif defined(sparc) || defined(__ppc__) || \
13968
+ defined(__ARMEB__) || defined(__AARCH64EB__)
1396713969
# define SQLITE_BYTEORDER 4321
1396813970
# else
1396913971
# define SQLITE_BYTEORDER 0
1397013972
# endif
1397113973
#endif
@@ -17180,10 +17182,11 @@
1718017182
unsigned isResized:1; /* True if resizeIndexObject() has been called */
1718117183
unsigned isCovering:1; /* True if this is a covering index */
1718217184
unsigned noSkipScan:1; /* Do not try to use skip-scan if true */
1718317185
unsigned hasStat1:1; /* aiRowLogEst values come from sqlite_stat1 */
1718417186
unsigned bNoQuery:1; /* Do not use this index to optimize queries */
17187
+ unsigned bAscKeyBug:1; /* True if the bba7b69f9849b5bf bug applies */
1718517188
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
1718617189
int nSample; /* Number of elements in aSample[] */
1718717190
int nSampleCol; /* Size of IndexSample.anEq[] and so on */
1718817191
tRowcnt *aAvgEq; /* Average nEq values for keys not in aSample */
1718917192
IndexSample *aSample; /* Samples of the left-most key */
@@ -17407,11 +17410,11 @@
1740717410
ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
1740817411
** TK_VARIABLE: variable number (always >= 1).
1740917412
** TK_SELECT_COLUMN: column of the result vector */
1741017413
i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
1741117414
i16 iRightJoinTable; /* If EP_FromJoin, the right table of the join */
17412
- u8 op2; /* TK_REGISTER: original value of Expr.op
17415
+ u8 op2; /* TK_REGISTER/TK_TRUTH: original value of Expr.op
1741317416
** TK_COLUMN: the value of p5 for OP_Column
1741417417
** TK_AGG_FUNCTION: nesting depth */
1741517418
AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
1741617419
union {
1741717420
Table *pTab; /* TK_COLUMN: Table containing column. Can be NULL
@@ -17692,11 +17695,11 @@
1769217695
Upsert *pUpsert; /* ON CONFLICT clause information from an upsert */
1769317696
} uNC;
1769417697
NameContext *pNext; /* Next outer name context. NULL for outermost */
1769517698
int nRef; /* Number of names resolved by this context */
1769617699
int nErr; /* Number of errors encountered while resolving names */
17697
- u16 ncFlags; /* Zero or more NC_* flags defined below */
17700
+ int ncFlags; /* Zero or more NC_* flags defined below */
1769817701
Select *pWinSelect; /* SELECT statement for any window functions */
1769917702
};
1770017703
1770117704
/*
1770217705
** Allowed values for the NameContext, ncFlags field.
@@ -17719,10 +17722,12 @@
1771917722
#define NC_UUpsert 0x0200 /* True if uNC.pUpsert is used */
1772017723
#define NC_MinMaxAgg 0x1000 /* min/max aggregates seen. See note above */
1772117724
#define NC_Complex 0x2000 /* True if a function or subquery seen */
1772217725
#define NC_AllowWin 0x4000 /* Window functions are allowed here */
1772317726
#define NC_HasWin 0x8000 /* One or more window functions seen */
17727
+#define NC_NoDblQStr 0x10000 /* Do not allow double-quoted string hack.
17728
+ ** Mnemonic: "NO DouBLe-Quoted STRings" */
1772417729
1772517730
/*
1772617731
** An instance of the following object describes a single ON CONFLICT
1772717732
** clause in an upsert.
1772817733
**
@@ -68718,10 +68723,11 @@
6871868723
** up to two varints past the end of the buffer. An extra 18
6871968724
** bytes of padding is allocated at the end of the buffer in
6872068725
** case this happens. */
6872168726
void *pCellKey;
6872268727
u8 * const pCellBody = pCell - pPage->childPtrSize;
68728
+ const int nOverrun = 18; /* Size of the overrun padding */
6872368729
pPage->xParseCell(pPage, pCellBody, &pCur->info);
6872468730
nCell = (int)pCur->info.nKey;
6872568731
testcase( nCell<0 ); /* True if key size is 2^32 or more */
6872668732
testcase( nCell==0 ); /* Invalid key size: 0x80 0x80 0x00 */
6872768733
testcase( nCell==1 ); /* Invalid key size: 0x80 0x80 0x01 */
@@ -68728,17 +68734,18 @@
6872868734
testcase( nCell==2 ); /* Minimum legal index key size */
6872968735
if( nCell<2 || nCell/pCur->pBt->usableSize>pCur->pBt->nPage ){
6873068736
rc = SQLITE_CORRUPT_PAGE(pPage);
6873168737
goto moveto_finish;
6873268738
}
68733
- pCellKey = sqlite3Malloc( nCell+18 );
68739
+ pCellKey = sqlite3Malloc( nCell+nOverrun );
6873468740
if( pCellKey==0 ){
6873568741
rc = SQLITE_NOMEM_BKPT;
6873668742
goto moveto_finish;
6873768743
}
6873868744
pCur->ix = (u16)idx;
6873968745
rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 0);
68746
+ memset(((u8*)pCellKey)+nCell,0,nOverrun); /* Fix uninit warnings */
6874068747
pCur->curFlags &= ~BTCF_ValidOvfl;
6874168748
if( rc ){
6874268749
sqlite3_free(pCellKey);
6874368750
goto moveto_finish;
6874468751
}
@@ -74560,11 +74567,14 @@
7456074567
zBuf[acc.nChar] = 0; /* Fast version of sqlite3StrAccumFinish(&acc) */
7456174568
}
7456274569
7456374570
#ifdef SQLITE_DEBUG
7456474571
/*
74565
-** Check that string value of pMem agrees with its integer or real value.
74572
+** Validity checks on pMem. pMem holds a string.
74573
+**
74574
+** (1) Check that string value of pMem agrees with its integer or real value.
74575
+** (2) Check that the string is correctly zero terminated
7456674576
**
7456774577
** A single int or real value always converts to the same strings. But
7456874578
** many different strings can be converted into the same int or real.
7456974579
** If a table contains a numeric value and an index is based on the
7457074580
** corresponding string value, then it is important that the string be
@@ -74578,15 +74588,26 @@
7457874588
** been derived from the numeric and not the other way around. It returns
7457974589
** true if everything is ok and false if there is a problem.
7458074590
**
7458174591
** This routine is for use inside of assert() statements only.
7458274592
*/
74583
-SQLITE_PRIVATE int sqlite3VdbeMemConsistentDualRep(Mem *p){
74593
+SQLITE_PRIVATE int sqlite3VdbeMemValidStrRep(Mem *p){
7458474594
char zBuf[100];
7458574595
char *z;
7458674596
int i, j, incr;
7458774597
if( (p->flags & MEM_Str)==0 ) return 1;
74598
+ if( p->flags & MEM_Term ){
74599
+ /* Insure that the string is properly zero-terminated. Pay particular
74600
+ ** attention to the case where p->n is odd */
74601
+ if( p->szMalloc>0 && p->z==p->zMalloc ){
74602
+ assert( p->enc==SQLITE_UTF8 || p->szMalloc >= ((p->n+1)&~1)+2 );
74603
+ assert( p->enc!=SQLITE_UTF8 || p->szMalloc >= p->n+1 );
74604
+ }
74605
+ assert( p->z[p->n]==0 );
74606
+ assert( p->enc==SQLITE_UTF8 || p->z[(p->n+1)&~1]==0 );
74607
+ assert( p->enc==SQLITE_UTF8 || p->z[((p->n+1)&~1)+1]==0 );
74608
+ }
7458874609
if( (p->flags & (MEM_Int|MEM_Real|MEM_IntReal))==0 ) return 1;
7458974610
vdbeMemRenderNum(sizeof(zBuf), zBuf, p);
7459074611
z = p->z;
7459174612
i = j = 0;
7459274613
incr = 1;
@@ -75663,11 +75684,11 @@
7566375684
assert( 0==(1&SQLITE_PTR_TO_INT(pVal->z)) );
7566475685
}
7566575686
assert(pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) || pVal->db==0
7566675687
|| pVal->db->mallocFailed );
7566775688
if( pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) ){
75668
- assert( sqlite3VdbeMemConsistentDualRep(pVal) );
75689
+ assert( sqlite3VdbeMemValidStrRep(pVal) );
7566975690
return pVal->z;
7567075691
}else{
7567175692
return 0;
7567275693
}
7567375694
}
@@ -75686,11 +75707,11 @@
7568675707
if( !pVal ) return 0;
7568775708
assert( pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex) );
7568875709
assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
7568975710
assert( !sqlite3VdbeMemIsRowSet(pVal) );
7569075711
if( (pVal->flags&(MEM_Str|MEM_Term))==(MEM_Str|MEM_Term) && pVal->enc==enc ){
75691
- assert( sqlite3VdbeMemConsistentDualRep(pVal) );
75712
+ assert( sqlite3VdbeMemValidStrRep(pVal) );
7569275713
return pVal->z;
7569375714
}
7569475715
if( pVal->flags&MEM_Null ){
7569575716
return 0;
7569675717
}
@@ -76991,10 +77012,11 @@
7699177012
*/
7699277013
SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
7699377014
int hasAbort = 0;
7699477015
int hasFkCounter = 0;
7699577016
int hasCreateTable = 0;
77017
+ int hasCreateIndex = 0;
7699677018
int hasInitCoroutine = 0;
7699777019
Op *pOp;
7699877020
VdbeOpIter sIter;
7699977021
memset(&sIter, 0, sizeof(sIter));
7700077022
sIter.v = v;
@@ -77009,10 +77031,18 @@
7700977031
){
7701077032
hasAbort = 1;
7701177033
break;
7701277034
}
7701377035
if( opcode==OP_CreateBtree && pOp->p3==BTREE_INTKEY ) hasCreateTable = 1;
77036
+ if( mayAbort ){
77037
+ /* hasCreateIndex may also be set for some DELETE statements that use
77038
+ ** OP_Clear. So this routine may end up returning true in the case
77039
+ ** where a "DELETE FROM tbl" has a statement-journal but does not
77040
+ ** require one. This is not so bad - it is an inefficiency, not a bug. */
77041
+ if( opcode==OP_CreateBtree && pOp->p3==BTREE_BLOBKEY ) hasCreateIndex = 1;
77042
+ if( opcode==OP_Clear ) hasCreateIndex = 1;
77043
+ }
7701477044
if( opcode==OP_InitCoroutine ) hasInitCoroutine = 1;
7701577045
#ifndef SQLITE_OMIT_FOREIGN_KEY
7701677046
if( opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1 ){
7701777047
hasFkCounter = 1;
7701877048
}
@@ -77024,11 +77054,12 @@
7702477054
** If malloc failed, then the while() loop above may not have iterated
7702577055
** through all opcodes and hasAbort may be set incorrectly. Return
7702677056
** true for this case to prevent the assert() in the callers frame
7702777057
** from failing. */
7702877058
return ( v->db->mallocFailed || hasAbort==mayAbort || hasFkCounter
77029
- || (hasCreateTable && hasInitCoroutine) );
77059
+ || (hasCreateTable && hasInitCoroutine) || hasCreateIndex
77060
+ );
7703077061
}
7703177062
#endif /* SQLITE_DEBUG - the sqlite3AssertMayAbort() function */
7703277063
7703377064
#ifdef SQLITE_DEBUG
7703477065
/*
@@ -85214,11 +85245,11 @@
8521485245
}
8521585246
nByte = pIn1->n + pIn2->n;
8521685247
if( nByte>db->aLimit[SQLITE_LIMIT_LENGTH] ){
8521785248
goto too_big;
8521885249
}
85219
- if( sqlite3VdbeMemGrow(pOut, (int)nByte+2, pOut==pIn2) ){
85250
+ if( sqlite3VdbeMemGrow(pOut, (int)nByte+3, pOut==pIn2) ){
8522085251
goto no_mem;
8522185252
}
8522285253
MemSetTypeFlag(pOut, MEM_Str);
8522385254
if( pOut!=pIn2 ){
8522485255
memcpy(pOut->z, pIn2->z, pIn2->n);
@@ -85228,10 +85259,11 @@
8522885259
memcpy(&pOut->z[pIn2->n], pIn1->z, pIn1->n);
8522985260
assert( (pIn1->flags & MEM_Dyn) == (flags1 & MEM_Dyn) );
8523085261
pIn1->flags = flags1;
8523185262
pOut->z[nByte]=0;
8523285263
pOut->z[nByte+1] = 0;
85264
+ pOut->z[nByte+2] = 0;
8523385265
pOut->flags |= MEM_Term;
8523485266
pOut->n = (int)nByte;
8523585267
pOut->enc = encoding;
8523685268
UPDATE_MAX_BLOBSIZE(pOut);
8523785269
break;
@@ -86596,10 +86628,14 @@
8659686628
assert( pData0<=pLast );
8659786629
if( zAffinity ){
8659886630
pRec = pData0;
8659986631
do{
8660086632
applyAffinity(pRec, zAffinity[0], encoding);
86633
+ if( zAffinity[0]==SQLITE_AFF_REAL && (pRec->flags & MEM_Int) ){
86634
+ pRec->flags |= MEM_IntReal;
86635
+ pRec->flags &= ~(MEM_Int);
86636
+ }
8660186637
REGISTER_TRACE((int)(pRec-aMem), pRec);
8660286638
zAffinity++;
8660386639
pRec++;
8660486640
assert( zAffinity[0]==0 || pRec<=pLast );
8660586641
}while( zAffinity[0] );
@@ -87714,10 +87750,12 @@
8771487750
pC->nullRow = 0;
8771587751
#ifdef SQLITE_DEBUG
8771687752
pC->seekOp = pOp->opcode;
8771787753
#endif
8771887754
87755
+ pC->deferredMoveto = 0;
87756
+ pC->cacheStatus = CACHE_STALE;
8771987757
if( pC->isTable ){
8772087758
/* The BTREE_SEEK_EQ flag is only set on index cursors */
8772187759
assert( sqlite3BtreeCursorHasHint(pC->uc.pCursor, BTREE_SEEK_EQ)==0
8772287760
|| CORRUPT_DB );
8772387761
@@ -87818,12 +87856,10 @@
8781887856
if( eqOnly && r.eqSeen==0 ){
8781987857
assert( res!=0 );
8782087858
goto seek_not_found;
8782187859
}
8782287860
}
87823
- pC->deferredMoveto = 0;
87824
- pC->cacheStatus = CACHE_STALE;
8782587861
#ifdef SQLITE_TEST
8782687862
sqlite3_search_count++;
8782787863
#endif
8782887864
if( oc>=OP_SeekGE ){ assert( oc==OP_SeekGE || oc==OP_SeekGT );
8782987865
if( res<0 || (res==0 && oc==OP_SeekGT) ){
@@ -88496,11 +88532,11 @@
8849688532
if( pOp->p4type==P4_TABLE && HasRowid(pOp->p4.pTab) && pOp->p5==0 ){
8849788533
/* If p5 is zero, the seek operation that positioned the cursor prior to
8849888534
** OP_Delete will have also set the pC->movetoTarget field to the rowid of
8849988535
** the row that is being deleted */
8850088536
i64 iKey = sqlite3BtreeIntegerKey(pC->uc.pCursor);
88501
- assert( pC->movetoTarget==iKey );
88537
+ assert( CORRUPT_DB || pC->movetoTarget==iKey );
8850288538
}
8850388539
#endif
8850488540
8850588541
/* If the update-hook or pre-update-hook will be invoked, set zDb to
8850688542
** the name of the db to pass as to it. Also set local pTab to a copy
@@ -95783,11 +95819,13 @@
9578395819
** Because no reference was made to outer contexts, the pNC->nRef
9578495820
** fields are not changed in any context.
9578595821
*/
9578695822
if( cnt==0 && zTab==0 ){
9578795823
assert( pExpr->op==TK_ID );
95788
- if( ExprHasProperty(pExpr,EP_DblQuoted) ){
95824
+ if( ExprHasProperty(pExpr,EP_DblQuoted)
95825
+ && 0==(pTopNC->ncFlags&NC_NoDblQStr)
95826
+ ){
9578995827
/* If a double-quoted identifier does not match any known column name,
9579095828
** then treat it as a string.
9579195829
**
9579295830
** This hack was added in the early days of SQLite in a misguided attempt
9579395831
** to be compatible with MySQL 3.x, which used double-quotes for strings.
@@ -96961,11 +96999,11 @@
9696196999
*/
9696297000
SQLITE_PRIVATE int sqlite3ResolveExprNames(
9696397001
NameContext *pNC, /* Namespace to resolve expressions in. */
9696497002
Expr *pExpr /* The expression to be analyzed. */
9696597003
){
96966
- u16 savedHasAgg;
97004
+ int savedHasAgg;
9696797005
Walker w;
9696897006
9696997007
if( pExpr==0 ) return SQLITE_OK;
9697097008
savedHasAgg = pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
9697197009
pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
@@ -97076,10 +97114,13 @@
9707697114
sSrc.a[0].iCursor = -1;
9707797115
}
9707897116
sNC.pParse = pParse;
9707997117
sNC.pSrcList = &sSrc;
9708097118
sNC.ncFlags = type;
97119
+ if( !pParse->db->init.busy && !sqlite3WritableSchema(pParse->db) ){
97120
+ sNC.ncFlags |= NC_NoDblQStr;
97121
+ }
9708197122
if( (rc = sqlite3ResolveExprNames(&sNC, pExpr))!=SQLITE_OK ) return rc;
9708297123
if( pList ) rc = sqlite3ResolveExprListNames(&sNC, pList);
9708397124
return rc;
9708497125
}
9708597126
@@ -99893,10 +99934,11 @@
9989399934
** this code only executes once. Because for a non-constant
9989499935
** expression we need to rerun this code each time.
9989599936
*/
9989699937
if( addrOnce && !sqlite3ExprIsConstant(pE2) ){
9989799938
sqlite3VdbeChangeToNoop(v, addrOnce);
99939
+ ExprClearProperty(pExpr, EP_Subrtn);
9989899940
addrOnce = 0;
9989999941
}
9990099942
9990199943
/* Evaluate the expression and insert it into the temp table */
9990299944
r3 = sqlite3ExprCodeTarget(pParse, pE2, r1);
@@ -101946,10 +101988,11 @@
101946101988
if( pA->op!=TK_STRING
101947101989
&& pA->op!=TK_TRUEFALSE
101948101990
&& (combinedFlags & EP_Reduced)==0
101949101991
){
101950101992
if( pA->iColumn!=pB->iColumn ) return 2;
101993
+ if( pA->op2!=pB->op2 ) return 2;
101951101994
if( pA->iTable!=pB->iTable
101952101995
&& (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
101953101996
}
101954101997
}
101955101998
return 0;
@@ -101992,10 +102035,80 @@
101992102035
return sqlite3ExprCompare(0,
101993102036
sqlite3ExprSkipCollate(pA),
101994102037
sqlite3ExprSkipCollate(pB),
101995102038
iTab);
101996102039
}
102040
+
102041
+/*
102042
+** Return non-zero if Expr p can only be true if pNN is not NULL.
102043
+*/
102044
+static int exprImpliesNotNull(
102045
+ Parse *pParse, /* Parsing context */
102046
+ Expr *p, /* The expression to be checked */
102047
+ Expr *pNN, /* The expression that is NOT NULL */
102048
+ int iTab, /* Table being evaluated */
102049
+ int seenNot /* True if p is an operand of NOT */
102050
+){
102051
+ assert( p );
102052
+ assert( pNN );
102053
+ if( sqlite3ExprCompare(pParse, p, pNN, iTab)==0 ) return 1;
102054
+ switch( p->op ){
102055
+ case TK_IN: {
102056
+ if( seenNot && ExprHasProperty(p, EP_xIsSelect) ) return 0;
102057
+ assert( ExprHasProperty(p,EP_xIsSelect)
102058
+ || (p->x.pList!=0 && p->x.pList->nExpr>0) );
102059
+ return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
102060
+ }
102061
+ case TK_BETWEEN: {
102062
+ ExprList *pList = p->x.pList;
102063
+ assert( pList!=0 );
102064
+ assert( pList->nExpr==2 );
102065
+ if( seenNot ) return 0;
102066
+ if( exprImpliesNotNull(pParse, pList->a[0].pExpr, pNN, iTab, seenNot)
102067
+ || exprImpliesNotNull(pParse, pList->a[1].pExpr, pNN, iTab, seenNot)
102068
+ ){
102069
+ return 1;
102070
+ }
102071
+ return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
102072
+ }
102073
+ case TK_EQ:
102074
+ case TK_NE:
102075
+ case TK_LT:
102076
+ case TK_LE:
102077
+ case TK_GT:
102078
+ case TK_GE:
102079
+ case TK_PLUS:
102080
+ case TK_MINUS:
102081
+ case TK_STAR:
102082
+ case TK_REM:
102083
+ case TK_BITAND:
102084
+ case TK_BITOR:
102085
+ case TK_SLASH:
102086
+ case TK_LSHIFT:
102087
+ case TK_RSHIFT:
102088
+ case TK_CONCAT: {
102089
+ if( exprImpliesNotNull(pParse, p->pRight, pNN, iTab, seenNot) ) return 1;
102090
+ /* Fall thru into the next case */
102091
+ }
102092
+ case TK_SPAN:
102093
+ case TK_COLLATE:
102094
+ case TK_BITNOT:
102095
+ case TK_UPLUS:
102096
+ case TK_UMINUS: {
102097
+ return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
102098
+ }
102099
+ case TK_TRUTH: {
102100
+ if( seenNot ) return 0;
102101
+ if( p->op2!=TK_IS ) return 0;
102102
+ return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
102103
+ }
102104
+ case TK_NOT: {
102105
+ return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1);
102106
+ }
102107
+ }
102108
+ return 0;
102109
+}
101997102110
101998102111
/*
101999102112
** Return true if we can prove the pE2 will always be true if pE1 is
102000102113
** true. Return false if we cannot complete the proof or if pE2 might
102001102114
** be false. Examples:
@@ -102029,17 +102142,13 @@
102029102142
|| sqlite3ExprImpliesExpr(pParse, pE1, pE2->pRight, iTab) )
102030102143
){
102031102144
return 1;
102032102145
}
102033102146
if( pE2->op==TK_NOTNULL
102034
- && pE1->op!=TK_ISNULL
102035
- && pE1->op!=TK_IS
102036
- && pE1->op!=TK_OR
102147
+ && exprImpliesNotNull(pParse, pE1, pE2->pLeft, iTab, 0)
102037102148
){
102038
- Expr *pX = sqlite3ExprSkipCollate(pE1->pLeft);
102039
- testcase( pX!=pE1->pLeft );
102040
- if( sqlite3ExprCompare(pParse, pX, pE2->pLeft, iTab)==0 ) return 1;
102149
+ return 1;
102041102150
}
102042102151
return 0;
102043102152
}
102044102153
102045102154
/*
@@ -108979,10 +109088,14 @@
108979109088
for(i=0, j=pIdx->nKeyCol; i<nPk; i++){
108980109089
if( !isDupColumn(pIdx, pIdx->nKeyCol, pPk, i) ){
108981109090
testcase( hasColumn(pIdx->aiColumn, pIdx->nKeyCol, pPk->aiColumn[i]) );
108982109091
pIdx->aiColumn[j] = pPk->aiColumn[i];
108983109092
pIdx->azColl[j] = pPk->azColl[i];
109093
+ if( pPk->aSortOrder[i] ){
109094
+ /* See ticket https://www.sqlite.org/src/info/bba7b69f9849b5bf */
109095
+ pIdx->bAscKeyBug = 1;
109096
+ }
108984109097
j++;
108985109098
}
108986109099
}
108987109100
assert( pIdx->nColumn>=pIdx->nKeyCol+n );
108988109101
assert( pIdx->nColumn>=j );
@@ -110097,14 +110210,31 @@
110097110210
sqlite3VdbeAddOp4Int(v, OP_SorterCompare, iSorter, j2, regRecord,
110098110211
pIndex->nKeyCol); VdbeCoverage(v);
110099110212
sqlite3UniqueConstraint(pParse, OE_Abort, pIndex);
110100110213
sqlite3VdbeJumpHere(v, j2);
110101110214
}else{
110215
+ /* Most CREATE INDEX and REINDEX statements that are not UNIQUE can not
110216
+ ** abort. The exception is if one of the indexed expressions contains a
110217
+ ** user function that throws an exception when it is evaluated. But the
110218
+ ** overhead of adding a statement journal to a CREATE INDEX statement is
110219
+ ** very small (since most of the pages written do not contain content that
110220
+ ** needs to be restored if the statement aborts), so we call
110221
+ ** sqlite3MayAbort() for all CREATE INDEX statements. */
110222
+ sqlite3MayAbort(pParse);
110102110223
addr2 = sqlite3VdbeCurrentAddr(v);
110103110224
}
110104110225
sqlite3VdbeAddOp3(v, OP_SorterData, iSorter, regRecord, iIdx);
110105
- sqlite3VdbeAddOp1(v, OP_SeekEnd, iIdx);
110226
+ if( !pIndex->bAscKeyBug ){
110227
+ /* This OP_SeekEnd opcode makes index insert for a REINDEX go much
110228
+ ** faster by avoiding unnecessary seeks. But the optimization does
110229
+ ** not work for UNIQUE constraint indexes on WITHOUT ROWID tables
110230
+ ** with DESC primary keys, since those indexes have there keys in
110231
+ ** a different order from the main table.
110232
+ ** See ticket: https://www.sqlite.org/src/info/bba7b69f9849b5bf
110233
+ */
110234
+ sqlite3VdbeAddOp1(v, OP_SeekEnd, iIdx);
110235
+ }
110106110236
sqlite3VdbeAddOp2(v, OP_IdxInsert, iIdx, regRecord);
110107110237
sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
110108110238
sqlite3ReleaseTempReg(pParse, regRecord);
110109110239
sqlite3VdbeAddOp2(v, OP_SorterNext, iSorter, addr2); VdbeCoverage(v);
110110110240
sqlite3VdbeJumpHere(v, addr1);
@@ -120850,14 +120980,13 @@
120850120980
#define PragTyp_TEMP_STORE_DIRECTORY 36
120851120981
#define PragTyp_THREADS 37
120852120982
#define PragTyp_WAL_AUTOCHECKPOINT 38
120853120983
#define PragTyp_WAL_CHECKPOINT 39
120854120984
#define PragTyp_ACTIVATE_EXTENSIONS 40
120855
-#define PragTyp_HEXKEY 41
120856
-#define PragTyp_KEY 42
120857
-#define PragTyp_LOCK_STATUS 43
120858
-#define PragTyp_STATS 44
120985
+#define PragTyp_KEY 41
120986
+#define PragTyp_LOCK_STATUS 42
120987
+#define PragTyp_STATS 43
120859120988
120860120989
/* Property flags associated with various pragma. */
120861120990
#define PragFlg_NeedSchema 0x01 /* Force schema load before running */
120862120991
#define PragFlg_NoColumns 0x02 /* OP_ResultRow called with zero columns */
120863120992
#define PragFlg_NoColumns1 0x04 /* zero columns if RHS argument is present */
@@ -121126,16 +121255,16 @@
121126121255
/* iArg: */ 0 },
121127121256
#endif
121128121257
#endif
121129121258
#if defined(SQLITE_HAS_CODEC)
121130121259
{/* zName: */ "hexkey",
121131
- /* ePragTyp: */ PragTyp_HEXKEY,
121260
+ /* ePragTyp: */ PragTyp_KEY,
121132121261
/* ePragFlg: */ 0,
121133121262
/* ColNames: */ 0, 0,
121134121263
/* iArg: */ 2 },
121135121264
{/* zName: */ "hexrekey",
121136
- /* ePragTyp: */ PragTyp_HEXKEY,
121265
+ /* ePragTyp: */ PragTyp_KEY,
121137121266
/* ePragFlg: */ 0,
121138121267
/* ColNames: */ 0, 0,
121139121268
/* iArg: */ 3 },
121140121269
#endif
121141121270
#if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
@@ -122091,10 +122220,15 @@
122091122220
}
122092122221
if( !zMode ){
122093122222
/* If the "=MODE" part does not match any known journal mode,
122094122223
** then do a query */
122095122224
eMode = PAGER_JOURNALMODE_QUERY;
122225
+ }
122226
+ if( eMode==PAGER_JOURNALMODE_OFF && (db->flags & SQLITE_Defensive)!=0 ){
122227
+ /* Do not allow journal-mode "OFF" in defensive since the database
122228
+ ** can become corrupted using ordinary SQL when the journal is off */
122229
+ eMode = PAGER_JOURNALMODE_QUERY;
122096122230
}
122097122231
}
122098122232
if( eMode==PAGER_JOURNALMODE_QUERY && pId2->n==0 ){
122099122233
/* Convert "PRAGMA journal_mode" into "PRAGMA main.journal_mode" */
122100122234
iDb = 0;
@@ -123573,32 +123707,34 @@
123573123707
** textkey 4
123574123708
** textrekey 5
123575123709
*/
123576123710
case PragTyp_KEY: {
123577123711
if( zRight ){
123578
- int n = pPragma->iArg<4 ? sqlite3Strlen30(zRight) : -1;
123579
- if( (pPragma->iArg & 1)==0 ){
123580
- sqlite3_key_v2(db, zDb, zRight, n);
123581
- }else{
123582
- sqlite3_rekey_v2(db, zDb, zRight, n);
123583
- }
123584
- }
123585
- break;
123586
- }
123587
- case PragTyp_HEXKEY: {
123588
- if( zRight ){
123589
- u8 iByte;
123590
- int i;
123591
- char zKey[40];
123592
- for(i=0, iByte=0; i<sizeof(zKey)*2 && sqlite3Isxdigit(zRight[i]); i++){
123593
- iByte = (iByte<<4) + sqlite3HexToInt(zRight[i]);
123594
- if( (i&1)!=0 ) zKey[i/2] = iByte;
123595
- }
123596
- if( (pPragma->iArg & 1)==0 ){
123597
- sqlite3_key_v2(db, zDb, zKey, i/2);
123598
- }else{
123599
- sqlite3_rekey_v2(db, zDb, zKey, i/2);
123712
+ char zBuf[40];
123713
+ const char *zKey = zRight;
123714
+ int n;
123715
+ if( pPragma->iArg==2 || pPragma->iArg==3 ){
123716
+ u8 iByte;
123717
+ int i;
123718
+ for(i=0, iByte=0; i<sizeof(zBuf)*2 && sqlite3Isxdigit(zRight[i]); i++){
123719
+ iByte = (iByte<<4) + sqlite3HexToInt(zRight[i]);
123720
+ if( (i&1)!=0 ) zBuf[i/2] = iByte;
123721
+ }
123722
+ zKey = zBuf;
123723
+ n = i/2;
123724
+ }else{
123725
+ n = pPragma->iArg<4 ? sqlite3Strlen30(zRight) : -1;
123726
+ }
123727
+ if( (pPragma->iArg & 1)==0 ){
123728
+ rc = sqlite3_key_v2(db, zDb, zKey, n);
123729
+ }else{
123730
+ rc = sqlite3_rekey_v2(db, zDb, zKey, n);
123731
+ }
123732
+ if( rc==SQLITE_OK && n!=0 ){
123733
+ sqlite3VdbeSetNumCols(v, 1);
123734
+ sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "ok", SQLITE_STATIC);
123735
+ returnSingleText(v, "ok");
123600123736
}
123601123737
}
123602123738
break;
123603123739
}
123604123740
#endif
@@ -129723,10 +129859,14 @@
129723129859
}
129724129860
assert( p->pSrc!=0 );
129725129861
if( (selFlags & SF_Expanded)!=0 ){
129726129862
return WRC_Prune;
129727129863
}
129864
+ if( pWalker->eCode ){
129865
+ /* Renumber selId because it has been copied from a view */
129866
+ p->selId = ++pParse->nSelect;
129867
+ }
129728129868
pTabList = p->pSrc;
129729129869
pEList = p->pEList;
129730129870
sqlite3WithPush(pParse, p->pWith, 0);
129731129871
129732129872
/* Make sure cursor numbers have been assigned to all entries in
@@ -129772,16 +129912,19 @@
129772129912
return WRC_Abort;
129773129913
}
129774129914
#if !defined(SQLITE_OMIT_VIEW) || !defined (SQLITE_OMIT_VIRTUALTABLE)
129775129915
if( IsVirtual(pTab) || pTab->pSelect ){
129776129916
i16 nCol;
129917
+ u8 eCodeOrig = pWalker->eCode;
129777129918
if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
129778129919
assert( pFrom->pSelect==0 );
129779129920
pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
129780129921
nCol = pTab->nCol;
129781129922
pTab->nCol = -1;
129923
+ pWalker->eCode = 1; /* Turn on Select.selId renumbering */
129782129924
sqlite3WalkSelect(pWalker, pFrom->pSelect);
129925
+ pWalker->eCode = eCodeOrig;
129783129926
pTab->nCol = nCol;
129784129927
}
129785129928
#endif
129786129929
}
129787129930
@@ -130027,10 +130170,11 @@
130027130170
w.xSelectCallback2 = 0;
130028130171
sqlite3WalkSelect(&w, pSelect);
130029130172
}
130030130173
w.xSelectCallback = selectExpander;
130031130174
w.xSelectCallback2 = selectPopWith;
130175
+ w.eCode = 0;
130032130176
sqlite3WalkSelect(&w, pSelect);
130033130177
}
130034130178
130035130179
130036130180
#ifndef SQLITE_OMIT_SUBQUERY
@@ -130353,14 +130497,16 @@
130353130497
for(pItem = pTabList->a; pItem<pThis; pItem++){
130354130498
Select *pS1;
130355130499
if( pItem->pSelect==0 ) continue;
130356130500
if( pItem->fg.viaCoroutine ) continue;
130357130501
if( pItem->zName==0 ) continue;
130358
- if( sqlite3_stricmp(pItem->zDatabase, pThis->zDatabase)!=0 ) continue;
130502
+ assert( pItem->pTab!=0 );
130503
+ assert( pThis->pTab!=0 );
130504
+ if( pItem->pTab->pSchema!=pThis->pTab->pSchema ) continue;
130359130505
if( sqlite3_stricmp(pItem->zName, pThis->zName)!=0 ) continue;
130360130506
pS1 = pItem->pSelect;
130361
- if( pThis->pSelect->selId!=pS1->selId ){
130507
+ if( pItem->pTab->pSchema==0 && pThis->pSelect->selId!=pS1->selId ){
130362130508
/* The query flattener left two different CTE tables with identical
130363130509
** names in the same FROM clause. */
130364130510
continue;
130365130511
}
130366130512
if( sqlite3ExprCompare(0, pThis->pSelect->pWhere, pS1->pWhere, -1)
@@ -130388,11 +130534,12 @@
130388130534
** The transformation only works if all of the following are true:
130389130535
**
130390130536
** * The subquery is a UNION ALL of two or more terms
130391130537
** * The subquery does not have a LIMIT clause
130392130538
** * There is no WHERE or GROUP BY or HAVING clauses on the subqueries
130393
-** * The outer query is a simple count(*)
130539
+** * The outer query is a simple count(*) with no WHERE clause or other
130540
+** extraneous syntax.
130394130541
**
130395130542
** Return TRUE if the optimization is undertaken.
130396130543
*/
130397130544
static int countOfViewOptimization(Parse *pParse, Select *p){
130398130545
Select *pSub, *pPrior;
@@ -130399,10 +130546,12 @@
130399130546
Expr *pExpr;
130400130547
Expr *pCount;
130401130548
sqlite3 *db;
130402130549
if( (p->selFlags & SF_Aggregate)==0 ) return 0; /* This is an aggregate */
130403130550
if( p->pEList->nExpr!=1 ) return 0; /* Single result column */
130551
+ if( p->pWhere ) return 0;
130552
+ if( p->pGroupBy ) return 0;
130404130553
pExpr = p->pEList->a[0].pExpr;
130405130554
if( pExpr->op!=TK_AGG_FUNCTION ) return 0; /* Result is an aggregate */
130406130555
if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
130407130556
if( pExpr->x.pList!=0 ) return 0; /* Must be count(*) */
130408130557
if( p->pSrc->nSrc!=1 ) return 0; /* One table in FROM */
@@ -148650,32 +148799,32 @@
148650148799
#ifndef INTERFACE
148651148800
# define INTERFACE 1
148652148801
#endif
148653148802
/************* Begin control #defines *****************************************/
148654148803
#define YYCODETYPE unsigned short int
148655
-#define YYNOCODE 301
148804
+#define YYNOCODE 302
148656148805
#define YYACTIONTYPE unsigned short int
148657148806
#define YYWILDCARD 95
148658148807
#define sqlite3ParserTOKENTYPE Token
148659148808
typedef union {
148660148809
int yyinit;
148661148810
sqlite3ParserTOKENTYPE yy0;
148662
- With* yy59;
148663
- IdList* yy62;
148664
- struct TrigEvent yy90;
148665
- Upsert* yy136;
148666
- struct FrameBound yy201;
148667
- u8 yy238;
148668
- const char* yy294;
148669
- Window* yy295;
148670
- struct {int value; int mask;} yy355;
148671
- ExprList* yy434;
148672
- TriggerStep* yy455;
148673
- Select* yy457;
148674
- SrcList* yy483;
148675
- int yy494;
148676
- Expr* yy524;
148811
+ TriggerStep* yy11;
148812
+ IdList* yy76;
148813
+ ExprList* yy94;
148814
+ Upsert* yy95;
148815
+ int yy100;
148816
+ Expr* yy102;
148817
+ struct {int value; int mask;} yy199;
148818
+ u8 yy218;
148819
+ With* yy243;
148820
+ struct TrigEvent yy298;
148821
+ Window* yy379;
148822
+ struct FrameBound yy389;
148823
+ Select* yy391;
148824
+ SrcList* yy407;
148825
+ const char* yy528;
148677148826
} YYMINORTYPE;
148678148827
#ifndef YYSTACKDEPTH
148679148828
#define YYSTACKDEPTH 100
148680148829
#endif
148681148830
#define sqlite3ParserARG_SDECL
@@ -148687,21 +148836,21 @@
148687148836
#define sqlite3ParserCTX_PDECL ,Parse *pParse
148688148837
#define sqlite3ParserCTX_PARAM ,pParse
148689148838
#define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
148690148839
#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
148691148840
#define YYFALLBACK 1
148692
-#define YYNSTATE 541
148693
-#define YYNRULE 375
148841
+#define YYNSTATE 540
148842
+#define YYNRULE 376
148694148843
#define YYNTOKEN 176
148695
-#define YY_MAX_SHIFT 540
148696
-#define YY_MIN_SHIFTREDUCE 784
148844
+#define YY_MAX_SHIFT 539
148845
+#define YY_MIN_SHIFTREDUCE 783
148697148846
#define YY_MAX_SHIFTREDUCE 1158
148698148847
#define YY_ERROR_ACTION 1159
148699148848
#define YY_ACCEPT_ACTION 1160
148700148849
#define YY_NO_ACTION 1161
148701148850
#define YY_MIN_REDUCE 1162
148702
-#define YY_MAX_REDUCE 1536
148851
+#define YY_MAX_REDUCE 1537
148703148852
/************* End control #defines *******************************************/
148704148853
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
148705148854
148706148855
/* Define the yytestcase() macro to be a no-op if is not already defined
148707148856
** otherwise.
@@ -148766,605 +148915,603 @@
148766148915
** yy_default[] Default action for each state.
148767148916
**
148768148917
*********** Begin parsing tables **********************************************/
148769148918
#define YY_ACTTAB_COUNT (2142)
148770148919
static const YYACTIONTYPE yy_action[] = {
148771
- /* 0 */ 535, 1323, 112, 109, 209, 112, 109, 209, 1160, 1,
148772
- /* 10 */ 1, 540, 2, 1164, 535, 1292, 1228, 1207, 289, 384,
148773
- /* 20 */ 134, 42, 42, 1427, 382, 1228, 9, 1241, 242, 492,
148774
- /* 30 */ 1291, 915, 373, 379, 1026, 70, 70, 427, 1026, 916,
148775
- /* 40 */ 529, 529, 529, 119, 120, 110, 1136, 1136, 981, 984,
148776
- /* 50 */ 974, 974, 117, 117, 118, 118, 118, 118, 380, 264,
148777
- /* 60 */ 264, 264, 264, 1134, 264, 264, 112, 109, 209, 397,
148778
- /* 70 */ 454, 517, 532, 491, 532, 1233, 1233, 532, 239, 206,
148779
- /* 80 */ 493, 112, 109, 209, 464, 219, 118, 118, 118, 118,
148780
- /* 90 */ 111, 393, 440, 444, 16, 16, 116, 116, 116, 116,
148781
- /* 100 */ 115, 115, 114, 114, 114, 113, 415, 971, 971, 982,
148782
- /* 110 */ 985, 235, 1463, 351, 1134, 419, 384, 116, 116, 116,
148783
- /* 120 */ 116, 115, 115, 114, 114, 114, 113, 415, 116, 116,
148784
- /* 130 */ 116, 116, 115, 115, 114, 114, 114, 113, 415, 961,
148920
+ /* 0 */ 112, 109, 209, 112, 109, 209, 1160, 1, 1, 539,
148921
+ /* 10 */ 2, 1164, 490, 1193, 1293, 534, 289, 1196, 134, 383,
148922
+ /* 20 */ 1485, 1428, 1164, 1229, 1208, 1242, 1195, 289, 491, 134,
148923
+ /* 30 */ 373, 915, 1229, 443, 16, 16, 1242, 70, 70, 916,
148924
+ /* 40 */ 242, 1292, 296, 119, 120, 110, 1136, 1136, 981, 984,
148925
+ /* 50 */ 974, 974, 117, 117, 118, 118, 118, 118, 264, 264,
148926
+ /* 60 */ 190, 264, 264, 264, 264, 112, 109, 209, 362, 264,
148927
+ /* 70 */ 264, 531, 376, 497, 531, 1134, 531, 1501, 239, 206,
148928
+ /* 80 */ 338, 9, 531, 242, 219, 1203, 118, 118, 118, 118,
148929
+ /* 90 */ 111, 439, 112, 109, 209, 219, 116, 116, 116, 116,
148930
+ /* 100 */ 115, 115, 114, 114, 114, 113, 414, 115, 115, 114,
148931
+ /* 110 */ 114, 114, 113, 414, 418, 12, 383, 400, 1134, 114,
148932
+ /* 120 */ 114, 114, 113, 414, 1115, 418, 1134, 1392, 116, 116,
148933
+ /* 130 */ 116, 116, 115, 115, 114, 114, 114, 113, 414, 961,
148785148934
/* 140 */ 119, 120, 110, 1136, 1136, 981, 984, 974, 974, 117,
148786
- /* 150 */ 117, 118, 118, 118, 118, 952, 415, 941, 298, 951,
148787
- /* 160 */ 941, 1480, 540, 2, 1164, 1115, 535, 1458, 160, 289,
148788
- /* 170 */ 6, 134, 1504, 389, 406, 975, 338, 1024, 1241, 337,
148789
- /* 180 */ 1089, 1476, 1089, 118, 118, 118, 118, 42, 42, 329,
148935
+ /* 150 */ 117, 118, 118, 118, 118, 952, 534, 414, 941, 951,
148936
+ /* 160 */ 1481, 539, 2, 1164, 1505, 534, 160, 175, 289, 1134,
148937
+ /* 170 */ 134, 434, 312, 297, 1115, 1116, 1117, 1242, 70, 70,
148938
+ /* 180 */ 1089, 338, 1089, 118, 118, 118, 118, 42, 42, 448,
148790148939
/* 190 */ 951, 951, 953, 116, 116, 116, 116, 115, 115, 114,
148791
- /* 200 */ 114, 114, 113, 415, 311, 430, 299, 311, 881, 160,
148792
- /* 210 */ 264, 264, 401, 384, 324, 1115, 1116, 1117, 288, 526,
148793
- /* 220 */ 96, 159, 1441, 532, 141, 116, 116, 116, 116, 115,
148794
- /* 230 */ 115, 114, 114, 114, 113, 415, 219, 119, 120, 110,
148940
+ /* 200 */ 114, 114, 113, 414, 1115, 311, 264, 264, 82, 441,
148941
+ /* 210 */ 264, 264, 190, 383, 284, 12, 288, 525, 407, 531,
148942
+ /* 220 */ 96, 159, 458, 531, 371, 116, 116, 116, 116, 115,
148943
+ /* 230 */ 115, 114, 114, 114, 113, 414, 219, 119, 120, 110,
148795148944
/* 240 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148796
- /* 250 */ 118, 118, 115, 115, 114, 114, 114, 113, 415, 288,
148797
- /* 260 */ 526, 403, 533, 121, 870, 870, 419, 250, 267, 336,
148798
- /* 270 */ 475, 331, 474, 236, 160, 319, 1084, 322, 1465, 329,
148799
- /* 280 */ 350, 12, 535, 384, 502, 1115, 1084, 435, 312, 1084,
148945
+ /* 250 */ 118, 118, 511, 1477, 1115, 1116, 1117, 113, 414, 534,
148946
+ /* 260 */ 528, 528, 528, 121, 534, 1427, 418, 116, 116, 116,
148947
+ /* 270 */ 116, 115, 115, 114, 114, 114, 113, 414, 1464, 351,
148948
+ /* 280 */ 270, 42, 42, 383, 187, 1115, 70, 70, 533, 433,
148800148949
/* 290 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148801
- /* 300 */ 415, 535, 836, 42, 42, 138, 426, 119, 120, 110,
148950
+ /* 300 */ 414, 534, 1339, 405, 159, 411, 410, 119, 120, 110,
148802148951
/* 310 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148803
- /* 320 */ 118, 118, 70, 70, 288, 526, 412, 411, 480, 1457,
148804
- /* 330 */ 335, 79, 6, 473, 1140, 1115, 1116, 1117, 501, 1142,
148805
- /* 340 */ 334, 837, 811, 1484, 512, 1164, 534, 1141, 123, 187,
148806
- /* 350 */ 289, 384, 134, 448, 434, 1115, 80, 349, 498, 1241,
148952
+ /* 320 */ 118, 118, 285, 42, 42, 349, 411, 410, 514, 479,
148953
+ /* 330 */ 1458, 79, 1084, 6, 1140, 1115, 1116, 1117, 480, 1142,
148954
+ /* 340 */ 501, 1115, 1084, 123, 238, 1084, 136, 1141, 1234, 1234,
148955
+ /* 350 */ 1143, 383, 1143, 1115, 167, 426, 80, 447, 512, 1451,
148807148956
/* 360 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148808
- /* 370 */ 415, 1143, 1115, 1143, 459, 119, 120, 110, 1136, 1136,
148957
+ /* 370 */ 414, 1143, 1466, 1143, 350, 119, 120, 110, 1136, 1136,
148809148958
/* 380 */ 981, 984, 974, 974, 117, 117, 118, 118, 118, 118,
148810
- /* 390 */ 404, 264, 264, 811, 1463, 506, 368, 1156, 535, 114,
148811
- /* 400 */ 114, 114, 113, 415, 532, 1115, 1116, 1117, 231, 518,
148812
- /* 410 */ 1500, 472, 469, 468, 175, 497, 422, 219, 1202, 70,
148813
- /* 420 */ 70, 467, 1115, 1116, 1117, 176, 201, 200, 116, 116,
148814
- /* 430 */ 116, 116, 115, 115, 114, 114, 114, 113, 415, 535,
148815
- /* 440 */ 1115, 264, 264, 435, 312, 1115, 273, 419, 384, 513,
148816
- /* 450 */ 1450, 1115, 326, 1084, 532, 517, 82, 1084, 167, 388,
148817
- /* 460 */ 69, 69, 1115, 1084, 519, 509, 1084, 1084, 12, 1157,
148818
- /* 470 */ 1084, 420, 119, 120, 110, 1136, 1136, 981, 984, 974,
148819
- /* 480 */ 974, 117, 117, 118, 118, 118, 118, 258, 258, 535,
148820
- /* 490 */ 1115, 1116, 1117, 1045, 535, 1115, 1116, 1117, 1323, 535,
148821
- /* 500 */ 532, 1115, 1116, 1117, 296, 483, 1211, 818, 1046, 448,
148822
- /* 510 */ 70, 70, 1115, 1116, 1117, 50, 50, 448, 356, 500,
148823
- /* 520 */ 70, 70, 207, 1047, 32, 116, 116, 116, 116, 115,
148824
- /* 530 */ 115, 114, 114, 114, 113, 415, 453, 264, 264, 1115,
148825
- /* 540 */ 450, 449, 961, 508, 856, 384, 517, 5, 900, 822,
148826
- /* 550 */ 532, 484, 181, 1115, 857, 516, 517, 818, 952, 507,
148827
- /* 560 */ 3, 1115, 951, 1231, 1231, 482, 398, 1115, 1095, 119,
148959
+ /* 390 */ 402, 1115, 1116, 1117, 500, 534, 250, 267, 336, 474,
148960
+ /* 400 */ 331, 473, 236, 1115, 1116, 1117, 231, 1115, 329, 471,
148961
+ /* 410 */ 468, 467, 509, 1458, 1464, 505, 6, 70, 70, 466,
148962
+ /* 420 */ 181, 380, 379, 534, 971, 971, 982, 985, 116, 116,
148963
+ /* 430 */ 116, 116, 115, 115, 114, 114, 114, 113, 414, 1115,
148964
+ /* 440 */ 412, 412, 412, 496, 1115, 69, 69, 235, 383, 288,
148965
+ /* 450 */ 525, 273, 326, 516, 337, 458, 1084, 1115, 1116, 1117,
148966
+ /* 460 */ 1232, 1232, 492, 160, 508, 441, 1084, 1067, 1531, 1084,
148967
+ /* 470 */ 207, 1531, 119, 120, 110, 1136, 1136, 981, 984, 974,
148968
+ /* 480 */ 974, 117, 117, 118, 118, 118, 118, 881, 534, 1115,
148969
+ /* 490 */ 1116, 1117, 975, 534, 1115, 1116, 1117, 534, 421, 534,
148970
+ /* 500 */ 141, 534, 176, 356, 517, 1119, 32, 511, 482, 388,
148971
+ /* 510 */ 70, 70, 818, 288, 525, 70, 70, 441, 499, 50,
148972
+ /* 520 */ 50, 70, 70, 70, 70, 116, 116, 116, 116, 115,
148973
+ /* 530 */ 115, 114, 114, 114, 113, 414, 274, 264, 264, 1115,
148974
+ /* 540 */ 1065, 264, 264, 1115, 355, 383, 409, 961, 1439, 822,
148975
+ /* 550 */ 531, 516, 190, 419, 531, 483, 1119, 516, 337, 516,
148976
+ /* 560 */ 518, 1115, 818, 952, 382, 458, 515, 951, 481, 119,
148828148977
/* 570 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
148829
- /* 580 */ 118, 118, 118, 118, 1115, 535, 238, 1115, 1391, 1115,
148830
- /* 590 */ 1116, 1117, 159, 951, 951, 953, 231, 1115, 259, 472,
148831
- /* 600 */ 469, 468, 310, 1115, 1116, 1117, 13, 13, 297, 467,
148832
- /* 610 */ 276, 1115, 1116, 1117, 412, 411, 1095, 1115, 1116, 1117,
148833
- /* 620 */ 395, 355, 116, 116, 116, 116, 115, 115, 114, 114,
148834
- /* 630 */ 114, 113, 415, 208, 1115, 1116, 1117, 1115, 1116, 1117,
148835
- /* 640 */ 264, 264, 384, 337, 902, 393, 815, 1115, 1116, 1117,
148836
- /* 650 */ 413, 413, 413, 532, 112, 109, 209, 309, 900, 1143,
148837
- /* 660 */ 535, 1143, 535, 393, 901, 1210, 119, 120, 110, 1136,
148978
+ /* 580 */ 118, 118, 118, 118, 1338, 278, 1045, 278, 275, 1115,
148979
+ /* 590 */ 1116, 1117, 259, 1115, 1116, 1117, 534, 5, 951, 951,
148980
+ /* 600 */ 953, 1046, 231, 3, 143, 471, 468, 467, 1391, 463,
148981
+ /* 610 */ 1115, 1115, 1116, 1117, 1452, 466, 1047, 836, 70, 70,
148982
+ /* 620 */ 480, 534, 116, 116, 116, 116, 115, 115, 114, 114,
148983
+ /* 630 */ 114, 113, 414, 95, 1115, 287, 235, 856, 902, 420,
148984
+ /* 640 */ 1115, 534, 383, 13, 13, 381, 815, 857, 472, 112,
148985
+ /* 650 */ 109, 209, 1115, 337, 413, 309, 837, 394, 1436, 534,
148986
+ /* 660 */ 1115, 1116, 1117, 54, 54, 291, 119, 120, 110, 1136,
148838148987
/* 670 */ 1136, 981, 984, 974, 974, 117, 117, 118, 118, 118,
148839
- /* 680 */ 118, 13, 13, 13, 13, 265, 265, 535, 143, 264,
148840
- /* 690 */ 264, 288, 526, 535, 1119, 400, 535, 402, 532, 510,
148841
- /* 700 */ 1457, 512, 532, 6, 113, 415, 1067, 1530, 70, 70,
148842
- /* 710 */ 1530, 535, 271, 535, 70, 70, 535, 13, 13, 116,
148843
- /* 720 */ 116, 116, 116, 115, 115, 114, 114, 114, 113, 415,
148844
- /* 730 */ 272, 277, 13, 13, 13, 13, 535, 13, 13, 384,
148845
- /* 740 */ 535, 304, 425, 1100, 284, 1119, 184, 801, 185, 338,
148846
- /* 750 */ 285, 514, 1532, 369, 1239, 1438, 1182, 70, 70, 425,
148847
- /* 760 */ 424, 70, 70, 119, 120, 110, 1136, 1136, 981, 984,
148848
- /* 770 */ 974, 974, 117, 117, 118, 118, 118, 118, 190, 1065,
148849
- /* 780 */ 1067, 1531, 442, 107, 1531, 408, 264, 264, 264, 264,
148850
- /* 790 */ 383, 1396, 261, 410, 95, 900, 485, 414, 421, 532,
148851
- /* 800 */ 1045, 532, 301, 1133, 303, 488, 433, 1451, 1396, 1398,
148852
- /* 810 */ 278, 535, 278, 520, 1435, 1046, 116, 116, 116, 116,
148853
- /* 820 */ 115, 115, 114, 114, 114, 113, 415, 425, 264, 264,
148854
- /* 830 */ 1047, 190, 54, 54, 535, 291, 384, 264, 264, 362,
148855
- /* 840 */ 962, 532, 1004, 376, 1084, 264, 264, 1029, 1029, 456,
148856
- /* 850 */ 532, 523, 270, 1065, 1084, 55, 55, 1084, 532, 442,
148988
+ /* 680 */ 118, 13, 13, 1084, 1115, 1116, 1117, 901, 264, 264,
148989
+ /* 690 */ 1115, 1116, 1117, 1084, 292, 399, 1084, 800, 388, 140,
148990
+ /* 700 */ 295, 531, 1115, 1116, 1117, 403, 447, 532, 534, 870,
148991
+ /* 710 */ 870, 534, 1240, 534, 329, 534, 1185, 389, 534, 116,
148992
+ /* 720 */ 116, 116, 116, 115, 115, 114, 114, 114, 113, 414,
148993
+ /* 730 */ 13, 13, 1024, 13, 13, 13, 13, 13, 13, 383,
148994
+ /* 740 */ 13, 13, 424, 1100, 401, 264, 264, 277, 160, 184,
148995
+ /* 750 */ 1182, 185, 1533, 369, 513, 484, 432, 487, 531, 424,
148996
+ /* 760 */ 423, 1397, 941, 119, 120, 110, 1136, 1136, 981, 984,
148997
+ /* 770 */ 974, 974, 117, 117, 118, 118, 118, 118, 1397, 1399,
148998
+ /* 780 */ 425, 519, 392, 264, 264, 1029, 1029, 455, 264, 264,
148999
+ /* 790 */ 264, 264, 1004, 304, 261, 1278, 531, 900, 288, 525,
149000
+ /* 800 */ 310, 531, 493, 531, 1067, 1532, 458, 387, 1532, 311,
149001
+ /* 810 */ 429, 299, 534, 107, 264, 264, 116, 116, 116, 116,
149002
+ /* 820 */ 115, 115, 114, 114, 114, 113, 414, 531, 424, 1384,
149003
+ /* 830 */ 507, 258, 258, 1246, 55, 55, 383, 1277, 265, 265,
149004
+ /* 840 */ 962, 324, 434, 312, 531, 531, 506, 1397, 1026, 1241,
149005
+ /* 850 */ 298, 531, 1026, 445, 301, 1095, 303, 534, 368, 1156,
148857149006
/* 860 */ 119, 120, 110, 1136, 1136, 981, 984, 974, 974, 117,
148858
- /* 870 */ 117, 118, 118, 118, 118, 535, 1396, 190, 302, 1383,
148859
- /* 880 */ 208, 535, 789, 790, 791, 535, 515, 535, 1323, 371,
148860
- /* 890 */ 337, 234, 233, 232, 459, 515, 15, 15, 459, 477,
148861
- /* 900 */ 459, 459, 44, 44, 136, 900, 56, 56, 57, 57,
148862
- /* 910 */ 1185, 390, 197, 116, 116, 116, 116, 115, 115, 114,
148863
- /* 920 */ 114, 114, 113, 415, 535, 876, 535, 442, 535, 274,
148864
- /* 930 */ 875, 1323, 357, 384, 353, 140, 1426, 946, 1455, 1323,
148865
- /* 940 */ 1390, 6, 1240, 1236, 292, 58, 58, 59, 59, 60,
148866
- /* 950 */ 60, 535, 1456, 384, 535, 6, 399, 119, 120, 110,
149007
+ /* 870 */ 117, 118, 118, 118, 118, 1045, 534, 1065, 534, 15,
149008
+ /* 880 */ 15, 1084, 208, 1324, 453, 452, 534, 1324, 534, 449,
149009
+ /* 890 */ 1046, 1084, 494, 458, 1084, 234, 233, 232, 44, 44,
149010
+ /* 900 */ 56, 56, 319, 1095, 322, 1047, 534, 900, 57, 57,
149011
+ /* 910 */ 58, 58, 534, 116, 116, 116, 116, 115, 115, 114,
149012
+ /* 920 */ 114, 114, 113, 414, 534, 514, 522, 534, 59, 59,
149013
+ /* 930 */ 302, 1157, 534, 383, 60, 60, 1237, 946, 788, 789,
149014
+ /* 940 */ 790, 1459, 1456, 446, 6, 6, 61, 61, 1212, 45,
149015
+ /* 950 */ 45, 534, 396, 383, 46, 46, 397, 119, 120, 110,
148867149016
/* 960 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148868
- /* 970 */ 118, 118, 61, 61, 535, 45, 45, 119, 120, 110,
149017
+ /* 970 */ 118, 118, 428, 48, 48, 534, 392, 119, 120, 110,
148869149018
/* 980 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148870
- /* 990 */ 118, 118, 1477, 479, 202, 46, 46, 275, 95, 455,
148871
- /* 1000 */ 535, 212, 535, 337, 535, 1454, 535, 409, 6, 242,
149019
+ /* 990 */ 118, 118, 1324, 368, 1066, 447, 825, 49, 49, 534,
149020
+ /* 1000 */ 458, 357, 534, 353, 534, 138, 534, 337, 1478, 478,
148872149021
/* 1010 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148873
- /* 1020 */ 415, 48, 48, 49, 49, 62, 62, 63, 63, 535,
149022
+ /* 1020 */ 414, 62, 62, 392, 63, 63, 64, 64, 14, 14,
148874149023
/* 1030 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148875
- /* 1040 */ 415, 535, 459, 535, 1134, 535, 1151, 535, 142, 535,
148876
- /* 1050 */ 64, 64, 535, 1338, 535, 494, 535, 446, 535, 1264,
148877
- /* 1060 */ 535, 1337, 14, 14, 65, 65, 125, 125, 66, 66,
148878
- /* 1070 */ 51, 51, 535, 67, 67, 68, 68, 52, 52, 147,
148879
- /* 1080 */ 147, 148, 148, 1453, 317, 98, 6, 535, 1245, 481,
148880
- /* 1090 */ 535, 827, 535, 75, 75, 1134, 102, 481, 100, 535,
148881
- /* 1100 */ 532, 535, 368, 1066, 1503, 384, 535, 845, 53, 53,
148882
- /* 1110 */ 93, 71, 71, 126, 126, 295, 528, 390, 288, 526,
148883
- /* 1120 */ 72, 72, 127, 127, 139, 384, 38, 128, 128, 119,
149024
+ /* 1040 */ 414, 534, 810, 317, 271, 534, 1457, 825, 534, 6,
149025
+ /* 1050 */ 534, 1324, 534, 142, 534, 1442, 534, 212, 534, 1324,
149026
+ /* 1060 */ 534, 398, 305, 65, 65, 534, 1157, 125, 125, 476,
149027
+ /* 1070 */ 66, 66, 51, 51, 67, 67, 68, 68, 52, 52,
149028
+ /* 1080 */ 147, 147, 148, 148, 534, 98, 534, 75, 75, 276,
149029
+ /* 1090 */ 534, 272, 534, 810, 534, 876, 534, 527, 389, 534,
149030
+ /* 1100 */ 875, 534, 1151, 202, 534, 383, 53, 53, 71, 71,
149031
+ /* 1110 */ 288, 525, 126, 126, 72, 72, 127, 127, 128, 128,
149032
+ /* 1120 */ 454, 124, 124, 146, 146, 383, 145, 145, 408, 119,
148884149033
/* 1130 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
148885
- /* 1140 */ 118, 118, 118, 118, 535, 495, 535, 447, 535, 119,
149034
+ /* 1140 */ 118, 118, 118, 118, 534, 900, 534, 95, 534, 119,
148886149035
/* 1150 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
148887
- /* 1160 */ 118, 118, 118, 118, 235, 124, 124, 146, 146, 145,
148888
- /* 1170 */ 145, 287, 535, 1277, 535, 1157, 535, 391, 161, 263,
148889
- /* 1180 */ 206, 381, 116, 116, 116, 116, 115, 115, 114, 114,
148890
- /* 1190 */ 114, 113, 415, 132, 132, 131, 131, 129, 129, 535,
148891
- /* 1200 */ 30, 535, 116, 116, 116, 116, 115, 115, 114, 114,
148892
- /* 1210 */ 114, 113, 415, 535, 216, 1062, 1276, 535, 370, 535,
148893
- /* 1220 */ 130, 130, 74, 74, 535, 915, 389, 876, 17, 437,
148894
- /* 1230 */ 429, 31, 875, 916, 76, 76, 266, 101, 73, 73,
148895
- /* 1240 */ 43, 43, 835, 834, 308, 47, 47, 95, 825, 943,
148896
- /* 1250 */ 441, 938, 241, 241, 305, 443, 313, 384, 241, 95,
148897
- /* 1260 */ 842, 843, 193, 465, 1209, 327, 237, 436, 95, 1011,
148898
- /* 1270 */ 1007, 909, 873, 237, 241, 107, 1023, 384, 1023, 955,
148899
- /* 1280 */ 1415, 119, 120, 110, 1136, 1136, 981, 984, 974, 974,
148900
- /* 1290 */ 117, 117, 118, 118, 118, 118, 1022, 809, 1022, 825,
149036
+ /* 1160 */ 118, 118, 118, 118, 390, 161, 132, 132, 131, 131,
149037
+ /* 1170 */ 129, 129, 534, 915, 534, 1455, 534, 1454, 6, 1416,
149038
+ /* 1180 */ 6, 916, 116, 116, 116, 116, 115, 115, 114, 114,
149039
+ /* 1190 */ 114, 113, 414, 1415, 130, 130, 74, 74, 76, 76,
149040
+ /* 1200 */ 534, 30, 116, 116, 116, 116, 115, 115, 114, 114,
149041
+ /* 1210 */ 114, 113, 414, 534, 263, 206, 534, 1133, 1504, 93,
149042
+ /* 1220 */ 876, 845, 73, 73, 102, 875, 100, 139, 17, 38,
149043
+ /* 1230 */ 208, 1062, 31, 450, 370, 43, 43, 101, 47, 47,
149044
+ /* 1240 */ 827, 216, 436, 308, 943, 440, 95, 241, 241, 442,
149045
+ /* 1250 */ 313, 464, 241, 95, 237, 900, 327, 383, 266, 95,
149046
+ /* 1260 */ 835, 834, 193, 335, 938, 314, 1011, 435, 842, 843,
149047
+ /* 1270 */ 955, 1007, 909, 334, 237, 241, 873, 383, 1023, 107,
149048
+ /* 1280 */ 1023, 119, 120, 110, 1136, 1136, 981, 984, 974, 974,
149049
+ /* 1290 */ 117, 117, 118, 118, 118, 118, 1022, 808, 1022, 1274,
148901149050
/* 1300 */ 137, 119, 108, 110, 1136, 1136, 981, 984, 974, 974,
148902
- /* 1310 */ 117, 117, 118, 118, 118, 118, 874, 1414, 451, 107,
148903
- /* 1320 */ 1011, 314, 1273, 318, 218, 321, 323, 325, 1224, 1208,
148904
- /* 1330 */ 955, 330, 339, 340, 116, 116, 116, 116, 115, 115,
148905
- /* 1340 */ 114, 114, 114, 113, 415, 1285, 1322, 1260, 1493, 1470,
148906
- /* 1350 */ 1271, 283, 521, 1328, 116, 116, 116, 116, 115, 115,
148907
- /* 1360 */ 114, 114, 114, 113, 415, 1191, 1184, 1173, 1172, 1174,
148908
- /* 1370 */ 522, 1487, 211, 460, 384, 256, 199, 367, 1257, 342,
148909
- /* 1380 */ 195, 470, 307, 344, 11, 333, 525, 445, 1307, 1315,
148910
- /* 1390 */ 375, 203, 1207, 1151, 384, 346, 1387, 188, 360, 120,
149051
+ /* 1310 */ 117, 117, 118, 118, 118, 118, 874, 1011, 318, 107,
149052
+ /* 1320 */ 321, 955, 323, 325, 1225, 1211, 197, 1210, 1209, 330,
149053
+ /* 1330 */ 339, 1265, 340, 283, 116, 116, 116, 116, 115, 115,
149054
+ /* 1340 */ 114, 114, 114, 113, 414, 1286, 1323, 1261, 1471, 1272,
149055
+ /* 1350 */ 520, 218, 521, 1329, 116, 116, 116, 116, 115, 115,
149056
+ /* 1360 */ 114, 114, 114, 113, 414, 1192, 1184, 1173, 1172, 1174,
149057
+ /* 1370 */ 1494, 1488, 459, 256, 383, 1258, 342, 199, 367, 344,
149058
+ /* 1380 */ 211, 195, 307, 444, 11, 346, 469, 333, 1308, 1316,
149059
+ /* 1390 */ 375, 427, 203, 360, 383, 1388, 188, 1387, 189, 120,
148911149060
/* 1400 */ 110, 1136, 1136, 981, 984, 974, 974, 117, 117, 118,
148912
- /* 1410 */ 118, 118, 118, 1386, 428, 1490, 245, 300, 348, 1148,
149061
+ /* 1410 */ 118, 118, 118, 1208, 1151, 300, 348, 1491, 245, 1148,
148913149062
/* 1420 */ 110, 1136, 1136, 981, 984, 974, 974, 117, 117, 118,
148914
- /* 1430 */ 118, 118, 118, 189, 198, 1434, 1432, 78, 81, 163,
148915
- /* 1440 */ 82, 392, 439, 1392, 173, 105, 527, 35, 4, 157,
148916
- /* 1450 */ 1312, 116, 116, 116, 116, 115, 115, 114, 114, 114,
148917
- /* 1460 */ 113, 415, 530, 165, 93, 1304, 431, 432, 168, 463,
148918
- /* 1470 */ 221, 116, 116, 116, 116, 115, 115, 114, 114, 114,
148919
- /* 1480 */ 113, 415, 169, 452, 170, 416, 171, 374, 372, 438,
148920
- /* 1490 */ 36, 1318, 177, 225, 1381, 87, 458, 524, 1403, 316,
148921
- /* 1500 */ 257, 105, 527, 227, 4, 182, 461, 160, 320, 228,
148922
- /* 1510 */ 377, 1175, 476, 229, 1227, 1226, 405, 1225, 530, 1218,
148923
- /* 1520 */ 961, 378, 1199, 1198, 827, 332, 103, 103, 1197, 407,
148924
- /* 1530 */ 8, 1217, 1502, 104, 487, 416, 537, 536, 281, 282,
148925
- /* 1540 */ 951, 416, 490, 1268, 496, 92, 341, 243, 1269, 343,
148926
- /* 1550 */ 244, 1267, 122, 524, 345, 1461, 515, 288, 526, 10,
148927
- /* 1560 */ 354, 1266, 1460, 352, 504, 1250, 99, 1367, 94, 503,
148928
- /* 1570 */ 499, 951, 951, 953, 954, 27, 961, 347, 1249, 194,
148929
- /* 1580 */ 251, 358, 103, 103, 359, 1181, 34, 538, 1110, 104,
148930
- /* 1590 */ 255, 416, 537, 536, 286, 252, 951, 254, 539, 149,
148931
- /* 1600 */ 1170, 1419, 1165, 1420, 1418, 150, 1417, 135, 279, 785,
148932
- /* 1610 */ 151, 417, 1195, 196, 290, 210, 386, 1194, 269, 387,
148933
- /* 1620 */ 162, 1021, 133, 77, 1192, 1019, 935, 951, 951, 953,
148934
- /* 1630 */ 954, 27, 1479, 1104, 418, 164, 153, 268, 217, 166,
148935
- /* 1640 */ 859, 306, 366, 366, 365, 253, 363, 220, 1035, 798,
148936
- /* 1650 */ 172, 939, 105, 527, 155, 4, 394, 174, 396, 156,
148937
- /* 1660 */ 83, 1038, 213, 84, 294, 85, 86, 223, 222, 530,
148938
- /* 1670 */ 1034, 144, 293, 18, 224, 315, 241, 1027, 1145, 178,
148939
- /* 1680 */ 457, 226, 179, 37, 800, 334, 462, 230, 328, 466,
148940
- /* 1690 */ 180, 471, 416, 88, 19, 20, 89, 280, 838, 158,
148941
- /* 1700 */ 191, 90, 215, 478, 524, 1097, 204, 192, 987, 91,
148942
- /* 1710 */ 152, 1070, 39, 154, 1071, 504, 486, 40, 489, 205,
148943
- /* 1720 */ 505, 260, 105, 527, 214, 4, 908, 961, 262, 183,
148944
- /* 1730 */ 240, 21, 903, 103, 103, 107, 22, 1086, 23, 530,
148945
- /* 1740 */ 104, 1088, 416, 537, 536, 24, 1093, 951, 25, 1074,
148946
- /* 1750 */ 1090, 1094, 7, 33, 511, 186, 26, 1002, 385, 95,
148947
- /* 1760 */ 988, 986, 416, 288, 526, 990, 1044, 246, 1043, 247,
148948
- /* 1770 */ 991, 28, 41, 106, 524, 956, 810, 29, 951, 951,
148949
- /* 1780 */ 953, 954, 27, 531, 361, 504, 423, 248, 869, 249,
148950
- /* 1790 */ 503, 1495, 364, 1105, 1161, 1494, 1161, 961, 1161, 1161,
149063
+ /* 1430 */ 118, 118, 118, 198, 1435, 1433, 524, 78, 391, 163,
149064
+ /* 1440 */ 82, 1393, 438, 173, 81, 105, 526, 1313, 4, 35,
149065
+ /* 1450 */ 157, 116, 116, 116, 116, 115, 115, 114, 114, 114,
149066
+ /* 1460 */ 113, 414, 529, 165, 93, 430, 1305, 168, 169, 431,
149067
+ /* 1470 */ 462, 116, 116, 116, 116, 115, 115, 114, 114, 114,
149068
+ /* 1480 */ 113, 414, 170, 171, 221, 415, 372, 437, 1319, 177,
149069
+ /* 1490 */ 374, 36, 451, 225, 1382, 87, 457, 523, 257, 1404,
149070
+ /* 1500 */ 316, 105, 526, 227, 4, 182, 460, 160, 320, 228,
149071
+ /* 1510 */ 377, 1175, 475, 229, 1228, 404, 1227, 1226, 529, 827,
149072
+ /* 1520 */ 961, 1219, 378, 1200, 1199, 406, 103, 103, 1218, 332,
149073
+ /* 1530 */ 8, 281, 1198, 104, 1503, 415, 536, 535, 486, 282,
149074
+ /* 1540 */ 951, 415, 489, 495, 92, 244, 1269, 341, 243, 122,
149075
+ /* 1550 */ 1270, 343, 514, 523, 1268, 1462, 10, 288, 525, 345,
149076
+ /* 1560 */ 1461, 354, 99, 352, 503, 94, 1267, 347, 1251, 502,
149077
+ /* 1570 */ 498, 951, 951, 953, 954, 27, 961, 1250, 194, 358,
149078
+ /* 1580 */ 251, 359, 103, 103, 1181, 34, 537, 1110, 252, 104,
149079
+ /* 1590 */ 254, 415, 536, 535, 255, 1368, 951, 1420, 286, 538,
149080
+ /* 1600 */ 1170, 1165, 1421, 135, 1419, 1418, 149, 150, 279, 784,
149081
+ /* 1610 */ 416, 196, 151, 290, 210, 200, 77, 385, 269, 386,
149082
+ /* 1620 */ 133, 162, 935, 1021, 201, 1019, 153, 951, 951, 953,
149083
+ /* 1630 */ 954, 27, 1480, 1104, 417, 164, 217, 268, 859, 166,
149084
+ /* 1640 */ 306, 1035, 366, 366, 365, 253, 363, 220, 172, 797,
149085
+ /* 1650 */ 939, 155, 105, 526, 393, 4, 395, 174, 156, 83,
149086
+ /* 1660 */ 1038, 84, 213, 85, 294, 222, 86, 223, 1034, 529,
149087
+ /* 1670 */ 144, 18, 293, 224, 315, 456, 241, 1027, 1145, 178,
149088
+ /* 1680 */ 226, 179, 37, 799, 334, 461, 230, 465, 470, 838,
149089
+ /* 1690 */ 180, 88, 415, 19, 280, 328, 20, 89, 90, 158,
149090
+ /* 1700 */ 191, 477, 215, 1097, 523, 204, 192, 987, 91, 1070,
149091
+ /* 1710 */ 152, 39, 485, 154, 1071, 503, 40, 488, 205, 260,
149092
+ /* 1720 */ 504, 262, 105, 526, 214, 4, 908, 961, 183, 240,
149093
+ /* 1730 */ 903, 107, 1086, 103, 103, 21, 22, 1088, 23, 529,
149094
+ /* 1740 */ 104, 24, 415, 536, 535, 1090, 1093, 951, 1094, 25,
149095
+ /* 1750 */ 1074, 33, 7, 26, 510, 1002, 247, 186, 384, 95,
149096
+ /* 1760 */ 988, 986, 415, 288, 525, 990, 1044, 246, 1043, 991,
149097
+ /* 1770 */ 28, 41, 530, 956, 523, 809, 106, 29, 951, 951,
149098
+ /* 1780 */ 953, 954, 27, 869, 361, 503, 422, 248, 364, 1105,
149099
+ /* 1790 */ 502, 249, 1161, 1496, 1495, 1161, 1161, 961, 1161, 1161,
148951149100
/* 1800 */ 1161, 1161, 1161, 103, 103, 1161, 1161, 1161, 1161, 1161,
148952
- /* 1810 */ 104, 1161, 416, 537, 536, 1104, 418, 951, 1161, 268,
149101
+ /* 1810 */ 104, 1161, 415, 536, 535, 1104, 417, 951, 1161, 268,
148953149102
/* 1820 */ 1161, 1161, 1161, 1161, 366, 366, 365, 253, 363, 1161,
148954
- /* 1830 */ 1161, 798, 1161, 1161, 1161, 1161, 105, 527, 1161, 4,
149103
+ /* 1830 */ 1161, 797, 1161, 1161, 1161, 1161, 105, 526, 1161, 4,
148955149104
/* 1840 */ 1161, 1161, 1161, 1161, 213, 1161, 294, 1161, 951, 951,
148956
- /* 1850 */ 953, 954, 27, 530, 293, 1161, 1161, 1161, 1161, 1161,
149105
+ /* 1850 */ 953, 954, 27, 529, 293, 1161, 1161, 1161, 1161, 1161,
148957149106
/* 1860 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148958
- /* 1870 */ 1161, 1161, 1161, 1161, 1161, 1161, 416, 1161, 1161, 1161,
148959
- /* 1880 */ 1161, 1161, 1161, 1161, 215, 1161, 1161, 1161, 524, 1161,
148960
- /* 1890 */ 1161, 1161, 152, 1161, 1161, 154, 105, 527, 1161, 4,
149107
+ /* 1870 */ 1161, 1161, 1161, 1161, 1161, 1161, 415, 1161, 1161, 1161,
149108
+ /* 1880 */ 1161, 1161, 1161, 1161, 215, 1161, 1161, 1161, 523, 1161,
149109
+ /* 1890 */ 1161, 1161, 152, 1161, 1161, 154, 105, 526, 1161, 4,
148961149110
/* 1900 */ 1161, 1161, 1161, 1161, 1161, 1161, 214, 1161, 1161, 1161,
148962
- /* 1910 */ 1161, 961, 1161, 530, 1161, 1161, 1161, 103, 103, 880,
148963
- /* 1920 */ 1161, 1161, 1161, 1161, 104, 1161, 416, 537, 536, 1161,
148964
- /* 1930 */ 1161, 951, 1161, 1161, 1161, 1161, 416, 1161, 1161, 1161,
148965
- /* 1940 */ 385, 1161, 1161, 1161, 1161, 288, 526, 1161, 524, 1161,
148966
- /* 1950 */ 1161, 1161, 1161, 1161, 1161, 1161, 97, 527, 1161, 4,
148967
- /* 1960 */ 1161, 1161, 951, 951, 953, 954, 27, 1161, 423, 1161,
148968
- /* 1970 */ 1161, 961, 1161, 530, 1161, 1161, 1161, 103, 103, 1161,
148969
- /* 1980 */ 1161, 1161, 1161, 1161, 104, 1161, 416, 537, 536, 1161,
148970
- /* 1990 */ 1161, 951, 268, 1161, 1161, 1161, 416, 366, 366, 365,
148971
- /* 2000 */ 253, 363, 1161, 1161, 798, 1161, 1161, 1161, 524, 1161,
149111
+ /* 1910 */ 1161, 961, 1161, 529, 1161, 1161, 1161, 103, 103, 880,
149112
+ /* 1920 */ 1161, 1161, 1161, 1161, 104, 1161, 415, 536, 535, 1161,
149113
+ /* 1930 */ 1161, 951, 1161, 1161, 1161, 1161, 415, 1161, 1161, 1161,
149114
+ /* 1940 */ 384, 1161, 1161, 1161, 1161, 288, 525, 1161, 523, 1161,
149115
+ /* 1950 */ 1161, 1161, 1161, 1161, 1161, 1161, 97, 526, 1161, 4,
149116
+ /* 1960 */ 1161, 1161, 951, 951, 953, 954, 27, 1161, 422, 1161,
149117
+ /* 1970 */ 1161, 961, 1161, 529, 1161, 1161, 1161, 103, 103, 1161,
149118
+ /* 1980 */ 1161, 1161, 1161, 1161, 104, 1161, 415, 536, 535, 1161,
149119
+ /* 1990 */ 1161, 951, 268, 1161, 1161, 1161, 415, 366, 366, 365,
149120
+ /* 2000 */ 253, 363, 1161, 1161, 797, 1161, 1161, 1161, 523, 1161,
148972149121
/* 2010 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 213, 1161, 294,
148973149122
/* 2020 */ 1161, 1161, 951, 951, 953, 954, 27, 293, 1161, 1161,
148974149123
/* 2030 */ 1161, 961, 1161, 1161, 1161, 1161, 1161, 103, 103, 1161,
148975
- /* 2040 */ 1161, 1161, 1161, 1161, 104, 1161, 416, 537, 536, 1161,
149124
+ /* 2040 */ 1161, 1161, 1161, 1161, 104, 1161, 415, 536, 535, 1161,
148976149125
/* 2050 */ 1161, 951, 1161, 1161, 1161, 1161, 1161, 215, 1161, 1161,
148977149126
/* 2060 */ 1161, 1161, 1161, 1161, 1161, 152, 1161, 1161, 154, 1161,
148978149127
/* 2070 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 214,
148979149128
/* 2080 */ 1161, 1161, 951, 951, 953, 954, 27, 1161, 1161, 1161,
148980149129
/* 2090 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148981149130
/* 2100 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148982
- /* 2110 */ 1161, 1161, 1161, 385, 1161, 1161, 1161, 1161, 288, 526,
149131
+ /* 2110 */ 1161, 1161, 1161, 384, 1161, 1161, 1161, 1161, 288, 525,
148983149132
/* 2120 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148984149133
/* 2130 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148985
- /* 2140 */ 1161, 423,
149134
+ /* 2140 */ 1161, 422,
148986149135
};
148987149136
static const YYCODETYPE yy_lookahead[] = {
148988
- /* 0 */ 184, 184, 259, 260, 261, 259, 260, 261, 176, 177,
148989
- /* 10 */ 178, 179, 180, 181, 184, 208, 212, 213, 186, 19,
148990
- /* 20 */ 188, 205, 206, 280, 205, 221, 22, 195, 24, 195,
148991
- /* 30 */ 208, 31, 195, 205, 29, 205, 206, 255, 33, 39,
148992
- /* 40 */ 200, 201, 202, 43, 44, 45, 46, 47, 48, 49,
148993
- /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 205, 227,
148994
- /* 60 */ 228, 227, 228, 59, 227, 228, 259, 260, 261, 252,
148995
- /* 70 */ 65, 241, 240, 184, 240, 223, 224, 240, 244, 245,
148996
- /* 80 */ 250, 259, 260, 261, 19, 253, 54, 55, 56, 57,
148997
- /* 90 */ 58, 184, 255, 184, 205, 206, 96, 97, 98, 99,
148998
- /* 100 */ 100, 101, 102, 103, 104, 105, 106, 46, 47, 48,
148999
- /* 110 */ 49, 46, 296, 297, 110, 283, 19, 96, 97, 98,
149000
- /* 120 */ 99, 100, 101, 102, 103, 104, 105, 106, 96, 97,
149137
+ /* 0 */ 260, 261, 262, 260, 261, 262, 176, 177, 178, 179,
149138
+ /* 10 */ 180, 181, 184, 206, 209, 184, 186, 206, 188, 19,
149139
+ /* 20 */ 179, 281, 181, 213, 214, 195, 206, 186, 195, 188,
149140
+ /* 30 */ 195, 31, 222, 184, 206, 207, 195, 206, 207, 39,
149141
+ /* 40 */ 24, 209, 184, 43, 44, 45, 46, 47, 48, 49,
149142
+ /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 228, 229,
149143
+ /* 60 */ 184, 228, 229, 228, 229, 260, 261, 262, 192, 228,
149144
+ /* 70 */ 229, 241, 196, 242, 241, 59, 241, 205, 245, 246,
149145
+ /* 80 */ 184, 22, 241, 24, 254, 213, 54, 55, 56, 57,
149146
+ /* 90 */ 58, 256, 260, 261, 262, 254, 96, 97, 98, 99,
149147
+ /* 100 */ 100, 101, 102, 103, 104, 105, 106, 100, 101, 102,
149148
+ /* 110 */ 103, 104, 105, 106, 284, 203, 19, 221, 59, 102,
149149
+ /* 120 */ 103, 104, 105, 106, 59, 284, 110, 269, 96, 97,
149001149150
/* 130 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 94,
149002149151
/* 140 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
149003
- /* 150 */ 53, 54, 55, 56, 57, 110, 106, 73, 251, 114,
149004
- /* 160 */ 73, 178, 179, 180, 181, 59, 184, 292, 81, 186,
149005
- /* 170 */ 295, 188, 218, 108, 19, 114, 184, 11, 195, 184,
149006
- /* 180 */ 83, 184, 85, 54, 55, 56, 57, 205, 206, 124,
149152
+ /* 150 */ 53, 54, 55, 56, 57, 110, 184, 106, 73, 114,
149153
+ /* 160 */ 178, 179, 180, 181, 219, 184, 81, 22, 186, 110,
149154
+ /* 170 */ 188, 121, 122, 195, 109, 110, 111, 195, 206, 207,
149155
+ /* 180 */ 83, 184, 85, 54, 55, 56, 57, 206, 207, 277,
149007149156
/* 190 */ 145, 146, 147, 96, 97, 98, 99, 100, 101, 102,
149008
- /* 200 */ 103, 104, 105, 106, 120, 121, 122, 120, 102, 81,
149009
- /* 210 */ 227, 228, 220, 19, 16, 109, 110, 111, 131, 132,
149010
- /* 220 */ 26, 184, 184, 240, 229, 96, 97, 98, 99, 100,
149011
- /* 230 */ 101, 102, 103, 104, 105, 106, 253, 43, 44, 45,
149157
+ /* 200 */ 103, 104, 105, 106, 59, 120, 228, 229, 143, 184,
149158
+ /* 210 */ 228, 229, 184, 19, 242, 203, 131, 132, 221, 241,
149159
+ /* 220 */ 26, 184, 184, 241, 196, 96, 97, 98, 99, 100,
149160
+ /* 230 */ 101, 102, 103, 104, 105, 106, 254, 43, 44, 45,
149012149161
/* 240 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149013
- /* 250 */ 56, 57, 100, 101, 102, 103, 104, 105, 106, 131,
149014
- /* 260 */ 132, 106, 127, 69, 129, 130, 283, 112, 113, 114,
149015
- /* 270 */ 115, 116, 117, 118, 81, 77, 76, 79, 296, 124,
149016
- /* 280 */ 298, 203, 184, 19, 84, 59, 86, 121, 122, 89,
149162
+ /* 250 */ 56, 57, 184, 184, 109, 110, 111, 105, 106, 184,
149163
+ /* 260 */ 200, 201, 202, 69, 184, 227, 284, 96, 97, 98,
149164
+ /* 270 */ 99, 100, 101, 102, 103, 104, 105, 106, 297, 298,
149165
+ /* 280 */ 255, 206, 207, 19, 272, 59, 206, 207, 184, 277,
149017149166
/* 290 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149018
- /* 300 */ 106, 184, 35, 205, 206, 22, 113, 43, 44, 45,
149167
+ /* 300 */ 106, 184, 259, 19, 184, 100, 101, 43, 44, 45,
149019149168
/* 310 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149020
- /* 320 */ 56, 57, 205, 206, 131, 132, 100, 101, 291, 292,
149021
- /* 330 */ 114, 67, 295, 66, 108, 109, 110, 111, 138, 113,
149022
- /* 340 */ 124, 74, 59, 179, 184, 181, 184, 121, 22, 271,
149023
- /* 350 */ 186, 19, 188, 184, 276, 59, 24, 184, 241, 195,
149169
+ /* 320 */ 56, 57, 242, 206, 207, 184, 100, 101, 138, 292,
149170
+ /* 330 */ 293, 67, 76, 296, 108, 109, 110, 111, 295, 113,
149171
+ /* 340 */ 84, 59, 86, 22, 26, 89, 156, 121, 224, 225,
149172
+ /* 350 */ 145, 19, 147, 59, 72, 256, 24, 184, 290, 291,
149024149173
/* 360 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149025
- /* 370 */ 106, 145, 59, 147, 184, 43, 44, 45, 46, 47,
149174
+ /* 370 */ 106, 145, 297, 147, 299, 43, 44, 45, 46, 47,
149026149175
/* 380 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
149027
- /* 390 */ 123, 227, 228, 110, 296, 297, 22, 23, 184, 102,
149028
- /* 400 */ 103, 104, 105, 106, 240, 109, 110, 111, 112, 195,
149029
- /* 410 */ 204, 115, 116, 117, 22, 184, 226, 253, 212, 205,
149030
- /* 420 */ 206, 125, 109, 110, 111, 22, 100, 101, 96, 97,
149031
- /* 430 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 184,
149032
- /* 440 */ 59, 227, 228, 121, 122, 59, 277, 283, 19, 289,
149033
- /* 450 */ 290, 59, 23, 76, 240, 241, 143, 76, 72, 189,
149034
- /* 460 */ 205, 206, 59, 86, 250, 84, 89, 86, 203, 95,
149035
- /* 470 */ 89, 281, 43, 44, 45, 46, 47, 48, 49, 50,
149036
- /* 480 */ 51, 52, 53, 54, 55, 56, 57, 227, 228, 184,
149037
- /* 490 */ 109, 110, 111, 12, 184, 109, 110, 111, 184, 184,
149038
- /* 500 */ 240, 109, 110, 111, 184, 195, 214, 59, 27, 184,
149039
- /* 510 */ 205, 206, 109, 110, 111, 205, 206, 184, 263, 138,
149040
- /* 520 */ 205, 206, 184, 42, 22, 96, 97, 98, 99, 100,
149041
- /* 530 */ 101, 102, 103, 104, 105, 106, 266, 227, 228, 59,
149042
- /* 540 */ 270, 276, 94, 66, 63, 19, 241, 22, 26, 23,
149043
- /* 550 */ 240, 241, 72, 59, 73, 250, 241, 109, 110, 82,
149044
- /* 560 */ 22, 59, 114, 223, 224, 250, 252, 59, 91, 43,
149176
+ /* 390 */ 106, 109, 110, 111, 138, 184, 112, 113, 114, 115,
149177
+ /* 400 */ 116, 117, 118, 109, 110, 111, 112, 59, 124, 115,
149178
+ /* 410 */ 116, 117, 292, 293, 297, 298, 296, 206, 207, 125,
149179
+ /* 420 */ 72, 100, 101, 184, 46, 47, 48, 49, 96, 97,
149180
+ /* 430 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 59,
149181
+ /* 440 */ 200, 201, 202, 184, 59, 206, 207, 46, 19, 131,
149182
+ /* 450 */ 132, 278, 23, 242, 184, 184, 76, 109, 110, 111,
149183
+ /* 460 */ 224, 225, 251, 81, 84, 184, 86, 22, 23, 89,
149184
+ /* 470 */ 184, 26, 43, 44, 45, 46, 47, 48, 49, 50,
149185
+ /* 480 */ 51, 52, 53, 54, 55, 56, 57, 102, 184, 109,
149186
+ /* 490 */ 110, 111, 114, 184, 109, 110, 111, 184, 227, 184,
149187
+ /* 500 */ 230, 184, 22, 264, 195, 59, 22, 184, 195, 108,
149188
+ /* 510 */ 206, 207, 59, 131, 132, 206, 207, 184, 138, 206,
149189
+ /* 520 */ 207, 206, 207, 206, 207, 96, 97, 98, 99, 100,
149190
+ /* 530 */ 101, 102, 103, 104, 105, 106, 255, 228, 229, 59,
149191
+ /* 540 */ 95, 228, 229, 59, 184, 19, 242, 94, 184, 23,
149192
+ /* 550 */ 241, 242, 184, 282, 241, 242, 110, 242, 184, 242,
149193
+ /* 560 */ 251, 59, 109, 110, 196, 184, 251, 114, 251, 43,
149045149194
/* 570 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
149046
- /* 580 */ 54, 55, 56, 57, 59, 184, 26, 59, 268, 109,
149047
- /* 590 */ 110, 111, 184, 145, 146, 147, 112, 59, 203, 115,
149048
- /* 600 */ 116, 117, 277, 109, 110, 111, 205, 206, 195, 125,
149049
- /* 610 */ 277, 109, 110, 111, 100, 101, 139, 109, 110, 111,
149050
- /* 620 */ 219, 184, 96, 97, 98, 99, 100, 101, 102, 103,
149051
- /* 630 */ 104, 105, 106, 111, 109, 110, 111, 109, 110, 111,
149052
- /* 640 */ 227, 228, 19, 184, 136, 184, 23, 109, 110, 111,
149053
- /* 650 */ 200, 201, 202, 240, 259, 260, 261, 195, 136, 145,
149054
- /* 660 */ 184, 147, 184, 184, 136, 214, 43, 44, 45, 46,
149195
+ /* 580 */ 54, 55, 56, 57, 259, 217, 12, 219, 255, 109,
149196
+ /* 590 */ 110, 111, 203, 109, 110, 111, 184, 22, 145, 146,
149197
+ /* 600 */ 147, 27, 112, 22, 230, 115, 116, 117, 227, 19,
149198
+ /* 610 */ 59, 109, 110, 111, 291, 125, 42, 35, 206, 207,
149199
+ /* 620 */ 295, 184, 96, 97, 98, 99, 100, 101, 102, 103,
149200
+ /* 630 */ 104, 105, 106, 26, 59, 233, 46, 63, 136, 184,
149201
+ /* 640 */ 59, 184, 19, 206, 207, 243, 23, 73, 66, 260,
149202
+ /* 650 */ 261, 262, 59, 184, 242, 195, 74, 220, 184, 184,
149203
+ /* 660 */ 109, 110, 111, 206, 207, 184, 43, 44, 45, 46,
149055149204
/* 670 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
149056
- /* 680 */ 57, 205, 206, 205, 206, 227, 228, 184, 229, 227,
149057
- /* 690 */ 228, 131, 132, 184, 59, 219, 184, 219, 240, 291,
149058
- /* 700 */ 292, 184, 240, 295, 105, 106, 22, 23, 205, 206,
149059
- /* 710 */ 26, 184, 251, 184, 205, 206, 184, 205, 206, 96,
149205
+ /* 680 */ 57, 206, 207, 76, 109, 110, 111, 136, 228, 229,
149206
+ /* 690 */ 109, 110, 111, 86, 184, 220, 89, 21, 108, 230,
149207
+ /* 700 */ 184, 241, 109, 110, 111, 123, 184, 127, 184, 129,
149208
+ /* 710 */ 130, 184, 195, 184, 124, 184, 198, 199, 184, 96,
149060149209
/* 720 */ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
149061
- /* 730 */ 251, 219, 205, 206, 205, 206, 184, 205, 206, 19,
149062
- /* 740 */ 184, 16, 184, 23, 241, 110, 219, 21, 219, 184,
149063
- /* 750 */ 241, 219, 286, 287, 195, 184, 195, 205, 206, 201,
149064
- /* 760 */ 202, 205, 206, 43, 44, 45, 46, 47, 48, 49,
149065
- /* 770 */ 50, 51, 52, 53, 54, 55, 56, 57, 184, 95,
149066
- /* 780 */ 22, 23, 184, 26, 26, 220, 227, 228, 227, 228,
149067
- /* 790 */ 196, 184, 23, 241, 26, 26, 195, 241, 184, 240,
149068
- /* 800 */ 12, 240, 77, 26, 79, 195, 80, 290, 201, 202,
149069
- /* 810 */ 216, 184, 218, 195, 184, 27, 96, 97, 98, 99,
149070
- /* 820 */ 100, 101, 102, 103, 104, 105, 106, 269, 227, 228,
149071
- /* 830 */ 42, 184, 205, 206, 184, 184, 19, 227, 228, 192,
149072
- /* 840 */ 23, 240, 116, 196, 76, 227, 228, 120, 121, 122,
149073
- /* 850 */ 240, 63, 254, 95, 86, 205, 206, 89, 240, 184,
149210
+ /* 730 */ 206, 207, 11, 206, 207, 206, 207, 206, 207, 19,
149211
+ /* 740 */ 206, 207, 184, 23, 220, 228, 229, 220, 81, 220,
149212
+ /* 750 */ 195, 220, 287, 288, 220, 195, 80, 195, 241, 201,
149213
+ /* 760 */ 202, 184, 73, 43, 44, 45, 46, 47, 48, 49,
149214
+ /* 770 */ 50, 51, 52, 53, 54, 55, 56, 57, 201, 202,
149215
+ /* 780 */ 113, 195, 184, 228, 229, 120, 121, 122, 228, 229,
149216
+ /* 790 */ 228, 229, 116, 16, 23, 184, 241, 26, 131, 132,
149217
+ /* 800 */ 278, 241, 19, 241, 22, 23, 184, 189, 26, 120,
149218
+ /* 810 */ 121, 122, 184, 26, 228, 229, 96, 97, 98, 99,
149219
+ /* 820 */ 100, 101, 102, 103, 104, 105, 106, 241, 270, 153,
149220
+ /* 830 */ 66, 228, 229, 229, 206, 207, 19, 184, 228, 229,
149221
+ /* 840 */ 23, 16, 121, 122, 241, 241, 82, 270, 29, 227,
149222
+ /* 850 */ 252, 241, 33, 19, 77, 91, 79, 184, 22, 23,
149074149223
/* 860 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
149075
- /* 870 */ 53, 54, 55, 56, 57, 184, 269, 184, 153, 153,
149076
- /* 880 */ 111, 184, 7, 8, 9, 184, 138, 184, 184, 196,
149077
- /* 890 */ 184, 120, 121, 122, 184, 138, 205, 206, 184, 102,
149078
- /* 900 */ 184, 184, 205, 206, 156, 136, 205, 206, 205, 206,
149079
- /* 910 */ 198, 199, 135, 96, 97, 98, 99, 100, 101, 102,
149080
- /* 920 */ 103, 104, 105, 106, 184, 128, 184, 184, 184, 254,
149081
- /* 930 */ 133, 184, 237, 19, 239, 229, 226, 23, 292, 184,
149082
- /* 940 */ 226, 295, 226, 226, 184, 205, 206, 205, 206, 205,
149083
- /* 950 */ 206, 184, 292, 19, 184, 295, 252, 43, 44, 45,
149224
+ /* 870 */ 53, 54, 55, 56, 57, 12, 184, 95, 184, 206,
149225
+ /* 880 */ 207, 76, 111, 184, 65, 267, 184, 184, 184, 271,
149226
+ /* 890 */ 27, 86, 109, 184, 89, 120, 121, 122, 206, 207,
149227
+ /* 900 */ 206, 207, 77, 139, 79, 42, 184, 136, 206, 207,
149228
+ /* 910 */ 206, 207, 184, 96, 97, 98, 99, 100, 101, 102,
149229
+ /* 920 */ 103, 104, 105, 106, 184, 138, 63, 184, 206, 207,
149230
+ /* 930 */ 153, 95, 184, 19, 206, 207, 227, 23, 7, 8,
149231
+ /* 940 */ 9, 293, 293, 109, 296, 296, 206, 207, 215, 206,
149232
+ /* 950 */ 207, 184, 253, 19, 206, 207, 253, 43, 44, 45,
149084149233
/* 960 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149085
- /* 970 */ 56, 57, 205, 206, 184, 205, 206, 43, 44, 45,
149234
+ /* 970 */ 56, 57, 184, 206, 207, 184, 184, 43, 44, 45,
149086149235
/* 980 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149087
- /* 990 */ 56, 57, 157, 158, 26, 205, 206, 254, 26, 252,
149088
- /* 1000 */ 184, 15, 184, 184, 184, 292, 184, 252, 295, 24,
149236
+ /* 990 */ 56, 57, 184, 22, 23, 184, 59, 206, 207, 184,
149237
+ /* 1000 */ 184, 238, 184, 240, 184, 22, 184, 184, 157, 158,
149089149238
/* 1010 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149090
- /* 1020 */ 106, 205, 206, 205, 206, 205, 206, 205, 206, 184,
149239
+ /* 1020 */ 106, 206, 207, 184, 206, 207, 206, 207, 206, 207,
149091149240
/* 1030 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149092
- /* 1040 */ 106, 184, 184, 184, 59, 184, 60, 184, 229, 184,
149093
- /* 1050 */ 205, 206, 184, 258, 184, 19, 184, 19, 184, 246,
149094
- /* 1060 */ 184, 258, 205, 206, 205, 206, 205, 206, 205, 206,
149095
- /* 1070 */ 205, 206, 184, 205, 206, 205, 206, 205, 206, 205,
149096
- /* 1080 */ 206, 205, 206, 292, 226, 151, 295, 184, 228, 294,
149097
- /* 1090 */ 184, 119, 184, 205, 206, 110, 150, 294, 152, 184,
149098
- /* 1100 */ 240, 184, 22, 23, 23, 19, 184, 26, 205, 206,
149099
- /* 1110 */ 142, 205, 206, 205, 206, 184, 198, 199, 131, 132,
149100
- /* 1120 */ 205, 206, 205, 206, 22, 19, 24, 205, 206, 43,
149241
+ /* 1040 */ 106, 184, 59, 227, 252, 184, 293, 110, 184, 296,
149242
+ /* 1050 */ 184, 184, 184, 230, 184, 184, 184, 15, 184, 184,
149243
+ /* 1060 */ 184, 253, 184, 206, 207, 184, 95, 206, 207, 102,
149244
+ /* 1070 */ 206, 207, 206, 207, 206, 207, 206, 207, 206, 207,
149245
+ /* 1080 */ 206, 207, 206, 207, 184, 151, 184, 206, 207, 278,
149246
+ /* 1090 */ 184, 252, 184, 110, 184, 128, 184, 198, 199, 184,
149247
+ /* 1100 */ 133, 184, 60, 26, 184, 19, 206, 207, 206, 207,
149248
+ /* 1110 */ 131, 132, 206, 207, 206, 207, 206, 207, 206, 207,
149249
+ /* 1120 */ 253, 206, 207, 206, 207, 19, 206, 207, 253, 43,
149101149250
/* 1130 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
149102
- /* 1140 */ 54, 55, 56, 57, 184, 109, 184, 109, 184, 43,
149251
+ /* 1140 */ 54, 55, 56, 57, 184, 26, 184, 26, 184, 43,
149103149252
/* 1150 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
149104
- /* 1160 */ 54, 55, 56, 57, 46, 205, 206, 205, 206, 205,
149105
- /* 1170 */ 206, 232, 184, 184, 184, 95, 184, 284, 285, 244,
149106
- /* 1180 */ 245, 242, 96, 97, 98, 99, 100, 101, 102, 103,
149107
- /* 1190 */ 104, 105, 106, 205, 206, 205, 206, 205, 206, 184,
149108
- /* 1200 */ 22, 184, 96, 97, 98, 99, 100, 101, 102, 103,
149109
- /* 1210 */ 104, 105, 106, 184, 24, 23, 184, 184, 26, 184,
149110
- /* 1220 */ 205, 206, 205, 206, 184, 31, 108, 128, 22, 122,
149111
- /* 1230 */ 184, 53, 133, 39, 205, 206, 22, 151, 205, 206,
149112
- /* 1240 */ 205, 206, 113, 114, 23, 205, 206, 26, 59, 23,
149113
- /* 1250 */ 23, 144, 26, 26, 184, 23, 23, 19, 26, 26,
149114
- /* 1260 */ 7, 8, 24, 23, 214, 23, 26, 61, 26, 59,
149115
- /* 1270 */ 23, 23, 23, 26, 26, 26, 145, 19, 147, 59,
149116
- /* 1280 */ 184, 43, 44, 45, 46, 47, 48, 49, 50, 51,
149117
- /* 1290 */ 52, 53, 54, 55, 56, 57, 145, 23, 147, 110,
149253
+ /* 1160 */ 54, 55, 56, 57, 285, 286, 206, 207, 206, 207,
149254
+ /* 1170 */ 206, 207, 184, 31, 184, 293, 184, 293, 296, 184,
149255
+ /* 1180 */ 296, 39, 96, 97, 98, 99, 100, 101, 102, 103,
149256
+ /* 1190 */ 104, 105, 106, 184, 206, 207, 206, 207, 206, 207,
149257
+ /* 1200 */ 184, 22, 96, 97, 98, 99, 100, 101, 102, 103,
149258
+ /* 1210 */ 104, 105, 106, 184, 245, 246, 184, 26, 23, 142,
149259
+ /* 1220 */ 128, 26, 206, 207, 150, 133, 152, 22, 22, 24,
149260
+ /* 1230 */ 111, 23, 53, 184, 26, 206, 207, 151, 206, 207,
149261
+ /* 1240 */ 119, 24, 122, 23, 23, 23, 26, 26, 26, 23,
149262
+ /* 1250 */ 23, 23, 26, 26, 26, 136, 23, 19, 22, 26,
149263
+ /* 1260 */ 113, 114, 24, 114, 144, 184, 59, 61, 7, 8,
149264
+ /* 1270 */ 59, 23, 23, 124, 26, 26, 23, 19, 145, 26,
149265
+ /* 1280 */ 147, 43, 44, 45, 46, 47, 48, 49, 50, 51,
149266
+ /* 1290 */ 52, 53, 54, 55, 56, 57, 145, 23, 147, 184,
149118149267
/* 1300 */ 26, 43, 44, 45, 46, 47, 48, 49, 50, 51,
149119
- /* 1310 */ 52, 53, 54, 55, 56, 57, 23, 184, 184, 26,
149120
- /* 1320 */ 110, 184, 184, 184, 134, 184, 184, 184, 184, 184,
149121
- /* 1330 */ 110, 184, 184, 184, 96, 97, 98, 99, 100, 101,
149122
- /* 1340 */ 102, 103, 104, 105, 106, 184, 184, 184, 134, 300,
149123
- /* 1350 */ 184, 243, 184, 184, 96, 97, 98, 99, 100, 101,
149268
+ /* 1310 */ 52, 53, 54, 55, 56, 57, 23, 110, 184, 26,
149269
+ /* 1320 */ 184, 110, 184, 184, 184, 215, 135, 215, 184, 184,
149270
+ /* 1330 */ 184, 247, 184, 244, 96, 97, 98, 99, 100, 101,
149271
+ /* 1340 */ 102, 103, 104, 105, 106, 184, 184, 184, 301, 184,
149272
+ /* 1350 */ 184, 134, 225, 184, 96, 97, 98, 99, 100, 101,
149124149273
/* 1360 */ 102, 103, 104, 105, 106, 184, 184, 184, 184, 184,
149125
- /* 1370 */ 224, 184, 282, 273, 19, 272, 203, 182, 243, 243,
149126
- /* 1380 */ 230, 209, 278, 243, 231, 208, 265, 278, 234, 234,
149127
- /* 1390 */ 234, 217, 213, 60, 19, 243, 208, 237, 233, 44,
149274
+ /* 1370 */ 134, 184, 274, 273, 19, 244, 244, 204, 182, 244,
149275
+ /* 1380 */ 283, 231, 279, 279, 232, 244, 210, 209, 235, 235,
149276
+ /* 1390 */ 235, 248, 218, 234, 19, 209, 238, 209, 238, 44,
149128149277
/* 1400 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
149129
- /* 1410 */ 55, 56, 57, 208, 247, 187, 134, 247, 247, 38,
149278
+ /* 1410 */ 55, 56, 57, 214, 60, 248, 248, 187, 134, 38,
149130149279
/* 1420 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
149131
- /* 1430 */ 55, 56, 57, 237, 231, 191, 191, 279, 279, 282,
149132
- /* 1440 */ 143, 191, 108, 268, 22, 19, 20, 256, 22, 43,
149133
- /* 1450 */ 257, 96, 97, 98, 99, 100, 101, 102, 103, 104,
149134
- /* 1460 */ 105, 106, 36, 222, 142, 234, 18, 191, 225, 18,
149135
- /* 1470 */ 190, 96, 97, 98, 99, 100, 101, 102, 103, 104,
149136
- /* 1480 */ 105, 106, 225, 191, 225, 59, 225, 257, 234, 234,
149137
- /* 1490 */ 256, 222, 222, 190, 234, 150, 62, 71, 275, 274,
149138
- /* 1500 */ 191, 19, 20, 190, 22, 22, 210, 81, 191, 190,
149139
- /* 1510 */ 210, 191, 108, 190, 207, 207, 64, 207, 36, 215,
149140
- /* 1520 */ 94, 210, 207, 209, 119, 207, 100, 101, 207, 106,
149141
- /* 1530 */ 48, 215, 207, 107, 210, 109, 110, 111, 267, 267,
149142
- /* 1540 */ 114, 59, 210, 249, 137, 108, 248, 191, 249, 248,
149143
- /* 1550 */ 88, 249, 141, 71, 248, 299, 138, 131, 132, 22,
149144
- /* 1560 */ 191, 249, 299, 237, 82, 238, 150, 262, 140, 87,
149145
- /* 1570 */ 139, 145, 146, 147, 148, 149, 94, 248, 238, 236,
149146
- /* 1580 */ 25, 235, 100, 101, 234, 194, 26, 193, 13, 107,
149147
- /* 1590 */ 6, 109, 110, 111, 264, 185, 114, 185, 183, 197,
149148
- /* 1600 */ 183, 203, 183, 203, 203, 197, 203, 211, 211, 4,
149149
- /* 1610 */ 197, 3, 203, 22, 155, 15, 288, 203, 93, 288,
149150
- /* 1620 */ 285, 23, 16, 203, 203, 23, 132, 145, 146, 147,
149151
- /* 1630 */ 148, 149, 0, 1, 2, 143, 123, 5, 24, 135,
149152
- /* 1640 */ 20, 16, 10, 11, 12, 13, 14, 137, 1, 17,
149153
- /* 1650 */ 135, 144, 19, 20, 123, 22, 61, 143, 37, 123,
149154
- /* 1660 */ 53, 109, 30, 53, 32, 53, 53, 134, 34, 36,
149155
- /* 1670 */ 1, 5, 40, 22, 108, 153, 26, 68, 75, 68,
149156
- /* 1680 */ 41, 134, 108, 24, 20, 124, 19, 118, 23, 67,
149157
- /* 1690 */ 22, 67, 59, 22, 22, 22, 22, 67, 28, 37,
149158
- /* 1700 */ 23, 142, 70, 22, 71, 23, 157, 23, 23, 26,
149159
- /* 1710 */ 78, 23, 22, 81, 23, 82, 24, 22, 24, 134,
149160
- /* 1720 */ 87, 23, 19, 20, 92, 22, 109, 94, 23, 22,
149161
- /* 1730 */ 34, 34, 136, 100, 101, 26, 34, 85, 34, 36,
149162
- /* 1740 */ 107, 83, 109, 110, 111, 34, 90, 114, 34, 23,
149163
- /* 1750 */ 75, 75, 44, 22, 24, 26, 34, 23, 126, 26,
149164
- /* 1760 */ 23, 23, 59, 131, 132, 23, 23, 26, 23, 22,
149165
- /* 1770 */ 11, 22, 22, 22, 71, 23, 23, 22, 145, 146,
149166
- /* 1780 */ 147, 148, 149, 26, 23, 82, 154, 134, 128, 134,
149167
- /* 1790 */ 87, 134, 15, 1, 301, 134, 301, 94, 301, 301,
149168
- /* 1800 */ 301, 301, 301, 100, 101, 301, 301, 301, 301, 301,
149169
- /* 1810 */ 107, 301, 109, 110, 111, 1, 2, 114, 301, 5,
149170
- /* 1820 */ 301, 301, 301, 301, 10, 11, 12, 13, 14, 301,
149171
- /* 1830 */ 301, 17, 301, 301, 301, 301, 19, 20, 301, 22,
149172
- /* 1840 */ 301, 301, 301, 301, 30, 301, 32, 301, 145, 146,
149173
- /* 1850 */ 147, 148, 149, 36, 40, 301, 301, 301, 301, 301,
149174
- /* 1860 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149175
- /* 1870 */ 301, 301, 301, 301, 301, 301, 59, 301, 301, 301,
149176
- /* 1880 */ 301, 301, 301, 301, 70, 301, 301, 301, 71, 301,
149177
- /* 1890 */ 301, 301, 78, 301, 301, 81, 19, 20, 301, 22,
149178
- /* 1900 */ 301, 301, 301, 301, 301, 301, 92, 301, 301, 301,
149179
- /* 1910 */ 301, 94, 301, 36, 301, 301, 301, 100, 101, 102,
149180
- /* 1920 */ 301, 301, 301, 301, 107, 301, 109, 110, 111, 301,
149181
- /* 1930 */ 301, 114, 301, 301, 301, 301, 59, 301, 301, 301,
149182
- /* 1940 */ 126, 301, 301, 301, 301, 131, 132, 301, 71, 301,
149183
- /* 1950 */ 301, 301, 301, 301, 301, 301, 19, 20, 301, 22,
149184
- /* 1960 */ 301, 301, 145, 146, 147, 148, 149, 301, 154, 301,
149185
- /* 1970 */ 301, 94, 301, 36, 301, 301, 301, 100, 101, 301,
149186
- /* 1980 */ 301, 301, 301, 301, 107, 301, 109, 110, 111, 301,
149187
- /* 1990 */ 301, 114, 5, 301, 301, 301, 59, 10, 11, 12,
149188
- /* 2000 */ 13, 14, 301, 301, 17, 301, 301, 301, 71, 301,
149189
- /* 2010 */ 301, 301, 301, 301, 301, 301, 301, 30, 301, 32,
149190
- /* 2020 */ 301, 301, 145, 146, 147, 148, 149, 40, 301, 301,
149191
- /* 2030 */ 301, 94, 301, 301, 301, 301, 301, 100, 101, 301,
149192
- /* 2040 */ 301, 301, 301, 301, 107, 301, 109, 110, 111, 301,
149193
- /* 2050 */ 301, 114, 301, 301, 301, 301, 301, 70, 301, 301,
149194
- /* 2060 */ 301, 301, 301, 301, 301, 78, 301, 301, 81, 301,
149195
- /* 2070 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 92,
149196
- /* 2080 */ 301, 301, 145, 146, 147, 148, 149, 301, 301, 301,
149197
- /* 2090 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149198
- /* 2100 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149199
- /* 2110 */ 301, 301, 301, 126, 301, 301, 301, 301, 131, 132,
149200
- /* 2120 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149201
- /* 2130 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149202
- /* 2140 */ 301, 154, 301, 301, 301, 301, 301, 301, 301, 301,
149203
- /* 2150 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149204
- /* 2160 */ 301, 301, 301, 301, 301, 301, 301, 301, 301,
149205
-};
149206
-#define YY_SHIFT_COUNT (540)
149280
+ /* 1430 */ 55, 56, 57, 232, 191, 191, 266, 280, 191, 283,
149281
+ /* 1440 */ 143, 269, 108, 22, 280, 19, 20, 258, 22, 257,
149282
+ /* 1450 */ 43, 96, 97, 98, 99, 100, 101, 102, 103, 104,
149283
+ /* 1460 */ 105, 106, 36, 223, 142, 18, 235, 226, 226, 191,
149284
+ /* 1470 */ 18, 96, 97, 98, 99, 100, 101, 102, 103, 104,
149285
+ /* 1480 */ 105, 106, 226, 226, 190, 59, 235, 235, 223, 223,
149286
+ /* 1490 */ 258, 257, 191, 190, 235, 150, 62, 71, 191, 276,
149287
+ /* 1500 */ 275, 19, 20, 190, 22, 22, 211, 81, 191, 190,
149288
+ /* 1510 */ 211, 191, 108, 190, 208, 64, 208, 208, 36, 119,
149289
+ /* 1520 */ 94, 216, 211, 208, 210, 106, 100, 101, 216, 208,
149290
+ /* 1530 */ 48, 268, 208, 107, 208, 109, 110, 111, 211, 268,
149291
+ /* 1540 */ 114, 59, 211, 137, 108, 88, 250, 249, 191, 141,
149292
+ /* 1550 */ 250, 249, 138, 71, 250, 300, 22, 131, 132, 249,
149293
+ /* 1560 */ 300, 191, 150, 238, 82, 140, 250, 249, 239, 87,
149294
+ /* 1570 */ 139, 145, 146, 147, 148, 149, 94, 239, 237, 236,
149295
+ /* 1580 */ 25, 235, 100, 101, 194, 26, 193, 13, 185, 107,
149296
+ /* 1590 */ 185, 109, 110, 111, 6, 263, 114, 203, 265, 183,
149297
+ /* 1600 */ 183, 183, 203, 212, 203, 203, 197, 197, 212, 4,
149298
+ /* 1610 */ 3, 22, 197, 155, 15, 204, 203, 289, 93, 289,
149299
+ /* 1620 */ 16, 286, 132, 23, 204, 23, 123, 145, 146, 147,
149300
+ /* 1630 */ 148, 149, 0, 1, 2, 143, 24, 5, 20, 135,
149301
+ /* 1640 */ 16, 1, 10, 11, 12, 13, 14, 137, 135, 17,
149302
+ /* 1650 */ 144, 123, 19, 20, 61, 22, 37, 143, 123, 53,
149303
+ /* 1660 */ 109, 53, 30, 53, 32, 34, 53, 134, 1, 36,
149304
+ /* 1670 */ 5, 22, 40, 108, 153, 41, 26, 68, 75, 68,
149305
+ /* 1680 */ 134, 108, 24, 20, 124, 19, 118, 67, 67, 28,
149306
+ /* 1690 */ 22, 22, 59, 22, 67, 23, 22, 22, 142, 37,
149307
+ /* 1700 */ 23, 22, 70, 23, 71, 157, 23, 23, 26, 23,
149308
+ /* 1710 */ 78, 22, 24, 81, 23, 82, 22, 24, 134, 23,
149309
+ /* 1720 */ 87, 23, 19, 20, 92, 22, 109, 94, 22, 34,
149310
+ /* 1730 */ 136, 26, 85, 100, 101, 34, 34, 83, 34, 36,
149311
+ /* 1740 */ 107, 34, 109, 110, 111, 75, 90, 114, 75, 34,
149312
+ /* 1750 */ 23, 22, 44, 34, 24, 23, 22, 26, 126, 26,
149313
+ /* 1760 */ 23, 23, 59, 131, 132, 23, 23, 26, 23, 11,
149314
+ /* 1770 */ 22, 22, 26, 23, 71, 23, 22, 22, 145, 146,
149315
+ /* 1780 */ 147, 148, 149, 128, 23, 82, 154, 134, 15, 1,
149316
+ /* 1790 */ 87, 134, 302, 134, 134, 302, 302, 94, 302, 302,
149317
+ /* 1800 */ 302, 302, 302, 100, 101, 302, 302, 302, 302, 302,
149318
+ /* 1810 */ 107, 302, 109, 110, 111, 1, 2, 114, 302, 5,
149319
+ /* 1820 */ 302, 302, 302, 302, 10, 11, 12, 13, 14, 302,
149320
+ /* 1830 */ 302, 17, 302, 302, 302, 302, 19, 20, 302, 22,
149321
+ /* 1840 */ 302, 302, 302, 302, 30, 302, 32, 302, 145, 146,
149322
+ /* 1850 */ 147, 148, 149, 36, 40, 302, 302, 302, 302, 302,
149323
+ /* 1860 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149324
+ /* 1870 */ 302, 302, 302, 302, 302, 302, 59, 302, 302, 302,
149325
+ /* 1880 */ 302, 302, 302, 302, 70, 302, 302, 302, 71, 302,
149326
+ /* 1890 */ 302, 302, 78, 302, 302, 81, 19, 20, 302, 22,
149327
+ /* 1900 */ 302, 302, 302, 302, 302, 302, 92, 302, 302, 302,
149328
+ /* 1910 */ 302, 94, 302, 36, 302, 302, 302, 100, 101, 102,
149329
+ /* 1920 */ 302, 302, 302, 302, 107, 302, 109, 110, 111, 302,
149330
+ /* 1930 */ 302, 114, 302, 302, 302, 302, 59, 302, 302, 302,
149331
+ /* 1940 */ 126, 302, 302, 302, 302, 131, 132, 302, 71, 302,
149332
+ /* 1950 */ 302, 302, 302, 302, 302, 302, 19, 20, 302, 22,
149333
+ /* 1960 */ 302, 302, 145, 146, 147, 148, 149, 302, 154, 302,
149334
+ /* 1970 */ 302, 94, 302, 36, 302, 302, 302, 100, 101, 302,
149335
+ /* 1980 */ 302, 302, 302, 302, 107, 302, 109, 110, 111, 302,
149336
+ /* 1990 */ 302, 114, 5, 302, 302, 302, 59, 10, 11, 12,
149337
+ /* 2000 */ 13, 14, 302, 302, 17, 302, 302, 302, 71, 302,
149338
+ /* 2010 */ 302, 302, 302, 302, 302, 302, 302, 30, 302, 32,
149339
+ /* 2020 */ 302, 302, 145, 146, 147, 148, 149, 40, 302, 302,
149340
+ /* 2030 */ 302, 94, 302, 302, 302, 302, 302, 100, 101, 302,
149341
+ /* 2040 */ 302, 302, 302, 302, 107, 302, 109, 110, 111, 302,
149342
+ /* 2050 */ 302, 114, 302, 302, 302, 302, 302, 70, 302, 302,
149343
+ /* 2060 */ 302, 302, 302, 302, 302, 78, 302, 302, 81, 302,
149344
+ /* 2070 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 92,
149345
+ /* 2080 */ 302, 302, 145, 146, 147, 148, 149, 302, 302, 302,
149346
+ /* 2090 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149347
+ /* 2100 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149348
+ /* 2110 */ 302, 302, 302, 126, 302, 302, 302, 302, 131, 132,
149349
+ /* 2120 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149350
+ /* 2130 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149351
+ /* 2140 */ 302, 154, 302, 302, 302, 302, 302, 302, 302, 302,
149352
+ /* 2150 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149353
+ /* 2160 */ 302, 302, 302, 302, 302, 302, 302, 302, 302,
149354
+};
149355
+#define YY_SHIFT_COUNT (539)
149207149356
#define YY_SHIFT_MIN (0)
149208149357
#define YY_SHIFT_MAX (1987)
149209149358
static const unsigned short int yy_shift_ofst[] = {
149210
- /* 0 */ 1814, 1632, 1987, 1426, 1426, 128, 1482, 1633, 1703, 1877,
149211
- /* 10 */ 1877, 1877, 87, 0, 0, 264, 1106, 1877, 1877, 1877,
149359
+ /* 0 */ 1814, 1632, 1987, 1426, 1426, 382, 1482, 1633, 1703, 1877,
149360
+ /* 10 */ 1877, 1877, 85, 0, 0, 264, 1106, 1877, 1877, 1877,
149212149361
/* 20 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149213
- /* 30 */ 226, 226, 381, 381, 296, 193, 128, 128, 128, 128,
149214
- /* 40 */ 128, 128, 97, 194, 332, 429, 526, 623, 720, 817,
149362
+ /* 30 */ 226, 226, 380, 380, 294, 667, 382, 382, 382, 382,
149363
+ /* 40 */ 382, 382, 97, 194, 332, 429, 526, 623, 720, 817,
149215149364
/* 50 */ 914, 934, 1086, 1238, 1106, 1106, 1106, 1106, 1106, 1106,
149216149365
/* 60 */ 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
149217149366
/* 70 */ 1106, 1106, 1258, 1106, 1355, 1375, 1375, 1817, 1877, 1877,
149218149367
/* 80 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149219149368
/* 90 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149220149369
/* 100 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149221149370
/* 110 */ 1937, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149222149371
/* 120 */ 1877, 1877, 1877, 1877, 32, 129, 129, 129, 129, 129,
149223
- /* 130 */ 21, 152, 297, 494, 726, 65, 494, 514, 514, 494,
149224
- /* 140 */ 560, 560, 560, 560, 322, 599, 50, 2142, 2142, 155,
149225
- /* 150 */ 155, 155, 313, 392, 386, 392, 392, 481, 481, 200,
149226
- /* 160 */ 480, 684, 758, 494, 494, 494, 494, 494, 494, 494,
149227
- /* 170 */ 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,
149228
- /* 180 */ 494, 494, 494, 494, 768, 768, 494, 166, 377, 377,
149229
- /* 190 */ 635, 835, 835, 635, 748, 987, 2142, 2142, 2142, 448,
149230
- /* 200 */ 45, 45, 403, 484, 502, 106, 525, 508, 528, 538,
149231
- /* 210 */ 494, 494, 494, 494, 494, 494, 494, 494, 494, 84,
149232
- /* 220 */ 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,
149233
- /* 230 */ 494, 494, 267, 267, 267, 494, 494, 494, 494, 769,
149234
- /* 240 */ 494, 494, 494, 4, 477, 494, 494, 788, 494, 494,
149235
- /* 250 */ 494, 494, 494, 494, 494, 494, 727, 5, 135, 985,
149236
- /* 260 */ 985, 985, 985, 522, 135, 135, 797, 326, 875, 986,
149237
- /* 270 */ 968, 1036, 1036, 1038, 968, 968, 1038, 972, 1081, 1118,
149238
- /* 280 */ 1194, 1194, 1194, 1036, 757, 757, 946, 777, 1099, 1102,
149239
- /* 290 */ 1333, 1282, 1282, 1381, 1381, 1282, 1297, 1334, 1422, 1406,
149240
- /* 300 */ 1322, 1448, 1448, 1448, 1448, 1282, 1451, 1322, 1322, 1334,
149241
- /* 310 */ 1422, 1406, 1406, 1322, 1282, 1451, 1345, 1434, 1282, 1451,
149242
- /* 320 */ 1483, 1282, 1451, 1282, 1451, 1483, 1404, 1404, 1404, 1452,
149243
- /* 330 */ 1483, 1404, 1405, 1404, 1452, 1404, 1404, 1483, 1423, 1423,
149244
- /* 340 */ 1483, 1407, 1437, 1407, 1437, 1407, 1437, 1407, 1437, 1282,
149245
- /* 350 */ 1462, 1462, 1411, 1418, 1537, 1282, 1416, 1411, 1428, 1431,
149246
- /* 360 */ 1322, 1555, 1560, 1575, 1575, 1584, 1584, 1584, 2142, 2142,
149372
+ /* 130 */ 171, 7, 17, 593, 676, 590, 593, 205, 205, 593,
149373
+ /* 140 */ 318, 318, 318, 318, 50, 152, 51, 2142, 2142, 284,
149374
+ /* 150 */ 284, 284, 65, 145, 282, 145, 145, 574, 574, 256,
149375
+ /* 160 */ 348, 445, 782, 593, 593, 593, 593, 593, 593, 593,
149376
+ /* 170 */ 593, 593, 593, 593, 593, 593, 593, 593, 593, 593,
149377
+ /* 180 */ 593, 593, 593, 593, 607, 607, 593, 721, 805, 805,
149378
+ /* 190 */ 446, 851, 851, 446, 190, 979, 2142, 2142, 2142, 453,
149379
+ /* 200 */ 45, 45, 480, 490, 484, 385, 575, 502, 551, 581,
149380
+ /* 210 */ 593, 593, 593, 593, 593, 593, 593, 593, 593, 689,
149381
+ /* 220 */ 593, 593, 593, 593, 593, 593, 593, 593, 593, 593,
149382
+ /* 230 */ 593, 593, 582, 582, 582, 593, 593, 593, 593, 771,
149383
+ /* 240 */ 593, 593, 593, 59, 764, 593, 593, 863, 593, 593,
149384
+ /* 250 */ 593, 593, 593, 593, 593, 593, 665, 819, 580, 16,
149385
+ /* 260 */ 16, 16, 16, 1119, 580, 580, 967, 321, 931, 1042,
149386
+ /* 270 */ 1077, 783, 783, 834, 1077, 1077, 834, 1121, 1195, 401,
149387
+ /* 280 */ 1142, 1142, 1142, 783, 787, 787, 1074, 1191, 1092, 1205,
149388
+ /* 290 */ 1354, 1284, 1284, 1381, 1381, 1284, 1297, 1334, 1421, 1407,
149389
+ /* 300 */ 1322, 1447, 1447, 1447, 1447, 1284, 1452, 1322, 1322, 1334,
149390
+ /* 310 */ 1421, 1407, 1407, 1322, 1284, 1452, 1345, 1434, 1284, 1452,
149391
+ /* 320 */ 1483, 1284, 1452, 1284, 1452, 1483, 1404, 1404, 1404, 1451,
149392
+ /* 330 */ 1483, 1404, 1400, 1404, 1451, 1404, 1404, 1483, 1419, 1419,
149393
+ /* 340 */ 1483, 1406, 1436, 1406, 1436, 1406, 1436, 1406, 1436, 1284,
149394
+ /* 350 */ 1457, 1457, 1408, 1414, 1534, 1284, 1412, 1408, 1425, 1431,
149395
+ /* 360 */ 1322, 1555, 1559, 1574, 1574, 1588, 1588, 1588, 2142, 2142,
149247149396
/* 370 */ 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142,
149248
- /* 380 */ 2142, 2142, 2142, 2142, 61, 725, 374, 1080, 198, 771,
149249
- /* 390 */ 283, 1192, 1178, 1190, 1107, 1221, 1206, 1226, 1227, 1232,
149250
- /* 400 */ 1233, 1240, 1242, 1189, 1129, 1253, 216, 1210, 1247, 1248,
149251
- /* 410 */ 1249, 1131, 1151, 1274, 1293, 1220, 1214, 1605, 1608, 1591,
149252
- /* 420 */ 1459, 1600, 1525, 1606, 1598, 1602, 1494, 1492, 1513, 1614,
149253
- /* 430 */ 1504, 1620, 1510, 1625, 1647, 1515, 1507, 1531, 1595, 1621,
149254
- /* 440 */ 1514, 1607, 1610, 1612, 1613, 1536, 1552, 1634, 1533, 1669,
149255
- /* 450 */ 1666, 1651, 1566, 1522, 1609, 1650, 1611, 1603, 1639, 1547,
149256
- /* 460 */ 1574, 1659, 1664, 1667, 1561, 1569, 1668, 1622, 1671, 1672,
149257
- /* 470 */ 1665, 1673, 1624, 1670, 1674, 1630, 1662, 1677, 1559, 1681,
149258
- /* 480 */ 1682, 1549, 1684, 1685, 1683, 1688, 1690, 1692, 1691, 1695,
149259
- /* 490 */ 1694, 1585, 1698, 1705, 1617, 1696, 1707, 1596, 1709, 1697,
149260
- /* 500 */ 1702, 1704, 1711, 1652, 1675, 1658, 1708, 1676, 1656, 1714,
149261
- /* 510 */ 1726, 1731, 1730, 1729, 1733, 1722, 1734, 1709, 1737, 1738,
149262
- /* 520 */ 1742, 1743, 1741, 1745, 1747, 1759, 1749, 1750, 1752, 1753,
149263
- /* 530 */ 1751, 1755, 1757, 1660, 1653, 1655, 1657, 1661, 1761, 1777,
149264
- /* 540 */ 1792,
149397
+ /* 380 */ 2142, 2142, 2142, 378, 777, 836, 971, 825, 775, 983,
149398
+ /* 390 */ 1208, 1179, 1217, 1120, 1220, 1206, 1221, 1222, 1226, 1227,
149399
+ /* 400 */ 1228, 1233, 937, 1147, 1261, 1149, 1207, 1248, 1249, 1253,
149400
+ /* 410 */ 1133, 1151, 1274, 1293, 1211, 1236, 1605, 1607, 1589, 1458,
149401
+ /* 420 */ 1599, 1525, 1604, 1600, 1602, 1490, 1492, 1503, 1612, 1504,
149402
+ /* 430 */ 1618, 1510, 1624, 1640, 1513, 1506, 1528, 1593, 1619, 1514,
149403
+ /* 440 */ 1606, 1608, 1610, 1613, 1535, 1551, 1631, 1533, 1667, 1665,
149404
+ /* 450 */ 1649, 1565, 1521, 1609, 1650, 1611, 1603, 1634, 1546, 1573,
149405
+ /* 460 */ 1658, 1663, 1666, 1560, 1568, 1668, 1620, 1669, 1671, 1672,
149406
+ /* 470 */ 1674, 1621, 1661, 1675, 1627, 1662, 1677, 1556, 1679, 1680,
149407
+ /* 480 */ 1548, 1683, 1684, 1682, 1686, 1689, 1688, 1691, 1694, 1693,
149408
+ /* 490 */ 1584, 1696, 1698, 1617, 1695, 1706, 1594, 1705, 1701, 1702,
149409
+ /* 500 */ 1704, 1707, 1647, 1670, 1654, 1708, 1673, 1656, 1715, 1727,
149410
+ /* 510 */ 1729, 1730, 1731, 1733, 1719, 1732, 1705, 1737, 1738, 1742,
149411
+ /* 520 */ 1743, 1741, 1745, 1734, 1758, 1748, 1749, 1750, 1752, 1754,
149412
+ /* 530 */ 1755, 1746, 1655, 1653, 1657, 1659, 1660, 1761, 1773, 1788,
149265149413
};
149266
-#define YY_REDUCE_COUNT (383)
149267
-#define YY_REDUCE_MIN (-257)
149268
-#define YY_REDUCE_MAX (1421)
149414
+#define YY_REDUCE_COUNT (382)
149415
+#define YY_REDUCE_MIN (-260)
149416
+#define YY_REDUCE_MAX (1420)
149269149417
static const short yy_reduce_ofst[] = {
149270
- /* 0 */ -168, -17, 164, 214, 310, -166, -184, -18, 98, -170,
149271
- /* 10 */ 305, 315, -163, -193, -178, -257, 395, 401, 476, 478,
149272
- /* 20 */ 512, 117, 527, 529, 503, 509, 532, 255, 552, 556,
149273
- /* 30 */ 558, 607, 37, 408, 594, 413, 462, 559, 561, 601,
149274
- /* 40 */ 610, 618, -254, -254, -254, -254, -254, -254, -254, -254,
149275
- /* 50 */ -254, -254, -254, -254, -254, -254, -254, -254, -254, -254,
149276
- /* 60 */ -254, -254, -254, -254, -254, -254, -254, -254, -254, -254,
149277
- /* 70 */ -254, -254, -254, -254, -254, -254, -254, -111, 627, 650,
149278
- /* 80 */ 691, 697, 701, 703, 740, 742, 744, 767, 770, 790,
149279
- /* 90 */ 816, 818, 820, 822, 845, 857, 859, 861, 863, 865,
149280
- /* 100 */ 868, 870, 872, 874, 876, 888, 903, 906, 908, 915,
149281
- /* 110 */ 917, 922, 960, 962, 964, 988, 990, 992, 1015, 1017,
149282
- /* 120 */ 1029, 1033, 1035, 1040, -254, -254, -254, -254, -254, -254,
149283
- /* 130 */ -254, -254, -254, 190, 270, -196, 160, -160, 450, 647,
149284
- /* 140 */ 260, 458, 260, 458, 78, -254, -254, -254, -254, 206,
149285
- /* 150 */ 206, 206, 320, 598, -5, 675, 743, -148, 340, -125,
149286
- /* 160 */ 459, 466, 466, 693, -93, 461, 479, 706, 710, 714,
149287
- /* 170 */ 716, 717, 169, -183, 325, 314, 704, 333, 747, 858,
149288
- /* 180 */ -8, 819, 565, 755, 646, 660, 517, 265, 713, 791,
149289
- /* 190 */ 712, 795, 803, 918, 695, 860, 893, 935, 939, -181,
149290
- /* 200 */ -172, -147, -91, -46, -3, 162, 173, 231, 338, 437,
149291
- /* 210 */ 571, 614, 630, 651, 760, 931, 989, 1032, 1046, -218,
149292
- /* 220 */ 38, 1070, 1096, 1133, 1134, 1137, 1138, 1139, 1141, 1142,
149293
- /* 230 */ 1143, 1144, 292, 451, 1050, 1145, 1147, 1148, 1149, 813,
149294
- /* 240 */ 1161, 1162, 1163, 1108, 1049, 1166, 1168, 1146, 1169, 162,
149295
- /* 250 */ 1181, 1182, 1183, 1184, 1185, 1187, 1100, 1103, 1150, 1135,
149296
- /* 260 */ 1136, 1140, 1152, 813, 1150, 1150, 1153, 1173, 1195, 1090,
149297
- /* 270 */ 1154, 1167, 1170, 1104, 1155, 1156, 1109, 1172, 1174, 1179,
149298
- /* 280 */ 1177, 1188, 1205, 1171, 1160, 1196, 1121, 1165, 1203, 1228,
149299
- /* 290 */ 1157, 1244, 1245, 1158, 1159, 1250, 1175, 1193, 1191, 1241,
149300
- /* 300 */ 1231, 1243, 1257, 1259, 1261, 1276, 1280, 1254, 1255, 1230,
149301
- /* 310 */ 1234, 1269, 1270, 1260, 1292, 1303, 1223, 1225, 1309, 1313,
149302
- /* 320 */ 1296, 1317, 1319, 1320, 1323, 1300, 1307, 1308, 1310, 1304,
149303
- /* 330 */ 1311, 1315, 1314, 1318, 1316, 1321, 1325, 1324, 1271, 1272,
149304
- /* 340 */ 1332, 1294, 1298, 1299, 1301, 1302, 1306, 1312, 1329, 1356,
149305
- /* 350 */ 1256, 1263, 1327, 1326, 1305, 1369, 1330, 1340, 1343, 1346,
149306
- /* 360 */ 1350, 1391, 1394, 1410, 1412, 1415, 1417, 1419, 1328, 1331,
149307
- /* 370 */ 1335, 1402, 1398, 1400, 1401, 1403, 1408, 1396, 1397, 1409,
149308
- /* 380 */ 1414, 1420, 1421, 1413,
149418
+ /* 0 */ -170, -18, -159, 309, 313, -167, -19, 75, 117, 211,
149419
+ /* 10 */ 315, 317, -165, -195, -168, -260, 389, 437, 475, 524,
149420
+ /* 20 */ 527, -169, 529, 531, -28, 80, 534, 239, 304, 412,
149421
+ /* 30 */ 558, 577, 37, 120, 368, -22, 460, 517, 555, 560,
149422
+ /* 40 */ 562, 586, -257, -257, -257, -257, -257, -257, -257, -257,
149423
+ /* 50 */ -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
149424
+ /* 60 */ -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
149425
+ /* 70 */ -257, -257, -257, -257, -257, -257, -257, -172, 457, 628,
149426
+ /* 80 */ 673, 692, 694, 702, 704, 722, 728, 740, 743, 748,
149427
+ /* 90 */ 767, 791, 815, 818, 820, 822, 857, 861, 864, 866,
149428
+ /* 100 */ 868, 870, 872, 874, 876, 881, 900, 902, 906, 908,
149429
+ /* 110 */ 910, 912, 915, 917, 920, 960, 962, 964, 988, 990,
149430
+ /* 120 */ 992, 1016, 1029, 1032, -257, -257, -257, -257, -257, -257,
149431
+ /* 130 */ -257, -257, -257, 271, 618, -190, 68, 60, 240, -124,
149432
+ /* 140 */ 603, 610, 603, 610, 12, -257, -257, -257, -257, -128,
149433
+ /* 150 */ -128, -128, -142, 25, 270, 281, 333, 124, 236, 648,
149434
+ /* 160 */ 374, 465, 465, 28, 598, 792, 839, 469, 38, 381,
149435
+ /* 170 */ 622, 709, 173, 699, 522, 703, 808, 811, 867, 816,
149436
+ /* 180 */ -104, 823, -3, 875, 649, 753, 323, -88, 882, 884,
149437
+ /* 190 */ 518, 43, 325, 899, 763, 604, 879, 969, 402, -193,
149438
+ /* 200 */ -189, -180, -151, -55, 69, 104, 141, 259, 286, 360,
149439
+ /* 210 */ 364, 455, 474, 481, 510, 516, 611, 653, 788, 99,
149440
+ /* 220 */ 871, 878, 995, 1009, 1049, 1081, 1115, 1134, 1136, 1138,
149441
+ /* 230 */ 1139, 1140, 733, 1110, 1112, 1144, 1145, 1146, 1148, 1084,
149442
+ /* 240 */ 1161, 1162, 1163, 1089, 1047, 1165, 1166, 1127, 1169, 104,
149443
+ /* 250 */ 1181, 1182, 1183, 1184, 1185, 1187, 1098, 1100, 1150, 1131,
149444
+ /* 260 */ 1132, 1135, 1141, 1084, 1150, 1150, 1152, 1173, 1196, 1097,
149445
+ /* 270 */ 1153, 1143, 1167, 1103, 1154, 1155, 1104, 1176, 1174, 1199,
149446
+ /* 280 */ 1178, 1186, 1188, 1168, 1158, 1160, 1170, 1159, 1201, 1230,
149447
+ /* 290 */ 1156, 1243, 1244, 1157, 1164, 1247, 1172, 1189, 1192, 1240,
149448
+ /* 300 */ 1231, 1241, 1242, 1256, 1257, 1278, 1294, 1251, 1252, 1232,
149449
+ /* 310 */ 1234, 1265, 1266, 1259, 1301, 1303, 1223, 1225, 1307, 1313,
149450
+ /* 320 */ 1295, 1317, 1319, 1320, 1323, 1299, 1306, 1308, 1309, 1305,
149451
+ /* 330 */ 1311, 1315, 1314, 1321, 1312, 1324, 1326, 1327, 1263, 1271,
149452
+ /* 340 */ 1331, 1296, 1298, 1300, 1302, 1304, 1310, 1316, 1318, 1357,
149453
+ /* 350 */ 1255, 1260, 1329, 1325, 1332, 1370, 1333, 1338, 1341, 1343,
149454
+ /* 360 */ 1346, 1390, 1393, 1403, 1405, 1416, 1417, 1418, 1328, 1330,
149455
+ /* 370 */ 1335, 1409, 1394, 1399, 1401, 1402, 1410, 1391, 1396, 1411,
149456
+ /* 380 */ 1420, 1413, 1415,
149309149457
};
149310149458
static const YYACTIONTYPE yy_default[] = {
149311
- /* 0 */ 1536, 1536, 1536, 1376, 1159, 1265, 1159, 1159, 1159, 1376,
149312
- /* 10 */ 1376, 1376, 1159, 1295, 1295, 1429, 1190, 1159, 1159, 1159,
149313
- /* 20 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1375, 1159, 1159,
149314
- /* 30 */ 1159, 1159, 1459, 1459, 1159, 1159, 1159, 1159, 1159, 1159,
149315
- /* 40 */ 1159, 1159, 1159, 1301, 1159, 1159, 1159, 1159, 1159, 1377,
149316
- /* 50 */ 1378, 1159, 1159, 1159, 1428, 1430, 1393, 1311, 1310, 1309,
149317
- /* 60 */ 1308, 1411, 1282, 1306, 1299, 1303, 1371, 1372, 1370, 1374,
149318
- /* 70 */ 1378, 1377, 1159, 1302, 1342, 1356, 1341, 1159, 1159, 1159,
149459
+ /* 0 */ 1537, 1537, 1537, 1377, 1159, 1266, 1159, 1159, 1159, 1377,
149460
+ /* 10 */ 1377, 1377, 1159, 1296, 1296, 1430, 1190, 1159, 1159, 1159,
149461
+ /* 20 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1376, 1159, 1159,
149462
+ /* 30 */ 1159, 1159, 1460, 1460, 1159, 1159, 1159, 1159, 1159, 1159,
149463
+ /* 40 */ 1159, 1159, 1159, 1302, 1159, 1159, 1159, 1159, 1159, 1378,
149464
+ /* 50 */ 1379, 1159, 1159, 1159, 1429, 1431, 1394, 1312, 1311, 1310,
149465
+ /* 60 */ 1309, 1412, 1283, 1307, 1300, 1304, 1372, 1373, 1371, 1375,
149466
+ /* 70 */ 1379, 1378, 1159, 1303, 1343, 1357, 1342, 1159, 1159, 1159,
149319149467
/* 80 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149320149468
/* 90 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149321149469
/* 100 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149322149470
/* 110 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149323
- /* 120 */ 1159, 1159, 1159, 1159, 1350, 1355, 1361, 1354, 1351, 1344,
149324
- /* 130 */ 1343, 1345, 1346, 1159, 1180, 1229, 1159, 1159, 1159, 1159,
149325
- /* 140 */ 1447, 1446, 1159, 1159, 1190, 1347, 1348, 1358, 1357, 1436,
149326
- /* 150 */ 1492, 1491, 1394, 1159, 1159, 1159, 1159, 1159, 1159, 1459,
149471
+ /* 120 */ 1159, 1159, 1159, 1159, 1351, 1356, 1362, 1355, 1352, 1345,
149472
+ /* 130 */ 1344, 1346, 1347, 1159, 1180, 1230, 1159, 1159, 1159, 1159,
149473
+ /* 140 */ 1448, 1447, 1159, 1159, 1190, 1348, 1349, 1359, 1358, 1437,
149474
+ /* 150 */ 1493, 1492, 1395, 1159, 1159, 1159, 1159, 1159, 1159, 1460,
149327149475
/* 160 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149328149476
/* 170 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149329
- /* 180 */ 1159, 1159, 1159, 1159, 1459, 1459, 1159, 1190, 1459, 1459,
149330
- /* 190 */ 1186, 1336, 1335, 1186, 1289, 1159, 1442, 1265, 1256, 1159,
149477
+ /* 180 */ 1159, 1159, 1159, 1159, 1460, 1460, 1159, 1190, 1460, 1460,
149478
+ /* 190 */ 1186, 1337, 1336, 1186, 1290, 1159, 1443, 1266, 1257, 1159,
149331149479
/* 200 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149332
- /* 210 */ 1159, 1159, 1159, 1433, 1431, 1159, 1159, 1159, 1159, 1159,
149480
+ /* 210 */ 1159, 1159, 1159, 1434, 1432, 1159, 1159, 1159, 1159, 1159,
149333149481
/* 220 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149334149482
/* 230 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149335
- /* 240 */ 1159, 1159, 1159, 1261, 1159, 1159, 1159, 1159, 1159, 1159,
149336
- /* 250 */ 1159, 1159, 1159, 1159, 1159, 1486, 1159, 1406, 1243, 1261,
149337
- /* 260 */ 1261, 1261, 1261, 1263, 1244, 1242, 1255, 1190, 1166, 1528,
149338
- /* 270 */ 1305, 1284, 1284, 1525, 1305, 1305, 1525, 1204, 1506, 1201,
149339
- /* 280 */ 1295, 1295, 1295, 1284, 1289, 1289, 1373, 1262, 1255, 1159,
149340
- /* 290 */ 1528, 1270, 1270, 1527, 1527, 1270, 1394, 1314, 1320, 1232,
149341
- /* 300 */ 1305, 1238, 1238, 1238, 1238, 1270, 1177, 1305, 1305, 1314,
149342
- /* 310 */ 1320, 1232, 1232, 1305, 1270, 1177, 1410, 1522, 1270, 1177,
149343
- /* 320 */ 1384, 1270, 1177, 1270, 1177, 1384, 1230, 1230, 1230, 1219,
149344
- /* 330 */ 1384, 1230, 1204, 1230, 1219, 1230, 1230, 1384, 1388, 1388,
149345
- /* 340 */ 1384, 1288, 1283, 1288, 1283, 1288, 1283, 1288, 1283, 1270,
149346
- /* 350 */ 1469, 1469, 1300, 1289, 1379, 1270, 1159, 1300, 1298, 1296,
149347
- /* 360 */ 1305, 1183, 1222, 1489, 1489, 1485, 1485, 1485, 1533, 1533,
149348
- /* 370 */ 1442, 1501, 1190, 1190, 1190, 1190, 1501, 1206, 1206, 1190,
149349
- /* 380 */ 1190, 1190, 1190, 1501, 1159, 1159, 1159, 1159, 1159, 1159,
149350
- /* 390 */ 1496, 1159, 1395, 1274, 1159, 1159, 1159, 1159, 1159, 1159,
149483
+ /* 240 */ 1159, 1159, 1159, 1262, 1159, 1159, 1159, 1159, 1159, 1159,
149484
+ /* 250 */ 1159, 1159, 1159, 1159, 1159, 1487, 1159, 1407, 1244, 1262,
149485
+ /* 260 */ 1262, 1262, 1262, 1264, 1245, 1243, 1256, 1191, 1166, 1529,
149486
+ /* 270 */ 1306, 1285, 1285, 1526, 1306, 1306, 1526, 1205, 1507, 1202,
149487
+ /* 280 */ 1296, 1296, 1296, 1285, 1290, 1290, 1374, 1263, 1256, 1159,
149488
+ /* 290 */ 1529, 1271, 1271, 1528, 1528, 1271, 1395, 1315, 1321, 1233,
149489
+ /* 300 */ 1306, 1239, 1239, 1239, 1239, 1271, 1177, 1306, 1306, 1315,
149490
+ /* 310 */ 1321, 1233, 1233, 1306, 1271, 1177, 1411, 1523, 1271, 1177,
149491
+ /* 320 */ 1385, 1271, 1177, 1271, 1177, 1385, 1231, 1231, 1231, 1220,
149492
+ /* 330 */ 1385, 1231, 1205, 1231, 1220, 1231, 1231, 1385, 1389, 1389,
149493
+ /* 340 */ 1385, 1289, 1284, 1289, 1284, 1289, 1284, 1289, 1284, 1271,
149494
+ /* 350 */ 1470, 1470, 1301, 1290, 1380, 1271, 1159, 1301, 1299, 1297,
149495
+ /* 360 */ 1306, 1183, 1223, 1490, 1490, 1486, 1486, 1486, 1534, 1534,
149496
+ /* 370 */ 1443, 1502, 1190, 1190, 1190, 1190, 1502, 1207, 1207, 1191,
149497
+ /* 380 */ 1191, 1190, 1502, 1159, 1159, 1159, 1159, 1159, 1159, 1497,
149498
+ /* 390 */ 1159, 1396, 1275, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149351149499
/* 400 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149352
- /* 410 */ 1159, 1159, 1159, 1159, 1159, 1159, 1325, 1159, 1162, 1439,
149353
- /* 420 */ 1159, 1159, 1437, 1159, 1159, 1159, 1159, 1159, 1159, 1275,
149500
+ /* 410 */ 1159, 1159, 1159, 1159, 1159, 1326, 1159, 1162, 1440, 1159,
149501
+ /* 420 */ 1159, 1438, 1159, 1159, 1159, 1159, 1159, 1159, 1276, 1159,
149354149502
/* 430 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149355
- /* 440 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1524, 1159,
149356
- /* 450 */ 1159, 1159, 1159, 1159, 1159, 1409, 1408, 1159, 1159, 1272,
149503
+ /* 440 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1525, 1159, 1159,
149504
+ /* 450 */ 1159, 1159, 1159, 1159, 1410, 1409, 1159, 1159, 1273, 1159,
149357149505
/* 460 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149358149506
/* 470 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149359149507
/* 480 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149360
- /* 490 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1297, 1159,
149508
+ /* 490 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1298, 1159, 1159,
149361149509
/* 500 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149362
- /* 510 */ 1159, 1159, 1159, 1474, 1290, 1159, 1159, 1515, 1159, 1159,
149510
+ /* 510 */ 1159, 1159, 1475, 1291, 1159, 1159, 1516, 1159, 1159, 1159,
149363149511
/* 520 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149364
- /* 530 */ 1159, 1159, 1510, 1246, 1327, 1159, 1326, 1330, 1159, 1171,
149365
- /* 540 */ 1159,
149512
+ /* 530 */ 1159, 1511, 1247, 1328, 1159, 1327, 1331, 1159, 1171, 1159,
149366149513
};
149367149514
/********** End of lemon-generated parsing tables *****************************/
149368149515
149369149516
/* The next table maps tokens (terminal symbols) into fallback tokens.
149370149517
** If a construct like the following:
@@ -149766,107 +149913,108 @@
149766149913
/* 199 */ "typename",
149767149914
/* 200 */ "signed",
149768149915
/* 201 */ "plus_num",
149769149916
/* 202 */ "minus_num",
149770149917
/* 203 */ "scanpt",
149771
- /* 204 */ "ccons",
149772
- /* 205 */ "term",
149773
- /* 206 */ "expr",
149774
- /* 207 */ "onconf",
149775
- /* 208 */ "sortorder",
149776
- /* 209 */ "autoinc",
149777
- /* 210 */ "eidlist_opt",
149778
- /* 211 */ "refargs",
149779
- /* 212 */ "defer_subclause",
149780
- /* 213 */ "refarg",
149781
- /* 214 */ "refact",
149782
- /* 215 */ "init_deferred_pred_opt",
149783
- /* 216 */ "conslist",
149784
- /* 217 */ "tconscomma",
149785
- /* 218 */ "tcons",
149786
- /* 219 */ "sortlist",
149787
- /* 220 */ "eidlist",
149788
- /* 221 */ "defer_subclause_opt",
149789
- /* 222 */ "orconf",
149790
- /* 223 */ "resolvetype",
149791
- /* 224 */ "raisetype",
149792
- /* 225 */ "ifexists",
149793
- /* 226 */ "fullname",
149794
- /* 227 */ "selectnowith",
149795
- /* 228 */ "oneselect",
149796
- /* 229 */ "wqlist",
149797
- /* 230 */ "multiselect_op",
149798
- /* 231 */ "distinct",
149799
- /* 232 */ "selcollist",
149800
- /* 233 */ "from",
149801
- /* 234 */ "where_opt",
149802
- /* 235 */ "groupby_opt",
149803
- /* 236 */ "having_opt",
149804
- /* 237 */ "orderby_opt",
149805
- /* 238 */ "limit_opt",
149806
- /* 239 */ "window_clause",
149807
- /* 240 */ "values",
149808
- /* 241 */ "nexprlist",
149809
- /* 242 */ "sclp",
149810
- /* 243 */ "as",
149811
- /* 244 */ "seltablist",
149812
- /* 245 */ "stl_prefix",
149813
- /* 246 */ "joinop",
149814
- /* 247 */ "indexed_opt",
149815
- /* 248 */ "on_opt",
149816
- /* 249 */ "using_opt",
149817
- /* 250 */ "exprlist",
149818
- /* 251 */ "xfullname",
149819
- /* 252 */ "idlist",
149820
- /* 253 */ "with",
149821
- /* 254 */ "setlist",
149822
- /* 255 */ "insert_cmd",
149823
- /* 256 */ "idlist_opt",
149824
- /* 257 */ "upsert",
149825
- /* 258 */ "over_clause",
149826
- /* 259 */ "likeop",
149827
- /* 260 */ "between_op",
149828
- /* 261 */ "in_op",
149829
- /* 262 */ "paren_exprlist",
149830
- /* 263 */ "case_operand",
149831
- /* 264 */ "case_exprlist",
149832
- /* 265 */ "case_else",
149833
- /* 266 */ "uniqueflag",
149834
- /* 267 */ "collate",
149835
- /* 268 */ "vinto",
149836
- /* 269 */ "nmnum",
149837
- /* 270 */ "trigger_decl",
149838
- /* 271 */ "trigger_cmd_list",
149839
- /* 272 */ "trigger_time",
149840
- /* 273 */ "trigger_event",
149841
- /* 274 */ "foreach_clause",
149842
- /* 275 */ "when_clause",
149843
- /* 276 */ "trigger_cmd",
149844
- /* 277 */ "trnm",
149845
- /* 278 */ "tridxby",
149846
- /* 279 */ "database_kw_opt",
149847
- /* 280 */ "key_opt",
149848
- /* 281 */ "add_column_fullname",
149849
- /* 282 */ "kwcolumn_opt",
149850
- /* 283 */ "create_vtab",
149851
- /* 284 */ "vtabarglist",
149852
- /* 285 */ "vtabarg",
149853
- /* 286 */ "vtabargtoken",
149854
- /* 287 */ "lp",
149855
- /* 288 */ "anylist",
149856
- /* 289 */ "windowdefn_list",
149857
- /* 290 */ "windowdefn",
149858
- /* 291 */ "window",
149859
- /* 292 */ "frame_opt",
149860
- /* 293 */ "part_opt",
149861
- /* 294 */ "filter_opt",
149862
- /* 295 */ "range_or_rows",
149863
- /* 296 */ "frame_bound",
149864
- /* 297 */ "frame_bound_s",
149865
- /* 298 */ "frame_bound_e",
149866
- /* 299 */ "frame_exclude_opt",
149867
- /* 300 */ "frame_exclude",
149918
+ /* 204 */ "scantok",
149919
+ /* 205 */ "ccons",
149920
+ /* 206 */ "term",
149921
+ /* 207 */ "expr",
149922
+ /* 208 */ "onconf",
149923
+ /* 209 */ "sortorder",
149924
+ /* 210 */ "autoinc",
149925
+ /* 211 */ "eidlist_opt",
149926
+ /* 212 */ "refargs",
149927
+ /* 213 */ "defer_subclause",
149928
+ /* 214 */ "refarg",
149929
+ /* 215 */ "refact",
149930
+ /* 216 */ "init_deferred_pred_opt",
149931
+ /* 217 */ "conslist",
149932
+ /* 218 */ "tconscomma",
149933
+ /* 219 */ "tcons",
149934
+ /* 220 */ "sortlist",
149935
+ /* 221 */ "eidlist",
149936
+ /* 222 */ "defer_subclause_opt",
149937
+ /* 223 */ "orconf",
149938
+ /* 224 */ "resolvetype",
149939
+ /* 225 */ "raisetype",
149940
+ /* 226 */ "ifexists",
149941
+ /* 227 */ "fullname",
149942
+ /* 228 */ "selectnowith",
149943
+ /* 229 */ "oneselect",
149944
+ /* 230 */ "wqlist",
149945
+ /* 231 */ "multiselect_op",
149946
+ /* 232 */ "distinct",
149947
+ /* 233 */ "selcollist",
149948
+ /* 234 */ "from",
149949
+ /* 235 */ "where_opt",
149950
+ /* 236 */ "groupby_opt",
149951
+ /* 237 */ "having_opt",
149952
+ /* 238 */ "orderby_opt",
149953
+ /* 239 */ "limit_opt",
149954
+ /* 240 */ "window_clause",
149955
+ /* 241 */ "values",
149956
+ /* 242 */ "nexprlist",
149957
+ /* 243 */ "sclp",
149958
+ /* 244 */ "as",
149959
+ /* 245 */ "seltablist",
149960
+ /* 246 */ "stl_prefix",
149961
+ /* 247 */ "joinop",
149962
+ /* 248 */ "indexed_opt",
149963
+ /* 249 */ "on_opt",
149964
+ /* 250 */ "using_opt",
149965
+ /* 251 */ "exprlist",
149966
+ /* 252 */ "xfullname",
149967
+ /* 253 */ "idlist",
149968
+ /* 254 */ "with",
149969
+ /* 255 */ "setlist",
149970
+ /* 256 */ "insert_cmd",
149971
+ /* 257 */ "idlist_opt",
149972
+ /* 258 */ "upsert",
149973
+ /* 259 */ "over_clause",
149974
+ /* 260 */ "likeop",
149975
+ /* 261 */ "between_op",
149976
+ /* 262 */ "in_op",
149977
+ /* 263 */ "paren_exprlist",
149978
+ /* 264 */ "case_operand",
149979
+ /* 265 */ "case_exprlist",
149980
+ /* 266 */ "case_else",
149981
+ /* 267 */ "uniqueflag",
149982
+ /* 268 */ "collate",
149983
+ /* 269 */ "vinto",
149984
+ /* 270 */ "nmnum",
149985
+ /* 271 */ "trigger_decl",
149986
+ /* 272 */ "trigger_cmd_list",
149987
+ /* 273 */ "trigger_time",
149988
+ /* 274 */ "trigger_event",
149989
+ /* 275 */ "foreach_clause",
149990
+ /* 276 */ "when_clause",
149991
+ /* 277 */ "trigger_cmd",
149992
+ /* 278 */ "trnm",
149993
+ /* 279 */ "tridxby",
149994
+ /* 280 */ "database_kw_opt",
149995
+ /* 281 */ "key_opt",
149996
+ /* 282 */ "add_column_fullname",
149997
+ /* 283 */ "kwcolumn_opt",
149998
+ /* 284 */ "create_vtab",
149999
+ /* 285 */ "vtabarglist",
150000
+ /* 286 */ "vtabarg",
150001
+ /* 287 */ "vtabargtoken",
150002
+ /* 288 */ "lp",
150003
+ /* 289 */ "anylist",
150004
+ /* 290 */ "windowdefn_list",
150005
+ /* 291 */ "windowdefn",
150006
+ /* 292 */ "window",
150007
+ /* 293 */ "frame_opt",
150008
+ /* 294 */ "part_opt",
150009
+ /* 295 */ "filter_opt",
150010
+ /* 296 */ "range_or_rows",
150011
+ /* 297 */ "frame_bound",
150012
+ /* 298 */ "frame_bound_s",
150013
+ /* 299 */ "frame_bound_e",
150014
+ /* 300 */ "frame_exclude_opt",
150015
+ /* 301 */ "frame_exclude",
149868150016
};
149869150017
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
149870150018
149871150019
#ifndef NDEBUG
149872150020
/* For tracing reduce actions, the names of all rules are required.
@@ -149899,356 +150047,357 @@
149899150047
/* 24 */ "typetoken ::=",
149900150048
/* 25 */ "typetoken ::= typename LP signed RP",
149901150049
/* 26 */ "typetoken ::= typename LP signed COMMA signed RP",
149902150050
/* 27 */ "typename ::= typename ID|STRING",
149903150051
/* 28 */ "scanpt ::=",
149904
- /* 29 */ "ccons ::= CONSTRAINT nm",
149905
- /* 30 */ "ccons ::= DEFAULT scanpt term scanpt",
149906
- /* 31 */ "ccons ::= DEFAULT LP expr RP",
149907
- /* 32 */ "ccons ::= DEFAULT PLUS term scanpt",
149908
- /* 33 */ "ccons ::= DEFAULT MINUS term scanpt",
149909
- /* 34 */ "ccons ::= DEFAULT scanpt ID|INDEXED",
149910
- /* 35 */ "ccons ::= NOT NULL onconf",
149911
- /* 36 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
149912
- /* 37 */ "ccons ::= UNIQUE onconf",
149913
- /* 38 */ "ccons ::= CHECK LP expr RP",
149914
- /* 39 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
149915
- /* 40 */ "ccons ::= defer_subclause",
149916
- /* 41 */ "ccons ::= COLLATE ID|STRING",
149917
- /* 42 */ "autoinc ::=",
149918
- /* 43 */ "autoinc ::= AUTOINCR",
149919
- /* 44 */ "refargs ::=",
149920
- /* 45 */ "refargs ::= refargs refarg",
149921
- /* 46 */ "refarg ::= MATCH nm",
149922
- /* 47 */ "refarg ::= ON INSERT refact",
149923
- /* 48 */ "refarg ::= ON DELETE refact",
149924
- /* 49 */ "refarg ::= ON UPDATE refact",
149925
- /* 50 */ "refact ::= SET NULL",
149926
- /* 51 */ "refact ::= SET DEFAULT",
149927
- /* 52 */ "refact ::= CASCADE",
149928
- /* 53 */ "refact ::= RESTRICT",
149929
- /* 54 */ "refact ::= NO ACTION",
149930
- /* 55 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
149931
- /* 56 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
149932
- /* 57 */ "init_deferred_pred_opt ::=",
149933
- /* 58 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
149934
- /* 59 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
149935
- /* 60 */ "conslist_opt ::=",
149936
- /* 61 */ "tconscomma ::= COMMA",
149937
- /* 62 */ "tcons ::= CONSTRAINT nm",
149938
- /* 63 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
149939
- /* 64 */ "tcons ::= UNIQUE LP sortlist RP onconf",
149940
- /* 65 */ "tcons ::= CHECK LP expr RP onconf",
149941
- /* 66 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
149942
- /* 67 */ "defer_subclause_opt ::=",
149943
- /* 68 */ "onconf ::=",
149944
- /* 69 */ "onconf ::= ON CONFLICT resolvetype",
149945
- /* 70 */ "orconf ::=",
149946
- /* 71 */ "orconf ::= OR resolvetype",
149947
- /* 72 */ "resolvetype ::= IGNORE",
149948
- /* 73 */ "resolvetype ::= REPLACE",
149949
- /* 74 */ "cmd ::= DROP TABLE ifexists fullname",
149950
- /* 75 */ "ifexists ::= IF EXISTS",
149951
- /* 76 */ "ifexists ::=",
149952
- /* 77 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
149953
- /* 78 */ "cmd ::= DROP VIEW ifexists fullname",
149954
- /* 79 */ "cmd ::= select",
149955
- /* 80 */ "select ::= WITH wqlist selectnowith",
149956
- /* 81 */ "select ::= WITH RECURSIVE wqlist selectnowith",
149957
- /* 82 */ "select ::= selectnowith",
149958
- /* 83 */ "selectnowith ::= selectnowith multiselect_op oneselect",
149959
- /* 84 */ "multiselect_op ::= UNION",
149960
- /* 85 */ "multiselect_op ::= UNION ALL",
149961
- /* 86 */ "multiselect_op ::= EXCEPT|INTERSECT",
149962
- /* 87 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
149963
- /* 88 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
149964
- /* 89 */ "values ::= VALUES LP nexprlist RP",
149965
- /* 90 */ "values ::= values COMMA LP nexprlist RP",
149966
- /* 91 */ "distinct ::= DISTINCT",
149967
- /* 92 */ "distinct ::= ALL",
149968
- /* 93 */ "distinct ::=",
149969
- /* 94 */ "sclp ::=",
149970
- /* 95 */ "selcollist ::= sclp scanpt expr scanpt as",
149971
- /* 96 */ "selcollist ::= sclp scanpt STAR",
149972
- /* 97 */ "selcollist ::= sclp scanpt nm DOT STAR",
149973
- /* 98 */ "as ::= AS nm",
149974
- /* 99 */ "as ::=",
149975
- /* 100 */ "from ::=",
149976
- /* 101 */ "from ::= FROM seltablist",
149977
- /* 102 */ "stl_prefix ::= seltablist joinop",
149978
- /* 103 */ "stl_prefix ::=",
149979
- /* 104 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
149980
- /* 105 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
149981
- /* 106 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
149982
- /* 107 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
149983
- /* 108 */ "dbnm ::=",
149984
- /* 109 */ "dbnm ::= DOT nm",
149985
- /* 110 */ "fullname ::= nm",
149986
- /* 111 */ "fullname ::= nm DOT nm",
149987
- /* 112 */ "xfullname ::= nm",
149988
- /* 113 */ "xfullname ::= nm DOT nm",
149989
- /* 114 */ "xfullname ::= nm DOT nm AS nm",
149990
- /* 115 */ "xfullname ::= nm AS nm",
149991
- /* 116 */ "joinop ::= COMMA|JOIN",
149992
- /* 117 */ "joinop ::= JOIN_KW JOIN",
149993
- /* 118 */ "joinop ::= JOIN_KW nm JOIN",
149994
- /* 119 */ "joinop ::= JOIN_KW nm nm JOIN",
149995
- /* 120 */ "on_opt ::= ON expr",
149996
- /* 121 */ "on_opt ::=",
149997
- /* 122 */ "indexed_opt ::=",
149998
- /* 123 */ "indexed_opt ::= INDEXED BY nm",
149999
- /* 124 */ "indexed_opt ::= NOT INDEXED",
150000
- /* 125 */ "using_opt ::= USING LP idlist RP",
150001
- /* 126 */ "using_opt ::=",
150002
- /* 127 */ "orderby_opt ::=",
150003
- /* 128 */ "orderby_opt ::= ORDER BY sortlist",
150004
- /* 129 */ "sortlist ::= sortlist COMMA expr sortorder",
150005
- /* 130 */ "sortlist ::= expr sortorder",
150006
- /* 131 */ "sortorder ::= ASC",
150007
- /* 132 */ "sortorder ::= DESC",
150008
- /* 133 */ "sortorder ::=",
150009
- /* 134 */ "groupby_opt ::=",
150010
- /* 135 */ "groupby_opt ::= GROUP BY nexprlist",
150011
- /* 136 */ "having_opt ::=",
150012
- /* 137 */ "having_opt ::= HAVING expr",
150013
- /* 138 */ "limit_opt ::=",
150014
- /* 139 */ "limit_opt ::= LIMIT expr",
150015
- /* 140 */ "limit_opt ::= LIMIT expr OFFSET expr",
150016
- /* 141 */ "limit_opt ::= LIMIT expr COMMA expr",
150017
- /* 142 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt",
150018
- /* 143 */ "where_opt ::=",
150019
- /* 144 */ "where_opt ::= WHERE expr",
150020
- /* 145 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt",
150021
- /* 146 */ "setlist ::= setlist COMMA nm EQ expr",
150022
- /* 147 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
150023
- /* 148 */ "setlist ::= nm EQ expr",
150024
- /* 149 */ "setlist ::= LP idlist RP EQ expr",
150025
- /* 150 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
150026
- /* 151 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES",
150027
- /* 152 */ "upsert ::=",
150028
- /* 153 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt",
150029
- /* 154 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING",
150030
- /* 155 */ "upsert ::= ON CONFLICT DO NOTHING",
150031
- /* 156 */ "insert_cmd ::= INSERT orconf",
150032
- /* 157 */ "insert_cmd ::= REPLACE",
150033
- /* 158 */ "idlist_opt ::=",
150034
- /* 159 */ "idlist_opt ::= LP idlist RP",
150035
- /* 160 */ "idlist ::= idlist COMMA nm",
150036
- /* 161 */ "idlist ::= nm",
150037
- /* 162 */ "expr ::= LP expr RP",
150038
- /* 163 */ "expr ::= ID|INDEXED",
150039
- /* 164 */ "expr ::= JOIN_KW",
150040
- /* 165 */ "expr ::= nm DOT nm",
150041
- /* 166 */ "expr ::= nm DOT nm DOT nm",
150042
- /* 167 */ "term ::= NULL|FLOAT|BLOB",
150043
- /* 168 */ "term ::= STRING",
150044
- /* 169 */ "term ::= INTEGER",
150045
- /* 170 */ "expr ::= VARIABLE",
150046
- /* 171 */ "expr ::= expr COLLATE ID|STRING",
150047
- /* 172 */ "expr ::= CAST LP expr AS typetoken RP",
150048
- /* 173 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
150049
- /* 174 */ "expr ::= ID|INDEXED LP STAR RP",
150050
- /* 175 */ "expr ::= ID|INDEXED LP distinct exprlist RP over_clause",
150051
- /* 176 */ "expr ::= ID|INDEXED LP STAR RP over_clause",
150052
- /* 177 */ "term ::= CTIME_KW",
150053
- /* 178 */ "expr ::= LP nexprlist COMMA expr RP",
150054
- /* 179 */ "expr ::= expr AND expr",
150055
- /* 180 */ "expr ::= expr OR expr",
150056
- /* 181 */ "expr ::= expr LT|GT|GE|LE expr",
150057
- /* 182 */ "expr ::= expr EQ|NE expr",
150058
- /* 183 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
150059
- /* 184 */ "expr ::= expr PLUS|MINUS expr",
150060
- /* 185 */ "expr ::= expr STAR|SLASH|REM expr",
150061
- /* 186 */ "expr ::= expr CONCAT expr",
150062
- /* 187 */ "likeop ::= NOT LIKE_KW|MATCH",
150063
- /* 188 */ "expr ::= expr likeop expr",
150064
- /* 189 */ "expr ::= expr likeop expr ESCAPE expr",
150065
- /* 190 */ "expr ::= expr ISNULL|NOTNULL",
150066
- /* 191 */ "expr ::= expr NOT NULL",
150067
- /* 192 */ "expr ::= expr IS expr",
150068
- /* 193 */ "expr ::= expr IS NOT expr",
150069
- /* 194 */ "expr ::= NOT expr",
150070
- /* 195 */ "expr ::= BITNOT expr",
150071
- /* 196 */ "expr ::= PLUS|MINUS expr",
150072
- /* 197 */ "between_op ::= BETWEEN",
150073
- /* 198 */ "between_op ::= NOT BETWEEN",
150074
- /* 199 */ "expr ::= expr between_op expr AND expr",
150075
- /* 200 */ "in_op ::= IN",
150076
- /* 201 */ "in_op ::= NOT IN",
150077
- /* 202 */ "expr ::= expr in_op LP exprlist RP",
150078
- /* 203 */ "expr ::= LP select RP",
150079
- /* 204 */ "expr ::= expr in_op LP select RP",
150080
- /* 205 */ "expr ::= expr in_op nm dbnm paren_exprlist",
150081
- /* 206 */ "expr ::= EXISTS LP select RP",
150082
- /* 207 */ "expr ::= CASE case_operand case_exprlist case_else END",
150083
- /* 208 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
150084
- /* 209 */ "case_exprlist ::= WHEN expr THEN expr",
150085
- /* 210 */ "case_else ::= ELSE expr",
150086
- /* 211 */ "case_else ::=",
150087
- /* 212 */ "case_operand ::= expr",
150088
- /* 213 */ "case_operand ::=",
150089
- /* 214 */ "exprlist ::=",
150090
- /* 215 */ "nexprlist ::= nexprlist COMMA expr",
150091
- /* 216 */ "nexprlist ::= expr",
150092
- /* 217 */ "paren_exprlist ::=",
150093
- /* 218 */ "paren_exprlist ::= LP exprlist RP",
150094
- /* 219 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
150095
- /* 220 */ "uniqueflag ::= UNIQUE",
150096
- /* 221 */ "uniqueflag ::=",
150097
- /* 222 */ "eidlist_opt ::=",
150098
- /* 223 */ "eidlist_opt ::= LP eidlist RP",
150099
- /* 224 */ "eidlist ::= eidlist COMMA nm collate sortorder",
150100
- /* 225 */ "eidlist ::= nm collate sortorder",
150101
- /* 226 */ "collate ::=",
150102
- /* 227 */ "collate ::= COLLATE ID|STRING",
150103
- /* 228 */ "cmd ::= DROP INDEX ifexists fullname",
150104
- /* 229 */ "cmd ::= VACUUM vinto",
150105
- /* 230 */ "cmd ::= VACUUM nm vinto",
150106
- /* 231 */ "vinto ::= INTO expr",
150107
- /* 232 */ "vinto ::=",
150108
- /* 233 */ "cmd ::= PRAGMA nm dbnm",
150109
- /* 234 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
150110
- /* 235 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
150111
- /* 236 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
150112
- /* 237 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
150113
- /* 238 */ "plus_num ::= PLUS INTEGER|FLOAT",
150114
- /* 239 */ "minus_num ::= MINUS INTEGER|FLOAT",
150115
- /* 240 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
150116
- /* 241 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
150117
- /* 242 */ "trigger_time ::= BEFORE|AFTER",
150118
- /* 243 */ "trigger_time ::= INSTEAD OF",
150119
- /* 244 */ "trigger_time ::=",
150120
- /* 245 */ "trigger_event ::= DELETE|INSERT",
150121
- /* 246 */ "trigger_event ::= UPDATE",
150122
- /* 247 */ "trigger_event ::= UPDATE OF idlist",
150123
- /* 248 */ "when_clause ::=",
150124
- /* 249 */ "when_clause ::= WHEN expr",
150125
- /* 250 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
150126
- /* 251 */ "trigger_cmd_list ::= trigger_cmd SEMI",
150127
- /* 252 */ "trnm ::= nm DOT nm",
150128
- /* 253 */ "tridxby ::= INDEXED BY nm",
150129
- /* 254 */ "tridxby ::= NOT INDEXED",
150130
- /* 255 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt",
150131
- /* 256 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
150132
- /* 257 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
150133
- /* 258 */ "trigger_cmd ::= scanpt select scanpt",
150134
- /* 259 */ "expr ::= RAISE LP IGNORE RP",
150135
- /* 260 */ "expr ::= RAISE LP raisetype COMMA nm RP",
150136
- /* 261 */ "raisetype ::= ROLLBACK",
150137
- /* 262 */ "raisetype ::= ABORT",
150138
- /* 263 */ "raisetype ::= FAIL",
150139
- /* 264 */ "cmd ::= DROP TRIGGER ifexists fullname",
150140
- /* 265 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
150141
- /* 266 */ "cmd ::= DETACH database_kw_opt expr",
150142
- /* 267 */ "key_opt ::=",
150143
- /* 268 */ "key_opt ::= KEY expr",
150144
- /* 269 */ "cmd ::= REINDEX",
150145
- /* 270 */ "cmd ::= REINDEX nm dbnm",
150146
- /* 271 */ "cmd ::= ANALYZE",
150147
- /* 272 */ "cmd ::= ANALYZE nm dbnm",
150148
- /* 273 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
150149
- /* 274 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
150150
- /* 275 */ "add_column_fullname ::= fullname",
150151
- /* 276 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
150152
- /* 277 */ "cmd ::= create_vtab",
150153
- /* 278 */ "cmd ::= create_vtab LP vtabarglist RP",
150154
- /* 279 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
150155
- /* 280 */ "vtabarg ::=",
150156
- /* 281 */ "vtabargtoken ::= ANY",
150157
- /* 282 */ "vtabargtoken ::= lp anylist RP",
150158
- /* 283 */ "lp ::= LP",
150159
- /* 284 */ "with ::= WITH wqlist",
150160
- /* 285 */ "with ::= WITH RECURSIVE wqlist",
150161
- /* 286 */ "wqlist ::= nm eidlist_opt AS LP select RP",
150162
- /* 287 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
150163
- /* 288 */ "windowdefn_list ::= windowdefn",
150164
- /* 289 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
150165
- /* 290 */ "windowdefn ::= nm AS LP window RP",
150166
- /* 291 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
150167
- /* 292 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
150168
- /* 293 */ "window ::= ORDER BY sortlist frame_opt",
150169
- /* 294 */ "window ::= nm ORDER BY sortlist frame_opt",
150170
- /* 295 */ "window ::= frame_opt",
150171
- /* 296 */ "window ::= nm frame_opt",
150172
- /* 297 */ "frame_opt ::=",
150173
- /* 298 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
150174
- /* 299 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
150175
- /* 300 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
150176
- /* 301 */ "frame_bound_s ::= frame_bound",
150177
- /* 302 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
150178
- /* 303 */ "frame_bound_e ::= frame_bound",
150179
- /* 304 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
150180
- /* 305 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
150181
- /* 306 */ "frame_bound ::= CURRENT ROW",
150182
- /* 307 */ "frame_exclude_opt ::=",
150183
- /* 308 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
150184
- /* 309 */ "frame_exclude ::= NO OTHERS",
150185
- /* 310 */ "frame_exclude ::= CURRENT ROW",
150186
- /* 311 */ "frame_exclude ::= GROUP|TIES",
150187
- /* 312 */ "window_clause ::= WINDOW windowdefn_list",
150188
- /* 313 */ "over_clause ::= filter_opt OVER LP window RP",
150189
- /* 314 */ "over_clause ::= filter_opt OVER nm",
150190
- /* 315 */ "filter_opt ::=",
150191
- /* 316 */ "filter_opt ::= FILTER LP WHERE expr RP",
150192
- /* 317 */ "input ::= cmdlist",
150193
- /* 318 */ "cmdlist ::= cmdlist ecmd",
150194
- /* 319 */ "cmdlist ::= ecmd",
150195
- /* 320 */ "ecmd ::= SEMI",
150196
- /* 321 */ "ecmd ::= cmdx SEMI",
150197
- /* 322 */ "ecmd ::= explain cmdx",
150198
- /* 323 */ "trans_opt ::=",
150199
- /* 324 */ "trans_opt ::= TRANSACTION",
150200
- /* 325 */ "trans_opt ::= TRANSACTION nm",
150201
- /* 326 */ "savepoint_opt ::= SAVEPOINT",
150202
- /* 327 */ "savepoint_opt ::=",
150203
- /* 328 */ "cmd ::= create_table create_table_args",
150204
- /* 329 */ "columnlist ::= columnlist COMMA columnname carglist",
150205
- /* 330 */ "columnlist ::= columnname carglist",
150206
- /* 331 */ "nm ::= ID|INDEXED",
150207
- /* 332 */ "nm ::= STRING",
150208
- /* 333 */ "nm ::= JOIN_KW",
150209
- /* 334 */ "typetoken ::= typename",
150210
- /* 335 */ "typename ::= ID|STRING",
150211
- /* 336 */ "signed ::= plus_num",
150212
- /* 337 */ "signed ::= minus_num",
150213
- /* 338 */ "carglist ::= carglist ccons",
150214
- /* 339 */ "carglist ::=",
150215
- /* 340 */ "ccons ::= NULL onconf",
150216
- /* 341 */ "conslist_opt ::= COMMA conslist",
150217
- /* 342 */ "conslist ::= conslist tconscomma tcons",
150218
- /* 343 */ "conslist ::= tcons",
150219
- /* 344 */ "tconscomma ::=",
150220
- /* 345 */ "defer_subclause_opt ::= defer_subclause",
150221
- /* 346 */ "resolvetype ::= raisetype",
150222
- /* 347 */ "selectnowith ::= oneselect",
150223
- /* 348 */ "oneselect ::= values",
150224
- /* 349 */ "sclp ::= selcollist COMMA",
150225
- /* 350 */ "as ::= ID|STRING",
150226
- /* 351 */ "expr ::= term",
150227
- /* 352 */ "likeop ::= LIKE_KW|MATCH",
150228
- /* 353 */ "exprlist ::= nexprlist",
150229
- /* 354 */ "nmnum ::= plus_num",
150230
- /* 355 */ "nmnum ::= nm",
150231
- /* 356 */ "nmnum ::= ON",
150232
- /* 357 */ "nmnum ::= DELETE",
150233
- /* 358 */ "nmnum ::= DEFAULT",
150234
- /* 359 */ "plus_num ::= INTEGER|FLOAT",
150235
- /* 360 */ "foreach_clause ::=",
150236
- /* 361 */ "foreach_clause ::= FOR EACH ROW",
150237
- /* 362 */ "trnm ::= nm",
150238
- /* 363 */ "tridxby ::=",
150239
- /* 364 */ "database_kw_opt ::= DATABASE",
150240
- /* 365 */ "database_kw_opt ::=",
150241
- /* 366 */ "kwcolumn_opt ::=",
150242
- /* 367 */ "kwcolumn_opt ::= COLUMNKW",
150243
- /* 368 */ "vtabarglist ::= vtabarg",
150244
- /* 369 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
150245
- /* 370 */ "vtabarg ::= vtabarg vtabargtoken",
150246
- /* 371 */ "anylist ::=",
150247
- /* 372 */ "anylist ::= anylist LP anylist RP",
150248
- /* 373 */ "anylist ::= anylist ANY",
150249
- /* 374 */ "with ::=",
150052
+ /* 29 */ "scantok ::=",
150053
+ /* 30 */ "ccons ::= CONSTRAINT nm",
150054
+ /* 31 */ "ccons ::= DEFAULT scantok term",
150055
+ /* 32 */ "ccons ::= DEFAULT LP expr RP",
150056
+ /* 33 */ "ccons ::= DEFAULT PLUS scantok term",
150057
+ /* 34 */ "ccons ::= DEFAULT MINUS scantok term",
150058
+ /* 35 */ "ccons ::= DEFAULT scantok ID|INDEXED",
150059
+ /* 36 */ "ccons ::= NOT NULL onconf",
150060
+ /* 37 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
150061
+ /* 38 */ "ccons ::= UNIQUE onconf",
150062
+ /* 39 */ "ccons ::= CHECK LP expr RP",
150063
+ /* 40 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
150064
+ /* 41 */ "ccons ::= defer_subclause",
150065
+ /* 42 */ "ccons ::= COLLATE ID|STRING",
150066
+ /* 43 */ "autoinc ::=",
150067
+ /* 44 */ "autoinc ::= AUTOINCR",
150068
+ /* 45 */ "refargs ::=",
150069
+ /* 46 */ "refargs ::= refargs refarg",
150070
+ /* 47 */ "refarg ::= MATCH nm",
150071
+ /* 48 */ "refarg ::= ON INSERT refact",
150072
+ /* 49 */ "refarg ::= ON DELETE refact",
150073
+ /* 50 */ "refarg ::= ON UPDATE refact",
150074
+ /* 51 */ "refact ::= SET NULL",
150075
+ /* 52 */ "refact ::= SET DEFAULT",
150076
+ /* 53 */ "refact ::= CASCADE",
150077
+ /* 54 */ "refact ::= RESTRICT",
150078
+ /* 55 */ "refact ::= NO ACTION",
150079
+ /* 56 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
150080
+ /* 57 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
150081
+ /* 58 */ "init_deferred_pred_opt ::=",
150082
+ /* 59 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
150083
+ /* 60 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
150084
+ /* 61 */ "conslist_opt ::=",
150085
+ /* 62 */ "tconscomma ::= COMMA",
150086
+ /* 63 */ "tcons ::= CONSTRAINT nm",
150087
+ /* 64 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
150088
+ /* 65 */ "tcons ::= UNIQUE LP sortlist RP onconf",
150089
+ /* 66 */ "tcons ::= CHECK LP expr RP onconf",
150090
+ /* 67 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
150091
+ /* 68 */ "defer_subclause_opt ::=",
150092
+ /* 69 */ "onconf ::=",
150093
+ /* 70 */ "onconf ::= ON CONFLICT resolvetype",
150094
+ /* 71 */ "orconf ::=",
150095
+ /* 72 */ "orconf ::= OR resolvetype",
150096
+ /* 73 */ "resolvetype ::= IGNORE",
150097
+ /* 74 */ "resolvetype ::= REPLACE",
150098
+ /* 75 */ "cmd ::= DROP TABLE ifexists fullname",
150099
+ /* 76 */ "ifexists ::= IF EXISTS",
150100
+ /* 77 */ "ifexists ::=",
150101
+ /* 78 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
150102
+ /* 79 */ "cmd ::= DROP VIEW ifexists fullname",
150103
+ /* 80 */ "cmd ::= select",
150104
+ /* 81 */ "select ::= WITH wqlist selectnowith",
150105
+ /* 82 */ "select ::= WITH RECURSIVE wqlist selectnowith",
150106
+ /* 83 */ "select ::= selectnowith",
150107
+ /* 84 */ "selectnowith ::= selectnowith multiselect_op oneselect",
150108
+ /* 85 */ "multiselect_op ::= UNION",
150109
+ /* 86 */ "multiselect_op ::= UNION ALL",
150110
+ /* 87 */ "multiselect_op ::= EXCEPT|INTERSECT",
150111
+ /* 88 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
150112
+ /* 89 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
150113
+ /* 90 */ "values ::= VALUES LP nexprlist RP",
150114
+ /* 91 */ "values ::= values COMMA LP nexprlist RP",
150115
+ /* 92 */ "distinct ::= DISTINCT",
150116
+ /* 93 */ "distinct ::= ALL",
150117
+ /* 94 */ "distinct ::=",
150118
+ /* 95 */ "sclp ::=",
150119
+ /* 96 */ "selcollist ::= sclp scanpt expr scanpt as",
150120
+ /* 97 */ "selcollist ::= sclp scanpt STAR",
150121
+ /* 98 */ "selcollist ::= sclp scanpt nm DOT STAR",
150122
+ /* 99 */ "as ::= AS nm",
150123
+ /* 100 */ "as ::=",
150124
+ /* 101 */ "from ::=",
150125
+ /* 102 */ "from ::= FROM seltablist",
150126
+ /* 103 */ "stl_prefix ::= seltablist joinop",
150127
+ /* 104 */ "stl_prefix ::=",
150128
+ /* 105 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
150129
+ /* 106 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
150130
+ /* 107 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
150131
+ /* 108 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
150132
+ /* 109 */ "dbnm ::=",
150133
+ /* 110 */ "dbnm ::= DOT nm",
150134
+ /* 111 */ "fullname ::= nm",
150135
+ /* 112 */ "fullname ::= nm DOT nm",
150136
+ /* 113 */ "xfullname ::= nm",
150137
+ /* 114 */ "xfullname ::= nm DOT nm",
150138
+ /* 115 */ "xfullname ::= nm DOT nm AS nm",
150139
+ /* 116 */ "xfullname ::= nm AS nm",
150140
+ /* 117 */ "joinop ::= COMMA|JOIN",
150141
+ /* 118 */ "joinop ::= JOIN_KW JOIN",
150142
+ /* 119 */ "joinop ::= JOIN_KW nm JOIN",
150143
+ /* 120 */ "joinop ::= JOIN_KW nm nm JOIN",
150144
+ /* 121 */ "on_opt ::= ON expr",
150145
+ /* 122 */ "on_opt ::=",
150146
+ /* 123 */ "indexed_opt ::=",
150147
+ /* 124 */ "indexed_opt ::= INDEXED BY nm",
150148
+ /* 125 */ "indexed_opt ::= NOT INDEXED",
150149
+ /* 126 */ "using_opt ::= USING LP idlist RP",
150150
+ /* 127 */ "using_opt ::=",
150151
+ /* 128 */ "orderby_opt ::=",
150152
+ /* 129 */ "orderby_opt ::= ORDER BY sortlist",
150153
+ /* 130 */ "sortlist ::= sortlist COMMA expr sortorder",
150154
+ /* 131 */ "sortlist ::= expr sortorder",
150155
+ /* 132 */ "sortorder ::= ASC",
150156
+ /* 133 */ "sortorder ::= DESC",
150157
+ /* 134 */ "sortorder ::=",
150158
+ /* 135 */ "groupby_opt ::=",
150159
+ /* 136 */ "groupby_opt ::= GROUP BY nexprlist",
150160
+ /* 137 */ "having_opt ::=",
150161
+ /* 138 */ "having_opt ::= HAVING expr",
150162
+ /* 139 */ "limit_opt ::=",
150163
+ /* 140 */ "limit_opt ::= LIMIT expr",
150164
+ /* 141 */ "limit_opt ::= LIMIT expr OFFSET expr",
150165
+ /* 142 */ "limit_opt ::= LIMIT expr COMMA expr",
150166
+ /* 143 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt",
150167
+ /* 144 */ "where_opt ::=",
150168
+ /* 145 */ "where_opt ::= WHERE expr",
150169
+ /* 146 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt",
150170
+ /* 147 */ "setlist ::= setlist COMMA nm EQ expr",
150171
+ /* 148 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
150172
+ /* 149 */ "setlist ::= nm EQ expr",
150173
+ /* 150 */ "setlist ::= LP idlist RP EQ expr",
150174
+ /* 151 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
150175
+ /* 152 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES",
150176
+ /* 153 */ "upsert ::=",
150177
+ /* 154 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt",
150178
+ /* 155 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING",
150179
+ /* 156 */ "upsert ::= ON CONFLICT DO NOTHING",
150180
+ /* 157 */ "insert_cmd ::= INSERT orconf",
150181
+ /* 158 */ "insert_cmd ::= REPLACE",
150182
+ /* 159 */ "idlist_opt ::=",
150183
+ /* 160 */ "idlist_opt ::= LP idlist RP",
150184
+ /* 161 */ "idlist ::= idlist COMMA nm",
150185
+ /* 162 */ "idlist ::= nm",
150186
+ /* 163 */ "expr ::= LP expr RP",
150187
+ /* 164 */ "expr ::= ID|INDEXED",
150188
+ /* 165 */ "expr ::= JOIN_KW",
150189
+ /* 166 */ "expr ::= nm DOT nm",
150190
+ /* 167 */ "expr ::= nm DOT nm DOT nm",
150191
+ /* 168 */ "term ::= NULL|FLOAT|BLOB",
150192
+ /* 169 */ "term ::= STRING",
150193
+ /* 170 */ "term ::= INTEGER",
150194
+ /* 171 */ "expr ::= VARIABLE",
150195
+ /* 172 */ "expr ::= expr COLLATE ID|STRING",
150196
+ /* 173 */ "expr ::= CAST LP expr AS typetoken RP",
150197
+ /* 174 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
150198
+ /* 175 */ "expr ::= ID|INDEXED LP STAR RP",
150199
+ /* 176 */ "expr ::= ID|INDEXED LP distinct exprlist RP over_clause",
150200
+ /* 177 */ "expr ::= ID|INDEXED LP STAR RP over_clause",
150201
+ /* 178 */ "term ::= CTIME_KW",
150202
+ /* 179 */ "expr ::= LP nexprlist COMMA expr RP",
150203
+ /* 180 */ "expr ::= expr AND expr",
150204
+ /* 181 */ "expr ::= expr OR expr",
150205
+ /* 182 */ "expr ::= expr LT|GT|GE|LE expr",
150206
+ /* 183 */ "expr ::= expr EQ|NE expr",
150207
+ /* 184 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
150208
+ /* 185 */ "expr ::= expr PLUS|MINUS expr",
150209
+ /* 186 */ "expr ::= expr STAR|SLASH|REM expr",
150210
+ /* 187 */ "expr ::= expr CONCAT expr",
150211
+ /* 188 */ "likeop ::= NOT LIKE_KW|MATCH",
150212
+ /* 189 */ "expr ::= expr likeop expr",
150213
+ /* 190 */ "expr ::= expr likeop expr ESCAPE expr",
150214
+ /* 191 */ "expr ::= expr ISNULL|NOTNULL",
150215
+ /* 192 */ "expr ::= expr NOT NULL",
150216
+ /* 193 */ "expr ::= expr IS expr",
150217
+ /* 194 */ "expr ::= expr IS NOT expr",
150218
+ /* 195 */ "expr ::= NOT expr",
150219
+ /* 196 */ "expr ::= BITNOT expr",
150220
+ /* 197 */ "expr ::= PLUS|MINUS expr",
150221
+ /* 198 */ "between_op ::= BETWEEN",
150222
+ /* 199 */ "between_op ::= NOT BETWEEN",
150223
+ /* 200 */ "expr ::= expr between_op expr AND expr",
150224
+ /* 201 */ "in_op ::= IN",
150225
+ /* 202 */ "in_op ::= NOT IN",
150226
+ /* 203 */ "expr ::= expr in_op LP exprlist RP",
150227
+ /* 204 */ "expr ::= LP select RP",
150228
+ /* 205 */ "expr ::= expr in_op LP select RP",
150229
+ /* 206 */ "expr ::= expr in_op nm dbnm paren_exprlist",
150230
+ /* 207 */ "expr ::= EXISTS LP select RP",
150231
+ /* 208 */ "expr ::= CASE case_operand case_exprlist case_else END",
150232
+ /* 209 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
150233
+ /* 210 */ "case_exprlist ::= WHEN expr THEN expr",
150234
+ /* 211 */ "case_else ::= ELSE expr",
150235
+ /* 212 */ "case_else ::=",
150236
+ /* 213 */ "case_operand ::= expr",
150237
+ /* 214 */ "case_operand ::=",
150238
+ /* 215 */ "exprlist ::=",
150239
+ /* 216 */ "nexprlist ::= nexprlist COMMA expr",
150240
+ /* 217 */ "nexprlist ::= expr",
150241
+ /* 218 */ "paren_exprlist ::=",
150242
+ /* 219 */ "paren_exprlist ::= LP exprlist RP",
150243
+ /* 220 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
150244
+ /* 221 */ "uniqueflag ::= UNIQUE",
150245
+ /* 222 */ "uniqueflag ::=",
150246
+ /* 223 */ "eidlist_opt ::=",
150247
+ /* 224 */ "eidlist_opt ::= LP eidlist RP",
150248
+ /* 225 */ "eidlist ::= eidlist COMMA nm collate sortorder",
150249
+ /* 226 */ "eidlist ::= nm collate sortorder",
150250
+ /* 227 */ "collate ::=",
150251
+ /* 228 */ "collate ::= COLLATE ID|STRING",
150252
+ /* 229 */ "cmd ::= DROP INDEX ifexists fullname",
150253
+ /* 230 */ "cmd ::= VACUUM vinto",
150254
+ /* 231 */ "cmd ::= VACUUM nm vinto",
150255
+ /* 232 */ "vinto ::= INTO expr",
150256
+ /* 233 */ "vinto ::=",
150257
+ /* 234 */ "cmd ::= PRAGMA nm dbnm",
150258
+ /* 235 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
150259
+ /* 236 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
150260
+ /* 237 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
150261
+ /* 238 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
150262
+ /* 239 */ "plus_num ::= PLUS INTEGER|FLOAT",
150263
+ /* 240 */ "minus_num ::= MINUS INTEGER|FLOAT",
150264
+ /* 241 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
150265
+ /* 242 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
150266
+ /* 243 */ "trigger_time ::= BEFORE|AFTER",
150267
+ /* 244 */ "trigger_time ::= INSTEAD OF",
150268
+ /* 245 */ "trigger_time ::=",
150269
+ /* 246 */ "trigger_event ::= DELETE|INSERT",
150270
+ /* 247 */ "trigger_event ::= UPDATE",
150271
+ /* 248 */ "trigger_event ::= UPDATE OF idlist",
150272
+ /* 249 */ "when_clause ::=",
150273
+ /* 250 */ "when_clause ::= WHEN expr",
150274
+ /* 251 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
150275
+ /* 252 */ "trigger_cmd_list ::= trigger_cmd SEMI",
150276
+ /* 253 */ "trnm ::= nm DOT nm",
150277
+ /* 254 */ "tridxby ::= INDEXED BY nm",
150278
+ /* 255 */ "tridxby ::= NOT INDEXED",
150279
+ /* 256 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt",
150280
+ /* 257 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
150281
+ /* 258 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
150282
+ /* 259 */ "trigger_cmd ::= scanpt select scanpt",
150283
+ /* 260 */ "expr ::= RAISE LP IGNORE RP",
150284
+ /* 261 */ "expr ::= RAISE LP raisetype COMMA nm RP",
150285
+ /* 262 */ "raisetype ::= ROLLBACK",
150286
+ /* 263 */ "raisetype ::= ABORT",
150287
+ /* 264 */ "raisetype ::= FAIL",
150288
+ /* 265 */ "cmd ::= DROP TRIGGER ifexists fullname",
150289
+ /* 266 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
150290
+ /* 267 */ "cmd ::= DETACH database_kw_opt expr",
150291
+ /* 268 */ "key_opt ::=",
150292
+ /* 269 */ "key_opt ::= KEY expr",
150293
+ /* 270 */ "cmd ::= REINDEX",
150294
+ /* 271 */ "cmd ::= REINDEX nm dbnm",
150295
+ /* 272 */ "cmd ::= ANALYZE",
150296
+ /* 273 */ "cmd ::= ANALYZE nm dbnm",
150297
+ /* 274 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
150298
+ /* 275 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
150299
+ /* 276 */ "add_column_fullname ::= fullname",
150300
+ /* 277 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
150301
+ /* 278 */ "cmd ::= create_vtab",
150302
+ /* 279 */ "cmd ::= create_vtab LP vtabarglist RP",
150303
+ /* 280 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
150304
+ /* 281 */ "vtabarg ::=",
150305
+ /* 282 */ "vtabargtoken ::= ANY",
150306
+ /* 283 */ "vtabargtoken ::= lp anylist RP",
150307
+ /* 284 */ "lp ::= LP",
150308
+ /* 285 */ "with ::= WITH wqlist",
150309
+ /* 286 */ "with ::= WITH RECURSIVE wqlist",
150310
+ /* 287 */ "wqlist ::= nm eidlist_opt AS LP select RP",
150311
+ /* 288 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
150312
+ /* 289 */ "windowdefn_list ::= windowdefn",
150313
+ /* 290 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
150314
+ /* 291 */ "windowdefn ::= nm AS LP window RP",
150315
+ /* 292 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
150316
+ /* 293 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
150317
+ /* 294 */ "window ::= ORDER BY sortlist frame_opt",
150318
+ /* 295 */ "window ::= nm ORDER BY sortlist frame_opt",
150319
+ /* 296 */ "window ::= frame_opt",
150320
+ /* 297 */ "window ::= nm frame_opt",
150321
+ /* 298 */ "frame_opt ::=",
150322
+ /* 299 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
150323
+ /* 300 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
150324
+ /* 301 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
150325
+ /* 302 */ "frame_bound_s ::= frame_bound",
150326
+ /* 303 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
150327
+ /* 304 */ "frame_bound_e ::= frame_bound",
150328
+ /* 305 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
150329
+ /* 306 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
150330
+ /* 307 */ "frame_bound ::= CURRENT ROW",
150331
+ /* 308 */ "frame_exclude_opt ::=",
150332
+ /* 309 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
150333
+ /* 310 */ "frame_exclude ::= NO OTHERS",
150334
+ /* 311 */ "frame_exclude ::= CURRENT ROW",
150335
+ /* 312 */ "frame_exclude ::= GROUP|TIES",
150336
+ /* 313 */ "window_clause ::= WINDOW windowdefn_list",
150337
+ /* 314 */ "over_clause ::= filter_opt OVER LP window RP",
150338
+ /* 315 */ "over_clause ::= filter_opt OVER nm",
150339
+ /* 316 */ "filter_opt ::=",
150340
+ /* 317 */ "filter_opt ::= FILTER LP WHERE expr RP",
150341
+ /* 318 */ "input ::= cmdlist",
150342
+ /* 319 */ "cmdlist ::= cmdlist ecmd",
150343
+ /* 320 */ "cmdlist ::= ecmd",
150344
+ /* 321 */ "ecmd ::= SEMI",
150345
+ /* 322 */ "ecmd ::= cmdx SEMI",
150346
+ /* 323 */ "ecmd ::= explain cmdx",
150347
+ /* 324 */ "trans_opt ::=",
150348
+ /* 325 */ "trans_opt ::= TRANSACTION",
150349
+ /* 326 */ "trans_opt ::= TRANSACTION nm",
150350
+ /* 327 */ "savepoint_opt ::= SAVEPOINT",
150351
+ /* 328 */ "savepoint_opt ::=",
150352
+ /* 329 */ "cmd ::= create_table create_table_args",
150353
+ /* 330 */ "columnlist ::= columnlist COMMA columnname carglist",
150354
+ /* 331 */ "columnlist ::= columnname carglist",
150355
+ /* 332 */ "nm ::= ID|INDEXED",
150356
+ /* 333 */ "nm ::= STRING",
150357
+ /* 334 */ "nm ::= JOIN_KW",
150358
+ /* 335 */ "typetoken ::= typename",
150359
+ /* 336 */ "typename ::= ID|STRING",
150360
+ /* 337 */ "signed ::= plus_num",
150361
+ /* 338 */ "signed ::= minus_num",
150362
+ /* 339 */ "carglist ::= carglist ccons",
150363
+ /* 340 */ "carglist ::=",
150364
+ /* 341 */ "ccons ::= NULL onconf",
150365
+ /* 342 */ "conslist_opt ::= COMMA conslist",
150366
+ /* 343 */ "conslist ::= conslist tconscomma tcons",
150367
+ /* 344 */ "conslist ::= tcons",
150368
+ /* 345 */ "tconscomma ::=",
150369
+ /* 346 */ "defer_subclause_opt ::= defer_subclause",
150370
+ /* 347 */ "resolvetype ::= raisetype",
150371
+ /* 348 */ "selectnowith ::= oneselect",
150372
+ /* 349 */ "oneselect ::= values",
150373
+ /* 350 */ "sclp ::= selcollist COMMA",
150374
+ /* 351 */ "as ::= ID|STRING",
150375
+ /* 352 */ "expr ::= term",
150376
+ /* 353 */ "likeop ::= LIKE_KW|MATCH",
150377
+ /* 354 */ "exprlist ::= nexprlist",
150378
+ /* 355 */ "nmnum ::= plus_num",
150379
+ /* 356 */ "nmnum ::= nm",
150380
+ /* 357 */ "nmnum ::= ON",
150381
+ /* 358 */ "nmnum ::= DELETE",
150382
+ /* 359 */ "nmnum ::= DEFAULT",
150383
+ /* 360 */ "plus_num ::= INTEGER|FLOAT",
150384
+ /* 361 */ "foreach_clause ::=",
150385
+ /* 362 */ "foreach_clause ::= FOR EACH ROW",
150386
+ /* 363 */ "trnm ::= nm",
150387
+ /* 364 */ "tridxby ::=",
150388
+ /* 365 */ "database_kw_opt ::= DATABASE",
150389
+ /* 366 */ "database_kw_opt ::=",
150390
+ /* 367 */ "kwcolumn_opt ::=",
150391
+ /* 368 */ "kwcolumn_opt ::= COLUMNKW",
150392
+ /* 369 */ "vtabarglist ::= vtabarg",
150393
+ /* 370 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
150394
+ /* 371 */ "vtabarg ::= vtabarg vtabargtoken",
150395
+ /* 372 */ "anylist ::=",
150396
+ /* 373 */ "anylist ::= anylist LP anylist RP",
150397
+ /* 374 */ "anylist ::= anylist ANY",
150398
+ /* 375 */ "with ::=",
150250150399
};
150251150400
#endif /* NDEBUG */
150252150401
150253150402
150254150403
#if YYSTACKDEPTH<=0
@@ -150371,100 +150520,100 @@
150371150520
** which appear on the RHS of the rule, but which are *not* used
150372150521
** inside the C code.
150373150522
*/
150374150523
/********* Begin destructor definitions ***************************************/
150375150524
case 195: /* select */
150376
- case 227: /* selectnowith */
150377
- case 228: /* oneselect */
150378
- case 240: /* values */
150379
-{
150380
-sqlite3SelectDelete(pParse->db, (yypminor->yy457));
150381
-}
150382
- break;
150383
- case 205: /* term */
150384
- case 206: /* expr */
150385
- case 234: /* where_opt */
150386
- case 236: /* having_opt */
150387
- case 248: /* on_opt */
150388
- case 263: /* case_operand */
150389
- case 265: /* case_else */
150390
- case 268: /* vinto */
150391
- case 275: /* when_clause */
150392
- case 280: /* key_opt */
150393
- case 294: /* filter_opt */
150394
-{
150395
-sqlite3ExprDelete(pParse->db, (yypminor->yy524));
150396
-}
150397
- break;
150398
- case 210: /* eidlist_opt */
150399
- case 219: /* sortlist */
150400
- case 220: /* eidlist */
150401
- case 232: /* selcollist */
150402
- case 235: /* groupby_opt */
150403
- case 237: /* orderby_opt */
150404
- case 241: /* nexprlist */
150405
- case 242: /* sclp */
150406
- case 250: /* exprlist */
150407
- case 254: /* setlist */
150408
- case 262: /* paren_exprlist */
150409
- case 264: /* case_exprlist */
150410
- case 293: /* part_opt */
150411
-{
150412
-sqlite3ExprListDelete(pParse->db, (yypminor->yy434));
150413
-}
150414
- break;
150415
- case 226: /* fullname */
150416
- case 233: /* from */
150417
- case 244: /* seltablist */
150418
- case 245: /* stl_prefix */
150419
- case 251: /* xfullname */
150420
-{
150421
-sqlite3SrcListDelete(pParse->db, (yypminor->yy483));
150422
-}
150423
- break;
150424
- case 229: /* wqlist */
150425
-{
150426
-sqlite3WithDelete(pParse->db, (yypminor->yy59));
150427
-}
150428
- break;
150429
- case 239: /* window_clause */
150430
- case 289: /* windowdefn_list */
150431
-{
150432
-sqlite3WindowListDelete(pParse->db, (yypminor->yy295));
150433
-}
150434
- break;
150435
- case 249: /* using_opt */
150436
- case 252: /* idlist */
150437
- case 256: /* idlist_opt */
150438
-{
150439
-sqlite3IdListDelete(pParse->db, (yypminor->yy62));
150440
-}
150441
- break;
150442
- case 258: /* over_clause */
150443
- case 290: /* windowdefn */
150444
- case 291: /* window */
150445
- case 292: /* frame_opt */
150446
-{
150447
-sqlite3WindowDelete(pParse->db, (yypminor->yy295));
150448
-}
150449
- break;
150450
- case 271: /* trigger_cmd_list */
150451
- case 276: /* trigger_cmd */
150452
-{
150453
-sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy455));
150454
-}
150455
- break;
150456
- case 273: /* trigger_event */
150457
-{
150458
-sqlite3IdListDelete(pParse->db, (yypminor->yy90).b);
150459
-}
150460
- break;
150461
- case 296: /* frame_bound */
150462
- case 297: /* frame_bound_s */
150463
- case 298: /* frame_bound_e */
150464
-{
150465
-sqlite3ExprDelete(pParse->db, (yypminor->yy201).pExpr);
150525
+ case 228: /* selectnowith */
150526
+ case 229: /* oneselect */
150527
+ case 241: /* values */
150528
+{
150529
+sqlite3SelectDelete(pParse->db, (yypminor->yy391));
150530
+}
150531
+ break;
150532
+ case 206: /* term */
150533
+ case 207: /* expr */
150534
+ case 235: /* where_opt */
150535
+ case 237: /* having_opt */
150536
+ case 249: /* on_opt */
150537
+ case 264: /* case_operand */
150538
+ case 266: /* case_else */
150539
+ case 269: /* vinto */
150540
+ case 276: /* when_clause */
150541
+ case 281: /* key_opt */
150542
+ case 295: /* filter_opt */
150543
+{
150544
+sqlite3ExprDelete(pParse->db, (yypminor->yy102));
150545
+}
150546
+ break;
150547
+ case 211: /* eidlist_opt */
150548
+ case 220: /* sortlist */
150549
+ case 221: /* eidlist */
150550
+ case 233: /* selcollist */
150551
+ case 236: /* groupby_opt */
150552
+ case 238: /* orderby_opt */
150553
+ case 242: /* nexprlist */
150554
+ case 243: /* sclp */
150555
+ case 251: /* exprlist */
150556
+ case 255: /* setlist */
150557
+ case 263: /* paren_exprlist */
150558
+ case 265: /* case_exprlist */
150559
+ case 294: /* part_opt */
150560
+{
150561
+sqlite3ExprListDelete(pParse->db, (yypminor->yy94));
150562
+}
150563
+ break;
150564
+ case 227: /* fullname */
150565
+ case 234: /* from */
150566
+ case 245: /* seltablist */
150567
+ case 246: /* stl_prefix */
150568
+ case 252: /* xfullname */
150569
+{
150570
+sqlite3SrcListDelete(pParse->db, (yypminor->yy407));
150571
+}
150572
+ break;
150573
+ case 230: /* wqlist */
150574
+{
150575
+sqlite3WithDelete(pParse->db, (yypminor->yy243));
150576
+}
150577
+ break;
150578
+ case 240: /* window_clause */
150579
+ case 290: /* windowdefn_list */
150580
+{
150581
+sqlite3WindowListDelete(pParse->db, (yypminor->yy379));
150582
+}
150583
+ break;
150584
+ case 250: /* using_opt */
150585
+ case 253: /* idlist */
150586
+ case 257: /* idlist_opt */
150587
+{
150588
+sqlite3IdListDelete(pParse->db, (yypminor->yy76));
150589
+}
150590
+ break;
150591
+ case 259: /* over_clause */
150592
+ case 291: /* windowdefn */
150593
+ case 292: /* window */
150594
+ case 293: /* frame_opt */
150595
+{
150596
+sqlite3WindowDelete(pParse->db, (yypminor->yy379));
150597
+}
150598
+ break;
150599
+ case 272: /* trigger_cmd_list */
150600
+ case 277: /* trigger_cmd */
150601
+{
150602
+sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy11));
150603
+}
150604
+ break;
150605
+ case 274: /* trigger_event */
150606
+{
150607
+sqlite3IdListDelete(pParse->db, (yypminor->yy298).b);
150608
+}
150609
+ break;
150610
+ case 297: /* frame_bound */
150611
+ case 298: /* frame_bound_s */
150612
+ case 299: /* frame_bound_e */
150613
+{
150614
+sqlite3ExprDelete(pParse->db, (yypminor->yy389).pExpr);
150466150615
}
150467150616
break;
150468150617
/********* End destructor definitions *****************************************/
150469150618
default: break; /* If no destructor action specified: do nothing */
150470150619
}
@@ -150784,356 +150933,357 @@
150784150933
198, /* (24) typetoken ::= */
150785150934
198, /* (25) typetoken ::= typename LP signed RP */
150786150935
198, /* (26) typetoken ::= typename LP signed COMMA signed RP */
150787150936
199, /* (27) typename ::= typename ID|STRING */
150788150937
203, /* (28) scanpt ::= */
150789
- 204, /* (29) ccons ::= CONSTRAINT nm */
150790
- 204, /* (30) ccons ::= DEFAULT scanpt term scanpt */
150791
- 204, /* (31) ccons ::= DEFAULT LP expr RP */
150792
- 204, /* (32) ccons ::= DEFAULT PLUS term scanpt */
150793
- 204, /* (33) ccons ::= DEFAULT MINUS term scanpt */
150794
- 204, /* (34) ccons ::= DEFAULT scanpt ID|INDEXED */
150795
- 204, /* (35) ccons ::= NOT NULL onconf */
150796
- 204, /* (36) ccons ::= PRIMARY KEY sortorder onconf autoinc */
150797
- 204, /* (37) ccons ::= UNIQUE onconf */
150798
- 204, /* (38) ccons ::= CHECK LP expr RP */
150799
- 204, /* (39) ccons ::= REFERENCES nm eidlist_opt refargs */
150800
- 204, /* (40) ccons ::= defer_subclause */
150801
- 204, /* (41) ccons ::= COLLATE ID|STRING */
150802
- 209, /* (42) autoinc ::= */
150803
- 209, /* (43) autoinc ::= AUTOINCR */
150804
- 211, /* (44) refargs ::= */
150805
- 211, /* (45) refargs ::= refargs refarg */
150806
- 213, /* (46) refarg ::= MATCH nm */
150807
- 213, /* (47) refarg ::= ON INSERT refact */
150808
- 213, /* (48) refarg ::= ON DELETE refact */
150809
- 213, /* (49) refarg ::= ON UPDATE refact */
150810
- 214, /* (50) refact ::= SET NULL */
150811
- 214, /* (51) refact ::= SET DEFAULT */
150812
- 214, /* (52) refact ::= CASCADE */
150813
- 214, /* (53) refact ::= RESTRICT */
150814
- 214, /* (54) refact ::= NO ACTION */
150815
- 212, /* (55) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
150816
- 212, /* (56) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
150817
- 215, /* (57) init_deferred_pred_opt ::= */
150818
- 215, /* (58) init_deferred_pred_opt ::= INITIALLY DEFERRED */
150819
- 215, /* (59) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
150820
- 193, /* (60) conslist_opt ::= */
150821
- 217, /* (61) tconscomma ::= COMMA */
150822
- 218, /* (62) tcons ::= CONSTRAINT nm */
150823
- 218, /* (63) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
150824
- 218, /* (64) tcons ::= UNIQUE LP sortlist RP onconf */
150825
- 218, /* (65) tcons ::= CHECK LP expr RP onconf */
150826
- 218, /* (66) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
150827
- 221, /* (67) defer_subclause_opt ::= */
150828
- 207, /* (68) onconf ::= */
150829
- 207, /* (69) onconf ::= ON CONFLICT resolvetype */
150830
- 222, /* (70) orconf ::= */
150831
- 222, /* (71) orconf ::= OR resolvetype */
150832
- 223, /* (72) resolvetype ::= IGNORE */
150833
- 223, /* (73) resolvetype ::= REPLACE */
150834
- 181, /* (74) cmd ::= DROP TABLE ifexists fullname */
150835
- 225, /* (75) ifexists ::= IF EXISTS */
150836
- 225, /* (76) ifexists ::= */
150837
- 181, /* (77) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
150838
- 181, /* (78) cmd ::= DROP VIEW ifexists fullname */
150839
- 181, /* (79) cmd ::= select */
150840
- 195, /* (80) select ::= WITH wqlist selectnowith */
150841
- 195, /* (81) select ::= WITH RECURSIVE wqlist selectnowith */
150842
- 195, /* (82) select ::= selectnowith */
150843
- 227, /* (83) selectnowith ::= selectnowith multiselect_op oneselect */
150844
- 230, /* (84) multiselect_op ::= UNION */
150845
- 230, /* (85) multiselect_op ::= UNION ALL */
150846
- 230, /* (86) multiselect_op ::= EXCEPT|INTERSECT */
150847
- 228, /* (87) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
150848
- 228, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
150849
- 240, /* (89) values ::= VALUES LP nexprlist RP */
150850
- 240, /* (90) values ::= values COMMA LP nexprlist RP */
150851
- 231, /* (91) distinct ::= DISTINCT */
150852
- 231, /* (92) distinct ::= ALL */
150853
- 231, /* (93) distinct ::= */
150854
- 242, /* (94) sclp ::= */
150855
- 232, /* (95) selcollist ::= sclp scanpt expr scanpt as */
150856
- 232, /* (96) selcollist ::= sclp scanpt STAR */
150857
- 232, /* (97) selcollist ::= sclp scanpt nm DOT STAR */
150858
- 243, /* (98) as ::= AS nm */
150859
- 243, /* (99) as ::= */
150860
- 233, /* (100) from ::= */
150861
- 233, /* (101) from ::= FROM seltablist */
150862
- 245, /* (102) stl_prefix ::= seltablist joinop */
150863
- 245, /* (103) stl_prefix ::= */
150864
- 244, /* (104) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
150865
- 244, /* (105) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
150866
- 244, /* (106) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
150867
- 244, /* (107) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
150868
- 191, /* (108) dbnm ::= */
150869
- 191, /* (109) dbnm ::= DOT nm */
150870
- 226, /* (110) fullname ::= nm */
150871
- 226, /* (111) fullname ::= nm DOT nm */
150872
- 251, /* (112) xfullname ::= nm */
150873
- 251, /* (113) xfullname ::= nm DOT nm */
150874
- 251, /* (114) xfullname ::= nm DOT nm AS nm */
150875
- 251, /* (115) xfullname ::= nm AS nm */
150876
- 246, /* (116) joinop ::= COMMA|JOIN */
150877
- 246, /* (117) joinop ::= JOIN_KW JOIN */
150878
- 246, /* (118) joinop ::= JOIN_KW nm JOIN */
150879
- 246, /* (119) joinop ::= JOIN_KW nm nm JOIN */
150880
- 248, /* (120) on_opt ::= ON expr */
150881
- 248, /* (121) on_opt ::= */
150882
- 247, /* (122) indexed_opt ::= */
150883
- 247, /* (123) indexed_opt ::= INDEXED BY nm */
150884
- 247, /* (124) indexed_opt ::= NOT INDEXED */
150885
- 249, /* (125) using_opt ::= USING LP idlist RP */
150886
- 249, /* (126) using_opt ::= */
150887
- 237, /* (127) orderby_opt ::= */
150888
- 237, /* (128) orderby_opt ::= ORDER BY sortlist */
150889
- 219, /* (129) sortlist ::= sortlist COMMA expr sortorder */
150890
- 219, /* (130) sortlist ::= expr sortorder */
150891
- 208, /* (131) sortorder ::= ASC */
150892
- 208, /* (132) sortorder ::= DESC */
150893
- 208, /* (133) sortorder ::= */
150894
- 235, /* (134) groupby_opt ::= */
150895
- 235, /* (135) groupby_opt ::= GROUP BY nexprlist */
150896
- 236, /* (136) having_opt ::= */
150897
- 236, /* (137) having_opt ::= HAVING expr */
150898
- 238, /* (138) limit_opt ::= */
150899
- 238, /* (139) limit_opt ::= LIMIT expr */
150900
- 238, /* (140) limit_opt ::= LIMIT expr OFFSET expr */
150901
- 238, /* (141) limit_opt ::= LIMIT expr COMMA expr */
150902
- 181, /* (142) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
150903
- 234, /* (143) where_opt ::= */
150904
- 234, /* (144) where_opt ::= WHERE expr */
150905
- 181, /* (145) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
150906
- 254, /* (146) setlist ::= setlist COMMA nm EQ expr */
150907
- 254, /* (147) setlist ::= setlist COMMA LP idlist RP EQ expr */
150908
- 254, /* (148) setlist ::= nm EQ expr */
150909
- 254, /* (149) setlist ::= LP idlist RP EQ expr */
150910
- 181, /* (150) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
150911
- 181, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
150912
- 257, /* (152) upsert ::= */
150913
- 257, /* (153) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
150914
- 257, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
150915
- 257, /* (155) upsert ::= ON CONFLICT DO NOTHING */
150916
- 255, /* (156) insert_cmd ::= INSERT orconf */
150917
- 255, /* (157) insert_cmd ::= REPLACE */
150918
- 256, /* (158) idlist_opt ::= */
150919
- 256, /* (159) idlist_opt ::= LP idlist RP */
150920
- 252, /* (160) idlist ::= idlist COMMA nm */
150921
- 252, /* (161) idlist ::= nm */
150922
- 206, /* (162) expr ::= LP expr RP */
150923
- 206, /* (163) expr ::= ID|INDEXED */
150924
- 206, /* (164) expr ::= JOIN_KW */
150925
- 206, /* (165) expr ::= nm DOT nm */
150926
- 206, /* (166) expr ::= nm DOT nm DOT nm */
150927
- 205, /* (167) term ::= NULL|FLOAT|BLOB */
150928
- 205, /* (168) term ::= STRING */
150929
- 205, /* (169) term ::= INTEGER */
150930
- 206, /* (170) expr ::= VARIABLE */
150931
- 206, /* (171) expr ::= expr COLLATE ID|STRING */
150932
- 206, /* (172) expr ::= CAST LP expr AS typetoken RP */
150933
- 206, /* (173) expr ::= ID|INDEXED LP distinct exprlist RP */
150934
- 206, /* (174) expr ::= ID|INDEXED LP STAR RP */
150935
- 206, /* (175) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
150936
- 206, /* (176) expr ::= ID|INDEXED LP STAR RP over_clause */
150937
- 205, /* (177) term ::= CTIME_KW */
150938
- 206, /* (178) expr ::= LP nexprlist COMMA expr RP */
150939
- 206, /* (179) expr ::= expr AND expr */
150940
- 206, /* (180) expr ::= expr OR expr */
150941
- 206, /* (181) expr ::= expr LT|GT|GE|LE expr */
150942
- 206, /* (182) expr ::= expr EQ|NE expr */
150943
- 206, /* (183) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
150944
- 206, /* (184) expr ::= expr PLUS|MINUS expr */
150945
- 206, /* (185) expr ::= expr STAR|SLASH|REM expr */
150946
- 206, /* (186) expr ::= expr CONCAT expr */
150947
- 259, /* (187) likeop ::= NOT LIKE_KW|MATCH */
150948
- 206, /* (188) expr ::= expr likeop expr */
150949
- 206, /* (189) expr ::= expr likeop expr ESCAPE expr */
150950
- 206, /* (190) expr ::= expr ISNULL|NOTNULL */
150951
- 206, /* (191) expr ::= expr NOT NULL */
150952
- 206, /* (192) expr ::= expr IS expr */
150953
- 206, /* (193) expr ::= expr IS NOT expr */
150954
- 206, /* (194) expr ::= NOT expr */
150955
- 206, /* (195) expr ::= BITNOT expr */
150956
- 206, /* (196) expr ::= PLUS|MINUS expr */
150957
- 260, /* (197) between_op ::= BETWEEN */
150958
- 260, /* (198) between_op ::= NOT BETWEEN */
150959
- 206, /* (199) expr ::= expr between_op expr AND expr */
150960
- 261, /* (200) in_op ::= IN */
150961
- 261, /* (201) in_op ::= NOT IN */
150962
- 206, /* (202) expr ::= expr in_op LP exprlist RP */
150963
- 206, /* (203) expr ::= LP select RP */
150964
- 206, /* (204) expr ::= expr in_op LP select RP */
150965
- 206, /* (205) expr ::= expr in_op nm dbnm paren_exprlist */
150966
- 206, /* (206) expr ::= EXISTS LP select RP */
150967
- 206, /* (207) expr ::= CASE case_operand case_exprlist case_else END */
150968
- 264, /* (208) case_exprlist ::= case_exprlist WHEN expr THEN expr */
150969
- 264, /* (209) case_exprlist ::= WHEN expr THEN expr */
150970
- 265, /* (210) case_else ::= ELSE expr */
150971
- 265, /* (211) case_else ::= */
150972
- 263, /* (212) case_operand ::= expr */
150973
- 263, /* (213) case_operand ::= */
150974
- 250, /* (214) exprlist ::= */
150975
- 241, /* (215) nexprlist ::= nexprlist COMMA expr */
150976
- 241, /* (216) nexprlist ::= expr */
150977
- 262, /* (217) paren_exprlist ::= */
150978
- 262, /* (218) paren_exprlist ::= LP exprlist RP */
150979
- 181, /* (219) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
150980
- 266, /* (220) uniqueflag ::= UNIQUE */
150981
- 266, /* (221) uniqueflag ::= */
150982
- 210, /* (222) eidlist_opt ::= */
150983
- 210, /* (223) eidlist_opt ::= LP eidlist RP */
150984
- 220, /* (224) eidlist ::= eidlist COMMA nm collate sortorder */
150985
- 220, /* (225) eidlist ::= nm collate sortorder */
150986
- 267, /* (226) collate ::= */
150987
- 267, /* (227) collate ::= COLLATE ID|STRING */
150988
- 181, /* (228) cmd ::= DROP INDEX ifexists fullname */
150989
- 181, /* (229) cmd ::= VACUUM vinto */
150990
- 181, /* (230) cmd ::= VACUUM nm vinto */
150991
- 268, /* (231) vinto ::= INTO expr */
150992
- 268, /* (232) vinto ::= */
150993
- 181, /* (233) cmd ::= PRAGMA nm dbnm */
150994
- 181, /* (234) cmd ::= PRAGMA nm dbnm EQ nmnum */
150995
- 181, /* (235) cmd ::= PRAGMA nm dbnm LP nmnum RP */
150996
- 181, /* (236) cmd ::= PRAGMA nm dbnm EQ minus_num */
150997
- 181, /* (237) cmd ::= PRAGMA nm dbnm LP minus_num RP */
150998
- 201, /* (238) plus_num ::= PLUS INTEGER|FLOAT */
150999
- 202, /* (239) minus_num ::= MINUS INTEGER|FLOAT */
151000
- 181, /* (240) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
151001
- 270, /* (241) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
151002
- 272, /* (242) trigger_time ::= BEFORE|AFTER */
151003
- 272, /* (243) trigger_time ::= INSTEAD OF */
151004
- 272, /* (244) trigger_time ::= */
151005
- 273, /* (245) trigger_event ::= DELETE|INSERT */
151006
- 273, /* (246) trigger_event ::= UPDATE */
151007
- 273, /* (247) trigger_event ::= UPDATE OF idlist */
151008
- 275, /* (248) when_clause ::= */
151009
- 275, /* (249) when_clause ::= WHEN expr */
151010
- 271, /* (250) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
151011
- 271, /* (251) trigger_cmd_list ::= trigger_cmd SEMI */
151012
- 277, /* (252) trnm ::= nm DOT nm */
151013
- 278, /* (253) tridxby ::= INDEXED BY nm */
151014
- 278, /* (254) tridxby ::= NOT INDEXED */
151015
- 276, /* (255) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
151016
- 276, /* (256) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
151017
- 276, /* (257) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
151018
- 276, /* (258) trigger_cmd ::= scanpt select scanpt */
151019
- 206, /* (259) expr ::= RAISE LP IGNORE RP */
151020
- 206, /* (260) expr ::= RAISE LP raisetype COMMA nm RP */
151021
- 224, /* (261) raisetype ::= ROLLBACK */
151022
- 224, /* (262) raisetype ::= ABORT */
151023
- 224, /* (263) raisetype ::= FAIL */
151024
- 181, /* (264) cmd ::= DROP TRIGGER ifexists fullname */
151025
- 181, /* (265) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
151026
- 181, /* (266) cmd ::= DETACH database_kw_opt expr */
151027
- 280, /* (267) key_opt ::= */
151028
- 280, /* (268) key_opt ::= KEY expr */
151029
- 181, /* (269) cmd ::= REINDEX */
151030
- 181, /* (270) cmd ::= REINDEX nm dbnm */
151031
- 181, /* (271) cmd ::= ANALYZE */
151032
- 181, /* (272) cmd ::= ANALYZE nm dbnm */
151033
- 181, /* (273) cmd ::= ALTER TABLE fullname RENAME TO nm */
151034
- 181, /* (274) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
151035
- 281, /* (275) add_column_fullname ::= fullname */
151036
- 181, /* (276) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
151037
- 181, /* (277) cmd ::= create_vtab */
151038
- 181, /* (278) cmd ::= create_vtab LP vtabarglist RP */
151039
- 283, /* (279) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
151040
- 285, /* (280) vtabarg ::= */
151041
- 286, /* (281) vtabargtoken ::= ANY */
151042
- 286, /* (282) vtabargtoken ::= lp anylist RP */
151043
- 287, /* (283) lp ::= LP */
151044
- 253, /* (284) with ::= WITH wqlist */
151045
- 253, /* (285) with ::= WITH RECURSIVE wqlist */
151046
- 229, /* (286) wqlist ::= nm eidlist_opt AS LP select RP */
151047
- 229, /* (287) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
151048
- 289, /* (288) windowdefn_list ::= windowdefn */
151049
- 289, /* (289) windowdefn_list ::= windowdefn_list COMMA windowdefn */
151050
- 290, /* (290) windowdefn ::= nm AS LP window RP */
151051
- 291, /* (291) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
151052
- 291, /* (292) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
151053
- 291, /* (293) window ::= ORDER BY sortlist frame_opt */
151054
- 291, /* (294) window ::= nm ORDER BY sortlist frame_opt */
151055
- 291, /* (295) window ::= frame_opt */
151056
- 291, /* (296) window ::= nm frame_opt */
151057
- 292, /* (297) frame_opt ::= */
151058
- 292, /* (298) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
151059
- 292, /* (299) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
151060
- 295, /* (300) range_or_rows ::= RANGE|ROWS|GROUPS */
151061
- 297, /* (301) frame_bound_s ::= frame_bound */
151062
- 297, /* (302) frame_bound_s ::= UNBOUNDED PRECEDING */
151063
- 298, /* (303) frame_bound_e ::= frame_bound */
151064
- 298, /* (304) frame_bound_e ::= UNBOUNDED FOLLOWING */
151065
- 296, /* (305) frame_bound ::= expr PRECEDING|FOLLOWING */
151066
- 296, /* (306) frame_bound ::= CURRENT ROW */
151067
- 299, /* (307) frame_exclude_opt ::= */
151068
- 299, /* (308) frame_exclude_opt ::= EXCLUDE frame_exclude */
151069
- 300, /* (309) frame_exclude ::= NO OTHERS */
151070
- 300, /* (310) frame_exclude ::= CURRENT ROW */
151071
- 300, /* (311) frame_exclude ::= GROUP|TIES */
151072
- 239, /* (312) window_clause ::= WINDOW windowdefn_list */
151073
- 258, /* (313) over_clause ::= filter_opt OVER LP window RP */
151074
- 258, /* (314) over_clause ::= filter_opt OVER nm */
151075
- 294, /* (315) filter_opt ::= */
151076
- 294, /* (316) filter_opt ::= FILTER LP WHERE expr RP */
151077
- 176, /* (317) input ::= cmdlist */
151078
- 177, /* (318) cmdlist ::= cmdlist ecmd */
151079
- 177, /* (319) cmdlist ::= ecmd */
151080
- 178, /* (320) ecmd ::= SEMI */
151081
- 178, /* (321) ecmd ::= cmdx SEMI */
151082
- 178, /* (322) ecmd ::= explain cmdx */
151083
- 183, /* (323) trans_opt ::= */
151084
- 183, /* (324) trans_opt ::= TRANSACTION */
151085
- 183, /* (325) trans_opt ::= TRANSACTION nm */
151086
- 185, /* (326) savepoint_opt ::= SAVEPOINT */
151087
- 185, /* (327) savepoint_opt ::= */
151088
- 181, /* (328) cmd ::= create_table create_table_args */
151089
- 192, /* (329) columnlist ::= columnlist COMMA columnname carglist */
151090
- 192, /* (330) columnlist ::= columnname carglist */
151091
- 184, /* (331) nm ::= ID|INDEXED */
151092
- 184, /* (332) nm ::= STRING */
151093
- 184, /* (333) nm ::= JOIN_KW */
151094
- 198, /* (334) typetoken ::= typename */
151095
- 199, /* (335) typename ::= ID|STRING */
151096
- 200, /* (336) signed ::= plus_num */
151097
- 200, /* (337) signed ::= minus_num */
151098
- 197, /* (338) carglist ::= carglist ccons */
151099
- 197, /* (339) carglist ::= */
151100
- 204, /* (340) ccons ::= NULL onconf */
151101
- 193, /* (341) conslist_opt ::= COMMA conslist */
151102
- 216, /* (342) conslist ::= conslist tconscomma tcons */
151103
- 216, /* (343) conslist ::= tcons */
151104
- 217, /* (344) tconscomma ::= */
151105
- 221, /* (345) defer_subclause_opt ::= defer_subclause */
151106
- 223, /* (346) resolvetype ::= raisetype */
151107
- 227, /* (347) selectnowith ::= oneselect */
151108
- 228, /* (348) oneselect ::= values */
151109
- 242, /* (349) sclp ::= selcollist COMMA */
151110
- 243, /* (350) as ::= ID|STRING */
151111
- 206, /* (351) expr ::= term */
151112
- 259, /* (352) likeop ::= LIKE_KW|MATCH */
151113
- 250, /* (353) exprlist ::= nexprlist */
151114
- 269, /* (354) nmnum ::= plus_num */
151115
- 269, /* (355) nmnum ::= nm */
151116
- 269, /* (356) nmnum ::= ON */
151117
- 269, /* (357) nmnum ::= DELETE */
151118
- 269, /* (358) nmnum ::= DEFAULT */
151119
- 201, /* (359) plus_num ::= INTEGER|FLOAT */
151120
- 274, /* (360) foreach_clause ::= */
151121
- 274, /* (361) foreach_clause ::= FOR EACH ROW */
151122
- 277, /* (362) trnm ::= nm */
151123
- 278, /* (363) tridxby ::= */
151124
- 279, /* (364) database_kw_opt ::= DATABASE */
151125
- 279, /* (365) database_kw_opt ::= */
151126
- 282, /* (366) kwcolumn_opt ::= */
151127
- 282, /* (367) kwcolumn_opt ::= COLUMNKW */
151128
- 284, /* (368) vtabarglist ::= vtabarg */
151129
- 284, /* (369) vtabarglist ::= vtabarglist COMMA vtabarg */
151130
- 285, /* (370) vtabarg ::= vtabarg vtabargtoken */
151131
- 288, /* (371) anylist ::= */
151132
- 288, /* (372) anylist ::= anylist LP anylist RP */
151133
- 288, /* (373) anylist ::= anylist ANY */
151134
- 253, /* (374) with ::= */
150938
+ 204, /* (29) scantok ::= */
150939
+ 205, /* (30) ccons ::= CONSTRAINT nm */
150940
+ 205, /* (31) ccons ::= DEFAULT scantok term */
150941
+ 205, /* (32) ccons ::= DEFAULT LP expr RP */
150942
+ 205, /* (33) ccons ::= DEFAULT PLUS scantok term */
150943
+ 205, /* (34) ccons ::= DEFAULT MINUS scantok term */
150944
+ 205, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
150945
+ 205, /* (36) ccons ::= NOT NULL onconf */
150946
+ 205, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
150947
+ 205, /* (38) ccons ::= UNIQUE onconf */
150948
+ 205, /* (39) ccons ::= CHECK LP expr RP */
150949
+ 205, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
150950
+ 205, /* (41) ccons ::= defer_subclause */
150951
+ 205, /* (42) ccons ::= COLLATE ID|STRING */
150952
+ 210, /* (43) autoinc ::= */
150953
+ 210, /* (44) autoinc ::= AUTOINCR */
150954
+ 212, /* (45) refargs ::= */
150955
+ 212, /* (46) refargs ::= refargs refarg */
150956
+ 214, /* (47) refarg ::= MATCH nm */
150957
+ 214, /* (48) refarg ::= ON INSERT refact */
150958
+ 214, /* (49) refarg ::= ON DELETE refact */
150959
+ 214, /* (50) refarg ::= ON UPDATE refact */
150960
+ 215, /* (51) refact ::= SET NULL */
150961
+ 215, /* (52) refact ::= SET DEFAULT */
150962
+ 215, /* (53) refact ::= CASCADE */
150963
+ 215, /* (54) refact ::= RESTRICT */
150964
+ 215, /* (55) refact ::= NO ACTION */
150965
+ 213, /* (56) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
150966
+ 213, /* (57) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
150967
+ 216, /* (58) init_deferred_pred_opt ::= */
150968
+ 216, /* (59) init_deferred_pred_opt ::= INITIALLY DEFERRED */
150969
+ 216, /* (60) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
150970
+ 193, /* (61) conslist_opt ::= */
150971
+ 218, /* (62) tconscomma ::= COMMA */
150972
+ 219, /* (63) tcons ::= CONSTRAINT nm */
150973
+ 219, /* (64) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
150974
+ 219, /* (65) tcons ::= UNIQUE LP sortlist RP onconf */
150975
+ 219, /* (66) tcons ::= CHECK LP expr RP onconf */
150976
+ 219, /* (67) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
150977
+ 222, /* (68) defer_subclause_opt ::= */
150978
+ 208, /* (69) onconf ::= */
150979
+ 208, /* (70) onconf ::= ON CONFLICT resolvetype */
150980
+ 223, /* (71) orconf ::= */
150981
+ 223, /* (72) orconf ::= OR resolvetype */
150982
+ 224, /* (73) resolvetype ::= IGNORE */
150983
+ 224, /* (74) resolvetype ::= REPLACE */
150984
+ 181, /* (75) cmd ::= DROP TABLE ifexists fullname */
150985
+ 226, /* (76) ifexists ::= IF EXISTS */
150986
+ 226, /* (77) ifexists ::= */
150987
+ 181, /* (78) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
150988
+ 181, /* (79) cmd ::= DROP VIEW ifexists fullname */
150989
+ 181, /* (80) cmd ::= select */
150990
+ 195, /* (81) select ::= WITH wqlist selectnowith */
150991
+ 195, /* (82) select ::= WITH RECURSIVE wqlist selectnowith */
150992
+ 195, /* (83) select ::= selectnowith */
150993
+ 228, /* (84) selectnowith ::= selectnowith multiselect_op oneselect */
150994
+ 231, /* (85) multiselect_op ::= UNION */
150995
+ 231, /* (86) multiselect_op ::= UNION ALL */
150996
+ 231, /* (87) multiselect_op ::= EXCEPT|INTERSECT */
150997
+ 229, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
150998
+ 229, /* (89) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
150999
+ 241, /* (90) values ::= VALUES LP nexprlist RP */
151000
+ 241, /* (91) values ::= values COMMA LP nexprlist RP */
151001
+ 232, /* (92) distinct ::= DISTINCT */
151002
+ 232, /* (93) distinct ::= ALL */
151003
+ 232, /* (94) distinct ::= */
151004
+ 243, /* (95) sclp ::= */
151005
+ 233, /* (96) selcollist ::= sclp scanpt expr scanpt as */
151006
+ 233, /* (97) selcollist ::= sclp scanpt STAR */
151007
+ 233, /* (98) selcollist ::= sclp scanpt nm DOT STAR */
151008
+ 244, /* (99) as ::= AS nm */
151009
+ 244, /* (100) as ::= */
151010
+ 234, /* (101) from ::= */
151011
+ 234, /* (102) from ::= FROM seltablist */
151012
+ 246, /* (103) stl_prefix ::= seltablist joinop */
151013
+ 246, /* (104) stl_prefix ::= */
151014
+ 245, /* (105) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
151015
+ 245, /* (106) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
151016
+ 245, /* (107) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
151017
+ 245, /* (108) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
151018
+ 191, /* (109) dbnm ::= */
151019
+ 191, /* (110) dbnm ::= DOT nm */
151020
+ 227, /* (111) fullname ::= nm */
151021
+ 227, /* (112) fullname ::= nm DOT nm */
151022
+ 252, /* (113) xfullname ::= nm */
151023
+ 252, /* (114) xfullname ::= nm DOT nm */
151024
+ 252, /* (115) xfullname ::= nm DOT nm AS nm */
151025
+ 252, /* (116) xfullname ::= nm AS nm */
151026
+ 247, /* (117) joinop ::= COMMA|JOIN */
151027
+ 247, /* (118) joinop ::= JOIN_KW JOIN */
151028
+ 247, /* (119) joinop ::= JOIN_KW nm JOIN */
151029
+ 247, /* (120) joinop ::= JOIN_KW nm nm JOIN */
151030
+ 249, /* (121) on_opt ::= ON expr */
151031
+ 249, /* (122) on_opt ::= */
151032
+ 248, /* (123) indexed_opt ::= */
151033
+ 248, /* (124) indexed_opt ::= INDEXED BY nm */
151034
+ 248, /* (125) indexed_opt ::= NOT INDEXED */
151035
+ 250, /* (126) using_opt ::= USING LP idlist RP */
151036
+ 250, /* (127) using_opt ::= */
151037
+ 238, /* (128) orderby_opt ::= */
151038
+ 238, /* (129) orderby_opt ::= ORDER BY sortlist */
151039
+ 220, /* (130) sortlist ::= sortlist COMMA expr sortorder */
151040
+ 220, /* (131) sortlist ::= expr sortorder */
151041
+ 209, /* (132) sortorder ::= ASC */
151042
+ 209, /* (133) sortorder ::= DESC */
151043
+ 209, /* (134) sortorder ::= */
151044
+ 236, /* (135) groupby_opt ::= */
151045
+ 236, /* (136) groupby_opt ::= GROUP BY nexprlist */
151046
+ 237, /* (137) having_opt ::= */
151047
+ 237, /* (138) having_opt ::= HAVING expr */
151048
+ 239, /* (139) limit_opt ::= */
151049
+ 239, /* (140) limit_opt ::= LIMIT expr */
151050
+ 239, /* (141) limit_opt ::= LIMIT expr OFFSET expr */
151051
+ 239, /* (142) limit_opt ::= LIMIT expr COMMA expr */
151052
+ 181, /* (143) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
151053
+ 235, /* (144) where_opt ::= */
151054
+ 235, /* (145) where_opt ::= WHERE expr */
151055
+ 181, /* (146) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
151056
+ 255, /* (147) setlist ::= setlist COMMA nm EQ expr */
151057
+ 255, /* (148) setlist ::= setlist COMMA LP idlist RP EQ expr */
151058
+ 255, /* (149) setlist ::= nm EQ expr */
151059
+ 255, /* (150) setlist ::= LP idlist RP EQ expr */
151060
+ 181, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
151061
+ 181, /* (152) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
151062
+ 258, /* (153) upsert ::= */
151063
+ 258, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
151064
+ 258, /* (155) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
151065
+ 258, /* (156) upsert ::= ON CONFLICT DO NOTHING */
151066
+ 256, /* (157) insert_cmd ::= INSERT orconf */
151067
+ 256, /* (158) insert_cmd ::= REPLACE */
151068
+ 257, /* (159) idlist_opt ::= */
151069
+ 257, /* (160) idlist_opt ::= LP idlist RP */
151070
+ 253, /* (161) idlist ::= idlist COMMA nm */
151071
+ 253, /* (162) idlist ::= nm */
151072
+ 207, /* (163) expr ::= LP expr RP */
151073
+ 207, /* (164) expr ::= ID|INDEXED */
151074
+ 207, /* (165) expr ::= JOIN_KW */
151075
+ 207, /* (166) expr ::= nm DOT nm */
151076
+ 207, /* (167) expr ::= nm DOT nm DOT nm */
151077
+ 206, /* (168) term ::= NULL|FLOAT|BLOB */
151078
+ 206, /* (169) term ::= STRING */
151079
+ 206, /* (170) term ::= INTEGER */
151080
+ 207, /* (171) expr ::= VARIABLE */
151081
+ 207, /* (172) expr ::= expr COLLATE ID|STRING */
151082
+ 207, /* (173) expr ::= CAST LP expr AS typetoken RP */
151083
+ 207, /* (174) expr ::= ID|INDEXED LP distinct exprlist RP */
151084
+ 207, /* (175) expr ::= ID|INDEXED LP STAR RP */
151085
+ 207, /* (176) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
151086
+ 207, /* (177) expr ::= ID|INDEXED LP STAR RP over_clause */
151087
+ 206, /* (178) term ::= CTIME_KW */
151088
+ 207, /* (179) expr ::= LP nexprlist COMMA expr RP */
151089
+ 207, /* (180) expr ::= expr AND expr */
151090
+ 207, /* (181) expr ::= expr OR expr */
151091
+ 207, /* (182) expr ::= expr LT|GT|GE|LE expr */
151092
+ 207, /* (183) expr ::= expr EQ|NE expr */
151093
+ 207, /* (184) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
151094
+ 207, /* (185) expr ::= expr PLUS|MINUS expr */
151095
+ 207, /* (186) expr ::= expr STAR|SLASH|REM expr */
151096
+ 207, /* (187) expr ::= expr CONCAT expr */
151097
+ 260, /* (188) likeop ::= NOT LIKE_KW|MATCH */
151098
+ 207, /* (189) expr ::= expr likeop expr */
151099
+ 207, /* (190) expr ::= expr likeop expr ESCAPE expr */
151100
+ 207, /* (191) expr ::= expr ISNULL|NOTNULL */
151101
+ 207, /* (192) expr ::= expr NOT NULL */
151102
+ 207, /* (193) expr ::= expr IS expr */
151103
+ 207, /* (194) expr ::= expr IS NOT expr */
151104
+ 207, /* (195) expr ::= NOT expr */
151105
+ 207, /* (196) expr ::= BITNOT expr */
151106
+ 207, /* (197) expr ::= PLUS|MINUS expr */
151107
+ 261, /* (198) between_op ::= BETWEEN */
151108
+ 261, /* (199) between_op ::= NOT BETWEEN */
151109
+ 207, /* (200) expr ::= expr between_op expr AND expr */
151110
+ 262, /* (201) in_op ::= IN */
151111
+ 262, /* (202) in_op ::= NOT IN */
151112
+ 207, /* (203) expr ::= expr in_op LP exprlist RP */
151113
+ 207, /* (204) expr ::= LP select RP */
151114
+ 207, /* (205) expr ::= expr in_op LP select RP */
151115
+ 207, /* (206) expr ::= expr in_op nm dbnm paren_exprlist */
151116
+ 207, /* (207) expr ::= EXISTS LP select RP */
151117
+ 207, /* (208) expr ::= CASE case_operand case_exprlist case_else END */
151118
+ 265, /* (209) case_exprlist ::= case_exprlist WHEN expr THEN expr */
151119
+ 265, /* (210) case_exprlist ::= WHEN expr THEN expr */
151120
+ 266, /* (211) case_else ::= ELSE expr */
151121
+ 266, /* (212) case_else ::= */
151122
+ 264, /* (213) case_operand ::= expr */
151123
+ 264, /* (214) case_operand ::= */
151124
+ 251, /* (215) exprlist ::= */
151125
+ 242, /* (216) nexprlist ::= nexprlist COMMA expr */
151126
+ 242, /* (217) nexprlist ::= expr */
151127
+ 263, /* (218) paren_exprlist ::= */
151128
+ 263, /* (219) paren_exprlist ::= LP exprlist RP */
151129
+ 181, /* (220) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
151130
+ 267, /* (221) uniqueflag ::= UNIQUE */
151131
+ 267, /* (222) uniqueflag ::= */
151132
+ 211, /* (223) eidlist_opt ::= */
151133
+ 211, /* (224) eidlist_opt ::= LP eidlist RP */
151134
+ 221, /* (225) eidlist ::= eidlist COMMA nm collate sortorder */
151135
+ 221, /* (226) eidlist ::= nm collate sortorder */
151136
+ 268, /* (227) collate ::= */
151137
+ 268, /* (228) collate ::= COLLATE ID|STRING */
151138
+ 181, /* (229) cmd ::= DROP INDEX ifexists fullname */
151139
+ 181, /* (230) cmd ::= VACUUM vinto */
151140
+ 181, /* (231) cmd ::= VACUUM nm vinto */
151141
+ 269, /* (232) vinto ::= INTO expr */
151142
+ 269, /* (233) vinto ::= */
151143
+ 181, /* (234) cmd ::= PRAGMA nm dbnm */
151144
+ 181, /* (235) cmd ::= PRAGMA nm dbnm EQ nmnum */
151145
+ 181, /* (236) cmd ::= PRAGMA nm dbnm LP nmnum RP */
151146
+ 181, /* (237) cmd ::= PRAGMA nm dbnm EQ minus_num */
151147
+ 181, /* (238) cmd ::= PRAGMA nm dbnm LP minus_num RP */
151148
+ 201, /* (239) plus_num ::= PLUS INTEGER|FLOAT */
151149
+ 202, /* (240) minus_num ::= MINUS INTEGER|FLOAT */
151150
+ 181, /* (241) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
151151
+ 271, /* (242) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
151152
+ 273, /* (243) trigger_time ::= BEFORE|AFTER */
151153
+ 273, /* (244) trigger_time ::= INSTEAD OF */
151154
+ 273, /* (245) trigger_time ::= */
151155
+ 274, /* (246) trigger_event ::= DELETE|INSERT */
151156
+ 274, /* (247) trigger_event ::= UPDATE */
151157
+ 274, /* (248) trigger_event ::= UPDATE OF idlist */
151158
+ 276, /* (249) when_clause ::= */
151159
+ 276, /* (250) when_clause ::= WHEN expr */
151160
+ 272, /* (251) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
151161
+ 272, /* (252) trigger_cmd_list ::= trigger_cmd SEMI */
151162
+ 278, /* (253) trnm ::= nm DOT nm */
151163
+ 279, /* (254) tridxby ::= INDEXED BY nm */
151164
+ 279, /* (255) tridxby ::= NOT INDEXED */
151165
+ 277, /* (256) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
151166
+ 277, /* (257) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
151167
+ 277, /* (258) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
151168
+ 277, /* (259) trigger_cmd ::= scanpt select scanpt */
151169
+ 207, /* (260) expr ::= RAISE LP IGNORE RP */
151170
+ 207, /* (261) expr ::= RAISE LP raisetype COMMA nm RP */
151171
+ 225, /* (262) raisetype ::= ROLLBACK */
151172
+ 225, /* (263) raisetype ::= ABORT */
151173
+ 225, /* (264) raisetype ::= FAIL */
151174
+ 181, /* (265) cmd ::= DROP TRIGGER ifexists fullname */
151175
+ 181, /* (266) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
151176
+ 181, /* (267) cmd ::= DETACH database_kw_opt expr */
151177
+ 281, /* (268) key_opt ::= */
151178
+ 281, /* (269) key_opt ::= KEY expr */
151179
+ 181, /* (270) cmd ::= REINDEX */
151180
+ 181, /* (271) cmd ::= REINDEX nm dbnm */
151181
+ 181, /* (272) cmd ::= ANALYZE */
151182
+ 181, /* (273) cmd ::= ANALYZE nm dbnm */
151183
+ 181, /* (274) cmd ::= ALTER TABLE fullname RENAME TO nm */
151184
+ 181, /* (275) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
151185
+ 282, /* (276) add_column_fullname ::= fullname */
151186
+ 181, /* (277) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
151187
+ 181, /* (278) cmd ::= create_vtab */
151188
+ 181, /* (279) cmd ::= create_vtab LP vtabarglist RP */
151189
+ 284, /* (280) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
151190
+ 286, /* (281) vtabarg ::= */
151191
+ 287, /* (282) vtabargtoken ::= ANY */
151192
+ 287, /* (283) vtabargtoken ::= lp anylist RP */
151193
+ 288, /* (284) lp ::= LP */
151194
+ 254, /* (285) with ::= WITH wqlist */
151195
+ 254, /* (286) with ::= WITH RECURSIVE wqlist */
151196
+ 230, /* (287) wqlist ::= nm eidlist_opt AS LP select RP */
151197
+ 230, /* (288) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
151198
+ 290, /* (289) windowdefn_list ::= windowdefn */
151199
+ 290, /* (290) windowdefn_list ::= windowdefn_list COMMA windowdefn */
151200
+ 291, /* (291) windowdefn ::= nm AS LP window RP */
151201
+ 292, /* (292) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
151202
+ 292, /* (293) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
151203
+ 292, /* (294) window ::= ORDER BY sortlist frame_opt */
151204
+ 292, /* (295) window ::= nm ORDER BY sortlist frame_opt */
151205
+ 292, /* (296) window ::= frame_opt */
151206
+ 292, /* (297) window ::= nm frame_opt */
151207
+ 293, /* (298) frame_opt ::= */
151208
+ 293, /* (299) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
151209
+ 293, /* (300) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
151210
+ 296, /* (301) range_or_rows ::= RANGE|ROWS|GROUPS */
151211
+ 298, /* (302) frame_bound_s ::= frame_bound */
151212
+ 298, /* (303) frame_bound_s ::= UNBOUNDED PRECEDING */
151213
+ 299, /* (304) frame_bound_e ::= frame_bound */
151214
+ 299, /* (305) frame_bound_e ::= UNBOUNDED FOLLOWING */
151215
+ 297, /* (306) frame_bound ::= expr PRECEDING|FOLLOWING */
151216
+ 297, /* (307) frame_bound ::= CURRENT ROW */
151217
+ 300, /* (308) frame_exclude_opt ::= */
151218
+ 300, /* (309) frame_exclude_opt ::= EXCLUDE frame_exclude */
151219
+ 301, /* (310) frame_exclude ::= NO OTHERS */
151220
+ 301, /* (311) frame_exclude ::= CURRENT ROW */
151221
+ 301, /* (312) frame_exclude ::= GROUP|TIES */
151222
+ 240, /* (313) window_clause ::= WINDOW windowdefn_list */
151223
+ 259, /* (314) over_clause ::= filter_opt OVER LP window RP */
151224
+ 259, /* (315) over_clause ::= filter_opt OVER nm */
151225
+ 295, /* (316) filter_opt ::= */
151226
+ 295, /* (317) filter_opt ::= FILTER LP WHERE expr RP */
151227
+ 176, /* (318) input ::= cmdlist */
151228
+ 177, /* (319) cmdlist ::= cmdlist ecmd */
151229
+ 177, /* (320) cmdlist ::= ecmd */
151230
+ 178, /* (321) ecmd ::= SEMI */
151231
+ 178, /* (322) ecmd ::= cmdx SEMI */
151232
+ 178, /* (323) ecmd ::= explain cmdx */
151233
+ 183, /* (324) trans_opt ::= */
151234
+ 183, /* (325) trans_opt ::= TRANSACTION */
151235
+ 183, /* (326) trans_opt ::= TRANSACTION nm */
151236
+ 185, /* (327) savepoint_opt ::= SAVEPOINT */
151237
+ 185, /* (328) savepoint_opt ::= */
151238
+ 181, /* (329) cmd ::= create_table create_table_args */
151239
+ 192, /* (330) columnlist ::= columnlist COMMA columnname carglist */
151240
+ 192, /* (331) columnlist ::= columnname carglist */
151241
+ 184, /* (332) nm ::= ID|INDEXED */
151242
+ 184, /* (333) nm ::= STRING */
151243
+ 184, /* (334) nm ::= JOIN_KW */
151244
+ 198, /* (335) typetoken ::= typename */
151245
+ 199, /* (336) typename ::= ID|STRING */
151246
+ 200, /* (337) signed ::= plus_num */
151247
+ 200, /* (338) signed ::= minus_num */
151248
+ 197, /* (339) carglist ::= carglist ccons */
151249
+ 197, /* (340) carglist ::= */
151250
+ 205, /* (341) ccons ::= NULL onconf */
151251
+ 193, /* (342) conslist_opt ::= COMMA conslist */
151252
+ 217, /* (343) conslist ::= conslist tconscomma tcons */
151253
+ 217, /* (344) conslist ::= tcons */
151254
+ 218, /* (345) tconscomma ::= */
151255
+ 222, /* (346) defer_subclause_opt ::= defer_subclause */
151256
+ 224, /* (347) resolvetype ::= raisetype */
151257
+ 228, /* (348) selectnowith ::= oneselect */
151258
+ 229, /* (349) oneselect ::= values */
151259
+ 243, /* (350) sclp ::= selcollist COMMA */
151260
+ 244, /* (351) as ::= ID|STRING */
151261
+ 207, /* (352) expr ::= term */
151262
+ 260, /* (353) likeop ::= LIKE_KW|MATCH */
151263
+ 251, /* (354) exprlist ::= nexprlist */
151264
+ 270, /* (355) nmnum ::= plus_num */
151265
+ 270, /* (356) nmnum ::= nm */
151266
+ 270, /* (357) nmnum ::= ON */
151267
+ 270, /* (358) nmnum ::= DELETE */
151268
+ 270, /* (359) nmnum ::= DEFAULT */
151269
+ 201, /* (360) plus_num ::= INTEGER|FLOAT */
151270
+ 275, /* (361) foreach_clause ::= */
151271
+ 275, /* (362) foreach_clause ::= FOR EACH ROW */
151272
+ 278, /* (363) trnm ::= nm */
151273
+ 279, /* (364) tridxby ::= */
151274
+ 280, /* (365) database_kw_opt ::= DATABASE */
151275
+ 280, /* (366) database_kw_opt ::= */
151276
+ 283, /* (367) kwcolumn_opt ::= */
151277
+ 283, /* (368) kwcolumn_opt ::= COLUMNKW */
151278
+ 285, /* (369) vtabarglist ::= vtabarg */
151279
+ 285, /* (370) vtabarglist ::= vtabarglist COMMA vtabarg */
151280
+ 286, /* (371) vtabarg ::= vtabarg vtabargtoken */
151281
+ 289, /* (372) anylist ::= */
151282
+ 289, /* (373) anylist ::= anylist LP anylist RP */
151283
+ 289, /* (374) anylist ::= anylist ANY */
151284
+ 254, /* (375) with ::= */
151135151285
};
151136151286
151137151287
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
151138151288
** of symbols on the right-hand side of that rule. */
151139151289
static const signed char yyRuleInfoNRhs[] = {
@@ -151164,356 +151314,357 @@
151164151314
0, /* (24) typetoken ::= */
151165151315
-4, /* (25) typetoken ::= typename LP signed RP */
151166151316
-6, /* (26) typetoken ::= typename LP signed COMMA signed RP */
151167151317
-2, /* (27) typename ::= typename ID|STRING */
151168151318
0, /* (28) scanpt ::= */
151169
- -2, /* (29) ccons ::= CONSTRAINT nm */
151170
- -4, /* (30) ccons ::= DEFAULT scanpt term scanpt */
151171
- -4, /* (31) ccons ::= DEFAULT LP expr RP */
151172
- -4, /* (32) ccons ::= DEFAULT PLUS term scanpt */
151173
- -4, /* (33) ccons ::= DEFAULT MINUS term scanpt */
151174
- -3, /* (34) ccons ::= DEFAULT scanpt ID|INDEXED */
151175
- -3, /* (35) ccons ::= NOT NULL onconf */
151176
- -5, /* (36) ccons ::= PRIMARY KEY sortorder onconf autoinc */
151177
- -2, /* (37) ccons ::= UNIQUE onconf */
151178
- -4, /* (38) ccons ::= CHECK LP expr RP */
151179
- -4, /* (39) ccons ::= REFERENCES nm eidlist_opt refargs */
151180
- -1, /* (40) ccons ::= defer_subclause */
151181
- -2, /* (41) ccons ::= COLLATE ID|STRING */
151182
- 0, /* (42) autoinc ::= */
151183
- -1, /* (43) autoinc ::= AUTOINCR */
151184
- 0, /* (44) refargs ::= */
151185
- -2, /* (45) refargs ::= refargs refarg */
151186
- -2, /* (46) refarg ::= MATCH nm */
151187
- -3, /* (47) refarg ::= ON INSERT refact */
151188
- -3, /* (48) refarg ::= ON DELETE refact */
151189
- -3, /* (49) refarg ::= ON UPDATE refact */
151190
- -2, /* (50) refact ::= SET NULL */
151191
- -2, /* (51) refact ::= SET DEFAULT */
151192
- -1, /* (52) refact ::= CASCADE */
151193
- -1, /* (53) refact ::= RESTRICT */
151194
- -2, /* (54) refact ::= NO ACTION */
151195
- -3, /* (55) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
151196
- -2, /* (56) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
151197
- 0, /* (57) init_deferred_pred_opt ::= */
151198
- -2, /* (58) init_deferred_pred_opt ::= INITIALLY DEFERRED */
151199
- -2, /* (59) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
151200
- 0, /* (60) conslist_opt ::= */
151201
- -1, /* (61) tconscomma ::= COMMA */
151202
- -2, /* (62) tcons ::= CONSTRAINT nm */
151203
- -7, /* (63) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
151204
- -5, /* (64) tcons ::= UNIQUE LP sortlist RP onconf */
151205
- -5, /* (65) tcons ::= CHECK LP expr RP onconf */
151206
- -10, /* (66) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
151207
- 0, /* (67) defer_subclause_opt ::= */
151208
- 0, /* (68) onconf ::= */
151209
- -3, /* (69) onconf ::= ON CONFLICT resolvetype */
151210
- 0, /* (70) orconf ::= */
151211
- -2, /* (71) orconf ::= OR resolvetype */
151212
- -1, /* (72) resolvetype ::= IGNORE */
151213
- -1, /* (73) resolvetype ::= REPLACE */
151214
- -4, /* (74) cmd ::= DROP TABLE ifexists fullname */
151215
- -2, /* (75) ifexists ::= IF EXISTS */
151216
- 0, /* (76) ifexists ::= */
151217
- -9, /* (77) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
151218
- -4, /* (78) cmd ::= DROP VIEW ifexists fullname */
151219
- -1, /* (79) cmd ::= select */
151220
- -3, /* (80) select ::= WITH wqlist selectnowith */
151221
- -4, /* (81) select ::= WITH RECURSIVE wqlist selectnowith */
151222
- -1, /* (82) select ::= selectnowith */
151223
- -3, /* (83) selectnowith ::= selectnowith multiselect_op oneselect */
151224
- -1, /* (84) multiselect_op ::= UNION */
151225
- -2, /* (85) multiselect_op ::= UNION ALL */
151226
- -1, /* (86) multiselect_op ::= EXCEPT|INTERSECT */
151227
- -9, /* (87) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
151228
- -10, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
151229
- -4, /* (89) values ::= VALUES LP nexprlist RP */
151230
- -5, /* (90) values ::= values COMMA LP nexprlist RP */
151231
- -1, /* (91) distinct ::= DISTINCT */
151232
- -1, /* (92) distinct ::= ALL */
151233
- 0, /* (93) distinct ::= */
151234
- 0, /* (94) sclp ::= */
151235
- -5, /* (95) selcollist ::= sclp scanpt expr scanpt as */
151236
- -3, /* (96) selcollist ::= sclp scanpt STAR */
151237
- -5, /* (97) selcollist ::= sclp scanpt nm DOT STAR */
151238
- -2, /* (98) as ::= AS nm */
151239
- 0, /* (99) as ::= */
151240
- 0, /* (100) from ::= */
151241
- -2, /* (101) from ::= FROM seltablist */
151242
- -2, /* (102) stl_prefix ::= seltablist joinop */
151243
- 0, /* (103) stl_prefix ::= */
151244
- -7, /* (104) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
151245
- -9, /* (105) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
151246
- -7, /* (106) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
151247
- -7, /* (107) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
151248
- 0, /* (108) dbnm ::= */
151249
- -2, /* (109) dbnm ::= DOT nm */
151250
- -1, /* (110) fullname ::= nm */
151251
- -3, /* (111) fullname ::= nm DOT nm */
151252
- -1, /* (112) xfullname ::= nm */
151253
- -3, /* (113) xfullname ::= nm DOT nm */
151254
- -5, /* (114) xfullname ::= nm DOT nm AS nm */
151255
- -3, /* (115) xfullname ::= nm AS nm */
151256
- -1, /* (116) joinop ::= COMMA|JOIN */
151257
- -2, /* (117) joinop ::= JOIN_KW JOIN */
151258
- -3, /* (118) joinop ::= JOIN_KW nm JOIN */
151259
- -4, /* (119) joinop ::= JOIN_KW nm nm JOIN */
151260
- -2, /* (120) on_opt ::= ON expr */
151261
- 0, /* (121) on_opt ::= */
151262
- 0, /* (122) indexed_opt ::= */
151263
- -3, /* (123) indexed_opt ::= INDEXED BY nm */
151264
- -2, /* (124) indexed_opt ::= NOT INDEXED */
151265
- -4, /* (125) using_opt ::= USING LP idlist RP */
151266
- 0, /* (126) using_opt ::= */
151267
- 0, /* (127) orderby_opt ::= */
151268
- -3, /* (128) orderby_opt ::= ORDER BY sortlist */
151269
- -4, /* (129) sortlist ::= sortlist COMMA expr sortorder */
151270
- -2, /* (130) sortlist ::= expr sortorder */
151271
- -1, /* (131) sortorder ::= ASC */
151272
- -1, /* (132) sortorder ::= DESC */
151273
- 0, /* (133) sortorder ::= */
151274
- 0, /* (134) groupby_opt ::= */
151275
- -3, /* (135) groupby_opt ::= GROUP BY nexprlist */
151276
- 0, /* (136) having_opt ::= */
151277
- -2, /* (137) having_opt ::= HAVING expr */
151278
- 0, /* (138) limit_opt ::= */
151279
- -2, /* (139) limit_opt ::= LIMIT expr */
151280
- -4, /* (140) limit_opt ::= LIMIT expr OFFSET expr */
151281
- -4, /* (141) limit_opt ::= LIMIT expr COMMA expr */
151282
- -6, /* (142) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
151283
- 0, /* (143) where_opt ::= */
151284
- -2, /* (144) where_opt ::= WHERE expr */
151285
- -8, /* (145) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
151286
- -5, /* (146) setlist ::= setlist COMMA nm EQ expr */
151287
- -7, /* (147) setlist ::= setlist COMMA LP idlist RP EQ expr */
151288
- -3, /* (148) setlist ::= nm EQ expr */
151289
- -5, /* (149) setlist ::= LP idlist RP EQ expr */
151290
- -7, /* (150) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
151291
- -7, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
151292
- 0, /* (152) upsert ::= */
151293
- -11, /* (153) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
151294
- -8, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
151295
- -4, /* (155) upsert ::= ON CONFLICT DO NOTHING */
151296
- -2, /* (156) insert_cmd ::= INSERT orconf */
151297
- -1, /* (157) insert_cmd ::= REPLACE */
151298
- 0, /* (158) idlist_opt ::= */
151299
- -3, /* (159) idlist_opt ::= LP idlist RP */
151300
- -3, /* (160) idlist ::= idlist COMMA nm */
151301
- -1, /* (161) idlist ::= nm */
151302
- -3, /* (162) expr ::= LP expr RP */
151303
- -1, /* (163) expr ::= ID|INDEXED */
151304
- -1, /* (164) expr ::= JOIN_KW */
151305
- -3, /* (165) expr ::= nm DOT nm */
151306
- -5, /* (166) expr ::= nm DOT nm DOT nm */
151307
- -1, /* (167) term ::= NULL|FLOAT|BLOB */
151308
- -1, /* (168) term ::= STRING */
151309
- -1, /* (169) term ::= INTEGER */
151310
- -1, /* (170) expr ::= VARIABLE */
151311
- -3, /* (171) expr ::= expr COLLATE ID|STRING */
151312
- -6, /* (172) expr ::= CAST LP expr AS typetoken RP */
151313
- -5, /* (173) expr ::= ID|INDEXED LP distinct exprlist RP */
151314
- -4, /* (174) expr ::= ID|INDEXED LP STAR RP */
151315
- -6, /* (175) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
151316
- -5, /* (176) expr ::= ID|INDEXED LP STAR RP over_clause */
151317
- -1, /* (177) term ::= CTIME_KW */
151318
- -5, /* (178) expr ::= LP nexprlist COMMA expr RP */
151319
- -3, /* (179) expr ::= expr AND expr */
151320
- -3, /* (180) expr ::= expr OR expr */
151321
- -3, /* (181) expr ::= expr LT|GT|GE|LE expr */
151322
- -3, /* (182) expr ::= expr EQ|NE expr */
151323
- -3, /* (183) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
151324
- -3, /* (184) expr ::= expr PLUS|MINUS expr */
151325
- -3, /* (185) expr ::= expr STAR|SLASH|REM expr */
151326
- -3, /* (186) expr ::= expr CONCAT expr */
151327
- -2, /* (187) likeop ::= NOT LIKE_KW|MATCH */
151328
- -3, /* (188) expr ::= expr likeop expr */
151329
- -5, /* (189) expr ::= expr likeop expr ESCAPE expr */
151330
- -2, /* (190) expr ::= expr ISNULL|NOTNULL */
151331
- -3, /* (191) expr ::= expr NOT NULL */
151332
- -3, /* (192) expr ::= expr IS expr */
151333
- -4, /* (193) expr ::= expr IS NOT expr */
151334
- -2, /* (194) expr ::= NOT expr */
151335
- -2, /* (195) expr ::= BITNOT expr */
151336
- -2, /* (196) expr ::= PLUS|MINUS expr */
151337
- -1, /* (197) between_op ::= BETWEEN */
151338
- -2, /* (198) between_op ::= NOT BETWEEN */
151339
- -5, /* (199) expr ::= expr between_op expr AND expr */
151340
- -1, /* (200) in_op ::= IN */
151341
- -2, /* (201) in_op ::= NOT IN */
151342
- -5, /* (202) expr ::= expr in_op LP exprlist RP */
151343
- -3, /* (203) expr ::= LP select RP */
151344
- -5, /* (204) expr ::= expr in_op LP select RP */
151345
- -5, /* (205) expr ::= expr in_op nm dbnm paren_exprlist */
151346
- -4, /* (206) expr ::= EXISTS LP select RP */
151347
- -5, /* (207) expr ::= CASE case_operand case_exprlist case_else END */
151348
- -5, /* (208) case_exprlist ::= case_exprlist WHEN expr THEN expr */
151349
- -4, /* (209) case_exprlist ::= WHEN expr THEN expr */
151350
- -2, /* (210) case_else ::= ELSE expr */
151351
- 0, /* (211) case_else ::= */
151352
- -1, /* (212) case_operand ::= expr */
151353
- 0, /* (213) case_operand ::= */
151354
- 0, /* (214) exprlist ::= */
151355
- -3, /* (215) nexprlist ::= nexprlist COMMA expr */
151356
- -1, /* (216) nexprlist ::= expr */
151357
- 0, /* (217) paren_exprlist ::= */
151358
- -3, /* (218) paren_exprlist ::= LP exprlist RP */
151359
- -12, /* (219) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
151360
- -1, /* (220) uniqueflag ::= UNIQUE */
151361
- 0, /* (221) uniqueflag ::= */
151362
- 0, /* (222) eidlist_opt ::= */
151363
- -3, /* (223) eidlist_opt ::= LP eidlist RP */
151364
- -5, /* (224) eidlist ::= eidlist COMMA nm collate sortorder */
151365
- -3, /* (225) eidlist ::= nm collate sortorder */
151366
- 0, /* (226) collate ::= */
151367
- -2, /* (227) collate ::= COLLATE ID|STRING */
151368
- -4, /* (228) cmd ::= DROP INDEX ifexists fullname */
151369
- -2, /* (229) cmd ::= VACUUM vinto */
151370
- -3, /* (230) cmd ::= VACUUM nm vinto */
151371
- -2, /* (231) vinto ::= INTO expr */
151372
- 0, /* (232) vinto ::= */
151373
- -3, /* (233) cmd ::= PRAGMA nm dbnm */
151374
- -5, /* (234) cmd ::= PRAGMA nm dbnm EQ nmnum */
151375
- -6, /* (235) cmd ::= PRAGMA nm dbnm LP nmnum RP */
151376
- -5, /* (236) cmd ::= PRAGMA nm dbnm EQ minus_num */
151377
- -6, /* (237) cmd ::= PRAGMA nm dbnm LP minus_num RP */
151378
- -2, /* (238) plus_num ::= PLUS INTEGER|FLOAT */
151379
- -2, /* (239) minus_num ::= MINUS INTEGER|FLOAT */
151380
- -5, /* (240) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
151381
- -11, /* (241) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
151382
- -1, /* (242) trigger_time ::= BEFORE|AFTER */
151383
- -2, /* (243) trigger_time ::= INSTEAD OF */
151384
- 0, /* (244) trigger_time ::= */
151385
- -1, /* (245) trigger_event ::= DELETE|INSERT */
151386
- -1, /* (246) trigger_event ::= UPDATE */
151387
- -3, /* (247) trigger_event ::= UPDATE OF idlist */
151388
- 0, /* (248) when_clause ::= */
151389
- -2, /* (249) when_clause ::= WHEN expr */
151390
- -3, /* (250) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
151391
- -2, /* (251) trigger_cmd_list ::= trigger_cmd SEMI */
151392
- -3, /* (252) trnm ::= nm DOT nm */
151393
- -3, /* (253) tridxby ::= INDEXED BY nm */
151394
- -2, /* (254) tridxby ::= NOT INDEXED */
151395
- -8, /* (255) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
151396
- -8, /* (256) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
151397
- -6, /* (257) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
151398
- -3, /* (258) trigger_cmd ::= scanpt select scanpt */
151399
- -4, /* (259) expr ::= RAISE LP IGNORE RP */
151400
- -6, /* (260) expr ::= RAISE LP raisetype COMMA nm RP */
151401
- -1, /* (261) raisetype ::= ROLLBACK */
151402
- -1, /* (262) raisetype ::= ABORT */
151403
- -1, /* (263) raisetype ::= FAIL */
151404
- -4, /* (264) cmd ::= DROP TRIGGER ifexists fullname */
151405
- -6, /* (265) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
151406
- -3, /* (266) cmd ::= DETACH database_kw_opt expr */
151407
- 0, /* (267) key_opt ::= */
151408
- -2, /* (268) key_opt ::= KEY expr */
151409
- -1, /* (269) cmd ::= REINDEX */
151410
- -3, /* (270) cmd ::= REINDEX nm dbnm */
151411
- -1, /* (271) cmd ::= ANALYZE */
151412
- -3, /* (272) cmd ::= ANALYZE nm dbnm */
151413
- -6, /* (273) cmd ::= ALTER TABLE fullname RENAME TO nm */
151414
- -7, /* (274) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
151415
- -1, /* (275) add_column_fullname ::= fullname */
151416
- -8, /* (276) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
151417
- -1, /* (277) cmd ::= create_vtab */
151418
- -4, /* (278) cmd ::= create_vtab LP vtabarglist RP */
151419
- -8, /* (279) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
151420
- 0, /* (280) vtabarg ::= */
151421
- -1, /* (281) vtabargtoken ::= ANY */
151422
- -3, /* (282) vtabargtoken ::= lp anylist RP */
151423
- -1, /* (283) lp ::= LP */
151424
- -2, /* (284) with ::= WITH wqlist */
151425
- -3, /* (285) with ::= WITH RECURSIVE wqlist */
151426
- -6, /* (286) wqlist ::= nm eidlist_opt AS LP select RP */
151427
- -8, /* (287) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
151428
- -1, /* (288) windowdefn_list ::= windowdefn */
151429
- -3, /* (289) windowdefn_list ::= windowdefn_list COMMA windowdefn */
151430
- -5, /* (290) windowdefn ::= nm AS LP window RP */
151431
- -5, /* (291) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
151432
- -6, /* (292) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
151433
- -4, /* (293) window ::= ORDER BY sortlist frame_opt */
151434
- -5, /* (294) window ::= nm ORDER BY sortlist frame_opt */
151435
- -1, /* (295) window ::= frame_opt */
151436
- -2, /* (296) window ::= nm frame_opt */
151437
- 0, /* (297) frame_opt ::= */
151438
- -3, /* (298) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
151439
- -6, /* (299) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
151440
- -1, /* (300) range_or_rows ::= RANGE|ROWS|GROUPS */
151441
- -1, /* (301) frame_bound_s ::= frame_bound */
151442
- -2, /* (302) frame_bound_s ::= UNBOUNDED PRECEDING */
151443
- -1, /* (303) frame_bound_e ::= frame_bound */
151444
- -2, /* (304) frame_bound_e ::= UNBOUNDED FOLLOWING */
151445
- -2, /* (305) frame_bound ::= expr PRECEDING|FOLLOWING */
151446
- -2, /* (306) frame_bound ::= CURRENT ROW */
151447
- 0, /* (307) frame_exclude_opt ::= */
151448
- -2, /* (308) frame_exclude_opt ::= EXCLUDE frame_exclude */
151449
- -2, /* (309) frame_exclude ::= NO OTHERS */
151450
- -2, /* (310) frame_exclude ::= CURRENT ROW */
151451
- -1, /* (311) frame_exclude ::= GROUP|TIES */
151452
- -2, /* (312) window_clause ::= WINDOW windowdefn_list */
151453
- -5, /* (313) over_clause ::= filter_opt OVER LP window RP */
151454
- -3, /* (314) over_clause ::= filter_opt OVER nm */
151455
- 0, /* (315) filter_opt ::= */
151456
- -5, /* (316) filter_opt ::= FILTER LP WHERE expr RP */
151457
- -1, /* (317) input ::= cmdlist */
151458
- -2, /* (318) cmdlist ::= cmdlist ecmd */
151459
- -1, /* (319) cmdlist ::= ecmd */
151460
- -1, /* (320) ecmd ::= SEMI */
151461
- -2, /* (321) ecmd ::= cmdx SEMI */
151462
- -2, /* (322) ecmd ::= explain cmdx */
151463
- 0, /* (323) trans_opt ::= */
151464
- -1, /* (324) trans_opt ::= TRANSACTION */
151465
- -2, /* (325) trans_opt ::= TRANSACTION nm */
151466
- -1, /* (326) savepoint_opt ::= SAVEPOINT */
151467
- 0, /* (327) savepoint_opt ::= */
151468
- -2, /* (328) cmd ::= create_table create_table_args */
151469
- -4, /* (329) columnlist ::= columnlist COMMA columnname carglist */
151470
- -2, /* (330) columnlist ::= columnname carglist */
151471
- -1, /* (331) nm ::= ID|INDEXED */
151472
- -1, /* (332) nm ::= STRING */
151473
- -1, /* (333) nm ::= JOIN_KW */
151474
- -1, /* (334) typetoken ::= typename */
151475
- -1, /* (335) typename ::= ID|STRING */
151476
- -1, /* (336) signed ::= plus_num */
151477
- -1, /* (337) signed ::= minus_num */
151478
- -2, /* (338) carglist ::= carglist ccons */
151479
- 0, /* (339) carglist ::= */
151480
- -2, /* (340) ccons ::= NULL onconf */
151481
- -2, /* (341) conslist_opt ::= COMMA conslist */
151482
- -3, /* (342) conslist ::= conslist tconscomma tcons */
151483
- -1, /* (343) conslist ::= tcons */
151484
- 0, /* (344) tconscomma ::= */
151485
- -1, /* (345) defer_subclause_opt ::= defer_subclause */
151486
- -1, /* (346) resolvetype ::= raisetype */
151487
- -1, /* (347) selectnowith ::= oneselect */
151488
- -1, /* (348) oneselect ::= values */
151489
- -2, /* (349) sclp ::= selcollist COMMA */
151490
- -1, /* (350) as ::= ID|STRING */
151491
- -1, /* (351) expr ::= term */
151492
- -1, /* (352) likeop ::= LIKE_KW|MATCH */
151493
- -1, /* (353) exprlist ::= nexprlist */
151494
- -1, /* (354) nmnum ::= plus_num */
151495
- -1, /* (355) nmnum ::= nm */
151496
- -1, /* (356) nmnum ::= ON */
151497
- -1, /* (357) nmnum ::= DELETE */
151498
- -1, /* (358) nmnum ::= DEFAULT */
151499
- -1, /* (359) plus_num ::= INTEGER|FLOAT */
151500
- 0, /* (360) foreach_clause ::= */
151501
- -3, /* (361) foreach_clause ::= FOR EACH ROW */
151502
- -1, /* (362) trnm ::= nm */
151503
- 0, /* (363) tridxby ::= */
151504
- -1, /* (364) database_kw_opt ::= DATABASE */
151505
- 0, /* (365) database_kw_opt ::= */
151506
- 0, /* (366) kwcolumn_opt ::= */
151507
- -1, /* (367) kwcolumn_opt ::= COLUMNKW */
151508
- -1, /* (368) vtabarglist ::= vtabarg */
151509
- -3, /* (369) vtabarglist ::= vtabarglist COMMA vtabarg */
151510
- -2, /* (370) vtabarg ::= vtabarg vtabargtoken */
151511
- 0, /* (371) anylist ::= */
151512
- -4, /* (372) anylist ::= anylist LP anylist RP */
151513
- -2, /* (373) anylist ::= anylist ANY */
151514
- 0, /* (374) with ::= */
151319
+ 0, /* (29) scantok ::= */
151320
+ -2, /* (30) ccons ::= CONSTRAINT nm */
151321
+ -3, /* (31) ccons ::= DEFAULT scantok term */
151322
+ -4, /* (32) ccons ::= DEFAULT LP expr RP */
151323
+ -4, /* (33) ccons ::= DEFAULT PLUS scantok term */
151324
+ -4, /* (34) ccons ::= DEFAULT MINUS scantok term */
151325
+ -3, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
151326
+ -3, /* (36) ccons ::= NOT NULL onconf */
151327
+ -5, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
151328
+ -2, /* (38) ccons ::= UNIQUE onconf */
151329
+ -4, /* (39) ccons ::= CHECK LP expr RP */
151330
+ -4, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
151331
+ -1, /* (41) ccons ::= defer_subclause */
151332
+ -2, /* (42) ccons ::= COLLATE ID|STRING */
151333
+ 0, /* (43) autoinc ::= */
151334
+ -1, /* (44) autoinc ::= AUTOINCR */
151335
+ 0, /* (45) refargs ::= */
151336
+ -2, /* (46) refargs ::= refargs refarg */
151337
+ -2, /* (47) refarg ::= MATCH nm */
151338
+ -3, /* (48) refarg ::= ON INSERT refact */
151339
+ -3, /* (49) refarg ::= ON DELETE refact */
151340
+ -3, /* (50) refarg ::= ON UPDATE refact */
151341
+ -2, /* (51) refact ::= SET NULL */
151342
+ -2, /* (52) refact ::= SET DEFAULT */
151343
+ -1, /* (53) refact ::= CASCADE */
151344
+ -1, /* (54) refact ::= RESTRICT */
151345
+ -2, /* (55) refact ::= NO ACTION */
151346
+ -3, /* (56) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
151347
+ -2, /* (57) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
151348
+ 0, /* (58) init_deferred_pred_opt ::= */
151349
+ -2, /* (59) init_deferred_pred_opt ::= INITIALLY DEFERRED */
151350
+ -2, /* (60) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
151351
+ 0, /* (61) conslist_opt ::= */
151352
+ -1, /* (62) tconscomma ::= COMMA */
151353
+ -2, /* (63) tcons ::= CONSTRAINT nm */
151354
+ -7, /* (64) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
151355
+ -5, /* (65) tcons ::= UNIQUE LP sortlist RP onconf */
151356
+ -5, /* (66) tcons ::= CHECK LP expr RP onconf */
151357
+ -10, /* (67) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
151358
+ 0, /* (68) defer_subclause_opt ::= */
151359
+ 0, /* (69) onconf ::= */
151360
+ -3, /* (70) onconf ::= ON CONFLICT resolvetype */
151361
+ 0, /* (71) orconf ::= */
151362
+ -2, /* (72) orconf ::= OR resolvetype */
151363
+ -1, /* (73) resolvetype ::= IGNORE */
151364
+ -1, /* (74) resolvetype ::= REPLACE */
151365
+ -4, /* (75) cmd ::= DROP TABLE ifexists fullname */
151366
+ -2, /* (76) ifexists ::= IF EXISTS */
151367
+ 0, /* (77) ifexists ::= */
151368
+ -9, /* (78) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
151369
+ -4, /* (79) cmd ::= DROP VIEW ifexists fullname */
151370
+ -1, /* (80) cmd ::= select */
151371
+ -3, /* (81) select ::= WITH wqlist selectnowith */
151372
+ -4, /* (82) select ::= WITH RECURSIVE wqlist selectnowith */
151373
+ -1, /* (83) select ::= selectnowith */
151374
+ -3, /* (84) selectnowith ::= selectnowith multiselect_op oneselect */
151375
+ -1, /* (85) multiselect_op ::= UNION */
151376
+ -2, /* (86) multiselect_op ::= UNION ALL */
151377
+ -1, /* (87) multiselect_op ::= EXCEPT|INTERSECT */
151378
+ -9, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
151379
+ -10, /* (89) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
151380
+ -4, /* (90) values ::= VALUES LP nexprlist RP */
151381
+ -5, /* (91) values ::= values COMMA LP nexprlist RP */
151382
+ -1, /* (92) distinct ::= DISTINCT */
151383
+ -1, /* (93) distinct ::= ALL */
151384
+ 0, /* (94) distinct ::= */
151385
+ 0, /* (95) sclp ::= */
151386
+ -5, /* (96) selcollist ::= sclp scanpt expr scanpt as */
151387
+ -3, /* (97) selcollist ::= sclp scanpt STAR */
151388
+ -5, /* (98) selcollist ::= sclp scanpt nm DOT STAR */
151389
+ -2, /* (99) as ::= AS nm */
151390
+ 0, /* (100) as ::= */
151391
+ 0, /* (101) from ::= */
151392
+ -2, /* (102) from ::= FROM seltablist */
151393
+ -2, /* (103) stl_prefix ::= seltablist joinop */
151394
+ 0, /* (104) stl_prefix ::= */
151395
+ -7, /* (105) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
151396
+ -9, /* (106) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
151397
+ -7, /* (107) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
151398
+ -7, /* (108) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
151399
+ 0, /* (109) dbnm ::= */
151400
+ -2, /* (110) dbnm ::= DOT nm */
151401
+ -1, /* (111) fullname ::= nm */
151402
+ -3, /* (112) fullname ::= nm DOT nm */
151403
+ -1, /* (113) xfullname ::= nm */
151404
+ -3, /* (114) xfullname ::= nm DOT nm */
151405
+ -5, /* (115) xfullname ::= nm DOT nm AS nm */
151406
+ -3, /* (116) xfullname ::= nm AS nm */
151407
+ -1, /* (117) joinop ::= COMMA|JOIN */
151408
+ -2, /* (118) joinop ::= JOIN_KW JOIN */
151409
+ -3, /* (119) joinop ::= JOIN_KW nm JOIN */
151410
+ -4, /* (120) joinop ::= JOIN_KW nm nm JOIN */
151411
+ -2, /* (121) on_opt ::= ON expr */
151412
+ 0, /* (122) on_opt ::= */
151413
+ 0, /* (123) indexed_opt ::= */
151414
+ -3, /* (124) indexed_opt ::= INDEXED BY nm */
151415
+ -2, /* (125) indexed_opt ::= NOT INDEXED */
151416
+ -4, /* (126) using_opt ::= USING LP idlist RP */
151417
+ 0, /* (127) using_opt ::= */
151418
+ 0, /* (128) orderby_opt ::= */
151419
+ -3, /* (129) orderby_opt ::= ORDER BY sortlist */
151420
+ -4, /* (130) sortlist ::= sortlist COMMA expr sortorder */
151421
+ -2, /* (131) sortlist ::= expr sortorder */
151422
+ -1, /* (132) sortorder ::= ASC */
151423
+ -1, /* (133) sortorder ::= DESC */
151424
+ 0, /* (134) sortorder ::= */
151425
+ 0, /* (135) groupby_opt ::= */
151426
+ -3, /* (136) groupby_opt ::= GROUP BY nexprlist */
151427
+ 0, /* (137) having_opt ::= */
151428
+ -2, /* (138) having_opt ::= HAVING expr */
151429
+ 0, /* (139) limit_opt ::= */
151430
+ -2, /* (140) limit_opt ::= LIMIT expr */
151431
+ -4, /* (141) limit_opt ::= LIMIT expr OFFSET expr */
151432
+ -4, /* (142) limit_opt ::= LIMIT expr COMMA expr */
151433
+ -6, /* (143) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
151434
+ 0, /* (144) where_opt ::= */
151435
+ -2, /* (145) where_opt ::= WHERE expr */
151436
+ -8, /* (146) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
151437
+ -5, /* (147) setlist ::= setlist COMMA nm EQ expr */
151438
+ -7, /* (148) setlist ::= setlist COMMA LP idlist RP EQ expr */
151439
+ -3, /* (149) setlist ::= nm EQ expr */
151440
+ -5, /* (150) setlist ::= LP idlist RP EQ expr */
151441
+ -7, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
151442
+ -7, /* (152) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
151443
+ 0, /* (153) upsert ::= */
151444
+ -11, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
151445
+ -8, /* (155) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
151446
+ -4, /* (156) upsert ::= ON CONFLICT DO NOTHING */
151447
+ -2, /* (157) insert_cmd ::= INSERT orconf */
151448
+ -1, /* (158) insert_cmd ::= REPLACE */
151449
+ 0, /* (159) idlist_opt ::= */
151450
+ -3, /* (160) idlist_opt ::= LP idlist RP */
151451
+ -3, /* (161) idlist ::= idlist COMMA nm */
151452
+ -1, /* (162) idlist ::= nm */
151453
+ -3, /* (163) expr ::= LP expr RP */
151454
+ -1, /* (164) expr ::= ID|INDEXED */
151455
+ -1, /* (165) expr ::= JOIN_KW */
151456
+ -3, /* (166) expr ::= nm DOT nm */
151457
+ -5, /* (167) expr ::= nm DOT nm DOT nm */
151458
+ -1, /* (168) term ::= NULL|FLOAT|BLOB */
151459
+ -1, /* (169) term ::= STRING */
151460
+ -1, /* (170) term ::= INTEGER */
151461
+ -1, /* (171) expr ::= VARIABLE */
151462
+ -3, /* (172) expr ::= expr COLLATE ID|STRING */
151463
+ -6, /* (173) expr ::= CAST LP expr AS typetoken RP */
151464
+ -5, /* (174) expr ::= ID|INDEXED LP distinct exprlist RP */
151465
+ -4, /* (175) expr ::= ID|INDEXED LP STAR RP */
151466
+ -6, /* (176) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
151467
+ -5, /* (177) expr ::= ID|INDEXED LP STAR RP over_clause */
151468
+ -1, /* (178) term ::= CTIME_KW */
151469
+ -5, /* (179) expr ::= LP nexprlist COMMA expr RP */
151470
+ -3, /* (180) expr ::= expr AND expr */
151471
+ -3, /* (181) expr ::= expr OR expr */
151472
+ -3, /* (182) expr ::= expr LT|GT|GE|LE expr */
151473
+ -3, /* (183) expr ::= expr EQ|NE expr */
151474
+ -3, /* (184) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
151475
+ -3, /* (185) expr ::= expr PLUS|MINUS expr */
151476
+ -3, /* (186) expr ::= expr STAR|SLASH|REM expr */
151477
+ -3, /* (187) expr ::= expr CONCAT expr */
151478
+ -2, /* (188) likeop ::= NOT LIKE_KW|MATCH */
151479
+ -3, /* (189) expr ::= expr likeop expr */
151480
+ -5, /* (190) expr ::= expr likeop expr ESCAPE expr */
151481
+ -2, /* (191) expr ::= expr ISNULL|NOTNULL */
151482
+ -3, /* (192) expr ::= expr NOT NULL */
151483
+ -3, /* (193) expr ::= expr IS expr */
151484
+ -4, /* (194) expr ::= expr IS NOT expr */
151485
+ -2, /* (195) expr ::= NOT expr */
151486
+ -2, /* (196) expr ::= BITNOT expr */
151487
+ -2, /* (197) expr ::= PLUS|MINUS expr */
151488
+ -1, /* (198) between_op ::= BETWEEN */
151489
+ -2, /* (199) between_op ::= NOT BETWEEN */
151490
+ -5, /* (200) expr ::= expr between_op expr AND expr */
151491
+ -1, /* (201) in_op ::= IN */
151492
+ -2, /* (202) in_op ::= NOT IN */
151493
+ -5, /* (203) expr ::= expr in_op LP exprlist RP */
151494
+ -3, /* (204) expr ::= LP select RP */
151495
+ -5, /* (205) expr ::= expr in_op LP select RP */
151496
+ -5, /* (206) expr ::= expr in_op nm dbnm paren_exprlist */
151497
+ -4, /* (207) expr ::= EXISTS LP select RP */
151498
+ -5, /* (208) expr ::= CASE case_operand case_exprlist case_else END */
151499
+ -5, /* (209) case_exprlist ::= case_exprlist WHEN expr THEN expr */
151500
+ -4, /* (210) case_exprlist ::= WHEN expr THEN expr */
151501
+ -2, /* (211) case_else ::= ELSE expr */
151502
+ 0, /* (212) case_else ::= */
151503
+ -1, /* (213) case_operand ::= expr */
151504
+ 0, /* (214) case_operand ::= */
151505
+ 0, /* (215) exprlist ::= */
151506
+ -3, /* (216) nexprlist ::= nexprlist COMMA expr */
151507
+ -1, /* (217) nexprlist ::= expr */
151508
+ 0, /* (218) paren_exprlist ::= */
151509
+ -3, /* (219) paren_exprlist ::= LP exprlist RP */
151510
+ -12, /* (220) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
151511
+ -1, /* (221) uniqueflag ::= UNIQUE */
151512
+ 0, /* (222) uniqueflag ::= */
151513
+ 0, /* (223) eidlist_opt ::= */
151514
+ -3, /* (224) eidlist_opt ::= LP eidlist RP */
151515
+ -5, /* (225) eidlist ::= eidlist COMMA nm collate sortorder */
151516
+ -3, /* (226) eidlist ::= nm collate sortorder */
151517
+ 0, /* (227) collate ::= */
151518
+ -2, /* (228) collate ::= COLLATE ID|STRING */
151519
+ -4, /* (229) cmd ::= DROP INDEX ifexists fullname */
151520
+ -2, /* (230) cmd ::= VACUUM vinto */
151521
+ -3, /* (231) cmd ::= VACUUM nm vinto */
151522
+ -2, /* (232) vinto ::= INTO expr */
151523
+ 0, /* (233) vinto ::= */
151524
+ -3, /* (234) cmd ::= PRAGMA nm dbnm */
151525
+ -5, /* (235) cmd ::= PRAGMA nm dbnm EQ nmnum */
151526
+ -6, /* (236) cmd ::= PRAGMA nm dbnm LP nmnum RP */
151527
+ -5, /* (237) cmd ::= PRAGMA nm dbnm EQ minus_num */
151528
+ -6, /* (238) cmd ::= PRAGMA nm dbnm LP minus_num RP */
151529
+ -2, /* (239) plus_num ::= PLUS INTEGER|FLOAT */
151530
+ -2, /* (240) minus_num ::= MINUS INTEGER|FLOAT */
151531
+ -5, /* (241) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
151532
+ -11, /* (242) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
151533
+ -1, /* (243) trigger_time ::= BEFORE|AFTER */
151534
+ -2, /* (244) trigger_time ::= INSTEAD OF */
151535
+ 0, /* (245) trigger_time ::= */
151536
+ -1, /* (246) trigger_event ::= DELETE|INSERT */
151537
+ -1, /* (247) trigger_event ::= UPDATE */
151538
+ -3, /* (248) trigger_event ::= UPDATE OF idlist */
151539
+ 0, /* (249) when_clause ::= */
151540
+ -2, /* (250) when_clause ::= WHEN expr */
151541
+ -3, /* (251) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
151542
+ -2, /* (252) trigger_cmd_list ::= trigger_cmd SEMI */
151543
+ -3, /* (253) trnm ::= nm DOT nm */
151544
+ -3, /* (254) tridxby ::= INDEXED BY nm */
151545
+ -2, /* (255) tridxby ::= NOT INDEXED */
151546
+ -8, /* (256) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
151547
+ -8, /* (257) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
151548
+ -6, /* (258) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
151549
+ -3, /* (259) trigger_cmd ::= scanpt select scanpt */
151550
+ -4, /* (260) expr ::= RAISE LP IGNORE RP */
151551
+ -6, /* (261) expr ::= RAISE LP raisetype COMMA nm RP */
151552
+ -1, /* (262) raisetype ::= ROLLBACK */
151553
+ -1, /* (263) raisetype ::= ABORT */
151554
+ -1, /* (264) raisetype ::= FAIL */
151555
+ -4, /* (265) cmd ::= DROP TRIGGER ifexists fullname */
151556
+ -6, /* (266) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
151557
+ -3, /* (267) cmd ::= DETACH database_kw_opt expr */
151558
+ 0, /* (268) key_opt ::= */
151559
+ -2, /* (269) key_opt ::= KEY expr */
151560
+ -1, /* (270) cmd ::= REINDEX */
151561
+ -3, /* (271) cmd ::= REINDEX nm dbnm */
151562
+ -1, /* (272) cmd ::= ANALYZE */
151563
+ -3, /* (273) cmd ::= ANALYZE nm dbnm */
151564
+ -6, /* (274) cmd ::= ALTER TABLE fullname RENAME TO nm */
151565
+ -7, /* (275) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
151566
+ -1, /* (276) add_column_fullname ::= fullname */
151567
+ -8, /* (277) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
151568
+ -1, /* (278) cmd ::= create_vtab */
151569
+ -4, /* (279) cmd ::= create_vtab LP vtabarglist RP */
151570
+ -8, /* (280) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
151571
+ 0, /* (281) vtabarg ::= */
151572
+ -1, /* (282) vtabargtoken ::= ANY */
151573
+ -3, /* (283) vtabargtoken ::= lp anylist RP */
151574
+ -1, /* (284) lp ::= LP */
151575
+ -2, /* (285) with ::= WITH wqlist */
151576
+ -3, /* (286) with ::= WITH RECURSIVE wqlist */
151577
+ -6, /* (287) wqlist ::= nm eidlist_opt AS LP select RP */
151578
+ -8, /* (288) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
151579
+ -1, /* (289) windowdefn_list ::= windowdefn */
151580
+ -3, /* (290) windowdefn_list ::= windowdefn_list COMMA windowdefn */
151581
+ -5, /* (291) windowdefn ::= nm AS LP window RP */
151582
+ -5, /* (292) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
151583
+ -6, /* (293) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
151584
+ -4, /* (294) window ::= ORDER BY sortlist frame_opt */
151585
+ -5, /* (295) window ::= nm ORDER BY sortlist frame_opt */
151586
+ -1, /* (296) window ::= frame_opt */
151587
+ -2, /* (297) window ::= nm frame_opt */
151588
+ 0, /* (298) frame_opt ::= */
151589
+ -3, /* (299) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
151590
+ -6, /* (300) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
151591
+ -1, /* (301) range_or_rows ::= RANGE|ROWS|GROUPS */
151592
+ -1, /* (302) frame_bound_s ::= frame_bound */
151593
+ -2, /* (303) frame_bound_s ::= UNBOUNDED PRECEDING */
151594
+ -1, /* (304) frame_bound_e ::= frame_bound */
151595
+ -2, /* (305) frame_bound_e ::= UNBOUNDED FOLLOWING */
151596
+ -2, /* (306) frame_bound ::= expr PRECEDING|FOLLOWING */
151597
+ -2, /* (307) frame_bound ::= CURRENT ROW */
151598
+ 0, /* (308) frame_exclude_opt ::= */
151599
+ -2, /* (309) frame_exclude_opt ::= EXCLUDE frame_exclude */
151600
+ -2, /* (310) frame_exclude ::= NO OTHERS */
151601
+ -2, /* (311) frame_exclude ::= CURRENT ROW */
151602
+ -1, /* (312) frame_exclude ::= GROUP|TIES */
151603
+ -2, /* (313) window_clause ::= WINDOW windowdefn_list */
151604
+ -5, /* (314) over_clause ::= filter_opt OVER LP window RP */
151605
+ -3, /* (315) over_clause ::= filter_opt OVER nm */
151606
+ 0, /* (316) filter_opt ::= */
151607
+ -5, /* (317) filter_opt ::= FILTER LP WHERE expr RP */
151608
+ -1, /* (318) input ::= cmdlist */
151609
+ -2, /* (319) cmdlist ::= cmdlist ecmd */
151610
+ -1, /* (320) cmdlist ::= ecmd */
151611
+ -1, /* (321) ecmd ::= SEMI */
151612
+ -2, /* (322) ecmd ::= cmdx SEMI */
151613
+ -2, /* (323) ecmd ::= explain cmdx */
151614
+ 0, /* (324) trans_opt ::= */
151615
+ -1, /* (325) trans_opt ::= TRANSACTION */
151616
+ -2, /* (326) trans_opt ::= TRANSACTION nm */
151617
+ -1, /* (327) savepoint_opt ::= SAVEPOINT */
151618
+ 0, /* (328) savepoint_opt ::= */
151619
+ -2, /* (329) cmd ::= create_table create_table_args */
151620
+ -4, /* (330) columnlist ::= columnlist COMMA columnname carglist */
151621
+ -2, /* (331) columnlist ::= columnname carglist */
151622
+ -1, /* (332) nm ::= ID|INDEXED */
151623
+ -1, /* (333) nm ::= STRING */
151624
+ -1, /* (334) nm ::= JOIN_KW */
151625
+ -1, /* (335) typetoken ::= typename */
151626
+ -1, /* (336) typename ::= ID|STRING */
151627
+ -1, /* (337) signed ::= plus_num */
151628
+ -1, /* (338) signed ::= minus_num */
151629
+ -2, /* (339) carglist ::= carglist ccons */
151630
+ 0, /* (340) carglist ::= */
151631
+ -2, /* (341) ccons ::= NULL onconf */
151632
+ -2, /* (342) conslist_opt ::= COMMA conslist */
151633
+ -3, /* (343) conslist ::= conslist tconscomma tcons */
151634
+ -1, /* (344) conslist ::= tcons */
151635
+ 0, /* (345) tconscomma ::= */
151636
+ -1, /* (346) defer_subclause_opt ::= defer_subclause */
151637
+ -1, /* (347) resolvetype ::= raisetype */
151638
+ -1, /* (348) selectnowith ::= oneselect */
151639
+ -1, /* (349) oneselect ::= values */
151640
+ -2, /* (350) sclp ::= selcollist COMMA */
151641
+ -1, /* (351) as ::= ID|STRING */
151642
+ -1, /* (352) expr ::= term */
151643
+ -1, /* (353) likeop ::= LIKE_KW|MATCH */
151644
+ -1, /* (354) exprlist ::= nexprlist */
151645
+ -1, /* (355) nmnum ::= plus_num */
151646
+ -1, /* (356) nmnum ::= nm */
151647
+ -1, /* (357) nmnum ::= ON */
151648
+ -1, /* (358) nmnum ::= DELETE */
151649
+ -1, /* (359) nmnum ::= DEFAULT */
151650
+ -1, /* (360) plus_num ::= INTEGER|FLOAT */
151651
+ 0, /* (361) foreach_clause ::= */
151652
+ -3, /* (362) foreach_clause ::= FOR EACH ROW */
151653
+ -1, /* (363) trnm ::= nm */
151654
+ 0, /* (364) tridxby ::= */
151655
+ -1, /* (365) database_kw_opt ::= DATABASE */
151656
+ 0, /* (366) database_kw_opt ::= */
151657
+ 0, /* (367) kwcolumn_opt ::= */
151658
+ -1, /* (368) kwcolumn_opt ::= COLUMNKW */
151659
+ -1, /* (369) vtabarglist ::= vtabarg */
151660
+ -3, /* (370) vtabarglist ::= vtabarglist COMMA vtabarg */
151661
+ -2, /* (371) vtabarg ::= vtabarg vtabargtoken */
151662
+ 0, /* (372) anylist ::= */
151663
+ -4, /* (373) anylist ::= anylist LP anylist RP */
151664
+ -2, /* (374) anylist ::= anylist ANY */
151665
+ 0, /* (375) with ::= */
151515151666
};
151516151667
151517151668
static void yy_accept(yyParser*); /* Forward Declaration */
151518151669
151519151670
/*
@@ -151606,20 +151757,20 @@
151606151757
break;
151607151758
case 2: /* cmdx ::= cmd */
151608151759
{ sqlite3FinishCoding(pParse); }
151609151760
break;
151610151761
case 3: /* cmd ::= BEGIN transtype trans_opt */
151611
-{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy494);}
151762
+{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy100);}
151612151763
break;
151613151764
case 4: /* transtype ::= */
151614
-{yymsp[1].minor.yy494 = TK_DEFERRED;}
151765
+{yymsp[1].minor.yy100 = TK_DEFERRED;}
151615151766
break;
151616151767
case 5: /* transtype ::= DEFERRED */
151617151768
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
151618151769
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
151619
- case 300: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==300);
151620
-{yymsp[0].minor.yy494 = yymsp[0].major; /*A-overwrites-X*/}
151770
+ case 301: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==301);
151771
+{yymsp[0].minor.yy100 = yymsp[0].major; /*A-overwrites-X*/}
151621151772
break;
151622151773
case 8: /* cmd ::= COMMIT|END trans_opt */
151623151774
case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
151624151775
{sqlite3EndTransaction(pParse,yymsp[-1].major);}
151625151776
break;
@@ -151638,61 +151789,61 @@
151638151789
sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
151639151790
}
151640151791
break;
151641151792
case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
151642151793
{
151643
- sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy494,0,0,yymsp[-2].minor.yy494);
151794
+ sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy100,0,0,yymsp[-2].minor.yy100);
151644151795
}
151645151796
break;
151646151797
case 14: /* createkw ::= CREATE */
151647151798
{disableLookaside(pParse);}
151648151799
break;
151649151800
case 15: /* ifnotexists ::= */
151650151801
case 18: /* temp ::= */ yytestcase(yyruleno==18);
151651151802
case 21: /* table_options ::= */ yytestcase(yyruleno==21);
151652
- case 42: /* autoinc ::= */ yytestcase(yyruleno==42);
151653
- case 57: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==57);
151654
- case 67: /* defer_subclause_opt ::= */ yytestcase(yyruleno==67);
151655
- case 76: /* ifexists ::= */ yytestcase(yyruleno==76);
151656
- case 93: /* distinct ::= */ yytestcase(yyruleno==93);
151657
- case 226: /* collate ::= */ yytestcase(yyruleno==226);
151658
-{yymsp[1].minor.yy494 = 0;}
151803
+ case 43: /* autoinc ::= */ yytestcase(yyruleno==43);
151804
+ case 58: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==58);
151805
+ case 68: /* defer_subclause_opt ::= */ yytestcase(yyruleno==68);
151806
+ case 77: /* ifexists ::= */ yytestcase(yyruleno==77);
151807
+ case 94: /* distinct ::= */ yytestcase(yyruleno==94);
151808
+ case 227: /* collate ::= */ yytestcase(yyruleno==227);
151809
+{yymsp[1].minor.yy100 = 0;}
151659151810
break;
151660151811
case 16: /* ifnotexists ::= IF NOT EXISTS */
151661
-{yymsp[-2].minor.yy494 = 1;}
151812
+{yymsp[-2].minor.yy100 = 1;}
151662151813
break;
151663151814
case 17: /* temp ::= TEMP */
151664
- case 43: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==43);
151665
-{yymsp[0].minor.yy494 = 1;}
151815
+ case 44: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==44);
151816
+{yymsp[0].minor.yy100 = 1;}
151666151817
break;
151667151818
case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
151668151819
{
151669
- sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy494,0);
151820
+ sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy100,0);
151670151821
}
151671151822
break;
151672151823
case 20: /* create_table_args ::= AS select */
151673151824
{
151674
- sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy457);
151675
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy457);
151825
+ sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy391);
151826
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy391);
151676151827
}
151677151828
break;
151678151829
case 22: /* table_options ::= WITHOUT nm */
151679151830
{
151680151831
if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
151681
- yymsp[-1].minor.yy494 = TF_WithoutRowid | TF_NoVisibleRowid;
151832
+ yymsp[-1].minor.yy100 = TF_WithoutRowid | TF_NoVisibleRowid;
151682151833
}else{
151683
- yymsp[-1].minor.yy494 = 0;
151834
+ yymsp[-1].minor.yy100 = 0;
151684151835
sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
151685151836
}
151686151837
}
151687151838
break;
151688151839
case 23: /* columnname ::= nm typetoken */
151689151840
{sqlite3AddColumn(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
151690151841
break;
151691151842
case 24: /* typetoken ::= */
151692
- case 60: /* conslist_opt ::= */ yytestcase(yyruleno==60);
151693
- case 99: /* as ::= */ yytestcase(yyruleno==99);
151843
+ case 61: /* conslist_opt ::= */ yytestcase(yyruleno==61);
151844
+ case 100: /* as ::= */ yytestcase(yyruleno==100);
151694151845
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;}
151695151846
break;
151696151847
case 25: /* typetoken ::= typename LP signed RP */
151697151848
{
151698151849
yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z);
@@ -151707,352 +151858,358 @@
151707151858
{yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
151708151859
break;
151709151860
case 28: /* scanpt ::= */
151710151861
{
151711151862
assert( yyLookahead!=YYNOCODE );
151712
- yymsp[1].minor.yy294 = yyLookaheadToken.z;
151863
+ yymsp[1].minor.yy528 = yyLookaheadToken.z;
151713151864
}
151714151865
break;
151715
- case 29: /* ccons ::= CONSTRAINT nm */
151716
- case 62: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==62);
151866
+ case 29: /* scantok ::= */
151867
+{
151868
+ assert( yyLookahead!=YYNOCODE );
151869
+ yymsp[1].minor.yy0 = yyLookaheadToken;
151870
+}
151871
+ break;
151872
+ case 30: /* ccons ::= CONSTRAINT nm */
151873
+ case 63: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==63);
151717151874
{pParse->constraintName = yymsp[0].minor.yy0;}
151718151875
break;
151719
- case 30: /* ccons ::= DEFAULT scanpt term scanpt */
151720
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy524,yymsp[-2].minor.yy294,yymsp[0].minor.yy294);}
151721
- break;
151722
- case 31: /* ccons ::= DEFAULT LP expr RP */
151723
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy524,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
151724
- break;
151725
- case 32: /* ccons ::= DEFAULT PLUS term scanpt */
151726
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy524,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy294);}
151727
- break;
151728
- case 33: /* ccons ::= DEFAULT MINUS term scanpt */
151729
-{
151730
- Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[-1].minor.yy524, 0);
151731
- sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy294);
151732
-}
151733
- break;
151734
- case 34: /* ccons ::= DEFAULT scanpt ID|INDEXED */
151876
+ case 31: /* ccons ::= DEFAULT scantok term */
151877
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy102,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
151878
+ break;
151879
+ case 32: /* ccons ::= DEFAULT LP expr RP */
151880
+{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy102,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
151881
+ break;
151882
+ case 33: /* ccons ::= DEFAULT PLUS scantok term */
151883
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy102,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
151884
+ break;
151885
+ case 34: /* ccons ::= DEFAULT MINUS scantok term */
151886
+{
151887
+ Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy102, 0);
151888
+ sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
151889
+}
151890
+ break;
151891
+ case 35: /* ccons ::= DEFAULT scantok ID|INDEXED */
151735151892
{
151736151893
Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0);
151737151894
if( p ){
151738151895
sqlite3ExprIdToTrueFalse(p);
151739151896
testcase( p->op==TK_TRUEFALSE && sqlite3ExprTruthValue(p) );
151740151897
}
151741151898
sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
151742151899
}
151743151900
break;
151744
- case 35: /* ccons ::= NOT NULL onconf */
151745
-{sqlite3AddNotNull(pParse, yymsp[0].minor.yy494);}
151746
- break;
151747
- case 36: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
151748
-{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy494,yymsp[0].minor.yy494,yymsp[-2].minor.yy494);}
151749
- break;
151750
- case 37: /* ccons ::= UNIQUE onconf */
151751
-{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy494,0,0,0,0,
151752
- SQLITE_IDXTYPE_UNIQUE);}
151753
- break;
151754
- case 38: /* ccons ::= CHECK LP expr RP */
151755
-{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy524);}
151756
- break;
151757
- case 39: /* ccons ::= REFERENCES nm eidlist_opt refargs */
151758
-{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy434,yymsp[0].minor.yy494);}
151759
- break;
151760
- case 40: /* ccons ::= defer_subclause */
151761
-{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy494);}
151762
- break;
151763
- case 41: /* ccons ::= COLLATE ID|STRING */
151764
-{sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
151765
- break;
151766
- case 44: /* refargs ::= */
151767
-{ yymsp[1].minor.yy494 = OE_None*0x0101; /* EV: R-19803-45884 */}
151768
- break;
151769
- case 45: /* refargs ::= refargs refarg */
151770
-{ yymsp[-1].minor.yy494 = (yymsp[-1].minor.yy494 & ~yymsp[0].minor.yy355.mask) | yymsp[0].minor.yy355.value; }
151771
- break;
151772
- case 46: /* refarg ::= MATCH nm */
151773
-{ yymsp[-1].minor.yy355.value = 0; yymsp[-1].minor.yy355.mask = 0x000000; }
151774
- break;
151775
- case 47: /* refarg ::= ON INSERT refact */
151776
-{ yymsp[-2].minor.yy355.value = 0; yymsp[-2].minor.yy355.mask = 0x000000; }
151777
- break;
151778
- case 48: /* refarg ::= ON DELETE refact */
151779
-{ yymsp[-2].minor.yy355.value = yymsp[0].minor.yy494; yymsp[-2].minor.yy355.mask = 0x0000ff; }
151780
- break;
151781
- case 49: /* refarg ::= ON UPDATE refact */
151782
-{ yymsp[-2].minor.yy355.value = yymsp[0].minor.yy494<<8; yymsp[-2].minor.yy355.mask = 0x00ff00; }
151783
- break;
151784
- case 50: /* refact ::= SET NULL */
151785
-{ yymsp[-1].minor.yy494 = OE_SetNull; /* EV: R-33326-45252 */}
151786
- break;
151787
- case 51: /* refact ::= SET DEFAULT */
151788
-{ yymsp[-1].minor.yy494 = OE_SetDflt; /* EV: R-33326-45252 */}
151789
- break;
151790
- case 52: /* refact ::= CASCADE */
151791
-{ yymsp[0].minor.yy494 = OE_Cascade; /* EV: R-33326-45252 */}
151792
- break;
151793
- case 53: /* refact ::= RESTRICT */
151794
-{ yymsp[0].minor.yy494 = OE_Restrict; /* EV: R-33326-45252 */}
151795
- break;
151796
- case 54: /* refact ::= NO ACTION */
151797
-{ yymsp[-1].minor.yy494 = OE_None; /* EV: R-33326-45252 */}
151798
- break;
151799
- case 55: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
151800
-{yymsp[-2].minor.yy494 = 0;}
151801
- break;
151802
- case 56: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
151803
- case 71: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==71);
151804
- case 156: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==156);
151805
-{yymsp[-1].minor.yy494 = yymsp[0].minor.yy494;}
151806
- break;
151807
- case 58: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
151808
- case 75: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==75);
151809
- case 198: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==198);
151810
- case 201: /* in_op ::= NOT IN */ yytestcase(yyruleno==201);
151811
- case 227: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==227);
151812
-{yymsp[-1].minor.yy494 = 1;}
151813
- break;
151814
- case 59: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
151815
-{yymsp[-1].minor.yy494 = 0;}
151816
- break;
151817
- case 61: /* tconscomma ::= COMMA */
151818
-{pParse->constraintName.n = 0;}
151819
- break;
151820
- case 63: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
151821
-{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy434,yymsp[0].minor.yy494,yymsp[-2].minor.yy494,0);}
151822
- break;
151823
- case 64: /* tcons ::= UNIQUE LP sortlist RP onconf */
151824
-{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy434,yymsp[0].minor.yy494,0,0,0,0,
151825
- SQLITE_IDXTYPE_UNIQUE);}
151826
- break;
151827
- case 65: /* tcons ::= CHECK LP expr RP onconf */
151828
-{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy524);}
151829
- break;
151830
- case 66: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
151831
-{
151832
- sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy434, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy434, yymsp[-1].minor.yy494);
151833
- sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy494);
151834
-}
151835
- break;
151836
- case 68: /* onconf ::= */
151837
- case 70: /* orconf ::= */ yytestcase(yyruleno==70);
151838
-{yymsp[1].minor.yy494 = OE_Default;}
151839
- break;
151840
- case 69: /* onconf ::= ON CONFLICT resolvetype */
151841
-{yymsp[-2].minor.yy494 = yymsp[0].minor.yy494;}
151842
- break;
151843
- case 72: /* resolvetype ::= IGNORE */
151844
-{yymsp[0].minor.yy494 = OE_Ignore;}
151845
- break;
151846
- case 73: /* resolvetype ::= REPLACE */
151847
- case 157: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==157);
151848
-{yymsp[0].minor.yy494 = OE_Replace;}
151849
- break;
151850
- case 74: /* cmd ::= DROP TABLE ifexists fullname */
151851
-{
151852
- sqlite3DropTable(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy494);
151853
-}
151854
- break;
151855
- case 77: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
151856
-{
151857
- sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy434, yymsp[0].minor.yy457, yymsp[-7].minor.yy494, yymsp[-5].minor.yy494);
151858
-}
151859
- break;
151860
- case 78: /* cmd ::= DROP VIEW ifexists fullname */
151861
-{
151862
- sqlite3DropTable(pParse, yymsp[0].minor.yy483, 1, yymsp[-1].minor.yy494);
151863
-}
151864
- break;
151865
- case 79: /* cmd ::= select */
151866
-{
151867
- SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0};
151868
- sqlite3Select(pParse, yymsp[0].minor.yy457, &dest);
151869
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy457);
151870
-}
151871
- break;
151872
- case 80: /* select ::= WITH wqlist selectnowith */
151873
-{
151874
- Select *p = yymsp[0].minor.yy457;
151875
- if( p ){
151876
- p->pWith = yymsp[-1].minor.yy59;
151877
- parserDoubleLinkSelect(pParse, p);
151878
- }else{
151879
- sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy59);
151880
- }
151881
- yymsp[-2].minor.yy457 = p;
151882
-}
151883
- break;
151884
- case 81: /* select ::= WITH RECURSIVE wqlist selectnowith */
151885
-{
151886
- Select *p = yymsp[0].minor.yy457;
151887
- if( p ){
151888
- p->pWith = yymsp[-1].minor.yy59;
151889
- parserDoubleLinkSelect(pParse, p);
151890
- }else{
151891
- sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy59);
151892
- }
151893
- yymsp[-3].minor.yy457 = p;
151894
-}
151895
- break;
151896
- case 82: /* select ::= selectnowith */
151897
-{
151898
- Select *p = yymsp[0].minor.yy457;
151899
- if( p ){
151900
- parserDoubleLinkSelect(pParse, p);
151901
- }
151902
- yymsp[0].minor.yy457 = p; /*A-overwrites-X*/
151903
-}
151904
- break;
151905
- case 83: /* selectnowith ::= selectnowith multiselect_op oneselect */
151906
-{
151907
- Select *pRhs = yymsp[0].minor.yy457;
151908
- Select *pLhs = yymsp[-2].minor.yy457;
151901
+ case 36: /* ccons ::= NOT NULL onconf */
151902
+{sqlite3AddNotNull(pParse, yymsp[0].minor.yy100);}
151903
+ break;
151904
+ case 37: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
151905
+{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy100,yymsp[0].minor.yy100,yymsp[-2].minor.yy100);}
151906
+ break;
151907
+ case 38: /* ccons ::= UNIQUE onconf */
151908
+{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy100,0,0,0,0,
151909
+ SQLITE_IDXTYPE_UNIQUE);}
151910
+ break;
151911
+ case 39: /* ccons ::= CHECK LP expr RP */
151912
+{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy102);}
151913
+ break;
151914
+ case 40: /* ccons ::= REFERENCES nm eidlist_opt refargs */
151915
+{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy94,yymsp[0].minor.yy100);}
151916
+ break;
151917
+ case 41: /* ccons ::= defer_subclause */
151918
+{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy100);}
151919
+ break;
151920
+ case 42: /* ccons ::= COLLATE ID|STRING */
151921
+{sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
151922
+ break;
151923
+ case 45: /* refargs ::= */
151924
+{ yymsp[1].minor.yy100 = OE_None*0x0101; /* EV: R-19803-45884 */}
151925
+ break;
151926
+ case 46: /* refargs ::= refargs refarg */
151927
+{ yymsp[-1].minor.yy100 = (yymsp[-1].minor.yy100 & ~yymsp[0].minor.yy199.mask) | yymsp[0].minor.yy199.value; }
151928
+ break;
151929
+ case 47: /* refarg ::= MATCH nm */
151930
+{ yymsp[-1].minor.yy199.value = 0; yymsp[-1].minor.yy199.mask = 0x000000; }
151931
+ break;
151932
+ case 48: /* refarg ::= ON INSERT refact */
151933
+{ yymsp[-2].minor.yy199.value = 0; yymsp[-2].minor.yy199.mask = 0x000000; }
151934
+ break;
151935
+ case 49: /* refarg ::= ON DELETE refact */
151936
+{ yymsp[-2].minor.yy199.value = yymsp[0].minor.yy100; yymsp[-2].minor.yy199.mask = 0x0000ff; }
151937
+ break;
151938
+ case 50: /* refarg ::= ON UPDATE refact */
151939
+{ yymsp[-2].minor.yy199.value = yymsp[0].minor.yy100<<8; yymsp[-2].minor.yy199.mask = 0x00ff00; }
151940
+ break;
151941
+ case 51: /* refact ::= SET NULL */
151942
+{ yymsp[-1].minor.yy100 = OE_SetNull; /* EV: R-33326-45252 */}
151943
+ break;
151944
+ case 52: /* refact ::= SET DEFAULT */
151945
+{ yymsp[-1].minor.yy100 = OE_SetDflt; /* EV: R-33326-45252 */}
151946
+ break;
151947
+ case 53: /* refact ::= CASCADE */
151948
+{ yymsp[0].minor.yy100 = OE_Cascade; /* EV: R-33326-45252 */}
151949
+ break;
151950
+ case 54: /* refact ::= RESTRICT */
151951
+{ yymsp[0].minor.yy100 = OE_Restrict; /* EV: R-33326-45252 */}
151952
+ break;
151953
+ case 55: /* refact ::= NO ACTION */
151954
+{ yymsp[-1].minor.yy100 = OE_None; /* EV: R-33326-45252 */}
151955
+ break;
151956
+ case 56: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
151957
+{yymsp[-2].minor.yy100 = 0;}
151958
+ break;
151959
+ case 57: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
151960
+ case 72: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==72);
151961
+ case 157: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==157);
151962
+{yymsp[-1].minor.yy100 = yymsp[0].minor.yy100;}
151963
+ break;
151964
+ case 59: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
151965
+ case 76: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==76);
151966
+ case 199: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==199);
151967
+ case 202: /* in_op ::= NOT IN */ yytestcase(yyruleno==202);
151968
+ case 228: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==228);
151969
+{yymsp[-1].minor.yy100 = 1;}
151970
+ break;
151971
+ case 60: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
151972
+{yymsp[-1].minor.yy100 = 0;}
151973
+ break;
151974
+ case 62: /* tconscomma ::= COMMA */
151975
+{pParse->constraintName.n = 0;}
151976
+ break;
151977
+ case 64: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
151978
+{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy94,yymsp[0].minor.yy100,yymsp[-2].minor.yy100,0);}
151979
+ break;
151980
+ case 65: /* tcons ::= UNIQUE LP sortlist RP onconf */
151981
+{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy94,yymsp[0].minor.yy100,0,0,0,0,
151982
+ SQLITE_IDXTYPE_UNIQUE);}
151983
+ break;
151984
+ case 66: /* tcons ::= CHECK LP expr RP onconf */
151985
+{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy102);}
151986
+ break;
151987
+ case 67: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
151988
+{
151989
+ sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy94, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy94, yymsp[-1].minor.yy100);
151990
+ sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy100);
151991
+}
151992
+ break;
151993
+ case 69: /* onconf ::= */
151994
+ case 71: /* orconf ::= */ yytestcase(yyruleno==71);
151995
+{yymsp[1].minor.yy100 = OE_Default;}
151996
+ break;
151997
+ case 70: /* onconf ::= ON CONFLICT resolvetype */
151998
+{yymsp[-2].minor.yy100 = yymsp[0].minor.yy100;}
151999
+ break;
152000
+ case 73: /* resolvetype ::= IGNORE */
152001
+{yymsp[0].minor.yy100 = OE_Ignore;}
152002
+ break;
152003
+ case 74: /* resolvetype ::= REPLACE */
152004
+ case 158: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==158);
152005
+{yymsp[0].minor.yy100 = OE_Replace;}
152006
+ break;
152007
+ case 75: /* cmd ::= DROP TABLE ifexists fullname */
152008
+{
152009
+ sqlite3DropTable(pParse, yymsp[0].minor.yy407, 0, yymsp[-1].minor.yy100);
152010
+}
152011
+ break;
152012
+ case 78: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
152013
+{
152014
+ sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy94, yymsp[0].minor.yy391, yymsp[-7].minor.yy100, yymsp[-5].minor.yy100);
152015
+}
152016
+ break;
152017
+ case 79: /* cmd ::= DROP VIEW ifexists fullname */
152018
+{
152019
+ sqlite3DropTable(pParse, yymsp[0].minor.yy407, 1, yymsp[-1].minor.yy100);
152020
+}
152021
+ break;
152022
+ case 80: /* cmd ::= select */
152023
+{
152024
+ SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0};
152025
+ sqlite3Select(pParse, yymsp[0].minor.yy391, &dest);
152026
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy391);
152027
+}
152028
+ break;
152029
+ case 81: /* select ::= WITH wqlist selectnowith */
152030
+{
152031
+ Select *p = yymsp[0].minor.yy391;
152032
+ if( p ){
152033
+ p->pWith = yymsp[-1].minor.yy243;
152034
+ parserDoubleLinkSelect(pParse, p);
152035
+ }else{
152036
+ sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy243);
152037
+ }
152038
+ yymsp[-2].minor.yy391 = p;
152039
+}
152040
+ break;
152041
+ case 82: /* select ::= WITH RECURSIVE wqlist selectnowith */
152042
+{
152043
+ Select *p = yymsp[0].minor.yy391;
152044
+ if( p ){
152045
+ p->pWith = yymsp[-1].minor.yy243;
152046
+ parserDoubleLinkSelect(pParse, p);
152047
+ }else{
152048
+ sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy243);
152049
+ }
152050
+ yymsp[-3].minor.yy391 = p;
152051
+}
152052
+ break;
152053
+ case 83: /* select ::= selectnowith */
152054
+{
152055
+ Select *p = yymsp[0].minor.yy391;
152056
+ if( p ){
152057
+ parserDoubleLinkSelect(pParse, p);
152058
+ }
152059
+ yymsp[0].minor.yy391 = p; /*A-overwrites-X*/
152060
+}
152061
+ break;
152062
+ case 84: /* selectnowith ::= selectnowith multiselect_op oneselect */
152063
+{
152064
+ Select *pRhs = yymsp[0].minor.yy391;
152065
+ Select *pLhs = yymsp[-2].minor.yy391;
151909152066
if( pRhs && pRhs->pPrior ){
151910152067
SrcList *pFrom;
151911152068
Token x;
151912152069
x.n = 0;
151913152070
parserDoubleLinkSelect(pParse, pRhs);
151914152071
pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
151915152072
pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
151916152073
}
151917152074
if( pRhs ){
151918
- pRhs->op = (u8)yymsp[-1].minor.yy494;
152075
+ pRhs->op = (u8)yymsp[-1].minor.yy100;
151919152076
pRhs->pPrior = pLhs;
151920152077
if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
151921152078
pRhs->selFlags &= ~SF_MultiValue;
151922
- if( yymsp[-1].minor.yy494!=TK_ALL ) pParse->hasCompound = 1;
152079
+ if( yymsp[-1].minor.yy100!=TK_ALL ) pParse->hasCompound = 1;
151923152080
}else{
151924152081
sqlite3SelectDelete(pParse->db, pLhs);
151925152082
}
151926
- yymsp[-2].minor.yy457 = pRhs;
151927
-}
151928
- break;
151929
- case 84: /* multiselect_op ::= UNION */
151930
- case 86: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==86);
151931
-{yymsp[0].minor.yy494 = yymsp[0].major; /*A-overwrites-OP*/}
151932
- break;
151933
- case 85: /* multiselect_op ::= UNION ALL */
151934
-{yymsp[-1].minor.yy494 = TK_ALL;}
151935
- break;
151936
- case 87: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
151937
-{
151938
- yymsp[-8].minor.yy457 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy434,yymsp[-5].minor.yy483,yymsp[-4].minor.yy524,yymsp[-3].minor.yy434,yymsp[-2].minor.yy524,yymsp[-1].minor.yy434,yymsp[-7].minor.yy494,yymsp[0].minor.yy524);
151939
-}
151940
- break;
151941
- case 88: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
151942
-{
151943
- yymsp[-9].minor.yy457 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy434,yymsp[-6].minor.yy483,yymsp[-5].minor.yy524,yymsp[-4].minor.yy434,yymsp[-3].minor.yy524,yymsp[-1].minor.yy434,yymsp[-8].minor.yy494,yymsp[0].minor.yy524);
151944
- if( yymsp[-9].minor.yy457 ){
151945
- yymsp[-9].minor.yy457->pWinDefn = yymsp[-2].minor.yy295;
151946
- }else{
151947
- sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy295);
151948
- }
151949
-}
151950
- break;
151951
- case 89: /* values ::= VALUES LP nexprlist RP */
151952
-{
151953
- yymsp[-3].minor.yy457 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy434,0,0,0,0,0,SF_Values,0);
151954
-}
151955
- break;
151956
- case 90: /* values ::= values COMMA LP nexprlist RP */
151957
-{
151958
- Select *pRight, *pLeft = yymsp[-4].minor.yy457;
151959
- pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy434,0,0,0,0,0,SF_Values|SF_MultiValue,0);
152083
+ yymsp[-2].minor.yy391 = pRhs;
152084
+}
152085
+ break;
152086
+ case 85: /* multiselect_op ::= UNION */
152087
+ case 87: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==87);
152088
+{yymsp[0].minor.yy100 = yymsp[0].major; /*A-overwrites-OP*/}
152089
+ break;
152090
+ case 86: /* multiselect_op ::= UNION ALL */
152091
+{yymsp[-1].minor.yy100 = TK_ALL;}
152092
+ break;
152093
+ case 88: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
152094
+{
152095
+ yymsp[-8].minor.yy391 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy94,yymsp[-5].minor.yy407,yymsp[-4].minor.yy102,yymsp[-3].minor.yy94,yymsp[-2].minor.yy102,yymsp[-1].minor.yy94,yymsp[-7].minor.yy100,yymsp[0].minor.yy102);
152096
+}
152097
+ break;
152098
+ case 89: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
152099
+{
152100
+ yymsp[-9].minor.yy391 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy94,yymsp[-6].minor.yy407,yymsp[-5].minor.yy102,yymsp[-4].minor.yy94,yymsp[-3].minor.yy102,yymsp[-1].minor.yy94,yymsp[-8].minor.yy100,yymsp[0].minor.yy102);
152101
+ if( yymsp[-9].minor.yy391 ){
152102
+ yymsp[-9].minor.yy391->pWinDefn = yymsp[-2].minor.yy379;
152103
+ }else{
152104
+ sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy379);
152105
+ }
152106
+}
152107
+ break;
152108
+ case 90: /* values ::= VALUES LP nexprlist RP */
152109
+{
152110
+ yymsp[-3].minor.yy391 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy94,0,0,0,0,0,SF_Values,0);
152111
+}
152112
+ break;
152113
+ case 91: /* values ::= values COMMA LP nexprlist RP */
152114
+{
152115
+ Select *pRight, *pLeft = yymsp[-4].minor.yy391;
152116
+ pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy94,0,0,0,0,0,SF_Values|SF_MultiValue,0);
151960152117
if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
151961152118
if( pRight ){
151962152119
pRight->op = TK_ALL;
151963152120
pRight->pPrior = pLeft;
151964
- yymsp[-4].minor.yy457 = pRight;
151965
- }else{
151966
- yymsp[-4].minor.yy457 = pLeft;
151967
- }
151968
-}
151969
- break;
151970
- case 91: /* distinct ::= DISTINCT */
151971
-{yymsp[0].minor.yy494 = SF_Distinct;}
151972
- break;
151973
- case 92: /* distinct ::= ALL */
151974
-{yymsp[0].minor.yy494 = SF_All;}
151975
- break;
151976
- case 94: /* sclp ::= */
151977
- case 127: /* orderby_opt ::= */ yytestcase(yyruleno==127);
151978
- case 134: /* groupby_opt ::= */ yytestcase(yyruleno==134);
151979
- case 214: /* exprlist ::= */ yytestcase(yyruleno==214);
151980
- case 217: /* paren_exprlist ::= */ yytestcase(yyruleno==217);
151981
- case 222: /* eidlist_opt ::= */ yytestcase(yyruleno==222);
151982
-{yymsp[1].minor.yy434 = 0;}
151983
- break;
151984
- case 95: /* selcollist ::= sclp scanpt expr scanpt as */
151985
-{
151986
- yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy434, yymsp[-2].minor.yy524);
151987
- if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy434, &yymsp[0].minor.yy0, 1);
151988
- sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy434,yymsp[-3].minor.yy294,yymsp[-1].minor.yy294);
151989
-}
151990
- break;
151991
- case 96: /* selcollist ::= sclp scanpt STAR */
152121
+ yymsp[-4].minor.yy391 = pRight;
152122
+ }else{
152123
+ yymsp[-4].minor.yy391 = pLeft;
152124
+ }
152125
+}
152126
+ break;
152127
+ case 92: /* distinct ::= DISTINCT */
152128
+{yymsp[0].minor.yy100 = SF_Distinct;}
152129
+ break;
152130
+ case 93: /* distinct ::= ALL */
152131
+{yymsp[0].minor.yy100 = SF_All;}
152132
+ break;
152133
+ case 95: /* sclp ::= */
152134
+ case 128: /* orderby_opt ::= */ yytestcase(yyruleno==128);
152135
+ case 135: /* groupby_opt ::= */ yytestcase(yyruleno==135);
152136
+ case 215: /* exprlist ::= */ yytestcase(yyruleno==215);
152137
+ case 218: /* paren_exprlist ::= */ yytestcase(yyruleno==218);
152138
+ case 223: /* eidlist_opt ::= */ yytestcase(yyruleno==223);
152139
+{yymsp[1].minor.yy94 = 0;}
152140
+ break;
152141
+ case 96: /* selcollist ::= sclp scanpt expr scanpt as */
152142
+{
152143
+ yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy94, yymsp[-2].minor.yy102);
152144
+ if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy94, &yymsp[0].minor.yy0, 1);
152145
+ sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy94,yymsp[-3].minor.yy528,yymsp[-1].minor.yy528);
152146
+}
152147
+ break;
152148
+ case 97: /* selcollist ::= sclp scanpt STAR */
151992152149
{
151993152150
Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
151994
- yymsp[-2].minor.yy434 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy434, p);
152151
+ yymsp[-2].minor.yy94 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy94, p);
151995152152
}
151996152153
break;
151997
- case 97: /* selcollist ::= sclp scanpt nm DOT STAR */
152154
+ case 98: /* selcollist ::= sclp scanpt nm DOT STAR */
151998152155
{
151999152156
Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
152000152157
Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
152001152158
Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
152002
- yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy434, pDot);
152159
+ yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy94, pDot);
152003152160
}
152004152161
break;
152005
- case 98: /* as ::= AS nm */
152006
- case 109: /* dbnm ::= DOT nm */ yytestcase(yyruleno==109);
152007
- case 238: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==238);
152008
- case 239: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==239);
152162
+ case 99: /* as ::= AS nm */
152163
+ case 110: /* dbnm ::= DOT nm */ yytestcase(yyruleno==110);
152164
+ case 239: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==239);
152165
+ case 240: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==240);
152009152166
{yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
152010152167
break;
152011
- case 100: /* from ::= */
152012
-{yymsp[1].minor.yy483 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy483));}
152013
- break;
152014
- case 101: /* from ::= FROM seltablist */
152015
-{
152016
- yymsp[-1].minor.yy483 = yymsp[0].minor.yy483;
152017
- sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy483);
152018
-}
152019
- break;
152020
- case 102: /* stl_prefix ::= seltablist joinop */
152021
-{
152022
- if( ALWAYS(yymsp[-1].minor.yy483 && yymsp[-1].minor.yy483->nSrc>0) ) yymsp[-1].minor.yy483->a[yymsp[-1].minor.yy483->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy494;
152023
-}
152024
- break;
152025
- case 103: /* stl_prefix ::= */
152026
-{yymsp[1].minor.yy483 = 0;}
152027
- break;
152028
- case 104: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
152029
-{
152030
- yymsp[-6].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy483,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152031
- sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy483, &yymsp[-2].minor.yy0);
152032
-}
152033
- break;
152034
- case 105: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
152035
-{
152036
- yymsp[-8].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy483,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152037
- sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy483, yymsp[-4].minor.yy434);
152038
-}
152039
- break;
152040
- case 106: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
152041
-{
152042
- yymsp[-6].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy483,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy457,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152043
- }
152044
- break;
152045
- case 107: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
152046
-{
152047
- if( yymsp[-6].minor.yy483==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy524==0 && yymsp[0].minor.yy62==0 ){
152048
- yymsp[-6].minor.yy483 = yymsp[-4].minor.yy483;
152049
- }else if( yymsp[-4].minor.yy483->nSrc==1 ){
152050
- yymsp[-6].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy483,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152051
- if( yymsp[-6].minor.yy483 ){
152052
- struct SrcList_item *pNew = &yymsp[-6].minor.yy483->a[yymsp[-6].minor.yy483->nSrc-1];
152053
- struct SrcList_item *pOld = yymsp[-4].minor.yy483->a;
152168
+ case 101: /* from ::= */
152169
+{yymsp[1].minor.yy407 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy407));}
152170
+ break;
152171
+ case 102: /* from ::= FROM seltablist */
152172
+{
152173
+ yymsp[-1].minor.yy407 = yymsp[0].minor.yy407;
152174
+ sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy407);
152175
+}
152176
+ break;
152177
+ case 103: /* stl_prefix ::= seltablist joinop */
152178
+{
152179
+ if( ALWAYS(yymsp[-1].minor.yy407 && yymsp[-1].minor.yy407->nSrc>0) ) yymsp[-1].minor.yy407->a[yymsp[-1].minor.yy407->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy100;
152180
+}
152181
+ break;
152182
+ case 104: /* stl_prefix ::= */
152183
+{yymsp[1].minor.yy407 = 0;}
152184
+ break;
152185
+ case 105: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
152186
+{
152187
+ yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152188
+ sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy407, &yymsp[-2].minor.yy0);
152189
+}
152190
+ break;
152191
+ case 106: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
152192
+{
152193
+ yymsp[-8].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy407,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152194
+ sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy407, yymsp[-4].minor.yy94);
152195
+}
152196
+ break;
152197
+ case 107: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
152198
+{
152199
+ yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy391,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152200
+ }
152201
+ break;
152202
+ case 108: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
152203
+{
152204
+ if( yymsp[-6].minor.yy407==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy102==0 && yymsp[0].minor.yy76==0 ){
152205
+ yymsp[-6].minor.yy407 = yymsp[-4].minor.yy407;
152206
+ }else if( yymsp[-4].minor.yy407->nSrc==1 ){
152207
+ yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152208
+ if( yymsp[-6].minor.yy407 ){
152209
+ struct SrcList_item *pNew = &yymsp[-6].minor.yy407->a[yymsp[-6].minor.yy407->nSrc-1];
152210
+ struct SrcList_item *pOld = yymsp[-4].minor.yy407->a;
152054152211
pNew->zName = pOld->zName;
152055152212
pNew->zDatabase = pOld->zDatabase;
152056152213
pNew->pSelect = pOld->pSelect;
152057152214
if( pOld->fg.isTabFunc ){
152058152215
pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -152061,417 +152218,417 @@
152061152218
pNew->fg.isTabFunc = 1;
152062152219
}
152063152220
pOld->zName = pOld->zDatabase = 0;
152064152221
pOld->pSelect = 0;
152065152222
}
152066
- sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy483);
152223
+ sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy407);
152067152224
}else{
152068152225
Select *pSubquery;
152069
- sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy483);
152070
- pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy483,0,0,0,0,SF_NestedFrom,0);
152071
- yymsp[-6].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy483,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152226
+ sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy407);
152227
+ pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy407,0,0,0,0,SF_NestedFrom,0);
152228
+ yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152072152229
}
152073152230
}
152074152231
break;
152075
- case 108: /* dbnm ::= */
152076
- case 122: /* indexed_opt ::= */ yytestcase(yyruleno==122);
152232
+ case 109: /* dbnm ::= */
152233
+ case 123: /* indexed_opt ::= */ yytestcase(yyruleno==123);
152077152234
{yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
152078152235
break;
152079
- case 110: /* fullname ::= nm */
152080
-{
152081
- yylhsminor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
152082
- if( IN_RENAME_OBJECT && yylhsminor.yy483 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy483->a[0].zName, &yymsp[0].minor.yy0);
152083
-}
152084
- yymsp[0].minor.yy483 = yylhsminor.yy483;
152085
- break;
152086
- case 111: /* fullname ::= nm DOT nm */
152087
-{
152088
- yylhsminor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
152089
- if( IN_RENAME_OBJECT && yylhsminor.yy483 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy483->a[0].zName, &yymsp[0].minor.yy0);
152090
-}
152091
- yymsp[-2].minor.yy483 = yylhsminor.yy483;
152092
- break;
152093
- case 112: /* xfullname ::= nm */
152094
-{yymsp[0].minor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
152095
- break;
152096
- case 113: /* xfullname ::= nm DOT nm */
152097
-{yymsp[-2].minor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
152098
- break;
152099
- case 114: /* xfullname ::= nm DOT nm AS nm */
152100
-{
152101
- yymsp[-4].minor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
152102
- if( yymsp[-4].minor.yy483 ) yymsp[-4].minor.yy483->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
152103
-}
152104
- break;
152105
- case 115: /* xfullname ::= nm AS nm */
152106
-{
152107
- yymsp[-2].minor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
152108
- if( yymsp[-2].minor.yy483 ) yymsp[-2].minor.yy483->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
152109
-}
152110
- break;
152111
- case 116: /* joinop ::= COMMA|JOIN */
152112
-{ yymsp[0].minor.yy494 = JT_INNER; }
152113
- break;
152114
- case 117: /* joinop ::= JOIN_KW JOIN */
152115
-{yymsp[-1].minor.yy494 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
152116
- break;
152117
- case 118: /* joinop ::= JOIN_KW nm JOIN */
152118
-{yymsp[-2].minor.yy494 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
152119
- break;
152120
- case 119: /* joinop ::= JOIN_KW nm nm JOIN */
152121
-{yymsp[-3].minor.yy494 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
152122
- break;
152123
- case 120: /* on_opt ::= ON expr */
152124
- case 137: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==137);
152125
- case 144: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==144);
152126
- case 210: /* case_else ::= ELSE expr */ yytestcase(yyruleno==210);
152127
- case 231: /* vinto ::= INTO expr */ yytestcase(yyruleno==231);
152128
-{yymsp[-1].minor.yy524 = yymsp[0].minor.yy524;}
152129
- break;
152130
- case 121: /* on_opt ::= */
152131
- case 136: /* having_opt ::= */ yytestcase(yyruleno==136);
152132
- case 138: /* limit_opt ::= */ yytestcase(yyruleno==138);
152133
- case 143: /* where_opt ::= */ yytestcase(yyruleno==143);
152134
- case 211: /* case_else ::= */ yytestcase(yyruleno==211);
152135
- case 213: /* case_operand ::= */ yytestcase(yyruleno==213);
152136
- case 232: /* vinto ::= */ yytestcase(yyruleno==232);
152137
-{yymsp[1].minor.yy524 = 0;}
152138
- break;
152139
- case 123: /* indexed_opt ::= INDEXED BY nm */
152236
+ case 111: /* fullname ::= nm */
152237
+{
152238
+ yylhsminor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
152239
+ if( IN_RENAME_OBJECT && yylhsminor.yy407 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy407->a[0].zName, &yymsp[0].minor.yy0);
152240
+}
152241
+ yymsp[0].minor.yy407 = yylhsminor.yy407;
152242
+ break;
152243
+ case 112: /* fullname ::= nm DOT nm */
152244
+{
152245
+ yylhsminor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
152246
+ if( IN_RENAME_OBJECT && yylhsminor.yy407 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy407->a[0].zName, &yymsp[0].minor.yy0);
152247
+}
152248
+ yymsp[-2].minor.yy407 = yylhsminor.yy407;
152249
+ break;
152250
+ case 113: /* xfullname ::= nm */
152251
+{yymsp[0].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
152252
+ break;
152253
+ case 114: /* xfullname ::= nm DOT nm */
152254
+{yymsp[-2].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
152255
+ break;
152256
+ case 115: /* xfullname ::= nm DOT nm AS nm */
152257
+{
152258
+ yymsp[-4].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
152259
+ if( yymsp[-4].minor.yy407 ) yymsp[-4].minor.yy407->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
152260
+}
152261
+ break;
152262
+ case 116: /* xfullname ::= nm AS nm */
152263
+{
152264
+ yymsp[-2].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
152265
+ if( yymsp[-2].minor.yy407 ) yymsp[-2].minor.yy407->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
152266
+}
152267
+ break;
152268
+ case 117: /* joinop ::= COMMA|JOIN */
152269
+{ yymsp[0].minor.yy100 = JT_INNER; }
152270
+ break;
152271
+ case 118: /* joinop ::= JOIN_KW JOIN */
152272
+{yymsp[-1].minor.yy100 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
152273
+ break;
152274
+ case 119: /* joinop ::= JOIN_KW nm JOIN */
152275
+{yymsp[-2].minor.yy100 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
152276
+ break;
152277
+ case 120: /* joinop ::= JOIN_KW nm nm JOIN */
152278
+{yymsp[-3].minor.yy100 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
152279
+ break;
152280
+ case 121: /* on_opt ::= ON expr */
152281
+ case 138: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==138);
152282
+ case 145: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==145);
152283
+ case 211: /* case_else ::= ELSE expr */ yytestcase(yyruleno==211);
152284
+ case 232: /* vinto ::= INTO expr */ yytestcase(yyruleno==232);
152285
+{yymsp[-1].minor.yy102 = yymsp[0].minor.yy102;}
152286
+ break;
152287
+ case 122: /* on_opt ::= */
152288
+ case 137: /* having_opt ::= */ yytestcase(yyruleno==137);
152289
+ case 139: /* limit_opt ::= */ yytestcase(yyruleno==139);
152290
+ case 144: /* where_opt ::= */ yytestcase(yyruleno==144);
152291
+ case 212: /* case_else ::= */ yytestcase(yyruleno==212);
152292
+ case 214: /* case_operand ::= */ yytestcase(yyruleno==214);
152293
+ case 233: /* vinto ::= */ yytestcase(yyruleno==233);
152294
+{yymsp[1].minor.yy102 = 0;}
152295
+ break;
152296
+ case 124: /* indexed_opt ::= INDEXED BY nm */
152140152297
{yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
152141152298
break;
152142
- case 124: /* indexed_opt ::= NOT INDEXED */
152299
+ case 125: /* indexed_opt ::= NOT INDEXED */
152143152300
{yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
152144152301
break;
152145
- case 125: /* using_opt ::= USING LP idlist RP */
152146
-{yymsp[-3].minor.yy62 = yymsp[-1].minor.yy62;}
152147
- break;
152148
- case 126: /* using_opt ::= */
152149
- case 158: /* idlist_opt ::= */ yytestcase(yyruleno==158);
152150
-{yymsp[1].minor.yy62 = 0;}
152151
- break;
152152
- case 128: /* orderby_opt ::= ORDER BY sortlist */
152153
- case 135: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==135);
152154
-{yymsp[-2].minor.yy434 = yymsp[0].minor.yy434;}
152155
- break;
152156
- case 129: /* sortlist ::= sortlist COMMA expr sortorder */
152157
-{
152158
- yymsp[-3].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy434,yymsp[-1].minor.yy524);
152159
- sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy434,yymsp[0].minor.yy494);
152160
-}
152161
- break;
152162
- case 130: /* sortlist ::= expr sortorder */
152163
-{
152164
- yymsp[-1].minor.yy434 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy524); /*A-overwrites-Y*/
152165
- sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy434,yymsp[0].minor.yy494);
152166
-}
152167
- break;
152168
- case 131: /* sortorder ::= ASC */
152169
-{yymsp[0].minor.yy494 = SQLITE_SO_ASC;}
152170
- break;
152171
- case 132: /* sortorder ::= DESC */
152172
-{yymsp[0].minor.yy494 = SQLITE_SO_DESC;}
152173
- break;
152174
- case 133: /* sortorder ::= */
152175
-{yymsp[1].minor.yy494 = SQLITE_SO_UNDEFINED;}
152176
- break;
152177
- case 139: /* limit_opt ::= LIMIT expr */
152178
-{yymsp[-1].minor.yy524 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy524,0);}
152179
- break;
152180
- case 140: /* limit_opt ::= LIMIT expr OFFSET expr */
152181
-{yymsp[-3].minor.yy524 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy524,yymsp[0].minor.yy524);}
152182
- break;
152183
- case 141: /* limit_opt ::= LIMIT expr COMMA expr */
152184
-{yymsp[-3].minor.yy524 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy524,yymsp[-2].minor.yy524);}
152185
- break;
152186
- case 142: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
152187
-{
152188
- sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy483, &yymsp[-1].minor.yy0);
152189
- sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy483,yymsp[0].minor.yy524,0,0);
152190
-}
152191
- break;
152192
- case 145: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
152193
-{
152194
- sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy483, &yymsp[-3].minor.yy0);
152195
- sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy434,"set list");
152196
- sqlite3Update(pParse,yymsp[-4].minor.yy483,yymsp[-1].minor.yy434,yymsp[0].minor.yy524,yymsp[-5].minor.yy494,0,0,0);
152197
-}
152198
- break;
152199
- case 146: /* setlist ::= setlist COMMA nm EQ expr */
152200
-{
152201
- yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy434, yymsp[0].minor.yy524);
152202
- sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy434, &yymsp[-2].minor.yy0, 1);
152203
-}
152204
- break;
152205
- case 147: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
152206
-{
152207
- yymsp[-6].minor.yy434 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy434, yymsp[-3].minor.yy62, yymsp[0].minor.yy524);
152208
-}
152209
- break;
152210
- case 148: /* setlist ::= nm EQ expr */
152211
-{
152212
- yylhsminor.yy434 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy524);
152213
- sqlite3ExprListSetName(pParse, yylhsminor.yy434, &yymsp[-2].minor.yy0, 1);
152214
-}
152215
- yymsp[-2].minor.yy434 = yylhsminor.yy434;
152216
- break;
152217
- case 149: /* setlist ::= LP idlist RP EQ expr */
152218
-{
152219
- yymsp[-4].minor.yy434 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy62, yymsp[0].minor.yy524);
152220
-}
152221
- break;
152222
- case 150: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
152223
-{
152224
- sqlite3Insert(pParse, yymsp[-3].minor.yy483, yymsp[-1].minor.yy457, yymsp[-2].minor.yy62, yymsp[-5].minor.yy494, yymsp[0].minor.yy136);
152225
-}
152226
- break;
152227
- case 151: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
152228
-{
152229
- sqlite3Insert(pParse, yymsp[-3].minor.yy483, 0, yymsp[-2].minor.yy62, yymsp[-5].minor.yy494, 0);
152230
-}
152231
- break;
152232
- case 152: /* upsert ::= */
152233
-{ yymsp[1].minor.yy136 = 0; }
152234
- break;
152235
- case 153: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
152236
-{ yymsp[-10].minor.yy136 = sqlite3UpsertNew(pParse->db,yymsp[-7].minor.yy434,yymsp[-5].minor.yy524,yymsp[-1].minor.yy434,yymsp[0].minor.yy524);}
152237
- break;
152238
- case 154: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
152239
-{ yymsp[-7].minor.yy136 = sqlite3UpsertNew(pParse->db,yymsp[-4].minor.yy434,yymsp[-2].minor.yy524,0,0); }
152240
- break;
152241
- case 155: /* upsert ::= ON CONFLICT DO NOTHING */
152242
-{ yymsp[-3].minor.yy136 = sqlite3UpsertNew(pParse->db,0,0,0,0); }
152243
- break;
152244
- case 159: /* idlist_opt ::= LP idlist RP */
152245
-{yymsp[-2].minor.yy62 = yymsp[-1].minor.yy62;}
152246
- break;
152247
- case 160: /* idlist ::= idlist COMMA nm */
152248
-{yymsp[-2].minor.yy62 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy62,&yymsp[0].minor.yy0);}
152249
- break;
152250
- case 161: /* idlist ::= nm */
152251
-{yymsp[0].minor.yy62 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
152252
- break;
152253
- case 162: /* expr ::= LP expr RP */
152254
-{yymsp[-2].minor.yy524 = yymsp[-1].minor.yy524;}
152255
- break;
152256
- case 163: /* expr ::= ID|INDEXED */
152257
- case 164: /* expr ::= JOIN_KW */ yytestcase(yyruleno==164);
152258
-{yymsp[0].minor.yy524=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
152259
- break;
152260
- case 165: /* expr ::= nm DOT nm */
152302
+ case 126: /* using_opt ::= USING LP idlist RP */
152303
+{yymsp[-3].minor.yy76 = yymsp[-1].minor.yy76;}
152304
+ break;
152305
+ case 127: /* using_opt ::= */
152306
+ case 159: /* idlist_opt ::= */ yytestcase(yyruleno==159);
152307
+{yymsp[1].minor.yy76 = 0;}
152308
+ break;
152309
+ case 129: /* orderby_opt ::= ORDER BY sortlist */
152310
+ case 136: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==136);
152311
+{yymsp[-2].minor.yy94 = yymsp[0].minor.yy94;}
152312
+ break;
152313
+ case 130: /* sortlist ::= sortlist COMMA expr sortorder */
152314
+{
152315
+ yymsp[-3].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy94,yymsp[-1].minor.yy102);
152316
+ sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy94,yymsp[0].minor.yy100);
152317
+}
152318
+ break;
152319
+ case 131: /* sortlist ::= expr sortorder */
152320
+{
152321
+ yymsp[-1].minor.yy94 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy102); /*A-overwrites-Y*/
152322
+ sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy94,yymsp[0].minor.yy100);
152323
+}
152324
+ break;
152325
+ case 132: /* sortorder ::= ASC */
152326
+{yymsp[0].minor.yy100 = SQLITE_SO_ASC;}
152327
+ break;
152328
+ case 133: /* sortorder ::= DESC */
152329
+{yymsp[0].minor.yy100 = SQLITE_SO_DESC;}
152330
+ break;
152331
+ case 134: /* sortorder ::= */
152332
+{yymsp[1].minor.yy100 = SQLITE_SO_UNDEFINED;}
152333
+ break;
152334
+ case 140: /* limit_opt ::= LIMIT expr */
152335
+{yymsp[-1].minor.yy102 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy102,0);}
152336
+ break;
152337
+ case 141: /* limit_opt ::= LIMIT expr OFFSET expr */
152338
+{yymsp[-3].minor.yy102 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);}
152339
+ break;
152340
+ case 142: /* limit_opt ::= LIMIT expr COMMA expr */
152341
+{yymsp[-3].minor.yy102 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy102,yymsp[-2].minor.yy102);}
152342
+ break;
152343
+ case 143: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
152344
+{
152345
+ sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy407, &yymsp[-1].minor.yy0);
152346
+ sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy407,yymsp[0].minor.yy102,0,0);
152347
+}
152348
+ break;
152349
+ case 146: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
152350
+{
152351
+ sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy407, &yymsp[-3].minor.yy0);
152352
+ sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy94,"set list");
152353
+ sqlite3Update(pParse,yymsp[-4].minor.yy407,yymsp[-1].minor.yy94,yymsp[0].minor.yy102,yymsp[-5].minor.yy100,0,0,0);
152354
+}
152355
+ break;
152356
+ case 147: /* setlist ::= setlist COMMA nm EQ expr */
152357
+{
152358
+ yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy94, yymsp[0].minor.yy102);
152359
+ sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy94, &yymsp[-2].minor.yy0, 1);
152360
+}
152361
+ break;
152362
+ case 148: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
152363
+{
152364
+ yymsp[-6].minor.yy94 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy94, yymsp[-3].minor.yy76, yymsp[0].minor.yy102);
152365
+}
152366
+ break;
152367
+ case 149: /* setlist ::= nm EQ expr */
152368
+{
152369
+ yylhsminor.yy94 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy102);
152370
+ sqlite3ExprListSetName(pParse, yylhsminor.yy94, &yymsp[-2].minor.yy0, 1);
152371
+}
152372
+ yymsp[-2].minor.yy94 = yylhsminor.yy94;
152373
+ break;
152374
+ case 150: /* setlist ::= LP idlist RP EQ expr */
152375
+{
152376
+ yymsp[-4].minor.yy94 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy76, yymsp[0].minor.yy102);
152377
+}
152378
+ break;
152379
+ case 151: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
152380
+{
152381
+ sqlite3Insert(pParse, yymsp[-3].minor.yy407, yymsp[-1].minor.yy391, yymsp[-2].minor.yy76, yymsp[-5].minor.yy100, yymsp[0].minor.yy95);
152382
+}
152383
+ break;
152384
+ case 152: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
152385
+{
152386
+ sqlite3Insert(pParse, yymsp[-3].minor.yy407, 0, yymsp[-2].minor.yy76, yymsp[-5].minor.yy100, 0);
152387
+}
152388
+ break;
152389
+ case 153: /* upsert ::= */
152390
+{ yymsp[1].minor.yy95 = 0; }
152391
+ break;
152392
+ case 154: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
152393
+{ yymsp[-10].minor.yy95 = sqlite3UpsertNew(pParse->db,yymsp[-7].minor.yy94,yymsp[-5].minor.yy102,yymsp[-1].minor.yy94,yymsp[0].minor.yy102);}
152394
+ break;
152395
+ case 155: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
152396
+{ yymsp[-7].minor.yy95 = sqlite3UpsertNew(pParse->db,yymsp[-4].minor.yy94,yymsp[-2].minor.yy102,0,0); }
152397
+ break;
152398
+ case 156: /* upsert ::= ON CONFLICT DO NOTHING */
152399
+{ yymsp[-3].minor.yy95 = sqlite3UpsertNew(pParse->db,0,0,0,0); }
152400
+ break;
152401
+ case 160: /* idlist_opt ::= LP idlist RP */
152402
+{yymsp[-2].minor.yy76 = yymsp[-1].minor.yy76;}
152403
+ break;
152404
+ case 161: /* idlist ::= idlist COMMA nm */
152405
+{yymsp[-2].minor.yy76 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy76,&yymsp[0].minor.yy0);}
152406
+ break;
152407
+ case 162: /* idlist ::= nm */
152408
+{yymsp[0].minor.yy76 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
152409
+ break;
152410
+ case 163: /* expr ::= LP expr RP */
152411
+{yymsp[-2].minor.yy102 = yymsp[-1].minor.yy102;}
152412
+ break;
152413
+ case 164: /* expr ::= ID|INDEXED */
152414
+ case 165: /* expr ::= JOIN_KW */ yytestcase(yyruleno==165);
152415
+{yymsp[0].minor.yy102=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
152416
+ break;
152417
+ case 166: /* expr ::= nm DOT nm */
152261152418
{
152262152419
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
152263152420
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
152264152421
if( IN_RENAME_OBJECT ){
152265152422
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
152266152423
sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
152267152424
}
152268
- yylhsminor.yy524 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
152425
+ yylhsminor.yy102 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
152269152426
}
152270
- yymsp[-2].minor.yy524 = yylhsminor.yy524;
152427
+ yymsp[-2].minor.yy102 = yylhsminor.yy102;
152271152428
break;
152272
- case 166: /* expr ::= nm DOT nm DOT nm */
152429
+ case 167: /* expr ::= nm DOT nm DOT nm */
152273152430
{
152274152431
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
152275152432
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
152276152433
Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
152277152434
Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
152278152435
if( IN_RENAME_OBJECT ){
152279152436
sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
152280152437
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
152281152438
}
152282
- yylhsminor.yy524 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
152283
-}
152284
- yymsp[-4].minor.yy524 = yylhsminor.yy524;
152285
- break;
152286
- case 167: /* term ::= NULL|FLOAT|BLOB */
152287
- case 168: /* term ::= STRING */ yytestcase(yyruleno==168);
152288
-{yymsp[0].minor.yy524=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
152289
- break;
152290
- case 169: /* term ::= INTEGER */
152291
-{
152292
- yylhsminor.yy524 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
152293
-}
152294
- yymsp[0].minor.yy524 = yylhsminor.yy524;
152295
- break;
152296
- case 170: /* expr ::= VARIABLE */
152439
+ yylhsminor.yy102 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
152440
+}
152441
+ yymsp[-4].minor.yy102 = yylhsminor.yy102;
152442
+ break;
152443
+ case 168: /* term ::= NULL|FLOAT|BLOB */
152444
+ case 169: /* term ::= STRING */ yytestcase(yyruleno==169);
152445
+{yymsp[0].minor.yy102=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
152446
+ break;
152447
+ case 170: /* term ::= INTEGER */
152448
+{
152449
+ yylhsminor.yy102 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
152450
+}
152451
+ yymsp[0].minor.yy102 = yylhsminor.yy102;
152452
+ break;
152453
+ case 171: /* expr ::= VARIABLE */
152297152454
{
152298152455
if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
152299152456
u32 n = yymsp[0].minor.yy0.n;
152300
- yymsp[0].minor.yy524 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
152301
- sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy524, n);
152457
+ yymsp[0].minor.yy102 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
152458
+ sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy102, n);
152302152459
}else{
152303152460
/* When doing a nested parse, one can include terms in an expression
152304152461
** that look like this: #1 #2 ... These terms refer to registers
152305152462
** in the virtual machine. #N is the N-th register. */
152306152463
Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
152307152464
assert( t.n>=2 );
152308152465
if( pParse->nested==0 ){
152309152466
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
152310
- yymsp[0].minor.yy524 = 0;
152311
- }else{
152312
- yymsp[0].minor.yy524 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
152313
- if( yymsp[0].minor.yy524 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy524->iTable);
152314
- }
152315
- }
152316
-}
152317
- break;
152318
- case 171: /* expr ::= expr COLLATE ID|STRING */
152319
-{
152320
- yymsp[-2].minor.yy524 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy524, &yymsp[0].minor.yy0, 1);
152321
-}
152322
- break;
152323
- case 172: /* expr ::= CAST LP expr AS typetoken RP */
152324
-{
152325
- yymsp[-5].minor.yy524 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
152326
- sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy524, yymsp[-3].minor.yy524, 0);
152327
-}
152328
- break;
152329
- case 173: /* expr ::= ID|INDEXED LP distinct exprlist RP */
152330
-{
152331
- yylhsminor.yy524 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy434, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy494);
152332
-}
152333
- yymsp[-4].minor.yy524 = yylhsminor.yy524;
152334
- break;
152335
- case 174: /* expr ::= ID|INDEXED LP STAR RP */
152336
-{
152337
- yylhsminor.yy524 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
152338
-}
152339
- yymsp[-3].minor.yy524 = yylhsminor.yy524;
152340
- break;
152341
- case 175: /* expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
152342
-{
152343
- yylhsminor.yy524 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy434, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy494);
152344
- sqlite3WindowAttach(pParse, yylhsminor.yy524, yymsp[0].minor.yy295);
152345
-}
152346
- yymsp[-5].minor.yy524 = yylhsminor.yy524;
152347
- break;
152348
- case 176: /* expr ::= ID|INDEXED LP STAR RP over_clause */
152349
-{
152350
- yylhsminor.yy524 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
152351
- sqlite3WindowAttach(pParse, yylhsminor.yy524, yymsp[0].minor.yy295);
152352
-}
152353
- yymsp[-4].minor.yy524 = yylhsminor.yy524;
152354
- break;
152355
- case 177: /* term ::= CTIME_KW */
152356
-{
152357
- yylhsminor.yy524 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
152358
-}
152359
- yymsp[0].minor.yy524 = yylhsminor.yy524;
152360
- break;
152361
- case 178: /* expr ::= LP nexprlist COMMA expr RP */
152362
-{
152363
- ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy434, yymsp[-1].minor.yy524);
152364
- yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
152365
- if( yymsp[-4].minor.yy524 ){
152366
- yymsp[-4].minor.yy524->x.pList = pList;
152467
+ yymsp[0].minor.yy102 = 0;
152468
+ }else{
152469
+ yymsp[0].minor.yy102 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
152470
+ if( yymsp[0].minor.yy102 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy102->iTable);
152471
+ }
152472
+ }
152473
+}
152474
+ break;
152475
+ case 172: /* expr ::= expr COLLATE ID|STRING */
152476
+{
152477
+ yymsp[-2].minor.yy102 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy102, &yymsp[0].minor.yy0, 1);
152478
+}
152479
+ break;
152480
+ case 173: /* expr ::= CAST LP expr AS typetoken RP */
152481
+{
152482
+ yymsp[-5].minor.yy102 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
152483
+ sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy102, yymsp[-3].minor.yy102, 0);
152484
+}
152485
+ break;
152486
+ case 174: /* expr ::= ID|INDEXED LP distinct exprlist RP */
152487
+{
152488
+ yylhsminor.yy102 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy94, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy100);
152489
+}
152490
+ yymsp[-4].minor.yy102 = yylhsminor.yy102;
152491
+ break;
152492
+ case 175: /* expr ::= ID|INDEXED LP STAR RP */
152493
+{
152494
+ yylhsminor.yy102 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
152495
+}
152496
+ yymsp[-3].minor.yy102 = yylhsminor.yy102;
152497
+ break;
152498
+ case 176: /* expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
152499
+{
152500
+ yylhsminor.yy102 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy94, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy100);
152501
+ sqlite3WindowAttach(pParse, yylhsminor.yy102, yymsp[0].minor.yy379);
152502
+}
152503
+ yymsp[-5].minor.yy102 = yylhsminor.yy102;
152504
+ break;
152505
+ case 177: /* expr ::= ID|INDEXED LP STAR RP over_clause */
152506
+{
152507
+ yylhsminor.yy102 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
152508
+ sqlite3WindowAttach(pParse, yylhsminor.yy102, yymsp[0].minor.yy379);
152509
+}
152510
+ yymsp[-4].minor.yy102 = yylhsminor.yy102;
152511
+ break;
152512
+ case 178: /* term ::= CTIME_KW */
152513
+{
152514
+ yylhsminor.yy102 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
152515
+}
152516
+ yymsp[0].minor.yy102 = yylhsminor.yy102;
152517
+ break;
152518
+ case 179: /* expr ::= LP nexprlist COMMA expr RP */
152519
+{
152520
+ ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy94, yymsp[-1].minor.yy102);
152521
+ yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
152522
+ if( yymsp[-4].minor.yy102 ){
152523
+ yymsp[-4].minor.yy102->x.pList = pList;
152367152524
}else{
152368152525
sqlite3ExprListDelete(pParse->db, pList);
152369152526
}
152370152527
}
152371152528
break;
152372
- case 179: /* expr ::= expr AND expr */
152373
-{yymsp[-2].minor.yy524=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy524,yymsp[0].minor.yy524);}
152374
- break;
152375
- case 180: /* expr ::= expr OR expr */
152376
- case 181: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==181);
152377
- case 182: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==182);
152378
- case 183: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==183);
152379
- case 184: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==184);
152380
- case 185: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==185);
152381
- case 186: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==186);
152382
-{yymsp[-2].minor.yy524=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy524,yymsp[0].minor.yy524);}
152383
- break;
152384
- case 187: /* likeop ::= NOT LIKE_KW|MATCH */
152529
+ case 180: /* expr ::= expr AND expr */
152530
+{yymsp[-2].minor.yy102=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);}
152531
+ break;
152532
+ case 181: /* expr ::= expr OR expr */
152533
+ case 182: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==182);
152534
+ case 183: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==183);
152535
+ case 184: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==184);
152536
+ case 185: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==185);
152537
+ case 186: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==186);
152538
+ case 187: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==187);
152539
+{yymsp[-2].minor.yy102=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);}
152540
+ break;
152541
+ case 188: /* likeop ::= NOT LIKE_KW|MATCH */
152385152542
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
152386152543
break;
152387
- case 188: /* expr ::= expr likeop expr */
152544
+ case 189: /* expr ::= expr likeop expr */
152388152545
{
152389152546
ExprList *pList;
152390152547
int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
152391152548
yymsp[-1].minor.yy0.n &= 0x7fffffff;
152392
- pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy524);
152393
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy524);
152394
- yymsp[-2].minor.yy524 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
152395
- if( bNot ) yymsp[-2].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy524, 0);
152396
- if( yymsp[-2].minor.yy524 ) yymsp[-2].minor.yy524->flags |= EP_InfixFunc;
152549
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy102);
152550
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy102);
152551
+ yymsp[-2].minor.yy102 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
152552
+ if( bNot ) yymsp[-2].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy102, 0);
152553
+ if( yymsp[-2].minor.yy102 ) yymsp[-2].minor.yy102->flags |= EP_InfixFunc;
152397152554
}
152398152555
break;
152399
- case 189: /* expr ::= expr likeop expr ESCAPE expr */
152556
+ case 190: /* expr ::= expr likeop expr ESCAPE expr */
152400152557
{
152401152558
ExprList *pList;
152402152559
int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
152403152560
yymsp[-3].minor.yy0.n &= 0x7fffffff;
152404
- pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy524);
152405
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy524);
152406
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy524);
152407
- yymsp[-4].minor.yy524 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
152408
- if( bNot ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152409
- if( yymsp[-4].minor.yy524 ) yymsp[-4].minor.yy524->flags |= EP_InfixFunc;
152410
-}
152411
- break;
152412
- case 190: /* expr ::= expr ISNULL|NOTNULL */
152413
-{yymsp[-1].minor.yy524 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy524,0);}
152414
- break;
152415
- case 191: /* expr ::= expr NOT NULL */
152416
-{yymsp[-2].minor.yy524 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy524,0);}
152417
- break;
152418
- case 192: /* expr ::= expr IS expr */
152419
-{
152420
- yymsp[-2].minor.yy524 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy524,yymsp[0].minor.yy524);
152421
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy524, yymsp[-2].minor.yy524, TK_ISNULL);
152422
-}
152423
- break;
152424
- case 193: /* expr ::= expr IS NOT expr */
152425
-{
152426
- yymsp[-3].minor.yy524 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy524,yymsp[0].minor.yy524);
152427
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy524, yymsp[-3].minor.yy524, TK_NOTNULL);
152428
-}
152429
- break;
152430
- case 194: /* expr ::= NOT expr */
152431
- case 195: /* expr ::= BITNOT expr */ yytestcase(yyruleno==195);
152432
-{yymsp[-1].minor.yy524 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy524, 0);/*A-overwrites-B*/}
152433
- break;
152434
- case 196: /* expr ::= PLUS|MINUS expr */
152435
-{
152436
- yymsp[-1].minor.yy524 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy524, 0);
152561
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy102);
152562
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy102);
152563
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy102);
152564
+ yymsp[-4].minor.yy102 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
152565
+ if( bNot ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152566
+ if( yymsp[-4].minor.yy102 ) yymsp[-4].minor.yy102->flags |= EP_InfixFunc;
152567
+}
152568
+ break;
152569
+ case 191: /* expr ::= expr ISNULL|NOTNULL */
152570
+{yymsp[-1].minor.yy102 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy102,0);}
152571
+ break;
152572
+ case 192: /* expr ::= expr NOT NULL */
152573
+{yymsp[-2].minor.yy102 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy102,0);}
152574
+ break;
152575
+ case 193: /* expr ::= expr IS expr */
152576
+{
152577
+ yymsp[-2].minor.yy102 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);
152578
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy102, yymsp[-2].minor.yy102, TK_ISNULL);
152579
+}
152580
+ break;
152581
+ case 194: /* expr ::= expr IS NOT expr */
152582
+{
152583
+ yymsp[-3].minor.yy102 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy102,yymsp[0].minor.yy102);
152584
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy102, yymsp[-3].minor.yy102, TK_NOTNULL);
152585
+}
152586
+ break;
152587
+ case 195: /* expr ::= NOT expr */
152588
+ case 196: /* expr ::= BITNOT expr */ yytestcase(yyruleno==196);
152589
+{yymsp[-1].minor.yy102 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy102, 0);/*A-overwrites-B*/}
152590
+ break;
152591
+ case 197: /* expr ::= PLUS|MINUS expr */
152592
+{
152593
+ yymsp[-1].minor.yy102 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy102, 0);
152437152594
/*A-overwrites-B*/
152438152595
}
152439152596
break;
152440
- case 197: /* between_op ::= BETWEEN */
152441
- case 200: /* in_op ::= IN */ yytestcase(yyruleno==200);
152442
-{yymsp[0].minor.yy494 = 0;}
152443
- break;
152444
- case 199: /* expr ::= expr between_op expr AND expr */
152445
-{
152446
- ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy524);
152447
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy524);
152448
- yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy524, 0);
152449
- if( yymsp[-4].minor.yy524 ){
152450
- yymsp[-4].minor.yy524->x.pList = pList;
152597
+ case 198: /* between_op ::= BETWEEN */
152598
+ case 201: /* in_op ::= IN */ yytestcase(yyruleno==201);
152599
+{yymsp[0].minor.yy100 = 0;}
152600
+ break;
152601
+ case 200: /* expr ::= expr between_op expr AND expr */
152602
+{
152603
+ ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy102);
152604
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy102);
152605
+ yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy102, 0);
152606
+ if( yymsp[-4].minor.yy102 ){
152607
+ yymsp[-4].minor.yy102->x.pList = pList;
152451152608
}else{
152452152609
sqlite3ExprListDelete(pParse->db, pList);
152453152610
}
152454
- if( yymsp[-3].minor.yy494 ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152611
+ if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152455152612
}
152456152613
break;
152457
- case 202: /* expr ::= expr in_op LP exprlist RP */
152614
+ case 203: /* expr ::= expr in_op LP exprlist RP */
152458152615
{
152459
- if( yymsp[-1].minor.yy434==0 ){
152616
+ if( yymsp[-1].minor.yy94==0 ){
152460152617
/* Expressions of the form
152461152618
**
152462152619
** expr1 IN ()
152463152620
** expr1 NOT IN ()
152464152621
**
152465152622
** simplify to constants 0 (false) and 1 (true), respectively,
152466152623
** regardless of the value of expr1.
152467152624
*/
152468152625
if( IN_RENAME_OBJECT==0 ){
152469
- sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy524);
152470
- yymsp[-4].minor.yy524 = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[yymsp[-3].minor.yy494],1);
152626
+ sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy102);
152627
+ yymsp[-4].minor.yy102 = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[yymsp[-3].minor.yy100],1);
152471152628
}
152472
- }else if( yymsp[-1].minor.yy434->nExpr==1 ){
152629
+ }else if( yymsp[-1].minor.yy94->nExpr==1 ){
152473152630
/* Expressions of the form:
152474152631
**
152475152632
** expr1 IN (?1)
152476152633
** expr1 NOT IN (?2)
152477152634
**
@@ -152484,532 +152641,532 @@
152484152641
** But, the RHS of the == or <> is marked with the EP_Generic flag
152485152642
** so that it may not contribute to the computation of comparison
152486152643
** affinity or the collating sequence to use for comparison. Otherwise,
152487152644
** the semantics would be subtly different from IN or NOT IN.
152488152645
*/
152489
- Expr *pRHS = yymsp[-1].minor.yy434->a[0].pExpr;
152490
- yymsp[-1].minor.yy434->a[0].pExpr = 0;
152491
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy434);
152646
+ Expr *pRHS = yymsp[-1].minor.yy94->a[0].pExpr;
152647
+ yymsp[-1].minor.yy94->a[0].pExpr = 0;
152648
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy94);
152492152649
/* pRHS cannot be NULL because a malloc error would have been detected
152493152650
** before now and control would have never reached this point */
152494152651
if( ALWAYS(pRHS) ){
152495152652
pRHS->flags &= ~EP_Collate;
152496152653
pRHS->flags |= EP_Generic;
152497152654
}
152498
- yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, yymsp[-3].minor.yy494 ? TK_NE : TK_EQ, yymsp[-4].minor.yy524, pRHS);
152499
- }else{
152500
- yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy524, 0);
152501
- if( yymsp[-4].minor.yy524 ){
152502
- yymsp[-4].minor.yy524->x.pList = yymsp[-1].minor.yy434;
152503
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy524);
152504
- }else{
152505
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy434);
152506
- }
152507
- if( yymsp[-3].minor.yy494 ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152508
- }
152509
- }
152510
- break;
152511
- case 203: /* expr ::= LP select RP */
152512
-{
152513
- yymsp[-2].minor.yy524 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
152514
- sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy524, yymsp[-1].minor.yy457);
152515
- }
152516
- break;
152517
- case 204: /* expr ::= expr in_op LP select RP */
152518
-{
152519
- yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy524, 0);
152520
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy524, yymsp[-1].minor.yy457);
152521
- if( yymsp[-3].minor.yy494 ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152522
- }
152523
- break;
152524
- case 205: /* expr ::= expr in_op nm dbnm paren_exprlist */
152655
+ yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, yymsp[-3].minor.yy100 ? TK_NE : TK_EQ, yymsp[-4].minor.yy102, pRHS);
152656
+ }else{
152657
+ yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy102, 0);
152658
+ if( yymsp[-4].minor.yy102 ){
152659
+ yymsp[-4].minor.yy102->x.pList = yymsp[-1].minor.yy94;
152660
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy102);
152661
+ }else{
152662
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy94);
152663
+ }
152664
+ if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152665
+ }
152666
+ }
152667
+ break;
152668
+ case 204: /* expr ::= LP select RP */
152669
+{
152670
+ yymsp[-2].minor.yy102 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
152671
+ sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy102, yymsp[-1].minor.yy391);
152672
+ }
152673
+ break;
152674
+ case 205: /* expr ::= expr in_op LP select RP */
152675
+{
152676
+ yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy102, 0);
152677
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy102, yymsp[-1].minor.yy391);
152678
+ if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152679
+ }
152680
+ break;
152681
+ case 206: /* expr ::= expr in_op nm dbnm paren_exprlist */
152525152682
{
152526152683
SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
152527152684
Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
152528
- if( yymsp[0].minor.yy434 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy434);
152529
- yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy524, 0);
152530
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy524, pSelect);
152531
- if( yymsp[-3].minor.yy494 ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152685
+ if( yymsp[0].minor.yy94 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy94);
152686
+ yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy102, 0);
152687
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy102, pSelect);
152688
+ if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152532152689
}
152533152690
break;
152534
- case 206: /* expr ::= EXISTS LP select RP */
152691
+ case 207: /* expr ::= EXISTS LP select RP */
152535152692
{
152536152693
Expr *p;
152537
- p = yymsp[-3].minor.yy524 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
152538
- sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy457);
152539
- }
152540
- break;
152541
- case 207: /* expr ::= CASE case_operand case_exprlist case_else END */
152542
-{
152543
- yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy524, 0);
152544
- if( yymsp[-4].minor.yy524 ){
152545
- yymsp[-4].minor.yy524->x.pList = yymsp[-1].minor.yy524 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy434,yymsp[-1].minor.yy524) : yymsp[-2].minor.yy434;
152546
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy524);
152547
- }else{
152548
- sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy434);
152549
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy524);
152550
- }
152551
-}
152552
- break;
152553
- case 208: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
152554
-{
152555
- yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy434, yymsp[-2].minor.yy524);
152556
- yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy434, yymsp[0].minor.yy524);
152557
-}
152558
- break;
152559
- case 209: /* case_exprlist ::= WHEN expr THEN expr */
152560
-{
152561
- yymsp[-3].minor.yy434 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy524);
152562
- yymsp[-3].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy434, yymsp[0].minor.yy524);
152563
-}
152564
- break;
152565
- case 212: /* case_operand ::= expr */
152566
-{yymsp[0].minor.yy524 = yymsp[0].minor.yy524; /*A-overwrites-X*/}
152567
- break;
152568
- case 215: /* nexprlist ::= nexprlist COMMA expr */
152569
-{yymsp[-2].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy434,yymsp[0].minor.yy524);}
152570
- break;
152571
- case 216: /* nexprlist ::= expr */
152572
-{yymsp[0].minor.yy434 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy524); /*A-overwrites-Y*/}
152573
- break;
152574
- case 218: /* paren_exprlist ::= LP exprlist RP */
152575
- case 223: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==223);
152576
-{yymsp[-2].minor.yy434 = yymsp[-1].minor.yy434;}
152577
- break;
152578
- case 219: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
152694
+ p = yymsp[-3].minor.yy102 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
152695
+ sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy391);
152696
+ }
152697
+ break;
152698
+ case 208: /* expr ::= CASE case_operand case_exprlist case_else END */
152699
+{
152700
+ yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy102, 0);
152701
+ if( yymsp[-4].minor.yy102 ){
152702
+ yymsp[-4].minor.yy102->x.pList = yymsp[-1].minor.yy102 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy94,yymsp[-1].minor.yy102) : yymsp[-2].minor.yy94;
152703
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy102);
152704
+ }else{
152705
+ sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy94);
152706
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy102);
152707
+ }
152708
+}
152709
+ break;
152710
+ case 209: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
152711
+{
152712
+ yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy94, yymsp[-2].minor.yy102);
152713
+ yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy94, yymsp[0].minor.yy102);
152714
+}
152715
+ break;
152716
+ case 210: /* case_exprlist ::= WHEN expr THEN expr */
152717
+{
152718
+ yymsp[-3].minor.yy94 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy102);
152719
+ yymsp[-3].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy94, yymsp[0].minor.yy102);
152720
+}
152721
+ break;
152722
+ case 213: /* case_operand ::= expr */
152723
+{yymsp[0].minor.yy102 = yymsp[0].minor.yy102; /*A-overwrites-X*/}
152724
+ break;
152725
+ case 216: /* nexprlist ::= nexprlist COMMA expr */
152726
+{yymsp[-2].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy94,yymsp[0].minor.yy102);}
152727
+ break;
152728
+ case 217: /* nexprlist ::= expr */
152729
+{yymsp[0].minor.yy94 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy102); /*A-overwrites-Y*/}
152730
+ break;
152731
+ case 219: /* paren_exprlist ::= LP exprlist RP */
152732
+ case 224: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==224);
152733
+{yymsp[-2].minor.yy94 = yymsp[-1].minor.yy94;}
152734
+ break;
152735
+ case 220: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
152579152736
{
152580152737
sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
152581
- sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy434, yymsp[-10].minor.yy494,
152582
- &yymsp[-11].minor.yy0, yymsp[0].minor.yy524, SQLITE_SO_ASC, yymsp[-8].minor.yy494, SQLITE_IDXTYPE_APPDEF);
152738
+ sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy94, yymsp[-10].minor.yy100,
152739
+ &yymsp[-11].minor.yy0, yymsp[0].minor.yy102, SQLITE_SO_ASC, yymsp[-8].minor.yy100, SQLITE_IDXTYPE_APPDEF);
152583152740
if( IN_RENAME_OBJECT && pParse->pNewIndex ){
152584152741
sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
152585152742
}
152586152743
}
152587152744
break;
152588
- case 220: /* uniqueflag ::= UNIQUE */
152589
- case 262: /* raisetype ::= ABORT */ yytestcase(yyruleno==262);
152590
-{yymsp[0].minor.yy494 = OE_Abort;}
152591
- break;
152592
- case 221: /* uniqueflag ::= */
152593
-{yymsp[1].minor.yy494 = OE_None;}
152594
- break;
152595
- case 224: /* eidlist ::= eidlist COMMA nm collate sortorder */
152596
-{
152597
- yymsp[-4].minor.yy434 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy434, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy494, yymsp[0].minor.yy494);
152598
-}
152599
- break;
152600
- case 225: /* eidlist ::= nm collate sortorder */
152601
-{
152602
- yymsp[-2].minor.yy434 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy494, yymsp[0].minor.yy494); /*A-overwrites-Y*/
152603
-}
152604
- break;
152605
- case 228: /* cmd ::= DROP INDEX ifexists fullname */
152606
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy483, yymsp[-1].minor.yy494);}
152607
- break;
152608
- case 229: /* cmd ::= VACUUM vinto */
152609
-{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy524);}
152610
- break;
152611
- case 230: /* cmd ::= VACUUM nm vinto */
152612
-{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy524);}
152613
- break;
152614
- case 233: /* cmd ::= PRAGMA nm dbnm */
152745
+ case 221: /* uniqueflag ::= UNIQUE */
152746
+ case 263: /* raisetype ::= ABORT */ yytestcase(yyruleno==263);
152747
+{yymsp[0].minor.yy100 = OE_Abort;}
152748
+ break;
152749
+ case 222: /* uniqueflag ::= */
152750
+{yymsp[1].minor.yy100 = OE_None;}
152751
+ break;
152752
+ case 225: /* eidlist ::= eidlist COMMA nm collate sortorder */
152753
+{
152754
+ yymsp[-4].minor.yy94 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy94, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy100, yymsp[0].minor.yy100);
152755
+}
152756
+ break;
152757
+ case 226: /* eidlist ::= nm collate sortorder */
152758
+{
152759
+ yymsp[-2].minor.yy94 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy100, yymsp[0].minor.yy100); /*A-overwrites-Y*/
152760
+}
152761
+ break;
152762
+ case 229: /* cmd ::= DROP INDEX ifexists fullname */
152763
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy407, yymsp[-1].minor.yy100);}
152764
+ break;
152765
+ case 230: /* cmd ::= VACUUM vinto */
152766
+{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy102);}
152767
+ break;
152768
+ case 231: /* cmd ::= VACUUM nm vinto */
152769
+{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy102);}
152770
+ break;
152771
+ case 234: /* cmd ::= PRAGMA nm dbnm */
152615152772
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
152616152773
break;
152617
- case 234: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
152774
+ case 235: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
152618152775
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
152619152776
break;
152620
- case 235: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
152777
+ case 236: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
152621152778
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
152622152779
break;
152623
- case 236: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
152780
+ case 237: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
152624152781
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
152625152782
break;
152626
- case 237: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
152783
+ case 238: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
152627152784
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
152628152785
break;
152629
- case 240: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
152786
+ case 241: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
152630152787
{
152631152788
Token all;
152632152789
all.z = yymsp[-3].minor.yy0.z;
152633152790
all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
152634
- sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy455, &all);
152791
+ sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy11, &all);
152635152792
}
152636152793
break;
152637
- case 241: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
152794
+ case 242: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
152638152795
{
152639
- sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy494, yymsp[-4].minor.yy90.a, yymsp[-4].minor.yy90.b, yymsp[-2].minor.yy483, yymsp[0].minor.yy524, yymsp[-10].minor.yy494, yymsp[-8].minor.yy494);
152796
+ sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy100, yymsp[-4].minor.yy298.a, yymsp[-4].minor.yy298.b, yymsp[-2].minor.yy407, yymsp[0].minor.yy102, yymsp[-10].minor.yy100, yymsp[-8].minor.yy100);
152640152797
yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
152641152798
}
152642152799
break;
152643
- case 242: /* trigger_time ::= BEFORE|AFTER */
152644
-{ yymsp[0].minor.yy494 = yymsp[0].major; /*A-overwrites-X*/ }
152645
- break;
152646
- case 243: /* trigger_time ::= INSTEAD OF */
152647
-{ yymsp[-1].minor.yy494 = TK_INSTEAD;}
152648
- break;
152649
- case 244: /* trigger_time ::= */
152650
-{ yymsp[1].minor.yy494 = TK_BEFORE; }
152651
- break;
152652
- case 245: /* trigger_event ::= DELETE|INSERT */
152653
- case 246: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==246);
152654
-{yymsp[0].minor.yy90.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy90.b = 0;}
152655
- break;
152656
- case 247: /* trigger_event ::= UPDATE OF idlist */
152657
-{yymsp[-2].minor.yy90.a = TK_UPDATE; yymsp[-2].minor.yy90.b = yymsp[0].minor.yy62;}
152658
- break;
152659
- case 248: /* when_clause ::= */
152660
- case 267: /* key_opt ::= */ yytestcase(yyruleno==267);
152661
- case 315: /* filter_opt ::= */ yytestcase(yyruleno==315);
152662
-{ yymsp[1].minor.yy524 = 0; }
152663
- break;
152664
- case 249: /* when_clause ::= WHEN expr */
152665
- case 268: /* key_opt ::= KEY expr */ yytestcase(yyruleno==268);
152666
-{ yymsp[-1].minor.yy524 = yymsp[0].minor.yy524; }
152667
- break;
152668
- case 250: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
152669
-{
152670
- assert( yymsp[-2].minor.yy455!=0 );
152671
- yymsp[-2].minor.yy455->pLast->pNext = yymsp[-1].minor.yy455;
152672
- yymsp[-2].minor.yy455->pLast = yymsp[-1].minor.yy455;
152673
-}
152674
- break;
152675
- case 251: /* trigger_cmd_list ::= trigger_cmd SEMI */
152676
-{
152677
- assert( yymsp[-1].minor.yy455!=0 );
152678
- yymsp[-1].minor.yy455->pLast = yymsp[-1].minor.yy455;
152679
-}
152680
- break;
152681
- case 252: /* trnm ::= nm DOT nm */
152800
+ case 243: /* trigger_time ::= BEFORE|AFTER */
152801
+{ yymsp[0].minor.yy100 = yymsp[0].major; /*A-overwrites-X*/ }
152802
+ break;
152803
+ case 244: /* trigger_time ::= INSTEAD OF */
152804
+{ yymsp[-1].minor.yy100 = TK_INSTEAD;}
152805
+ break;
152806
+ case 245: /* trigger_time ::= */
152807
+{ yymsp[1].minor.yy100 = TK_BEFORE; }
152808
+ break;
152809
+ case 246: /* trigger_event ::= DELETE|INSERT */
152810
+ case 247: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==247);
152811
+{yymsp[0].minor.yy298.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy298.b = 0;}
152812
+ break;
152813
+ case 248: /* trigger_event ::= UPDATE OF idlist */
152814
+{yymsp[-2].minor.yy298.a = TK_UPDATE; yymsp[-2].minor.yy298.b = yymsp[0].minor.yy76;}
152815
+ break;
152816
+ case 249: /* when_clause ::= */
152817
+ case 268: /* key_opt ::= */ yytestcase(yyruleno==268);
152818
+ case 316: /* filter_opt ::= */ yytestcase(yyruleno==316);
152819
+{ yymsp[1].minor.yy102 = 0; }
152820
+ break;
152821
+ case 250: /* when_clause ::= WHEN expr */
152822
+ case 269: /* key_opt ::= KEY expr */ yytestcase(yyruleno==269);
152823
+{ yymsp[-1].minor.yy102 = yymsp[0].minor.yy102; }
152824
+ break;
152825
+ case 251: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
152826
+{
152827
+ assert( yymsp[-2].minor.yy11!=0 );
152828
+ yymsp[-2].minor.yy11->pLast->pNext = yymsp[-1].minor.yy11;
152829
+ yymsp[-2].minor.yy11->pLast = yymsp[-1].minor.yy11;
152830
+}
152831
+ break;
152832
+ case 252: /* trigger_cmd_list ::= trigger_cmd SEMI */
152833
+{
152834
+ assert( yymsp[-1].minor.yy11!=0 );
152835
+ yymsp[-1].minor.yy11->pLast = yymsp[-1].minor.yy11;
152836
+}
152837
+ break;
152838
+ case 253: /* trnm ::= nm DOT nm */
152682152839
{
152683152840
yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
152684152841
sqlite3ErrorMsg(pParse,
152685152842
"qualified table names are not allowed on INSERT, UPDATE, and DELETE "
152686152843
"statements within triggers");
152687152844
}
152688152845
break;
152689
- case 253: /* tridxby ::= INDEXED BY nm */
152846
+ case 254: /* tridxby ::= INDEXED BY nm */
152690152847
{
152691152848
sqlite3ErrorMsg(pParse,
152692152849
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
152693152850
"within triggers");
152694152851
}
152695152852
break;
152696
- case 254: /* tridxby ::= NOT INDEXED */
152853
+ case 255: /* tridxby ::= NOT INDEXED */
152697152854
{
152698152855
sqlite3ErrorMsg(pParse,
152699152856
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
152700152857
"within triggers");
152701152858
}
152702152859
break;
152703
- case 255: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
152704
-{yylhsminor.yy455 = sqlite3TriggerUpdateStep(pParse, &yymsp[-5].minor.yy0, yymsp[-2].minor.yy434, yymsp[-1].minor.yy524, yymsp[-6].minor.yy494, yymsp[-7].minor.yy0.z, yymsp[0].minor.yy294);}
152705
- yymsp[-7].minor.yy455 = yylhsminor.yy455;
152706
- break;
152707
- case 256: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
152708
-{
152709
- yylhsminor.yy455 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy62,yymsp[-2].minor.yy457,yymsp[-6].minor.yy494,yymsp[-1].minor.yy136,yymsp[-7].minor.yy294,yymsp[0].minor.yy294);/*yylhsminor.yy455-overwrites-yymsp[-6].minor.yy494*/
152710
-}
152711
- yymsp[-7].minor.yy455 = yylhsminor.yy455;
152712
- break;
152713
- case 257: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
152714
-{yylhsminor.yy455 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy524, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy294);}
152715
- yymsp[-5].minor.yy455 = yylhsminor.yy455;
152716
- break;
152717
- case 258: /* trigger_cmd ::= scanpt select scanpt */
152718
-{yylhsminor.yy455 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy457, yymsp[-2].minor.yy294, yymsp[0].minor.yy294); /*yylhsminor.yy455-overwrites-yymsp[-1].minor.yy457*/}
152719
- yymsp[-2].minor.yy455 = yylhsminor.yy455;
152720
- break;
152721
- case 259: /* expr ::= RAISE LP IGNORE RP */
152722
-{
152723
- yymsp[-3].minor.yy524 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
152724
- if( yymsp[-3].minor.yy524 ){
152725
- yymsp[-3].minor.yy524->affinity = OE_Ignore;
152726
- }
152727
-}
152728
- break;
152729
- case 260: /* expr ::= RAISE LP raisetype COMMA nm RP */
152730
-{
152731
- yymsp[-5].minor.yy524 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
152732
- if( yymsp[-5].minor.yy524 ) {
152733
- yymsp[-5].minor.yy524->affinity = (char)yymsp[-3].minor.yy494;
152734
- }
152735
-}
152736
- break;
152737
- case 261: /* raisetype ::= ROLLBACK */
152738
-{yymsp[0].minor.yy494 = OE_Rollback;}
152739
- break;
152740
- case 263: /* raisetype ::= FAIL */
152741
-{yymsp[0].minor.yy494 = OE_Fail;}
152742
- break;
152743
- case 264: /* cmd ::= DROP TRIGGER ifexists fullname */
152744
-{
152745
- sqlite3DropTrigger(pParse,yymsp[0].minor.yy483,yymsp[-1].minor.yy494);
152746
-}
152747
- break;
152748
- case 265: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
152749
-{
152750
- sqlite3Attach(pParse, yymsp[-3].minor.yy524, yymsp[-1].minor.yy524, yymsp[0].minor.yy524);
152751
-}
152752
- break;
152753
- case 266: /* cmd ::= DETACH database_kw_opt expr */
152754
-{
152755
- sqlite3Detach(pParse, yymsp[0].minor.yy524);
152756
-}
152757
- break;
152758
- case 269: /* cmd ::= REINDEX */
152860
+ case 256: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
152861
+{yylhsminor.yy11 = sqlite3TriggerUpdateStep(pParse, &yymsp[-5].minor.yy0, yymsp[-2].minor.yy94, yymsp[-1].minor.yy102, yymsp[-6].minor.yy100, yymsp[-7].minor.yy0.z, yymsp[0].minor.yy528);}
152862
+ yymsp[-7].minor.yy11 = yylhsminor.yy11;
152863
+ break;
152864
+ case 257: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
152865
+{
152866
+ yylhsminor.yy11 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy76,yymsp[-2].minor.yy391,yymsp[-6].minor.yy100,yymsp[-1].minor.yy95,yymsp[-7].minor.yy528,yymsp[0].minor.yy528);/*yylhsminor.yy11-overwrites-yymsp[-6].minor.yy100*/
152867
+}
152868
+ yymsp[-7].minor.yy11 = yylhsminor.yy11;
152869
+ break;
152870
+ case 258: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
152871
+{yylhsminor.yy11 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy102, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy528);}
152872
+ yymsp[-5].minor.yy11 = yylhsminor.yy11;
152873
+ break;
152874
+ case 259: /* trigger_cmd ::= scanpt select scanpt */
152875
+{yylhsminor.yy11 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy391, yymsp[-2].minor.yy528, yymsp[0].minor.yy528); /*yylhsminor.yy11-overwrites-yymsp[-1].minor.yy391*/}
152876
+ yymsp[-2].minor.yy11 = yylhsminor.yy11;
152877
+ break;
152878
+ case 260: /* expr ::= RAISE LP IGNORE RP */
152879
+{
152880
+ yymsp[-3].minor.yy102 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
152881
+ if( yymsp[-3].minor.yy102 ){
152882
+ yymsp[-3].minor.yy102->affinity = OE_Ignore;
152883
+ }
152884
+}
152885
+ break;
152886
+ case 261: /* expr ::= RAISE LP raisetype COMMA nm RP */
152887
+{
152888
+ yymsp[-5].minor.yy102 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
152889
+ if( yymsp[-5].minor.yy102 ) {
152890
+ yymsp[-5].minor.yy102->affinity = (char)yymsp[-3].minor.yy100;
152891
+ }
152892
+}
152893
+ break;
152894
+ case 262: /* raisetype ::= ROLLBACK */
152895
+{yymsp[0].minor.yy100 = OE_Rollback;}
152896
+ break;
152897
+ case 264: /* raisetype ::= FAIL */
152898
+{yymsp[0].minor.yy100 = OE_Fail;}
152899
+ break;
152900
+ case 265: /* cmd ::= DROP TRIGGER ifexists fullname */
152901
+{
152902
+ sqlite3DropTrigger(pParse,yymsp[0].minor.yy407,yymsp[-1].minor.yy100);
152903
+}
152904
+ break;
152905
+ case 266: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
152906
+{
152907
+ sqlite3Attach(pParse, yymsp[-3].minor.yy102, yymsp[-1].minor.yy102, yymsp[0].minor.yy102);
152908
+}
152909
+ break;
152910
+ case 267: /* cmd ::= DETACH database_kw_opt expr */
152911
+{
152912
+ sqlite3Detach(pParse, yymsp[0].minor.yy102);
152913
+}
152914
+ break;
152915
+ case 270: /* cmd ::= REINDEX */
152759152916
{sqlite3Reindex(pParse, 0, 0);}
152760152917
break;
152761
- case 270: /* cmd ::= REINDEX nm dbnm */
152918
+ case 271: /* cmd ::= REINDEX nm dbnm */
152762152919
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
152763152920
break;
152764
- case 271: /* cmd ::= ANALYZE */
152921
+ case 272: /* cmd ::= ANALYZE */
152765152922
{sqlite3Analyze(pParse, 0, 0);}
152766152923
break;
152767
- case 272: /* cmd ::= ANALYZE nm dbnm */
152924
+ case 273: /* cmd ::= ANALYZE nm dbnm */
152768152925
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
152769152926
break;
152770
- case 273: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
152927
+ case 274: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
152771152928
{
152772
- sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy483,&yymsp[0].minor.yy0);
152929
+ sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy407,&yymsp[0].minor.yy0);
152773152930
}
152774152931
break;
152775
- case 274: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
152932
+ case 275: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
152776152933
{
152777152934
yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
152778152935
sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
152779152936
}
152780152937
break;
152781
- case 275: /* add_column_fullname ::= fullname */
152938
+ case 276: /* add_column_fullname ::= fullname */
152782152939
{
152783152940
disableLookaside(pParse);
152784
- sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy483);
152785
-}
152786
- break;
152787
- case 276: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
152788
-{
152789
- sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy483, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
152790
-}
152791
- break;
152792
- case 277: /* cmd ::= create_vtab */
152941
+ sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy407);
152942
+}
152943
+ break;
152944
+ case 277: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
152945
+{
152946
+ sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy407, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
152947
+}
152948
+ break;
152949
+ case 278: /* cmd ::= create_vtab */
152793152950
{sqlite3VtabFinishParse(pParse,0);}
152794152951
break;
152795
- case 278: /* cmd ::= create_vtab LP vtabarglist RP */
152952
+ case 279: /* cmd ::= create_vtab LP vtabarglist RP */
152796152953
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
152797152954
break;
152798
- case 279: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
152955
+ case 280: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
152799152956
{
152800
- sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy494);
152957
+ sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy100);
152801152958
}
152802152959
break;
152803
- case 280: /* vtabarg ::= */
152960
+ case 281: /* vtabarg ::= */
152804152961
{sqlite3VtabArgInit(pParse);}
152805152962
break;
152806
- case 281: /* vtabargtoken ::= ANY */
152807
- case 282: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==282);
152808
- case 283: /* lp ::= LP */ yytestcase(yyruleno==283);
152963
+ case 282: /* vtabargtoken ::= ANY */
152964
+ case 283: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==283);
152965
+ case 284: /* lp ::= LP */ yytestcase(yyruleno==284);
152809152966
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
152810152967
break;
152811
- case 284: /* with ::= WITH wqlist */
152812
- case 285: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==285);
152813
-{ sqlite3WithPush(pParse, yymsp[0].minor.yy59, 1); }
152814
- break;
152815
- case 286: /* wqlist ::= nm eidlist_opt AS LP select RP */
152816
-{
152817
- yymsp[-5].minor.yy59 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy434, yymsp[-1].minor.yy457); /*A-overwrites-X*/
152818
-}
152819
- break;
152820
- case 287: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
152821
-{
152822
- yymsp[-7].minor.yy59 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy59, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy434, yymsp[-1].minor.yy457);
152823
-}
152824
- break;
152825
- case 288: /* windowdefn_list ::= windowdefn */
152826
-{ yylhsminor.yy295 = yymsp[0].minor.yy295; }
152827
- yymsp[0].minor.yy295 = yylhsminor.yy295;
152828
- break;
152829
- case 289: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
152830
-{
152831
- assert( yymsp[0].minor.yy295!=0 );
152832
- sqlite3WindowChain(pParse, yymsp[0].minor.yy295, yymsp[-2].minor.yy295);
152833
- yymsp[0].minor.yy295->pNextWin = yymsp[-2].minor.yy295;
152834
- yylhsminor.yy295 = yymsp[0].minor.yy295;
152835
-}
152836
- yymsp[-2].minor.yy295 = yylhsminor.yy295;
152837
- break;
152838
- case 290: /* windowdefn ::= nm AS LP window RP */
152839
-{
152840
- if( ALWAYS(yymsp[-1].minor.yy295) ){
152841
- yymsp[-1].minor.yy295->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
152842
- }
152843
- yylhsminor.yy295 = yymsp[-1].minor.yy295;
152844
-}
152845
- yymsp[-4].minor.yy295 = yylhsminor.yy295;
152846
- break;
152847
- case 291: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
152848
-{
152849
- yymsp[-4].minor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, yymsp[-2].minor.yy434, yymsp[-1].minor.yy434, 0);
152850
-}
152851
- break;
152852
- case 292: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
152853
-{
152854
- yylhsminor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, yymsp[-2].minor.yy434, yymsp[-1].minor.yy434, &yymsp[-5].minor.yy0);
152855
-}
152856
- yymsp[-5].minor.yy295 = yylhsminor.yy295;
152857
- break;
152858
- case 293: /* window ::= ORDER BY sortlist frame_opt */
152859
-{
152860
- yymsp[-3].minor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, 0, yymsp[-1].minor.yy434, 0);
152861
-}
152862
- break;
152863
- case 294: /* window ::= nm ORDER BY sortlist frame_opt */
152864
-{
152865
- yylhsminor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, 0, yymsp[-1].minor.yy434, &yymsp[-4].minor.yy0);
152866
-}
152867
- yymsp[-4].minor.yy295 = yylhsminor.yy295;
152868
- break;
152869
- case 295: /* window ::= frame_opt */
152870
-{
152871
- yylhsminor.yy295 = yymsp[0].minor.yy295;
152872
-}
152873
- yymsp[0].minor.yy295 = yylhsminor.yy295;
152874
- break;
152875
- case 296: /* window ::= nm frame_opt */
152876
-{
152877
- yylhsminor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, 0, 0, &yymsp[-1].minor.yy0);
152878
-}
152879
- yymsp[-1].minor.yy295 = yylhsminor.yy295;
152880
- break;
152881
- case 297: /* frame_opt ::= */
152882
-{
152883
- yymsp[1].minor.yy295 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
152884
-}
152885
- break;
152886
- case 298: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
152887
-{
152888
- yylhsminor.yy295 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy494, yymsp[-1].minor.yy201.eType, yymsp[-1].minor.yy201.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy238);
152889
-}
152890
- yymsp[-2].minor.yy295 = yylhsminor.yy295;
152891
- break;
152892
- case 299: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
152893
-{
152894
- yylhsminor.yy295 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy494, yymsp[-3].minor.yy201.eType, yymsp[-3].minor.yy201.pExpr, yymsp[-1].minor.yy201.eType, yymsp[-1].minor.yy201.pExpr, yymsp[0].minor.yy238);
152895
-}
152896
- yymsp[-5].minor.yy295 = yylhsminor.yy295;
152897
- break;
152898
- case 301: /* frame_bound_s ::= frame_bound */
152899
- case 303: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==303);
152900
-{yylhsminor.yy201 = yymsp[0].minor.yy201;}
152901
- yymsp[0].minor.yy201 = yylhsminor.yy201;
152902
- break;
152903
- case 302: /* frame_bound_s ::= UNBOUNDED PRECEDING */
152904
- case 304: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==304);
152905
- case 306: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==306);
152906
-{yylhsminor.yy201.eType = yymsp[-1].major; yylhsminor.yy201.pExpr = 0;}
152907
- yymsp[-1].minor.yy201 = yylhsminor.yy201;
152908
- break;
152909
- case 305: /* frame_bound ::= expr PRECEDING|FOLLOWING */
152910
-{yylhsminor.yy201.eType = yymsp[0].major; yylhsminor.yy201.pExpr = yymsp[-1].minor.yy524;}
152911
- yymsp[-1].minor.yy201 = yylhsminor.yy201;
152912
- break;
152913
- case 307: /* frame_exclude_opt ::= */
152914
-{yymsp[1].minor.yy238 = 0;}
152915
- break;
152916
- case 308: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
152917
-{yymsp[-1].minor.yy238 = yymsp[0].minor.yy238;}
152918
- break;
152919
- case 309: /* frame_exclude ::= NO OTHERS */
152920
- case 310: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==310);
152921
-{yymsp[-1].minor.yy238 = yymsp[-1].major; /*A-overwrites-X*/}
152922
- break;
152923
- case 311: /* frame_exclude ::= GROUP|TIES */
152924
-{yymsp[0].minor.yy238 = yymsp[0].major; /*A-overwrites-X*/}
152925
- break;
152926
- case 312: /* window_clause ::= WINDOW windowdefn_list */
152927
-{ yymsp[-1].minor.yy295 = yymsp[0].minor.yy295; }
152928
- break;
152929
- case 313: /* over_clause ::= filter_opt OVER LP window RP */
152930
-{
152931
- yylhsminor.yy295 = yymsp[-1].minor.yy295;
152932
- assert( yylhsminor.yy295!=0 );
152933
- yylhsminor.yy295->pFilter = yymsp[-4].minor.yy524;
152934
-}
152935
- yymsp[-4].minor.yy295 = yylhsminor.yy295;
152936
- break;
152937
- case 314: /* over_clause ::= filter_opt OVER nm */
152938
-{
152939
- yylhsminor.yy295 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
152940
- if( yylhsminor.yy295 ){
152941
- yylhsminor.yy295->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
152942
- yylhsminor.yy295->pFilter = yymsp[-2].minor.yy524;
152943
- }else{
152944
- sqlite3ExprDelete(pParse->db, yymsp[-2].minor.yy524);
152945
- }
152946
-}
152947
- yymsp[-2].minor.yy295 = yylhsminor.yy295;
152948
- break;
152949
- case 316: /* filter_opt ::= FILTER LP WHERE expr RP */
152950
-{ yymsp[-4].minor.yy524 = yymsp[-1].minor.yy524; }
152968
+ case 285: /* with ::= WITH wqlist */
152969
+ case 286: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==286);
152970
+{ sqlite3WithPush(pParse, yymsp[0].minor.yy243, 1); }
152971
+ break;
152972
+ case 287: /* wqlist ::= nm eidlist_opt AS LP select RP */
152973
+{
152974
+ yymsp[-5].minor.yy243 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy94, yymsp[-1].minor.yy391); /*A-overwrites-X*/
152975
+}
152976
+ break;
152977
+ case 288: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
152978
+{
152979
+ yymsp[-7].minor.yy243 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy243, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy94, yymsp[-1].minor.yy391);
152980
+}
152981
+ break;
152982
+ case 289: /* windowdefn_list ::= windowdefn */
152983
+{ yylhsminor.yy379 = yymsp[0].minor.yy379; }
152984
+ yymsp[0].minor.yy379 = yylhsminor.yy379;
152985
+ break;
152986
+ case 290: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
152987
+{
152988
+ assert( yymsp[0].minor.yy379!=0 );
152989
+ sqlite3WindowChain(pParse, yymsp[0].minor.yy379, yymsp[-2].minor.yy379);
152990
+ yymsp[0].minor.yy379->pNextWin = yymsp[-2].minor.yy379;
152991
+ yylhsminor.yy379 = yymsp[0].minor.yy379;
152992
+}
152993
+ yymsp[-2].minor.yy379 = yylhsminor.yy379;
152994
+ break;
152995
+ case 291: /* windowdefn ::= nm AS LP window RP */
152996
+{
152997
+ if( ALWAYS(yymsp[-1].minor.yy379) ){
152998
+ yymsp[-1].minor.yy379->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
152999
+ }
153000
+ yylhsminor.yy379 = yymsp[-1].minor.yy379;
153001
+}
153002
+ yymsp[-4].minor.yy379 = yylhsminor.yy379;
153003
+ break;
153004
+ case 292: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
153005
+{
153006
+ yymsp[-4].minor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, yymsp[-2].minor.yy94, yymsp[-1].minor.yy94, 0);
153007
+}
153008
+ break;
153009
+ case 293: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
153010
+{
153011
+ yylhsminor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, yymsp[-2].minor.yy94, yymsp[-1].minor.yy94, &yymsp[-5].minor.yy0);
153012
+}
153013
+ yymsp[-5].minor.yy379 = yylhsminor.yy379;
153014
+ break;
153015
+ case 294: /* window ::= ORDER BY sortlist frame_opt */
153016
+{
153017
+ yymsp[-3].minor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, 0, yymsp[-1].minor.yy94, 0);
153018
+}
153019
+ break;
153020
+ case 295: /* window ::= nm ORDER BY sortlist frame_opt */
153021
+{
153022
+ yylhsminor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, 0, yymsp[-1].minor.yy94, &yymsp[-4].minor.yy0);
153023
+}
153024
+ yymsp[-4].minor.yy379 = yylhsminor.yy379;
153025
+ break;
153026
+ case 296: /* window ::= frame_opt */
153027
+{
153028
+ yylhsminor.yy379 = yymsp[0].minor.yy379;
153029
+}
153030
+ yymsp[0].minor.yy379 = yylhsminor.yy379;
153031
+ break;
153032
+ case 297: /* window ::= nm frame_opt */
153033
+{
153034
+ yylhsminor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, 0, 0, &yymsp[-1].minor.yy0);
153035
+}
153036
+ yymsp[-1].minor.yy379 = yylhsminor.yy379;
153037
+ break;
153038
+ case 298: /* frame_opt ::= */
153039
+{
153040
+ yymsp[1].minor.yy379 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
153041
+}
153042
+ break;
153043
+ case 299: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
153044
+{
153045
+ yylhsminor.yy379 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy100, yymsp[-1].minor.yy389.eType, yymsp[-1].minor.yy389.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy218);
153046
+}
153047
+ yymsp[-2].minor.yy379 = yylhsminor.yy379;
153048
+ break;
153049
+ case 300: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
153050
+{
153051
+ yylhsminor.yy379 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy100, yymsp[-3].minor.yy389.eType, yymsp[-3].minor.yy389.pExpr, yymsp[-1].minor.yy389.eType, yymsp[-1].minor.yy389.pExpr, yymsp[0].minor.yy218);
153052
+}
153053
+ yymsp[-5].minor.yy379 = yylhsminor.yy379;
153054
+ break;
153055
+ case 302: /* frame_bound_s ::= frame_bound */
153056
+ case 304: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==304);
153057
+{yylhsminor.yy389 = yymsp[0].minor.yy389;}
153058
+ yymsp[0].minor.yy389 = yylhsminor.yy389;
153059
+ break;
153060
+ case 303: /* frame_bound_s ::= UNBOUNDED PRECEDING */
153061
+ case 305: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==305);
153062
+ case 307: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==307);
153063
+{yylhsminor.yy389.eType = yymsp[-1].major; yylhsminor.yy389.pExpr = 0;}
153064
+ yymsp[-1].minor.yy389 = yylhsminor.yy389;
153065
+ break;
153066
+ case 306: /* frame_bound ::= expr PRECEDING|FOLLOWING */
153067
+{yylhsminor.yy389.eType = yymsp[0].major; yylhsminor.yy389.pExpr = yymsp[-1].minor.yy102;}
153068
+ yymsp[-1].minor.yy389 = yylhsminor.yy389;
153069
+ break;
153070
+ case 308: /* frame_exclude_opt ::= */
153071
+{yymsp[1].minor.yy218 = 0;}
153072
+ break;
153073
+ case 309: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
153074
+{yymsp[-1].minor.yy218 = yymsp[0].minor.yy218;}
153075
+ break;
153076
+ case 310: /* frame_exclude ::= NO OTHERS */
153077
+ case 311: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==311);
153078
+{yymsp[-1].minor.yy218 = yymsp[-1].major; /*A-overwrites-X*/}
153079
+ break;
153080
+ case 312: /* frame_exclude ::= GROUP|TIES */
153081
+{yymsp[0].minor.yy218 = yymsp[0].major; /*A-overwrites-X*/}
153082
+ break;
153083
+ case 313: /* window_clause ::= WINDOW windowdefn_list */
153084
+{ yymsp[-1].minor.yy379 = yymsp[0].minor.yy379; }
153085
+ break;
153086
+ case 314: /* over_clause ::= filter_opt OVER LP window RP */
153087
+{
153088
+ yylhsminor.yy379 = yymsp[-1].minor.yy379;
153089
+ assert( yylhsminor.yy379!=0 );
153090
+ yylhsminor.yy379->pFilter = yymsp[-4].minor.yy102;
153091
+}
153092
+ yymsp[-4].minor.yy379 = yylhsminor.yy379;
153093
+ break;
153094
+ case 315: /* over_clause ::= filter_opt OVER nm */
153095
+{
153096
+ yylhsminor.yy379 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
153097
+ if( yylhsminor.yy379 ){
153098
+ yylhsminor.yy379->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
153099
+ yylhsminor.yy379->pFilter = yymsp[-2].minor.yy102;
153100
+ }else{
153101
+ sqlite3ExprDelete(pParse->db, yymsp[-2].minor.yy102);
153102
+ }
153103
+}
153104
+ yymsp[-2].minor.yy379 = yylhsminor.yy379;
153105
+ break;
153106
+ case 317: /* filter_opt ::= FILTER LP WHERE expr RP */
153107
+{ yymsp[-4].minor.yy102 = yymsp[-1].minor.yy102; }
152951153108
break;
152952153109
default:
152953
- /* (317) input ::= cmdlist */ yytestcase(yyruleno==317);
152954
- /* (318) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==318);
152955
- /* (319) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=319);
152956
- /* (320) ecmd ::= SEMI */ yytestcase(yyruleno==320);
152957
- /* (321) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==321);
152958
- /* (322) ecmd ::= explain cmdx */ yytestcase(yyruleno==322);
152959
- /* (323) trans_opt ::= */ yytestcase(yyruleno==323);
152960
- /* (324) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==324);
152961
- /* (325) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==325);
152962
- /* (326) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==326);
152963
- /* (327) savepoint_opt ::= */ yytestcase(yyruleno==327);
152964
- /* (328) cmd ::= create_table create_table_args */ yytestcase(yyruleno==328);
152965
- /* (329) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==329);
152966
- /* (330) columnlist ::= columnname carglist */ yytestcase(yyruleno==330);
152967
- /* (331) nm ::= ID|INDEXED */ yytestcase(yyruleno==331);
152968
- /* (332) nm ::= STRING */ yytestcase(yyruleno==332);
152969
- /* (333) nm ::= JOIN_KW */ yytestcase(yyruleno==333);
152970
- /* (334) typetoken ::= typename */ yytestcase(yyruleno==334);
152971
- /* (335) typename ::= ID|STRING */ yytestcase(yyruleno==335);
152972
- /* (336) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=336);
152973
- /* (337) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=337);
152974
- /* (338) carglist ::= carglist ccons */ yytestcase(yyruleno==338);
152975
- /* (339) carglist ::= */ yytestcase(yyruleno==339);
152976
- /* (340) ccons ::= NULL onconf */ yytestcase(yyruleno==340);
152977
- /* (341) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==341);
152978
- /* (342) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==342);
152979
- /* (343) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=343);
152980
- /* (344) tconscomma ::= */ yytestcase(yyruleno==344);
152981
- /* (345) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=345);
152982
- /* (346) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=346);
152983
- /* (347) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=347);
152984
- /* (348) oneselect ::= values */ yytestcase(yyruleno==348);
152985
- /* (349) sclp ::= selcollist COMMA */ yytestcase(yyruleno==349);
152986
- /* (350) as ::= ID|STRING */ yytestcase(yyruleno==350);
152987
- /* (351) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=351);
152988
- /* (352) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==352);
152989
- /* (353) exprlist ::= nexprlist */ yytestcase(yyruleno==353);
152990
- /* (354) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=354);
152991
- /* (355) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=355);
152992
- /* (356) nmnum ::= ON */ yytestcase(yyruleno==356);
152993
- /* (357) nmnum ::= DELETE */ yytestcase(yyruleno==357);
152994
- /* (358) nmnum ::= DEFAULT */ yytestcase(yyruleno==358);
152995
- /* (359) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==359);
152996
- /* (360) foreach_clause ::= */ yytestcase(yyruleno==360);
152997
- /* (361) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==361);
152998
- /* (362) trnm ::= nm */ yytestcase(yyruleno==362);
152999
- /* (363) tridxby ::= */ yytestcase(yyruleno==363);
153000
- /* (364) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==364);
153001
- /* (365) database_kw_opt ::= */ yytestcase(yyruleno==365);
153002
- /* (366) kwcolumn_opt ::= */ yytestcase(yyruleno==366);
153003
- /* (367) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==367);
153004
- /* (368) vtabarglist ::= vtabarg */ yytestcase(yyruleno==368);
153005
- /* (369) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==369);
153006
- /* (370) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==370);
153007
- /* (371) anylist ::= */ yytestcase(yyruleno==371);
153008
- /* (372) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==372);
153009
- /* (373) anylist ::= anylist ANY */ yytestcase(yyruleno==373);
153010
- /* (374) with ::= */ yytestcase(yyruleno==374);
153110
+ /* (318) input ::= cmdlist */ yytestcase(yyruleno==318);
153111
+ /* (319) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==319);
153112
+ /* (320) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=320);
153113
+ /* (321) ecmd ::= SEMI */ yytestcase(yyruleno==321);
153114
+ /* (322) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==322);
153115
+ /* (323) ecmd ::= explain cmdx */ yytestcase(yyruleno==323);
153116
+ /* (324) trans_opt ::= */ yytestcase(yyruleno==324);
153117
+ /* (325) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==325);
153118
+ /* (326) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==326);
153119
+ /* (327) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==327);
153120
+ /* (328) savepoint_opt ::= */ yytestcase(yyruleno==328);
153121
+ /* (329) cmd ::= create_table create_table_args */ yytestcase(yyruleno==329);
153122
+ /* (330) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==330);
153123
+ /* (331) columnlist ::= columnname carglist */ yytestcase(yyruleno==331);
153124
+ /* (332) nm ::= ID|INDEXED */ yytestcase(yyruleno==332);
153125
+ /* (333) nm ::= STRING */ yytestcase(yyruleno==333);
153126
+ /* (334) nm ::= JOIN_KW */ yytestcase(yyruleno==334);
153127
+ /* (335) typetoken ::= typename */ yytestcase(yyruleno==335);
153128
+ /* (336) typename ::= ID|STRING */ yytestcase(yyruleno==336);
153129
+ /* (337) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=337);
153130
+ /* (338) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=338);
153131
+ /* (339) carglist ::= carglist ccons */ yytestcase(yyruleno==339);
153132
+ /* (340) carglist ::= */ yytestcase(yyruleno==340);
153133
+ /* (341) ccons ::= NULL onconf */ yytestcase(yyruleno==341);
153134
+ /* (342) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==342);
153135
+ /* (343) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==343);
153136
+ /* (344) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=344);
153137
+ /* (345) tconscomma ::= */ yytestcase(yyruleno==345);
153138
+ /* (346) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=346);
153139
+ /* (347) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=347);
153140
+ /* (348) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=348);
153141
+ /* (349) oneselect ::= values */ yytestcase(yyruleno==349);
153142
+ /* (350) sclp ::= selcollist COMMA */ yytestcase(yyruleno==350);
153143
+ /* (351) as ::= ID|STRING */ yytestcase(yyruleno==351);
153144
+ /* (352) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=352);
153145
+ /* (353) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==353);
153146
+ /* (354) exprlist ::= nexprlist */ yytestcase(yyruleno==354);
153147
+ /* (355) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=355);
153148
+ /* (356) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=356);
153149
+ /* (357) nmnum ::= ON */ yytestcase(yyruleno==357);
153150
+ /* (358) nmnum ::= DELETE */ yytestcase(yyruleno==358);
153151
+ /* (359) nmnum ::= DEFAULT */ yytestcase(yyruleno==359);
153152
+ /* (360) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==360);
153153
+ /* (361) foreach_clause ::= */ yytestcase(yyruleno==361);
153154
+ /* (362) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==362);
153155
+ /* (363) trnm ::= nm */ yytestcase(yyruleno==363);
153156
+ /* (364) tridxby ::= */ yytestcase(yyruleno==364);
153157
+ /* (365) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==365);
153158
+ /* (366) database_kw_opt ::= */ yytestcase(yyruleno==366);
153159
+ /* (367) kwcolumn_opt ::= */ yytestcase(yyruleno==367);
153160
+ /* (368) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==368);
153161
+ /* (369) vtabarglist ::= vtabarg */ yytestcase(yyruleno==369);
153162
+ /* (370) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==370);
153163
+ /* (371) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==371);
153164
+ /* (372) anylist ::= */ yytestcase(yyruleno==372);
153165
+ /* (373) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==373);
153166
+ /* (374) anylist ::= anylist ANY */ yytestcase(yyruleno==374);
153167
+ /* (375) with ::= */ yytestcase(yyruleno==375);
153011153168
break;
153012153169
/********** End reduce actions ************************************************/
153013153170
};
153014153171
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
153015153172
yygoto = yyRuleInfoLhs[yyruleno];
@@ -173300,18 +173457,18 @@
173300173457
break;
173301173458
}
173302173459
173303173460
nList -= (int)(p - pList);
173304173461
pList = p;
173305
- if( nList==0 ){
173462
+ if( nList<=0 ){
173306173463
break;
173307173464
}
173308173465
p = &pList[1];
173309173466
p += fts3GetVarint32(p, &iCurrent);
173310173467
}
173311173468
173312
- if( bZero && &pList[nList]!=pEnd ){
173469
+ if( bZero && (pEnd - &pList[nList])>0){
173313173470
memset(&pList[nList], 0, pEnd - &pList[nList]);
173314173471
}
173315173472
*ppList = pList;
173316173473
*pnList = nList;
173317173474
}
@@ -193872,13 +194029,11 @@
193872194029
rc = SQLITE_ERROR;
193873194030
pRbu->zErrmsg = sqlite3_mprintf("rbu/zipvfs setup error");
193874194031
}else if( rc==SQLITE_NOTFOUND ){
193875194032
pRbu->pTargetFd = p;
193876194033
p->pRbu = pRbu;
193877
- if( p->openFlags & SQLITE_OPEN_MAIN_DB ){
193878
- rbuMainlistAdd(p);
193879
- }
194034
+ rbuMainlistAdd(p);
193880194035
if( p->pWalFd ) p->pWalFd->pRbu = pRbu;
193881194036
rc = SQLITE_OK;
193882194037
}
193883194038
}
193884194039
return rc;
@@ -193937,14 +194092,11 @@
193937194092
** todo: really, it's not clear why this might occur, as
193938194093
** wal_autocheckpoint ought to be turned off. */
193939194094
if( ofst==WAL_LOCK_CKPT && n==1 ) rc = SQLITE_BUSY;
193940194095
}else{
193941194096
int bCapture = 0;
193942
- if( n==1 && (flags & SQLITE_SHM_EXCLUSIVE)
193943
- && pRbu && pRbu->eStage==RBU_STAGE_CAPTURE
193944
- && (ofst==WAL_LOCK_WRITE || ofst==WAL_LOCK_CKPT || ofst==WAL_LOCK_READ0)
193945
- ){
194097
+ if( pRbu && pRbu->eStage==RBU_STAGE_CAPTURE ){
193946194098
bCapture = 1;
193947194099
}
193948194100
193949194101
if( bCapture==0 || 0==(flags & SQLITE_SHM_UNLOCK) ){
193950194102
rc = p->pReal->pMethods->xShmLock(p->pReal, ofst, n, flags);
@@ -193973,24 +194125,28 @@
193973194125
193974194126
/* If not in RBU_STAGE_OAL, allow this call to pass through. Or, if this
193975194127
** rbu is in the RBU_STAGE_OAL state, use heap memory for *-shm space
193976194128
** instead of a file on disk. */
193977194129
assert( p->openFlags & (SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_TEMP_DB) );
193978
- if( eStage==RBU_STAGE_OAL || eStage==RBU_STAGE_MOVE ){
193979
- if( iRegion<=p->nShm ){
193980
- sqlite3_int64 nByte = (iRegion+1) * sizeof(char*);
193981
- char **apNew = (char**)sqlite3_realloc64(p->apShm, nByte);
193982
- if( apNew==0 ){
193983
- rc = SQLITE_NOMEM;
193984
- }else{
193985
- memset(&apNew[p->nShm], 0, sizeof(char*) * (1 + iRegion - p->nShm));
193986
- p->apShm = apNew;
193987
- p->nShm = iRegion+1;
193988
- }
194130
+ if( eStage==RBU_STAGE_OAL ){
194131
+ sqlite3_int64 nByte = (iRegion+1) * sizeof(char*);
194132
+ char **apNew = (char**)sqlite3_realloc64(p->apShm, nByte);
194133
+
194134
+ /* This is an RBU connection that uses its own heap memory for the
194135
+ ** pages of the *-shm file. Since no other process can have run
194136
+ ** recovery, the connection must request *-shm pages in order
194137
+ ** from start to finish. */
194138
+ assert( iRegion==p->nShm );
194139
+ if( apNew==0 ){
194140
+ rc = SQLITE_NOMEM;
194141
+ }else{
194142
+ memset(&apNew[p->nShm], 0, sizeof(char*) * (1 + iRegion - p->nShm));
194143
+ p->apShm = apNew;
194144
+ p->nShm = iRegion+1;
193989194145
}
193990194146
193991
- if( rc==SQLITE_OK && p->apShm[iRegion]==0 ){
194147
+ if( rc==SQLITE_OK ){
193992194148
char *pNew = (char*)sqlite3_malloc64(szRegion);
193993194149
if( pNew==0 ){
193994194150
rc = SQLITE_NOMEM;
193995194151
}else{
193996194152
memset(pNew, 0, szRegion);
@@ -197209,11 +197365,13 @@
197209197365
}
197210197366
}
197211197367
}
197212197368
sqlite3_free((char*)azCol);
197213197369
if( bMismatch ){
197214
- *pzErrMsg = sqlite3_mprintf("table schemas do not match");
197370
+ if( pzErrMsg ){
197371
+ *pzErrMsg = sqlite3_mprintf("table schemas do not match");
197372
+ }
197215197373
rc = SQLITE_SCHEMA;
197216197374
}
197217197375
if( bHasPk==0 ){
197218197376
/* Ignore tables with no primary keys */
197219197377
goto diff_out;
@@ -197415,11 +197573,11 @@
197415197573
**
197416197574
** If successful, return zero. Otherwise, if an OOM condition is encountered,
197417197575
** set *pRc to SQLITE_NOMEM and return non-zero.
197418197576
*/
197419197577
static int sessionBufferGrow(SessionBuffer *p, size_t nByte, int *pRc){
197420
- if( *pRc==SQLITE_OK && p->nAlloc-p->nBuf<nByte ){
197578
+ if( *pRc==SQLITE_OK && (size_t)(p->nAlloc-p->nBuf)<nByte ){
197421197579
u8 *aNew;
197422197580
i64 nNew = p->nAlloc ? p->nAlloc : 128;
197423197581
do {
197424197582
nNew = nNew*2;
197425197583
}while( (nNew-p->nBuf)<nByte );
@@ -204848,10 +205006,15 @@
204848205006
return 0;
204849205007
}
204850205008
fts5FastGetVarint32(a, i, iVal);
204851205009
iOff = ((i64)iVal) << 32;
204852205010
fts5FastGetVarint32(a, i, iVal);
205011
+ if( iVal<2 ){
205012
+ /* This is a corrupt record. So stop parsing it here. */
205013
+ *piOff = -1;
205014
+ return 1;
205015
+ }
204853205016
}
204854205017
*piOff = iOff + ((iVal-2) & 0x7FFFFFFF);
204855205018
*pi = i;
204856205019
return 0;
204857205020
}
@@ -214391,12 +214554,18 @@
214391214554
/* The maximum size of the output is equal to the sum of the two
214392214555
** input sizes + 1 varint (9 bytes). The extra varint is because if the
214393214556
** first rowid in one input is a large negative number, and the first in
214394214557
** the other a non-negative number, the delta for the non-negative
214395214558
** number will be larger on disk than the literal integer value
214396
- ** was. */
214397
- if( sqlite3Fts5BufferSize(&p->rc, &out, p1->n + p2->n + 9) ) return;
214559
+ ** was.
214560
+ **
214561
+ ** Or, if the input position-lists are corrupt, then the output might
214562
+ ** include up to 2 extra 10-byte positions created by interpreting -1
214563
+ ** (the value PoslistNext64() uses for EOF) as a position and appending
214564
+ ** it to the output. This can happen at most once for each input
214565
+ ** position-list, hence two 10 byte paddings. */
214566
+ if( sqlite3Fts5BufferSize(&p->rc, &out, p1->n + p2->n + 9+10+10) ) return;
214398214567
fts5DoclistIterInit(p1, &i1);
214399214568
fts5DoclistIterInit(p2, &i2);
214400214569
214401214570
while( 1 ){
214402214571
if( i1.iRowid<i2.iRowid ){
@@ -214403,17 +214572,19 @@
214403214572
/* Copy entry from i1 */
214404214573
fts5MergeAppendDocid(&out, iLastRowid, i1.iRowid);
214405214574
fts5BufferSafeAppendBlob(&out, i1.aPoslist, i1.nPoslist+i1.nSize);
214406214575
fts5DoclistIterNext(&i1);
214407214576
if( i1.aPoslist==0 ) break;
214577
+ assert( out.n<=((i1.aPoslist-p1->p) + (i2.aPoslist-p2->p)+9+10+10) );
214408214578
}
214409214579
else if( i2.iRowid!=i1.iRowid ){
214410214580
/* Copy entry from i2 */
214411214581
fts5MergeAppendDocid(&out, iLastRowid, i2.iRowid);
214412214582
fts5BufferSafeAppendBlob(&out, i2.aPoslist, i2.nPoslist+i2.nSize);
214413214583
fts5DoclistIterNext(&i2);
214414214584
if( i2.aPoslist==0 ) break;
214585
+ assert( out.n<=((i1.aPoslist-p1->p) + (i2.aPoslist-p2->p)+9+10+10) );
214415214586
}
214416214587
else{
214417214588
/* Merge the two position lists. */
214418214589
i64 iPos1 = 0;
214419214590
i64 iPos2 = 0;
@@ -214433,20 +214604,19 @@
214433214604
sqlite3Fts5BufferSize(&p->rc, &tmp, i1.nPoslist + i2.nPoslist);
214434214605
if( p->rc ) break;
214435214606
214436214607
sqlite3Fts5PoslistNext64(a1, i1.nPoslist, &iOff1, &iPos1);
214437214608
sqlite3Fts5PoslistNext64(a2, i2.nPoslist, &iOff2, &iPos2);
214438
- assert( iPos1>=0 && iPos2>=0 );
214609
+ assert_nc( iPos1>=0 && iPos2>=0 );
214439214610
214440214611
if( iPos1<iPos2 ){
214441214612
sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos1);
214442214613
sqlite3Fts5PoslistNext64(a1, i1.nPoslist, &iOff1, &iPos1);
214443214614
}else{
214444214615
sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos2);
214445214616
sqlite3Fts5PoslistNext64(a2, i2.nPoslist, &iOff2, &iPos2);
214446214617
}
214447
-
214448214618
if( iPos1>=0 && iPos2>=0 ){
214449214619
while( 1 ){
214450214620
if( iPos1<iPos2 ){
214451214621
if( iPos1!=iPrev ){
214452214622
sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos1);
@@ -214467,11 +214637,11 @@
214467214637
sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos1);
214468214638
}
214469214639
aCopy = &a1[iOff1];
214470214640
nCopy = i1.nPoslist - iOff1;
214471214641
}else{
214472
- assert( iPos2>=0 && iPos2!=iPrev );
214642
+ assert_nc( iPos2>=0 && iPos2!=iPrev );
214473214643
sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos2);
214474214644
aCopy = &a2[iOff2];
214475214645
nCopy = i2.nPoslist - iOff2;
214476214646
}
214477214647
if( nCopy>0 ){
@@ -214481,12 +214651,13 @@
214481214651
/* WRITEPOSLISTSIZE */
214482214652
fts5BufferSafeAppendVarint(&out, tmp.n * 2);
214483214653
fts5BufferSafeAppendBlob(&out, tmp.p, tmp.n);
214484214654
fts5DoclistIterNext(&i1);
214485214655
fts5DoclistIterNext(&i2);
214486
- assert( out.n<=(p1->n+p2->n+9) );
214656
+ assert_nc( out.n<=(p1->n+p2->n+9) );
214487214657
if( i1.aPoslist==0 || i2.aPoslist==0 ) break;
214658
+ assert( out.n<=((i1.aPoslist-p1->p) + (i2.aPoslist-p2->p)+9+10+10) );
214488214659
}
214489214660
}
214490214661
214491214662
if( i1.aPoslist ){
214492214663
fts5MergeAppendDocid(&out, iLastRowid, i1.iRowid);
@@ -214494,11 +214665,11 @@
214494214665
}
214495214666
else if( i2.aPoslist ){
214496214667
fts5MergeAppendDocid(&out, iLastRowid, i2.iRowid);
214497214668
fts5BufferSafeAppendBlob(&out, i2.aPoslist, i2.aEof - i2.aPoslist);
214498214669
}
214499
- assert( out.n<=(p1->n+p2->n+9) );
214670
+ assert_nc( out.n<=(p1->n+p2->n+9) );
214500214671
214501214672
fts5BufferSet(&p->rc, p1, out.n, out.p);
214502214673
fts5BufferFree(&tmp);
214503214674
fts5BufferFree(&out);
214504214675
}
@@ -218660,11 +218831,11 @@
218660218831
int nArg, /* Number of args */
218661218832
sqlite3_value **apUnused /* Function arguments */
218662218833
){
218663218834
assert( nArg==0 );
218664218835
UNUSED_PARAM2(nArg, apUnused);
218665
- sqlite3_result_text(pCtx, "fts5: 2019-05-10 17:50:33 2846bc0429c0956473bfe99dde135f2c206720f0be4c2800118b280e446ce325", -1, SQLITE_TRANSIENT);
218836
+ sqlite3_result_text(pCtx, "fts5: 2019-05-23 16:38:12 d2fe370cafa9b11f6c3eb4e1c3be48d9d2610b9d2f9d9ebf9e50267f9079dfc0", -1, SQLITE_TRANSIENT);
218666218837
}
218667218838
218668218839
/*
218669218840
** Return true if zName is the extension on one of the shadow tables used
218670218841
** by this module.
@@ -222919,12 +223090,14 @@
222919223090
}
222920223091
}
222921223092
}
222922223093
222923223094
if( rc==SQLITE_OK && pCsr->bEof==0 && pTab->eType==FTS5_VOCAB_COL ){
222924
- while( pCsr->aDoc[pCsr->iCol]==0 ) pCsr->iCol++;
222925
- assert( pCsr->iCol<pCsr->pFts5->pConfig->nCol );
223095
+ for(/* noop */; pCsr->iCol<nCol && pCsr->aDoc[pCsr->iCol]==0; pCsr->iCol++);
223096
+ if( pCsr->iCol==nCol ){
223097
+ rc = FTS5_CORRUPT;
223098
+ }
222926223099
}
222927223100
return rc;
222928223101
}
222929223102
222930223103
/*
@@ -223424,12 +223597,12 @@
223424223597
}
223425223598
#endif /* SQLITE_CORE */
223426223599
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
223427223600
223428223601
/************** End of stmt.c ************************************************/
223429
-#if __LINE__!=223429
223602
+#if __LINE__!=223602
223430223603
#undef SQLITE_SOURCE_ID
223431
-#define SQLITE_SOURCE_ID "2019-05-10 17:54:58 956ca2a452aa3707bca553007a7ef221af3d4f6b0af747d17070926e000falt2"
223604
+#define SQLITE_SOURCE_ID "2019-05-23 16:38:12 d2fe370cafa9b11f6c3eb4e1c3be48d9d2610b9d2f9d9ebf9e50267f9079alt2"
223432223605
#endif
223433223606
/* Return the source-id for this library */
223434223607
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
223435223608
/************************** End of sqlite3.c ******************************/
223436223609
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1167,11 +1167,11 @@
1167 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1168 ** [sqlite_version()] and [sqlite_source_id()].
1169 */
1170 #define SQLITE_VERSION "3.29.0"
1171 #define SQLITE_VERSION_NUMBER 3029000
1172 #define SQLITE_SOURCE_ID "2019-05-10 17:54:58 956ca2a452aa3707bca553007a7ef221af3d4f6b0af747d17070926e000f2362"
1173
1174 /*
1175 ** CAPI3REF: Run-Time Library Version Numbers
1176 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1177 **
@@ -3240,10 +3240,11 @@
3240 ** flag is enabled, language features that allow ordinary SQL to
3241 ** deliberately corrupt the database file are disabled. The disabled
3242 ** features include but are not limited to the following:
3243 ** <ul>
3244 ** <li> The [PRAGMA writable_schema=ON] statement.
 
3245 ** <li> Writes to the [sqlite_dbpage] virtual table.
3246 ** <li> Direct writes to [shadow tables].
3247 ** </ul>
3248 ** </dd>
3249 **
@@ -13956,16 +13957,17 @@
13956 ** using C-preprocessor macros. If that is unsuccessful, or if
13957 ** -DSQLITE_BYTEORDER=0 is set, then byte-order is determined
13958 ** at run-time.
13959 */
13960 #ifndef SQLITE_BYTEORDER
13961 # if defined(i386) || defined(__i386__) || defined(_M_IX86) || \
13962 defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \
13963 defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \
13964 defined(__arm__) || defined(_M_ARM64)
13965 # define SQLITE_BYTEORDER 1234
13966 # elif defined(sparc) || defined(__ppc__)
 
13967 # define SQLITE_BYTEORDER 4321
13968 # else
13969 # define SQLITE_BYTEORDER 0
13970 # endif
13971 #endif
@@ -17180,10 +17182,11 @@
17180 unsigned isResized:1; /* True if resizeIndexObject() has been called */
17181 unsigned isCovering:1; /* True if this is a covering index */
17182 unsigned noSkipScan:1; /* Do not try to use skip-scan if true */
17183 unsigned hasStat1:1; /* aiRowLogEst values come from sqlite_stat1 */
17184 unsigned bNoQuery:1; /* Do not use this index to optimize queries */
 
17185 #ifdef SQLITE_ENABLE_STAT3_OR_STAT4
17186 int nSample; /* Number of elements in aSample[] */
17187 int nSampleCol; /* Size of IndexSample.anEq[] and so on */
17188 tRowcnt *aAvgEq; /* Average nEq values for keys not in aSample */
17189 IndexSample *aSample; /* Samples of the left-most key */
@@ -17407,11 +17410,11 @@
17407 ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
17408 ** TK_VARIABLE: variable number (always >= 1).
17409 ** TK_SELECT_COLUMN: column of the result vector */
17410 i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
17411 i16 iRightJoinTable; /* If EP_FromJoin, the right table of the join */
17412 u8 op2; /* TK_REGISTER: original value of Expr.op
17413 ** TK_COLUMN: the value of p5 for OP_Column
17414 ** TK_AGG_FUNCTION: nesting depth */
17415 AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
17416 union {
17417 Table *pTab; /* TK_COLUMN: Table containing column. Can be NULL
@@ -17692,11 +17695,11 @@
17692 Upsert *pUpsert; /* ON CONFLICT clause information from an upsert */
17693 } uNC;
17694 NameContext *pNext; /* Next outer name context. NULL for outermost */
17695 int nRef; /* Number of names resolved by this context */
17696 int nErr; /* Number of errors encountered while resolving names */
17697 u16 ncFlags; /* Zero or more NC_* flags defined below */
17698 Select *pWinSelect; /* SELECT statement for any window functions */
17699 };
17700
17701 /*
17702 ** Allowed values for the NameContext, ncFlags field.
@@ -17719,10 +17722,12 @@
17719 #define NC_UUpsert 0x0200 /* True if uNC.pUpsert is used */
17720 #define NC_MinMaxAgg 0x1000 /* min/max aggregates seen. See note above */
17721 #define NC_Complex 0x2000 /* True if a function or subquery seen */
17722 #define NC_AllowWin 0x4000 /* Window functions are allowed here */
17723 #define NC_HasWin 0x8000 /* One or more window functions seen */
 
 
17724
17725 /*
17726 ** An instance of the following object describes a single ON CONFLICT
17727 ** clause in an upsert.
17728 **
@@ -68718,10 +68723,11 @@
68718 ** up to two varints past the end of the buffer. An extra 18
68719 ** bytes of padding is allocated at the end of the buffer in
68720 ** case this happens. */
68721 void *pCellKey;
68722 u8 * const pCellBody = pCell - pPage->childPtrSize;
 
68723 pPage->xParseCell(pPage, pCellBody, &pCur->info);
68724 nCell = (int)pCur->info.nKey;
68725 testcase( nCell<0 ); /* True if key size is 2^32 or more */
68726 testcase( nCell==0 ); /* Invalid key size: 0x80 0x80 0x00 */
68727 testcase( nCell==1 ); /* Invalid key size: 0x80 0x80 0x01 */
@@ -68728,17 +68734,18 @@
68728 testcase( nCell==2 ); /* Minimum legal index key size */
68729 if( nCell<2 || nCell/pCur->pBt->usableSize>pCur->pBt->nPage ){
68730 rc = SQLITE_CORRUPT_PAGE(pPage);
68731 goto moveto_finish;
68732 }
68733 pCellKey = sqlite3Malloc( nCell+18 );
68734 if( pCellKey==0 ){
68735 rc = SQLITE_NOMEM_BKPT;
68736 goto moveto_finish;
68737 }
68738 pCur->ix = (u16)idx;
68739 rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 0);
 
68740 pCur->curFlags &= ~BTCF_ValidOvfl;
68741 if( rc ){
68742 sqlite3_free(pCellKey);
68743 goto moveto_finish;
68744 }
@@ -74560,11 +74567,14 @@
74560 zBuf[acc.nChar] = 0; /* Fast version of sqlite3StrAccumFinish(&acc) */
74561 }
74562
74563 #ifdef SQLITE_DEBUG
74564 /*
74565 ** Check that string value of pMem agrees with its integer or real value.
 
 
 
74566 **
74567 ** A single int or real value always converts to the same strings. But
74568 ** many different strings can be converted into the same int or real.
74569 ** If a table contains a numeric value and an index is based on the
74570 ** corresponding string value, then it is important that the string be
@@ -74578,15 +74588,26 @@
74578 ** been derived from the numeric and not the other way around. It returns
74579 ** true if everything is ok and false if there is a problem.
74580 **
74581 ** This routine is for use inside of assert() statements only.
74582 */
74583 SQLITE_PRIVATE int sqlite3VdbeMemConsistentDualRep(Mem *p){
74584 char zBuf[100];
74585 char *z;
74586 int i, j, incr;
74587 if( (p->flags & MEM_Str)==0 ) return 1;
 
 
 
 
 
 
 
 
 
 
 
74588 if( (p->flags & (MEM_Int|MEM_Real|MEM_IntReal))==0 ) return 1;
74589 vdbeMemRenderNum(sizeof(zBuf), zBuf, p);
74590 z = p->z;
74591 i = j = 0;
74592 incr = 1;
@@ -75663,11 +75684,11 @@
75663 assert( 0==(1&SQLITE_PTR_TO_INT(pVal->z)) );
75664 }
75665 assert(pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) || pVal->db==0
75666 || pVal->db->mallocFailed );
75667 if( pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) ){
75668 assert( sqlite3VdbeMemConsistentDualRep(pVal) );
75669 return pVal->z;
75670 }else{
75671 return 0;
75672 }
75673 }
@@ -75686,11 +75707,11 @@
75686 if( !pVal ) return 0;
75687 assert( pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex) );
75688 assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
75689 assert( !sqlite3VdbeMemIsRowSet(pVal) );
75690 if( (pVal->flags&(MEM_Str|MEM_Term))==(MEM_Str|MEM_Term) && pVal->enc==enc ){
75691 assert( sqlite3VdbeMemConsistentDualRep(pVal) );
75692 return pVal->z;
75693 }
75694 if( pVal->flags&MEM_Null ){
75695 return 0;
75696 }
@@ -76991,10 +77012,11 @@
76991 */
76992 SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
76993 int hasAbort = 0;
76994 int hasFkCounter = 0;
76995 int hasCreateTable = 0;
 
76996 int hasInitCoroutine = 0;
76997 Op *pOp;
76998 VdbeOpIter sIter;
76999 memset(&sIter, 0, sizeof(sIter));
77000 sIter.v = v;
@@ -77009,10 +77031,18 @@
77009 ){
77010 hasAbort = 1;
77011 break;
77012 }
77013 if( opcode==OP_CreateBtree && pOp->p3==BTREE_INTKEY ) hasCreateTable = 1;
 
 
 
 
 
 
 
 
77014 if( opcode==OP_InitCoroutine ) hasInitCoroutine = 1;
77015 #ifndef SQLITE_OMIT_FOREIGN_KEY
77016 if( opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1 ){
77017 hasFkCounter = 1;
77018 }
@@ -77024,11 +77054,12 @@
77024 ** If malloc failed, then the while() loop above may not have iterated
77025 ** through all opcodes and hasAbort may be set incorrectly. Return
77026 ** true for this case to prevent the assert() in the callers frame
77027 ** from failing. */
77028 return ( v->db->mallocFailed || hasAbort==mayAbort || hasFkCounter
77029 || (hasCreateTable && hasInitCoroutine) );
 
77030 }
77031 #endif /* SQLITE_DEBUG - the sqlite3AssertMayAbort() function */
77032
77033 #ifdef SQLITE_DEBUG
77034 /*
@@ -85214,11 +85245,11 @@
85214 }
85215 nByte = pIn1->n + pIn2->n;
85216 if( nByte>db->aLimit[SQLITE_LIMIT_LENGTH] ){
85217 goto too_big;
85218 }
85219 if( sqlite3VdbeMemGrow(pOut, (int)nByte+2, pOut==pIn2) ){
85220 goto no_mem;
85221 }
85222 MemSetTypeFlag(pOut, MEM_Str);
85223 if( pOut!=pIn2 ){
85224 memcpy(pOut->z, pIn2->z, pIn2->n);
@@ -85228,10 +85259,11 @@
85228 memcpy(&pOut->z[pIn2->n], pIn1->z, pIn1->n);
85229 assert( (pIn1->flags & MEM_Dyn) == (flags1 & MEM_Dyn) );
85230 pIn1->flags = flags1;
85231 pOut->z[nByte]=0;
85232 pOut->z[nByte+1] = 0;
 
85233 pOut->flags |= MEM_Term;
85234 pOut->n = (int)nByte;
85235 pOut->enc = encoding;
85236 UPDATE_MAX_BLOBSIZE(pOut);
85237 break;
@@ -86596,10 +86628,14 @@
86596 assert( pData0<=pLast );
86597 if( zAffinity ){
86598 pRec = pData0;
86599 do{
86600 applyAffinity(pRec, zAffinity[0], encoding);
 
 
 
 
86601 REGISTER_TRACE((int)(pRec-aMem), pRec);
86602 zAffinity++;
86603 pRec++;
86604 assert( zAffinity[0]==0 || pRec<=pLast );
86605 }while( zAffinity[0] );
@@ -87714,10 +87750,12 @@
87714 pC->nullRow = 0;
87715 #ifdef SQLITE_DEBUG
87716 pC->seekOp = pOp->opcode;
87717 #endif
87718
 
 
87719 if( pC->isTable ){
87720 /* The BTREE_SEEK_EQ flag is only set on index cursors */
87721 assert( sqlite3BtreeCursorHasHint(pC->uc.pCursor, BTREE_SEEK_EQ)==0
87722 || CORRUPT_DB );
87723
@@ -87818,12 +87856,10 @@
87818 if( eqOnly && r.eqSeen==0 ){
87819 assert( res!=0 );
87820 goto seek_not_found;
87821 }
87822 }
87823 pC->deferredMoveto = 0;
87824 pC->cacheStatus = CACHE_STALE;
87825 #ifdef SQLITE_TEST
87826 sqlite3_search_count++;
87827 #endif
87828 if( oc>=OP_SeekGE ){ assert( oc==OP_SeekGE || oc==OP_SeekGT );
87829 if( res<0 || (res==0 && oc==OP_SeekGT) ){
@@ -88496,11 +88532,11 @@
88496 if( pOp->p4type==P4_TABLE && HasRowid(pOp->p4.pTab) && pOp->p5==0 ){
88497 /* If p5 is zero, the seek operation that positioned the cursor prior to
88498 ** OP_Delete will have also set the pC->movetoTarget field to the rowid of
88499 ** the row that is being deleted */
88500 i64 iKey = sqlite3BtreeIntegerKey(pC->uc.pCursor);
88501 assert( pC->movetoTarget==iKey );
88502 }
88503 #endif
88504
88505 /* If the update-hook or pre-update-hook will be invoked, set zDb to
88506 ** the name of the db to pass as to it. Also set local pTab to a copy
@@ -95783,11 +95819,13 @@
95783 ** Because no reference was made to outer contexts, the pNC->nRef
95784 ** fields are not changed in any context.
95785 */
95786 if( cnt==0 && zTab==0 ){
95787 assert( pExpr->op==TK_ID );
95788 if( ExprHasProperty(pExpr,EP_DblQuoted) ){
 
 
95789 /* If a double-quoted identifier does not match any known column name,
95790 ** then treat it as a string.
95791 **
95792 ** This hack was added in the early days of SQLite in a misguided attempt
95793 ** to be compatible with MySQL 3.x, which used double-quotes for strings.
@@ -96961,11 +96999,11 @@
96961 */
96962 SQLITE_PRIVATE int sqlite3ResolveExprNames(
96963 NameContext *pNC, /* Namespace to resolve expressions in. */
96964 Expr *pExpr /* The expression to be analyzed. */
96965 ){
96966 u16 savedHasAgg;
96967 Walker w;
96968
96969 if( pExpr==0 ) return SQLITE_OK;
96970 savedHasAgg = pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
96971 pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
@@ -97076,10 +97114,13 @@
97076 sSrc.a[0].iCursor = -1;
97077 }
97078 sNC.pParse = pParse;
97079 sNC.pSrcList = &sSrc;
97080 sNC.ncFlags = type;
 
 
 
97081 if( (rc = sqlite3ResolveExprNames(&sNC, pExpr))!=SQLITE_OK ) return rc;
97082 if( pList ) rc = sqlite3ResolveExprListNames(&sNC, pList);
97083 return rc;
97084 }
97085
@@ -99893,10 +99934,11 @@
99893 ** this code only executes once. Because for a non-constant
99894 ** expression we need to rerun this code each time.
99895 */
99896 if( addrOnce && !sqlite3ExprIsConstant(pE2) ){
99897 sqlite3VdbeChangeToNoop(v, addrOnce);
 
99898 addrOnce = 0;
99899 }
99900
99901 /* Evaluate the expression and insert it into the temp table */
99902 r3 = sqlite3ExprCodeTarget(pParse, pE2, r1);
@@ -101946,10 +101988,11 @@
101946 if( pA->op!=TK_STRING
101947 && pA->op!=TK_TRUEFALSE
101948 && (combinedFlags & EP_Reduced)==0
101949 ){
101950 if( pA->iColumn!=pB->iColumn ) return 2;
 
101951 if( pA->iTable!=pB->iTable
101952 && (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
101953 }
101954 }
101955 return 0;
@@ -101992,10 +102035,80 @@
101992 return sqlite3ExprCompare(0,
101993 sqlite3ExprSkipCollate(pA),
101994 sqlite3ExprSkipCollate(pB),
101995 iTab);
101996 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101997
101998 /*
101999 ** Return true if we can prove the pE2 will always be true if pE1 is
102000 ** true. Return false if we cannot complete the proof or if pE2 might
102001 ** be false. Examples:
@@ -102029,17 +102142,13 @@
102029 || sqlite3ExprImpliesExpr(pParse, pE1, pE2->pRight, iTab) )
102030 ){
102031 return 1;
102032 }
102033 if( pE2->op==TK_NOTNULL
102034 && pE1->op!=TK_ISNULL
102035 && pE1->op!=TK_IS
102036 && pE1->op!=TK_OR
102037 ){
102038 Expr *pX = sqlite3ExprSkipCollate(pE1->pLeft);
102039 testcase( pX!=pE1->pLeft );
102040 if( sqlite3ExprCompare(pParse, pX, pE2->pLeft, iTab)==0 ) return 1;
102041 }
102042 return 0;
102043 }
102044
102045 /*
@@ -108979,10 +109088,14 @@
108979 for(i=0, j=pIdx->nKeyCol; i<nPk; i++){
108980 if( !isDupColumn(pIdx, pIdx->nKeyCol, pPk, i) ){
108981 testcase( hasColumn(pIdx->aiColumn, pIdx->nKeyCol, pPk->aiColumn[i]) );
108982 pIdx->aiColumn[j] = pPk->aiColumn[i];
108983 pIdx->azColl[j] = pPk->azColl[i];
 
 
 
 
108984 j++;
108985 }
108986 }
108987 assert( pIdx->nColumn>=pIdx->nKeyCol+n );
108988 assert( pIdx->nColumn>=j );
@@ -110097,14 +110210,31 @@
110097 sqlite3VdbeAddOp4Int(v, OP_SorterCompare, iSorter, j2, regRecord,
110098 pIndex->nKeyCol); VdbeCoverage(v);
110099 sqlite3UniqueConstraint(pParse, OE_Abort, pIndex);
110100 sqlite3VdbeJumpHere(v, j2);
110101 }else{
 
 
 
 
 
 
 
 
110102 addr2 = sqlite3VdbeCurrentAddr(v);
110103 }
110104 sqlite3VdbeAddOp3(v, OP_SorterData, iSorter, regRecord, iIdx);
110105 sqlite3VdbeAddOp1(v, OP_SeekEnd, iIdx);
 
 
 
 
 
 
 
 
 
110106 sqlite3VdbeAddOp2(v, OP_IdxInsert, iIdx, regRecord);
110107 sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
110108 sqlite3ReleaseTempReg(pParse, regRecord);
110109 sqlite3VdbeAddOp2(v, OP_SorterNext, iSorter, addr2); VdbeCoverage(v);
110110 sqlite3VdbeJumpHere(v, addr1);
@@ -120850,14 +120980,13 @@
120850 #define PragTyp_TEMP_STORE_DIRECTORY 36
120851 #define PragTyp_THREADS 37
120852 #define PragTyp_WAL_AUTOCHECKPOINT 38
120853 #define PragTyp_WAL_CHECKPOINT 39
120854 #define PragTyp_ACTIVATE_EXTENSIONS 40
120855 #define PragTyp_HEXKEY 41
120856 #define PragTyp_KEY 42
120857 #define PragTyp_LOCK_STATUS 43
120858 #define PragTyp_STATS 44
120859
120860 /* Property flags associated with various pragma. */
120861 #define PragFlg_NeedSchema 0x01 /* Force schema load before running */
120862 #define PragFlg_NoColumns 0x02 /* OP_ResultRow called with zero columns */
120863 #define PragFlg_NoColumns1 0x04 /* zero columns if RHS argument is present */
@@ -121126,16 +121255,16 @@
121126 /* iArg: */ 0 },
121127 #endif
121128 #endif
121129 #if defined(SQLITE_HAS_CODEC)
121130 {/* zName: */ "hexkey",
121131 /* ePragTyp: */ PragTyp_HEXKEY,
121132 /* ePragFlg: */ 0,
121133 /* ColNames: */ 0, 0,
121134 /* iArg: */ 2 },
121135 {/* zName: */ "hexrekey",
121136 /* ePragTyp: */ PragTyp_HEXKEY,
121137 /* ePragFlg: */ 0,
121138 /* ColNames: */ 0, 0,
121139 /* iArg: */ 3 },
121140 #endif
121141 #if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
@@ -122091,10 +122220,15 @@
122091 }
122092 if( !zMode ){
122093 /* If the "=MODE" part does not match any known journal mode,
122094 ** then do a query */
122095 eMode = PAGER_JOURNALMODE_QUERY;
 
 
 
 
 
122096 }
122097 }
122098 if( eMode==PAGER_JOURNALMODE_QUERY && pId2->n==0 ){
122099 /* Convert "PRAGMA journal_mode" into "PRAGMA main.journal_mode" */
122100 iDb = 0;
@@ -123573,32 +123707,34 @@
123573 ** textkey 4
123574 ** textrekey 5
123575 */
123576 case PragTyp_KEY: {
123577 if( zRight ){
123578 int n = pPragma->iArg<4 ? sqlite3Strlen30(zRight) : -1;
123579 if( (pPragma->iArg & 1)==0 ){
123580 sqlite3_key_v2(db, zDb, zRight, n);
123581 }else{
123582 sqlite3_rekey_v2(db, zDb, zRight, n);
123583 }
123584 }
123585 break;
123586 }
123587 case PragTyp_HEXKEY: {
123588 if( zRight ){
123589 u8 iByte;
123590 int i;
123591 char zKey[40];
123592 for(i=0, iByte=0; i<sizeof(zKey)*2 && sqlite3Isxdigit(zRight[i]); i++){
123593 iByte = (iByte<<4) + sqlite3HexToInt(zRight[i]);
123594 if( (i&1)!=0 ) zKey[i/2] = iByte;
123595 }
123596 if( (pPragma->iArg & 1)==0 ){
123597 sqlite3_key_v2(db, zDb, zKey, i/2);
123598 }else{
123599 sqlite3_rekey_v2(db, zDb, zKey, i/2);
 
 
123600 }
123601 }
123602 break;
123603 }
123604 #endif
@@ -129723,10 +129859,14 @@
129723 }
129724 assert( p->pSrc!=0 );
129725 if( (selFlags & SF_Expanded)!=0 ){
129726 return WRC_Prune;
129727 }
 
 
 
 
129728 pTabList = p->pSrc;
129729 pEList = p->pEList;
129730 sqlite3WithPush(pParse, p->pWith, 0);
129731
129732 /* Make sure cursor numbers have been assigned to all entries in
@@ -129772,16 +129912,19 @@
129772 return WRC_Abort;
129773 }
129774 #if !defined(SQLITE_OMIT_VIEW) || !defined (SQLITE_OMIT_VIRTUALTABLE)
129775 if( IsVirtual(pTab) || pTab->pSelect ){
129776 i16 nCol;
 
129777 if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
129778 assert( pFrom->pSelect==0 );
129779 pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
129780 nCol = pTab->nCol;
129781 pTab->nCol = -1;
 
129782 sqlite3WalkSelect(pWalker, pFrom->pSelect);
 
129783 pTab->nCol = nCol;
129784 }
129785 #endif
129786 }
129787
@@ -130027,10 +130170,11 @@
130027 w.xSelectCallback2 = 0;
130028 sqlite3WalkSelect(&w, pSelect);
130029 }
130030 w.xSelectCallback = selectExpander;
130031 w.xSelectCallback2 = selectPopWith;
 
130032 sqlite3WalkSelect(&w, pSelect);
130033 }
130034
130035
130036 #ifndef SQLITE_OMIT_SUBQUERY
@@ -130353,14 +130497,16 @@
130353 for(pItem = pTabList->a; pItem<pThis; pItem++){
130354 Select *pS1;
130355 if( pItem->pSelect==0 ) continue;
130356 if( pItem->fg.viaCoroutine ) continue;
130357 if( pItem->zName==0 ) continue;
130358 if( sqlite3_stricmp(pItem->zDatabase, pThis->zDatabase)!=0 ) continue;
 
 
130359 if( sqlite3_stricmp(pItem->zName, pThis->zName)!=0 ) continue;
130360 pS1 = pItem->pSelect;
130361 if( pThis->pSelect->selId!=pS1->selId ){
130362 /* The query flattener left two different CTE tables with identical
130363 ** names in the same FROM clause. */
130364 continue;
130365 }
130366 if( sqlite3ExprCompare(0, pThis->pSelect->pWhere, pS1->pWhere, -1)
@@ -130388,11 +130534,12 @@
130388 ** The transformation only works if all of the following are true:
130389 **
130390 ** * The subquery is a UNION ALL of two or more terms
130391 ** * The subquery does not have a LIMIT clause
130392 ** * There is no WHERE or GROUP BY or HAVING clauses on the subqueries
130393 ** * The outer query is a simple count(*)
 
130394 **
130395 ** Return TRUE if the optimization is undertaken.
130396 */
130397 static int countOfViewOptimization(Parse *pParse, Select *p){
130398 Select *pSub, *pPrior;
@@ -130399,10 +130546,12 @@
130399 Expr *pExpr;
130400 Expr *pCount;
130401 sqlite3 *db;
130402 if( (p->selFlags & SF_Aggregate)==0 ) return 0; /* This is an aggregate */
130403 if( p->pEList->nExpr!=1 ) return 0; /* Single result column */
 
 
130404 pExpr = p->pEList->a[0].pExpr;
130405 if( pExpr->op!=TK_AGG_FUNCTION ) return 0; /* Result is an aggregate */
130406 if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
130407 if( pExpr->x.pList!=0 ) return 0; /* Must be count(*) */
130408 if( p->pSrc->nSrc!=1 ) return 0; /* One table in FROM */
@@ -148650,32 +148799,32 @@
148650 #ifndef INTERFACE
148651 # define INTERFACE 1
148652 #endif
148653 /************* Begin control #defines *****************************************/
148654 #define YYCODETYPE unsigned short int
148655 #define YYNOCODE 301
148656 #define YYACTIONTYPE unsigned short int
148657 #define YYWILDCARD 95
148658 #define sqlite3ParserTOKENTYPE Token
148659 typedef union {
148660 int yyinit;
148661 sqlite3ParserTOKENTYPE yy0;
148662 With* yy59;
148663 IdList* yy62;
148664 struct TrigEvent yy90;
148665 Upsert* yy136;
148666 struct FrameBound yy201;
148667 u8 yy238;
148668 const char* yy294;
148669 Window* yy295;
148670 struct {int value; int mask;} yy355;
148671 ExprList* yy434;
148672 TriggerStep* yy455;
148673 Select* yy457;
148674 SrcList* yy483;
148675 int yy494;
148676 Expr* yy524;
148677 } YYMINORTYPE;
148678 #ifndef YYSTACKDEPTH
148679 #define YYSTACKDEPTH 100
148680 #endif
148681 #define sqlite3ParserARG_SDECL
@@ -148687,21 +148836,21 @@
148687 #define sqlite3ParserCTX_PDECL ,Parse *pParse
148688 #define sqlite3ParserCTX_PARAM ,pParse
148689 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
148690 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
148691 #define YYFALLBACK 1
148692 #define YYNSTATE 541
148693 #define YYNRULE 375
148694 #define YYNTOKEN 176
148695 #define YY_MAX_SHIFT 540
148696 #define YY_MIN_SHIFTREDUCE 784
148697 #define YY_MAX_SHIFTREDUCE 1158
148698 #define YY_ERROR_ACTION 1159
148699 #define YY_ACCEPT_ACTION 1160
148700 #define YY_NO_ACTION 1161
148701 #define YY_MIN_REDUCE 1162
148702 #define YY_MAX_REDUCE 1536
148703 /************* End control #defines *******************************************/
148704 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
148705
148706 /* Define the yytestcase() macro to be a no-op if is not already defined
148707 ** otherwise.
@@ -148766,605 +148915,603 @@
148766 ** yy_default[] Default action for each state.
148767 **
148768 *********** Begin parsing tables **********************************************/
148769 #define YY_ACTTAB_COUNT (2142)
148770 static const YYACTIONTYPE yy_action[] = {
148771 /* 0 */ 535, 1323, 112, 109, 209, 112, 109, 209, 1160, 1,
148772 /* 10 */ 1, 540, 2, 1164, 535, 1292, 1228, 1207, 289, 384,
148773 /* 20 */ 134, 42, 42, 1427, 382, 1228, 9, 1241, 242, 492,
148774 /* 30 */ 1291, 915, 373, 379, 1026, 70, 70, 427, 1026, 916,
148775 /* 40 */ 529, 529, 529, 119, 120, 110, 1136, 1136, 981, 984,
148776 /* 50 */ 974, 974, 117, 117, 118, 118, 118, 118, 380, 264,
148777 /* 60 */ 264, 264, 264, 1134, 264, 264, 112, 109, 209, 397,
148778 /* 70 */ 454, 517, 532, 491, 532, 1233, 1233, 532, 239, 206,
148779 /* 80 */ 493, 112, 109, 209, 464, 219, 118, 118, 118, 118,
148780 /* 90 */ 111, 393, 440, 444, 16, 16, 116, 116, 116, 116,
148781 /* 100 */ 115, 115, 114, 114, 114, 113, 415, 971, 971, 982,
148782 /* 110 */ 985, 235, 1463, 351, 1134, 419, 384, 116, 116, 116,
148783 /* 120 */ 116, 115, 115, 114, 114, 114, 113, 415, 116, 116,
148784 /* 130 */ 116, 116, 115, 115, 114, 114, 114, 113, 415, 961,
148785 /* 140 */ 119, 120, 110, 1136, 1136, 981, 984, 974, 974, 117,
148786 /* 150 */ 117, 118, 118, 118, 118, 952, 415, 941, 298, 951,
148787 /* 160 */ 941, 1480, 540, 2, 1164, 1115, 535, 1458, 160, 289,
148788 /* 170 */ 6, 134, 1504, 389, 406, 975, 338, 1024, 1241, 337,
148789 /* 180 */ 1089, 1476, 1089, 118, 118, 118, 118, 42, 42, 329,
148790 /* 190 */ 951, 951, 953, 116, 116, 116, 116, 115, 115, 114,
148791 /* 200 */ 114, 114, 113, 415, 311, 430, 299, 311, 881, 160,
148792 /* 210 */ 264, 264, 401, 384, 324, 1115, 1116, 1117, 288, 526,
148793 /* 220 */ 96, 159, 1441, 532, 141, 116, 116, 116, 116, 115,
148794 /* 230 */ 115, 114, 114, 114, 113, 415, 219, 119, 120, 110,
148795 /* 240 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148796 /* 250 */ 118, 118, 115, 115, 114, 114, 114, 113, 415, 288,
148797 /* 260 */ 526, 403, 533, 121, 870, 870, 419, 250, 267, 336,
148798 /* 270 */ 475, 331, 474, 236, 160, 319, 1084, 322, 1465, 329,
148799 /* 280 */ 350, 12, 535, 384, 502, 1115, 1084, 435, 312, 1084,
148800 /* 290 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148801 /* 300 */ 415, 535, 836, 42, 42, 138, 426, 119, 120, 110,
148802 /* 310 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148803 /* 320 */ 118, 118, 70, 70, 288, 526, 412, 411, 480, 1457,
148804 /* 330 */ 335, 79, 6, 473, 1140, 1115, 1116, 1117, 501, 1142,
148805 /* 340 */ 334, 837, 811, 1484, 512, 1164, 534, 1141, 123, 187,
148806 /* 350 */ 289, 384, 134, 448, 434, 1115, 80, 349, 498, 1241,
148807 /* 360 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148808 /* 370 */ 415, 1143, 1115, 1143, 459, 119, 120, 110, 1136, 1136,
148809 /* 380 */ 981, 984, 974, 974, 117, 117, 118, 118, 118, 118,
148810 /* 390 */ 404, 264, 264, 811, 1463, 506, 368, 1156, 535, 114,
148811 /* 400 */ 114, 114, 113, 415, 532, 1115, 1116, 1117, 231, 518,
148812 /* 410 */ 1500, 472, 469, 468, 175, 497, 422, 219, 1202, 70,
148813 /* 420 */ 70, 467, 1115, 1116, 1117, 176, 201, 200, 116, 116,
148814 /* 430 */ 116, 116, 115, 115, 114, 114, 114, 113, 415, 535,
148815 /* 440 */ 1115, 264, 264, 435, 312, 1115, 273, 419, 384, 513,
148816 /* 450 */ 1450, 1115, 326, 1084, 532, 517, 82, 1084, 167, 388,
148817 /* 460 */ 69, 69, 1115, 1084, 519, 509, 1084, 1084, 12, 1157,
148818 /* 470 */ 1084, 420, 119, 120, 110, 1136, 1136, 981, 984, 974,
148819 /* 480 */ 974, 117, 117, 118, 118, 118, 118, 258, 258, 535,
148820 /* 490 */ 1115, 1116, 1117, 1045, 535, 1115, 1116, 1117, 1323, 535,
148821 /* 500 */ 532, 1115, 1116, 1117, 296, 483, 1211, 818, 1046, 448,
148822 /* 510 */ 70, 70, 1115, 1116, 1117, 50, 50, 448, 356, 500,
148823 /* 520 */ 70, 70, 207, 1047, 32, 116, 116, 116, 116, 115,
148824 /* 530 */ 115, 114, 114, 114, 113, 415, 453, 264, 264, 1115,
148825 /* 540 */ 450, 449, 961, 508, 856, 384, 517, 5, 900, 822,
148826 /* 550 */ 532, 484, 181, 1115, 857, 516, 517, 818, 952, 507,
148827 /* 560 */ 3, 1115, 951, 1231, 1231, 482, 398, 1115, 1095, 119,
148828 /* 570 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
148829 /* 580 */ 118, 118, 118, 118, 1115, 535, 238, 1115, 1391, 1115,
148830 /* 590 */ 1116, 1117, 159, 951, 951, 953, 231, 1115, 259, 472,
148831 /* 600 */ 469, 468, 310, 1115, 1116, 1117, 13, 13, 297, 467,
148832 /* 610 */ 276, 1115, 1116, 1117, 412, 411, 1095, 1115, 1116, 1117,
148833 /* 620 */ 395, 355, 116, 116, 116, 116, 115, 115, 114, 114,
148834 /* 630 */ 114, 113, 415, 208, 1115, 1116, 1117, 1115, 1116, 1117,
148835 /* 640 */ 264, 264, 384, 337, 902, 393, 815, 1115, 1116, 1117,
148836 /* 650 */ 413, 413, 413, 532, 112, 109, 209, 309, 900, 1143,
148837 /* 660 */ 535, 1143, 535, 393, 901, 1210, 119, 120, 110, 1136,
148838 /* 670 */ 1136, 981, 984, 974, 974, 117, 117, 118, 118, 118,
148839 /* 680 */ 118, 13, 13, 13, 13, 265, 265, 535, 143, 264,
148840 /* 690 */ 264, 288, 526, 535, 1119, 400, 535, 402, 532, 510,
148841 /* 700 */ 1457, 512, 532, 6, 113, 415, 1067, 1530, 70, 70,
148842 /* 710 */ 1530, 535, 271, 535, 70, 70, 535, 13, 13, 116,
148843 /* 720 */ 116, 116, 116, 115, 115, 114, 114, 114, 113, 415,
148844 /* 730 */ 272, 277, 13, 13, 13, 13, 535, 13, 13, 384,
148845 /* 740 */ 535, 304, 425, 1100, 284, 1119, 184, 801, 185, 338,
148846 /* 750 */ 285, 514, 1532, 369, 1239, 1438, 1182, 70, 70, 425,
148847 /* 760 */ 424, 70, 70, 119, 120, 110, 1136, 1136, 981, 984,
148848 /* 770 */ 974, 974, 117, 117, 118, 118, 118, 118, 190, 1065,
148849 /* 780 */ 1067, 1531, 442, 107, 1531, 408, 264, 264, 264, 264,
148850 /* 790 */ 383, 1396, 261, 410, 95, 900, 485, 414, 421, 532,
148851 /* 800 */ 1045, 532, 301, 1133, 303, 488, 433, 1451, 1396, 1398,
148852 /* 810 */ 278, 535, 278, 520, 1435, 1046, 116, 116, 116, 116,
148853 /* 820 */ 115, 115, 114, 114, 114, 113, 415, 425, 264, 264,
148854 /* 830 */ 1047, 190, 54, 54, 535, 291, 384, 264, 264, 362,
148855 /* 840 */ 962, 532, 1004, 376, 1084, 264, 264, 1029, 1029, 456,
148856 /* 850 */ 532, 523, 270, 1065, 1084, 55, 55, 1084, 532, 442,
148857 /* 860 */ 119, 120, 110, 1136, 1136, 981, 984, 974, 974, 117,
148858 /* 870 */ 117, 118, 118, 118, 118, 535, 1396, 190, 302, 1383,
148859 /* 880 */ 208, 535, 789, 790, 791, 535, 515, 535, 1323, 371,
148860 /* 890 */ 337, 234, 233, 232, 459, 515, 15, 15, 459, 477,
148861 /* 900 */ 459, 459, 44, 44, 136, 900, 56, 56, 57, 57,
148862 /* 910 */ 1185, 390, 197, 116, 116, 116, 116, 115, 115, 114,
148863 /* 920 */ 114, 114, 113, 415, 535, 876, 535, 442, 535, 274,
148864 /* 930 */ 875, 1323, 357, 384, 353, 140, 1426, 946, 1455, 1323,
148865 /* 940 */ 1390, 6, 1240, 1236, 292, 58, 58, 59, 59, 60,
148866 /* 950 */ 60, 535, 1456, 384, 535, 6, 399, 119, 120, 110,
148867 /* 960 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148868 /* 970 */ 118, 118, 61, 61, 535, 45, 45, 119, 120, 110,
148869 /* 980 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148870 /* 990 */ 118, 118, 1477, 479, 202, 46, 46, 275, 95, 455,
148871 /* 1000 */ 535, 212, 535, 337, 535, 1454, 535, 409, 6, 242,
148872 /* 1010 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148873 /* 1020 */ 415, 48, 48, 49, 49, 62, 62, 63, 63, 535,
148874 /* 1030 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148875 /* 1040 */ 415, 535, 459, 535, 1134, 535, 1151, 535, 142, 535,
148876 /* 1050 */ 64, 64, 535, 1338, 535, 494, 535, 446, 535, 1264,
148877 /* 1060 */ 535, 1337, 14, 14, 65, 65, 125, 125, 66, 66,
148878 /* 1070 */ 51, 51, 535, 67, 67, 68, 68, 52, 52, 147,
148879 /* 1080 */ 147, 148, 148, 1453, 317, 98, 6, 535, 1245, 481,
148880 /* 1090 */ 535, 827, 535, 75, 75, 1134, 102, 481, 100, 535,
148881 /* 1100 */ 532, 535, 368, 1066, 1503, 384, 535, 845, 53, 53,
148882 /* 1110 */ 93, 71, 71, 126, 126, 295, 528, 390, 288, 526,
148883 /* 1120 */ 72, 72, 127, 127, 139, 384, 38, 128, 128, 119,
148884 /* 1130 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
148885 /* 1140 */ 118, 118, 118, 118, 535, 495, 535, 447, 535, 119,
148886 /* 1150 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
148887 /* 1160 */ 118, 118, 118, 118, 235, 124, 124, 146, 146, 145,
148888 /* 1170 */ 145, 287, 535, 1277, 535, 1157, 535, 391, 161, 263,
148889 /* 1180 */ 206, 381, 116, 116, 116, 116, 115, 115, 114, 114,
148890 /* 1190 */ 114, 113, 415, 132, 132, 131, 131, 129, 129, 535,
148891 /* 1200 */ 30, 535, 116, 116, 116, 116, 115, 115, 114, 114,
148892 /* 1210 */ 114, 113, 415, 535, 216, 1062, 1276, 535, 370, 535,
148893 /* 1220 */ 130, 130, 74, 74, 535, 915, 389, 876, 17, 437,
148894 /* 1230 */ 429, 31, 875, 916, 76, 76, 266, 101, 73, 73,
148895 /* 1240 */ 43, 43, 835, 834, 308, 47, 47, 95, 825, 943,
148896 /* 1250 */ 441, 938, 241, 241, 305, 443, 313, 384, 241, 95,
148897 /* 1260 */ 842, 843, 193, 465, 1209, 327, 237, 436, 95, 1011,
148898 /* 1270 */ 1007, 909, 873, 237, 241, 107, 1023, 384, 1023, 955,
148899 /* 1280 */ 1415, 119, 120, 110, 1136, 1136, 981, 984, 974, 974,
148900 /* 1290 */ 117, 117, 118, 118, 118, 118, 1022, 809, 1022, 825,
148901 /* 1300 */ 137, 119, 108, 110, 1136, 1136, 981, 984, 974, 974,
148902 /* 1310 */ 117, 117, 118, 118, 118, 118, 874, 1414, 451, 107,
148903 /* 1320 */ 1011, 314, 1273, 318, 218, 321, 323, 325, 1224, 1208,
148904 /* 1330 */ 955, 330, 339, 340, 116, 116, 116, 116, 115, 115,
148905 /* 1340 */ 114, 114, 114, 113, 415, 1285, 1322, 1260, 1493, 1470,
148906 /* 1350 */ 1271, 283, 521, 1328, 116, 116, 116, 116, 115, 115,
148907 /* 1360 */ 114, 114, 114, 113, 415, 1191, 1184, 1173, 1172, 1174,
148908 /* 1370 */ 522, 1487, 211, 460, 384, 256, 199, 367, 1257, 342,
148909 /* 1380 */ 195, 470, 307, 344, 11, 333, 525, 445, 1307, 1315,
148910 /* 1390 */ 375, 203, 1207, 1151, 384, 346, 1387, 188, 360, 120,
148911 /* 1400 */ 110, 1136, 1136, 981, 984, 974, 974, 117, 117, 118,
148912 /* 1410 */ 118, 118, 118, 1386, 428, 1490, 245, 300, 348, 1148,
148913 /* 1420 */ 110, 1136, 1136, 981, 984, 974, 974, 117, 117, 118,
148914 /* 1430 */ 118, 118, 118, 189, 198, 1434, 1432, 78, 81, 163,
148915 /* 1440 */ 82, 392, 439, 1392, 173, 105, 527, 35, 4, 157,
148916 /* 1450 */ 1312, 116, 116, 116, 116, 115, 115, 114, 114, 114,
148917 /* 1460 */ 113, 415, 530, 165, 93, 1304, 431, 432, 168, 463,
148918 /* 1470 */ 221, 116, 116, 116, 116, 115, 115, 114, 114, 114,
148919 /* 1480 */ 113, 415, 169, 452, 170, 416, 171, 374, 372, 438,
148920 /* 1490 */ 36, 1318, 177, 225, 1381, 87, 458, 524, 1403, 316,
148921 /* 1500 */ 257, 105, 527, 227, 4, 182, 461, 160, 320, 228,
148922 /* 1510 */ 377, 1175, 476, 229, 1227, 1226, 405, 1225, 530, 1218,
148923 /* 1520 */ 961, 378, 1199, 1198, 827, 332, 103, 103, 1197, 407,
148924 /* 1530 */ 8, 1217, 1502, 104, 487, 416, 537, 536, 281, 282,
148925 /* 1540 */ 951, 416, 490, 1268, 496, 92, 341, 243, 1269, 343,
148926 /* 1550 */ 244, 1267, 122, 524, 345, 1461, 515, 288, 526, 10,
148927 /* 1560 */ 354, 1266, 1460, 352, 504, 1250, 99, 1367, 94, 503,
148928 /* 1570 */ 499, 951, 951, 953, 954, 27, 961, 347, 1249, 194,
148929 /* 1580 */ 251, 358, 103, 103, 359, 1181, 34, 538, 1110, 104,
148930 /* 1590 */ 255, 416, 537, 536, 286, 252, 951, 254, 539, 149,
148931 /* 1600 */ 1170, 1419, 1165, 1420, 1418, 150, 1417, 135, 279, 785,
148932 /* 1610 */ 151, 417, 1195, 196, 290, 210, 386, 1194, 269, 387,
148933 /* 1620 */ 162, 1021, 133, 77, 1192, 1019, 935, 951, 951, 953,
148934 /* 1630 */ 954, 27, 1479, 1104, 418, 164, 153, 268, 217, 166,
148935 /* 1640 */ 859, 306, 366, 366, 365, 253, 363, 220, 1035, 798,
148936 /* 1650 */ 172, 939, 105, 527, 155, 4, 394, 174, 396, 156,
148937 /* 1660 */ 83, 1038, 213, 84, 294, 85, 86, 223, 222, 530,
148938 /* 1670 */ 1034, 144, 293, 18, 224, 315, 241, 1027, 1145, 178,
148939 /* 1680 */ 457, 226, 179, 37, 800, 334, 462, 230, 328, 466,
148940 /* 1690 */ 180, 471, 416, 88, 19, 20, 89, 280, 838, 158,
148941 /* 1700 */ 191, 90, 215, 478, 524, 1097, 204, 192, 987, 91,
148942 /* 1710 */ 152, 1070, 39, 154, 1071, 504, 486, 40, 489, 205,
148943 /* 1720 */ 505, 260, 105, 527, 214, 4, 908, 961, 262, 183,
148944 /* 1730 */ 240, 21, 903, 103, 103, 107, 22, 1086, 23, 530,
148945 /* 1740 */ 104, 1088, 416, 537, 536, 24, 1093, 951, 25, 1074,
148946 /* 1750 */ 1090, 1094, 7, 33, 511, 186, 26, 1002, 385, 95,
148947 /* 1760 */ 988, 986, 416, 288, 526, 990, 1044, 246, 1043, 247,
148948 /* 1770 */ 991, 28, 41, 106, 524, 956, 810, 29, 951, 951,
148949 /* 1780 */ 953, 954, 27, 531, 361, 504, 423, 248, 869, 249,
148950 /* 1790 */ 503, 1495, 364, 1105, 1161, 1494, 1161, 961, 1161, 1161,
148951 /* 1800 */ 1161, 1161, 1161, 103, 103, 1161, 1161, 1161, 1161, 1161,
148952 /* 1810 */ 104, 1161, 416, 537, 536, 1104, 418, 951, 1161, 268,
148953 /* 1820 */ 1161, 1161, 1161, 1161, 366, 366, 365, 253, 363, 1161,
148954 /* 1830 */ 1161, 798, 1161, 1161, 1161, 1161, 105, 527, 1161, 4,
148955 /* 1840 */ 1161, 1161, 1161, 1161, 213, 1161, 294, 1161, 951, 951,
148956 /* 1850 */ 953, 954, 27, 530, 293, 1161, 1161, 1161, 1161, 1161,
148957 /* 1860 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148958 /* 1870 */ 1161, 1161, 1161, 1161, 1161, 1161, 416, 1161, 1161, 1161,
148959 /* 1880 */ 1161, 1161, 1161, 1161, 215, 1161, 1161, 1161, 524, 1161,
148960 /* 1890 */ 1161, 1161, 152, 1161, 1161, 154, 105, 527, 1161, 4,
148961 /* 1900 */ 1161, 1161, 1161, 1161, 1161, 1161, 214, 1161, 1161, 1161,
148962 /* 1910 */ 1161, 961, 1161, 530, 1161, 1161, 1161, 103, 103, 880,
148963 /* 1920 */ 1161, 1161, 1161, 1161, 104, 1161, 416, 537, 536, 1161,
148964 /* 1930 */ 1161, 951, 1161, 1161, 1161, 1161, 416, 1161, 1161, 1161,
148965 /* 1940 */ 385, 1161, 1161, 1161, 1161, 288, 526, 1161, 524, 1161,
148966 /* 1950 */ 1161, 1161, 1161, 1161, 1161, 1161, 97, 527, 1161, 4,
148967 /* 1960 */ 1161, 1161, 951, 951, 953, 954, 27, 1161, 423, 1161,
148968 /* 1970 */ 1161, 961, 1161, 530, 1161, 1161, 1161, 103, 103, 1161,
148969 /* 1980 */ 1161, 1161, 1161, 1161, 104, 1161, 416, 537, 536, 1161,
148970 /* 1990 */ 1161, 951, 268, 1161, 1161, 1161, 416, 366, 366, 365,
148971 /* 2000 */ 253, 363, 1161, 1161, 798, 1161, 1161, 1161, 524, 1161,
148972 /* 2010 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 213, 1161, 294,
148973 /* 2020 */ 1161, 1161, 951, 951, 953, 954, 27, 293, 1161, 1161,
148974 /* 2030 */ 1161, 961, 1161, 1161, 1161, 1161, 1161, 103, 103, 1161,
148975 /* 2040 */ 1161, 1161, 1161, 1161, 104, 1161, 416, 537, 536, 1161,
148976 /* 2050 */ 1161, 951, 1161, 1161, 1161, 1161, 1161, 215, 1161, 1161,
148977 /* 2060 */ 1161, 1161, 1161, 1161, 1161, 152, 1161, 1161, 154, 1161,
148978 /* 2070 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 214,
148979 /* 2080 */ 1161, 1161, 951, 951, 953, 954, 27, 1161, 1161, 1161,
148980 /* 2090 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148981 /* 2100 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148982 /* 2110 */ 1161, 1161, 1161, 385, 1161, 1161, 1161, 1161, 288, 526,
148983 /* 2120 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148984 /* 2130 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
148985 /* 2140 */ 1161, 423,
148986 };
148987 static const YYCODETYPE yy_lookahead[] = {
148988 /* 0 */ 184, 184, 259, 260, 261, 259, 260, 261, 176, 177,
148989 /* 10 */ 178, 179, 180, 181, 184, 208, 212, 213, 186, 19,
148990 /* 20 */ 188, 205, 206, 280, 205, 221, 22, 195, 24, 195,
148991 /* 30 */ 208, 31, 195, 205, 29, 205, 206, 255, 33, 39,
148992 /* 40 */ 200, 201, 202, 43, 44, 45, 46, 47, 48, 49,
148993 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 205, 227,
148994 /* 60 */ 228, 227, 228, 59, 227, 228, 259, 260, 261, 252,
148995 /* 70 */ 65, 241, 240, 184, 240, 223, 224, 240, 244, 245,
148996 /* 80 */ 250, 259, 260, 261, 19, 253, 54, 55, 56, 57,
148997 /* 90 */ 58, 184, 255, 184, 205, 206, 96, 97, 98, 99,
148998 /* 100 */ 100, 101, 102, 103, 104, 105, 106, 46, 47, 48,
148999 /* 110 */ 49, 46, 296, 297, 110, 283, 19, 96, 97, 98,
149000 /* 120 */ 99, 100, 101, 102, 103, 104, 105, 106, 96, 97,
149001 /* 130 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 94,
149002 /* 140 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
149003 /* 150 */ 53, 54, 55, 56, 57, 110, 106, 73, 251, 114,
149004 /* 160 */ 73, 178, 179, 180, 181, 59, 184, 292, 81, 186,
149005 /* 170 */ 295, 188, 218, 108, 19, 114, 184, 11, 195, 184,
149006 /* 180 */ 83, 184, 85, 54, 55, 56, 57, 205, 206, 124,
149007 /* 190 */ 145, 146, 147, 96, 97, 98, 99, 100, 101, 102,
149008 /* 200 */ 103, 104, 105, 106, 120, 121, 122, 120, 102, 81,
149009 /* 210 */ 227, 228, 220, 19, 16, 109, 110, 111, 131, 132,
149010 /* 220 */ 26, 184, 184, 240, 229, 96, 97, 98, 99, 100,
149011 /* 230 */ 101, 102, 103, 104, 105, 106, 253, 43, 44, 45,
149012 /* 240 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149013 /* 250 */ 56, 57, 100, 101, 102, 103, 104, 105, 106, 131,
149014 /* 260 */ 132, 106, 127, 69, 129, 130, 283, 112, 113, 114,
149015 /* 270 */ 115, 116, 117, 118, 81, 77, 76, 79, 296, 124,
149016 /* 280 */ 298, 203, 184, 19, 84, 59, 86, 121, 122, 89,
149017 /* 290 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149018 /* 300 */ 106, 184, 35, 205, 206, 22, 113, 43, 44, 45,
149019 /* 310 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149020 /* 320 */ 56, 57, 205, 206, 131, 132, 100, 101, 291, 292,
149021 /* 330 */ 114, 67, 295, 66, 108, 109, 110, 111, 138, 113,
149022 /* 340 */ 124, 74, 59, 179, 184, 181, 184, 121, 22, 271,
149023 /* 350 */ 186, 19, 188, 184, 276, 59, 24, 184, 241, 195,
149024 /* 360 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149025 /* 370 */ 106, 145, 59, 147, 184, 43, 44, 45, 46, 47,
149026 /* 380 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
149027 /* 390 */ 123, 227, 228, 110, 296, 297, 22, 23, 184, 102,
149028 /* 400 */ 103, 104, 105, 106, 240, 109, 110, 111, 112, 195,
149029 /* 410 */ 204, 115, 116, 117, 22, 184, 226, 253, 212, 205,
149030 /* 420 */ 206, 125, 109, 110, 111, 22, 100, 101, 96, 97,
149031 /* 430 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 184,
149032 /* 440 */ 59, 227, 228, 121, 122, 59, 277, 283, 19, 289,
149033 /* 450 */ 290, 59, 23, 76, 240, 241, 143, 76, 72, 189,
149034 /* 460 */ 205, 206, 59, 86, 250, 84, 89, 86, 203, 95,
149035 /* 470 */ 89, 281, 43, 44, 45, 46, 47, 48, 49, 50,
149036 /* 480 */ 51, 52, 53, 54, 55, 56, 57, 227, 228, 184,
149037 /* 490 */ 109, 110, 111, 12, 184, 109, 110, 111, 184, 184,
149038 /* 500 */ 240, 109, 110, 111, 184, 195, 214, 59, 27, 184,
149039 /* 510 */ 205, 206, 109, 110, 111, 205, 206, 184, 263, 138,
149040 /* 520 */ 205, 206, 184, 42, 22, 96, 97, 98, 99, 100,
149041 /* 530 */ 101, 102, 103, 104, 105, 106, 266, 227, 228, 59,
149042 /* 540 */ 270, 276, 94, 66, 63, 19, 241, 22, 26, 23,
149043 /* 550 */ 240, 241, 72, 59, 73, 250, 241, 109, 110, 82,
149044 /* 560 */ 22, 59, 114, 223, 224, 250, 252, 59, 91, 43,
149045 /* 570 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
149046 /* 580 */ 54, 55, 56, 57, 59, 184, 26, 59, 268, 109,
149047 /* 590 */ 110, 111, 184, 145, 146, 147, 112, 59, 203, 115,
149048 /* 600 */ 116, 117, 277, 109, 110, 111, 205, 206, 195, 125,
149049 /* 610 */ 277, 109, 110, 111, 100, 101, 139, 109, 110, 111,
149050 /* 620 */ 219, 184, 96, 97, 98, 99, 100, 101, 102, 103,
149051 /* 630 */ 104, 105, 106, 111, 109, 110, 111, 109, 110, 111,
149052 /* 640 */ 227, 228, 19, 184, 136, 184, 23, 109, 110, 111,
149053 /* 650 */ 200, 201, 202, 240, 259, 260, 261, 195, 136, 145,
149054 /* 660 */ 184, 147, 184, 184, 136, 214, 43, 44, 45, 46,
149055 /* 670 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
149056 /* 680 */ 57, 205, 206, 205, 206, 227, 228, 184, 229, 227,
149057 /* 690 */ 228, 131, 132, 184, 59, 219, 184, 219, 240, 291,
149058 /* 700 */ 292, 184, 240, 295, 105, 106, 22, 23, 205, 206,
149059 /* 710 */ 26, 184, 251, 184, 205, 206, 184, 205, 206, 96,
149060 /* 720 */ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
149061 /* 730 */ 251, 219, 205, 206, 205, 206, 184, 205, 206, 19,
149062 /* 740 */ 184, 16, 184, 23, 241, 110, 219, 21, 219, 184,
149063 /* 750 */ 241, 219, 286, 287, 195, 184, 195, 205, 206, 201,
149064 /* 760 */ 202, 205, 206, 43, 44, 45, 46, 47, 48, 49,
149065 /* 770 */ 50, 51, 52, 53, 54, 55, 56, 57, 184, 95,
149066 /* 780 */ 22, 23, 184, 26, 26, 220, 227, 228, 227, 228,
149067 /* 790 */ 196, 184, 23, 241, 26, 26, 195, 241, 184, 240,
149068 /* 800 */ 12, 240, 77, 26, 79, 195, 80, 290, 201, 202,
149069 /* 810 */ 216, 184, 218, 195, 184, 27, 96, 97, 98, 99,
149070 /* 820 */ 100, 101, 102, 103, 104, 105, 106, 269, 227, 228,
149071 /* 830 */ 42, 184, 205, 206, 184, 184, 19, 227, 228, 192,
149072 /* 840 */ 23, 240, 116, 196, 76, 227, 228, 120, 121, 122,
149073 /* 850 */ 240, 63, 254, 95, 86, 205, 206, 89, 240, 184,
149074 /* 860 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
149075 /* 870 */ 53, 54, 55, 56, 57, 184, 269, 184, 153, 153,
149076 /* 880 */ 111, 184, 7, 8, 9, 184, 138, 184, 184, 196,
149077 /* 890 */ 184, 120, 121, 122, 184, 138, 205, 206, 184, 102,
149078 /* 900 */ 184, 184, 205, 206, 156, 136, 205, 206, 205, 206,
149079 /* 910 */ 198, 199, 135, 96, 97, 98, 99, 100, 101, 102,
149080 /* 920 */ 103, 104, 105, 106, 184, 128, 184, 184, 184, 254,
149081 /* 930 */ 133, 184, 237, 19, 239, 229, 226, 23, 292, 184,
149082 /* 940 */ 226, 295, 226, 226, 184, 205, 206, 205, 206, 205,
149083 /* 950 */ 206, 184, 292, 19, 184, 295, 252, 43, 44, 45,
149084 /* 960 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149085 /* 970 */ 56, 57, 205, 206, 184, 205, 206, 43, 44, 45,
149086 /* 980 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149087 /* 990 */ 56, 57, 157, 158, 26, 205, 206, 254, 26, 252,
149088 /* 1000 */ 184, 15, 184, 184, 184, 292, 184, 252, 295, 24,
149089 /* 1010 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149090 /* 1020 */ 106, 205, 206, 205, 206, 205, 206, 205, 206, 184,
149091 /* 1030 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149092 /* 1040 */ 106, 184, 184, 184, 59, 184, 60, 184, 229, 184,
149093 /* 1050 */ 205, 206, 184, 258, 184, 19, 184, 19, 184, 246,
149094 /* 1060 */ 184, 258, 205, 206, 205, 206, 205, 206, 205, 206,
149095 /* 1070 */ 205, 206, 184, 205, 206, 205, 206, 205, 206, 205,
149096 /* 1080 */ 206, 205, 206, 292, 226, 151, 295, 184, 228, 294,
149097 /* 1090 */ 184, 119, 184, 205, 206, 110, 150, 294, 152, 184,
149098 /* 1100 */ 240, 184, 22, 23, 23, 19, 184, 26, 205, 206,
149099 /* 1110 */ 142, 205, 206, 205, 206, 184, 198, 199, 131, 132,
149100 /* 1120 */ 205, 206, 205, 206, 22, 19, 24, 205, 206, 43,
149101 /* 1130 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
149102 /* 1140 */ 54, 55, 56, 57, 184, 109, 184, 109, 184, 43,
149103 /* 1150 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
149104 /* 1160 */ 54, 55, 56, 57, 46, 205, 206, 205, 206, 205,
149105 /* 1170 */ 206, 232, 184, 184, 184, 95, 184, 284, 285, 244,
149106 /* 1180 */ 245, 242, 96, 97, 98, 99, 100, 101, 102, 103,
149107 /* 1190 */ 104, 105, 106, 205, 206, 205, 206, 205, 206, 184,
149108 /* 1200 */ 22, 184, 96, 97, 98, 99, 100, 101, 102, 103,
149109 /* 1210 */ 104, 105, 106, 184, 24, 23, 184, 184, 26, 184,
149110 /* 1220 */ 205, 206, 205, 206, 184, 31, 108, 128, 22, 122,
149111 /* 1230 */ 184, 53, 133, 39, 205, 206, 22, 151, 205, 206,
149112 /* 1240 */ 205, 206, 113, 114, 23, 205, 206, 26, 59, 23,
149113 /* 1250 */ 23, 144, 26, 26, 184, 23, 23, 19, 26, 26,
149114 /* 1260 */ 7, 8, 24, 23, 214, 23, 26, 61, 26, 59,
149115 /* 1270 */ 23, 23, 23, 26, 26, 26, 145, 19, 147, 59,
149116 /* 1280 */ 184, 43, 44, 45, 46, 47, 48, 49, 50, 51,
149117 /* 1290 */ 52, 53, 54, 55, 56, 57, 145, 23, 147, 110,
149118 /* 1300 */ 26, 43, 44, 45, 46, 47, 48, 49, 50, 51,
149119 /* 1310 */ 52, 53, 54, 55, 56, 57, 23, 184, 184, 26,
149120 /* 1320 */ 110, 184, 184, 184, 134, 184, 184, 184, 184, 184,
149121 /* 1330 */ 110, 184, 184, 184, 96, 97, 98, 99, 100, 101,
149122 /* 1340 */ 102, 103, 104, 105, 106, 184, 184, 184, 134, 300,
149123 /* 1350 */ 184, 243, 184, 184, 96, 97, 98, 99, 100, 101,
149124 /* 1360 */ 102, 103, 104, 105, 106, 184, 184, 184, 184, 184,
149125 /* 1370 */ 224, 184, 282, 273, 19, 272, 203, 182, 243, 243,
149126 /* 1380 */ 230, 209, 278, 243, 231, 208, 265, 278, 234, 234,
149127 /* 1390 */ 234, 217, 213, 60, 19, 243, 208, 237, 233, 44,
149128 /* 1400 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
149129 /* 1410 */ 55, 56, 57, 208, 247, 187, 134, 247, 247, 38,
149130 /* 1420 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
149131 /* 1430 */ 55, 56, 57, 237, 231, 191, 191, 279, 279, 282,
149132 /* 1440 */ 143, 191, 108, 268, 22, 19, 20, 256, 22, 43,
149133 /* 1450 */ 257, 96, 97, 98, 99, 100, 101, 102, 103, 104,
149134 /* 1460 */ 105, 106, 36, 222, 142, 234, 18, 191, 225, 18,
149135 /* 1470 */ 190, 96, 97, 98, 99, 100, 101, 102, 103, 104,
149136 /* 1480 */ 105, 106, 225, 191, 225, 59, 225, 257, 234, 234,
149137 /* 1490 */ 256, 222, 222, 190, 234, 150, 62, 71, 275, 274,
149138 /* 1500 */ 191, 19, 20, 190, 22, 22, 210, 81, 191, 190,
149139 /* 1510 */ 210, 191, 108, 190, 207, 207, 64, 207, 36, 215,
149140 /* 1520 */ 94, 210, 207, 209, 119, 207, 100, 101, 207, 106,
149141 /* 1530 */ 48, 215, 207, 107, 210, 109, 110, 111, 267, 267,
149142 /* 1540 */ 114, 59, 210, 249, 137, 108, 248, 191, 249, 248,
149143 /* 1550 */ 88, 249, 141, 71, 248, 299, 138, 131, 132, 22,
149144 /* 1560 */ 191, 249, 299, 237, 82, 238, 150, 262, 140, 87,
149145 /* 1570 */ 139, 145, 146, 147, 148, 149, 94, 248, 238, 236,
149146 /* 1580 */ 25, 235, 100, 101, 234, 194, 26, 193, 13, 107,
149147 /* 1590 */ 6, 109, 110, 111, 264, 185, 114, 185, 183, 197,
149148 /* 1600 */ 183, 203, 183, 203, 203, 197, 203, 211, 211, 4,
149149 /* 1610 */ 197, 3, 203, 22, 155, 15, 288, 203, 93, 288,
149150 /* 1620 */ 285, 23, 16, 203, 203, 23, 132, 145, 146, 147,
149151 /* 1630 */ 148, 149, 0, 1, 2, 143, 123, 5, 24, 135,
149152 /* 1640 */ 20, 16, 10, 11, 12, 13, 14, 137, 1, 17,
149153 /* 1650 */ 135, 144, 19, 20, 123, 22, 61, 143, 37, 123,
149154 /* 1660 */ 53, 109, 30, 53, 32, 53, 53, 134, 34, 36,
149155 /* 1670 */ 1, 5, 40, 22, 108, 153, 26, 68, 75, 68,
149156 /* 1680 */ 41, 134, 108, 24, 20, 124, 19, 118, 23, 67,
149157 /* 1690 */ 22, 67, 59, 22, 22, 22, 22, 67, 28, 37,
149158 /* 1700 */ 23, 142, 70, 22, 71, 23, 157, 23, 23, 26,
149159 /* 1710 */ 78, 23, 22, 81, 23, 82, 24, 22, 24, 134,
149160 /* 1720 */ 87, 23, 19, 20, 92, 22, 109, 94, 23, 22,
149161 /* 1730 */ 34, 34, 136, 100, 101, 26, 34, 85, 34, 36,
149162 /* 1740 */ 107, 83, 109, 110, 111, 34, 90, 114, 34, 23,
149163 /* 1750 */ 75, 75, 44, 22, 24, 26, 34, 23, 126, 26,
149164 /* 1760 */ 23, 23, 59, 131, 132, 23, 23, 26, 23, 22,
149165 /* 1770 */ 11, 22, 22, 22, 71, 23, 23, 22, 145, 146,
149166 /* 1780 */ 147, 148, 149, 26, 23, 82, 154, 134, 128, 134,
149167 /* 1790 */ 87, 134, 15, 1, 301, 134, 301, 94, 301, 301,
149168 /* 1800 */ 301, 301, 301, 100, 101, 301, 301, 301, 301, 301,
149169 /* 1810 */ 107, 301, 109, 110, 111, 1, 2, 114, 301, 5,
149170 /* 1820 */ 301, 301, 301, 301, 10, 11, 12, 13, 14, 301,
149171 /* 1830 */ 301, 17, 301, 301, 301, 301, 19, 20, 301, 22,
149172 /* 1840 */ 301, 301, 301, 301, 30, 301, 32, 301, 145, 146,
149173 /* 1850 */ 147, 148, 149, 36, 40, 301, 301, 301, 301, 301,
149174 /* 1860 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149175 /* 1870 */ 301, 301, 301, 301, 301, 301, 59, 301, 301, 301,
149176 /* 1880 */ 301, 301, 301, 301, 70, 301, 301, 301, 71, 301,
149177 /* 1890 */ 301, 301, 78, 301, 301, 81, 19, 20, 301, 22,
149178 /* 1900 */ 301, 301, 301, 301, 301, 301, 92, 301, 301, 301,
149179 /* 1910 */ 301, 94, 301, 36, 301, 301, 301, 100, 101, 102,
149180 /* 1920 */ 301, 301, 301, 301, 107, 301, 109, 110, 111, 301,
149181 /* 1930 */ 301, 114, 301, 301, 301, 301, 59, 301, 301, 301,
149182 /* 1940 */ 126, 301, 301, 301, 301, 131, 132, 301, 71, 301,
149183 /* 1950 */ 301, 301, 301, 301, 301, 301, 19, 20, 301, 22,
149184 /* 1960 */ 301, 301, 145, 146, 147, 148, 149, 301, 154, 301,
149185 /* 1970 */ 301, 94, 301, 36, 301, 301, 301, 100, 101, 301,
149186 /* 1980 */ 301, 301, 301, 301, 107, 301, 109, 110, 111, 301,
149187 /* 1990 */ 301, 114, 5, 301, 301, 301, 59, 10, 11, 12,
149188 /* 2000 */ 13, 14, 301, 301, 17, 301, 301, 301, 71, 301,
149189 /* 2010 */ 301, 301, 301, 301, 301, 301, 301, 30, 301, 32,
149190 /* 2020 */ 301, 301, 145, 146, 147, 148, 149, 40, 301, 301,
149191 /* 2030 */ 301, 94, 301, 301, 301, 301, 301, 100, 101, 301,
149192 /* 2040 */ 301, 301, 301, 301, 107, 301, 109, 110, 111, 301,
149193 /* 2050 */ 301, 114, 301, 301, 301, 301, 301, 70, 301, 301,
149194 /* 2060 */ 301, 301, 301, 301, 301, 78, 301, 301, 81, 301,
149195 /* 2070 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 92,
149196 /* 2080 */ 301, 301, 145, 146, 147, 148, 149, 301, 301, 301,
149197 /* 2090 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149198 /* 2100 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149199 /* 2110 */ 301, 301, 301, 126, 301, 301, 301, 301, 131, 132,
149200 /* 2120 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149201 /* 2130 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149202 /* 2140 */ 301, 154, 301, 301, 301, 301, 301, 301, 301, 301,
149203 /* 2150 */ 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
149204 /* 2160 */ 301, 301, 301, 301, 301, 301, 301, 301, 301,
149205 };
149206 #define YY_SHIFT_COUNT (540)
149207 #define YY_SHIFT_MIN (0)
149208 #define YY_SHIFT_MAX (1987)
149209 static const unsigned short int yy_shift_ofst[] = {
149210 /* 0 */ 1814, 1632, 1987, 1426, 1426, 128, 1482, 1633, 1703, 1877,
149211 /* 10 */ 1877, 1877, 87, 0, 0, 264, 1106, 1877, 1877, 1877,
149212 /* 20 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149213 /* 30 */ 226, 226, 381, 381, 296, 193, 128, 128, 128, 128,
149214 /* 40 */ 128, 128, 97, 194, 332, 429, 526, 623, 720, 817,
149215 /* 50 */ 914, 934, 1086, 1238, 1106, 1106, 1106, 1106, 1106, 1106,
149216 /* 60 */ 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
149217 /* 70 */ 1106, 1106, 1258, 1106, 1355, 1375, 1375, 1817, 1877, 1877,
149218 /* 80 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149219 /* 90 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149220 /* 100 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149221 /* 110 */ 1937, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149222 /* 120 */ 1877, 1877, 1877, 1877, 32, 129, 129, 129, 129, 129,
149223 /* 130 */ 21, 152, 297, 494, 726, 65, 494, 514, 514, 494,
149224 /* 140 */ 560, 560, 560, 560, 322, 599, 50, 2142, 2142, 155,
149225 /* 150 */ 155, 155, 313, 392, 386, 392, 392, 481, 481, 200,
149226 /* 160 */ 480, 684, 758, 494, 494, 494, 494, 494, 494, 494,
149227 /* 170 */ 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,
149228 /* 180 */ 494, 494, 494, 494, 768, 768, 494, 166, 377, 377,
149229 /* 190 */ 635, 835, 835, 635, 748, 987, 2142, 2142, 2142, 448,
149230 /* 200 */ 45, 45, 403, 484, 502, 106, 525, 508, 528, 538,
149231 /* 210 */ 494, 494, 494, 494, 494, 494, 494, 494, 494, 84,
149232 /* 220 */ 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,
149233 /* 230 */ 494, 494, 267, 267, 267, 494, 494, 494, 494, 769,
149234 /* 240 */ 494, 494, 494, 4, 477, 494, 494, 788, 494, 494,
149235 /* 250 */ 494, 494, 494, 494, 494, 494, 727, 5, 135, 985,
149236 /* 260 */ 985, 985, 985, 522, 135, 135, 797, 326, 875, 986,
149237 /* 270 */ 968, 1036, 1036, 1038, 968, 968, 1038, 972, 1081, 1118,
149238 /* 280 */ 1194, 1194, 1194, 1036, 757, 757, 946, 777, 1099, 1102,
149239 /* 290 */ 1333, 1282, 1282, 1381, 1381, 1282, 1297, 1334, 1422, 1406,
149240 /* 300 */ 1322, 1448, 1448, 1448, 1448, 1282, 1451, 1322, 1322, 1334,
149241 /* 310 */ 1422, 1406, 1406, 1322, 1282, 1451, 1345, 1434, 1282, 1451,
149242 /* 320 */ 1483, 1282, 1451, 1282, 1451, 1483, 1404, 1404, 1404, 1452,
149243 /* 330 */ 1483, 1404, 1405, 1404, 1452, 1404, 1404, 1483, 1423, 1423,
149244 /* 340 */ 1483, 1407, 1437, 1407, 1437, 1407, 1437, 1407, 1437, 1282,
149245 /* 350 */ 1462, 1462, 1411, 1418, 1537, 1282, 1416, 1411, 1428, 1431,
149246 /* 360 */ 1322, 1555, 1560, 1575, 1575, 1584, 1584, 1584, 2142, 2142,
149247 /* 370 */ 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142,
149248 /* 380 */ 2142, 2142, 2142, 2142, 61, 725, 374, 1080, 198, 771,
149249 /* 390 */ 283, 1192, 1178, 1190, 1107, 1221, 1206, 1226, 1227, 1232,
149250 /* 400 */ 1233, 1240, 1242, 1189, 1129, 1253, 216, 1210, 1247, 1248,
149251 /* 410 */ 1249, 1131, 1151, 1274, 1293, 1220, 1214, 1605, 1608, 1591,
149252 /* 420 */ 1459, 1600, 1525, 1606, 1598, 1602, 1494, 1492, 1513, 1614,
149253 /* 430 */ 1504, 1620, 1510, 1625, 1647, 1515, 1507, 1531, 1595, 1621,
149254 /* 440 */ 1514, 1607, 1610, 1612, 1613, 1536, 1552, 1634, 1533, 1669,
149255 /* 450 */ 1666, 1651, 1566, 1522, 1609, 1650, 1611, 1603, 1639, 1547,
149256 /* 460 */ 1574, 1659, 1664, 1667, 1561, 1569, 1668, 1622, 1671, 1672,
149257 /* 470 */ 1665, 1673, 1624, 1670, 1674, 1630, 1662, 1677, 1559, 1681,
149258 /* 480 */ 1682, 1549, 1684, 1685, 1683, 1688, 1690, 1692, 1691, 1695,
149259 /* 490 */ 1694, 1585, 1698, 1705, 1617, 1696, 1707, 1596, 1709, 1697,
149260 /* 500 */ 1702, 1704, 1711, 1652, 1675, 1658, 1708, 1676, 1656, 1714,
149261 /* 510 */ 1726, 1731, 1730, 1729, 1733, 1722, 1734, 1709, 1737, 1738,
149262 /* 520 */ 1742, 1743, 1741, 1745, 1747, 1759, 1749, 1750, 1752, 1753,
149263 /* 530 */ 1751, 1755, 1757, 1660, 1653, 1655, 1657, 1661, 1761, 1777,
149264 /* 540 */ 1792,
149265 };
149266 #define YY_REDUCE_COUNT (383)
149267 #define YY_REDUCE_MIN (-257)
149268 #define YY_REDUCE_MAX (1421)
149269 static const short yy_reduce_ofst[] = {
149270 /* 0 */ -168, -17, 164, 214, 310, -166, -184, -18, 98, -170,
149271 /* 10 */ 305, 315, -163, -193, -178, -257, 395, 401, 476, 478,
149272 /* 20 */ 512, 117, 527, 529, 503, 509, 532, 255, 552, 556,
149273 /* 30 */ 558, 607, 37, 408, 594, 413, 462, 559, 561, 601,
149274 /* 40 */ 610, 618, -254, -254, -254, -254, -254, -254, -254, -254,
149275 /* 50 */ -254, -254, -254, -254, -254, -254, -254, -254, -254, -254,
149276 /* 60 */ -254, -254, -254, -254, -254, -254, -254, -254, -254, -254,
149277 /* 70 */ -254, -254, -254, -254, -254, -254, -254, -111, 627, 650,
149278 /* 80 */ 691, 697, 701, 703, 740, 742, 744, 767, 770, 790,
149279 /* 90 */ 816, 818, 820, 822, 845, 857, 859, 861, 863, 865,
149280 /* 100 */ 868, 870, 872, 874, 876, 888, 903, 906, 908, 915,
149281 /* 110 */ 917, 922, 960, 962, 964, 988, 990, 992, 1015, 1017,
149282 /* 120 */ 1029, 1033, 1035, 1040, -254, -254, -254, -254, -254, -254,
149283 /* 130 */ -254, -254, -254, 190, 270, -196, 160, -160, 450, 647,
149284 /* 140 */ 260, 458, 260, 458, 78, -254, -254, -254, -254, 206,
149285 /* 150 */ 206, 206, 320, 598, -5, 675, 743, -148, 340, -125,
149286 /* 160 */ 459, 466, 466, 693, -93, 461, 479, 706, 710, 714,
149287 /* 170 */ 716, 717, 169, -183, 325, 314, 704, 333, 747, 858,
149288 /* 180 */ -8, 819, 565, 755, 646, 660, 517, 265, 713, 791,
149289 /* 190 */ 712, 795, 803, 918, 695, 860, 893, 935, 939, -181,
149290 /* 200 */ -172, -147, -91, -46, -3, 162, 173, 231, 338, 437,
149291 /* 210 */ 571, 614, 630, 651, 760, 931, 989, 1032, 1046, -218,
149292 /* 220 */ 38, 1070, 1096, 1133, 1134, 1137, 1138, 1139, 1141, 1142,
149293 /* 230 */ 1143, 1144, 292, 451, 1050, 1145, 1147, 1148, 1149, 813,
149294 /* 240 */ 1161, 1162, 1163, 1108, 1049, 1166, 1168, 1146, 1169, 162,
149295 /* 250 */ 1181, 1182, 1183, 1184, 1185, 1187, 1100, 1103, 1150, 1135,
149296 /* 260 */ 1136, 1140, 1152, 813, 1150, 1150, 1153, 1173, 1195, 1090,
149297 /* 270 */ 1154, 1167, 1170, 1104, 1155, 1156, 1109, 1172, 1174, 1179,
149298 /* 280 */ 1177, 1188, 1205, 1171, 1160, 1196, 1121, 1165, 1203, 1228,
149299 /* 290 */ 1157, 1244, 1245, 1158, 1159, 1250, 1175, 1193, 1191, 1241,
149300 /* 300 */ 1231, 1243, 1257, 1259, 1261, 1276, 1280, 1254, 1255, 1230,
149301 /* 310 */ 1234, 1269, 1270, 1260, 1292, 1303, 1223, 1225, 1309, 1313,
149302 /* 320 */ 1296, 1317, 1319, 1320, 1323, 1300, 1307, 1308, 1310, 1304,
149303 /* 330 */ 1311, 1315, 1314, 1318, 1316, 1321, 1325, 1324, 1271, 1272,
149304 /* 340 */ 1332, 1294, 1298, 1299, 1301, 1302, 1306, 1312, 1329, 1356,
149305 /* 350 */ 1256, 1263, 1327, 1326, 1305, 1369, 1330, 1340, 1343, 1346,
149306 /* 360 */ 1350, 1391, 1394, 1410, 1412, 1415, 1417, 1419, 1328, 1331,
149307 /* 370 */ 1335, 1402, 1398, 1400, 1401, 1403, 1408, 1396, 1397, 1409,
149308 /* 380 */ 1414, 1420, 1421, 1413,
149309 };
149310 static const YYACTIONTYPE yy_default[] = {
149311 /* 0 */ 1536, 1536, 1536, 1376, 1159, 1265, 1159, 1159, 1159, 1376,
149312 /* 10 */ 1376, 1376, 1159, 1295, 1295, 1429, 1190, 1159, 1159, 1159,
149313 /* 20 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1375, 1159, 1159,
149314 /* 30 */ 1159, 1159, 1459, 1459, 1159, 1159, 1159, 1159, 1159, 1159,
149315 /* 40 */ 1159, 1159, 1159, 1301, 1159, 1159, 1159, 1159, 1159, 1377,
149316 /* 50 */ 1378, 1159, 1159, 1159, 1428, 1430, 1393, 1311, 1310, 1309,
149317 /* 60 */ 1308, 1411, 1282, 1306, 1299, 1303, 1371, 1372, 1370, 1374,
149318 /* 70 */ 1378, 1377, 1159, 1302, 1342, 1356, 1341, 1159, 1159, 1159,
149319 /* 80 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149320 /* 90 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149321 /* 100 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149322 /* 110 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149323 /* 120 */ 1159, 1159, 1159, 1159, 1350, 1355, 1361, 1354, 1351, 1344,
149324 /* 130 */ 1343, 1345, 1346, 1159, 1180, 1229, 1159, 1159, 1159, 1159,
149325 /* 140 */ 1447, 1446, 1159, 1159, 1190, 1347, 1348, 1358, 1357, 1436,
149326 /* 150 */ 1492, 1491, 1394, 1159, 1159, 1159, 1159, 1159, 1159, 1459,
149327 /* 160 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149328 /* 170 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149329 /* 180 */ 1159, 1159, 1159, 1159, 1459, 1459, 1159, 1190, 1459, 1459,
149330 /* 190 */ 1186, 1336, 1335, 1186, 1289, 1159, 1442, 1265, 1256, 1159,
149331 /* 200 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149332 /* 210 */ 1159, 1159, 1159, 1433, 1431, 1159, 1159, 1159, 1159, 1159,
149333 /* 220 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149334 /* 230 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149335 /* 240 */ 1159, 1159, 1159, 1261, 1159, 1159, 1159, 1159, 1159, 1159,
149336 /* 250 */ 1159, 1159, 1159, 1159, 1159, 1486, 1159, 1406, 1243, 1261,
149337 /* 260 */ 1261, 1261, 1261, 1263, 1244, 1242, 1255, 1190, 1166, 1528,
149338 /* 270 */ 1305, 1284, 1284, 1525, 1305, 1305, 1525, 1204, 1506, 1201,
149339 /* 280 */ 1295, 1295, 1295, 1284, 1289, 1289, 1373, 1262, 1255, 1159,
149340 /* 290 */ 1528, 1270, 1270, 1527, 1527, 1270, 1394, 1314, 1320, 1232,
149341 /* 300 */ 1305, 1238, 1238, 1238, 1238, 1270, 1177, 1305, 1305, 1314,
149342 /* 310 */ 1320, 1232, 1232, 1305, 1270, 1177, 1410, 1522, 1270, 1177,
149343 /* 320 */ 1384, 1270, 1177, 1270, 1177, 1384, 1230, 1230, 1230, 1219,
149344 /* 330 */ 1384, 1230, 1204, 1230, 1219, 1230, 1230, 1384, 1388, 1388,
149345 /* 340 */ 1384, 1288, 1283, 1288, 1283, 1288, 1283, 1288, 1283, 1270,
149346 /* 350 */ 1469, 1469, 1300, 1289, 1379, 1270, 1159, 1300, 1298, 1296,
149347 /* 360 */ 1305, 1183, 1222, 1489, 1489, 1485, 1485, 1485, 1533, 1533,
149348 /* 370 */ 1442, 1501, 1190, 1190, 1190, 1190, 1501, 1206, 1206, 1190,
149349 /* 380 */ 1190, 1190, 1190, 1501, 1159, 1159, 1159, 1159, 1159, 1159,
149350 /* 390 */ 1496, 1159, 1395, 1274, 1159, 1159, 1159, 1159, 1159, 1159,
149351 /* 400 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149352 /* 410 */ 1159, 1159, 1159, 1159, 1159, 1159, 1325, 1159, 1162, 1439,
149353 /* 420 */ 1159, 1159, 1437, 1159, 1159, 1159, 1159, 1159, 1159, 1275,
149354 /* 430 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149355 /* 440 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1524, 1159,
149356 /* 450 */ 1159, 1159, 1159, 1159, 1159, 1409, 1408, 1159, 1159, 1272,
149357 /* 460 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149358 /* 470 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149359 /* 480 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149360 /* 490 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1297, 1159,
149361 /* 500 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149362 /* 510 */ 1159, 1159, 1159, 1474, 1290, 1159, 1159, 1515, 1159, 1159,
149363 /* 520 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149364 /* 530 */ 1159, 1159, 1510, 1246, 1327, 1159, 1326, 1330, 1159, 1171,
149365 /* 540 */ 1159,
149366 };
149367 /********** End of lemon-generated parsing tables *****************************/
149368
149369 /* The next table maps tokens (terminal symbols) into fallback tokens.
149370 ** If a construct like the following:
@@ -149766,107 +149913,108 @@
149766 /* 199 */ "typename",
149767 /* 200 */ "signed",
149768 /* 201 */ "plus_num",
149769 /* 202 */ "minus_num",
149770 /* 203 */ "scanpt",
149771 /* 204 */ "ccons",
149772 /* 205 */ "term",
149773 /* 206 */ "expr",
149774 /* 207 */ "onconf",
149775 /* 208 */ "sortorder",
149776 /* 209 */ "autoinc",
149777 /* 210 */ "eidlist_opt",
149778 /* 211 */ "refargs",
149779 /* 212 */ "defer_subclause",
149780 /* 213 */ "refarg",
149781 /* 214 */ "refact",
149782 /* 215 */ "init_deferred_pred_opt",
149783 /* 216 */ "conslist",
149784 /* 217 */ "tconscomma",
149785 /* 218 */ "tcons",
149786 /* 219 */ "sortlist",
149787 /* 220 */ "eidlist",
149788 /* 221 */ "defer_subclause_opt",
149789 /* 222 */ "orconf",
149790 /* 223 */ "resolvetype",
149791 /* 224 */ "raisetype",
149792 /* 225 */ "ifexists",
149793 /* 226 */ "fullname",
149794 /* 227 */ "selectnowith",
149795 /* 228 */ "oneselect",
149796 /* 229 */ "wqlist",
149797 /* 230 */ "multiselect_op",
149798 /* 231 */ "distinct",
149799 /* 232 */ "selcollist",
149800 /* 233 */ "from",
149801 /* 234 */ "where_opt",
149802 /* 235 */ "groupby_opt",
149803 /* 236 */ "having_opt",
149804 /* 237 */ "orderby_opt",
149805 /* 238 */ "limit_opt",
149806 /* 239 */ "window_clause",
149807 /* 240 */ "values",
149808 /* 241 */ "nexprlist",
149809 /* 242 */ "sclp",
149810 /* 243 */ "as",
149811 /* 244 */ "seltablist",
149812 /* 245 */ "stl_prefix",
149813 /* 246 */ "joinop",
149814 /* 247 */ "indexed_opt",
149815 /* 248 */ "on_opt",
149816 /* 249 */ "using_opt",
149817 /* 250 */ "exprlist",
149818 /* 251 */ "xfullname",
149819 /* 252 */ "idlist",
149820 /* 253 */ "with",
149821 /* 254 */ "setlist",
149822 /* 255 */ "insert_cmd",
149823 /* 256 */ "idlist_opt",
149824 /* 257 */ "upsert",
149825 /* 258 */ "over_clause",
149826 /* 259 */ "likeop",
149827 /* 260 */ "between_op",
149828 /* 261 */ "in_op",
149829 /* 262 */ "paren_exprlist",
149830 /* 263 */ "case_operand",
149831 /* 264 */ "case_exprlist",
149832 /* 265 */ "case_else",
149833 /* 266 */ "uniqueflag",
149834 /* 267 */ "collate",
149835 /* 268 */ "vinto",
149836 /* 269 */ "nmnum",
149837 /* 270 */ "trigger_decl",
149838 /* 271 */ "trigger_cmd_list",
149839 /* 272 */ "trigger_time",
149840 /* 273 */ "trigger_event",
149841 /* 274 */ "foreach_clause",
149842 /* 275 */ "when_clause",
149843 /* 276 */ "trigger_cmd",
149844 /* 277 */ "trnm",
149845 /* 278 */ "tridxby",
149846 /* 279 */ "database_kw_opt",
149847 /* 280 */ "key_opt",
149848 /* 281 */ "add_column_fullname",
149849 /* 282 */ "kwcolumn_opt",
149850 /* 283 */ "create_vtab",
149851 /* 284 */ "vtabarglist",
149852 /* 285 */ "vtabarg",
149853 /* 286 */ "vtabargtoken",
149854 /* 287 */ "lp",
149855 /* 288 */ "anylist",
149856 /* 289 */ "windowdefn_list",
149857 /* 290 */ "windowdefn",
149858 /* 291 */ "window",
149859 /* 292 */ "frame_opt",
149860 /* 293 */ "part_opt",
149861 /* 294 */ "filter_opt",
149862 /* 295 */ "range_or_rows",
149863 /* 296 */ "frame_bound",
149864 /* 297 */ "frame_bound_s",
149865 /* 298 */ "frame_bound_e",
149866 /* 299 */ "frame_exclude_opt",
149867 /* 300 */ "frame_exclude",
 
149868 };
149869 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
149870
149871 #ifndef NDEBUG
149872 /* For tracing reduce actions, the names of all rules are required.
@@ -149899,356 +150047,357 @@
149899 /* 24 */ "typetoken ::=",
149900 /* 25 */ "typetoken ::= typename LP signed RP",
149901 /* 26 */ "typetoken ::= typename LP signed COMMA signed RP",
149902 /* 27 */ "typename ::= typename ID|STRING",
149903 /* 28 */ "scanpt ::=",
149904 /* 29 */ "ccons ::= CONSTRAINT nm",
149905 /* 30 */ "ccons ::= DEFAULT scanpt term scanpt",
149906 /* 31 */ "ccons ::= DEFAULT LP expr RP",
149907 /* 32 */ "ccons ::= DEFAULT PLUS term scanpt",
149908 /* 33 */ "ccons ::= DEFAULT MINUS term scanpt",
149909 /* 34 */ "ccons ::= DEFAULT scanpt ID|INDEXED",
149910 /* 35 */ "ccons ::= NOT NULL onconf",
149911 /* 36 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
149912 /* 37 */ "ccons ::= UNIQUE onconf",
149913 /* 38 */ "ccons ::= CHECK LP expr RP",
149914 /* 39 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
149915 /* 40 */ "ccons ::= defer_subclause",
149916 /* 41 */ "ccons ::= COLLATE ID|STRING",
149917 /* 42 */ "autoinc ::=",
149918 /* 43 */ "autoinc ::= AUTOINCR",
149919 /* 44 */ "refargs ::=",
149920 /* 45 */ "refargs ::= refargs refarg",
149921 /* 46 */ "refarg ::= MATCH nm",
149922 /* 47 */ "refarg ::= ON INSERT refact",
149923 /* 48 */ "refarg ::= ON DELETE refact",
149924 /* 49 */ "refarg ::= ON UPDATE refact",
149925 /* 50 */ "refact ::= SET NULL",
149926 /* 51 */ "refact ::= SET DEFAULT",
149927 /* 52 */ "refact ::= CASCADE",
149928 /* 53 */ "refact ::= RESTRICT",
149929 /* 54 */ "refact ::= NO ACTION",
149930 /* 55 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
149931 /* 56 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
149932 /* 57 */ "init_deferred_pred_opt ::=",
149933 /* 58 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
149934 /* 59 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
149935 /* 60 */ "conslist_opt ::=",
149936 /* 61 */ "tconscomma ::= COMMA",
149937 /* 62 */ "tcons ::= CONSTRAINT nm",
149938 /* 63 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
149939 /* 64 */ "tcons ::= UNIQUE LP sortlist RP onconf",
149940 /* 65 */ "tcons ::= CHECK LP expr RP onconf",
149941 /* 66 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
149942 /* 67 */ "defer_subclause_opt ::=",
149943 /* 68 */ "onconf ::=",
149944 /* 69 */ "onconf ::= ON CONFLICT resolvetype",
149945 /* 70 */ "orconf ::=",
149946 /* 71 */ "orconf ::= OR resolvetype",
149947 /* 72 */ "resolvetype ::= IGNORE",
149948 /* 73 */ "resolvetype ::= REPLACE",
149949 /* 74 */ "cmd ::= DROP TABLE ifexists fullname",
149950 /* 75 */ "ifexists ::= IF EXISTS",
149951 /* 76 */ "ifexists ::=",
149952 /* 77 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
149953 /* 78 */ "cmd ::= DROP VIEW ifexists fullname",
149954 /* 79 */ "cmd ::= select",
149955 /* 80 */ "select ::= WITH wqlist selectnowith",
149956 /* 81 */ "select ::= WITH RECURSIVE wqlist selectnowith",
149957 /* 82 */ "select ::= selectnowith",
149958 /* 83 */ "selectnowith ::= selectnowith multiselect_op oneselect",
149959 /* 84 */ "multiselect_op ::= UNION",
149960 /* 85 */ "multiselect_op ::= UNION ALL",
149961 /* 86 */ "multiselect_op ::= EXCEPT|INTERSECT",
149962 /* 87 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
149963 /* 88 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
149964 /* 89 */ "values ::= VALUES LP nexprlist RP",
149965 /* 90 */ "values ::= values COMMA LP nexprlist RP",
149966 /* 91 */ "distinct ::= DISTINCT",
149967 /* 92 */ "distinct ::= ALL",
149968 /* 93 */ "distinct ::=",
149969 /* 94 */ "sclp ::=",
149970 /* 95 */ "selcollist ::= sclp scanpt expr scanpt as",
149971 /* 96 */ "selcollist ::= sclp scanpt STAR",
149972 /* 97 */ "selcollist ::= sclp scanpt nm DOT STAR",
149973 /* 98 */ "as ::= AS nm",
149974 /* 99 */ "as ::=",
149975 /* 100 */ "from ::=",
149976 /* 101 */ "from ::= FROM seltablist",
149977 /* 102 */ "stl_prefix ::= seltablist joinop",
149978 /* 103 */ "stl_prefix ::=",
149979 /* 104 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
149980 /* 105 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
149981 /* 106 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
149982 /* 107 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
149983 /* 108 */ "dbnm ::=",
149984 /* 109 */ "dbnm ::= DOT nm",
149985 /* 110 */ "fullname ::= nm",
149986 /* 111 */ "fullname ::= nm DOT nm",
149987 /* 112 */ "xfullname ::= nm",
149988 /* 113 */ "xfullname ::= nm DOT nm",
149989 /* 114 */ "xfullname ::= nm DOT nm AS nm",
149990 /* 115 */ "xfullname ::= nm AS nm",
149991 /* 116 */ "joinop ::= COMMA|JOIN",
149992 /* 117 */ "joinop ::= JOIN_KW JOIN",
149993 /* 118 */ "joinop ::= JOIN_KW nm JOIN",
149994 /* 119 */ "joinop ::= JOIN_KW nm nm JOIN",
149995 /* 120 */ "on_opt ::= ON expr",
149996 /* 121 */ "on_opt ::=",
149997 /* 122 */ "indexed_opt ::=",
149998 /* 123 */ "indexed_opt ::= INDEXED BY nm",
149999 /* 124 */ "indexed_opt ::= NOT INDEXED",
150000 /* 125 */ "using_opt ::= USING LP idlist RP",
150001 /* 126 */ "using_opt ::=",
150002 /* 127 */ "orderby_opt ::=",
150003 /* 128 */ "orderby_opt ::= ORDER BY sortlist",
150004 /* 129 */ "sortlist ::= sortlist COMMA expr sortorder",
150005 /* 130 */ "sortlist ::= expr sortorder",
150006 /* 131 */ "sortorder ::= ASC",
150007 /* 132 */ "sortorder ::= DESC",
150008 /* 133 */ "sortorder ::=",
150009 /* 134 */ "groupby_opt ::=",
150010 /* 135 */ "groupby_opt ::= GROUP BY nexprlist",
150011 /* 136 */ "having_opt ::=",
150012 /* 137 */ "having_opt ::= HAVING expr",
150013 /* 138 */ "limit_opt ::=",
150014 /* 139 */ "limit_opt ::= LIMIT expr",
150015 /* 140 */ "limit_opt ::= LIMIT expr OFFSET expr",
150016 /* 141 */ "limit_opt ::= LIMIT expr COMMA expr",
150017 /* 142 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt",
150018 /* 143 */ "where_opt ::=",
150019 /* 144 */ "where_opt ::= WHERE expr",
150020 /* 145 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt",
150021 /* 146 */ "setlist ::= setlist COMMA nm EQ expr",
150022 /* 147 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
150023 /* 148 */ "setlist ::= nm EQ expr",
150024 /* 149 */ "setlist ::= LP idlist RP EQ expr",
150025 /* 150 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
150026 /* 151 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES",
150027 /* 152 */ "upsert ::=",
150028 /* 153 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt",
150029 /* 154 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING",
150030 /* 155 */ "upsert ::= ON CONFLICT DO NOTHING",
150031 /* 156 */ "insert_cmd ::= INSERT orconf",
150032 /* 157 */ "insert_cmd ::= REPLACE",
150033 /* 158 */ "idlist_opt ::=",
150034 /* 159 */ "idlist_opt ::= LP idlist RP",
150035 /* 160 */ "idlist ::= idlist COMMA nm",
150036 /* 161 */ "idlist ::= nm",
150037 /* 162 */ "expr ::= LP expr RP",
150038 /* 163 */ "expr ::= ID|INDEXED",
150039 /* 164 */ "expr ::= JOIN_KW",
150040 /* 165 */ "expr ::= nm DOT nm",
150041 /* 166 */ "expr ::= nm DOT nm DOT nm",
150042 /* 167 */ "term ::= NULL|FLOAT|BLOB",
150043 /* 168 */ "term ::= STRING",
150044 /* 169 */ "term ::= INTEGER",
150045 /* 170 */ "expr ::= VARIABLE",
150046 /* 171 */ "expr ::= expr COLLATE ID|STRING",
150047 /* 172 */ "expr ::= CAST LP expr AS typetoken RP",
150048 /* 173 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
150049 /* 174 */ "expr ::= ID|INDEXED LP STAR RP",
150050 /* 175 */ "expr ::= ID|INDEXED LP distinct exprlist RP over_clause",
150051 /* 176 */ "expr ::= ID|INDEXED LP STAR RP over_clause",
150052 /* 177 */ "term ::= CTIME_KW",
150053 /* 178 */ "expr ::= LP nexprlist COMMA expr RP",
150054 /* 179 */ "expr ::= expr AND expr",
150055 /* 180 */ "expr ::= expr OR expr",
150056 /* 181 */ "expr ::= expr LT|GT|GE|LE expr",
150057 /* 182 */ "expr ::= expr EQ|NE expr",
150058 /* 183 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
150059 /* 184 */ "expr ::= expr PLUS|MINUS expr",
150060 /* 185 */ "expr ::= expr STAR|SLASH|REM expr",
150061 /* 186 */ "expr ::= expr CONCAT expr",
150062 /* 187 */ "likeop ::= NOT LIKE_KW|MATCH",
150063 /* 188 */ "expr ::= expr likeop expr",
150064 /* 189 */ "expr ::= expr likeop expr ESCAPE expr",
150065 /* 190 */ "expr ::= expr ISNULL|NOTNULL",
150066 /* 191 */ "expr ::= expr NOT NULL",
150067 /* 192 */ "expr ::= expr IS expr",
150068 /* 193 */ "expr ::= expr IS NOT expr",
150069 /* 194 */ "expr ::= NOT expr",
150070 /* 195 */ "expr ::= BITNOT expr",
150071 /* 196 */ "expr ::= PLUS|MINUS expr",
150072 /* 197 */ "between_op ::= BETWEEN",
150073 /* 198 */ "between_op ::= NOT BETWEEN",
150074 /* 199 */ "expr ::= expr between_op expr AND expr",
150075 /* 200 */ "in_op ::= IN",
150076 /* 201 */ "in_op ::= NOT IN",
150077 /* 202 */ "expr ::= expr in_op LP exprlist RP",
150078 /* 203 */ "expr ::= LP select RP",
150079 /* 204 */ "expr ::= expr in_op LP select RP",
150080 /* 205 */ "expr ::= expr in_op nm dbnm paren_exprlist",
150081 /* 206 */ "expr ::= EXISTS LP select RP",
150082 /* 207 */ "expr ::= CASE case_operand case_exprlist case_else END",
150083 /* 208 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
150084 /* 209 */ "case_exprlist ::= WHEN expr THEN expr",
150085 /* 210 */ "case_else ::= ELSE expr",
150086 /* 211 */ "case_else ::=",
150087 /* 212 */ "case_operand ::= expr",
150088 /* 213 */ "case_operand ::=",
150089 /* 214 */ "exprlist ::=",
150090 /* 215 */ "nexprlist ::= nexprlist COMMA expr",
150091 /* 216 */ "nexprlist ::= expr",
150092 /* 217 */ "paren_exprlist ::=",
150093 /* 218 */ "paren_exprlist ::= LP exprlist RP",
150094 /* 219 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
150095 /* 220 */ "uniqueflag ::= UNIQUE",
150096 /* 221 */ "uniqueflag ::=",
150097 /* 222 */ "eidlist_opt ::=",
150098 /* 223 */ "eidlist_opt ::= LP eidlist RP",
150099 /* 224 */ "eidlist ::= eidlist COMMA nm collate sortorder",
150100 /* 225 */ "eidlist ::= nm collate sortorder",
150101 /* 226 */ "collate ::=",
150102 /* 227 */ "collate ::= COLLATE ID|STRING",
150103 /* 228 */ "cmd ::= DROP INDEX ifexists fullname",
150104 /* 229 */ "cmd ::= VACUUM vinto",
150105 /* 230 */ "cmd ::= VACUUM nm vinto",
150106 /* 231 */ "vinto ::= INTO expr",
150107 /* 232 */ "vinto ::=",
150108 /* 233 */ "cmd ::= PRAGMA nm dbnm",
150109 /* 234 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
150110 /* 235 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
150111 /* 236 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
150112 /* 237 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
150113 /* 238 */ "plus_num ::= PLUS INTEGER|FLOAT",
150114 /* 239 */ "minus_num ::= MINUS INTEGER|FLOAT",
150115 /* 240 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
150116 /* 241 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
150117 /* 242 */ "trigger_time ::= BEFORE|AFTER",
150118 /* 243 */ "trigger_time ::= INSTEAD OF",
150119 /* 244 */ "trigger_time ::=",
150120 /* 245 */ "trigger_event ::= DELETE|INSERT",
150121 /* 246 */ "trigger_event ::= UPDATE",
150122 /* 247 */ "trigger_event ::= UPDATE OF idlist",
150123 /* 248 */ "when_clause ::=",
150124 /* 249 */ "when_clause ::= WHEN expr",
150125 /* 250 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
150126 /* 251 */ "trigger_cmd_list ::= trigger_cmd SEMI",
150127 /* 252 */ "trnm ::= nm DOT nm",
150128 /* 253 */ "tridxby ::= INDEXED BY nm",
150129 /* 254 */ "tridxby ::= NOT INDEXED",
150130 /* 255 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt",
150131 /* 256 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
150132 /* 257 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
150133 /* 258 */ "trigger_cmd ::= scanpt select scanpt",
150134 /* 259 */ "expr ::= RAISE LP IGNORE RP",
150135 /* 260 */ "expr ::= RAISE LP raisetype COMMA nm RP",
150136 /* 261 */ "raisetype ::= ROLLBACK",
150137 /* 262 */ "raisetype ::= ABORT",
150138 /* 263 */ "raisetype ::= FAIL",
150139 /* 264 */ "cmd ::= DROP TRIGGER ifexists fullname",
150140 /* 265 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
150141 /* 266 */ "cmd ::= DETACH database_kw_opt expr",
150142 /* 267 */ "key_opt ::=",
150143 /* 268 */ "key_opt ::= KEY expr",
150144 /* 269 */ "cmd ::= REINDEX",
150145 /* 270 */ "cmd ::= REINDEX nm dbnm",
150146 /* 271 */ "cmd ::= ANALYZE",
150147 /* 272 */ "cmd ::= ANALYZE nm dbnm",
150148 /* 273 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
150149 /* 274 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
150150 /* 275 */ "add_column_fullname ::= fullname",
150151 /* 276 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
150152 /* 277 */ "cmd ::= create_vtab",
150153 /* 278 */ "cmd ::= create_vtab LP vtabarglist RP",
150154 /* 279 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
150155 /* 280 */ "vtabarg ::=",
150156 /* 281 */ "vtabargtoken ::= ANY",
150157 /* 282 */ "vtabargtoken ::= lp anylist RP",
150158 /* 283 */ "lp ::= LP",
150159 /* 284 */ "with ::= WITH wqlist",
150160 /* 285 */ "with ::= WITH RECURSIVE wqlist",
150161 /* 286 */ "wqlist ::= nm eidlist_opt AS LP select RP",
150162 /* 287 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
150163 /* 288 */ "windowdefn_list ::= windowdefn",
150164 /* 289 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
150165 /* 290 */ "windowdefn ::= nm AS LP window RP",
150166 /* 291 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
150167 /* 292 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
150168 /* 293 */ "window ::= ORDER BY sortlist frame_opt",
150169 /* 294 */ "window ::= nm ORDER BY sortlist frame_opt",
150170 /* 295 */ "window ::= frame_opt",
150171 /* 296 */ "window ::= nm frame_opt",
150172 /* 297 */ "frame_opt ::=",
150173 /* 298 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
150174 /* 299 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
150175 /* 300 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
150176 /* 301 */ "frame_bound_s ::= frame_bound",
150177 /* 302 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
150178 /* 303 */ "frame_bound_e ::= frame_bound",
150179 /* 304 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
150180 /* 305 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
150181 /* 306 */ "frame_bound ::= CURRENT ROW",
150182 /* 307 */ "frame_exclude_opt ::=",
150183 /* 308 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
150184 /* 309 */ "frame_exclude ::= NO OTHERS",
150185 /* 310 */ "frame_exclude ::= CURRENT ROW",
150186 /* 311 */ "frame_exclude ::= GROUP|TIES",
150187 /* 312 */ "window_clause ::= WINDOW windowdefn_list",
150188 /* 313 */ "over_clause ::= filter_opt OVER LP window RP",
150189 /* 314 */ "over_clause ::= filter_opt OVER nm",
150190 /* 315 */ "filter_opt ::=",
150191 /* 316 */ "filter_opt ::= FILTER LP WHERE expr RP",
150192 /* 317 */ "input ::= cmdlist",
150193 /* 318 */ "cmdlist ::= cmdlist ecmd",
150194 /* 319 */ "cmdlist ::= ecmd",
150195 /* 320 */ "ecmd ::= SEMI",
150196 /* 321 */ "ecmd ::= cmdx SEMI",
150197 /* 322 */ "ecmd ::= explain cmdx",
150198 /* 323 */ "trans_opt ::=",
150199 /* 324 */ "trans_opt ::= TRANSACTION",
150200 /* 325 */ "trans_opt ::= TRANSACTION nm",
150201 /* 326 */ "savepoint_opt ::= SAVEPOINT",
150202 /* 327 */ "savepoint_opt ::=",
150203 /* 328 */ "cmd ::= create_table create_table_args",
150204 /* 329 */ "columnlist ::= columnlist COMMA columnname carglist",
150205 /* 330 */ "columnlist ::= columnname carglist",
150206 /* 331 */ "nm ::= ID|INDEXED",
150207 /* 332 */ "nm ::= STRING",
150208 /* 333 */ "nm ::= JOIN_KW",
150209 /* 334 */ "typetoken ::= typename",
150210 /* 335 */ "typename ::= ID|STRING",
150211 /* 336 */ "signed ::= plus_num",
150212 /* 337 */ "signed ::= minus_num",
150213 /* 338 */ "carglist ::= carglist ccons",
150214 /* 339 */ "carglist ::=",
150215 /* 340 */ "ccons ::= NULL onconf",
150216 /* 341 */ "conslist_opt ::= COMMA conslist",
150217 /* 342 */ "conslist ::= conslist tconscomma tcons",
150218 /* 343 */ "conslist ::= tcons",
150219 /* 344 */ "tconscomma ::=",
150220 /* 345 */ "defer_subclause_opt ::= defer_subclause",
150221 /* 346 */ "resolvetype ::= raisetype",
150222 /* 347 */ "selectnowith ::= oneselect",
150223 /* 348 */ "oneselect ::= values",
150224 /* 349 */ "sclp ::= selcollist COMMA",
150225 /* 350 */ "as ::= ID|STRING",
150226 /* 351 */ "expr ::= term",
150227 /* 352 */ "likeop ::= LIKE_KW|MATCH",
150228 /* 353 */ "exprlist ::= nexprlist",
150229 /* 354 */ "nmnum ::= plus_num",
150230 /* 355 */ "nmnum ::= nm",
150231 /* 356 */ "nmnum ::= ON",
150232 /* 357 */ "nmnum ::= DELETE",
150233 /* 358 */ "nmnum ::= DEFAULT",
150234 /* 359 */ "plus_num ::= INTEGER|FLOAT",
150235 /* 360 */ "foreach_clause ::=",
150236 /* 361 */ "foreach_clause ::= FOR EACH ROW",
150237 /* 362 */ "trnm ::= nm",
150238 /* 363 */ "tridxby ::=",
150239 /* 364 */ "database_kw_opt ::= DATABASE",
150240 /* 365 */ "database_kw_opt ::=",
150241 /* 366 */ "kwcolumn_opt ::=",
150242 /* 367 */ "kwcolumn_opt ::= COLUMNKW",
150243 /* 368 */ "vtabarglist ::= vtabarg",
150244 /* 369 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
150245 /* 370 */ "vtabarg ::= vtabarg vtabargtoken",
150246 /* 371 */ "anylist ::=",
150247 /* 372 */ "anylist ::= anylist LP anylist RP",
150248 /* 373 */ "anylist ::= anylist ANY",
150249 /* 374 */ "with ::=",
 
150250 };
150251 #endif /* NDEBUG */
150252
150253
150254 #if YYSTACKDEPTH<=0
@@ -150371,100 +150520,100 @@
150371 ** which appear on the RHS of the rule, but which are *not* used
150372 ** inside the C code.
150373 */
150374 /********* Begin destructor definitions ***************************************/
150375 case 195: /* select */
150376 case 227: /* selectnowith */
150377 case 228: /* oneselect */
150378 case 240: /* values */
150379 {
150380 sqlite3SelectDelete(pParse->db, (yypminor->yy457));
150381 }
150382 break;
150383 case 205: /* term */
150384 case 206: /* expr */
150385 case 234: /* where_opt */
150386 case 236: /* having_opt */
150387 case 248: /* on_opt */
150388 case 263: /* case_operand */
150389 case 265: /* case_else */
150390 case 268: /* vinto */
150391 case 275: /* when_clause */
150392 case 280: /* key_opt */
150393 case 294: /* filter_opt */
150394 {
150395 sqlite3ExprDelete(pParse->db, (yypminor->yy524));
150396 }
150397 break;
150398 case 210: /* eidlist_opt */
150399 case 219: /* sortlist */
150400 case 220: /* eidlist */
150401 case 232: /* selcollist */
150402 case 235: /* groupby_opt */
150403 case 237: /* orderby_opt */
150404 case 241: /* nexprlist */
150405 case 242: /* sclp */
150406 case 250: /* exprlist */
150407 case 254: /* setlist */
150408 case 262: /* paren_exprlist */
150409 case 264: /* case_exprlist */
150410 case 293: /* part_opt */
150411 {
150412 sqlite3ExprListDelete(pParse->db, (yypminor->yy434));
150413 }
150414 break;
150415 case 226: /* fullname */
150416 case 233: /* from */
150417 case 244: /* seltablist */
150418 case 245: /* stl_prefix */
150419 case 251: /* xfullname */
150420 {
150421 sqlite3SrcListDelete(pParse->db, (yypminor->yy483));
150422 }
150423 break;
150424 case 229: /* wqlist */
150425 {
150426 sqlite3WithDelete(pParse->db, (yypminor->yy59));
150427 }
150428 break;
150429 case 239: /* window_clause */
150430 case 289: /* windowdefn_list */
150431 {
150432 sqlite3WindowListDelete(pParse->db, (yypminor->yy295));
150433 }
150434 break;
150435 case 249: /* using_opt */
150436 case 252: /* idlist */
150437 case 256: /* idlist_opt */
150438 {
150439 sqlite3IdListDelete(pParse->db, (yypminor->yy62));
150440 }
150441 break;
150442 case 258: /* over_clause */
150443 case 290: /* windowdefn */
150444 case 291: /* window */
150445 case 292: /* frame_opt */
150446 {
150447 sqlite3WindowDelete(pParse->db, (yypminor->yy295));
150448 }
150449 break;
150450 case 271: /* trigger_cmd_list */
150451 case 276: /* trigger_cmd */
150452 {
150453 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy455));
150454 }
150455 break;
150456 case 273: /* trigger_event */
150457 {
150458 sqlite3IdListDelete(pParse->db, (yypminor->yy90).b);
150459 }
150460 break;
150461 case 296: /* frame_bound */
150462 case 297: /* frame_bound_s */
150463 case 298: /* frame_bound_e */
150464 {
150465 sqlite3ExprDelete(pParse->db, (yypminor->yy201).pExpr);
150466 }
150467 break;
150468 /********* End destructor definitions *****************************************/
150469 default: break; /* If no destructor action specified: do nothing */
150470 }
@@ -150784,356 +150933,357 @@
150784 198, /* (24) typetoken ::= */
150785 198, /* (25) typetoken ::= typename LP signed RP */
150786 198, /* (26) typetoken ::= typename LP signed COMMA signed RP */
150787 199, /* (27) typename ::= typename ID|STRING */
150788 203, /* (28) scanpt ::= */
150789 204, /* (29) ccons ::= CONSTRAINT nm */
150790 204, /* (30) ccons ::= DEFAULT scanpt term scanpt */
150791 204, /* (31) ccons ::= DEFAULT LP expr RP */
150792 204, /* (32) ccons ::= DEFAULT PLUS term scanpt */
150793 204, /* (33) ccons ::= DEFAULT MINUS term scanpt */
150794 204, /* (34) ccons ::= DEFAULT scanpt ID|INDEXED */
150795 204, /* (35) ccons ::= NOT NULL onconf */
150796 204, /* (36) ccons ::= PRIMARY KEY sortorder onconf autoinc */
150797 204, /* (37) ccons ::= UNIQUE onconf */
150798 204, /* (38) ccons ::= CHECK LP expr RP */
150799 204, /* (39) ccons ::= REFERENCES nm eidlist_opt refargs */
150800 204, /* (40) ccons ::= defer_subclause */
150801 204, /* (41) ccons ::= COLLATE ID|STRING */
150802 209, /* (42) autoinc ::= */
150803 209, /* (43) autoinc ::= AUTOINCR */
150804 211, /* (44) refargs ::= */
150805 211, /* (45) refargs ::= refargs refarg */
150806 213, /* (46) refarg ::= MATCH nm */
150807 213, /* (47) refarg ::= ON INSERT refact */
150808 213, /* (48) refarg ::= ON DELETE refact */
150809 213, /* (49) refarg ::= ON UPDATE refact */
150810 214, /* (50) refact ::= SET NULL */
150811 214, /* (51) refact ::= SET DEFAULT */
150812 214, /* (52) refact ::= CASCADE */
150813 214, /* (53) refact ::= RESTRICT */
150814 214, /* (54) refact ::= NO ACTION */
150815 212, /* (55) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
150816 212, /* (56) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
150817 215, /* (57) init_deferred_pred_opt ::= */
150818 215, /* (58) init_deferred_pred_opt ::= INITIALLY DEFERRED */
150819 215, /* (59) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
150820 193, /* (60) conslist_opt ::= */
150821 217, /* (61) tconscomma ::= COMMA */
150822 218, /* (62) tcons ::= CONSTRAINT nm */
150823 218, /* (63) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
150824 218, /* (64) tcons ::= UNIQUE LP sortlist RP onconf */
150825 218, /* (65) tcons ::= CHECK LP expr RP onconf */
150826 218, /* (66) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
150827 221, /* (67) defer_subclause_opt ::= */
150828 207, /* (68) onconf ::= */
150829 207, /* (69) onconf ::= ON CONFLICT resolvetype */
150830 222, /* (70) orconf ::= */
150831 222, /* (71) orconf ::= OR resolvetype */
150832 223, /* (72) resolvetype ::= IGNORE */
150833 223, /* (73) resolvetype ::= REPLACE */
150834 181, /* (74) cmd ::= DROP TABLE ifexists fullname */
150835 225, /* (75) ifexists ::= IF EXISTS */
150836 225, /* (76) ifexists ::= */
150837 181, /* (77) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
150838 181, /* (78) cmd ::= DROP VIEW ifexists fullname */
150839 181, /* (79) cmd ::= select */
150840 195, /* (80) select ::= WITH wqlist selectnowith */
150841 195, /* (81) select ::= WITH RECURSIVE wqlist selectnowith */
150842 195, /* (82) select ::= selectnowith */
150843 227, /* (83) selectnowith ::= selectnowith multiselect_op oneselect */
150844 230, /* (84) multiselect_op ::= UNION */
150845 230, /* (85) multiselect_op ::= UNION ALL */
150846 230, /* (86) multiselect_op ::= EXCEPT|INTERSECT */
150847 228, /* (87) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
150848 228, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
150849 240, /* (89) values ::= VALUES LP nexprlist RP */
150850 240, /* (90) values ::= values COMMA LP nexprlist RP */
150851 231, /* (91) distinct ::= DISTINCT */
150852 231, /* (92) distinct ::= ALL */
150853 231, /* (93) distinct ::= */
150854 242, /* (94) sclp ::= */
150855 232, /* (95) selcollist ::= sclp scanpt expr scanpt as */
150856 232, /* (96) selcollist ::= sclp scanpt STAR */
150857 232, /* (97) selcollist ::= sclp scanpt nm DOT STAR */
150858 243, /* (98) as ::= AS nm */
150859 243, /* (99) as ::= */
150860 233, /* (100) from ::= */
150861 233, /* (101) from ::= FROM seltablist */
150862 245, /* (102) stl_prefix ::= seltablist joinop */
150863 245, /* (103) stl_prefix ::= */
150864 244, /* (104) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
150865 244, /* (105) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
150866 244, /* (106) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
150867 244, /* (107) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
150868 191, /* (108) dbnm ::= */
150869 191, /* (109) dbnm ::= DOT nm */
150870 226, /* (110) fullname ::= nm */
150871 226, /* (111) fullname ::= nm DOT nm */
150872 251, /* (112) xfullname ::= nm */
150873 251, /* (113) xfullname ::= nm DOT nm */
150874 251, /* (114) xfullname ::= nm DOT nm AS nm */
150875 251, /* (115) xfullname ::= nm AS nm */
150876 246, /* (116) joinop ::= COMMA|JOIN */
150877 246, /* (117) joinop ::= JOIN_KW JOIN */
150878 246, /* (118) joinop ::= JOIN_KW nm JOIN */
150879 246, /* (119) joinop ::= JOIN_KW nm nm JOIN */
150880 248, /* (120) on_opt ::= ON expr */
150881 248, /* (121) on_opt ::= */
150882 247, /* (122) indexed_opt ::= */
150883 247, /* (123) indexed_opt ::= INDEXED BY nm */
150884 247, /* (124) indexed_opt ::= NOT INDEXED */
150885 249, /* (125) using_opt ::= USING LP idlist RP */
150886 249, /* (126) using_opt ::= */
150887 237, /* (127) orderby_opt ::= */
150888 237, /* (128) orderby_opt ::= ORDER BY sortlist */
150889 219, /* (129) sortlist ::= sortlist COMMA expr sortorder */
150890 219, /* (130) sortlist ::= expr sortorder */
150891 208, /* (131) sortorder ::= ASC */
150892 208, /* (132) sortorder ::= DESC */
150893 208, /* (133) sortorder ::= */
150894 235, /* (134) groupby_opt ::= */
150895 235, /* (135) groupby_opt ::= GROUP BY nexprlist */
150896 236, /* (136) having_opt ::= */
150897 236, /* (137) having_opt ::= HAVING expr */
150898 238, /* (138) limit_opt ::= */
150899 238, /* (139) limit_opt ::= LIMIT expr */
150900 238, /* (140) limit_opt ::= LIMIT expr OFFSET expr */
150901 238, /* (141) limit_opt ::= LIMIT expr COMMA expr */
150902 181, /* (142) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
150903 234, /* (143) where_opt ::= */
150904 234, /* (144) where_opt ::= WHERE expr */
150905 181, /* (145) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
150906 254, /* (146) setlist ::= setlist COMMA nm EQ expr */
150907 254, /* (147) setlist ::= setlist COMMA LP idlist RP EQ expr */
150908 254, /* (148) setlist ::= nm EQ expr */
150909 254, /* (149) setlist ::= LP idlist RP EQ expr */
150910 181, /* (150) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
150911 181, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
150912 257, /* (152) upsert ::= */
150913 257, /* (153) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
150914 257, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
150915 257, /* (155) upsert ::= ON CONFLICT DO NOTHING */
150916 255, /* (156) insert_cmd ::= INSERT orconf */
150917 255, /* (157) insert_cmd ::= REPLACE */
150918 256, /* (158) idlist_opt ::= */
150919 256, /* (159) idlist_opt ::= LP idlist RP */
150920 252, /* (160) idlist ::= idlist COMMA nm */
150921 252, /* (161) idlist ::= nm */
150922 206, /* (162) expr ::= LP expr RP */
150923 206, /* (163) expr ::= ID|INDEXED */
150924 206, /* (164) expr ::= JOIN_KW */
150925 206, /* (165) expr ::= nm DOT nm */
150926 206, /* (166) expr ::= nm DOT nm DOT nm */
150927 205, /* (167) term ::= NULL|FLOAT|BLOB */
150928 205, /* (168) term ::= STRING */
150929 205, /* (169) term ::= INTEGER */
150930 206, /* (170) expr ::= VARIABLE */
150931 206, /* (171) expr ::= expr COLLATE ID|STRING */
150932 206, /* (172) expr ::= CAST LP expr AS typetoken RP */
150933 206, /* (173) expr ::= ID|INDEXED LP distinct exprlist RP */
150934 206, /* (174) expr ::= ID|INDEXED LP STAR RP */
150935 206, /* (175) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
150936 206, /* (176) expr ::= ID|INDEXED LP STAR RP over_clause */
150937 205, /* (177) term ::= CTIME_KW */
150938 206, /* (178) expr ::= LP nexprlist COMMA expr RP */
150939 206, /* (179) expr ::= expr AND expr */
150940 206, /* (180) expr ::= expr OR expr */
150941 206, /* (181) expr ::= expr LT|GT|GE|LE expr */
150942 206, /* (182) expr ::= expr EQ|NE expr */
150943 206, /* (183) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
150944 206, /* (184) expr ::= expr PLUS|MINUS expr */
150945 206, /* (185) expr ::= expr STAR|SLASH|REM expr */
150946 206, /* (186) expr ::= expr CONCAT expr */
150947 259, /* (187) likeop ::= NOT LIKE_KW|MATCH */
150948 206, /* (188) expr ::= expr likeop expr */
150949 206, /* (189) expr ::= expr likeop expr ESCAPE expr */
150950 206, /* (190) expr ::= expr ISNULL|NOTNULL */
150951 206, /* (191) expr ::= expr NOT NULL */
150952 206, /* (192) expr ::= expr IS expr */
150953 206, /* (193) expr ::= expr IS NOT expr */
150954 206, /* (194) expr ::= NOT expr */
150955 206, /* (195) expr ::= BITNOT expr */
150956 206, /* (196) expr ::= PLUS|MINUS expr */
150957 260, /* (197) between_op ::= BETWEEN */
150958 260, /* (198) between_op ::= NOT BETWEEN */
150959 206, /* (199) expr ::= expr between_op expr AND expr */
150960 261, /* (200) in_op ::= IN */
150961 261, /* (201) in_op ::= NOT IN */
150962 206, /* (202) expr ::= expr in_op LP exprlist RP */
150963 206, /* (203) expr ::= LP select RP */
150964 206, /* (204) expr ::= expr in_op LP select RP */
150965 206, /* (205) expr ::= expr in_op nm dbnm paren_exprlist */
150966 206, /* (206) expr ::= EXISTS LP select RP */
150967 206, /* (207) expr ::= CASE case_operand case_exprlist case_else END */
150968 264, /* (208) case_exprlist ::= case_exprlist WHEN expr THEN expr */
150969 264, /* (209) case_exprlist ::= WHEN expr THEN expr */
150970 265, /* (210) case_else ::= ELSE expr */
150971 265, /* (211) case_else ::= */
150972 263, /* (212) case_operand ::= expr */
150973 263, /* (213) case_operand ::= */
150974 250, /* (214) exprlist ::= */
150975 241, /* (215) nexprlist ::= nexprlist COMMA expr */
150976 241, /* (216) nexprlist ::= expr */
150977 262, /* (217) paren_exprlist ::= */
150978 262, /* (218) paren_exprlist ::= LP exprlist RP */
150979 181, /* (219) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
150980 266, /* (220) uniqueflag ::= UNIQUE */
150981 266, /* (221) uniqueflag ::= */
150982 210, /* (222) eidlist_opt ::= */
150983 210, /* (223) eidlist_opt ::= LP eidlist RP */
150984 220, /* (224) eidlist ::= eidlist COMMA nm collate sortorder */
150985 220, /* (225) eidlist ::= nm collate sortorder */
150986 267, /* (226) collate ::= */
150987 267, /* (227) collate ::= COLLATE ID|STRING */
150988 181, /* (228) cmd ::= DROP INDEX ifexists fullname */
150989 181, /* (229) cmd ::= VACUUM vinto */
150990 181, /* (230) cmd ::= VACUUM nm vinto */
150991 268, /* (231) vinto ::= INTO expr */
150992 268, /* (232) vinto ::= */
150993 181, /* (233) cmd ::= PRAGMA nm dbnm */
150994 181, /* (234) cmd ::= PRAGMA nm dbnm EQ nmnum */
150995 181, /* (235) cmd ::= PRAGMA nm dbnm LP nmnum RP */
150996 181, /* (236) cmd ::= PRAGMA nm dbnm EQ minus_num */
150997 181, /* (237) cmd ::= PRAGMA nm dbnm LP minus_num RP */
150998 201, /* (238) plus_num ::= PLUS INTEGER|FLOAT */
150999 202, /* (239) minus_num ::= MINUS INTEGER|FLOAT */
151000 181, /* (240) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
151001 270, /* (241) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
151002 272, /* (242) trigger_time ::= BEFORE|AFTER */
151003 272, /* (243) trigger_time ::= INSTEAD OF */
151004 272, /* (244) trigger_time ::= */
151005 273, /* (245) trigger_event ::= DELETE|INSERT */
151006 273, /* (246) trigger_event ::= UPDATE */
151007 273, /* (247) trigger_event ::= UPDATE OF idlist */
151008 275, /* (248) when_clause ::= */
151009 275, /* (249) when_clause ::= WHEN expr */
151010 271, /* (250) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
151011 271, /* (251) trigger_cmd_list ::= trigger_cmd SEMI */
151012 277, /* (252) trnm ::= nm DOT nm */
151013 278, /* (253) tridxby ::= INDEXED BY nm */
151014 278, /* (254) tridxby ::= NOT INDEXED */
151015 276, /* (255) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
151016 276, /* (256) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
151017 276, /* (257) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
151018 276, /* (258) trigger_cmd ::= scanpt select scanpt */
151019 206, /* (259) expr ::= RAISE LP IGNORE RP */
151020 206, /* (260) expr ::= RAISE LP raisetype COMMA nm RP */
151021 224, /* (261) raisetype ::= ROLLBACK */
151022 224, /* (262) raisetype ::= ABORT */
151023 224, /* (263) raisetype ::= FAIL */
151024 181, /* (264) cmd ::= DROP TRIGGER ifexists fullname */
151025 181, /* (265) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
151026 181, /* (266) cmd ::= DETACH database_kw_opt expr */
151027 280, /* (267) key_opt ::= */
151028 280, /* (268) key_opt ::= KEY expr */
151029 181, /* (269) cmd ::= REINDEX */
151030 181, /* (270) cmd ::= REINDEX nm dbnm */
151031 181, /* (271) cmd ::= ANALYZE */
151032 181, /* (272) cmd ::= ANALYZE nm dbnm */
151033 181, /* (273) cmd ::= ALTER TABLE fullname RENAME TO nm */
151034 181, /* (274) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
151035 281, /* (275) add_column_fullname ::= fullname */
151036 181, /* (276) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
151037 181, /* (277) cmd ::= create_vtab */
151038 181, /* (278) cmd ::= create_vtab LP vtabarglist RP */
151039 283, /* (279) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
151040 285, /* (280) vtabarg ::= */
151041 286, /* (281) vtabargtoken ::= ANY */
151042 286, /* (282) vtabargtoken ::= lp anylist RP */
151043 287, /* (283) lp ::= LP */
151044 253, /* (284) with ::= WITH wqlist */
151045 253, /* (285) with ::= WITH RECURSIVE wqlist */
151046 229, /* (286) wqlist ::= nm eidlist_opt AS LP select RP */
151047 229, /* (287) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
151048 289, /* (288) windowdefn_list ::= windowdefn */
151049 289, /* (289) windowdefn_list ::= windowdefn_list COMMA windowdefn */
151050 290, /* (290) windowdefn ::= nm AS LP window RP */
151051 291, /* (291) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
151052 291, /* (292) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
151053 291, /* (293) window ::= ORDER BY sortlist frame_opt */
151054 291, /* (294) window ::= nm ORDER BY sortlist frame_opt */
151055 291, /* (295) window ::= frame_opt */
151056 291, /* (296) window ::= nm frame_opt */
151057 292, /* (297) frame_opt ::= */
151058 292, /* (298) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
151059 292, /* (299) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
151060 295, /* (300) range_or_rows ::= RANGE|ROWS|GROUPS */
151061 297, /* (301) frame_bound_s ::= frame_bound */
151062 297, /* (302) frame_bound_s ::= UNBOUNDED PRECEDING */
151063 298, /* (303) frame_bound_e ::= frame_bound */
151064 298, /* (304) frame_bound_e ::= UNBOUNDED FOLLOWING */
151065 296, /* (305) frame_bound ::= expr PRECEDING|FOLLOWING */
151066 296, /* (306) frame_bound ::= CURRENT ROW */
151067 299, /* (307) frame_exclude_opt ::= */
151068 299, /* (308) frame_exclude_opt ::= EXCLUDE frame_exclude */
151069 300, /* (309) frame_exclude ::= NO OTHERS */
151070 300, /* (310) frame_exclude ::= CURRENT ROW */
151071 300, /* (311) frame_exclude ::= GROUP|TIES */
151072 239, /* (312) window_clause ::= WINDOW windowdefn_list */
151073 258, /* (313) over_clause ::= filter_opt OVER LP window RP */
151074 258, /* (314) over_clause ::= filter_opt OVER nm */
151075 294, /* (315) filter_opt ::= */
151076 294, /* (316) filter_opt ::= FILTER LP WHERE expr RP */
151077 176, /* (317) input ::= cmdlist */
151078 177, /* (318) cmdlist ::= cmdlist ecmd */
151079 177, /* (319) cmdlist ::= ecmd */
151080 178, /* (320) ecmd ::= SEMI */
151081 178, /* (321) ecmd ::= cmdx SEMI */
151082 178, /* (322) ecmd ::= explain cmdx */
151083 183, /* (323) trans_opt ::= */
151084 183, /* (324) trans_opt ::= TRANSACTION */
151085 183, /* (325) trans_opt ::= TRANSACTION nm */
151086 185, /* (326) savepoint_opt ::= SAVEPOINT */
151087 185, /* (327) savepoint_opt ::= */
151088 181, /* (328) cmd ::= create_table create_table_args */
151089 192, /* (329) columnlist ::= columnlist COMMA columnname carglist */
151090 192, /* (330) columnlist ::= columnname carglist */
151091 184, /* (331) nm ::= ID|INDEXED */
151092 184, /* (332) nm ::= STRING */
151093 184, /* (333) nm ::= JOIN_KW */
151094 198, /* (334) typetoken ::= typename */
151095 199, /* (335) typename ::= ID|STRING */
151096 200, /* (336) signed ::= plus_num */
151097 200, /* (337) signed ::= minus_num */
151098 197, /* (338) carglist ::= carglist ccons */
151099 197, /* (339) carglist ::= */
151100 204, /* (340) ccons ::= NULL onconf */
151101 193, /* (341) conslist_opt ::= COMMA conslist */
151102 216, /* (342) conslist ::= conslist tconscomma tcons */
151103 216, /* (343) conslist ::= tcons */
151104 217, /* (344) tconscomma ::= */
151105 221, /* (345) defer_subclause_opt ::= defer_subclause */
151106 223, /* (346) resolvetype ::= raisetype */
151107 227, /* (347) selectnowith ::= oneselect */
151108 228, /* (348) oneselect ::= values */
151109 242, /* (349) sclp ::= selcollist COMMA */
151110 243, /* (350) as ::= ID|STRING */
151111 206, /* (351) expr ::= term */
151112 259, /* (352) likeop ::= LIKE_KW|MATCH */
151113 250, /* (353) exprlist ::= nexprlist */
151114 269, /* (354) nmnum ::= plus_num */
151115 269, /* (355) nmnum ::= nm */
151116 269, /* (356) nmnum ::= ON */
151117 269, /* (357) nmnum ::= DELETE */
151118 269, /* (358) nmnum ::= DEFAULT */
151119 201, /* (359) plus_num ::= INTEGER|FLOAT */
151120 274, /* (360) foreach_clause ::= */
151121 274, /* (361) foreach_clause ::= FOR EACH ROW */
151122 277, /* (362) trnm ::= nm */
151123 278, /* (363) tridxby ::= */
151124 279, /* (364) database_kw_opt ::= DATABASE */
151125 279, /* (365) database_kw_opt ::= */
151126 282, /* (366) kwcolumn_opt ::= */
151127 282, /* (367) kwcolumn_opt ::= COLUMNKW */
151128 284, /* (368) vtabarglist ::= vtabarg */
151129 284, /* (369) vtabarglist ::= vtabarglist COMMA vtabarg */
151130 285, /* (370) vtabarg ::= vtabarg vtabargtoken */
151131 288, /* (371) anylist ::= */
151132 288, /* (372) anylist ::= anylist LP anylist RP */
151133 288, /* (373) anylist ::= anylist ANY */
151134 253, /* (374) with ::= */
 
151135 };
151136
151137 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
151138 ** of symbols on the right-hand side of that rule. */
151139 static const signed char yyRuleInfoNRhs[] = {
@@ -151164,356 +151314,357 @@
151164 0, /* (24) typetoken ::= */
151165 -4, /* (25) typetoken ::= typename LP signed RP */
151166 -6, /* (26) typetoken ::= typename LP signed COMMA signed RP */
151167 -2, /* (27) typename ::= typename ID|STRING */
151168 0, /* (28) scanpt ::= */
151169 -2, /* (29) ccons ::= CONSTRAINT nm */
151170 -4, /* (30) ccons ::= DEFAULT scanpt term scanpt */
151171 -4, /* (31) ccons ::= DEFAULT LP expr RP */
151172 -4, /* (32) ccons ::= DEFAULT PLUS term scanpt */
151173 -4, /* (33) ccons ::= DEFAULT MINUS term scanpt */
151174 -3, /* (34) ccons ::= DEFAULT scanpt ID|INDEXED */
151175 -3, /* (35) ccons ::= NOT NULL onconf */
151176 -5, /* (36) ccons ::= PRIMARY KEY sortorder onconf autoinc */
151177 -2, /* (37) ccons ::= UNIQUE onconf */
151178 -4, /* (38) ccons ::= CHECK LP expr RP */
151179 -4, /* (39) ccons ::= REFERENCES nm eidlist_opt refargs */
151180 -1, /* (40) ccons ::= defer_subclause */
151181 -2, /* (41) ccons ::= COLLATE ID|STRING */
151182 0, /* (42) autoinc ::= */
151183 -1, /* (43) autoinc ::= AUTOINCR */
151184 0, /* (44) refargs ::= */
151185 -2, /* (45) refargs ::= refargs refarg */
151186 -2, /* (46) refarg ::= MATCH nm */
151187 -3, /* (47) refarg ::= ON INSERT refact */
151188 -3, /* (48) refarg ::= ON DELETE refact */
151189 -3, /* (49) refarg ::= ON UPDATE refact */
151190 -2, /* (50) refact ::= SET NULL */
151191 -2, /* (51) refact ::= SET DEFAULT */
151192 -1, /* (52) refact ::= CASCADE */
151193 -1, /* (53) refact ::= RESTRICT */
151194 -2, /* (54) refact ::= NO ACTION */
151195 -3, /* (55) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
151196 -2, /* (56) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
151197 0, /* (57) init_deferred_pred_opt ::= */
151198 -2, /* (58) init_deferred_pred_opt ::= INITIALLY DEFERRED */
151199 -2, /* (59) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
151200 0, /* (60) conslist_opt ::= */
151201 -1, /* (61) tconscomma ::= COMMA */
151202 -2, /* (62) tcons ::= CONSTRAINT nm */
151203 -7, /* (63) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
151204 -5, /* (64) tcons ::= UNIQUE LP sortlist RP onconf */
151205 -5, /* (65) tcons ::= CHECK LP expr RP onconf */
151206 -10, /* (66) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
151207 0, /* (67) defer_subclause_opt ::= */
151208 0, /* (68) onconf ::= */
151209 -3, /* (69) onconf ::= ON CONFLICT resolvetype */
151210 0, /* (70) orconf ::= */
151211 -2, /* (71) orconf ::= OR resolvetype */
151212 -1, /* (72) resolvetype ::= IGNORE */
151213 -1, /* (73) resolvetype ::= REPLACE */
151214 -4, /* (74) cmd ::= DROP TABLE ifexists fullname */
151215 -2, /* (75) ifexists ::= IF EXISTS */
151216 0, /* (76) ifexists ::= */
151217 -9, /* (77) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
151218 -4, /* (78) cmd ::= DROP VIEW ifexists fullname */
151219 -1, /* (79) cmd ::= select */
151220 -3, /* (80) select ::= WITH wqlist selectnowith */
151221 -4, /* (81) select ::= WITH RECURSIVE wqlist selectnowith */
151222 -1, /* (82) select ::= selectnowith */
151223 -3, /* (83) selectnowith ::= selectnowith multiselect_op oneselect */
151224 -1, /* (84) multiselect_op ::= UNION */
151225 -2, /* (85) multiselect_op ::= UNION ALL */
151226 -1, /* (86) multiselect_op ::= EXCEPT|INTERSECT */
151227 -9, /* (87) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
151228 -10, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
151229 -4, /* (89) values ::= VALUES LP nexprlist RP */
151230 -5, /* (90) values ::= values COMMA LP nexprlist RP */
151231 -1, /* (91) distinct ::= DISTINCT */
151232 -1, /* (92) distinct ::= ALL */
151233 0, /* (93) distinct ::= */
151234 0, /* (94) sclp ::= */
151235 -5, /* (95) selcollist ::= sclp scanpt expr scanpt as */
151236 -3, /* (96) selcollist ::= sclp scanpt STAR */
151237 -5, /* (97) selcollist ::= sclp scanpt nm DOT STAR */
151238 -2, /* (98) as ::= AS nm */
151239 0, /* (99) as ::= */
151240 0, /* (100) from ::= */
151241 -2, /* (101) from ::= FROM seltablist */
151242 -2, /* (102) stl_prefix ::= seltablist joinop */
151243 0, /* (103) stl_prefix ::= */
151244 -7, /* (104) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
151245 -9, /* (105) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
151246 -7, /* (106) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
151247 -7, /* (107) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
151248 0, /* (108) dbnm ::= */
151249 -2, /* (109) dbnm ::= DOT nm */
151250 -1, /* (110) fullname ::= nm */
151251 -3, /* (111) fullname ::= nm DOT nm */
151252 -1, /* (112) xfullname ::= nm */
151253 -3, /* (113) xfullname ::= nm DOT nm */
151254 -5, /* (114) xfullname ::= nm DOT nm AS nm */
151255 -3, /* (115) xfullname ::= nm AS nm */
151256 -1, /* (116) joinop ::= COMMA|JOIN */
151257 -2, /* (117) joinop ::= JOIN_KW JOIN */
151258 -3, /* (118) joinop ::= JOIN_KW nm JOIN */
151259 -4, /* (119) joinop ::= JOIN_KW nm nm JOIN */
151260 -2, /* (120) on_opt ::= ON expr */
151261 0, /* (121) on_opt ::= */
151262 0, /* (122) indexed_opt ::= */
151263 -3, /* (123) indexed_opt ::= INDEXED BY nm */
151264 -2, /* (124) indexed_opt ::= NOT INDEXED */
151265 -4, /* (125) using_opt ::= USING LP idlist RP */
151266 0, /* (126) using_opt ::= */
151267 0, /* (127) orderby_opt ::= */
151268 -3, /* (128) orderby_opt ::= ORDER BY sortlist */
151269 -4, /* (129) sortlist ::= sortlist COMMA expr sortorder */
151270 -2, /* (130) sortlist ::= expr sortorder */
151271 -1, /* (131) sortorder ::= ASC */
151272 -1, /* (132) sortorder ::= DESC */
151273 0, /* (133) sortorder ::= */
151274 0, /* (134) groupby_opt ::= */
151275 -3, /* (135) groupby_opt ::= GROUP BY nexprlist */
151276 0, /* (136) having_opt ::= */
151277 -2, /* (137) having_opt ::= HAVING expr */
151278 0, /* (138) limit_opt ::= */
151279 -2, /* (139) limit_opt ::= LIMIT expr */
151280 -4, /* (140) limit_opt ::= LIMIT expr OFFSET expr */
151281 -4, /* (141) limit_opt ::= LIMIT expr COMMA expr */
151282 -6, /* (142) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
151283 0, /* (143) where_opt ::= */
151284 -2, /* (144) where_opt ::= WHERE expr */
151285 -8, /* (145) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
151286 -5, /* (146) setlist ::= setlist COMMA nm EQ expr */
151287 -7, /* (147) setlist ::= setlist COMMA LP idlist RP EQ expr */
151288 -3, /* (148) setlist ::= nm EQ expr */
151289 -5, /* (149) setlist ::= LP idlist RP EQ expr */
151290 -7, /* (150) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
151291 -7, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
151292 0, /* (152) upsert ::= */
151293 -11, /* (153) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
151294 -8, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
151295 -4, /* (155) upsert ::= ON CONFLICT DO NOTHING */
151296 -2, /* (156) insert_cmd ::= INSERT orconf */
151297 -1, /* (157) insert_cmd ::= REPLACE */
151298 0, /* (158) idlist_opt ::= */
151299 -3, /* (159) idlist_opt ::= LP idlist RP */
151300 -3, /* (160) idlist ::= idlist COMMA nm */
151301 -1, /* (161) idlist ::= nm */
151302 -3, /* (162) expr ::= LP expr RP */
151303 -1, /* (163) expr ::= ID|INDEXED */
151304 -1, /* (164) expr ::= JOIN_KW */
151305 -3, /* (165) expr ::= nm DOT nm */
151306 -5, /* (166) expr ::= nm DOT nm DOT nm */
151307 -1, /* (167) term ::= NULL|FLOAT|BLOB */
151308 -1, /* (168) term ::= STRING */
151309 -1, /* (169) term ::= INTEGER */
151310 -1, /* (170) expr ::= VARIABLE */
151311 -3, /* (171) expr ::= expr COLLATE ID|STRING */
151312 -6, /* (172) expr ::= CAST LP expr AS typetoken RP */
151313 -5, /* (173) expr ::= ID|INDEXED LP distinct exprlist RP */
151314 -4, /* (174) expr ::= ID|INDEXED LP STAR RP */
151315 -6, /* (175) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
151316 -5, /* (176) expr ::= ID|INDEXED LP STAR RP over_clause */
151317 -1, /* (177) term ::= CTIME_KW */
151318 -5, /* (178) expr ::= LP nexprlist COMMA expr RP */
151319 -3, /* (179) expr ::= expr AND expr */
151320 -3, /* (180) expr ::= expr OR expr */
151321 -3, /* (181) expr ::= expr LT|GT|GE|LE expr */
151322 -3, /* (182) expr ::= expr EQ|NE expr */
151323 -3, /* (183) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
151324 -3, /* (184) expr ::= expr PLUS|MINUS expr */
151325 -3, /* (185) expr ::= expr STAR|SLASH|REM expr */
151326 -3, /* (186) expr ::= expr CONCAT expr */
151327 -2, /* (187) likeop ::= NOT LIKE_KW|MATCH */
151328 -3, /* (188) expr ::= expr likeop expr */
151329 -5, /* (189) expr ::= expr likeop expr ESCAPE expr */
151330 -2, /* (190) expr ::= expr ISNULL|NOTNULL */
151331 -3, /* (191) expr ::= expr NOT NULL */
151332 -3, /* (192) expr ::= expr IS expr */
151333 -4, /* (193) expr ::= expr IS NOT expr */
151334 -2, /* (194) expr ::= NOT expr */
151335 -2, /* (195) expr ::= BITNOT expr */
151336 -2, /* (196) expr ::= PLUS|MINUS expr */
151337 -1, /* (197) between_op ::= BETWEEN */
151338 -2, /* (198) between_op ::= NOT BETWEEN */
151339 -5, /* (199) expr ::= expr between_op expr AND expr */
151340 -1, /* (200) in_op ::= IN */
151341 -2, /* (201) in_op ::= NOT IN */
151342 -5, /* (202) expr ::= expr in_op LP exprlist RP */
151343 -3, /* (203) expr ::= LP select RP */
151344 -5, /* (204) expr ::= expr in_op LP select RP */
151345 -5, /* (205) expr ::= expr in_op nm dbnm paren_exprlist */
151346 -4, /* (206) expr ::= EXISTS LP select RP */
151347 -5, /* (207) expr ::= CASE case_operand case_exprlist case_else END */
151348 -5, /* (208) case_exprlist ::= case_exprlist WHEN expr THEN expr */
151349 -4, /* (209) case_exprlist ::= WHEN expr THEN expr */
151350 -2, /* (210) case_else ::= ELSE expr */
151351 0, /* (211) case_else ::= */
151352 -1, /* (212) case_operand ::= expr */
151353 0, /* (213) case_operand ::= */
151354 0, /* (214) exprlist ::= */
151355 -3, /* (215) nexprlist ::= nexprlist COMMA expr */
151356 -1, /* (216) nexprlist ::= expr */
151357 0, /* (217) paren_exprlist ::= */
151358 -3, /* (218) paren_exprlist ::= LP exprlist RP */
151359 -12, /* (219) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
151360 -1, /* (220) uniqueflag ::= UNIQUE */
151361 0, /* (221) uniqueflag ::= */
151362 0, /* (222) eidlist_opt ::= */
151363 -3, /* (223) eidlist_opt ::= LP eidlist RP */
151364 -5, /* (224) eidlist ::= eidlist COMMA nm collate sortorder */
151365 -3, /* (225) eidlist ::= nm collate sortorder */
151366 0, /* (226) collate ::= */
151367 -2, /* (227) collate ::= COLLATE ID|STRING */
151368 -4, /* (228) cmd ::= DROP INDEX ifexists fullname */
151369 -2, /* (229) cmd ::= VACUUM vinto */
151370 -3, /* (230) cmd ::= VACUUM nm vinto */
151371 -2, /* (231) vinto ::= INTO expr */
151372 0, /* (232) vinto ::= */
151373 -3, /* (233) cmd ::= PRAGMA nm dbnm */
151374 -5, /* (234) cmd ::= PRAGMA nm dbnm EQ nmnum */
151375 -6, /* (235) cmd ::= PRAGMA nm dbnm LP nmnum RP */
151376 -5, /* (236) cmd ::= PRAGMA nm dbnm EQ minus_num */
151377 -6, /* (237) cmd ::= PRAGMA nm dbnm LP minus_num RP */
151378 -2, /* (238) plus_num ::= PLUS INTEGER|FLOAT */
151379 -2, /* (239) minus_num ::= MINUS INTEGER|FLOAT */
151380 -5, /* (240) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
151381 -11, /* (241) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
151382 -1, /* (242) trigger_time ::= BEFORE|AFTER */
151383 -2, /* (243) trigger_time ::= INSTEAD OF */
151384 0, /* (244) trigger_time ::= */
151385 -1, /* (245) trigger_event ::= DELETE|INSERT */
151386 -1, /* (246) trigger_event ::= UPDATE */
151387 -3, /* (247) trigger_event ::= UPDATE OF idlist */
151388 0, /* (248) when_clause ::= */
151389 -2, /* (249) when_clause ::= WHEN expr */
151390 -3, /* (250) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
151391 -2, /* (251) trigger_cmd_list ::= trigger_cmd SEMI */
151392 -3, /* (252) trnm ::= nm DOT nm */
151393 -3, /* (253) tridxby ::= INDEXED BY nm */
151394 -2, /* (254) tridxby ::= NOT INDEXED */
151395 -8, /* (255) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
151396 -8, /* (256) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
151397 -6, /* (257) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
151398 -3, /* (258) trigger_cmd ::= scanpt select scanpt */
151399 -4, /* (259) expr ::= RAISE LP IGNORE RP */
151400 -6, /* (260) expr ::= RAISE LP raisetype COMMA nm RP */
151401 -1, /* (261) raisetype ::= ROLLBACK */
151402 -1, /* (262) raisetype ::= ABORT */
151403 -1, /* (263) raisetype ::= FAIL */
151404 -4, /* (264) cmd ::= DROP TRIGGER ifexists fullname */
151405 -6, /* (265) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
151406 -3, /* (266) cmd ::= DETACH database_kw_opt expr */
151407 0, /* (267) key_opt ::= */
151408 -2, /* (268) key_opt ::= KEY expr */
151409 -1, /* (269) cmd ::= REINDEX */
151410 -3, /* (270) cmd ::= REINDEX nm dbnm */
151411 -1, /* (271) cmd ::= ANALYZE */
151412 -3, /* (272) cmd ::= ANALYZE nm dbnm */
151413 -6, /* (273) cmd ::= ALTER TABLE fullname RENAME TO nm */
151414 -7, /* (274) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
151415 -1, /* (275) add_column_fullname ::= fullname */
151416 -8, /* (276) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
151417 -1, /* (277) cmd ::= create_vtab */
151418 -4, /* (278) cmd ::= create_vtab LP vtabarglist RP */
151419 -8, /* (279) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
151420 0, /* (280) vtabarg ::= */
151421 -1, /* (281) vtabargtoken ::= ANY */
151422 -3, /* (282) vtabargtoken ::= lp anylist RP */
151423 -1, /* (283) lp ::= LP */
151424 -2, /* (284) with ::= WITH wqlist */
151425 -3, /* (285) with ::= WITH RECURSIVE wqlist */
151426 -6, /* (286) wqlist ::= nm eidlist_opt AS LP select RP */
151427 -8, /* (287) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
151428 -1, /* (288) windowdefn_list ::= windowdefn */
151429 -3, /* (289) windowdefn_list ::= windowdefn_list COMMA windowdefn */
151430 -5, /* (290) windowdefn ::= nm AS LP window RP */
151431 -5, /* (291) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
151432 -6, /* (292) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
151433 -4, /* (293) window ::= ORDER BY sortlist frame_opt */
151434 -5, /* (294) window ::= nm ORDER BY sortlist frame_opt */
151435 -1, /* (295) window ::= frame_opt */
151436 -2, /* (296) window ::= nm frame_opt */
151437 0, /* (297) frame_opt ::= */
151438 -3, /* (298) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
151439 -6, /* (299) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
151440 -1, /* (300) range_or_rows ::= RANGE|ROWS|GROUPS */
151441 -1, /* (301) frame_bound_s ::= frame_bound */
151442 -2, /* (302) frame_bound_s ::= UNBOUNDED PRECEDING */
151443 -1, /* (303) frame_bound_e ::= frame_bound */
151444 -2, /* (304) frame_bound_e ::= UNBOUNDED FOLLOWING */
151445 -2, /* (305) frame_bound ::= expr PRECEDING|FOLLOWING */
151446 -2, /* (306) frame_bound ::= CURRENT ROW */
151447 0, /* (307) frame_exclude_opt ::= */
151448 -2, /* (308) frame_exclude_opt ::= EXCLUDE frame_exclude */
151449 -2, /* (309) frame_exclude ::= NO OTHERS */
151450 -2, /* (310) frame_exclude ::= CURRENT ROW */
151451 -1, /* (311) frame_exclude ::= GROUP|TIES */
151452 -2, /* (312) window_clause ::= WINDOW windowdefn_list */
151453 -5, /* (313) over_clause ::= filter_opt OVER LP window RP */
151454 -3, /* (314) over_clause ::= filter_opt OVER nm */
151455 0, /* (315) filter_opt ::= */
151456 -5, /* (316) filter_opt ::= FILTER LP WHERE expr RP */
151457 -1, /* (317) input ::= cmdlist */
151458 -2, /* (318) cmdlist ::= cmdlist ecmd */
151459 -1, /* (319) cmdlist ::= ecmd */
151460 -1, /* (320) ecmd ::= SEMI */
151461 -2, /* (321) ecmd ::= cmdx SEMI */
151462 -2, /* (322) ecmd ::= explain cmdx */
151463 0, /* (323) trans_opt ::= */
151464 -1, /* (324) trans_opt ::= TRANSACTION */
151465 -2, /* (325) trans_opt ::= TRANSACTION nm */
151466 -1, /* (326) savepoint_opt ::= SAVEPOINT */
151467 0, /* (327) savepoint_opt ::= */
151468 -2, /* (328) cmd ::= create_table create_table_args */
151469 -4, /* (329) columnlist ::= columnlist COMMA columnname carglist */
151470 -2, /* (330) columnlist ::= columnname carglist */
151471 -1, /* (331) nm ::= ID|INDEXED */
151472 -1, /* (332) nm ::= STRING */
151473 -1, /* (333) nm ::= JOIN_KW */
151474 -1, /* (334) typetoken ::= typename */
151475 -1, /* (335) typename ::= ID|STRING */
151476 -1, /* (336) signed ::= plus_num */
151477 -1, /* (337) signed ::= minus_num */
151478 -2, /* (338) carglist ::= carglist ccons */
151479 0, /* (339) carglist ::= */
151480 -2, /* (340) ccons ::= NULL onconf */
151481 -2, /* (341) conslist_opt ::= COMMA conslist */
151482 -3, /* (342) conslist ::= conslist tconscomma tcons */
151483 -1, /* (343) conslist ::= tcons */
151484 0, /* (344) tconscomma ::= */
151485 -1, /* (345) defer_subclause_opt ::= defer_subclause */
151486 -1, /* (346) resolvetype ::= raisetype */
151487 -1, /* (347) selectnowith ::= oneselect */
151488 -1, /* (348) oneselect ::= values */
151489 -2, /* (349) sclp ::= selcollist COMMA */
151490 -1, /* (350) as ::= ID|STRING */
151491 -1, /* (351) expr ::= term */
151492 -1, /* (352) likeop ::= LIKE_KW|MATCH */
151493 -1, /* (353) exprlist ::= nexprlist */
151494 -1, /* (354) nmnum ::= plus_num */
151495 -1, /* (355) nmnum ::= nm */
151496 -1, /* (356) nmnum ::= ON */
151497 -1, /* (357) nmnum ::= DELETE */
151498 -1, /* (358) nmnum ::= DEFAULT */
151499 -1, /* (359) plus_num ::= INTEGER|FLOAT */
151500 0, /* (360) foreach_clause ::= */
151501 -3, /* (361) foreach_clause ::= FOR EACH ROW */
151502 -1, /* (362) trnm ::= nm */
151503 0, /* (363) tridxby ::= */
151504 -1, /* (364) database_kw_opt ::= DATABASE */
151505 0, /* (365) database_kw_opt ::= */
151506 0, /* (366) kwcolumn_opt ::= */
151507 -1, /* (367) kwcolumn_opt ::= COLUMNKW */
151508 -1, /* (368) vtabarglist ::= vtabarg */
151509 -3, /* (369) vtabarglist ::= vtabarglist COMMA vtabarg */
151510 -2, /* (370) vtabarg ::= vtabarg vtabargtoken */
151511 0, /* (371) anylist ::= */
151512 -4, /* (372) anylist ::= anylist LP anylist RP */
151513 -2, /* (373) anylist ::= anylist ANY */
151514 0, /* (374) with ::= */
 
151515 };
151516
151517 static void yy_accept(yyParser*); /* Forward Declaration */
151518
151519 /*
@@ -151606,20 +151757,20 @@
151606 break;
151607 case 2: /* cmdx ::= cmd */
151608 { sqlite3FinishCoding(pParse); }
151609 break;
151610 case 3: /* cmd ::= BEGIN transtype trans_opt */
151611 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy494);}
151612 break;
151613 case 4: /* transtype ::= */
151614 {yymsp[1].minor.yy494 = TK_DEFERRED;}
151615 break;
151616 case 5: /* transtype ::= DEFERRED */
151617 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
151618 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
151619 case 300: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==300);
151620 {yymsp[0].minor.yy494 = yymsp[0].major; /*A-overwrites-X*/}
151621 break;
151622 case 8: /* cmd ::= COMMIT|END trans_opt */
151623 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
151624 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
151625 break;
@@ -151638,61 +151789,61 @@
151638 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
151639 }
151640 break;
151641 case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
151642 {
151643 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy494,0,0,yymsp[-2].minor.yy494);
151644 }
151645 break;
151646 case 14: /* createkw ::= CREATE */
151647 {disableLookaside(pParse);}
151648 break;
151649 case 15: /* ifnotexists ::= */
151650 case 18: /* temp ::= */ yytestcase(yyruleno==18);
151651 case 21: /* table_options ::= */ yytestcase(yyruleno==21);
151652 case 42: /* autoinc ::= */ yytestcase(yyruleno==42);
151653 case 57: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==57);
151654 case 67: /* defer_subclause_opt ::= */ yytestcase(yyruleno==67);
151655 case 76: /* ifexists ::= */ yytestcase(yyruleno==76);
151656 case 93: /* distinct ::= */ yytestcase(yyruleno==93);
151657 case 226: /* collate ::= */ yytestcase(yyruleno==226);
151658 {yymsp[1].minor.yy494 = 0;}
151659 break;
151660 case 16: /* ifnotexists ::= IF NOT EXISTS */
151661 {yymsp[-2].minor.yy494 = 1;}
151662 break;
151663 case 17: /* temp ::= TEMP */
151664 case 43: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==43);
151665 {yymsp[0].minor.yy494 = 1;}
151666 break;
151667 case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
151668 {
151669 sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy494,0);
151670 }
151671 break;
151672 case 20: /* create_table_args ::= AS select */
151673 {
151674 sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy457);
151675 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy457);
151676 }
151677 break;
151678 case 22: /* table_options ::= WITHOUT nm */
151679 {
151680 if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
151681 yymsp[-1].minor.yy494 = TF_WithoutRowid | TF_NoVisibleRowid;
151682 }else{
151683 yymsp[-1].minor.yy494 = 0;
151684 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
151685 }
151686 }
151687 break;
151688 case 23: /* columnname ::= nm typetoken */
151689 {sqlite3AddColumn(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
151690 break;
151691 case 24: /* typetoken ::= */
151692 case 60: /* conslist_opt ::= */ yytestcase(yyruleno==60);
151693 case 99: /* as ::= */ yytestcase(yyruleno==99);
151694 {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;}
151695 break;
151696 case 25: /* typetoken ::= typename LP signed RP */
151697 {
151698 yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z);
@@ -151707,352 +151858,358 @@
151707 {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
151708 break;
151709 case 28: /* scanpt ::= */
151710 {
151711 assert( yyLookahead!=YYNOCODE );
151712 yymsp[1].minor.yy294 = yyLookaheadToken.z;
151713 }
151714 break;
151715 case 29: /* ccons ::= CONSTRAINT nm */
151716 case 62: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==62);
 
 
 
 
 
 
151717 {pParse->constraintName = yymsp[0].minor.yy0;}
151718 break;
151719 case 30: /* ccons ::= DEFAULT scanpt term scanpt */
151720 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy524,yymsp[-2].minor.yy294,yymsp[0].minor.yy294);}
151721 break;
151722 case 31: /* ccons ::= DEFAULT LP expr RP */
151723 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy524,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
151724 break;
151725 case 32: /* ccons ::= DEFAULT PLUS term scanpt */
151726 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy524,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy294);}
151727 break;
151728 case 33: /* ccons ::= DEFAULT MINUS term scanpt */
151729 {
151730 Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[-1].minor.yy524, 0);
151731 sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy294);
151732 }
151733 break;
151734 case 34: /* ccons ::= DEFAULT scanpt ID|INDEXED */
151735 {
151736 Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0);
151737 if( p ){
151738 sqlite3ExprIdToTrueFalse(p);
151739 testcase( p->op==TK_TRUEFALSE && sqlite3ExprTruthValue(p) );
151740 }
151741 sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
151742 }
151743 break;
151744 case 35: /* ccons ::= NOT NULL onconf */
151745 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy494);}
151746 break;
151747 case 36: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
151748 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy494,yymsp[0].minor.yy494,yymsp[-2].minor.yy494);}
151749 break;
151750 case 37: /* ccons ::= UNIQUE onconf */
151751 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy494,0,0,0,0,
151752 SQLITE_IDXTYPE_UNIQUE);}
151753 break;
151754 case 38: /* ccons ::= CHECK LP expr RP */
151755 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy524);}
151756 break;
151757 case 39: /* ccons ::= REFERENCES nm eidlist_opt refargs */
151758 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy434,yymsp[0].minor.yy494);}
151759 break;
151760 case 40: /* ccons ::= defer_subclause */
151761 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy494);}
151762 break;
151763 case 41: /* ccons ::= COLLATE ID|STRING */
151764 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
151765 break;
151766 case 44: /* refargs ::= */
151767 { yymsp[1].minor.yy494 = OE_None*0x0101; /* EV: R-19803-45884 */}
151768 break;
151769 case 45: /* refargs ::= refargs refarg */
151770 { yymsp[-1].minor.yy494 = (yymsp[-1].minor.yy494 & ~yymsp[0].minor.yy355.mask) | yymsp[0].minor.yy355.value; }
151771 break;
151772 case 46: /* refarg ::= MATCH nm */
151773 { yymsp[-1].minor.yy355.value = 0; yymsp[-1].minor.yy355.mask = 0x000000; }
151774 break;
151775 case 47: /* refarg ::= ON INSERT refact */
151776 { yymsp[-2].minor.yy355.value = 0; yymsp[-2].minor.yy355.mask = 0x000000; }
151777 break;
151778 case 48: /* refarg ::= ON DELETE refact */
151779 { yymsp[-2].minor.yy355.value = yymsp[0].minor.yy494; yymsp[-2].minor.yy355.mask = 0x0000ff; }
151780 break;
151781 case 49: /* refarg ::= ON UPDATE refact */
151782 { yymsp[-2].minor.yy355.value = yymsp[0].minor.yy494<<8; yymsp[-2].minor.yy355.mask = 0x00ff00; }
151783 break;
151784 case 50: /* refact ::= SET NULL */
151785 { yymsp[-1].minor.yy494 = OE_SetNull; /* EV: R-33326-45252 */}
151786 break;
151787 case 51: /* refact ::= SET DEFAULT */
151788 { yymsp[-1].minor.yy494 = OE_SetDflt; /* EV: R-33326-45252 */}
151789 break;
151790 case 52: /* refact ::= CASCADE */
151791 { yymsp[0].minor.yy494 = OE_Cascade; /* EV: R-33326-45252 */}
151792 break;
151793 case 53: /* refact ::= RESTRICT */
151794 { yymsp[0].minor.yy494 = OE_Restrict; /* EV: R-33326-45252 */}
151795 break;
151796 case 54: /* refact ::= NO ACTION */
151797 { yymsp[-1].minor.yy494 = OE_None; /* EV: R-33326-45252 */}
151798 break;
151799 case 55: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
151800 {yymsp[-2].minor.yy494 = 0;}
151801 break;
151802 case 56: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
151803 case 71: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==71);
151804 case 156: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==156);
151805 {yymsp[-1].minor.yy494 = yymsp[0].minor.yy494;}
151806 break;
151807 case 58: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
151808 case 75: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==75);
151809 case 198: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==198);
151810 case 201: /* in_op ::= NOT IN */ yytestcase(yyruleno==201);
151811 case 227: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==227);
151812 {yymsp[-1].minor.yy494 = 1;}
151813 break;
151814 case 59: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
151815 {yymsp[-1].minor.yy494 = 0;}
151816 break;
151817 case 61: /* tconscomma ::= COMMA */
151818 {pParse->constraintName.n = 0;}
151819 break;
151820 case 63: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
151821 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy434,yymsp[0].minor.yy494,yymsp[-2].minor.yy494,0);}
151822 break;
151823 case 64: /* tcons ::= UNIQUE LP sortlist RP onconf */
151824 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy434,yymsp[0].minor.yy494,0,0,0,0,
151825 SQLITE_IDXTYPE_UNIQUE);}
151826 break;
151827 case 65: /* tcons ::= CHECK LP expr RP onconf */
151828 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy524);}
151829 break;
151830 case 66: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
151831 {
151832 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy434, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy434, yymsp[-1].minor.yy494);
151833 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy494);
151834 }
151835 break;
151836 case 68: /* onconf ::= */
151837 case 70: /* orconf ::= */ yytestcase(yyruleno==70);
151838 {yymsp[1].minor.yy494 = OE_Default;}
151839 break;
151840 case 69: /* onconf ::= ON CONFLICT resolvetype */
151841 {yymsp[-2].minor.yy494 = yymsp[0].minor.yy494;}
151842 break;
151843 case 72: /* resolvetype ::= IGNORE */
151844 {yymsp[0].minor.yy494 = OE_Ignore;}
151845 break;
151846 case 73: /* resolvetype ::= REPLACE */
151847 case 157: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==157);
151848 {yymsp[0].minor.yy494 = OE_Replace;}
151849 break;
151850 case 74: /* cmd ::= DROP TABLE ifexists fullname */
151851 {
151852 sqlite3DropTable(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy494);
151853 }
151854 break;
151855 case 77: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
151856 {
151857 sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy434, yymsp[0].minor.yy457, yymsp[-7].minor.yy494, yymsp[-5].minor.yy494);
151858 }
151859 break;
151860 case 78: /* cmd ::= DROP VIEW ifexists fullname */
151861 {
151862 sqlite3DropTable(pParse, yymsp[0].minor.yy483, 1, yymsp[-1].minor.yy494);
151863 }
151864 break;
151865 case 79: /* cmd ::= select */
151866 {
151867 SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0};
151868 sqlite3Select(pParse, yymsp[0].minor.yy457, &dest);
151869 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy457);
151870 }
151871 break;
151872 case 80: /* select ::= WITH wqlist selectnowith */
151873 {
151874 Select *p = yymsp[0].minor.yy457;
151875 if( p ){
151876 p->pWith = yymsp[-1].minor.yy59;
151877 parserDoubleLinkSelect(pParse, p);
151878 }else{
151879 sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy59);
151880 }
151881 yymsp[-2].minor.yy457 = p;
151882 }
151883 break;
151884 case 81: /* select ::= WITH RECURSIVE wqlist selectnowith */
151885 {
151886 Select *p = yymsp[0].minor.yy457;
151887 if( p ){
151888 p->pWith = yymsp[-1].minor.yy59;
151889 parserDoubleLinkSelect(pParse, p);
151890 }else{
151891 sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy59);
151892 }
151893 yymsp[-3].minor.yy457 = p;
151894 }
151895 break;
151896 case 82: /* select ::= selectnowith */
151897 {
151898 Select *p = yymsp[0].minor.yy457;
151899 if( p ){
151900 parserDoubleLinkSelect(pParse, p);
151901 }
151902 yymsp[0].minor.yy457 = p; /*A-overwrites-X*/
151903 }
151904 break;
151905 case 83: /* selectnowith ::= selectnowith multiselect_op oneselect */
151906 {
151907 Select *pRhs = yymsp[0].minor.yy457;
151908 Select *pLhs = yymsp[-2].minor.yy457;
151909 if( pRhs && pRhs->pPrior ){
151910 SrcList *pFrom;
151911 Token x;
151912 x.n = 0;
151913 parserDoubleLinkSelect(pParse, pRhs);
151914 pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
151915 pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
151916 }
151917 if( pRhs ){
151918 pRhs->op = (u8)yymsp[-1].minor.yy494;
151919 pRhs->pPrior = pLhs;
151920 if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
151921 pRhs->selFlags &= ~SF_MultiValue;
151922 if( yymsp[-1].minor.yy494!=TK_ALL ) pParse->hasCompound = 1;
151923 }else{
151924 sqlite3SelectDelete(pParse->db, pLhs);
151925 }
151926 yymsp[-2].minor.yy457 = pRhs;
151927 }
151928 break;
151929 case 84: /* multiselect_op ::= UNION */
151930 case 86: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==86);
151931 {yymsp[0].minor.yy494 = yymsp[0].major; /*A-overwrites-OP*/}
151932 break;
151933 case 85: /* multiselect_op ::= UNION ALL */
151934 {yymsp[-1].minor.yy494 = TK_ALL;}
151935 break;
151936 case 87: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
151937 {
151938 yymsp[-8].minor.yy457 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy434,yymsp[-5].minor.yy483,yymsp[-4].minor.yy524,yymsp[-3].minor.yy434,yymsp[-2].minor.yy524,yymsp[-1].minor.yy434,yymsp[-7].minor.yy494,yymsp[0].minor.yy524);
151939 }
151940 break;
151941 case 88: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
151942 {
151943 yymsp[-9].minor.yy457 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy434,yymsp[-6].minor.yy483,yymsp[-5].minor.yy524,yymsp[-4].minor.yy434,yymsp[-3].minor.yy524,yymsp[-1].minor.yy434,yymsp[-8].minor.yy494,yymsp[0].minor.yy524);
151944 if( yymsp[-9].minor.yy457 ){
151945 yymsp[-9].minor.yy457->pWinDefn = yymsp[-2].minor.yy295;
151946 }else{
151947 sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy295);
151948 }
151949 }
151950 break;
151951 case 89: /* values ::= VALUES LP nexprlist RP */
151952 {
151953 yymsp[-3].minor.yy457 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy434,0,0,0,0,0,SF_Values,0);
151954 }
151955 break;
151956 case 90: /* values ::= values COMMA LP nexprlist RP */
151957 {
151958 Select *pRight, *pLeft = yymsp[-4].minor.yy457;
151959 pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy434,0,0,0,0,0,SF_Values|SF_MultiValue,0);
151960 if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
151961 if( pRight ){
151962 pRight->op = TK_ALL;
151963 pRight->pPrior = pLeft;
151964 yymsp[-4].minor.yy457 = pRight;
151965 }else{
151966 yymsp[-4].minor.yy457 = pLeft;
151967 }
151968 }
151969 break;
151970 case 91: /* distinct ::= DISTINCT */
151971 {yymsp[0].minor.yy494 = SF_Distinct;}
151972 break;
151973 case 92: /* distinct ::= ALL */
151974 {yymsp[0].minor.yy494 = SF_All;}
151975 break;
151976 case 94: /* sclp ::= */
151977 case 127: /* orderby_opt ::= */ yytestcase(yyruleno==127);
151978 case 134: /* groupby_opt ::= */ yytestcase(yyruleno==134);
151979 case 214: /* exprlist ::= */ yytestcase(yyruleno==214);
151980 case 217: /* paren_exprlist ::= */ yytestcase(yyruleno==217);
151981 case 222: /* eidlist_opt ::= */ yytestcase(yyruleno==222);
151982 {yymsp[1].minor.yy434 = 0;}
151983 break;
151984 case 95: /* selcollist ::= sclp scanpt expr scanpt as */
151985 {
151986 yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy434, yymsp[-2].minor.yy524);
151987 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy434, &yymsp[0].minor.yy0, 1);
151988 sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy434,yymsp[-3].minor.yy294,yymsp[-1].minor.yy294);
151989 }
151990 break;
151991 case 96: /* selcollist ::= sclp scanpt STAR */
151992 {
151993 Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
151994 yymsp[-2].minor.yy434 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy434, p);
151995 }
151996 break;
151997 case 97: /* selcollist ::= sclp scanpt nm DOT STAR */
151998 {
151999 Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
152000 Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
152001 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
152002 yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy434, pDot);
152003 }
152004 break;
152005 case 98: /* as ::= AS nm */
152006 case 109: /* dbnm ::= DOT nm */ yytestcase(yyruleno==109);
152007 case 238: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==238);
152008 case 239: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==239);
152009 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
152010 break;
152011 case 100: /* from ::= */
152012 {yymsp[1].minor.yy483 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy483));}
152013 break;
152014 case 101: /* from ::= FROM seltablist */
152015 {
152016 yymsp[-1].minor.yy483 = yymsp[0].minor.yy483;
152017 sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy483);
152018 }
152019 break;
152020 case 102: /* stl_prefix ::= seltablist joinop */
152021 {
152022 if( ALWAYS(yymsp[-1].minor.yy483 && yymsp[-1].minor.yy483->nSrc>0) ) yymsp[-1].minor.yy483->a[yymsp[-1].minor.yy483->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy494;
152023 }
152024 break;
152025 case 103: /* stl_prefix ::= */
152026 {yymsp[1].minor.yy483 = 0;}
152027 break;
152028 case 104: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
152029 {
152030 yymsp[-6].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy483,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152031 sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy483, &yymsp[-2].minor.yy0);
152032 }
152033 break;
152034 case 105: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
152035 {
152036 yymsp[-8].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy483,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152037 sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy483, yymsp[-4].minor.yy434);
152038 }
152039 break;
152040 case 106: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
152041 {
152042 yymsp[-6].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy483,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy457,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152043 }
152044 break;
152045 case 107: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
152046 {
152047 if( yymsp[-6].minor.yy483==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy524==0 && yymsp[0].minor.yy62==0 ){
152048 yymsp[-6].minor.yy483 = yymsp[-4].minor.yy483;
152049 }else if( yymsp[-4].minor.yy483->nSrc==1 ){
152050 yymsp[-6].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy483,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152051 if( yymsp[-6].minor.yy483 ){
152052 struct SrcList_item *pNew = &yymsp[-6].minor.yy483->a[yymsp[-6].minor.yy483->nSrc-1];
152053 struct SrcList_item *pOld = yymsp[-4].minor.yy483->a;
152054 pNew->zName = pOld->zName;
152055 pNew->zDatabase = pOld->zDatabase;
152056 pNew->pSelect = pOld->pSelect;
152057 if( pOld->fg.isTabFunc ){
152058 pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -152061,417 +152218,417 @@
152061 pNew->fg.isTabFunc = 1;
152062 }
152063 pOld->zName = pOld->zDatabase = 0;
152064 pOld->pSelect = 0;
152065 }
152066 sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy483);
152067 }else{
152068 Select *pSubquery;
152069 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy483);
152070 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy483,0,0,0,0,SF_NestedFrom,0);
152071 yymsp[-6].minor.yy483 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy483,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy524,yymsp[0].minor.yy62);
152072 }
152073 }
152074 break;
152075 case 108: /* dbnm ::= */
152076 case 122: /* indexed_opt ::= */ yytestcase(yyruleno==122);
152077 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
152078 break;
152079 case 110: /* fullname ::= nm */
152080 {
152081 yylhsminor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
152082 if( IN_RENAME_OBJECT && yylhsminor.yy483 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy483->a[0].zName, &yymsp[0].minor.yy0);
152083 }
152084 yymsp[0].minor.yy483 = yylhsminor.yy483;
152085 break;
152086 case 111: /* fullname ::= nm DOT nm */
152087 {
152088 yylhsminor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
152089 if( IN_RENAME_OBJECT && yylhsminor.yy483 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy483->a[0].zName, &yymsp[0].minor.yy0);
152090 }
152091 yymsp[-2].minor.yy483 = yylhsminor.yy483;
152092 break;
152093 case 112: /* xfullname ::= nm */
152094 {yymsp[0].minor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
152095 break;
152096 case 113: /* xfullname ::= nm DOT nm */
152097 {yymsp[-2].minor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
152098 break;
152099 case 114: /* xfullname ::= nm DOT nm AS nm */
152100 {
152101 yymsp[-4].minor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
152102 if( yymsp[-4].minor.yy483 ) yymsp[-4].minor.yy483->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
152103 }
152104 break;
152105 case 115: /* xfullname ::= nm AS nm */
152106 {
152107 yymsp[-2].minor.yy483 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
152108 if( yymsp[-2].minor.yy483 ) yymsp[-2].minor.yy483->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
152109 }
152110 break;
152111 case 116: /* joinop ::= COMMA|JOIN */
152112 { yymsp[0].minor.yy494 = JT_INNER; }
152113 break;
152114 case 117: /* joinop ::= JOIN_KW JOIN */
152115 {yymsp[-1].minor.yy494 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
152116 break;
152117 case 118: /* joinop ::= JOIN_KW nm JOIN */
152118 {yymsp[-2].minor.yy494 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
152119 break;
152120 case 119: /* joinop ::= JOIN_KW nm nm JOIN */
152121 {yymsp[-3].minor.yy494 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
152122 break;
152123 case 120: /* on_opt ::= ON expr */
152124 case 137: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==137);
152125 case 144: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==144);
152126 case 210: /* case_else ::= ELSE expr */ yytestcase(yyruleno==210);
152127 case 231: /* vinto ::= INTO expr */ yytestcase(yyruleno==231);
152128 {yymsp[-1].minor.yy524 = yymsp[0].minor.yy524;}
152129 break;
152130 case 121: /* on_opt ::= */
152131 case 136: /* having_opt ::= */ yytestcase(yyruleno==136);
152132 case 138: /* limit_opt ::= */ yytestcase(yyruleno==138);
152133 case 143: /* where_opt ::= */ yytestcase(yyruleno==143);
152134 case 211: /* case_else ::= */ yytestcase(yyruleno==211);
152135 case 213: /* case_operand ::= */ yytestcase(yyruleno==213);
152136 case 232: /* vinto ::= */ yytestcase(yyruleno==232);
152137 {yymsp[1].minor.yy524 = 0;}
152138 break;
152139 case 123: /* indexed_opt ::= INDEXED BY nm */
152140 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
152141 break;
152142 case 124: /* indexed_opt ::= NOT INDEXED */
152143 {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
152144 break;
152145 case 125: /* using_opt ::= USING LP idlist RP */
152146 {yymsp[-3].minor.yy62 = yymsp[-1].minor.yy62;}
152147 break;
152148 case 126: /* using_opt ::= */
152149 case 158: /* idlist_opt ::= */ yytestcase(yyruleno==158);
152150 {yymsp[1].minor.yy62 = 0;}
152151 break;
152152 case 128: /* orderby_opt ::= ORDER BY sortlist */
152153 case 135: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==135);
152154 {yymsp[-2].minor.yy434 = yymsp[0].minor.yy434;}
152155 break;
152156 case 129: /* sortlist ::= sortlist COMMA expr sortorder */
152157 {
152158 yymsp[-3].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy434,yymsp[-1].minor.yy524);
152159 sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy434,yymsp[0].minor.yy494);
152160 }
152161 break;
152162 case 130: /* sortlist ::= expr sortorder */
152163 {
152164 yymsp[-1].minor.yy434 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy524); /*A-overwrites-Y*/
152165 sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy434,yymsp[0].minor.yy494);
152166 }
152167 break;
152168 case 131: /* sortorder ::= ASC */
152169 {yymsp[0].minor.yy494 = SQLITE_SO_ASC;}
152170 break;
152171 case 132: /* sortorder ::= DESC */
152172 {yymsp[0].minor.yy494 = SQLITE_SO_DESC;}
152173 break;
152174 case 133: /* sortorder ::= */
152175 {yymsp[1].minor.yy494 = SQLITE_SO_UNDEFINED;}
152176 break;
152177 case 139: /* limit_opt ::= LIMIT expr */
152178 {yymsp[-1].minor.yy524 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy524,0);}
152179 break;
152180 case 140: /* limit_opt ::= LIMIT expr OFFSET expr */
152181 {yymsp[-3].minor.yy524 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy524,yymsp[0].minor.yy524);}
152182 break;
152183 case 141: /* limit_opt ::= LIMIT expr COMMA expr */
152184 {yymsp[-3].minor.yy524 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy524,yymsp[-2].minor.yy524);}
152185 break;
152186 case 142: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
152187 {
152188 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy483, &yymsp[-1].minor.yy0);
152189 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy483,yymsp[0].minor.yy524,0,0);
152190 }
152191 break;
152192 case 145: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
152193 {
152194 sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy483, &yymsp[-3].minor.yy0);
152195 sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy434,"set list");
152196 sqlite3Update(pParse,yymsp[-4].minor.yy483,yymsp[-1].minor.yy434,yymsp[0].minor.yy524,yymsp[-5].minor.yy494,0,0,0);
152197 }
152198 break;
152199 case 146: /* setlist ::= setlist COMMA nm EQ expr */
152200 {
152201 yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy434, yymsp[0].minor.yy524);
152202 sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy434, &yymsp[-2].minor.yy0, 1);
152203 }
152204 break;
152205 case 147: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
152206 {
152207 yymsp[-6].minor.yy434 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy434, yymsp[-3].minor.yy62, yymsp[0].minor.yy524);
152208 }
152209 break;
152210 case 148: /* setlist ::= nm EQ expr */
152211 {
152212 yylhsminor.yy434 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy524);
152213 sqlite3ExprListSetName(pParse, yylhsminor.yy434, &yymsp[-2].minor.yy0, 1);
152214 }
152215 yymsp[-2].minor.yy434 = yylhsminor.yy434;
152216 break;
152217 case 149: /* setlist ::= LP idlist RP EQ expr */
152218 {
152219 yymsp[-4].minor.yy434 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy62, yymsp[0].minor.yy524);
152220 }
152221 break;
152222 case 150: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
152223 {
152224 sqlite3Insert(pParse, yymsp[-3].minor.yy483, yymsp[-1].minor.yy457, yymsp[-2].minor.yy62, yymsp[-5].minor.yy494, yymsp[0].minor.yy136);
152225 }
152226 break;
152227 case 151: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
152228 {
152229 sqlite3Insert(pParse, yymsp[-3].minor.yy483, 0, yymsp[-2].minor.yy62, yymsp[-5].minor.yy494, 0);
152230 }
152231 break;
152232 case 152: /* upsert ::= */
152233 { yymsp[1].minor.yy136 = 0; }
152234 break;
152235 case 153: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
152236 { yymsp[-10].minor.yy136 = sqlite3UpsertNew(pParse->db,yymsp[-7].minor.yy434,yymsp[-5].minor.yy524,yymsp[-1].minor.yy434,yymsp[0].minor.yy524);}
152237 break;
152238 case 154: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
152239 { yymsp[-7].minor.yy136 = sqlite3UpsertNew(pParse->db,yymsp[-4].minor.yy434,yymsp[-2].minor.yy524,0,0); }
152240 break;
152241 case 155: /* upsert ::= ON CONFLICT DO NOTHING */
152242 { yymsp[-3].minor.yy136 = sqlite3UpsertNew(pParse->db,0,0,0,0); }
152243 break;
152244 case 159: /* idlist_opt ::= LP idlist RP */
152245 {yymsp[-2].minor.yy62 = yymsp[-1].minor.yy62;}
152246 break;
152247 case 160: /* idlist ::= idlist COMMA nm */
152248 {yymsp[-2].minor.yy62 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy62,&yymsp[0].minor.yy0);}
152249 break;
152250 case 161: /* idlist ::= nm */
152251 {yymsp[0].minor.yy62 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
152252 break;
152253 case 162: /* expr ::= LP expr RP */
152254 {yymsp[-2].minor.yy524 = yymsp[-1].minor.yy524;}
152255 break;
152256 case 163: /* expr ::= ID|INDEXED */
152257 case 164: /* expr ::= JOIN_KW */ yytestcase(yyruleno==164);
152258 {yymsp[0].minor.yy524=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
152259 break;
152260 case 165: /* expr ::= nm DOT nm */
152261 {
152262 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
152263 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
152264 if( IN_RENAME_OBJECT ){
152265 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
152266 sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
152267 }
152268 yylhsminor.yy524 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
152269 }
152270 yymsp[-2].minor.yy524 = yylhsminor.yy524;
152271 break;
152272 case 166: /* expr ::= nm DOT nm DOT nm */
152273 {
152274 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
152275 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
152276 Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
152277 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
152278 if( IN_RENAME_OBJECT ){
152279 sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
152280 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
152281 }
152282 yylhsminor.yy524 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
152283 }
152284 yymsp[-4].minor.yy524 = yylhsminor.yy524;
152285 break;
152286 case 167: /* term ::= NULL|FLOAT|BLOB */
152287 case 168: /* term ::= STRING */ yytestcase(yyruleno==168);
152288 {yymsp[0].minor.yy524=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
152289 break;
152290 case 169: /* term ::= INTEGER */
152291 {
152292 yylhsminor.yy524 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
152293 }
152294 yymsp[0].minor.yy524 = yylhsminor.yy524;
152295 break;
152296 case 170: /* expr ::= VARIABLE */
152297 {
152298 if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
152299 u32 n = yymsp[0].minor.yy0.n;
152300 yymsp[0].minor.yy524 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
152301 sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy524, n);
152302 }else{
152303 /* When doing a nested parse, one can include terms in an expression
152304 ** that look like this: #1 #2 ... These terms refer to registers
152305 ** in the virtual machine. #N is the N-th register. */
152306 Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
152307 assert( t.n>=2 );
152308 if( pParse->nested==0 ){
152309 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
152310 yymsp[0].minor.yy524 = 0;
152311 }else{
152312 yymsp[0].minor.yy524 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
152313 if( yymsp[0].minor.yy524 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy524->iTable);
152314 }
152315 }
152316 }
152317 break;
152318 case 171: /* expr ::= expr COLLATE ID|STRING */
152319 {
152320 yymsp[-2].minor.yy524 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy524, &yymsp[0].minor.yy0, 1);
152321 }
152322 break;
152323 case 172: /* expr ::= CAST LP expr AS typetoken RP */
152324 {
152325 yymsp[-5].minor.yy524 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
152326 sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy524, yymsp[-3].minor.yy524, 0);
152327 }
152328 break;
152329 case 173: /* expr ::= ID|INDEXED LP distinct exprlist RP */
152330 {
152331 yylhsminor.yy524 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy434, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy494);
152332 }
152333 yymsp[-4].minor.yy524 = yylhsminor.yy524;
152334 break;
152335 case 174: /* expr ::= ID|INDEXED LP STAR RP */
152336 {
152337 yylhsminor.yy524 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
152338 }
152339 yymsp[-3].minor.yy524 = yylhsminor.yy524;
152340 break;
152341 case 175: /* expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
152342 {
152343 yylhsminor.yy524 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy434, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy494);
152344 sqlite3WindowAttach(pParse, yylhsminor.yy524, yymsp[0].minor.yy295);
152345 }
152346 yymsp[-5].minor.yy524 = yylhsminor.yy524;
152347 break;
152348 case 176: /* expr ::= ID|INDEXED LP STAR RP over_clause */
152349 {
152350 yylhsminor.yy524 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
152351 sqlite3WindowAttach(pParse, yylhsminor.yy524, yymsp[0].minor.yy295);
152352 }
152353 yymsp[-4].minor.yy524 = yylhsminor.yy524;
152354 break;
152355 case 177: /* term ::= CTIME_KW */
152356 {
152357 yylhsminor.yy524 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
152358 }
152359 yymsp[0].minor.yy524 = yylhsminor.yy524;
152360 break;
152361 case 178: /* expr ::= LP nexprlist COMMA expr RP */
152362 {
152363 ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy434, yymsp[-1].minor.yy524);
152364 yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
152365 if( yymsp[-4].minor.yy524 ){
152366 yymsp[-4].minor.yy524->x.pList = pList;
152367 }else{
152368 sqlite3ExprListDelete(pParse->db, pList);
152369 }
152370 }
152371 break;
152372 case 179: /* expr ::= expr AND expr */
152373 {yymsp[-2].minor.yy524=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy524,yymsp[0].minor.yy524);}
152374 break;
152375 case 180: /* expr ::= expr OR expr */
152376 case 181: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==181);
152377 case 182: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==182);
152378 case 183: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==183);
152379 case 184: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==184);
152380 case 185: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==185);
152381 case 186: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==186);
152382 {yymsp[-2].minor.yy524=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy524,yymsp[0].minor.yy524);}
152383 break;
152384 case 187: /* likeop ::= NOT LIKE_KW|MATCH */
152385 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
152386 break;
152387 case 188: /* expr ::= expr likeop expr */
152388 {
152389 ExprList *pList;
152390 int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
152391 yymsp[-1].minor.yy0.n &= 0x7fffffff;
152392 pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy524);
152393 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy524);
152394 yymsp[-2].minor.yy524 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
152395 if( bNot ) yymsp[-2].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy524, 0);
152396 if( yymsp[-2].minor.yy524 ) yymsp[-2].minor.yy524->flags |= EP_InfixFunc;
152397 }
152398 break;
152399 case 189: /* expr ::= expr likeop expr ESCAPE expr */
152400 {
152401 ExprList *pList;
152402 int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
152403 yymsp[-3].minor.yy0.n &= 0x7fffffff;
152404 pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy524);
152405 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy524);
152406 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy524);
152407 yymsp[-4].minor.yy524 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
152408 if( bNot ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152409 if( yymsp[-4].minor.yy524 ) yymsp[-4].minor.yy524->flags |= EP_InfixFunc;
152410 }
152411 break;
152412 case 190: /* expr ::= expr ISNULL|NOTNULL */
152413 {yymsp[-1].minor.yy524 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy524,0);}
152414 break;
152415 case 191: /* expr ::= expr NOT NULL */
152416 {yymsp[-2].minor.yy524 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy524,0);}
152417 break;
152418 case 192: /* expr ::= expr IS expr */
152419 {
152420 yymsp[-2].minor.yy524 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy524,yymsp[0].minor.yy524);
152421 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy524, yymsp[-2].minor.yy524, TK_ISNULL);
152422 }
152423 break;
152424 case 193: /* expr ::= expr IS NOT expr */
152425 {
152426 yymsp[-3].minor.yy524 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy524,yymsp[0].minor.yy524);
152427 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy524, yymsp[-3].minor.yy524, TK_NOTNULL);
152428 }
152429 break;
152430 case 194: /* expr ::= NOT expr */
152431 case 195: /* expr ::= BITNOT expr */ yytestcase(yyruleno==195);
152432 {yymsp[-1].minor.yy524 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy524, 0);/*A-overwrites-B*/}
152433 break;
152434 case 196: /* expr ::= PLUS|MINUS expr */
152435 {
152436 yymsp[-1].minor.yy524 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy524, 0);
152437 /*A-overwrites-B*/
152438 }
152439 break;
152440 case 197: /* between_op ::= BETWEEN */
152441 case 200: /* in_op ::= IN */ yytestcase(yyruleno==200);
152442 {yymsp[0].minor.yy494 = 0;}
152443 break;
152444 case 199: /* expr ::= expr between_op expr AND expr */
152445 {
152446 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy524);
152447 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy524);
152448 yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy524, 0);
152449 if( yymsp[-4].minor.yy524 ){
152450 yymsp[-4].minor.yy524->x.pList = pList;
152451 }else{
152452 sqlite3ExprListDelete(pParse->db, pList);
152453 }
152454 if( yymsp[-3].minor.yy494 ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152455 }
152456 break;
152457 case 202: /* expr ::= expr in_op LP exprlist RP */
152458 {
152459 if( yymsp[-1].minor.yy434==0 ){
152460 /* Expressions of the form
152461 **
152462 ** expr1 IN ()
152463 ** expr1 NOT IN ()
152464 **
152465 ** simplify to constants 0 (false) and 1 (true), respectively,
152466 ** regardless of the value of expr1.
152467 */
152468 if( IN_RENAME_OBJECT==0 ){
152469 sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy524);
152470 yymsp[-4].minor.yy524 = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[yymsp[-3].minor.yy494],1);
152471 }
152472 }else if( yymsp[-1].minor.yy434->nExpr==1 ){
152473 /* Expressions of the form:
152474 **
152475 ** expr1 IN (?1)
152476 ** expr1 NOT IN (?2)
152477 **
@@ -152484,532 +152641,532 @@
152484 ** But, the RHS of the == or <> is marked with the EP_Generic flag
152485 ** so that it may not contribute to the computation of comparison
152486 ** affinity or the collating sequence to use for comparison. Otherwise,
152487 ** the semantics would be subtly different from IN or NOT IN.
152488 */
152489 Expr *pRHS = yymsp[-1].minor.yy434->a[0].pExpr;
152490 yymsp[-1].minor.yy434->a[0].pExpr = 0;
152491 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy434);
152492 /* pRHS cannot be NULL because a malloc error would have been detected
152493 ** before now and control would have never reached this point */
152494 if( ALWAYS(pRHS) ){
152495 pRHS->flags &= ~EP_Collate;
152496 pRHS->flags |= EP_Generic;
152497 }
152498 yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, yymsp[-3].minor.yy494 ? TK_NE : TK_EQ, yymsp[-4].minor.yy524, pRHS);
152499 }else{
152500 yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy524, 0);
152501 if( yymsp[-4].minor.yy524 ){
152502 yymsp[-4].minor.yy524->x.pList = yymsp[-1].minor.yy434;
152503 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy524);
152504 }else{
152505 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy434);
152506 }
152507 if( yymsp[-3].minor.yy494 ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152508 }
152509 }
152510 break;
152511 case 203: /* expr ::= LP select RP */
152512 {
152513 yymsp[-2].minor.yy524 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
152514 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy524, yymsp[-1].minor.yy457);
152515 }
152516 break;
152517 case 204: /* expr ::= expr in_op LP select RP */
152518 {
152519 yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy524, 0);
152520 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy524, yymsp[-1].minor.yy457);
152521 if( yymsp[-3].minor.yy494 ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152522 }
152523 break;
152524 case 205: /* expr ::= expr in_op nm dbnm paren_exprlist */
152525 {
152526 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
152527 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
152528 if( yymsp[0].minor.yy434 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy434);
152529 yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy524, 0);
152530 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy524, pSelect);
152531 if( yymsp[-3].minor.yy494 ) yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy524, 0);
152532 }
152533 break;
152534 case 206: /* expr ::= EXISTS LP select RP */
152535 {
152536 Expr *p;
152537 p = yymsp[-3].minor.yy524 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
152538 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy457);
152539 }
152540 break;
152541 case 207: /* expr ::= CASE case_operand case_exprlist case_else END */
152542 {
152543 yymsp[-4].minor.yy524 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy524, 0);
152544 if( yymsp[-4].minor.yy524 ){
152545 yymsp[-4].minor.yy524->x.pList = yymsp[-1].minor.yy524 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy434,yymsp[-1].minor.yy524) : yymsp[-2].minor.yy434;
152546 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy524);
152547 }else{
152548 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy434);
152549 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy524);
152550 }
152551 }
152552 break;
152553 case 208: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
152554 {
152555 yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy434, yymsp[-2].minor.yy524);
152556 yymsp[-4].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy434, yymsp[0].minor.yy524);
152557 }
152558 break;
152559 case 209: /* case_exprlist ::= WHEN expr THEN expr */
152560 {
152561 yymsp[-3].minor.yy434 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy524);
152562 yymsp[-3].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy434, yymsp[0].minor.yy524);
152563 }
152564 break;
152565 case 212: /* case_operand ::= expr */
152566 {yymsp[0].minor.yy524 = yymsp[0].minor.yy524; /*A-overwrites-X*/}
152567 break;
152568 case 215: /* nexprlist ::= nexprlist COMMA expr */
152569 {yymsp[-2].minor.yy434 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy434,yymsp[0].minor.yy524);}
152570 break;
152571 case 216: /* nexprlist ::= expr */
152572 {yymsp[0].minor.yy434 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy524); /*A-overwrites-Y*/}
152573 break;
152574 case 218: /* paren_exprlist ::= LP exprlist RP */
152575 case 223: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==223);
152576 {yymsp[-2].minor.yy434 = yymsp[-1].minor.yy434;}
152577 break;
152578 case 219: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
152579 {
152580 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
152581 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy434, yymsp[-10].minor.yy494,
152582 &yymsp[-11].minor.yy0, yymsp[0].minor.yy524, SQLITE_SO_ASC, yymsp[-8].minor.yy494, SQLITE_IDXTYPE_APPDEF);
152583 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
152584 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
152585 }
152586 }
152587 break;
152588 case 220: /* uniqueflag ::= UNIQUE */
152589 case 262: /* raisetype ::= ABORT */ yytestcase(yyruleno==262);
152590 {yymsp[0].minor.yy494 = OE_Abort;}
152591 break;
152592 case 221: /* uniqueflag ::= */
152593 {yymsp[1].minor.yy494 = OE_None;}
152594 break;
152595 case 224: /* eidlist ::= eidlist COMMA nm collate sortorder */
152596 {
152597 yymsp[-4].minor.yy434 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy434, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy494, yymsp[0].minor.yy494);
152598 }
152599 break;
152600 case 225: /* eidlist ::= nm collate sortorder */
152601 {
152602 yymsp[-2].minor.yy434 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy494, yymsp[0].minor.yy494); /*A-overwrites-Y*/
152603 }
152604 break;
152605 case 228: /* cmd ::= DROP INDEX ifexists fullname */
152606 {sqlite3DropIndex(pParse, yymsp[0].minor.yy483, yymsp[-1].minor.yy494);}
152607 break;
152608 case 229: /* cmd ::= VACUUM vinto */
152609 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy524);}
152610 break;
152611 case 230: /* cmd ::= VACUUM nm vinto */
152612 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy524);}
152613 break;
152614 case 233: /* cmd ::= PRAGMA nm dbnm */
152615 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
152616 break;
152617 case 234: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
152618 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
152619 break;
152620 case 235: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
152621 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
152622 break;
152623 case 236: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
152624 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
152625 break;
152626 case 237: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
152627 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
152628 break;
152629 case 240: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
152630 {
152631 Token all;
152632 all.z = yymsp[-3].minor.yy0.z;
152633 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
152634 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy455, &all);
152635 }
152636 break;
152637 case 241: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
152638 {
152639 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy494, yymsp[-4].minor.yy90.a, yymsp[-4].minor.yy90.b, yymsp[-2].minor.yy483, yymsp[0].minor.yy524, yymsp[-10].minor.yy494, yymsp[-8].minor.yy494);
152640 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
152641 }
152642 break;
152643 case 242: /* trigger_time ::= BEFORE|AFTER */
152644 { yymsp[0].minor.yy494 = yymsp[0].major; /*A-overwrites-X*/ }
152645 break;
152646 case 243: /* trigger_time ::= INSTEAD OF */
152647 { yymsp[-1].minor.yy494 = TK_INSTEAD;}
152648 break;
152649 case 244: /* trigger_time ::= */
152650 { yymsp[1].minor.yy494 = TK_BEFORE; }
152651 break;
152652 case 245: /* trigger_event ::= DELETE|INSERT */
152653 case 246: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==246);
152654 {yymsp[0].minor.yy90.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy90.b = 0;}
152655 break;
152656 case 247: /* trigger_event ::= UPDATE OF idlist */
152657 {yymsp[-2].minor.yy90.a = TK_UPDATE; yymsp[-2].minor.yy90.b = yymsp[0].minor.yy62;}
152658 break;
152659 case 248: /* when_clause ::= */
152660 case 267: /* key_opt ::= */ yytestcase(yyruleno==267);
152661 case 315: /* filter_opt ::= */ yytestcase(yyruleno==315);
152662 { yymsp[1].minor.yy524 = 0; }
152663 break;
152664 case 249: /* when_clause ::= WHEN expr */
152665 case 268: /* key_opt ::= KEY expr */ yytestcase(yyruleno==268);
152666 { yymsp[-1].minor.yy524 = yymsp[0].minor.yy524; }
152667 break;
152668 case 250: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
152669 {
152670 assert( yymsp[-2].minor.yy455!=0 );
152671 yymsp[-2].minor.yy455->pLast->pNext = yymsp[-1].minor.yy455;
152672 yymsp[-2].minor.yy455->pLast = yymsp[-1].minor.yy455;
152673 }
152674 break;
152675 case 251: /* trigger_cmd_list ::= trigger_cmd SEMI */
152676 {
152677 assert( yymsp[-1].minor.yy455!=0 );
152678 yymsp[-1].minor.yy455->pLast = yymsp[-1].minor.yy455;
152679 }
152680 break;
152681 case 252: /* trnm ::= nm DOT nm */
152682 {
152683 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
152684 sqlite3ErrorMsg(pParse,
152685 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
152686 "statements within triggers");
152687 }
152688 break;
152689 case 253: /* tridxby ::= INDEXED BY nm */
152690 {
152691 sqlite3ErrorMsg(pParse,
152692 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
152693 "within triggers");
152694 }
152695 break;
152696 case 254: /* tridxby ::= NOT INDEXED */
152697 {
152698 sqlite3ErrorMsg(pParse,
152699 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
152700 "within triggers");
152701 }
152702 break;
152703 case 255: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
152704 {yylhsminor.yy455 = sqlite3TriggerUpdateStep(pParse, &yymsp[-5].minor.yy0, yymsp[-2].minor.yy434, yymsp[-1].minor.yy524, yymsp[-6].minor.yy494, yymsp[-7].minor.yy0.z, yymsp[0].minor.yy294);}
152705 yymsp[-7].minor.yy455 = yylhsminor.yy455;
152706 break;
152707 case 256: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
152708 {
152709 yylhsminor.yy455 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy62,yymsp[-2].minor.yy457,yymsp[-6].minor.yy494,yymsp[-1].minor.yy136,yymsp[-7].minor.yy294,yymsp[0].minor.yy294);/*yylhsminor.yy455-overwrites-yymsp[-6].minor.yy494*/
152710 }
152711 yymsp[-7].minor.yy455 = yylhsminor.yy455;
152712 break;
152713 case 257: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
152714 {yylhsminor.yy455 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy524, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy294);}
152715 yymsp[-5].minor.yy455 = yylhsminor.yy455;
152716 break;
152717 case 258: /* trigger_cmd ::= scanpt select scanpt */
152718 {yylhsminor.yy455 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy457, yymsp[-2].minor.yy294, yymsp[0].minor.yy294); /*yylhsminor.yy455-overwrites-yymsp[-1].minor.yy457*/}
152719 yymsp[-2].minor.yy455 = yylhsminor.yy455;
152720 break;
152721 case 259: /* expr ::= RAISE LP IGNORE RP */
152722 {
152723 yymsp[-3].minor.yy524 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
152724 if( yymsp[-3].minor.yy524 ){
152725 yymsp[-3].minor.yy524->affinity = OE_Ignore;
152726 }
152727 }
152728 break;
152729 case 260: /* expr ::= RAISE LP raisetype COMMA nm RP */
152730 {
152731 yymsp[-5].minor.yy524 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
152732 if( yymsp[-5].minor.yy524 ) {
152733 yymsp[-5].minor.yy524->affinity = (char)yymsp[-3].minor.yy494;
152734 }
152735 }
152736 break;
152737 case 261: /* raisetype ::= ROLLBACK */
152738 {yymsp[0].minor.yy494 = OE_Rollback;}
152739 break;
152740 case 263: /* raisetype ::= FAIL */
152741 {yymsp[0].minor.yy494 = OE_Fail;}
152742 break;
152743 case 264: /* cmd ::= DROP TRIGGER ifexists fullname */
152744 {
152745 sqlite3DropTrigger(pParse,yymsp[0].minor.yy483,yymsp[-1].minor.yy494);
152746 }
152747 break;
152748 case 265: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
152749 {
152750 sqlite3Attach(pParse, yymsp[-3].minor.yy524, yymsp[-1].minor.yy524, yymsp[0].minor.yy524);
152751 }
152752 break;
152753 case 266: /* cmd ::= DETACH database_kw_opt expr */
152754 {
152755 sqlite3Detach(pParse, yymsp[0].minor.yy524);
152756 }
152757 break;
152758 case 269: /* cmd ::= REINDEX */
152759 {sqlite3Reindex(pParse, 0, 0);}
152760 break;
152761 case 270: /* cmd ::= REINDEX nm dbnm */
152762 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
152763 break;
152764 case 271: /* cmd ::= ANALYZE */
152765 {sqlite3Analyze(pParse, 0, 0);}
152766 break;
152767 case 272: /* cmd ::= ANALYZE nm dbnm */
152768 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
152769 break;
152770 case 273: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
152771 {
152772 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy483,&yymsp[0].minor.yy0);
152773 }
152774 break;
152775 case 274: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
152776 {
152777 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
152778 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
152779 }
152780 break;
152781 case 275: /* add_column_fullname ::= fullname */
152782 {
152783 disableLookaside(pParse);
152784 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy483);
152785 }
152786 break;
152787 case 276: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
152788 {
152789 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy483, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
152790 }
152791 break;
152792 case 277: /* cmd ::= create_vtab */
152793 {sqlite3VtabFinishParse(pParse,0);}
152794 break;
152795 case 278: /* cmd ::= create_vtab LP vtabarglist RP */
152796 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
152797 break;
152798 case 279: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
152799 {
152800 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy494);
152801 }
152802 break;
152803 case 280: /* vtabarg ::= */
152804 {sqlite3VtabArgInit(pParse);}
152805 break;
152806 case 281: /* vtabargtoken ::= ANY */
152807 case 282: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==282);
152808 case 283: /* lp ::= LP */ yytestcase(yyruleno==283);
152809 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
152810 break;
152811 case 284: /* with ::= WITH wqlist */
152812 case 285: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==285);
152813 { sqlite3WithPush(pParse, yymsp[0].minor.yy59, 1); }
152814 break;
152815 case 286: /* wqlist ::= nm eidlist_opt AS LP select RP */
152816 {
152817 yymsp[-5].minor.yy59 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy434, yymsp[-1].minor.yy457); /*A-overwrites-X*/
152818 }
152819 break;
152820 case 287: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
152821 {
152822 yymsp[-7].minor.yy59 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy59, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy434, yymsp[-1].minor.yy457);
152823 }
152824 break;
152825 case 288: /* windowdefn_list ::= windowdefn */
152826 { yylhsminor.yy295 = yymsp[0].minor.yy295; }
152827 yymsp[0].minor.yy295 = yylhsminor.yy295;
152828 break;
152829 case 289: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
152830 {
152831 assert( yymsp[0].minor.yy295!=0 );
152832 sqlite3WindowChain(pParse, yymsp[0].minor.yy295, yymsp[-2].minor.yy295);
152833 yymsp[0].minor.yy295->pNextWin = yymsp[-2].minor.yy295;
152834 yylhsminor.yy295 = yymsp[0].minor.yy295;
152835 }
152836 yymsp[-2].minor.yy295 = yylhsminor.yy295;
152837 break;
152838 case 290: /* windowdefn ::= nm AS LP window RP */
152839 {
152840 if( ALWAYS(yymsp[-1].minor.yy295) ){
152841 yymsp[-1].minor.yy295->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
152842 }
152843 yylhsminor.yy295 = yymsp[-1].minor.yy295;
152844 }
152845 yymsp[-4].minor.yy295 = yylhsminor.yy295;
152846 break;
152847 case 291: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
152848 {
152849 yymsp[-4].minor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, yymsp[-2].minor.yy434, yymsp[-1].minor.yy434, 0);
152850 }
152851 break;
152852 case 292: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
152853 {
152854 yylhsminor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, yymsp[-2].minor.yy434, yymsp[-1].minor.yy434, &yymsp[-5].minor.yy0);
152855 }
152856 yymsp[-5].minor.yy295 = yylhsminor.yy295;
152857 break;
152858 case 293: /* window ::= ORDER BY sortlist frame_opt */
152859 {
152860 yymsp[-3].minor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, 0, yymsp[-1].minor.yy434, 0);
152861 }
152862 break;
152863 case 294: /* window ::= nm ORDER BY sortlist frame_opt */
152864 {
152865 yylhsminor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, 0, yymsp[-1].minor.yy434, &yymsp[-4].minor.yy0);
152866 }
152867 yymsp[-4].minor.yy295 = yylhsminor.yy295;
152868 break;
152869 case 295: /* window ::= frame_opt */
152870 {
152871 yylhsminor.yy295 = yymsp[0].minor.yy295;
152872 }
152873 yymsp[0].minor.yy295 = yylhsminor.yy295;
152874 break;
152875 case 296: /* window ::= nm frame_opt */
152876 {
152877 yylhsminor.yy295 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy295, 0, 0, &yymsp[-1].minor.yy0);
152878 }
152879 yymsp[-1].minor.yy295 = yylhsminor.yy295;
152880 break;
152881 case 297: /* frame_opt ::= */
152882 {
152883 yymsp[1].minor.yy295 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
152884 }
152885 break;
152886 case 298: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
152887 {
152888 yylhsminor.yy295 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy494, yymsp[-1].minor.yy201.eType, yymsp[-1].minor.yy201.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy238);
152889 }
152890 yymsp[-2].minor.yy295 = yylhsminor.yy295;
152891 break;
152892 case 299: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
152893 {
152894 yylhsminor.yy295 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy494, yymsp[-3].minor.yy201.eType, yymsp[-3].minor.yy201.pExpr, yymsp[-1].minor.yy201.eType, yymsp[-1].minor.yy201.pExpr, yymsp[0].minor.yy238);
152895 }
152896 yymsp[-5].minor.yy295 = yylhsminor.yy295;
152897 break;
152898 case 301: /* frame_bound_s ::= frame_bound */
152899 case 303: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==303);
152900 {yylhsminor.yy201 = yymsp[0].minor.yy201;}
152901 yymsp[0].minor.yy201 = yylhsminor.yy201;
152902 break;
152903 case 302: /* frame_bound_s ::= UNBOUNDED PRECEDING */
152904 case 304: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==304);
152905 case 306: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==306);
152906 {yylhsminor.yy201.eType = yymsp[-1].major; yylhsminor.yy201.pExpr = 0;}
152907 yymsp[-1].minor.yy201 = yylhsminor.yy201;
152908 break;
152909 case 305: /* frame_bound ::= expr PRECEDING|FOLLOWING */
152910 {yylhsminor.yy201.eType = yymsp[0].major; yylhsminor.yy201.pExpr = yymsp[-1].minor.yy524;}
152911 yymsp[-1].minor.yy201 = yylhsminor.yy201;
152912 break;
152913 case 307: /* frame_exclude_opt ::= */
152914 {yymsp[1].minor.yy238 = 0;}
152915 break;
152916 case 308: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
152917 {yymsp[-1].minor.yy238 = yymsp[0].minor.yy238;}
152918 break;
152919 case 309: /* frame_exclude ::= NO OTHERS */
152920 case 310: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==310);
152921 {yymsp[-1].minor.yy238 = yymsp[-1].major; /*A-overwrites-X*/}
152922 break;
152923 case 311: /* frame_exclude ::= GROUP|TIES */
152924 {yymsp[0].minor.yy238 = yymsp[0].major; /*A-overwrites-X*/}
152925 break;
152926 case 312: /* window_clause ::= WINDOW windowdefn_list */
152927 { yymsp[-1].minor.yy295 = yymsp[0].minor.yy295; }
152928 break;
152929 case 313: /* over_clause ::= filter_opt OVER LP window RP */
152930 {
152931 yylhsminor.yy295 = yymsp[-1].minor.yy295;
152932 assert( yylhsminor.yy295!=0 );
152933 yylhsminor.yy295->pFilter = yymsp[-4].minor.yy524;
152934 }
152935 yymsp[-4].minor.yy295 = yylhsminor.yy295;
152936 break;
152937 case 314: /* over_clause ::= filter_opt OVER nm */
152938 {
152939 yylhsminor.yy295 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
152940 if( yylhsminor.yy295 ){
152941 yylhsminor.yy295->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
152942 yylhsminor.yy295->pFilter = yymsp[-2].minor.yy524;
152943 }else{
152944 sqlite3ExprDelete(pParse->db, yymsp[-2].minor.yy524);
152945 }
152946 }
152947 yymsp[-2].minor.yy295 = yylhsminor.yy295;
152948 break;
152949 case 316: /* filter_opt ::= FILTER LP WHERE expr RP */
152950 { yymsp[-4].minor.yy524 = yymsp[-1].minor.yy524; }
152951 break;
152952 default:
152953 /* (317) input ::= cmdlist */ yytestcase(yyruleno==317);
152954 /* (318) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==318);
152955 /* (319) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=319);
152956 /* (320) ecmd ::= SEMI */ yytestcase(yyruleno==320);
152957 /* (321) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==321);
152958 /* (322) ecmd ::= explain cmdx */ yytestcase(yyruleno==322);
152959 /* (323) trans_opt ::= */ yytestcase(yyruleno==323);
152960 /* (324) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==324);
152961 /* (325) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==325);
152962 /* (326) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==326);
152963 /* (327) savepoint_opt ::= */ yytestcase(yyruleno==327);
152964 /* (328) cmd ::= create_table create_table_args */ yytestcase(yyruleno==328);
152965 /* (329) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==329);
152966 /* (330) columnlist ::= columnname carglist */ yytestcase(yyruleno==330);
152967 /* (331) nm ::= ID|INDEXED */ yytestcase(yyruleno==331);
152968 /* (332) nm ::= STRING */ yytestcase(yyruleno==332);
152969 /* (333) nm ::= JOIN_KW */ yytestcase(yyruleno==333);
152970 /* (334) typetoken ::= typename */ yytestcase(yyruleno==334);
152971 /* (335) typename ::= ID|STRING */ yytestcase(yyruleno==335);
152972 /* (336) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=336);
152973 /* (337) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=337);
152974 /* (338) carglist ::= carglist ccons */ yytestcase(yyruleno==338);
152975 /* (339) carglist ::= */ yytestcase(yyruleno==339);
152976 /* (340) ccons ::= NULL onconf */ yytestcase(yyruleno==340);
152977 /* (341) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==341);
152978 /* (342) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==342);
152979 /* (343) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=343);
152980 /* (344) tconscomma ::= */ yytestcase(yyruleno==344);
152981 /* (345) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=345);
152982 /* (346) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=346);
152983 /* (347) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=347);
152984 /* (348) oneselect ::= values */ yytestcase(yyruleno==348);
152985 /* (349) sclp ::= selcollist COMMA */ yytestcase(yyruleno==349);
152986 /* (350) as ::= ID|STRING */ yytestcase(yyruleno==350);
152987 /* (351) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=351);
152988 /* (352) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==352);
152989 /* (353) exprlist ::= nexprlist */ yytestcase(yyruleno==353);
152990 /* (354) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=354);
152991 /* (355) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=355);
152992 /* (356) nmnum ::= ON */ yytestcase(yyruleno==356);
152993 /* (357) nmnum ::= DELETE */ yytestcase(yyruleno==357);
152994 /* (358) nmnum ::= DEFAULT */ yytestcase(yyruleno==358);
152995 /* (359) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==359);
152996 /* (360) foreach_clause ::= */ yytestcase(yyruleno==360);
152997 /* (361) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==361);
152998 /* (362) trnm ::= nm */ yytestcase(yyruleno==362);
152999 /* (363) tridxby ::= */ yytestcase(yyruleno==363);
153000 /* (364) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==364);
153001 /* (365) database_kw_opt ::= */ yytestcase(yyruleno==365);
153002 /* (366) kwcolumn_opt ::= */ yytestcase(yyruleno==366);
153003 /* (367) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==367);
153004 /* (368) vtabarglist ::= vtabarg */ yytestcase(yyruleno==368);
153005 /* (369) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==369);
153006 /* (370) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==370);
153007 /* (371) anylist ::= */ yytestcase(yyruleno==371);
153008 /* (372) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==372);
153009 /* (373) anylist ::= anylist ANY */ yytestcase(yyruleno==373);
153010 /* (374) with ::= */ yytestcase(yyruleno==374);
153011 break;
153012 /********** End reduce actions ************************************************/
153013 };
153014 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
153015 yygoto = yyRuleInfoLhs[yyruleno];
@@ -173300,18 +173457,18 @@
173300 break;
173301 }
173302
173303 nList -= (int)(p - pList);
173304 pList = p;
173305 if( nList==0 ){
173306 break;
173307 }
173308 p = &pList[1];
173309 p += fts3GetVarint32(p, &iCurrent);
173310 }
173311
173312 if( bZero && &pList[nList]!=pEnd ){
173313 memset(&pList[nList], 0, pEnd - &pList[nList]);
173314 }
173315 *ppList = pList;
173316 *pnList = nList;
173317 }
@@ -193872,13 +194029,11 @@
193872 rc = SQLITE_ERROR;
193873 pRbu->zErrmsg = sqlite3_mprintf("rbu/zipvfs setup error");
193874 }else if( rc==SQLITE_NOTFOUND ){
193875 pRbu->pTargetFd = p;
193876 p->pRbu = pRbu;
193877 if( p->openFlags & SQLITE_OPEN_MAIN_DB ){
193878 rbuMainlistAdd(p);
193879 }
193880 if( p->pWalFd ) p->pWalFd->pRbu = pRbu;
193881 rc = SQLITE_OK;
193882 }
193883 }
193884 return rc;
@@ -193937,14 +194092,11 @@
193937 ** todo: really, it's not clear why this might occur, as
193938 ** wal_autocheckpoint ought to be turned off. */
193939 if( ofst==WAL_LOCK_CKPT && n==1 ) rc = SQLITE_BUSY;
193940 }else{
193941 int bCapture = 0;
193942 if( n==1 && (flags & SQLITE_SHM_EXCLUSIVE)
193943 && pRbu && pRbu->eStage==RBU_STAGE_CAPTURE
193944 && (ofst==WAL_LOCK_WRITE || ofst==WAL_LOCK_CKPT || ofst==WAL_LOCK_READ0)
193945 ){
193946 bCapture = 1;
193947 }
193948
193949 if( bCapture==0 || 0==(flags & SQLITE_SHM_UNLOCK) ){
193950 rc = p->pReal->pMethods->xShmLock(p->pReal, ofst, n, flags);
@@ -193973,24 +194125,28 @@
193973
193974 /* If not in RBU_STAGE_OAL, allow this call to pass through. Or, if this
193975 ** rbu is in the RBU_STAGE_OAL state, use heap memory for *-shm space
193976 ** instead of a file on disk. */
193977 assert( p->openFlags & (SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_TEMP_DB) );
193978 if( eStage==RBU_STAGE_OAL || eStage==RBU_STAGE_MOVE ){
193979 if( iRegion<=p->nShm ){
193980 sqlite3_int64 nByte = (iRegion+1) * sizeof(char*);
193981 char **apNew = (char**)sqlite3_realloc64(p->apShm, nByte);
193982 if( apNew==0 ){
193983 rc = SQLITE_NOMEM;
193984 }else{
193985 memset(&apNew[p->nShm], 0, sizeof(char*) * (1 + iRegion - p->nShm));
193986 p->apShm = apNew;
193987 p->nShm = iRegion+1;
193988 }
 
 
 
 
193989 }
193990
193991 if( rc==SQLITE_OK && p->apShm[iRegion]==0 ){
193992 char *pNew = (char*)sqlite3_malloc64(szRegion);
193993 if( pNew==0 ){
193994 rc = SQLITE_NOMEM;
193995 }else{
193996 memset(pNew, 0, szRegion);
@@ -197209,11 +197365,13 @@
197209 }
197210 }
197211 }
197212 sqlite3_free((char*)azCol);
197213 if( bMismatch ){
197214 *pzErrMsg = sqlite3_mprintf("table schemas do not match");
 
 
197215 rc = SQLITE_SCHEMA;
197216 }
197217 if( bHasPk==0 ){
197218 /* Ignore tables with no primary keys */
197219 goto diff_out;
@@ -197415,11 +197573,11 @@
197415 **
197416 ** If successful, return zero. Otherwise, if an OOM condition is encountered,
197417 ** set *pRc to SQLITE_NOMEM and return non-zero.
197418 */
197419 static int sessionBufferGrow(SessionBuffer *p, size_t nByte, int *pRc){
197420 if( *pRc==SQLITE_OK && p->nAlloc-p->nBuf<nByte ){
197421 u8 *aNew;
197422 i64 nNew = p->nAlloc ? p->nAlloc : 128;
197423 do {
197424 nNew = nNew*2;
197425 }while( (nNew-p->nBuf)<nByte );
@@ -204848,10 +205006,15 @@
204848 return 0;
204849 }
204850 fts5FastGetVarint32(a, i, iVal);
204851 iOff = ((i64)iVal) << 32;
204852 fts5FastGetVarint32(a, i, iVal);
 
 
 
 
 
204853 }
204854 *piOff = iOff + ((iVal-2) & 0x7FFFFFFF);
204855 *pi = i;
204856 return 0;
204857 }
@@ -214391,12 +214554,18 @@
214391 /* The maximum size of the output is equal to the sum of the two
214392 ** input sizes + 1 varint (9 bytes). The extra varint is because if the
214393 ** first rowid in one input is a large negative number, and the first in
214394 ** the other a non-negative number, the delta for the non-negative
214395 ** number will be larger on disk than the literal integer value
214396 ** was. */
214397 if( sqlite3Fts5BufferSize(&p->rc, &out, p1->n + p2->n + 9) ) return;
 
 
 
 
 
 
214398 fts5DoclistIterInit(p1, &i1);
214399 fts5DoclistIterInit(p2, &i2);
214400
214401 while( 1 ){
214402 if( i1.iRowid<i2.iRowid ){
@@ -214403,17 +214572,19 @@
214403 /* Copy entry from i1 */
214404 fts5MergeAppendDocid(&out, iLastRowid, i1.iRowid);
214405 fts5BufferSafeAppendBlob(&out, i1.aPoslist, i1.nPoslist+i1.nSize);
214406 fts5DoclistIterNext(&i1);
214407 if( i1.aPoslist==0 ) break;
 
214408 }
214409 else if( i2.iRowid!=i1.iRowid ){
214410 /* Copy entry from i2 */
214411 fts5MergeAppendDocid(&out, iLastRowid, i2.iRowid);
214412 fts5BufferSafeAppendBlob(&out, i2.aPoslist, i2.nPoslist+i2.nSize);
214413 fts5DoclistIterNext(&i2);
214414 if( i2.aPoslist==0 ) break;
 
214415 }
214416 else{
214417 /* Merge the two position lists. */
214418 i64 iPos1 = 0;
214419 i64 iPos2 = 0;
@@ -214433,20 +214604,19 @@
214433 sqlite3Fts5BufferSize(&p->rc, &tmp, i1.nPoslist + i2.nPoslist);
214434 if( p->rc ) break;
214435
214436 sqlite3Fts5PoslistNext64(a1, i1.nPoslist, &iOff1, &iPos1);
214437 sqlite3Fts5PoslistNext64(a2, i2.nPoslist, &iOff2, &iPos2);
214438 assert( iPos1>=0 && iPos2>=0 );
214439
214440 if( iPos1<iPos2 ){
214441 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos1);
214442 sqlite3Fts5PoslistNext64(a1, i1.nPoslist, &iOff1, &iPos1);
214443 }else{
214444 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos2);
214445 sqlite3Fts5PoslistNext64(a2, i2.nPoslist, &iOff2, &iPos2);
214446 }
214447
214448 if( iPos1>=0 && iPos2>=0 ){
214449 while( 1 ){
214450 if( iPos1<iPos2 ){
214451 if( iPos1!=iPrev ){
214452 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos1);
@@ -214467,11 +214637,11 @@
214467 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos1);
214468 }
214469 aCopy = &a1[iOff1];
214470 nCopy = i1.nPoslist - iOff1;
214471 }else{
214472 assert( iPos2>=0 && iPos2!=iPrev );
214473 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos2);
214474 aCopy = &a2[iOff2];
214475 nCopy = i2.nPoslist - iOff2;
214476 }
214477 if( nCopy>0 ){
@@ -214481,12 +214651,13 @@
214481 /* WRITEPOSLISTSIZE */
214482 fts5BufferSafeAppendVarint(&out, tmp.n * 2);
214483 fts5BufferSafeAppendBlob(&out, tmp.p, tmp.n);
214484 fts5DoclistIterNext(&i1);
214485 fts5DoclistIterNext(&i2);
214486 assert( out.n<=(p1->n+p2->n+9) );
214487 if( i1.aPoslist==0 || i2.aPoslist==0 ) break;
 
214488 }
214489 }
214490
214491 if( i1.aPoslist ){
214492 fts5MergeAppendDocid(&out, iLastRowid, i1.iRowid);
@@ -214494,11 +214665,11 @@
214494 }
214495 else if( i2.aPoslist ){
214496 fts5MergeAppendDocid(&out, iLastRowid, i2.iRowid);
214497 fts5BufferSafeAppendBlob(&out, i2.aPoslist, i2.aEof - i2.aPoslist);
214498 }
214499 assert( out.n<=(p1->n+p2->n+9) );
214500
214501 fts5BufferSet(&p->rc, p1, out.n, out.p);
214502 fts5BufferFree(&tmp);
214503 fts5BufferFree(&out);
214504 }
@@ -218660,11 +218831,11 @@
218660 int nArg, /* Number of args */
218661 sqlite3_value **apUnused /* Function arguments */
218662 ){
218663 assert( nArg==0 );
218664 UNUSED_PARAM2(nArg, apUnused);
218665 sqlite3_result_text(pCtx, "fts5: 2019-05-10 17:50:33 2846bc0429c0956473bfe99dde135f2c206720f0be4c2800118b280e446ce325", -1, SQLITE_TRANSIENT);
218666 }
218667
218668 /*
218669 ** Return true if zName is the extension on one of the shadow tables used
218670 ** by this module.
@@ -222919,12 +223090,14 @@
222919 }
222920 }
222921 }
222922
222923 if( rc==SQLITE_OK && pCsr->bEof==0 && pTab->eType==FTS5_VOCAB_COL ){
222924 while( pCsr->aDoc[pCsr->iCol]==0 ) pCsr->iCol++;
222925 assert( pCsr->iCol<pCsr->pFts5->pConfig->nCol );
 
 
222926 }
222927 return rc;
222928 }
222929
222930 /*
@@ -223424,12 +223597,12 @@
223424 }
223425 #endif /* SQLITE_CORE */
223426 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
223427
223428 /************** End of stmt.c ************************************************/
223429 #if __LINE__!=223429
223430 #undef SQLITE_SOURCE_ID
223431 #define SQLITE_SOURCE_ID "2019-05-10 17:54:58 956ca2a452aa3707bca553007a7ef221af3d4f6b0af747d17070926e000falt2"
223432 #endif
223433 /* Return the source-id for this library */
223434 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
223435 /************************** End of sqlite3.c ******************************/
223436
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1167,11 +1167,11 @@
1167 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1168 ** [sqlite_version()] and [sqlite_source_id()].
1169 */
1170 #define SQLITE_VERSION "3.29.0"
1171 #define SQLITE_VERSION_NUMBER 3029000
1172 #define SQLITE_SOURCE_ID "2019-05-23 16:38:12 d2fe370cafa9b11f6c3eb4e1c3be48d9d2610b9d2f9d9ebf9e50267f9079dfc0"
1173
1174 /*
1175 ** CAPI3REF: Run-Time Library Version Numbers
1176 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1177 **
@@ -3240,10 +3240,11 @@
3240 ** flag is enabled, language features that allow ordinary SQL to
3241 ** deliberately corrupt the database file are disabled. The disabled
3242 ** features include but are not limited to the following:
3243 ** <ul>
3244 ** <li> The [PRAGMA writable_schema=ON] statement.
3245 ** <li> The [PRAGMA journal_mode=OFF] statement.
3246 ** <li> Writes to the [sqlite_dbpage] virtual table.
3247 ** <li> Direct writes to [shadow tables].
3248 ** </ul>
3249 ** </dd>
3250 **
@@ -13956,16 +13957,17 @@
13957 ** using C-preprocessor macros. If that is unsuccessful, or if
13958 ** -DSQLITE_BYTEORDER=0 is set, then byte-order is determined
13959 ** at run-time.
13960 */
13961 #ifndef SQLITE_BYTEORDER
13962 # if defined(i386) || defined(__i386__) || defined(_M_IX86) || \
13963 defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \
13964 defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \
13965 defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64)
13966 # define SQLITE_BYTEORDER 1234
13967 # elif defined(sparc) || defined(__ppc__) || \
13968 defined(__ARMEB__) || defined(__AARCH64EB__)
13969 # define SQLITE_BYTEORDER 4321
13970 # else
13971 # define SQLITE_BYTEORDER 0
13972 # endif
13973 #endif
@@ -17180,10 +17182,11 @@
17182 unsigned isResized:1; /* True if resizeIndexObject() has been called */
17183 unsigned isCovering:1; /* True if this is a covering index */
17184 unsigned noSkipScan:1; /* Do not try to use skip-scan if true */
17185 unsigned hasStat1:1; /* aiRowLogEst values come from sqlite_stat1 */
17186 unsigned bNoQuery:1; /* Do not use this index to optimize queries */
17187 unsigned bAscKeyBug:1; /* True if the bba7b69f9849b5bf bug applies */
17188 #ifdef SQLITE_ENABLE_STAT3_OR_STAT4
17189 int nSample; /* Number of elements in aSample[] */
17190 int nSampleCol; /* Size of IndexSample.anEq[] and so on */
17191 tRowcnt *aAvgEq; /* Average nEq values for keys not in aSample */
17192 IndexSample *aSample; /* Samples of the left-most key */
@@ -17407,11 +17410,11 @@
17410 ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
17411 ** TK_VARIABLE: variable number (always >= 1).
17412 ** TK_SELECT_COLUMN: column of the result vector */
17413 i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
17414 i16 iRightJoinTable; /* If EP_FromJoin, the right table of the join */
17415 u8 op2; /* TK_REGISTER/TK_TRUTH: original value of Expr.op
17416 ** TK_COLUMN: the value of p5 for OP_Column
17417 ** TK_AGG_FUNCTION: nesting depth */
17418 AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
17419 union {
17420 Table *pTab; /* TK_COLUMN: Table containing column. Can be NULL
@@ -17692,11 +17695,11 @@
17695 Upsert *pUpsert; /* ON CONFLICT clause information from an upsert */
17696 } uNC;
17697 NameContext *pNext; /* Next outer name context. NULL for outermost */
17698 int nRef; /* Number of names resolved by this context */
17699 int nErr; /* Number of errors encountered while resolving names */
17700 int ncFlags; /* Zero or more NC_* flags defined below */
17701 Select *pWinSelect; /* SELECT statement for any window functions */
17702 };
17703
17704 /*
17705 ** Allowed values for the NameContext, ncFlags field.
@@ -17719,10 +17722,12 @@
17722 #define NC_UUpsert 0x0200 /* True if uNC.pUpsert is used */
17723 #define NC_MinMaxAgg 0x1000 /* min/max aggregates seen. See note above */
17724 #define NC_Complex 0x2000 /* True if a function or subquery seen */
17725 #define NC_AllowWin 0x4000 /* Window functions are allowed here */
17726 #define NC_HasWin 0x8000 /* One or more window functions seen */
17727 #define NC_NoDblQStr 0x10000 /* Do not allow double-quoted string hack.
17728 ** Mnemonic: "NO DouBLe-Quoted STRings" */
17729
17730 /*
17731 ** An instance of the following object describes a single ON CONFLICT
17732 ** clause in an upsert.
17733 **
@@ -68718,10 +68723,11 @@
68723 ** up to two varints past the end of the buffer. An extra 18
68724 ** bytes of padding is allocated at the end of the buffer in
68725 ** case this happens. */
68726 void *pCellKey;
68727 u8 * const pCellBody = pCell - pPage->childPtrSize;
68728 const int nOverrun = 18; /* Size of the overrun padding */
68729 pPage->xParseCell(pPage, pCellBody, &pCur->info);
68730 nCell = (int)pCur->info.nKey;
68731 testcase( nCell<0 ); /* True if key size is 2^32 or more */
68732 testcase( nCell==0 ); /* Invalid key size: 0x80 0x80 0x00 */
68733 testcase( nCell==1 ); /* Invalid key size: 0x80 0x80 0x01 */
@@ -68728,17 +68734,18 @@
68734 testcase( nCell==2 ); /* Minimum legal index key size */
68735 if( nCell<2 || nCell/pCur->pBt->usableSize>pCur->pBt->nPage ){
68736 rc = SQLITE_CORRUPT_PAGE(pPage);
68737 goto moveto_finish;
68738 }
68739 pCellKey = sqlite3Malloc( nCell+nOverrun );
68740 if( pCellKey==0 ){
68741 rc = SQLITE_NOMEM_BKPT;
68742 goto moveto_finish;
68743 }
68744 pCur->ix = (u16)idx;
68745 rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 0);
68746 memset(((u8*)pCellKey)+nCell,0,nOverrun); /* Fix uninit warnings */
68747 pCur->curFlags &= ~BTCF_ValidOvfl;
68748 if( rc ){
68749 sqlite3_free(pCellKey);
68750 goto moveto_finish;
68751 }
@@ -74560,11 +74567,14 @@
74567 zBuf[acc.nChar] = 0; /* Fast version of sqlite3StrAccumFinish(&acc) */
74568 }
74569
74570 #ifdef SQLITE_DEBUG
74571 /*
74572 ** Validity checks on pMem. pMem holds a string.
74573 **
74574 ** (1) Check that string value of pMem agrees with its integer or real value.
74575 ** (2) Check that the string is correctly zero terminated
74576 **
74577 ** A single int or real value always converts to the same strings. But
74578 ** many different strings can be converted into the same int or real.
74579 ** If a table contains a numeric value and an index is based on the
74580 ** corresponding string value, then it is important that the string be
@@ -74578,15 +74588,26 @@
74588 ** been derived from the numeric and not the other way around. It returns
74589 ** true if everything is ok and false if there is a problem.
74590 **
74591 ** This routine is for use inside of assert() statements only.
74592 */
74593 SQLITE_PRIVATE int sqlite3VdbeMemValidStrRep(Mem *p){
74594 char zBuf[100];
74595 char *z;
74596 int i, j, incr;
74597 if( (p->flags & MEM_Str)==0 ) return 1;
74598 if( p->flags & MEM_Term ){
74599 /* Insure that the string is properly zero-terminated. Pay particular
74600 ** attention to the case where p->n is odd */
74601 if( p->szMalloc>0 && p->z==p->zMalloc ){
74602 assert( p->enc==SQLITE_UTF8 || p->szMalloc >= ((p->n+1)&~1)+2 );
74603 assert( p->enc!=SQLITE_UTF8 || p->szMalloc >= p->n+1 );
74604 }
74605 assert( p->z[p->n]==0 );
74606 assert( p->enc==SQLITE_UTF8 || p->z[(p->n+1)&~1]==0 );
74607 assert( p->enc==SQLITE_UTF8 || p->z[((p->n+1)&~1)+1]==0 );
74608 }
74609 if( (p->flags & (MEM_Int|MEM_Real|MEM_IntReal))==0 ) return 1;
74610 vdbeMemRenderNum(sizeof(zBuf), zBuf, p);
74611 z = p->z;
74612 i = j = 0;
74613 incr = 1;
@@ -75663,11 +75684,11 @@
75684 assert( 0==(1&SQLITE_PTR_TO_INT(pVal->z)) );
75685 }
75686 assert(pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) || pVal->db==0
75687 || pVal->db->mallocFailed );
75688 if( pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) ){
75689 assert( sqlite3VdbeMemValidStrRep(pVal) );
75690 return pVal->z;
75691 }else{
75692 return 0;
75693 }
75694 }
@@ -75686,11 +75707,11 @@
75707 if( !pVal ) return 0;
75708 assert( pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex) );
75709 assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
75710 assert( !sqlite3VdbeMemIsRowSet(pVal) );
75711 if( (pVal->flags&(MEM_Str|MEM_Term))==(MEM_Str|MEM_Term) && pVal->enc==enc ){
75712 assert( sqlite3VdbeMemValidStrRep(pVal) );
75713 return pVal->z;
75714 }
75715 if( pVal->flags&MEM_Null ){
75716 return 0;
75717 }
@@ -76991,10 +77012,11 @@
77012 */
77013 SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
77014 int hasAbort = 0;
77015 int hasFkCounter = 0;
77016 int hasCreateTable = 0;
77017 int hasCreateIndex = 0;
77018 int hasInitCoroutine = 0;
77019 Op *pOp;
77020 VdbeOpIter sIter;
77021 memset(&sIter, 0, sizeof(sIter));
77022 sIter.v = v;
@@ -77009,10 +77031,18 @@
77031 ){
77032 hasAbort = 1;
77033 break;
77034 }
77035 if( opcode==OP_CreateBtree && pOp->p3==BTREE_INTKEY ) hasCreateTable = 1;
77036 if( mayAbort ){
77037 /* hasCreateIndex may also be set for some DELETE statements that use
77038 ** OP_Clear. So this routine may end up returning true in the case
77039 ** where a "DELETE FROM tbl" has a statement-journal but does not
77040 ** require one. This is not so bad - it is an inefficiency, not a bug. */
77041 if( opcode==OP_CreateBtree && pOp->p3==BTREE_BLOBKEY ) hasCreateIndex = 1;
77042 if( opcode==OP_Clear ) hasCreateIndex = 1;
77043 }
77044 if( opcode==OP_InitCoroutine ) hasInitCoroutine = 1;
77045 #ifndef SQLITE_OMIT_FOREIGN_KEY
77046 if( opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1 ){
77047 hasFkCounter = 1;
77048 }
@@ -77024,11 +77054,12 @@
77054 ** If malloc failed, then the while() loop above may not have iterated
77055 ** through all opcodes and hasAbort may be set incorrectly. Return
77056 ** true for this case to prevent the assert() in the callers frame
77057 ** from failing. */
77058 return ( v->db->mallocFailed || hasAbort==mayAbort || hasFkCounter
77059 || (hasCreateTable && hasInitCoroutine) || hasCreateIndex
77060 );
77061 }
77062 #endif /* SQLITE_DEBUG - the sqlite3AssertMayAbort() function */
77063
77064 #ifdef SQLITE_DEBUG
77065 /*
@@ -85214,11 +85245,11 @@
85245 }
85246 nByte = pIn1->n + pIn2->n;
85247 if( nByte>db->aLimit[SQLITE_LIMIT_LENGTH] ){
85248 goto too_big;
85249 }
85250 if( sqlite3VdbeMemGrow(pOut, (int)nByte+3, pOut==pIn2) ){
85251 goto no_mem;
85252 }
85253 MemSetTypeFlag(pOut, MEM_Str);
85254 if( pOut!=pIn2 ){
85255 memcpy(pOut->z, pIn2->z, pIn2->n);
@@ -85228,10 +85259,11 @@
85259 memcpy(&pOut->z[pIn2->n], pIn1->z, pIn1->n);
85260 assert( (pIn1->flags & MEM_Dyn) == (flags1 & MEM_Dyn) );
85261 pIn1->flags = flags1;
85262 pOut->z[nByte]=0;
85263 pOut->z[nByte+1] = 0;
85264 pOut->z[nByte+2] = 0;
85265 pOut->flags |= MEM_Term;
85266 pOut->n = (int)nByte;
85267 pOut->enc = encoding;
85268 UPDATE_MAX_BLOBSIZE(pOut);
85269 break;
@@ -86596,10 +86628,14 @@
86628 assert( pData0<=pLast );
86629 if( zAffinity ){
86630 pRec = pData0;
86631 do{
86632 applyAffinity(pRec, zAffinity[0], encoding);
86633 if( zAffinity[0]==SQLITE_AFF_REAL && (pRec->flags & MEM_Int) ){
86634 pRec->flags |= MEM_IntReal;
86635 pRec->flags &= ~(MEM_Int);
86636 }
86637 REGISTER_TRACE((int)(pRec-aMem), pRec);
86638 zAffinity++;
86639 pRec++;
86640 assert( zAffinity[0]==0 || pRec<=pLast );
86641 }while( zAffinity[0] );
@@ -87714,10 +87750,12 @@
87750 pC->nullRow = 0;
87751 #ifdef SQLITE_DEBUG
87752 pC->seekOp = pOp->opcode;
87753 #endif
87754
87755 pC->deferredMoveto = 0;
87756 pC->cacheStatus = CACHE_STALE;
87757 if( pC->isTable ){
87758 /* The BTREE_SEEK_EQ flag is only set on index cursors */
87759 assert( sqlite3BtreeCursorHasHint(pC->uc.pCursor, BTREE_SEEK_EQ)==0
87760 || CORRUPT_DB );
87761
@@ -87818,12 +87856,10 @@
87856 if( eqOnly && r.eqSeen==0 ){
87857 assert( res!=0 );
87858 goto seek_not_found;
87859 }
87860 }
 
 
87861 #ifdef SQLITE_TEST
87862 sqlite3_search_count++;
87863 #endif
87864 if( oc>=OP_SeekGE ){ assert( oc==OP_SeekGE || oc==OP_SeekGT );
87865 if( res<0 || (res==0 && oc==OP_SeekGT) ){
@@ -88496,11 +88532,11 @@
88532 if( pOp->p4type==P4_TABLE && HasRowid(pOp->p4.pTab) && pOp->p5==0 ){
88533 /* If p5 is zero, the seek operation that positioned the cursor prior to
88534 ** OP_Delete will have also set the pC->movetoTarget field to the rowid of
88535 ** the row that is being deleted */
88536 i64 iKey = sqlite3BtreeIntegerKey(pC->uc.pCursor);
88537 assert( CORRUPT_DB || pC->movetoTarget==iKey );
88538 }
88539 #endif
88540
88541 /* If the update-hook or pre-update-hook will be invoked, set zDb to
88542 ** the name of the db to pass as to it. Also set local pTab to a copy
@@ -95783,11 +95819,13 @@
95819 ** Because no reference was made to outer contexts, the pNC->nRef
95820 ** fields are not changed in any context.
95821 */
95822 if( cnt==0 && zTab==0 ){
95823 assert( pExpr->op==TK_ID );
95824 if( ExprHasProperty(pExpr,EP_DblQuoted)
95825 && 0==(pTopNC->ncFlags&NC_NoDblQStr)
95826 ){
95827 /* If a double-quoted identifier does not match any known column name,
95828 ** then treat it as a string.
95829 **
95830 ** This hack was added in the early days of SQLite in a misguided attempt
95831 ** to be compatible with MySQL 3.x, which used double-quotes for strings.
@@ -96961,11 +96999,11 @@
96999 */
97000 SQLITE_PRIVATE int sqlite3ResolveExprNames(
97001 NameContext *pNC, /* Namespace to resolve expressions in. */
97002 Expr *pExpr /* The expression to be analyzed. */
97003 ){
97004 int savedHasAgg;
97005 Walker w;
97006
97007 if( pExpr==0 ) return SQLITE_OK;
97008 savedHasAgg = pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
97009 pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
@@ -97076,10 +97114,13 @@
97114 sSrc.a[0].iCursor = -1;
97115 }
97116 sNC.pParse = pParse;
97117 sNC.pSrcList = &sSrc;
97118 sNC.ncFlags = type;
97119 if( !pParse->db->init.busy && !sqlite3WritableSchema(pParse->db) ){
97120 sNC.ncFlags |= NC_NoDblQStr;
97121 }
97122 if( (rc = sqlite3ResolveExprNames(&sNC, pExpr))!=SQLITE_OK ) return rc;
97123 if( pList ) rc = sqlite3ResolveExprListNames(&sNC, pList);
97124 return rc;
97125 }
97126
@@ -99893,10 +99934,11 @@
99934 ** this code only executes once. Because for a non-constant
99935 ** expression we need to rerun this code each time.
99936 */
99937 if( addrOnce && !sqlite3ExprIsConstant(pE2) ){
99938 sqlite3VdbeChangeToNoop(v, addrOnce);
99939 ExprClearProperty(pExpr, EP_Subrtn);
99940 addrOnce = 0;
99941 }
99942
99943 /* Evaluate the expression and insert it into the temp table */
99944 r3 = sqlite3ExprCodeTarget(pParse, pE2, r1);
@@ -101946,10 +101988,11 @@
101988 if( pA->op!=TK_STRING
101989 && pA->op!=TK_TRUEFALSE
101990 && (combinedFlags & EP_Reduced)==0
101991 ){
101992 if( pA->iColumn!=pB->iColumn ) return 2;
101993 if( pA->op2!=pB->op2 ) return 2;
101994 if( pA->iTable!=pB->iTable
101995 && (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
101996 }
101997 }
101998 return 0;
@@ -101992,10 +102035,80 @@
102035 return sqlite3ExprCompare(0,
102036 sqlite3ExprSkipCollate(pA),
102037 sqlite3ExprSkipCollate(pB),
102038 iTab);
102039 }
102040
102041 /*
102042 ** Return non-zero if Expr p can only be true if pNN is not NULL.
102043 */
102044 static int exprImpliesNotNull(
102045 Parse *pParse, /* Parsing context */
102046 Expr *p, /* The expression to be checked */
102047 Expr *pNN, /* The expression that is NOT NULL */
102048 int iTab, /* Table being evaluated */
102049 int seenNot /* True if p is an operand of NOT */
102050 ){
102051 assert( p );
102052 assert( pNN );
102053 if( sqlite3ExprCompare(pParse, p, pNN, iTab)==0 ) return 1;
102054 switch( p->op ){
102055 case TK_IN: {
102056 if( seenNot && ExprHasProperty(p, EP_xIsSelect) ) return 0;
102057 assert( ExprHasProperty(p,EP_xIsSelect)
102058 || (p->x.pList!=0 && p->x.pList->nExpr>0) );
102059 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
102060 }
102061 case TK_BETWEEN: {
102062 ExprList *pList = p->x.pList;
102063 assert( pList!=0 );
102064 assert( pList->nExpr==2 );
102065 if( seenNot ) return 0;
102066 if( exprImpliesNotNull(pParse, pList->a[0].pExpr, pNN, iTab, seenNot)
102067 || exprImpliesNotNull(pParse, pList->a[1].pExpr, pNN, iTab, seenNot)
102068 ){
102069 return 1;
102070 }
102071 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
102072 }
102073 case TK_EQ:
102074 case TK_NE:
102075 case TK_LT:
102076 case TK_LE:
102077 case TK_GT:
102078 case TK_GE:
102079 case TK_PLUS:
102080 case TK_MINUS:
102081 case TK_STAR:
102082 case TK_REM:
102083 case TK_BITAND:
102084 case TK_BITOR:
102085 case TK_SLASH:
102086 case TK_LSHIFT:
102087 case TK_RSHIFT:
102088 case TK_CONCAT: {
102089 if( exprImpliesNotNull(pParse, p->pRight, pNN, iTab, seenNot) ) return 1;
102090 /* Fall thru into the next case */
102091 }
102092 case TK_SPAN:
102093 case TK_COLLATE:
102094 case TK_BITNOT:
102095 case TK_UPLUS:
102096 case TK_UMINUS: {
102097 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
102098 }
102099 case TK_TRUTH: {
102100 if( seenNot ) return 0;
102101 if( p->op2!=TK_IS ) return 0;
102102 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
102103 }
102104 case TK_NOT: {
102105 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1);
102106 }
102107 }
102108 return 0;
102109 }
102110
102111 /*
102112 ** Return true if we can prove the pE2 will always be true if pE1 is
102113 ** true. Return false if we cannot complete the proof or if pE2 might
102114 ** be false. Examples:
@@ -102029,17 +102142,13 @@
102142 || sqlite3ExprImpliesExpr(pParse, pE1, pE2->pRight, iTab) )
102143 ){
102144 return 1;
102145 }
102146 if( pE2->op==TK_NOTNULL
102147 && exprImpliesNotNull(pParse, pE1, pE2->pLeft, iTab, 0)
 
 
102148 ){
102149 return 1;
 
 
102150 }
102151 return 0;
102152 }
102153
102154 /*
@@ -108979,10 +109088,14 @@
109088 for(i=0, j=pIdx->nKeyCol; i<nPk; i++){
109089 if( !isDupColumn(pIdx, pIdx->nKeyCol, pPk, i) ){
109090 testcase( hasColumn(pIdx->aiColumn, pIdx->nKeyCol, pPk->aiColumn[i]) );
109091 pIdx->aiColumn[j] = pPk->aiColumn[i];
109092 pIdx->azColl[j] = pPk->azColl[i];
109093 if( pPk->aSortOrder[i] ){
109094 /* See ticket https://www.sqlite.org/src/info/bba7b69f9849b5bf */
109095 pIdx->bAscKeyBug = 1;
109096 }
109097 j++;
109098 }
109099 }
109100 assert( pIdx->nColumn>=pIdx->nKeyCol+n );
109101 assert( pIdx->nColumn>=j );
@@ -110097,14 +110210,31 @@
110210 sqlite3VdbeAddOp4Int(v, OP_SorterCompare, iSorter, j2, regRecord,
110211 pIndex->nKeyCol); VdbeCoverage(v);
110212 sqlite3UniqueConstraint(pParse, OE_Abort, pIndex);
110213 sqlite3VdbeJumpHere(v, j2);
110214 }else{
110215 /* Most CREATE INDEX and REINDEX statements that are not UNIQUE can not
110216 ** abort. The exception is if one of the indexed expressions contains a
110217 ** user function that throws an exception when it is evaluated. But the
110218 ** overhead of adding a statement journal to a CREATE INDEX statement is
110219 ** very small (since most of the pages written do not contain content that
110220 ** needs to be restored if the statement aborts), so we call
110221 ** sqlite3MayAbort() for all CREATE INDEX statements. */
110222 sqlite3MayAbort(pParse);
110223 addr2 = sqlite3VdbeCurrentAddr(v);
110224 }
110225 sqlite3VdbeAddOp3(v, OP_SorterData, iSorter, regRecord, iIdx);
110226 if( !pIndex->bAscKeyBug ){
110227 /* This OP_SeekEnd opcode makes index insert for a REINDEX go much
110228 ** faster by avoiding unnecessary seeks. But the optimization does
110229 ** not work for UNIQUE constraint indexes on WITHOUT ROWID tables
110230 ** with DESC primary keys, since those indexes have there keys in
110231 ** a different order from the main table.
110232 ** See ticket: https://www.sqlite.org/src/info/bba7b69f9849b5bf
110233 */
110234 sqlite3VdbeAddOp1(v, OP_SeekEnd, iIdx);
110235 }
110236 sqlite3VdbeAddOp2(v, OP_IdxInsert, iIdx, regRecord);
110237 sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
110238 sqlite3ReleaseTempReg(pParse, regRecord);
110239 sqlite3VdbeAddOp2(v, OP_SorterNext, iSorter, addr2); VdbeCoverage(v);
110240 sqlite3VdbeJumpHere(v, addr1);
@@ -120850,14 +120980,13 @@
120980 #define PragTyp_TEMP_STORE_DIRECTORY 36
120981 #define PragTyp_THREADS 37
120982 #define PragTyp_WAL_AUTOCHECKPOINT 38
120983 #define PragTyp_WAL_CHECKPOINT 39
120984 #define PragTyp_ACTIVATE_EXTENSIONS 40
120985 #define PragTyp_KEY 41
120986 #define PragTyp_LOCK_STATUS 42
120987 #define PragTyp_STATS 43
 
120988
120989 /* Property flags associated with various pragma. */
120990 #define PragFlg_NeedSchema 0x01 /* Force schema load before running */
120991 #define PragFlg_NoColumns 0x02 /* OP_ResultRow called with zero columns */
120992 #define PragFlg_NoColumns1 0x04 /* zero columns if RHS argument is present */
@@ -121126,16 +121255,16 @@
121255 /* iArg: */ 0 },
121256 #endif
121257 #endif
121258 #if defined(SQLITE_HAS_CODEC)
121259 {/* zName: */ "hexkey",
121260 /* ePragTyp: */ PragTyp_KEY,
121261 /* ePragFlg: */ 0,
121262 /* ColNames: */ 0, 0,
121263 /* iArg: */ 2 },
121264 {/* zName: */ "hexrekey",
121265 /* ePragTyp: */ PragTyp_KEY,
121266 /* ePragFlg: */ 0,
121267 /* ColNames: */ 0, 0,
121268 /* iArg: */ 3 },
121269 #endif
121270 #if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
@@ -122091,10 +122220,15 @@
122220 }
122221 if( !zMode ){
122222 /* If the "=MODE" part does not match any known journal mode,
122223 ** then do a query */
122224 eMode = PAGER_JOURNALMODE_QUERY;
122225 }
122226 if( eMode==PAGER_JOURNALMODE_OFF && (db->flags & SQLITE_Defensive)!=0 ){
122227 /* Do not allow journal-mode "OFF" in defensive since the database
122228 ** can become corrupted using ordinary SQL when the journal is off */
122229 eMode = PAGER_JOURNALMODE_QUERY;
122230 }
122231 }
122232 if( eMode==PAGER_JOURNALMODE_QUERY && pId2->n==0 ){
122233 /* Convert "PRAGMA journal_mode" into "PRAGMA main.journal_mode" */
122234 iDb = 0;
@@ -123573,32 +123707,34 @@
123707 ** textkey 4
123708 ** textrekey 5
123709 */
123710 case PragTyp_KEY: {
123711 if( zRight ){
123712 char zBuf[40];
123713 const char *zKey = zRight;
123714 int n;
123715 if( pPragma->iArg==2 || pPragma->iArg==3 ){
123716 u8 iByte;
123717 int i;
123718 for(i=0, iByte=0; i<sizeof(zBuf)*2 && sqlite3Isxdigit(zRight[i]); i++){
123719 iByte = (iByte<<4) + sqlite3HexToInt(zRight[i]);
123720 if( (i&1)!=0 ) zBuf[i/2] = iByte;
123721 }
123722 zKey = zBuf;
123723 n = i/2;
123724 }else{
123725 n = pPragma->iArg<4 ? sqlite3Strlen30(zRight) : -1;
123726 }
123727 if( (pPragma->iArg & 1)==0 ){
123728 rc = sqlite3_key_v2(db, zDb, zKey, n);
123729 }else{
123730 rc = sqlite3_rekey_v2(db, zDb, zKey, n);
123731 }
123732 if( rc==SQLITE_OK && n!=0 ){
123733 sqlite3VdbeSetNumCols(v, 1);
123734 sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "ok", SQLITE_STATIC);
123735 returnSingleText(v, "ok");
123736 }
123737 }
123738 break;
123739 }
123740 #endif
@@ -129723,10 +129859,14 @@
129859 }
129860 assert( p->pSrc!=0 );
129861 if( (selFlags & SF_Expanded)!=0 ){
129862 return WRC_Prune;
129863 }
129864 if( pWalker->eCode ){
129865 /* Renumber selId because it has been copied from a view */
129866 p->selId = ++pParse->nSelect;
129867 }
129868 pTabList = p->pSrc;
129869 pEList = p->pEList;
129870 sqlite3WithPush(pParse, p->pWith, 0);
129871
129872 /* Make sure cursor numbers have been assigned to all entries in
@@ -129772,16 +129912,19 @@
129912 return WRC_Abort;
129913 }
129914 #if !defined(SQLITE_OMIT_VIEW) || !defined (SQLITE_OMIT_VIRTUALTABLE)
129915 if( IsVirtual(pTab) || pTab->pSelect ){
129916 i16 nCol;
129917 u8 eCodeOrig = pWalker->eCode;
129918 if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
129919 assert( pFrom->pSelect==0 );
129920 pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
129921 nCol = pTab->nCol;
129922 pTab->nCol = -1;
129923 pWalker->eCode = 1; /* Turn on Select.selId renumbering */
129924 sqlite3WalkSelect(pWalker, pFrom->pSelect);
129925 pWalker->eCode = eCodeOrig;
129926 pTab->nCol = nCol;
129927 }
129928 #endif
129929 }
129930
@@ -130027,10 +130170,11 @@
130170 w.xSelectCallback2 = 0;
130171 sqlite3WalkSelect(&w, pSelect);
130172 }
130173 w.xSelectCallback = selectExpander;
130174 w.xSelectCallback2 = selectPopWith;
130175 w.eCode = 0;
130176 sqlite3WalkSelect(&w, pSelect);
130177 }
130178
130179
130180 #ifndef SQLITE_OMIT_SUBQUERY
@@ -130353,14 +130497,16 @@
130497 for(pItem = pTabList->a; pItem<pThis; pItem++){
130498 Select *pS1;
130499 if( pItem->pSelect==0 ) continue;
130500 if( pItem->fg.viaCoroutine ) continue;
130501 if( pItem->zName==0 ) continue;
130502 assert( pItem->pTab!=0 );
130503 assert( pThis->pTab!=0 );
130504 if( pItem->pTab->pSchema!=pThis->pTab->pSchema ) continue;
130505 if( sqlite3_stricmp(pItem->zName, pThis->zName)!=0 ) continue;
130506 pS1 = pItem->pSelect;
130507 if( pItem->pTab->pSchema==0 && pThis->pSelect->selId!=pS1->selId ){
130508 /* The query flattener left two different CTE tables with identical
130509 ** names in the same FROM clause. */
130510 continue;
130511 }
130512 if( sqlite3ExprCompare(0, pThis->pSelect->pWhere, pS1->pWhere, -1)
@@ -130388,11 +130534,12 @@
130534 ** The transformation only works if all of the following are true:
130535 **
130536 ** * The subquery is a UNION ALL of two or more terms
130537 ** * The subquery does not have a LIMIT clause
130538 ** * There is no WHERE or GROUP BY or HAVING clauses on the subqueries
130539 ** * The outer query is a simple count(*) with no WHERE clause or other
130540 ** extraneous syntax.
130541 **
130542 ** Return TRUE if the optimization is undertaken.
130543 */
130544 static int countOfViewOptimization(Parse *pParse, Select *p){
130545 Select *pSub, *pPrior;
@@ -130399,10 +130546,12 @@
130546 Expr *pExpr;
130547 Expr *pCount;
130548 sqlite3 *db;
130549 if( (p->selFlags & SF_Aggregate)==0 ) return 0; /* This is an aggregate */
130550 if( p->pEList->nExpr!=1 ) return 0; /* Single result column */
130551 if( p->pWhere ) return 0;
130552 if( p->pGroupBy ) return 0;
130553 pExpr = p->pEList->a[0].pExpr;
130554 if( pExpr->op!=TK_AGG_FUNCTION ) return 0; /* Result is an aggregate */
130555 if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
130556 if( pExpr->x.pList!=0 ) return 0; /* Must be count(*) */
130557 if( p->pSrc->nSrc!=1 ) return 0; /* One table in FROM */
@@ -148650,32 +148799,32 @@
148799 #ifndef INTERFACE
148800 # define INTERFACE 1
148801 #endif
148802 /************* Begin control #defines *****************************************/
148803 #define YYCODETYPE unsigned short int
148804 #define YYNOCODE 302
148805 #define YYACTIONTYPE unsigned short int
148806 #define YYWILDCARD 95
148807 #define sqlite3ParserTOKENTYPE Token
148808 typedef union {
148809 int yyinit;
148810 sqlite3ParserTOKENTYPE yy0;
148811 TriggerStep* yy11;
148812 IdList* yy76;
148813 ExprList* yy94;
148814 Upsert* yy95;
148815 int yy100;
148816 Expr* yy102;
148817 struct {int value; int mask;} yy199;
148818 u8 yy218;
148819 With* yy243;
148820 struct TrigEvent yy298;
148821 Window* yy379;
148822 struct FrameBound yy389;
148823 Select* yy391;
148824 SrcList* yy407;
148825 const char* yy528;
148826 } YYMINORTYPE;
148827 #ifndef YYSTACKDEPTH
148828 #define YYSTACKDEPTH 100
148829 #endif
148830 #define sqlite3ParserARG_SDECL
@@ -148687,21 +148836,21 @@
148836 #define sqlite3ParserCTX_PDECL ,Parse *pParse
148837 #define sqlite3ParserCTX_PARAM ,pParse
148838 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
148839 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
148840 #define YYFALLBACK 1
148841 #define YYNSTATE 540
148842 #define YYNRULE 376
148843 #define YYNTOKEN 176
148844 #define YY_MAX_SHIFT 539
148845 #define YY_MIN_SHIFTREDUCE 783
148846 #define YY_MAX_SHIFTREDUCE 1158
148847 #define YY_ERROR_ACTION 1159
148848 #define YY_ACCEPT_ACTION 1160
148849 #define YY_NO_ACTION 1161
148850 #define YY_MIN_REDUCE 1162
148851 #define YY_MAX_REDUCE 1537
148852 /************* End control #defines *******************************************/
148853 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
148854
148855 /* Define the yytestcase() macro to be a no-op if is not already defined
148856 ** otherwise.
@@ -148766,605 +148915,603 @@
148915 ** yy_default[] Default action for each state.
148916 **
148917 *********** Begin parsing tables **********************************************/
148918 #define YY_ACTTAB_COUNT (2142)
148919 static const YYACTIONTYPE yy_action[] = {
148920 /* 0 */ 112, 109, 209, 112, 109, 209, 1160, 1, 1, 539,
148921 /* 10 */ 2, 1164, 490, 1193, 1293, 534, 289, 1196, 134, 383,
148922 /* 20 */ 1485, 1428, 1164, 1229, 1208, 1242, 1195, 289, 491, 134,
148923 /* 30 */ 373, 915, 1229, 443, 16, 16, 1242, 70, 70, 916,
148924 /* 40 */ 242, 1292, 296, 119, 120, 110, 1136, 1136, 981, 984,
148925 /* 50 */ 974, 974, 117, 117, 118, 118, 118, 118, 264, 264,
148926 /* 60 */ 190, 264, 264, 264, 264, 112, 109, 209, 362, 264,
148927 /* 70 */ 264, 531, 376, 497, 531, 1134, 531, 1501, 239, 206,
148928 /* 80 */ 338, 9, 531, 242, 219, 1203, 118, 118, 118, 118,
148929 /* 90 */ 111, 439, 112, 109, 209, 219, 116, 116, 116, 116,
148930 /* 100 */ 115, 115, 114, 114, 114, 113, 414, 115, 115, 114,
148931 /* 110 */ 114, 114, 113, 414, 418, 12, 383, 400, 1134, 114,
148932 /* 120 */ 114, 114, 113, 414, 1115, 418, 1134, 1392, 116, 116,
148933 /* 130 */ 116, 116, 115, 115, 114, 114, 114, 113, 414, 961,
148934 /* 140 */ 119, 120, 110, 1136, 1136, 981, 984, 974, 974, 117,
148935 /* 150 */ 117, 118, 118, 118, 118, 952, 534, 414, 941, 951,
148936 /* 160 */ 1481, 539, 2, 1164, 1505, 534, 160, 175, 289, 1134,
148937 /* 170 */ 134, 434, 312, 297, 1115, 1116, 1117, 1242, 70, 70,
148938 /* 180 */ 1089, 338, 1089, 118, 118, 118, 118, 42, 42, 448,
148939 /* 190 */ 951, 951, 953, 116, 116, 116, 116, 115, 115, 114,
148940 /* 200 */ 114, 114, 113, 414, 1115, 311, 264, 264, 82, 441,
148941 /* 210 */ 264, 264, 190, 383, 284, 12, 288, 525, 407, 531,
148942 /* 220 */ 96, 159, 458, 531, 371, 116, 116, 116, 116, 115,
148943 /* 230 */ 115, 114, 114, 114, 113, 414, 219, 119, 120, 110,
148944 /* 240 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148945 /* 250 */ 118, 118, 511, 1477, 1115, 1116, 1117, 113, 414, 534,
148946 /* 260 */ 528, 528, 528, 121, 534, 1427, 418, 116, 116, 116,
148947 /* 270 */ 116, 115, 115, 114, 114, 114, 113, 414, 1464, 351,
148948 /* 280 */ 270, 42, 42, 383, 187, 1115, 70, 70, 533, 433,
148949 /* 290 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148950 /* 300 */ 414, 534, 1339, 405, 159, 411, 410, 119, 120, 110,
148951 /* 310 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
148952 /* 320 */ 118, 118, 285, 42, 42, 349, 411, 410, 514, 479,
148953 /* 330 */ 1458, 79, 1084, 6, 1140, 1115, 1116, 1117, 480, 1142,
148954 /* 340 */ 501, 1115, 1084, 123, 238, 1084, 136, 1141, 1234, 1234,
148955 /* 350 */ 1143, 383, 1143, 1115, 167, 426, 80, 447, 512, 1451,
148956 /* 360 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
148957 /* 370 */ 414, 1143, 1466, 1143, 350, 119, 120, 110, 1136, 1136,
148958 /* 380 */ 981, 984, 974, 974, 117, 117, 118, 118, 118, 118,
148959 /* 390 */ 402, 1115, 1116, 1117, 500, 534, 250, 267, 336, 474,
148960 /* 400 */ 331, 473, 236, 1115, 1116, 1117, 231, 1115, 329, 471,
148961 /* 410 */ 468, 467, 509, 1458, 1464, 505, 6, 70, 70, 466,
148962 /* 420 */ 181, 380, 379, 534, 971, 971, 982, 985, 116, 116,
148963 /* 430 */ 116, 116, 115, 115, 114, 114, 114, 113, 414, 1115,
148964 /* 440 */ 412, 412, 412, 496, 1115, 69, 69, 235, 383, 288,
148965 /* 450 */ 525, 273, 326, 516, 337, 458, 1084, 1115, 1116, 1117,
148966 /* 460 */ 1232, 1232, 492, 160, 508, 441, 1084, 1067, 1531, 1084,
148967 /* 470 */ 207, 1531, 119, 120, 110, 1136, 1136, 981, 984, 974,
148968 /* 480 */ 974, 117, 117, 118, 118, 118, 118, 881, 534, 1115,
148969 /* 490 */ 1116, 1117, 975, 534, 1115, 1116, 1117, 534, 421, 534,
148970 /* 500 */ 141, 534, 176, 356, 517, 1119, 32, 511, 482, 388,
148971 /* 510 */ 70, 70, 818, 288, 525, 70, 70, 441, 499, 50,
148972 /* 520 */ 50, 70, 70, 70, 70, 116, 116, 116, 116, 115,
148973 /* 530 */ 115, 114, 114, 114, 113, 414, 274, 264, 264, 1115,
148974 /* 540 */ 1065, 264, 264, 1115, 355, 383, 409, 961, 1439, 822,
148975 /* 550 */ 531, 516, 190, 419, 531, 483, 1119, 516, 337, 516,
148976 /* 560 */ 518, 1115, 818, 952, 382, 458, 515, 951, 481, 119,
148977 /* 570 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
148978 /* 580 */ 118, 118, 118, 118, 1338, 278, 1045, 278, 275, 1115,
148979 /* 590 */ 1116, 1117, 259, 1115, 1116, 1117, 534, 5, 951, 951,
148980 /* 600 */ 953, 1046, 231, 3, 143, 471, 468, 467, 1391, 463,
148981 /* 610 */ 1115, 1115, 1116, 1117, 1452, 466, 1047, 836, 70, 70,
148982 /* 620 */ 480, 534, 116, 116, 116, 116, 115, 115, 114, 114,
148983 /* 630 */ 114, 113, 414, 95, 1115, 287, 235, 856, 902, 420,
148984 /* 640 */ 1115, 534, 383, 13, 13, 381, 815, 857, 472, 112,
148985 /* 650 */ 109, 209, 1115, 337, 413, 309, 837, 394, 1436, 534,
148986 /* 660 */ 1115, 1116, 1117, 54, 54, 291, 119, 120, 110, 1136,
148987 /* 670 */ 1136, 981, 984, 974, 974, 117, 117, 118, 118, 118,
148988 /* 680 */ 118, 13, 13, 1084, 1115, 1116, 1117, 901, 264, 264,
148989 /* 690 */ 1115, 1116, 1117, 1084, 292, 399, 1084, 800, 388, 140,
148990 /* 700 */ 295, 531, 1115, 1116, 1117, 403, 447, 532, 534, 870,
148991 /* 710 */ 870, 534, 1240, 534, 329, 534, 1185, 389, 534, 116,
148992 /* 720 */ 116, 116, 116, 115, 115, 114, 114, 114, 113, 414,
148993 /* 730 */ 13, 13, 1024, 13, 13, 13, 13, 13, 13, 383,
148994 /* 740 */ 13, 13, 424, 1100, 401, 264, 264, 277, 160, 184,
148995 /* 750 */ 1182, 185, 1533, 369, 513, 484, 432, 487, 531, 424,
148996 /* 760 */ 423, 1397, 941, 119, 120, 110, 1136, 1136, 981, 984,
148997 /* 770 */ 974, 974, 117, 117, 118, 118, 118, 118, 1397, 1399,
148998 /* 780 */ 425, 519, 392, 264, 264, 1029, 1029, 455, 264, 264,
148999 /* 790 */ 264, 264, 1004, 304, 261, 1278, 531, 900, 288, 525,
149000 /* 800 */ 310, 531, 493, 531, 1067, 1532, 458, 387, 1532, 311,
149001 /* 810 */ 429, 299, 534, 107, 264, 264, 116, 116, 116, 116,
149002 /* 820 */ 115, 115, 114, 114, 114, 113, 414, 531, 424, 1384,
149003 /* 830 */ 507, 258, 258, 1246, 55, 55, 383, 1277, 265, 265,
149004 /* 840 */ 962, 324, 434, 312, 531, 531, 506, 1397, 1026, 1241,
149005 /* 850 */ 298, 531, 1026, 445, 301, 1095, 303, 534, 368, 1156,
149006 /* 860 */ 119, 120, 110, 1136, 1136, 981, 984, 974, 974, 117,
149007 /* 870 */ 117, 118, 118, 118, 118, 1045, 534, 1065, 534, 15,
149008 /* 880 */ 15, 1084, 208, 1324, 453, 452, 534, 1324, 534, 449,
149009 /* 890 */ 1046, 1084, 494, 458, 1084, 234, 233, 232, 44, 44,
149010 /* 900 */ 56, 56, 319, 1095, 322, 1047, 534, 900, 57, 57,
149011 /* 910 */ 58, 58, 534, 116, 116, 116, 116, 115, 115, 114,
149012 /* 920 */ 114, 114, 113, 414, 534, 514, 522, 534, 59, 59,
149013 /* 930 */ 302, 1157, 534, 383, 60, 60, 1237, 946, 788, 789,
149014 /* 940 */ 790, 1459, 1456, 446, 6, 6, 61, 61, 1212, 45,
149015 /* 950 */ 45, 534, 396, 383, 46, 46, 397, 119, 120, 110,
149016 /* 960 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
149017 /* 970 */ 118, 118, 428, 48, 48, 534, 392, 119, 120, 110,
149018 /* 980 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
149019 /* 990 */ 118, 118, 1324, 368, 1066, 447, 825, 49, 49, 534,
149020 /* 1000 */ 458, 357, 534, 353, 534, 138, 534, 337, 1478, 478,
149021 /* 1010 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
149022 /* 1020 */ 414, 62, 62, 392, 63, 63, 64, 64, 14, 14,
149023 /* 1030 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
149024 /* 1040 */ 414, 534, 810, 317, 271, 534, 1457, 825, 534, 6,
149025 /* 1050 */ 534, 1324, 534, 142, 534, 1442, 534, 212, 534, 1324,
149026 /* 1060 */ 534, 398, 305, 65, 65, 534, 1157, 125, 125, 476,
149027 /* 1070 */ 66, 66, 51, 51, 67, 67, 68, 68, 52, 52,
149028 /* 1080 */ 147, 147, 148, 148, 534, 98, 534, 75, 75, 276,
149029 /* 1090 */ 534, 272, 534, 810, 534, 876, 534, 527, 389, 534,
149030 /* 1100 */ 875, 534, 1151, 202, 534, 383, 53, 53, 71, 71,
149031 /* 1110 */ 288, 525, 126, 126, 72, 72, 127, 127, 128, 128,
149032 /* 1120 */ 454, 124, 124, 146, 146, 383, 145, 145, 408, 119,
149033 /* 1130 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
149034 /* 1140 */ 118, 118, 118, 118, 534, 900, 534, 95, 534, 119,
149035 /* 1150 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
149036 /* 1160 */ 118, 118, 118, 118, 390, 161, 132, 132, 131, 131,
149037 /* 1170 */ 129, 129, 534, 915, 534, 1455, 534, 1454, 6, 1416,
149038 /* 1180 */ 6, 916, 116, 116, 116, 116, 115, 115, 114, 114,
149039 /* 1190 */ 114, 113, 414, 1415, 130, 130, 74, 74, 76, 76,
149040 /* 1200 */ 534, 30, 116, 116, 116, 116, 115, 115, 114, 114,
149041 /* 1210 */ 114, 113, 414, 534, 263, 206, 534, 1133, 1504, 93,
149042 /* 1220 */ 876, 845, 73, 73, 102, 875, 100, 139, 17, 38,
149043 /* 1230 */ 208, 1062, 31, 450, 370, 43, 43, 101, 47, 47,
149044 /* 1240 */ 827, 216, 436, 308, 943, 440, 95, 241, 241, 442,
149045 /* 1250 */ 313, 464, 241, 95, 237, 900, 327, 383, 266, 95,
149046 /* 1260 */ 835, 834, 193, 335, 938, 314, 1011, 435, 842, 843,
149047 /* 1270 */ 955, 1007, 909, 334, 237, 241, 873, 383, 1023, 107,
149048 /* 1280 */ 1023, 119, 120, 110, 1136, 1136, 981, 984, 974, 974,
149049 /* 1290 */ 117, 117, 118, 118, 118, 118, 1022, 808, 1022, 1274,
149050 /* 1300 */ 137, 119, 108, 110, 1136, 1136, 981, 984, 974, 974,
149051 /* 1310 */ 117, 117, 118, 118, 118, 118, 874, 1011, 318, 107,
149052 /* 1320 */ 321, 955, 323, 325, 1225, 1211, 197, 1210, 1209, 330,
149053 /* 1330 */ 339, 1265, 340, 283, 116, 116, 116, 116, 115, 115,
149054 /* 1340 */ 114, 114, 114, 113, 414, 1286, 1323, 1261, 1471, 1272,
149055 /* 1350 */ 520, 218, 521, 1329, 116, 116, 116, 116, 115, 115,
149056 /* 1360 */ 114, 114, 114, 113, 414, 1192, 1184, 1173, 1172, 1174,
149057 /* 1370 */ 1494, 1488, 459, 256, 383, 1258, 342, 199, 367, 344,
149058 /* 1380 */ 211, 195, 307, 444, 11, 346, 469, 333, 1308, 1316,
149059 /* 1390 */ 375, 427, 203, 360, 383, 1388, 188, 1387, 189, 120,
149060 /* 1400 */ 110, 1136, 1136, 981, 984, 974, 974, 117, 117, 118,
149061 /* 1410 */ 118, 118, 118, 1208, 1151, 300, 348, 1491, 245, 1148,
149062 /* 1420 */ 110, 1136, 1136, 981, 984, 974, 974, 117, 117, 118,
149063 /* 1430 */ 118, 118, 118, 198, 1435, 1433, 524, 78, 391, 163,
149064 /* 1440 */ 82, 1393, 438, 173, 81, 105, 526, 1313, 4, 35,
149065 /* 1450 */ 157, 116, 116, 116, 116, 115, 115, 114, 114, 114,
149066 /* 1460 */ 113, 414, 529, 165, 93, 430, 1305, 168, 169, 431,
149067 /* 1470 */ 462, 116, 116, 116, 116, 115, 115, 114, 114, 114,
149068 /* 1480 */ 113, 414, 170, 171, 221, 415, 372, 437, 1319, 177,
149069 /* 1490 */ 374, 36, 451, 225, 1382, 87, 457, 523, 257, 1404,
149070 /* 1500 */ 316, 105, 526, 227, 4, 182, 460, 160, 320, 228,
149071 /* 1510 */ 377, 1175, 475, 229, 1228, 404, 1227, 1226, 529, 827,
149072 /* 1520 */ 961, 1219, 378, 1200, 1199, 406, 103, 103, 1218, 332,
149073 /* 1530 */ 8, 281, 1198, 104, 1503, 415, 536, 535, 486, 282,
149074 /* 1540 */ 951, 415, 489, 495, 92, 244, 1269, 341, 243, 122,
149075 /* 1550 */ 1270, 343, 514, 523, 1268, 1462, 10, 288, 525, 345,
149076 /* 1560 */ 1461, 354, 99, 352, 503, 94, 1267, 347, 1251, 502,
149077 /* 1570 */ 498, 951, 951, 953, 954, 27, 961, 1250, 194, 358,
149078 /* 1580 */ 251, 359, 103, 103, 1181, 34, 537, 1110, 252, 104,
149079 /* 1590 */ 254, 415, 536, 535, 255, 1368, 951, 1420, 286, 538,
149080 /* 1600 */ 1170, 1165, 1421, 135, 1419, 1418, 149, 150, 279, 784,
149081 /* 1610 */ 416, 196, 151, 290, 210, 200, 77, 385, 269, 386,
149082 /* 1620 */ 133, 162, 935, 1021, 201, 1019, 153, 951, 951, 953,
149083 /* 1630 */ 954, 27, 1480, 1104, 417, 164, 217, 268, 859, 166,
149084 /* 1640 */ 306, 1035, 366, 366, 365, 253, 363, 220, 172, 797,
149085 /* 1650 */ 939, 155, 105, 526, 393, 4, 395, 174, 156, 83,
149086 /* 1660 */ 1038, 84, 213, 85, 294, 222, 86, 223, 1034, 529,
149087 /* 1670 */ 144, 18, 293, 224, 315, 456, 241, 1027, 1145, 178,
149088 /* 1680 */ 226, 179, 37, 799, 334, 461, 230, 465, 470, 838,
149089 /* 1690 */ 180, 88, 415, 19, 280, 328, 20, 89, 90, 158,
149090 /* 1700 */ 191, 477, 215, 1097, 523, 204, 192, 987, 91, 1070,
149091 /* 1710 */ 152, 39, 485, 154, 1071, 503, 40, 488, 205, 260,
149092 /* 1720 */ 504, 262, 105, 526, 214, 4, 908, 961, 183, 240,
149093 /* 1730 */ 903, 107, 1086, 103, 103, 21, 22, 1088, 23, 529,
149094 /* 1740 */ 104, 24, 415, 536, 535, 1090, 1093, 951, 1094, 25,
149095 /* 1750 */ 1074, 33, 7, 26, 510, 1002, 247, 186, 384, 95,
149096 /* 1760 */ 988, 986, 415, 288, 525, 990, 1044, 246, 1043, 991,
149097 /* 1770 */ 28, 41, 530, 956, 523, 809, 106, 29, 951, 951,
149098 /* 1780 */ 953, 954, 27, 869, 361, 503, 422, 248, 364, 1105,
149099 /* 1790 */ 502, 249, 1161, 1496, 1495, 1161, 1161, 961, 1161, 1161,
149100 /* 1800 */ 1161, 1161, 1161, 103, 103, 1161, 1161, 1161, 1161, 1161,
149101 /* 1810 */ 104, 1161, 415, 536, 535, 1104, 417, 951, 1161, 268,
149102 /* 1820 */ 1161, 1161, 1161, 1161, 366, 366, 365, 253, 363, 1161,
149103 /* 1830 */ 1161, 797, 1161, 1161, 1161, 1161, 105, 526, 1161, 4,
149104 /* 1840 */ 1161, 1161, 1161, 1161, 213, 1161, 294, 1161, 951, 951,
149105 /* 1850 */ 953, 954, 27, 529, 293, 1161, 1161, 1161, 1161, 1161,
149106 /* 1860 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
149107 /* 1870 */ 1161, 1161, 1161, 1161, 1161, 1161, 415, 1161, 1161, 1161,
149108 /* 1880 */ 1161, 1161, 1161, 1161, 215, 1161, 1161, 1161, 523, 1161,
149109 /* 1890 */ 1161, 1161, 152, 1161, 1161, 154, 105, 526, 1161, 4,
149110 /* 1900 */ 1161, 1161, 1161, 1161, 1161, 1161, 214, 1161, 1161, 1161,
149111 /* 1910 */ 1161, 961, 1161, 529, 1161, 1161, 1161, 103, 103, 880,
149112 /* 1920 */ 1161, 1161, 1161, 1161, 104, 1161, 415, 536, 535, 1161,
149113 /* 1930 */ 1161, 951, 1161, 1161, 1161, 1161, 415, 1161, 1161, 1161,
149114 /* 1940 */ 384, 1161, 1161, 1161, 1161, 288, 525, 1161, 523, 1161,
149115 /* 1950 */ 1161, 1161, 1161, 1161, 1161, 1161, 97, 526, 1161, 4,
149116 /* 1960 */ 1161, 1161, 951, 951, 953, 954, 27, 1161, 422, 1161,
149117 /* 1970 */ 1161, 961, 1161, 529, 1161, 1161, 1161, 103, 103, 1161,
149118 /* 1980 */ 1161, 1161, 1161, 1161, 104, 1161, 415, 536, 535, 1161,
149119 /* 1990 */ 1161, 951, 268, 1161, 1161, 1161, 415, 366, 366, 365,
149120 /* 2000 */ 253, 363, 1161, 1161, 797, 1161, 1161, 1161, 523, 1161,
149121 /* 2010 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 213, 1161, 294,
149122 /* 2020 */ 1161, 1161, 951, 951, 953, 954, 27, 293, 1161, 1161,
149123 /* 2030 */ 1161, 961, 1161, 1161, 1161, 1161, 1161, 103, 103, 1161,
149124 /* 2040 */ 1161, 1161, 1161, 1161, 104, 1161, 415, 536, 535, 1161,
149125 /* 2050 */ 1161, 951, 1161, 1161, 1161, 1161, 1161, 215, 1161, 1161,
149126 /* 2060 */ 1161, 1161, 1161, 1161, 1161, 152, 1161, 1161, 154, 1161,
149127 /* 2070 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 214,
149128 /* 2080 */ 1161, 1161, 951, 951, 953, 954, 27, 1161, 1161, 1161,
149129 /* 2090 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
149130 /* 2100 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
149131 /* 2110 */ 1161, 1161, 1161, 384, 1161, 1161, 1161, 1161, 288, 525,
149132 /* 2120 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
149133 /* 2130 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
149134 /* 2140 */ 1161, 422,
149135 };
149136 static const YYCODETYPE yy_lookahead[] = {
149137 /* 0 */ 260, 261, 262, 260, 261, 262, 176, 177, 178, 179,
149138 /* 10 */ 180, 181, 184, 206, 209, 184, 186, 206, 188, 19,
149139 /* 20 */ 179, 281, 181, 213, 214, 195, 206, 186, 195, 188,
149140 /* 30 */ 195, 31, 222, 184, 206, 207, 195, 206, 207, 39,
149141 /* 40 */ 24, 209, 184, 43, 44, 45, 46, 47, 48, 49,
149142 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 228, 229,
149143 /* 60 */ 184, 228, 229, 228, 229, 260, 261, 262, 192, 228,
149144 /* 70 */ 229, 241, 196, 242, 241, 59, 241, 205, 245, 246,
149145 /* 80 */ 184, 22, 241, 24, 254, 213, 54, 55, 56, 57,
149146 /* 90 */ 58, 256, 260, 261, 262, 254, 96, 97, 98, 99,
149147 /* 100 */ 100, 101, 102, 103, 104, 105, 106, 100, 101, 102,
149148 /* 110 */ 103, 104, 105, 106, 284, 203, 19, 221, 59, 102,
149149 /* 120 */ 103, 104, 105, 106, 59, 284, 110, 269, 96, 97,
149150 /* 130 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 94,
149151 /* 140 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
149152 /* 150 */ 53, 54, 55, 56, 57, 110, 184, 106, 73, 114,
149153 /* 160 */ 178, 179, 180, 181, 219, 184, 81, 22, 186, 110,
149154 /* 170 */ 188, 121, 122, 195, 109, 110, 111, 195, 206, 207,
149155 /* 180 */ 83, 184, 85, 54, 55, 56, 57, 206, 207, 277,
149156 /* 190 */ 145, 146, 147, 96, 97, 98, 99, 100, 101, 102,
149157 /* 200 */ 103, 104, 105, 106, 59, 120, 228, 229, 143, 184,
149158 /* 210 */ 228, 229, 184, 19, 242, 203, 131, 132, 221, 241,
149159 /* 220 */ 26, 184, 184, 241, 196, 96, 97, 98, 99, 100,
149160 /* 230 */ 101, 102, 103, 104, 105, 106, 254, 43, 44, 45,
149161 /* 240 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149162 /* 250 */ 56, 57, 184, 184, 109, 110, 111, 105, 106, 184,
149163 /* 260 */ 200, 201, 202, 69, 184, 227, 284, 96, 97, 98,
149164 /* 270 */ 99, 100, 101, 102, 103, 104, 105, 106, 297, 298,
149165 /* 280 */ 255, 206, 207, 19, 272, 59, 206, 207, 184, 277,
149166 /* 290 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149167 /* 300 */ 106, 184, 259, 19, 184, 100, 101, 43, 44, 45,
149168 /* 310 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149169 /* 320 */ 56, 57, 242, 206, 207, 184, 100, 101, 138, 292,
149170 /* 330 */ 293, 67, 76, 296, 108, 109, 110, 111, 295, 113,
149171 /* 340 */ 84, 59, 86, 22, 26, 89, 156, 121, 224, 225,
149172 /* 350 */ 145, 19, 147, 59, 72, 256, 24, 184, 290, 291,
149173 /* 360 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149174 /* 370 */ 106, 145, 297, 147, 299, 43, 44, 45, 46, 47,
149175 /* 380 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
149176 /* 390 */ 106, 109, 110, 111, 138, 184, 112, 113, 114, 115,
149177 /* 400 */ 116, 117, 118, 109, 110, 111, 112, 59, 124, 115,
149178 /* 410 */ 116, 117, 292, 293, 297, 298, 296, 206, 207, 125,
149179 /* 420 */ 72, 100, 101, 184, 46, 47, 48, 49, 96, 97,
149180 /* 430 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 59,
149181 /* 440 */ 200, 201, 202, 184, 59, 206, 207, 46, 19, 131,
149182 /* 450 */ 132, 278, 23, 242, 184, 184, 76, 109, 110, 111,
149183 /* 460 */ 224, 225, 251, 81, 84, 184, 86, 22, 23, 89,
149184 /* 470 */ 184, 26, 43, 44, 45, 46, 47, 48, 49, 50,
149185 /* 480 */ 51, 52, 53, 54, 55, 56, 57, 102, 184, 109,
149186 /* 490 */ 110, 111, 114, 184, 109, 110, 111, 184, 227, 184,
149187 /* 500 */ 230, 184, 22, 264, 195, 59, 22, 184, 195, 108,
149188 /* 510 */ 206, 207, 59, 131, 132, 206, 207, 184, 138, 206,
149189 /* 520 */ 207, 206, 207, 206, 207, 96, 97, 98, 99, 100,
149190 /* 530 */ 101, 102, 103, 104, 105, 106, 255, 228, 229, 59,
149191 /* 540 */ 95, 228, 229, 59, 184, 19, 242, 94, 184, 23,
149192 /* 550 */ 241, 242, 184, 282, 241, 242, 110, 242, 184, 242,
149193 /* 560 */ 251, 59, 109, 110, 196, 184, 251, 114, 251, 43,
149194 /* 570 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
149195 /* 580 */ 54, 55, 56, 57, 259, 217, 12, 219, 255, 109,
149196 /* 590 */ 110, 111, 203, 109, 110, 111, 184, 22, 145, 146,
149197 /* 600 */ 147, 27, 112, 22, 230, 115, 116, 117, 227, 19,
149198 /* 610 */ 59, 109, 110, 111, 291, 125, 42, 35, 206, 207,
149199 /* 620 */ 295, 184, 96, 97, 98, 99, 100, 101, 102, 103,
149200 /* 630 */ 104, 105, 106, 26, 59, 233, 46, 63, 136, 184,
149201 /* 640 */ 59, 184, 19, 206, 207, 243, 23, 73, 66, 260,
149202 /* 650 */ 261, 262, 59, 184, 242, 195, 74, 220, 184, 184,
149203 /* 660 */ 109, 110, 111, 206, 207, 184, 43, 44, 45, 46,
149204 /* 670 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
149205 /* 680 */ 57, 206, 207, 76, 109, 110, 111, 136, 228, 229,
149206 /* 690 */ 109, 110, 111, 86, 184, 220, 89, 21, 108, 230,
149207 /* 700 */ 184, 241, 109, 110, 111, 123, 184, 127, 184, 129,
149208 /* 710 */ 130, 184, 195, 184, 124, 184, 198, 199, 184, 96,
149209 /* 720 */ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
149210 /* 730 */ 206, 207, 11, 206, 207, 206, 207, 206, 207, 19,
149211 /* 740 */ 206, 207, 184, 23, 220, 228, 229, 220, 81, 220,
149212 /* 750 */ 195, 220, 287, 288, 220, 195, 80, 195, 241, 201,
149213 /* 760 */ 202, 184, 73, 43, 44, 45, 46, 47, 48, 49,
149214 /* 770 */ 50, 51, 52, 53, 54, 55, 56, 57, 201, 202,
149215 /* 780 */ 113, 195, 184, 228, 229, 120, 121, 122, 228, 229,
149216 /* 790 */ 228, 229, 116, 16, 23, 184, 241, 26, 131, 132,
149217 /* 800 */ 278, 241, 19, 241, 22, 23, 184, 189, 26, 120,
149218 /* 810 */ 121, 122, 184, 26, 228, 229, 96, 97, 98, 99,
149219 /* 820 */ 100, 101, 102, 103, 104, 105, 106, 241, 270, 153,
149220 /* 830 */ 66, 228, 229, 229, 206, 207, 19, 184, 228, 229,
149221 /* 840 */ 23, 16, 121, 122, 241, 241, 82, 270, 29, 227,
149222 /* 850 */ 252, 241, 33, 19, 77, 91, 79, 184, 22, 23,
149223 /* 860 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
149224 /* 870 */ 53, 54, 55, 56, 57, 12, 184, 95, 184, 206,
149225 /* 880 */ 207, 76, 111, 184, 65, 267, 184, 184, 184, 271,
149226 /* 890 */ 27, 86, 109, 184, 89, 120, 121, 122, 206, 207,
149227 /* 900 */ 206, 207, 77, 139, 79, 42, 184, 136, 206, 207,
149228 /* 910 */ 206, 207, 184, 96, 97, 98, 99, 100, 101, 102,
149229 /* 920 */ 103, 104, 105, 106, 184, 138, 63, 184, 206, 207,
149230 /* 930 */ 153, 95, 184, 19, 206, 207, 227, 23, 7, 8,
149231 /* 940 */ 9, 293, 293, 109, 296, 296, 206, 207, 215, 206,
149232 /* 950 */ 207, 184, 253, 19, 206, 207, 253, 43, 44, 45,
149233 /* 960 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149234 /* 970 */ 56, 57, 184, 206, 207, 184, 184, 43, 44, 45,
149235 /* 980 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
149236 /* 990 */ 56, 57, 184, 22, 23, 184, 59, 206, 207, 184,
149237 /* 1000 */ 184, 238, 184, 240, 184, 22, 184, 184, 157, 158,
149238 /* 1010 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149239 /* 1020 */ 106, 206, 207, 184, 206, 207, 206, 207, 206, 207,
149240 /* 1030 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
149241 /* 1040 */ 106, 184, 59, 227, 252, 184, 293, 110, 184, 296,
149242 /* 1050 */ 184, 184, 184, 230, 184, 184, 184, 15, 184, 184,
149243 /* 1060 */ 184, 253, 184, 206, 207, 184, 95, 206, 207, 102,
149244 /* 1070 */ 206, 207, 206, 207, 206, 207, 206, 207, 206, 207,
149245 /* 1080 */ 206, 207, 206, 207, 184, 151, 184, 206, 207, 278,
149246 /* 1090 */ 184, 252, 184, 110, 184, 128, 184, 198, 199, 184,
149247 /* 1100 */ 133, 184, 60, 26, 184, 19, 206, 207, 206, 207,
149248 /* 1110 */ 131, 132, 206, 207, 206, 207, 206, 207, 206, 207,
149249 /* 1120 */ 253, 206, 207, 206, 207, 19, 206, 207, 253, 43,
149250 /* 1130 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
149251 /* 1140 */ 54, 55, 56, 57, 184, 26, 184, 26, 184, 43,
149252 /* 1150 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
149253 /* 1160 */ 54, 55, 56, 57, 285, 286, 206, 207, 206, 207,
149254 /* 1170 */ 206, 207, 184, 31, 184, 293, 184, 293, 296, 184,
149255 /* 1180 */ 296, 39, 96, 97, 98, 99, 100, 101, 102, 103,
149256 /* 1190 */ 104, 105, 106, 184, 206, 207, 206, 207, 206, 207,
149257 /* 1200 */ 184, 22, 96, 97, 98, 99, 100, 101, 102, 103,
149258 /* 1210 */ 104, 105, 106, 184, 245, 246, 184, 26, 23, 142,
149259 /* 1220 */ 128, 26, 206, 207, 150, 133, 152, 22, 22, 24,
149260 /* 1230 */ 111, 23, 53, 184, 26, 206, 207, 151, 206, 207,
149261 /* 1240 */ 119, 24, 122, 23, 23, 23, 26, 26, 26, 23,
149262 /* 1250 */ 23, 23, 26, 26, 26, 136, 23, 19, 22, 26,
149263 /* 1260 */ 113, 114, 24, 114, 144, 184, 59, 61, 7, 8,
149264 /* 1270 */ 59, 23, 23, 124, 26, 26, 23, 19, 145, 26,
149265 /* 1280 */ 147, 43, 44, 45, 46, 47, 48, 49, 50, 51,
149266 /* 1290 */ 52, 53, 54, 55, 56, 57, 145, 23, 147, 184,
149267 /* 1300 */ 26, 43, 44, 45, 46, 47, 48, 49, 50, 51,
149268 /* 1310 */ 52, 53, 54, 55, 56, 57, 23, 110, 184, 26,
149269 /* 1320 */ 184, 110, 184, 184, 184, 215, 135, 215, 184, 184,
149270 /* 1330 */ 184, 247, 184, 244, 96, 97, 98, 99, 100, 101,
149271 /* 1340 */ 102, 103, 104, 105, 106, 184, 184, 184, 301, 184,
149272 /* 1350 */ 184, 134, 225, 184, 96, 97, 98, 99, 100, 101,
149273 /* 1360 */ 102, 103, 104, 105, 106, 184, 184, 184, 184, 184,
149274 /* 1370 */ 134, 184, 274, 273, 19, 244, 244, 204, 182, 244,
149275 /* 1380 */ 283, 231, 279, 279, 232, 244, 210, 209, 235, 235,
149276 /* 1390 */ 235, 248, 218, 234, 19, 209, 238, 209, 238, 44,
149277 /* 1400 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
149278 /* 1410 */ 55, 56, 57, 214, 60, 248, 248, 187, 134, 38,
149279 /* 1420 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
149280 /* 1430 */ 55, 56, 57, 232, 191, 191, 266, 280, 191, 283,
149281 /* 1440 */ 143, 269, 108, 22, 280, 19, 20, 258, 22, 257,
149282 /* 1450 */ 43, 96, 97, 98, 99, 100, 101, 102, 103, 104,
149283 /* 1460 */ 105, 106, 36, 223, 142, 18, 235, 226, 226, 191,
149284 /* 1470 */ 18, 96, 97, 98, 99, 100, 101, 102, 103, 104,
149285 /* 1480 */ 105, 106, 226, 226, 190, 59, 235, 235, 223, 223,
149286 /* 1490 */ 258, 257, 191, 190, 235, 150, 62, 71, 191, 276,
149287 /* 1500 */ 275, 19, 20, 190, 22, 22, 211, 81, 191, 190,
149288 /* 1510 */ 211, 191, 108, 190, 208, 64, 208, 208, 36, 119,
149289 /* 1520 */ 94, 216, 211, 208, 210, 106, 100, 101, 216, 208,
149290 /* 1530 */ 48, 268, 208, 107, 208, 109, 110, 111, 211, 268,
149291 /* 1540 */ 114, 59, 211, 137, 108, 88, 250, 249, 191, 141,
149292 /* 1550 */ 250, 249, 138, 71, 250, 300, 22, 131, 132, 249,
149293 /* 1560 */ 300, 191, 150, 238, 82, 140, 250, 249, 239, 87,
149294 /* 1570 */ 139, 145, 146, 147, 148, 149, 94, 239, 237, 236,
149295 /* 1580 */ 25, 235, 100, 101, 194, 26, 193, 13, 185, 107,
149296 /* 1590 */ 185, 109, 110, 111, 6, 263, 114, 203, 265, 183,
149297 /* 1600 */ 183, 183, 203, 212, 203, 203, 197, 197, 212, 4,
149298 /* 1610 */ 3, 22, 197, 155, 15, 204, 203, 289, 93, 289,
149299 /* 1620 */ 16, 286, 132, 23, 204, 23, 123, 145, 146, 147,
149300 /* 1630 */ 148, 149, 0, 1, 2, 143, 24, 5, 20, 135,
149301 /* 1640 */ 16, 1, 10, 11, 12, 13, 14, 137, 135, 17,
149302 /* 1650 */ 144, 123, 19, 20, 61, 22, 37, 143, 123, 53,
149303 /* 1660 */ 109, 53, 30, 53, 32, 34, 53, 134, 1, 36,
149304 /* 1670 */ 5, 22, 40, 108, 153, 41, 26, 68, 75, 68,
149305 /* 1680 */ 134, 108, 24, 20, 124, 19, 118, 67, 67, 28,
149306 /* 1690 */ 22, 22, 59, 22, 67, 23, 22, 22, 142, 37,
149307 /* 1700 */ 23, 22, 70, 23, 71, 157, 23, 23, 26, 23,
149308 /* 1710 */ 78, 22, 24, 81, 23, 82, 22, 24, 134, 23,
149309 /* 1720 */ 87, 23, 19, 20, 92, 22, 109, 94, 22, 34,
149310 /* 1730 */ 136, 26, 85, 100, 101, 34, 34, 83, 34, 36,
149311 /* 1740 */ 107, 34, 109, 110, 111, 75, 90, 114, 75, 34,
149312 /* 1750 */ 23, 22, 44, 34, 24, 23, 22, 26, 126, 26,
149313 /* 1760 */ 23, 23, 59, 131, 132, 23, 23, 26, 23, 11,
149314 /* 1770 */ 22, 22, 26, 23, 71, 23, 22, 22, 145, 146,
149315 /* 1780 */ 147, 148, 149, 128, 23, 82, 154, 134, 15, 1,
149316 /* 1790 */ 87, 134, 302, 134, 134, 302, 302, 94, 302, 302,
149317 /* 1800 */ 302, 302, 302, 100, 101, 302, 302, 302, 302, 302,
149318 /* 1810 */ 107, 302, 109, 110, 111, 1, 2, 114, 302, 5,
149319 /* 1820 */ 302, 302, 302, 302, 10, 11, 12, 13, 14, 302,
149320 /* 1830 */ 302, 17, 302, 302, 302, 302, 19, 20, 302, 22,
149321 /* 1840 */ 302, 302, 302, 302, 30, 302, 32, 302, 145, 146,
149322 /* 1850 */ 147, 148, 149, 36, 40, 302, 302, 302, 302, 302,
149323 /* 1860 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149324 /* 1870 */ 302, 302, 302, 302, 302, 302, 59, 302, 302, 302,
149325 /* 1880 */ 302, 302, 302, 302, 70, 302, 302, 302, 71, 302,
149326 /* 1890 */ 302, 302, 78, 302, 302, 81, 19, 20, 302, 22,
149327 /* 1900 */ 302, 302, 302, 302, 302, 302, 92, 302, 302, 302,
149328 /* 1910 */ 302, 94, 302, 36, 302, 302, 302, 100, 101, 102,
149329 /* 1920 */ 302, 302, 302, 302, 107, 302, 109, 110, 111, 302,
149330 /* 1930 */ 302, 114, 302, 302, 302, 302, 59, 302, 302, 302,
149331 /* 1940 */ 126, 302, 302, 302, 302, 131, 132, 302, 71, 302,
149332 /* 1950 */ 302, 302, 302, 302, 302, 302, 19, 20, 302, 22,
149333 /* 1960 */ 302, 302, 145, 146, 147, 148, 149, 302, 154, 302,
149334 /* 1970 */ 302, 94, 302, 36, 302, 302, 302, 100, 101, 302,
149335 /* 1980 */ 302, 302, 302, 302, 107, 302, 109, 110, 111, 302,
149336 /* 1990 */ 302, 114, 5, 302, 302, 302, 59, 10, 11, 12,
149337 /* 2000 */ 13, 14, 302, 302, 17, 302, 302, 302, 71, 302,
149338 /* 2010 */ 302, 302, 302, 302, 302, 302, 302, 30, 302, 32,
149339 /* 2020 */ 302, 302, 145, 146, 147, 148, 149, 40, 302, 302,
149340 /* 2030 */ 302, 94, 302, 302, 302, 302, 302, 100, 101, 302,
149341 /* 2040 */ 302, 302, 302, 302, 107, 302, 109, 110, 111, 302,
149342 /* 2050 */ 302, 114, 302, 302, 302, 302, 302, 70, 302, 302,
149343 /* 2060 */ 302, 302, 302, 302, 302, 78, 302, 302, 81, 302,
149344 /* 2070 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 92,
149345 /* 2080 */ 302, 302, 145, 146, 147, 148, 149, 302, 302, 302,
149346 /* 2090 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149347 /* 2100 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149348 /* 2110 */ 302, 302, 302, 126, 302, 302, 302, 302, 131, 132,
149349 /* 2120 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149350 /* 2130 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149351 /* 2140 */ 302, 154, 302, 302, 302, 302, 302, 302, 302, 302,
149352 /* 2150 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
149353 /* 2160 */ 302, 302, 302, 302, 302, 302, 302, 302, 302,
149354 };
149355 #define YY_SHIFT_COUNT (539)
149356 #define YY_SHIFT_MIN (0)
149357 #define YY_SHIFT_MAX (1987)
149358 static const unsigned short int yy_shift_ofst[] = {
149359 /* 0 */ 1814, 1632, 1987, 1426, 1426, 382, 1482, 1633, 1703, 1877,
149360 /* 10 */ 1877, 1877, 85, 0, 0, 264, 1106, 1877, 1877, 1877,
149361 /* 20 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149362 /* 30 */ 226, 226, 380, 380, 294, 667, 382, 382, 382, 382,
149363 /* 40 */ 382, 382, 97, 194, 332, 429, 526, 623, 720, 817,
149364 /* 50 */ 914, 934, 1086, 1238, 1106, 1106, 1106, 1106, 1106, 1106,
149365 /* 60 */ 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
149366 /* 70 */ 1106, 1106, 1258, 1106, 1355, 1375, 1375, 1817, 1877, 1877,
149367 /* 80 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149368 /* 90 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149369 /* 100 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149370 /* 110 */ 1937, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
149371 /* 120 */ 1877, 1877, 1877, 1877, 32, 129, 129, 129, 129, 129,
149372 /* 130 */ 171, 7, 17, 593, 676, 590, 593, 205, 205, 593,
149373 /* 140 */ 318, 318, 318, 318, 50, 152, 51, 2142, 2142, 284,
149374 /* 150 */ 284, 284, 65, 145, 282, 145, 145, 574, 574, 256,
149375 /* 160 */ 348, 445, 782, 593, 593, 593, 593, 593, 593, 593,
149376 /* 170 */ 593, 593, 593, 593, 593, 593, 593, 593, 593, 593,
149377 /* 180 */ 593, 593, 593, 593, 607, 607, 593, 721, 805, 805,
149378 /* 190 */ 446, 851, 851, 446, 190, 979, 2142, 2142, 2142, 453,
149379 /* 200 */ 45, 45, 480, 490, 484, 385, 575, 502, 551, 581,
149380 /* 210 */ 593, 593, 593, 593, 593, 593, 593, 593, 593, 689,
149381 /* 220 */ 593, 593, 593, 593, 593, 593, 593, 593, 593, 593,
149382 /* 230 */ 593, 593, 582, 582, 582, 593, 593, 593, 593, 771,
149383 /* 240 */ 593, 593, 593, 59, 764, 593, 593, 863, 593, 593,
149384 /* 250 */ 593, 593, 593, 593, 593, 593, 665, 819, 580, 16,
149385 /* 260 */ 16, 16, 16, 1119, 580, 580, 967, 321, 931, 1042,
149386 /* 270 */ 1077, 783, 783, 834, 1077, 1077, 834, 1121, 1195, 401,
149387 /* 280 */ 1142, 1142, 1142, 783, 787, 787, 1074, 1191, 1092, 1205,
149388 /* 290 */ 1354, 1284, 1284, 1381, 1381, 1284, 1297, 1334, 1421, 1407,
149389 /* 300 */ 1322, 1447, 1447, 1447, 1447, 1284, 1452, 1322, 1322, 1334,
149390 /* 310 */ 1421, 1407, 1407, 1322, 1284, 1452, 1345, 1434, 1284, 1452,
149391 /* 320 */ 1483, 1284, 1452, 1284, 1452, 1483, 1404, 1404, 1404, 1451,
149392 /* 330 */ 1483, 1404, 1400, 1404, 1451, 1404, 1404, 1483, 1419, 1419,
149393 /* 340 */ 1483, 1406, 1436, 1406, 1436, 1406, 1436, 1406, 1436, 1284,
149394 /* 350 */ 1457, 1457, 1408, 1414, 1534, 1284, 1412, 1408, 1425, 1431,
149395 /* 360 */ 1322, 1555, 1559, 1574, 1574, 1588, 1588, 1588, 2142, 2142,
149396 /* 370 */ 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142,
149397 /* 380 */ 2142, 2142, 2142, 378, 777, 836, 971, 825, 775, 983,
149398 /* 390 */ 1208, 1179, 1217, 1120, 1220, 1206, 1221, 1222, 1226, 1227,
149399 /* 400 */ 1228, 1233, 937, 1147, 1261, 1149, 1207, 1248, 1249, 1253,
149400 /* 410 */ 1133, 1151, 1274, 1293, 1211, 1236, 1605, 1607, 1589, 1458,
149401 /* 420 */ 1599, 1525, 1604, 1600, 1602, 1490, 1492, 1503, 1612, 1504,
149402 /* 430 */ 1618, 1510, 1624, 1640, 1513, 1506, 1528, 1593, 1619, 1514,
149403 /* 440 */ 1606, 1608, 1610, 1613, 1535, 1551, 1631, 1533, 1667, 1665,
149404 /* 450 */ 1649, 1565, 1521, 1609, 1650, 1611, 1603, 1634, 1546, 1573,
149405 /* 460 */ 1658, 1663, 1666, 1560, 1568, 1668, 1620, 1669, 1671, 1672,
149406 /* 470 */ 1674, 1621, 1661, 1675, 1627, 1662, 1677, 1556, 1679, 1680,
149407 /* 480 */ 1548, 1683, 1684, 1682, 1686, 1689, 1688, 1691, 1694, 1693,
149408 /* 490 */ 1584, 1696, 1698, 1617, 1695, 1706, 1594, 1705, 1701, 1702,
149409 /* 500 */ 1704, 1707, 1647, 1670, 1654, 1708, 1673, 1656, 1715, 1727,
149410 /* 510 */ 1729, 1730, 1731, 1733, 1719, 1732, 1705, 1737, 1738, 1742,
149411 /* 520 */ 1743, 1741, 1745, 1734, 1758, 1748, 1749, 1750, 1752, 1754,
149412 /* 530 */ 1755, 1746, 1655, 1653, 1657, 1659, 1660, 1761, 1773, 1788,
 
149413 };
149414 #define YY_REDUCE_COUNT (382)
149415 #define YY_REDUCE_MIN (-260)
149416 #define YY_REDUCE_MAX (1420)
149417 static const short yy_reduce_ofst[] = {
149418 /* 0 */ -170, -18, -159, 309, 313, -167, -19, 75, 117, 211,
149419 /* 10 */ 315, 317, -165, -195, -168, -260, 389, 437, 475, 524,
149420 /* 20 */ 527, -169, 529, 531, -28, 80, 534, 239, 304, 412,
149421 /* 30 */ 558, 577, 37, 120, 368, -22, 460, 517, 555, 560,
149422 /* 40 */ 562, 586, -257, -257, -257, -257, -257, -257, -257, -257,
149423 /* 50 */ -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
149424 /* 60 */ -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
149425 /* 70 */ -257, -257, -257, -257, -257, -257, -257, -172, 457, 628,
149426 /* 80 */ 673, 692, 694, 702, 704, 722, 728, 740, 743, 748,
149427 /* 90 */ 767, 791, 815, 818, 820, 822, 857, 861, 864, 866,
149428 /* 100 */ 868, 870, 872, 874, 876, 881, 900, 902, 906, 908,
149429 /* 110 */ 910, 912, 915, 917, 920, 960, 962, 964, 988, 990,
149430 /* 120 */ 992, 1016, 1029, 1032, -257, -257, -257, -257, -257, -257,
149431 /* 130 */ -257, -257, -257, 271, 618, -190, 68, 60, 240, -124,
149432 /* 140 */ 603, 610, 603, 610, 12, -257, -257, -257, -257, -128,
149433 /* 150 */ -128, -128, -142, 25, 270, 281, 333, 124, 236, 648,
149434 /* 160 */ 374, 465, 465, 28, 598, 792, 839, 469, 38, 381,
149435 /* 170 */ 622, 709, 173, 699, 522, 703, 808, 811, 867, 816,
149436 /* 180 */ -104, 823, -3, 875, 649, 753, 323, -88, 882, 884,
149437 /* 190 */ 518, 43, 325, 899, 763, 604, 879, 969, 402, -193,
149438 /* 200 */ -189, -180, -151, -55, 69, 104, 141, 259, 286, 360,
149439 /* 210 */ 364, 455, 474, 481, 510, 516, 611, 653, 788, 99,
149440 /* 220 */ 871, 878, 995, 1009, 1049, 1081, 1115, 1134, 1136, 1138,
149441 /* 230 */ 1139, 1140, 733, 1110, 1112, 1144, 1145, 1146, 1148, 1084,
149442 /* 240 */ 1161, 1162, 1163, 1089, 1047, 1165, 1166, 1127, 1169, 104,
149443 /* 250 */ 1181, 1182, 1183, 1184, 1185, 1187, 1098, 1100, 1150, 1131,
149444 /* 260 */ 1132, 1135, 1141, 1084, 1150, 1150, 1152, 1173, 1196, 1097,
149445 /* 270 */ 1153, 1143, 1167, 1103, 1154, 1155, 1104, 1176, 1174, 1199,
149446 /* 280 */ 1178, 1186, 1188, 1168, 1158, 1160, 1170, 1159, 1201, 1230,
149447 /* 290 */ 1156, 1243, 1244, 1157, 1164, 1247, 1172, 1189, 1192, 1240,
149448 /* 300 */ 1231, 1241, 1242, 1256, 1257, 1278, 1294, 1251, 1252, 1232,
149449 /* 310 */ 1234, 1265, 1266, 1259, 1301, 1303, 1223, 1225, 1307, 1313,
149450 /* 320 */ 1295, 1317, 1319, 1320, 1323, 1299, 1306, 1308, 1309, 1305,
149451 /* 330 */ 1311, 1315, 1314, 1321, 1312, 1324, 1326, 1327, 1263, 1271,
149452 /* 340 */ 1331, 1296, 1298, 1300, 1302, 1304, 1310, 1316, 1318, 1357,
149453 /* 350 */ 1255, 1260, 1329, 1325, 1332, 1370, 1333, 1338, 1341, 1343,
149454 /* 360 */ 1346, 1390, 1393, 1403, 1405, 1416, 1417, 1418, 1328, 1330,
149455 /* 370 */ 1335, 1409, 1394, 1399, 1401, 1402, 1410, 1391, 1396, 1411,
149456 /* 380 */ 1420, 1413, 1415,
149457 };
149458 static const YYACTIONTYPE yy_default[] = {
149459 /* 0 */ 1537, 1537, 1537, 1377, 1159, 1266, 1159, 1159, 1159, 1377,
149460 /* 10 */ 1377, 1377, 1159, 1296, 1296, 1430, 1190, 1159, 1159, 1159,
149461 /* 20 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1376, 1159, 1159,
149462 /* 30 */ 1159, 1159, 1460, 1460, 1159, 1159, 1159, 1159, 1159, 1159,
149463 /* 40 */ 1159, 1159, 1159, 1302, 1159, 1159, 1159, 1159, 1159, 1378,
149464 /* 50 */ 1379, 1159, 1159, 1159, 1429, 1431, 1394, 1312, 1311, 1310,
149465 /* 60 */ 1309, 1412, 1283, 1307, 1300, 1304, 1372, 1373, 1371, 1375,
149466 /* 70 */ 1379, 1378, 1159, 1303, 1343, 1357, 1342, 1159, 1159, 1159,
149467 /* 80 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149468 /* 90 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149469 /* 100 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149470 /* 110 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149471 /* 120 */ 1159, 1159, 1159, 1159, 1351, 1356, 1362, 1355, 1352, 1345,
149472 /* 130 */ 1344, 1346, 1347, 1159, 1180, 1230, 1159, 1159, 1159, 1159,
149473 /* 140 */ 1448, 1447, 1159, 1159, 1190, 1348, 1349, 1359, 1358, 1437,
149474 /* 150 */ 1493, 1492, 1395, 1159, 1159, 1159, 1159, 1159, 1159, 1460,
149475 /* 160 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149476 /* 170 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149477 /* 180 */ 1159, 1159, 1159, 1159, 1460, 1460, 1159, 1190, 1460, 1460,
149478 /* 190 */ 1186, 1337, 1336, 1186, 1290, 1159, 1443, 1266, 1257, 1159,
149479 /* 200 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149480 /* 210 */ 1159, 1159, 1159, 1434, 1432, 1159, 1159, 1159, 1159, 1159,
149481 /* 220 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149482 /* 230 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149483 /* 240 */ 1159, 1159, 1159, 1262, 1159, 1159, 1159, 1159, 1159, 1159,
149484 /* 250 */ 1159, 1159, 1159, 1159, 1159, 1487, 1159, 1407, 1244, 1262,
149485 /* 260 */ 1262, 1262, 1262, 1264, 1245, 1243, 1256, 1191, 1166, 1529,
149486 /* 270 */ 1306, 1285, 1285, 1526, 1306, 1306, 1526, 1205, 1507, 1202,
149487 /* 280 */ 1296, 1296, 1296, 1285, 1290, 1290, 1374, 1263, 1256, 1159,
149488 /* 290 */ 1529, 1271, 1271, 1528, 1528, 1271, 1395, 1315, 1321, 1233,
149489 /* 300 */ 1306, 1239, 1239, 1239, 1239, 1271, 1177, 1306, 1306, 1315,
149490 /* 310 */ 1321, 1233, 1233, 1306, 1271, 1177, 1411, 1523, 1271, 1177,
149491 /* 320 */ 1385, 1271, 1177, 1271, 1177, 1385, 1231, 1231, 1231, 1220,
149492 /* 330 */ 1385, 1231, 1205, 1231, 1220, 1231, 1231, 1385, 1389, 1389,
149493 /* 340 */ 1385, 1289, 1284, 1289, 1284, 1289, 1284, 1289, 1284, 1271,
149494 /* 350 */ 1470, 1470, 1301, 1290, 1380, 1271, 1159, 1301, 1299, 1297,
149495 /* 360 */ 1306, 1183, 1223, 1490, 1490, 1486, 1486, 1486, 1534, 1534,
149496 /* 370 */ 1443, 1502, 1190, 1190, 1190, 1190, 1502, 1207, 1207, 1191,
149497 /* 380 */ 1191, 1190, 1502, 1159, 1159, 1159, 1159, 1159, 1159, 1497,
149498 /* 390 */ 1159, 1396, 1275, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149499 /* 400 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149500 /* 410 */ 1159, 1159, 1159, 1159, 1159, 1326, 1159, 1162, 1440, 1159,
149501 /* 420 */ 1159, 1438, 1159, 1159, 1159, 1159, 1159, 1159, 1276, 1159,
149502 /* 430 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149503 /* 440 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1525, 1159, 1159,
149504 /* 450 */ 1159, 1159, 1159, 1159, 1410, 1409, 1159, 1159, 1273, 1159,
149505 /* 460 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149506 /* 470 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149507 /* 480 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149508 /* 490 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1298, 1159, 1159,
149509 /* 500 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149510 /* 510 */ 1159, 1159, 1475, 1291, 1159, 1159, 1516, 1159, 1159, 1159,
149511 /* 520 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
149512 /* 530 */ 1159, 1511, 1247, 1328, 1159, 1327, 1331, 1159, 1171, 1159,
 
149513 };
149514 /********** End of lemon-generated parsing tables *****************************/
149515
149516 /* The next table maps tokens (terminal symbols) into fallback tokens.
149517 ** If a construct like the following:
@@ -149766,107 +149913,108 @@
149913 /* 199 */ "typename",
149914 /* 200 */ "signed",
149915 /* 201 */ "plus_num",
149916 /* 202 */ "minus_num",
149917 /* 203 */ "scanpt",
149918 /* 204 */ "scantok",
149919 /* 205 */ "ccons",
149920 /* 206 */ "term",
149921 /* 207 */ "expr",
149922 /* 208 */ "onconf",
149923 /* 209 */ "sortorder",
149924 /* 210 */ "autoinc",
149925 /* 211 */ "eidlist_opt",
149926 /* 212 */ "refargs",
149927 /* 213 */ "defer_subclause",
149928 /* 214 */ "refarg",
149929 /* 215 */ "refact",
149930 /* 216 */ "init_deferred_pred_opt",
149931 /* 217 */ "conslist",
149932 /* 218 */ "tconscomma",
149933 /* 219 */ "tcons",
149934 /* 220 */ "sortlist",
149935 /* 221 */ "eidlist",
149936 /* 222 */ "defer_subclause_opt",
149937 /* 223 */ "orconf",
149938 /* 224 */ "resolvetype",
149939 /* 225 */ "raisetype",
149940 /* 226 */ "ifexists",
149941 /* 227 */ "fullname",
149942 /* 228 */ "selectnowith",
149943 /* 229 */ "oneselect",
149944 /* 230 */ "wqlist",
149945 /* 231 */ "multiselect_op",
149946 /* 232 */ "distinct",
149947 /* 233 */ "selcollist",
149948 /* 234 */ "from",
149949 /* 235 */ "where_opt",
149950 /* 236 */ "groupby_opt",
149951 /* 237 */ "having_opt",
149952 /* 238 */ "orderby_opt",
149953 /* 239 */ "limit_opt",
149954 /* 240 */ "window_clause",
149955 /* 241 */ "values",
149956 /* 242 */ "nexprlist",
149957 /* 243 */ "sclp",
149958 /* 244 */ "as",
149959 /* 245 */ "seltablist",
149960 /* 246 */ "stl_prefix",
149961 /* 247 */ "joinop",
149962 /* 248 */ "indexed_opt",
149963 /* 249 */ "on_opt",
149964 /* 250 */ "using_opt",
149965 /* 251 */ "exprlist",
149966 /* 252 */ "xfullname",
149967 /* 253 */ "idlist",
149968 /* 254 */ "with",
149969 /* 255 */ "setlist",
149970 /* 256 */ "insert_cmd",
149971 /* 257 */ "idlist_opt",
149972 /* 258 */ "upsert",
149973 /* 259 */ "over_clause",
149974 /* 260 */ "likeop",
149975 /* 261 */ "between_op",
149976 /* 262 */ "in_op",
149977 /* 263 */ "paren_exprlist",
149978 /* 264 */ "case_operand",
149979 /* 265 */ "case_exprlist",
149980 /* 266 */ "case_else",
149981 /* 267 */ "uniqueflag",
149982 /* 268 */ "collate",
149983 /* 269 */ "vinto",
149984 /* 270 */ "nmnum",
149985 /* 271 */ "trigger_decl",
149986 /* 272 */ "trigger_cmd_list",
149987 /* 273 */ "trigger_time",
149988 /* 274 */ "trigger_event",
149989 /* 275 */ "foreach_clause",
149990 /* 276 */ "when_clause",
149991 /* 277 */ "trigger_cmd",
149992 /* 278 */ "trnm",
149993 /* 279 */ "tridxby",
149994 /* 280 */ "database_kw_opt",
149995 /* 281 */ "key_opt",
149996 /* 282 */ "add_column_fullname",
149997 /* 283 */ "kwcolumn_opt",
149998 /* 284 */ "create_vtab",
149999 /* 285 */ "vtabarglist",
150000 /* 286 */ "vtabarg",
150001 /* 287 */ "vtabargtoken",
150002 /* 288 */ "lp",
150003 /* 289 */ "anylist",
150004 /* 290 */ "windowdefn_list",
150005 /* 291 */ "windowdefn",
150006 /* 292 */ "window",
150007 /* 293 */ "frame_opt",
150008 /* 294 */ "part_opt",
150009 /* 295 */ "filter_opt",
150010 /* 296 */ "range_or_rows",
150011 /* 297 */ "frame_bound",
150012 /* 298 */ "frame_bound_s",
150013 /* 299 */ "frame_bound_e",
150014 /* 300 */ "frame_exclude_opt",
150015 /* 301 */ "frame_exclude",
150016 };
150017 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
150018
150019 #ifndef NDEBUG
150020 /* For tracing reduce actions, the names of all rules are required.
@@ -149899,356 +150047,357 @@
150047 /* 24 */ "typetoken ::=",
150048 /* 25 */ "typetoken ::= typename LP signed RP",
150049 /* 26 */ "typetoken ::= typename LP signed COMMA signed RP",
150050 /* 27 */ "typename ::= typename ID|STRING",
150051 /* 28 */ "scanpt ::=",
150052 /* 29 */ "scantok ::=",
150053 /* 30 */ "ccons ::= CONSTRAINT nm",
150054 /* 31 */ "ccons ::= DEFAULT scantok term",
150055 /* 32 */ "ccons ::= DEFAULT LP expr RP",
150056 /* 33 */ "ccons ::= DEFAULT PLUS scantok term",
150057 /* 34 */ "ccons ::= DEFAULT MINUS scantok term",
150058 /* 35 */ "ccons ::= DEFAULT scantok ID|INDEXED",
150059 /* 36 */ "ccons ::= NOT NULL onconf",
150060 /* 37 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
150061 /* 38 */ "ccons ::= UNIQUE onconf",
150062 /* 39 */ "ccons ::= CHECK LP expr RP",
150063 /* 40 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
150064 /* 41 */ "ccons ::= defer_subclause",
150065 /* 42 */ "ccons ::= COLLATE ID|STRING",
150066 /* 43 */ "autoinc ::=",
150067 /* 44 */ "autoinc ::= AUTOINCR",
150068 /* 45 */ "refargs ::=",
150069 /* 46 */ "refargs ::= refargs refarg",
150070 /* 47 */ "refarg ::= MATCH nm",
150071 /* 48 */ "refarg ::= ON INSERT refact",
150072 /* 49 */ "refarg ::= ON DELETE refact",
150073 /* 50 */ "refarg ::= ON UPDATE refact",
150074 /* 51 */ "refact ::= SET NULL",
150075 /* 52 */ "refact ::= SET DEFAULT",
150076 /* 53 */ "refact ::= CASCADE",
150077 /* 54 */ "refact ::= RESTRICT",
150078 /* 55 */ "refact ::= NO ACTION",
150079 /* 56 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
150080 /* 57 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
150081 /* 58 */ "init_deferred_pred_opt ::=",
150082 /* 59 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
150083 /* 60 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
150084 /* 61 */ "conslist_opt ::=",
150085 /* 62 */ "tconscomma ::= COMMA",
150086 /* 63 */ "tcons ::= CONSTRAINT nm",
150087 /* 64 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
150088 /* 65 */ "tcons ::= UNIQUE LP sortlist RP onconf",
150089 /* 66 */ "tcons ::= CHECK LP expr RP onconf",
150090 /* 67 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
150091 /* 68 */ "defer_subclause_opt ::=",
150092 /* 69 */ "onconf ::=",
150093 /* 70 */ "onconf ::= ON CONFLICT resolvetype",
150094 /* 71 */ "orconf ::=",
150095 /* 72 */ "orconf ::= OR resolvetype",
150096 /* 73 */ "resolvetype ::= IGNORE",
150097 /* 74 */ "resolvetype ::= REPLACE",
150098 /* 75 */ "cmd ::= DROP TABLE ifexists fullname",
150099 /* 76 */ "ifexists ::= IF EXISTS",
150100 /* 77 */ "ifexists ::=",
150101 /* 78 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
150102 /* 79 */ "cmd ::= DROP VIEW ifexists fullname",
150103 /* 80 */ "cmd ::= select",
150104 /* 81 */ "select ::= WITH wqlist selectnowith",
150105 /* 82 */ "select ::= WITH RECURSIVE wqlist selectnowith",
150106 /* 83 */ "select ::= selectnowith",
150107 /* 84 */ "selectnowith ::= selectnowith multiselect_op oneselect",
150108 /* 85 */ "multiselect_op ::= UNION",
150109 /* 86 */ "multiselect_op ::= UNION ALL",
150110 /* 87 */ "multiselect_op ::= EXCEPT|INTERSECT",
150111 /* 88 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
150112 /* 89 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
150113 /* 90 */ "values ::= VALUES LP nexprlist RP",
150114 /* 91 */ "values ::= values COMMA LP nexprlist RP",
150115 /* 92 */ "distinct ::= DISTINCT",
150116 /* 93 */ "distinct ::= ALL",
150117 /* 94 */ "distinct ::=",
150118 /* 95 */ "sclp ::=",
150119 /* 96 */ "selcollist ::= sclp scanpt expr scanpt as",
150120 /* 97 */ "selcollist ::= sclp scanpt STAR",
150121 /* 98 */ "selcollist ::= sclp scanpt nm DOT STAR",
150122 /* 99 */ "as ::= AS nm",
150123 /* 100 */ "as ::=",
150124 /* 101 */ "from ::=",
150125 /* 102 */ "from ::= FROM seltablist",
150126 /* 103 */ "stl_prefix ::= seltablist joinop",
150127 /* 104 */ "stl_prefix ::=",
150128 /* 105 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
150129 /* 106 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
150130 /* 107 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
150131 /* 108 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
150132 /* 109 */ "dbnm ::=",
150133 /* 110 */ "dbnm ::= DOT nm",
150134 /* 111 */ "fullname ::= nm",
150135 /* 112 */ "fullname ::= nm DOT nm",
150136 /* 113 */ "xfullname ::= nm",
150137 /* 114 */ "xfullname ::= nm DOT nm",
150138 /* 115 */ "xfullname ::= nm DOT nm AS nm",
150139 /* 116 */ "xfullname ::= nm AS nm",
150140 /* 117 */ "joinop ::= COMMA|JOIN",
150141 /* 118 */ "joinop ::= JOIN_KW JOIN",
150142 /* 119 */ "joinop ::= JOIN_KW nm JOIN",
150143 /* 120 */ "joinop ::= JOIN_KW nm nm JOIN",
150144 /* 121 */ "on_opt ::= ON expr",
150145 /* 122 */ "on_opt ::=",
150146 /* 123 */ "indexed_opt ::=",
150147 /* 124 */ "indexed_opt ::= INDEXED BY nm",
150148 /* 125 */ "indexed_opt ::= NOT INDEXED",
150149 /* 126 */ "using_opt ::= USING LP idlist RP",
150150 /* 127 */ "using_opt ::=",
150151 /* 128 */ "orderby_opt ::=",
150152 /* 129 */ "orderby_opt ::= ORDER BY sortlist",
150153 /* 130 */ "sortlist ::= sortlist COMMA expr sortorder",
150154 /* 131 */ "sortlist ::= expr sortorder",
150155 /* 132 */ "sortorder ::= ASC",
150156 /* 133 */ "sortorder ::= DESC",
150157 /* 134 */ "sortorder ::=",
150158 /* 135 */ "groupby_opt ::=",
150159 /* 136 */ "groupby_opt ::= GROUP BY nexprlist",
150160 /* 137 */ "having_opt ::=",
150161 /* 138 */ "having_opt ::= HAVING expr",
150162 /* 139 */ "limit_opt ::=",
150163 /* 140 */ "limit_opt ::= LIMIT expr",
150164 /* 141 */ "limit_opt ::= LIMIT expr OFFSET expr",
150165 /* 142 */ "limit_opt ::= LIMIT expr COMMA expr",
150166 /* 143 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt",
150167 /* 144 */ "where_opt ::=",
150168 /* 145 */ "where_opt ::= WHERE expr",
150169 /* 146 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt",
150170 /* 147 */ "setlist ::= setlist COMMA nm EQ expr",
150171 /* 148 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
150172 /* 149 */ "setlist ::= nm EQ expr",
150173 /* 150 */ "setlist ::= LP idlist RP EQ expr",
150174 /* 151 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
150175 /* 152 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES",
150176 /* 153 */ "upsert ::=",
150177 /* 154 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt",
150178 /* 155 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING",
150179 /* 156 */ "upsert ::= ON CONFLICT DO NOTHING",
150180 /* 157 */ "insert_cmd ::= INSERT orconf",
150181 /* 158 */ "insert_cmd ::= REPLACE",
150182 /* 159 */ "idlist_opt ::=",
150183 /* 160 */ "idlist_opt ::= LP idlist RP",
150184 /* 161 */ "idlist ::= idlist COMMA nm",
150185 /* 162 */ "idlist ::= nm",
150186 /* 163 */ "expr ::= LP expr RP",
150187 /* 164 */ "expr ::= ID|INDEXED",
150188 /* 165 */ "expr ::= JOIN_KW",
150189 /* 166 */ "expr ::= nm DOT nm",
150190 /* 167 */ "expr ::= nm DOT nm DOT nm",
150191 /* 168 */ "term ::= NULL|FLOAT|BLOB",
150192 /* 169 */ "term ::= STRING",
150193 /* 170 */ "term ::= INTEGER",
150194 /* 171 */ "expr ::= VARIABLE",
150195 /* 172 */ "expr ::= expr COLLATE ID|STRING",
150196 /* 173 */ "expr ::= CAST LP expr AS typetoken RP",
150197 /* 174 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
150198 /* 175 */ "expr ::= ID|INDEXED LP STAR RP",
150199 /* 176 */ "expr ::= ID|INDEXED LP distinct exprlist RP over_clause",
150200 /* 177 */ "expr ::= ID|INDEXED LP STAR RP over_clause",
150201 /* 178 */ "term ::= CTIME_KW",
150202 /* 179 */ "expr ::= LP nexprlist COMMA expr RP",
150203 /* 180 */ "expr ::= expr AND expr",
150204 /* 181 */ "expr ::= expr OR expr",
150205 /* 182 */ "expr ::= expr LT|GT|GE|LE expr",
150206 /* 183 */ "expr ::= expr EQ|NE expr",
150207 /* 184 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
150208 /* 185 */ "expr ::= expr PLUS|MINUS expr",
150209 /* 186 */ "expr ::= expr STAR|SLASH|REM expr",
150210 /* 187 */ "expr ::= expr CONCAT expr",
150211 /* 188 */ "likeop ::= NOT LIKE_KW|MATCH",
150212 /* 189 */ "expr ::= expr likeop expr",
150213 /* 190 */ "expr ::= expr likeop expr ESCAPE expr",
150214 /* 191 */ "expr ::= expr ISNULL|NOTNULL",
150215 /* 192 */ "expr ::= expr NOT NULL",
150216 /* 193 */ "expr ::= expr IS expr",
150217 /* 194 */ "expr ::= expr IS NOT expr",
150218 /* 195 */ "expr ::= NOT expr",
150219 /* 196 */ "expr ::= BITNOT expr",
150220 /* 197 */ "expr ::= PLUS|MINUS expr",
150221 /* 198 */ "between_op ::= BETWEEN",
150222 /* 199 */ "between_op ::= NOT BETWEEN",
150223 /* 200 */ "expr ::= expr between_op expr AND expr",
150224 /* 201 */ "in_op ::= IN",
150225 /* 202 */ "in_op ::= NOT IN",
150226 /* 203 */ "expr ::= expr in_op LP exprlist RP",
150227 /* 204 */ "expr ::= LP select RP",
150228 /* 205 */ "expr ::= expr in_op LP select RP",
150229 /* 206 */ "expr ::= expr in_op nm dbnm paren_exprlist",
150230 /* 207 */ "expr ::= EXISTS LP select RP",
150231 /* 208 */ "expr ::= CASE case_operand case_exprlist case_else END",
150232 /* 209 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
150233 /* 210 */ "case_exprlist ::= WHEN expr THEN expr",
150234 /* 211 */ "case_else ::= ELSE expr",
150235 /* 212 */ "case_else ::=",
150236 /* 213 */ "case_operand ::= expr",
150237 /* 214 */ "case_operand ::=",
150238 /* 215 */ "exprlist ::=",
150239 /* 216 */ "nexprlist ::= nexprlist COMMA expr",
150240 /* 217 */ "nexprlist ::= expr",
150241 /* 218 */ "paren_exprlist ::=",
150242 /* 219 */ "paren_exprlist ::= LP exprlist RP",
150243 /* 220 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
150244 /* 221 */ "uniqueflag ::= UNIQUE",
150245 /* 222 */ "uniqueflag ::=",
150246 /* 223 */ "eidlist_opt ::=",
150247 /* 224 */ "eidlist_opt ::= LP eidlist RP",
150248 /* 225 */ "eidlist ::= eidlist COMMA nm collate sortorder",
150249 /* 226 */ "eidlist ::= nm collate sortorder",
150250 /* 227 */ "collate ::=",
150251 /* 228 */ "collate ::= COLLATE ID|STRING",
150252 /* 229 */ "cmd ::= DROP INDEX ifexists fullname",
150253 /* 230 */ "cmd ::= VACUUM vinto",
150254 /* 231 */ "cmd ::= VACUUM nm vinto",
150255 /* 232 */ "vinto ::= INTO expr",
150256 /* 233 */ "vinto ::=",
150257 /* 234 */ "cmd ::= PRAGMA nm dbnm",
150258 /* 235 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
150259 /* 236 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
150260 /* 237 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
150261 /* 238 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
150262 /* 239 */ "plus_num ::= PLUS INTEGER|FLOAT",
150263 /* 240 */ "minus_num ::= MINUS INTEGER|FLOAT",
150264 /* 241 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
150265 /* 242 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
150266 /* 243 */ "trigger_time ::= BEFORE|AFTER",
150267 /* 244 */ "trigger_time ::= INSTEAD OF",
150268 /* 245 */ "trigger_time ::=",
150269 /* 246 */ "trigger_event ::= DELETE|INSERT",
150270 /* 247 */ "trigger_event ::= UPDATE",
150271 /* 248 */ "trigger_event ::= UPDATE OF idlist",
150272 /* 249 */ "when_clause ::=",
150273 /* 250 */ "when_clause ::= WHEN expr",
150274 /* 251 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
150275 /* 252 */ "trigger_cmd_list ::= trigger_cmd SEMI",
150276 /* 253 */ "trnm ::= nm DOT nm",
150277 /* 254 */ "tridxby ::= INDEXED BY nm",
150278 /* 255 */ "tridxby ::= NOT INDEXED",
150279 /* 256 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt",
150280 /* 257 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
150281 /* 258 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
150282 /* 259 */ "trigger_cmd ::= scanpt select scanpt",
150283 /* 260 */ "expr ::= RAISE LP IGNORE RP",
150284 /* 261 */ "expr ::= RAISE LP raisetype COMMA nm RP",
150285 /* 262 */ "raisetype ::= ROLLBACK",
150286 /* 263 */ "raisetype ::= ABORT",
150287 /* 264 */ "raisetype ::= FAIL",
150288 /* 265 */ "cmd ::= DROP TRIGGER ifexists fullname",
150289 /* 266 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
150290 /* 267 */ "cmd ::= DETACH database_kw_opt expr",
150291 /* 268 */ "key_opt ::=",
150292 /* 269 */ "key_opt ::= KEY expr",
150293 /* 270 */ "cmd ::= REINDEX",
150294 /* 271 */ "cmd ::= REINDEX nm dbnm",
150295 /* 272 */ "cmd ::= ANALYZE",
150296 /* 273 */ "cmd ::= ANALYZE nm dbnm",
150297 /* 274 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
150298 /* 275 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
150299 /* 276 */ "add_column_fullname ::= fullname",
150300 /* 277 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
150301 /* 278 */ "cmd ::= create_vtab",
150302 /* 279 */ "cmd ::= create_vtab LP vtabarglist RP",
150303 /* 280 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
150304 /* 281 */ "vtabarg ::=",
150305 /* 282 */ "vtabargtoken ::= ANY",
150306 /* 283 */ "vtabargtoken ::= lp anylist RP",
150307 /* 284 */ "lp ::= LP",
150308 /* 285 */ "with ::= WITH wqlist",
150309 /* 286 */ "with ::= WITH RECURSIVE wqlist",
150310 /* 287 */ "wqlist ::= nm eidlist_opt AS LP select RP",
150311 /* 288 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
150312 /* 289 */ "windowdefn_list ::= windowdefn",
150313 /* 290 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
150314 /* 291 */ "windowdefn ::= nm AS LP window RP",
150315 /* 292 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
150316 /* 293 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
150317 /* 294 */ "window ::= ORDER BY sortlist frame_opt",
150318 /* 295 */ "window ::= nm ORDER BY sortlist frame_opt",
150319 /* 296 */ "window ::= frame_opt",
150320 /* 297 */ "window ::= nm frame_opt",
150321 /* 298 */ "frame_opt ::=",
150322 /* 299 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
150323 /* 300 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
150324 /* 301 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
150325 /* 302 */ "frame_bound_s ::= frame_bound",
150326 /* 303 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
150327 /* 304 */ "frame_bound_e ::= frame_bound",
150328 /* 305 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
150329 /* 306 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
150330 /* 307 */ "frame_bound ::= CURRENT ROW",
150331 /* 308 */ "frame_exclude_opt ::=",
150332 /* 309 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
150333 /* 310 */ "frame_exclude ::= NO OTHERS",
150334 /* 311 */ "frame_exclude ::= CURRENT ROW",
150335 /* 312 */ "frame_exclude ::= GROUP|TIES",
150336 /* 313 */ "window_clause ::= WINDOW windowdefn_list",
150337 /* 314 */ "over_clause ::= filter_opt OVER LP window RP",
150338 /* 315 */ "over_clause ::= filter_opt OVER nm",
150339 /* 316 */ "filter_opt ::=",
150340 /* 317 */ "filter_opt ::= FILTER LP WHERE expr RP",
150341 /* 318 */ "input ::= cmdlist",
150342 /* 319 */ "cmdlist ::= cmdlist ecmd",
150343 /* 320 */ "cmdlist ::= ecmd",
150344 /* 321 */ "ecmd ::= SEMI",
150345 /* 322 */ "ecmd ::= cmdx SEMI",
150346 /* 323 */ "ecmd ::= explain cmdx",
150347 /* 324 */ "trans_opt ::=",
150348 /* 325 */ "trans_opt ::= TRANSACTION",
150349 /* 326 */ "trans_opt ::= TRANSACTION nm",
150350 /* 327 */ "savepoint_opt ::= SAVEPOINT",
150351 /* 328 */ "savepoint_opt ::=",
150352 /* 329 */ "cmd ::= create_table create_table_args",
150353 /* 330 */ "columnlist ::= columnlist COMMA columnname carglist",
150354 /* 331 */ "columnlist ::= columnname carglist",
150355 /* 332 */ "nm ::= ID|INDEXED",
150356 /* 333 */ "nm ::= STRING",
150357 /* 334 */ "nm ::= JOIN_KW",
150358 /* 335 */ "typetoken ::= typename",
150359 /* 336 */ "typename ::= ID|STRING",
150360 /* 337 */ "signed ::= plus_num",
150361 /* 338 */ "signed ::= minus_num",
150362 /* 339 */ "carglist ::= carglist ccons",
150363 /* 340 */ "carglist ::=",
150364 /* 341 */ "ccons ::= NULL onconf",
150365 /* 342 */ "conslist_opt ::= COMMA conslist",
150366 /* 343 */ "conslist ::= conslist tconscomma tcons",
150367 /* 344 */ "conslist ::= tcons",
150368 /* 345 */ "tconscomma ::=",
150369 /* 346 */ "defer_subclause_opt ::= defer_subclause",
150370 /* 347 */ "resolvetype ::= raisetype",
150371 /* 348 */ "selectnowith ::= oneselect",
150372 /* 349 */ "oneselect ::= values",
150373 /* 350 */ "sclp ::= selcollist COMMA",
150374 /* 351 */ "as ::= ID|STRING",
150375 /* 352 */ "expr ::= term",
150376 /* 353 */ "likeop ::= LIKE_KW|MATCH",
150377 /* 354 */ "exprlist ::= nexprlist",
150378 /* 355 */ "nmnum ::= plus_num",
150379 /* 356 */ "nmnum ::= nm",
150380 /* 357 */ "nmnum ::= ON",
150381 /* 358 */ "nmnum ::= DELETE",
150382 /* 359 */ "nmnum ::= DEFAULT",
150383 /* 360 */ "plus_num ::= INTEGER|FLOAT",
150384 /* 361 */ "foreach_clause ::=",
150385 /* 362 */ "foreach_clause ::= FOR EACH ROW",
150386 /* 363 */ "trnm ::= nm",
150387 /* 364 */ "tridxby ::=",
150388 /* 365 */ "database_kw_opt ::= DATABASE",
150389 /* 366 */ "database_kw_opt ::=",
150390 /* 367 */ "kwcolumn_opt ::=",
150391 /* 368 */ "kwcolumn_opt ::= COLUMNKW",
150392 /* 369 */ "vtabarglist ::= vtabarg",
150393 /* 370 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
150394 /* 371 */ "vtabarg ::= vtabarg vtabargtoken",
150395 /* 372 */ "anylist ::=",
150396 /* 373 */ "anylist ::= anylist LP anylist RP",
150397 /* 374 */ "anylist ::= anylist ANY",
150398 /* 375 */ "with ::=",
150399 };
150400 #endif /* NDEBUG */
150401
150402
150403 #if YYSTACKDEPTH<=0
@@ -150371,100 +150520,100 @@
150520 ** which appear on the RHS of the rule, but which are *not* used
150521 ** inside the C code.
150522 */
150523 /********* Begin destructor definitions ***************************************/
150524 case 195: /* select */
150525 case 228: /* selectnowith */
150526 case 229: /* oneselect */
150527 case 241: /* values */
150528 {
150529 sqlite3SelectDelete(pParse->db, (yypminor->yy391));
150530 }
150531 break;
150532 case 206: /* term */
150533 case 207: /* expr */
150534 case 235: /* where_opt */
150535 case 237: /* having_opt */
150536 case 249: /* on_opt */
150537 case 264: /* case_operand */
150538 case 266: /* case_else */
150539 case 269: /* vinto */
150540 case 276: /* when_clause */
150541 case 281: /* key_opt */
150542 case 295: /* filter_opt */
150543 {
150544 sqlite3ExprDelete(pParse->db, (yypminor->yy102));
150545 }
150546 break;
150547 case 211: /* eidlist_opt */
150548 case 220: /* sortlist */
150549 case 221: /* eidlist */
150550 case 233: /* selcollist */
150551 case 236: /* groupby_opt */
150552 case 238: /* orderby_opt */
150553 case 242: /* nexprlist */
150554 case 243: /* sclp */
150555 case 251: /* exprlist */
150556 case 255: /* setlist */
150557 case 263: /* paren_exprlist */
150558 case 265: /* case_exprlist */
150559 case 294: /* part_opt */
150560 {
150561 sqlite3ExprListDelete(pParse->db, (yypminor->yy94));
150562 }
150563 break;
150564 case 227: /* fullname */
150565 case 234: /* from */
150566 case 245: /* seltablist */
150567 case 246: /* stl_prefix */
150568 case 252: /* xfullname */
150569 {
150570 sqlite3SrcListDelete(pParse->db, (yypminor->yy407));
150571 }
150572 break;
150573 case 230: /* wqlist */
150574 {
150575 sqlite3WithDelete(pParse->db, (yypminor->yy243));
150576 }
150577 break;
150578 case 240: /* window_clause */
150579 case 290: /* windowdefn_list */
150580 {
150581 sqlite3WindowListDelete(pParse->db, (yypminor->yy379));
150582 }
150583 break;
150584 case 250: /* using_opt */
150585 case 253: /* idlist */
150586 case 257: /* idlist_opt */
150587 {
150588 sqlite3IdListDelete(pParse->db, (yypminor->yy76));
150589 }
150590 break;
150591 case 259: /* over_clause */
150592 case 291: /* windowdefn */
150593 case 292: /* window */
150594 case 293: /* frame_opt */
150595 {
150596 sqlite3WindowDelete(pParse->db, (yypminor->yy379));
150597 }
150598 break;
150599 case 272: /* trigger_cmd_list */
150600 case 277: /* trigger_cmd */
150601 {
150602 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy11));
150603 }
150604 break;
150605 case 274: /* trigger_event */
150606 {
150607 sqlite3IdListDelete(pParse->db, (yypminor->yy298).b);
150608 }
150609 break;
150610 case 297: /* frame_bound */
150611 case 298: /* frame_bound_s */
150612 case 299: /* frame_bound_e */
150613 {
150614 sqlite3ExprDelete(pParse->db, (yypminor->yy389).pExpr);
150615 }
150616 break;
150617 /********* End destructor definitions *****************************************/
150618 default: break; /* If no destructor action specified: do nothing */
150619 }
@@ -150784,356 +150933,357 @@
150933 198, /* (24) typetoken ::= */
150934 198, /* (25) typetoken ::= typename LP signed RP */
150935 198, /* (26) typetoken ::= typename LP signed COMMA signed RP */
150936 199, /* (27) typename ::= typename ID|STRING */
150937 203, /* (28) scanpt ::= */
150938 204, /* (29) scantok ::= */
150939 205, /* (30) ccons ::= CONSTRAINT nm */
150940 205, /* (31) ccons ::= DEFAULT scantok term */
150941 205, /* (32) ccons ::= DEFAULT LP expr RP */
150942 205, /* (33) ccons ::= DEFAULT PLUS scantok term */
150943 205, /* (34) ccons ::= DEFAULT MINUS scantok term */
150944 205, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
150945 205, /* (36) ccons ::= NOT NULL onconf */
150946 205, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
150947 205, /* (38) ccons ::= UNIQUE onconf */
150948 205, /* (39) ccons ::= CHECK LP expr RP */
150949 205, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
150950 205, /* (41) ccons ::= defer_subclause */
150951 205, /* (42) ccons ::= COLLATE ID|STRING */
150952 210, /* (43) autoinc ::= */
150953 210, /* (44) autoinc ::= AUTOINCR */
150954 212, /* (45) refargs ::= */
150955 212, /* (46) refargs ::= refargs refarg */
150956 214, /* (47) refarg ::= MATCH nm */
150957 214, /* (48) refarg ::= ON INSERT refact */
150958 214, /* (49) refarg ::= ON DELETE refact */
150959 214, /* (50) refarg ::= ON UPDATE refact */
150960 215, /* (51) refact ::= SET NULL */
150961 215, /* (52) refact ::= SET DEFAULT */
150962 215, /* (53) refact ::= CASCADE */
150963 215, /* (54) refact ::= RESTRICT */
150964 215, /* (55) refact ::= NO ACTION */
150965 213, /* (56) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
150966 213, /* (57) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
150967 216, /* (58) init_deferred_pred_opt ::= */
150968 216, /* (59) init_deferred_pred_opt ::= INITIALLY DEFERRED */
150969 216, /* (60) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
150970 193, /* (61) conslist_opt ::= */
150971 218, /* (62) tconscomma ::= COMMA */
150972 219, /* (63) tcons ::= CONSTRAINT nm */
150973 219, /* (64) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
150974 219, /* (65) tcons ::= UNIQUE LP sortlist RP onconf */
150975 219, /* (66) tcons ::= CHECK LP expr RP onconf */
150976 219, /* (67) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
150977 222, /* (68) defer_subclause_opt ::= */
150978 208, /* (69) onconf ::= */
150979 208, /* (70) onconf ::= ON CONFLICT resolvetype */
150980 223, /* (71) orconf ::= */
150981 223, /* (72) orconf ::= OR resolvetype */
150982 224, /* (73) resolvetype ::= IGNORE */
150983 224, /* (74) resolvetype ::= REPLACE */
150984 181, /* (75) cmd ::= DROP TABLE ifexists fullname */
150985 226, /* (76) ifexists ::= IF EXISTS */
150986 226, /* (77) ifexists ::= */
150987 181, /* (78) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
150988 181, /* (79) cmd ::= DROP VIEW ifexists fullname */
150989 181, /* (80) cmd ::= select */
150990 195, /* (81) select ::= WITH wqlist selectnowith */
150991 195, /* (82) select ::= WITH RECURSIVE wqlist selectnowith */
150992 195, /* (83) select ::= selectnowith */
150993 228, /* (84) selectnowith ::= selectnowith multiselect_op oneselect */
150994 231, /* (85) multiselect_op ::= UNION */
150995 231, /* (86) multiselect_op ::= UNION ALL */
150996 231, /* (87) multiselect_op ::= EXCEPT|INTERSECT */
150997 229, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
150998 229, /* (89) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
150999 241, /* (90) values ::= VALUES LP nexprlist RP */
151000 241, /* (91) values ::= values COMMA LP nexprlist RP */
151001 232, /* (92) distinct ::= DISTINCT */
151002 232, /* (93) distinct ::= ALL */
151003 232, /* (94) distinct ::= */
151004 243, /* (95) sclp ::= */
151005 233, /* (96) selcollist ::= sclp scanpt expr scanpt as */
151006 233, /* (97) selcollist ::= sclp scanpt STAR */
151007 233, /* (98) selcollist ::= sclp scanpt nm DOT STAR */
151008 244, /* (99) as ::= AS nm */
151009 244, /* (100) as ::= */
151010 234, /* (101) from ::= */
151011 234, /* (102) from ::= FROM seltablist */
151012 246, /* (103) stl_prefix ::= seltablist joinop */
151013 246, /* (104) stl_prefix ::= */
151014 245, /* (105) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
151015 245, /* (106) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
151016 245, /* (107) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
151017 245, /* (108) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
151018 191, /* (109) dbnm ::= */
151019 191, /* (110) dbnm ::= DOT nm */
151020 227, /* (111) fullname ::= nm */
151021 227, /* (112) fullname ::= nm DOT nm */
151022 252, /* (113) xfullname ::= nm */
151023 252, /* (114) xfullname ::= nm DOT nm */
151024 252, /* (115) xfullname ::= nm DOT nm AS nm */
151025 252, /* (116) xfullname ::= nm AS nm */
151026 247, /* (117) joinop ::= COMMA|JOIN */
151027 247, /* (118) joinop ::= JOIN_KW JOIN */
151028 247, /* (119) joinop ::= JOIN_KW nm JOIN */
151029 247, /* (120) joinop ::= JOIN_KW nm nm JOIN */
151030 249, /* (121) on_opt ::= ON expr */
151031 249, /* (122) on_opt ::= */
151032 248, /* (123) indexed_opt ::= */
151033 248, /* (124) indexed_opt ::= INDEXED BY nm */
151034 248, /* (125) indexed_opt ::= NOT INDEXED */
151035 250, /* (126) using_opt ::= USING LP idlist RP */
151036 250, /* (127) using_opt ::= */
151037 238, /* (128) orderby_opt ::= */
151038 238, /* (129) orderby_opt ::= ORDER BY sortlist */
151039 220, /* (130) sortlist ::= sortlist COMMA expr sortorder */
151040 220, /* (131) sortlist ::= expr sortorder */
151041 209, /* (132) sortorder ::= ASC */
151042 209, /* (133) sortorder ::= DESC */
151043 209, /* (134) sortorder ::= */
151044 236, /* (135) groupby_opt ::= */
151045 236, /* (136) groupby_opt ::= GROUP BY nexprlist */
151046 237, /* (137) having_opt ::= */
151047 237, /* (138) having_opt ::= HAVING expr */
151048 239, /* (139) limit_opt ::= */
151049 239, /* (140) limit_opt ::= LIMIT expr */
151050 239, /* (141) limit_opt ::= LIMIT expr OFFSET expr */
151051 239, /* (142) limit_opt ::= LIMIT expr COMMA expr */
151052 181, /* (143) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
151053 235, /* (144) where_opt ::= */
151054 235, /* (145) where_opt ::= WHERE expr */
151055 181, /* (146) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
151056 255, /* (147) setlist ::= setlist COMMA nm EQ expr */
151057 255, /* (148) setlist ::= setlist COMMA LP idlist RP EQ expr */
151058 255, /* (149) setlist ::= nm EQ expr */
151059 255, /* (150) setlist ::= LP idlist RP EQ expr */
151060 181, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
151061 181, /* (152) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
151062 258, /* (153) upsert ::= */
151063 258, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
151064 258, /* (155) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
151065 258, /* (156) upsert ::= ON CONFLICT DO NOTHING */
151066 256, /* (157) insert_cmd ::= INSERT orconf */
151067 256, /* (158) insert_cmd ::= REPLACE */
151068 257, /* (159) idlist_opt ::= */
151069 257, /* (160) idlist_opt ::= LP idlist RP */
151070 253, /* (161) idlist ::= idlist COMMA nm */
151071 253, /* (162) idlist ::= nm */
151072 207, /* (163) expr ::= LP expr RP */
151073 207, /* (164) expr ::= ID|INDEXED */
151074 207, /* (165) expr ::= JOIN_KW */
151075 207, /* (166) expr ::= nm DOT nm */
151076 207, /* (167) expr ::= nm DOT nm DOT nm */
151077 206, /* (168) term ::= NULL|FLOAT|BLOB */
151078 206, /* (169) term ::= STRING */
151079 206, /* (170) term ::= INTEGER */
151080 207, /* (171) expr ::= VARIABLE */
151081 207, /* (172) expr ::= expr COLLATE ID|STRING */
151082 207, /* (173) expr ::= CAST LP expr AS typetoken RP */
151083 207, /* (174) expr ::= ID|INDEXED LP distinct exprlist RP */
151084 207, /* (175) expr ::= ID|INDEXED LP STAR RP */
151085 207, /* (176) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
151086 207, /* (177) expr ::= ID|INDEXED LP STAR RP over_clause */
151087 206, /* (178) term ::= CTIME_KW */
151088 207, /* (179) expr ::= LP nexprlist COMMA expr RP */
151089 207, /* (180) expr ::= expr AND expr */
151090 207, /* (181) expr ::= expr OR expr */
151091 207, /* (182) expr ::= expr LT|GT|GE|LE expr */
151092 207, /* (183) expr ::= expr EQ|NE expr */
151093 207, /* (184) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
151094 207, /* (185) expr ::= expr PLUS|MINUS expr */
151095 207, /* (186) expr ::= expr STAR|SLASH|REM expr */
151096 207, /* (187) expr ::= expr CONCAT expr */
151097 260, /* (188) likeop ::= NOT LIKE_KW|MATCH */
151098 207, /* (189) expr ::= expr likeop expr */
151099 207, /* (190) expr ::= expr likeop expr ESCAPE expr */
151100 207, /* (191) expr ::= expr ISNULL|NOTNULL */
151101 207, /* (192) expr ::= expr NOT NULL */
151102 207, /* (193) expr ::= expr IS expr */
151103 207, /* (194) expr ::= expr IS NOT expr */
151104 207, /* (195) expr ::= NOT expr */
151105 207, /* (196) expr ::= BITNOT expr */
151106 207, /* (197) expr ::= PLUS|MINUS expr */
151107 261, /* (198) between_op ::= BETWEEN */
151108 261, /* (199) between_op ::= NOT BETWEEN */
151109 207, /* (200) expr ::= expr between_op expr AND expr */
151110 262, /* (201) in_op ::= IN */
151111 262, /* (202) in_op ::= NOT IN */
151112 207, /* (203) expr ::= expr in_op LP exprlist RP */
151113 207, /* (204) expr ::= LP select RP */
151114 207, /* (205) expr ::= expr in_op LP select RP */
151115 207, /* (206) expr ::= expr in_op nm dbnm paren_exprlist */
151116 207, /* (207) expr ::= EXISTS LP select RP */
151117 207, /* (208) expr ::= CASE case_operand case_exprlist case_else END */
151118 265, /* (209) case_exprlist ::= case_exprlist WHEN expr THEN expr */
151119 265, /* (210) case_exprlist ::= WHEN expr THEN expr */
151120 266, /* (211) case_else ::= ELSE expr */
151121 266, /* (212) case_else ::= */
151122 264, /* (213) case_operand ::= expr */
151123 264, /* (214) case_operand ::= */
151124 251, /* (215) exprlist ::= */
151125 242, /* (216) nexprlist ::= nexprlist COMMA expr */
151126 242, /* (217) nexprlist ::= expr */
151127 263, /* (218) paren_exprlist ::= */
151128 263, /* (219) paren_exprlist ::= LP exprlist RP */
151129 181, /* (220) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
151130 267, /* (221) uniqueflag ::= UNIQUE */
151131 267, /* (222) uniqueflag ::= */
151132 211, /* (223) eidlist_opt ::= */
151133 211, /* (224) eidlist_opt ::= LP eidlist RP */
151134 221, /* (225) eidlist ::= eidlist COMMA nm collate sortorder */
151135 221, /* (226) eidlist ::= nm collate sortorder */
151136 268, /* (227) collate ::= */
151137 268, /* (228) collate ::= COLLATE ID|STRING */
151138 181, /* (229) cmd ::= DROP INDEX ifexists fullname */
151139 181, /* (230) cmd ::= VACUUM vinto */
151140 181, /* (231) cmd ::= VACUUM nm vinto */
151141 269, /* (232) vinto ::= INTO expr */
151142 269, /* (233) vinto ::= */
151143 181, /* (234) cmd ::= PRAGMA nm dbnm */
151144 181, /* (235) cmd ::= PRAGMA nm dbnm EQ nmnum */
151145 181, /* (236) cmd ::= PRAGMA nm dbnm LP nmnum RP */
151146 181, /* (237) cmd ::= PRAGMA nm dbnm EQ minus_num */
151147 181, /* (238) cmd ::= PRAGMA nm dbnm LP minus_num RP */
151148 201, /* (239) plus_num ::= PLUS INTEGER|FLOAT */
151149 202, /* (240) minus_num ::= MINUS INTEGER|FLOAT */
151150 181, /* (241) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
151151 271, /* (242) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
151152 273, /* (243) trigger_time ::= BEFORE|AFTER */
151153 273, /* (244) trigger_time ::= INSTEAD OF */
151154 273, /* (245) trigger_time ::= */
151155 274, /* (246) trigger_event ::= DELETE|INSERT */
151156 274, /* (247) trigger_event ::= UPDATE */
151157 274, /* (248) trigger_event ::= UPDATE OF idlist */
151158 276, /* (249) when_clause ::= */
151159 276, /* (250) when_clause ::= WHEN expr */
151160 272, /* (251) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
151161 272, /* (252) trigger_cmd_list ::= trigger_cmd SEMI */
151162 278, /* (253) trnm ::= nm DOT nm */
151163 279, /* (254) tridxby ::= INDEXED BY nm */
151164 279, /* (255) tridxby ::= NOT INDEXED */
151165 277, /* (256) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
151166 277, /* (257) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
151167 277, /* (258) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
151168 277, /* (259) trigger_cmd ::= scanpt select scanpt */
151169 207, /* (260) expr ::= RAISE LP IGNORE RP */
151170 207, /* (261) expr ::= RAISE LP raisetype COMMA nm RP */
151171 225, /* (262) raisetype ::= ROLLBACK */
151172 225, /* (263) raisetype ::= ABORT */
151173 225, /* (264) raisetype ::= FAIL */
151174 181, /* (265) cmd ::= DROP TRIGGER ifexists fullname */
151175 181, /* (266) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
151176 181, /* (267) cmd ::= DETACH database_kw_opt expr */
151177 281, /* (268) key_opt ::= */
151178 281, /* (269) key_opt ::= KEY expr */
151179 181, /* (270) cmd ::= REINDEX */
151180 181, /* (271) cmd ::= REINDEX nm dbnm */
151181 181, /* (272) cmd ::= ANALYZE */
151182 181, /* (273) cmd ::= ANALYZE nm dbnm */
151183 181, /* (274) cmd ::= ALTER TABLE fullname RENAME TO nm */
151184 181, /* (275) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
151185 282, /* (276) add_column_fullname ::= fullname */
151186 181, /* (277) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
151187 181, /* (278) cmd ::= create_vtab */
151188 181, /* (279) cmd ::= create_vtab LP vtabarglist RP */
151189 284, /* (280) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
151190 286, /* (281) vtabarg ::= */
151191 287, /* (282) vtabargtoken ::= ANY */
151192 287, /* (283) vtabargtoken ::= lp anylist RP */
151193 288, /* (284) lp ::= LP */
151194 254, /* (285) with ::= WITH wqlist */
151195 254, /* (286) with ::= WITH RECURSIVE wqlist */
151196 230, /* (287) wqlist ::= nm eidlist_opt AS LP select RP */
151197 230, /* (288) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
151198 290, /* (289) windowdefn_list ::= windowdefn */
151199 290, /* (290) windowdefn_list ::= windowdefn_list COMMA windowdefn */
151200 291, /* (291) windowdefn ::= nm AS LP window RP */
151201 292, /* (292) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
151202 292, /* (293) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
151203 292, /* (294) window ::= ORDER BY sortlist frame_opt */
151204 292, /* (295) window ::= nm ORDER BY sortlist frame_opt */
151205 292, /* (296) window ::= frame_opt */
151206 292, /* (297) window ::= nm frame_opt */
151207 293, /* (298) frame_opt ::= */
151208 293, /* (299) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
151209 293, /* (300) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
151210 296, /* (301) range_or_rows ::= RANGE|ROWS|GROUPS */
151211 298, /* (302) frame_bound_s ::= frame_bound */
151212 298, /* (303) frame_bound_s ::= UNBOUNDED PRECEDING */
151213 299, /* (304) frame_bound_e ::= frame_bound */
151214 299, /* (305) frame_bound_e ::= UNBOUNDED FOLLOWING */
151215 297, /* (306) frame_bound ::= expr PRECEDING|FOLLOWING */
151216 297, /* (307) frame_bound ::= CURRENT ROW */
151217 300, /* (308) frame_exclude_opt ::= */
151218 300, /* (309) frame_exclude_opt ::= EXCLUDE frame_exclude */
151219 301, /* (310) frame_exclude ::= NO OTHERS */
151220 301, /* (311) frame_exclude ::= CURRENT ROW */
151221 301, /* (312) frame_exclude ::= GROUP|TIES */
151222 240, /* (313) window_clause ::= WINDOW windowdefn_list */
151223 259, /* (314) over_clause ::= filter_opt OVER LP window RP */
151224 259, /* (315) over_clause ::= filter_opt OVER nm */
151225 295, /* (316) filter_opt ::= */
151226 295, /* (317) filter_opt ::= FILTER LP WHERE expr RP */
151227 176, /* (318) input ::= cmdlist */
151228 177, /* (319) cmdlist ::= cmdlist ecmd */
151229 177, /* (320) cmdlist ::= ecmd */
151230 178, /* (321) ecmd ::= SEMI */
151231 178, /* (322) ecmd ::= cmdx SEMI */
151232 178, /* (323) ecmd ::= explain cmdx */
151233 183, /* (324) trans_opt ::= */
151234 183, /* (325) trans_opt ::= TRANSACTION */
151235 183, /* (326) trans_opt ::= TRANSACTION nm */
151236 185, /* (327) savepoint_opt ::= SAVEPOINT */
151237 185, /* (328) savepoint_opt ::= */
151238 181, /* (329) cmd ::= create_table create_table_args */
151239 192, /* (330) columnlist ::= columnlist COMMA columnname carglist */
151240 192, /* (331) columnlist ::= columnname carglist */
151241 184, /* (332) nm ::= ID|INDEXED */
151242 184, /* (333) nm ::= STRING */
151243 184, /* (334) nm ::= JOIN_KW */
151244 198, /* (335) typetoken ::= typename */
151245 199, /* (336) typename ::= ID|STRING */
151246 200, /* (337) signed ::= plus_num */
151247 200, /* (338) signed ::= minus_num */
151248 197, /* (339) carglist ::= carglist ccons */
151249 197, /* (340) carglist ::= */
151250 205, /* (341) ccons ::= NULL onconf */
151251 193, /* (342) conslist_opt ::= COMMA conslist */
151252 217, /* (343) conslist ::= conslist tconscomma tcons */
151253 217, /* (344) conslist ::= tcons */
151254 218, /* (345) tconscomma ::= */
151255 222, /* (346) defer_subclause_opt ::= defer_subclause */
151256 224, /* (347) resolvetype ::= raisetype */
151257 228, /* (348) selectnowith ::= oneselect */
151258 229, /* (349) oneselect ::= values */
151259 243, /* (350) sclp ::= selcollist COMMA */
151260 244, /* (351) as ::= ID|STRING */
151261 207, /* (352) expr ::= term */
151262 260, /* (353) likeop ::= LIKE_KW|MATCH */
151263 251, /* (354) exprlist ::= nexprlist */
151264 270, /* (355) nmnum ::= plus_num */
151265 270, /* (356) nmnum ::= nm */
151266 270, /* (357) nmnum ::= ON */
151267 270, /* (358) nmnum ::= DELETE */
151268 270, /* (359) nmnum ::= DEFAULT */
151269 201, /* (360) plus_num ::= INTEGER|FLOAT */
151270 275, /* (361) foreach_clause ::= */
151271 275, /* (362) foreach_clause ::= FOR EACH ROW */
151272 278, /* (363) trnm ::= nm */
151273 279, /* (364) tridxby ::= */
151274 280, /* (365) database_kw_opt ::= DATABASE */
151275 280, /* (366) database_kw_opt ::= */
151276 283, /* (367) kwcolumn_opt ::= */
151277 283, /* (368) kwcolumn_opt ::= COLUMNKW */
151278 285, /* (369) vtabarglist ::= vtabarg */
151279 285, /* (370) vtabarglist ::= vtabarglist COMMA vtabarg */
151280 286, /* (371) vtabarg ::= vtabarg vtabargtoken */
151281 289, /* (372) anylist ::= */
151282 289, /* (373) anylist ::= anylist LP anylist RP */
151283 289, /* (374) anylist ::= anylist ANY */
151284 254, /* (375) with ::= */
151285 };
151286
151287 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
151288 ** of symbols on the right-hand side of that rule. */
151289 static const signed char yyRuleInfoNRhs[] = {
@@ -151164,356 +151314,357 @@
151314 0, /* (24) typetoken ::= */
151315 -4, /* (25) typetoken ::= typename LP signed RP */
151316 -6, /* (26) typetoken ::= typename LP signed COMMA signed RP */
151317 -2, /* (27) typename ::= typename ID|STRING */
151318 0, /* (28) scanpt ::= */
151319 0, /* (29) scantok ::= */
151320 -2, /* (30) ccons ::= CONSTRAINT nm */
151321 -3, /* (31) ccons ::= DEFAULT scantok term */
151322 -4, /* (32) ccons ::= DEFAULT LP expr RP */
151323 -4, /* (33) ccons ::= DEFAULT PLUS scantok term */
151324 -4, /* (34) ccons ::= DEFAULT MINUS scantok term */
151325 -3, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
151326 -3, /* (36) ccons ::= NOT NULL onconf */
151327 -5, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
151328 -2, /* (38) ccons ::= UNIQUE onconf */
151329 -4, /* (39) ccons ::= CHECK LP expr RP */
151330 -4, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
151331 -1, /* (41) ccons ::= defer_subclause */
151332 -2, /* (42) ccons ::= COLLATE ID|STRING */
151333 0, /* (43) autoinc ::= */
151334 -1, /* (44) autoinc ::= AUTOINCR */
151335 0, /* (45) refargs ::= */
151336 -2, /* (46) refargs ::= refargs refarg */
151337 -2, /* (47) refarg ::= MATCH nm */
151338 -3, /* (48) refarg ::= ON INSERT refact */
151339 -3, /* (49) refarg ::= ON DELETE refact */
151340 -3, /* (50) refarg ::= ON UPDATE refact */
151341 -2, /* (51) refact ::= SET NULL */
151342 -2, /* (52) refact ::= SET DEFAULT */
151343 -1, /* (53) refact ::= CASCADE */
151344 -1, /* (54) refact ::= RESTRICT */
151345 -2, /* (55) refact ::= NO ACTION */
151346 -3, /* (56) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
151347 -2, /* (57) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
151348 0, /* (58) init_deferred_pred_opt ::= */
151349 -2, /* (59) init_deferred_pred_opt ::= INITIALLY DEFERRED */
151350 -2, /* (60) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
151351 0, /* (61) conslist_opt ::= */
151352 -1, /* (62) tconscomma ::= COMMA */
151353 -2, /* (63) tcons ::= CONSTRAINT nm */
151354 -7, /* (64) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
151355 -5, /* (65) tcons ::= UNIQUE LP sortlist RP onconf */
151356 -5, /* (66) tcons ::= CHECK LP expr RP onconf */
151357 -10, /* (67) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
151358 0, /* (68) defer_subclause_opt ::= */
151359 0, /* (69) onconf ::= */
151360 -3, /* (70) onconf ::= ON CONFLICT resolvetype */
151361 0, /* (71) orconf ::= */
151362 -2, /* (72) orconf ::= OR resolvetype */
151363 -1, /* (73) resolvetype ::= IGNORE */
151364 -1, /* (74) resolvetype ::= REPLACE */
151365 -4, /* (75) cmd ::= DROP TABLE ifexists fullname */
151366 -2, /* (76) ifexists ::= IF EXISTS */
151367 0, /* (77) ifexists ::= */
151368 -9, /* (78) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
151369 -4, /* (79) cmd ::= DROP VIEW ifexists fullname */
151370 -1, /* (80) cmd ::= select */
151371 -3, /* (81) select ::= WITH wqlist selectnowith */
151372 -4, /* (82) select ::= WITH RECURSIVE wqlist selectnowith */
151373 -1, /* (83) select ::= selectnowith */
151374 -3, /* (84) selectnowith ::= selectnowith multiselect_op oneselect */
151375 -1, /* (85) multiselect_op ::= UNION */
151376 -2, /* (86) multiselect_op ::= UNION ALL */
151377 -1, /* (87) multiselect_op ::= EXCEPT|INTERSECT */
151378 -9, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
151379 -10, /* (89) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
151380 -4, /* (90) values ::= VALUES LP nexprlist RP */
151381 -5, /* (91) values ::= values COMMA LP nexprlist RP */
151382 -1, /* (92) distinct ::= DISTINCT */
151383 -1, /* (93) distinct ::= ALL */
151384 0, /* (94) distinct ::= */
151385 0, /* (95) sclp ::= */
151386 -5, /* (96) selcollist ::= sclp scanpt expr scanpt as */
151387 -3, /* (97) selcollist ::= sclp scanpt STAR */
151388 -5, /* (98) selcollist ::= sclp scanpt nm DOT STAR */
151389 -2, /* (99) as ::= AS nm */
151390 0, /* (100) as ::= */
151391 0, /* (101) from ::= */
151392 -2, /* (102) from ::= FROM seltablist */
151393 -2, /* (103) stl_prefix ::= seltablist joinop */
151394 0, /* (104) stl_prefix ::= */
151395 -7, /* (105) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
151396 -9, /* (106) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
151397 -7, /* (107) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
151398 -7, /* (108) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
151399 0, /* (109) dbnm ::= */
151400 -2, /* (110) dbnm ::= DOT nm */
151401 -1, /* (111) fullname ::= nm */
151402 -3, /* (112) fullname ::= nm DOT nm */
151403 -1, /* (113) xfullname ::= nm */
151404 -3, /* (114) xfullname ::= nm DOT nm */
151405 -5, /* (115) xfullname ::= nm DOT nm AS nm */
151406 -3, /* (116) xfullname ::= nm AS nm */
151407 -1, /* (117) joinop ::= COMMA|JOIN */
151408 -2, /* (118) joinop ::= JOIN_KW JOIN */
151409 -3, /* (119) joinop ::= JOIN_KW nm JOIN */
151410 -4, /* (120) joinop ::= JOIN_KW nm nm JOIN */
151411 -2, /* (121) on_opt ::= ON expr */
151412 0, /* (122) on_opt ::= */
151413 0, /* (123) indexed_opt ::= */
151414 -3, /* (124) indexed_opt ::= INDEXED BY nm */
151415 -2, /* (125) indexed_opt ::= NOT INDEXED */
151416 -4, /* (126) using_opt ::= USING LP idlist RP */
151417 0, /* (127) using_opt ::= */
151418 0, /* (128) orderby_opt ::= */
151419 -3, /* (129) orderby_opt ::= ORDER BY sortlist */
151420 -4, /* (130) sortlist ::= sortlist COMMA expr sortorder */
151421 -2, /* (131) sortlist ::= expr sortorder */
151422 -1, /* (132) sortorder ::= ASC */
151423 -1, /* (133) sortorder ::= DESC */
151424 0, /* (134) sortorder ::= */
151425 0, /* (135) groupby_opt ::= */
151426 -3, /* (136) groupby_opt ::= GROUP BY nexprlist */
151427 0, /* (137) having_opt ::= */
151428 -2, /* (138) having_opt ::= HAVING expr */
151429 0, /* (139) limit_opt ::= */
151430 -2, /* (140) limit_opt ::= LIMIT expr */
151431 -4, /* (141) limit_opt ::= LIMIT expr OFFSET expr */
151432 -4, /* (142) limit_opt ::= LIMIT expr COMMA expr */
151433 -6, /* (143) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
151434 0, /* (144) where_opt ::= */
151435 -2, /* (145) where_opt ::= WHERE expr */
151436 -8, /* (146) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
151437 -5, /* (147) setlist ::= setlist COMMA nm EQ expr */
151438 -7, /* (148) setlist ::= setlist COMMA LP idlist RP EQ expr */
151439 -3, /* (149) setlist ::= nm EQ expr */
151440 -5, /* (150) setlist ::= LP idlist RP EQ expr */
151441 -7, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
151442 -7, /* (152) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
151443 0, /* (153) upsert ::= */
151444 -11, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
151445 -8, /* (155) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
151446 -4, /* (156) upsert ::= ON CONFLICT DO NOTHING */
151447 -2, /* (157) insert_cmd ::= INSERT orconf */
151448 -1, /* (158) insert_cmd ::= REPLACE */
151449 0, /* (159) idlist_opt ::= */
151450 -3, /* (160) idlist_opt ::= LP idlist RP */
151451 -3, /* (161) idlist ::= idlist COMMA nm */
151452 -1, /* (162) idlist ::= nm */
151453 -3, /* (163) expr ::= LP expr RP */
151454 -1, /* (164) expr ::= ID|INDEXED */
151455 -1, /* (165) expr ::= JOIN_KW */
151456 -3, /* (166) expr ::= nm DOT nm */
151457 -5, /* (167) expr ::= nm DOT nm DOT nm */
151458 -1, /* (168) term ::= NULL|FLOAT|BLOB */
151459 -1, /* (169) term ::= STRING */
151460 -1, /* (170) term ::= INTEGER */
151461 -1, /* (171) expr ::= VARIABLE */
151462 -3, /* (172) expr ::= expr COLLATE ID|STRING */
151463 -6, /* (173) expr ::= CAST LP expr AS typetoken RP */
151464 -5, /* (174) expr ::= ID|INDEXED LP distinct exprlist RP */
151465 -4, /* (175) expr ::= ID|INDEXED LP STAR RP */
151466 -6, /* (176) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
151467 -5, /* (177) expr ::= ID|INDEXED LP STAR RP over_clause */
151468 -1, /* (178) term ::= CTIME_KW */
151469 -5, /* (179) expr ::= LP nexprlist COMMA expr RP */
151470 -3, /* (180) expr ::= expr AND expr */
151471 -3, /* (181) expr ::= expr OR expr */
151472 -3, /* (182) expr ::= expr LT|GT|GE|LE expr */
151473 -3, /* (183) expr ::= expr EQ|NE expr */
151474 -3, /* (184) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
151475 -3, /* (185) expr ::= expr PLUS|MINUS expr */
151476 -3, /* (186) expr ::= expr STAR|SLASH|REM expr */
151477 -3, /* (187) expr ::= expr CONCAT expr */
151478 -2, /* (188) likeop ::= NOT LIKE_KW|MATCH */
151479 -3, /* (189) expr ::= expr likeop expr */
151480 -5, /* (190) expr ::= expr likeop expr ESCAPE expr */
151481 -2, /* (191) expr ::= expr ISNULL|NOTNULL */
151482 -3, /* (192) expr ::= expr NOT NULL */
151483 -3, /* (193) expr ::= expr IS expr */
151484 -4, /* (194) expr ::= expr IS NOT expr */
151485 -2, /* (195) expr ::= NOT expr */
151486 -2, /* (196) expr ::= BITNOT expr */
151487 -2, /* (197) expr ::= PLUS|MINUS expr */
151488 -1, /* (198) between_op ::= BETWEEN */
151489 -2, /* (199) between_op ::= NOT BETWEEN */
151490 -5, /* (200) expr ::= expr between_op expr AND expr */
151491 -1, /* (201) in_op ::= IN */
151492 -2, /* (202) in_op ::= NOT IN */
151493 -5, /* (203) expr ::= expr in_op LP exprlist RP */
151494 -3, /* (204) expr ::= LP select RP */
151495 -5, /* (205) expr ::= expr in_op LP select RP */
151496 -5, /* (206) expr ::= expr in_op nm dbnm paren_exprlist */
151497 -4, /* (207) expr ::= EXISTS LP select RP */
151498 -5, /* (208) expr ::= CASE case_operand case_exprlist case_else END */
151499 -5, /* (209) case_exprlist ::= case_exprlist WHEN expr THEN expr */
151500 -4, /* (210) case_exprlist ::= WHEN expr THEN expr */
151501 -2, /* (211) case_else ::= ELSE expr */
151502 0, /* (212) case_else ::= */
151503 -1, /* (213) case_operand ::= expr */
151504 0, /* (214) case_operand ::= */
151505 0, /* (215) exprlist ::= */
151506 -3, /* (216) nexprlist ::= nexprlist COMMA expr */
151507 -1, /* (217) nexprlist ::= expr */
151508 0, /* (218) paren_exprlist ::= */
151509 -3, /* (219) paren_exprlist ::= LP exprlist RP */
151510 -12, /* (220) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
151511 -1, /* (221) uniqueflag ::= UNIQUE */
151512 0, /* (222) uniqueflag ::= */
151513 0, /* (223) eidlist_opt ::= */
151514 -3, /* (224) eidlist_opt ::= LP eidlist RP */
151515 -5, /* (225) eidlist ::= eidlist COMMA nm collate sortorder */
151516 -3, /* (226) eidlist ::= nm collate sortorder */
151517 0, /* (227) collate ::= */
151518 -2, /* (228) collate ::= COLLATE ID|STRING */
151519 -4, /* (229) cmd ::= DROP INDEX ifexists fullname */
151520 -2, /* (230) cmd ::= VACUUM vinto */
151521 -3, /* (231) cmd ::= VACUUM nm vinto */
151522 -2, /* (232) vinto ::= INTO expr */
151523 0, /* (233) vinto ::= */
151524 -3, /* (234) cmd ::= PRAGMA nm dbnm */
151525 -5, /* (235) cmd ::= PRAGMA nm dbnm EQ nmnum */
151526 -6, /* (236) cmd ::= PRAGMA nm dbnm LP nmnum RP */
151527 -5, /* (237) cmd ::= PRAGMA nm dbnm EQ minus_num */
151528 -6, /* (238) cmd ::= PRAGMA nm dbnm LP minus_num RP */
151529 -2, /* (239) plus_num ::= PLUS INTEGER|FLOAT */
151530 -2, /* (240) minus_num ::= MINUS INTEGER|FLOAT */
151531 -5, /* (241) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
151532 -11, /* (242) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
151533 -1, /* (243) trigger_time ::= BEFORE|AFTER */
151534 -2, /* (244) trigger_time ::= INSTEAD OF */
151535 0, /* (245) trigger_time ::= */
151536 -1, /* (246) trigger_event ::= DELETE|INSERT */
151537 -1, /* (247) trigger_event ::= UPDATE */
151538 -3, /* (248) trigger_event ::= UPDATE OF idlist */
151539 0, /* (249) when_clause ::= */
151540 -2, /* (250) when_clause ::= WHEN expr */
151541 -3, /* (251) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
151542 -2, /* (252) trigger_cmd_list ::= trigger_cmd SEMI */
151543 -3, /* (253) trnm ::= nm DOT nm */
151544 -3, /* (254) tridxby ::= INDEXED BY nm */
151545 -2, /* (255) tridxby ::= NOT INDEXED */
151546 -8, /* (256) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
151547 -8, /* (257) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
151548 -6, /* (258) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
151549 -3, /* (259) trigger_cmd ::= scanpt select scanpt */
151550 -4, /* (260) expr ::= RAISE LP IGNORE RP */
151551 -6, /* (261) expr ::= RAISE LP raisetype COMMA nm RP */
151552 -1, /* (262) raisetype ::= ROLLBACK */
151553 -1, /* (263) raisetype ::= ABORT */
151554 -1, /* (264) raisetype ::= FAIL */
151555 -4, /* (265) cmd ::= DROP TRIGGER ifexists fullname */
151556 -6, /* (266) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
151557 -3, /* (267) cmd ::= DETACH database_kw_opt expr */
151558 0, /* (268) key_opt ::= */
151559 -2, /* (269) key_opt ::= KEY expr */
151560 -1, /* (270) cmd ::= REINDEX */
151561 -3, /* (271) cmd ::= REINDEX nm dbnm */
151562 -1, /* (272) cmd ::= ANALYZE */
151563 -3, /* (273) cmd ::= ANALYZE nm dbnm */
151564 -6, /* (274) cmd ::= ALTER TABLE fullname RENAME TO nm */
151565 -7, /* (275) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
151566 -1, /* (276) add_column_fullname ::= fullname */
151567 -8, /* (277) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
151568 -1, /* (278) cmd ::= create_vtab */
151569 -4, /* (279) cmd ::= create_vtab LP vtabarglist RP */
151570 -8, /* (280) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
151571 0, /* (281) vtabarg ::= */
151572 -1, /* (282) vtabargtoken ::= ANY */
151573 -3, /* (283) vtabargtoken ::= lp anylist RP */
151574 -1, /* (284) lp ::= LP */
151575 -2, /* (285) with ::= WITH wqlist */
151576 -3, /* (286) with ::= WITH RECURSIVE wqlist */
151577 -6, /* (287) wqlist ::= nm eidlist_opt AS LP select RP */
151578 -8, /* (288) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
151579 -1, /* (289) windowdefn_list ::= windowdefn */
151580 -3, /* (290) windowdefn_list ::= windowdefn_list COMMA windowdefn */
151581 -5, /* (291) windowdefn ::= nm AS LP window RP */
151582 -5, /* (292) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
151583 -6, /* (293) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
151584 -4, /* (294) window ::= ORDER BY sortlist frame_opt */
151585 -5, /* (295) window ::= nm ORDER BY sortlist frame_opt */
151586 -1, /* (296) window ::= frame_opt */
151587 -2, /* (297) window ::= nm frame_opt */
151588 0, /* (298) frame_opt ::= */
151589 -3, /* (299) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
151590 -6, /* (300) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
151591 -1, /* (301) range_or_rows ::= RANGE|ROWS|GROUPS */
151592 -1, /* (302) frame_bound_s ::= frame_bound */
151593 -2, /* (303) frame_bound_s ::= UNBOUNDED PRECEDING */
151594 -1, /* (304) frame_bound_e ::= frame_bound */
151595 -2, /* (305) frame_bound_e ::= UNBOUNDED FOLLOWING */
151596 -2, /* (306) frame_bound ::= expr PRECEDING|FOLLOWING */
151597 -2, /* (307) frame_bound ::= CURRENT ROW */
151598 0, /* (308) frame_exclude_opt ::= */
151599 -2, /* (309) frame_exclude_opt ::= EXCLUDE frame_exclude */
151600 -2, /* (310) frame_exclude ::= NO OTHERS */
151601 -2, /* (311) frame_exclude ::= CURRENT ROW */
151602 -1, /* (312) frame_exclude ::= GROUP|TIES */
151603 -2, /* (313) window_clause ::= WINDOW windowdefn_list */
151604 -5, /* (314) over_clause ::= filter_opt OVER LP window RP */
151605 -3, /* (315) over_clause ::= filter_opt OVER nm */
151606 0, /* (316) filter_opt ::= */
151607 -5, /* (317) filter_opt ::= FILTER LP WHERE expr RP */
151608 -1, /* (318) input ::= cmdlist */
151609 -2, /* (319) cmdlist ::= cmdlist ecmd */
151610 -1, /* (320) cmdlist ::= ecmd */
151611 -1, /* (321) ecmd ::= SEMI */
151612 -2, /* (322) ecmd ::= cmdx SEMI */
151613 -2, /* (323) ecmd ::= explain cmdx */
151614 0, /* (324) trans_opt ::= */
151615 -1, /* (325) trans_opt ::= TRANSACTION */
151616 -2, /* (326) trans_opt ::= TRANSACTION nm */
151617 -1, /* (327) savepoint_opt ::= SAVEPOINT */
151618 0, /* (328) savepoint_opt ::= */
151619 -2, /* (329) cmd ::= create_table create_table_args */
151620 -4, /* (330) columnlist ::= columnlist COMMA columnname carglist */
151621 -2, /* (331) columnlist ::= columnname carglist */
151622 -1, /* (332) nm ::= ID|INDEXED */
151623 -1, /* (333) nm ::= STRING */
151624 -1, /* (334) nm ::= JOIN_KW */
151625 -1, /* (335) typetoken ::= typename */
151626 -1, /* (336) typename ::= ID|STRING */
151627 -1, /* (337) signed ::= plus_num */
151628 -1, /* (338) signed ::= minus_num */
151629 -2, /* (339) carglist ::= carglist ccons */
151630 0, /* (340) carglist ::= */
151631 -2, /* (341) ccons ::= NULL onconf */
151632 -2, /* (342) conslist_opt ::= COMMA conslist */
151633 -3, /* (343) conslist ::= conslist tconscomma tcons */
151634 -1, /* (344) conslist ::= tcons */
151635 0, /* (345) tconscomma ::= */
151636 -1, /* (346) defer_subclause_opt ::= defer_subclause */
151637 -1, /* (347) resolvetype ::= raisetype */
151638 -1, /* (348) selectnowith ::= oneselect */
151639 -1, /* (349) oneselect ::= values */
151640 -2, /* (350) sclp ::= selcollist COMMA */
151641 -1, /* (351) as ::= ID|STRING */
151642 -1, /* (352) expr ::= term */
151643 -1, /* (353) likeop ::= LIKE_KW|MATCH */
151644 -1, /* (354) exprlist ::= nexprlist */
151645 -1, /* (355) nmnum ::= plus_num */
151646 -1, /* (356) nmnum ::= nm */
151647 -1, /* (357) nmnum ::= ON */
151648 -1, /* (358) nmnum ::= DELETE */
151649 -1, /* (359) nmnum ::= DEFAULT */
151650 -1, /* (360) plus_num ::= INTEGER|FLOAT */
151651 0, /* (361) foreach_clause ::= */
151652 -3, /* (362) foreach_clause ::= FOR EACH ROW */
151653 -1, /* (363) trnm ::= nm */
151654 0, /* (364) tridxby ::= */
151655 -1, /* (365) database_kw_opt ::= DATABASE */
151656 0, /* (366) database_kw_opt ::= */
151657 0, /* (367) kwcolumn_opt ::= */
151658 -1, /* (368) kwcolumn_opt ::= COLUMNKW */
151659 -1, /* (369) vtabarglist ::= vtabarg */
151660 -3, /* (370) vtabarglist ::= vtabarglist COMMA vtabarg */
151661 -2, /* (371) vtabarg ::= vtabarg vtabargtoken */
151662 0, /* (372) anylist ::= */
151663 -4, /* (373) anylist ::= anylist LP anylist RP */
151664 -2, /* (374) anylist ::= anylist ANY */
151665 0, /* (375) with ::= */
151666 };
151667
151668 static void yy_accept(yyParser*); /* Forward Declaration */
151669
151670 /*
@@ -151606,20 +151757,20 @@
151757 break;
151758 case 2: /* cmdx ::= cmd */
151759 { sqlite3FinishCoding(pParse); }
151760 break;
151761 case 3: /* cmd ::= BEGIN transtype trans_opt */
151762 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy100);}
151763 break;
151764 case 4: /* transtype ::= */
151765 {yymsp[1].minor.yy100 = TK_DEFERRED;}
151766 break;
151767 case 5: /* transtype ::= DEFERRED */
151768 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
151769 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
151770 case 301: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==301);
151771 {yymsp[0].minor.yy100 = yymsp[0].major; /*A-overwrites-X*/}
151772 break;
151773 case 8: /* cmd ::= COMMIT|END trans_opt */
151774 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
151775 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
151776 break;
@@ -151638,61 +151789,61 @@
151789 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
151790 }
151791 break;
151792 case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
151793 {
151794 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy100,0,0,yymsp[-2].minor.yy100);
151795 }
151796 break;
151797 case 14: /* createkw ::= CREATE */
151798 {disableLookaside(pParse);}
151799 break;
151800 case 15: /* ifnotexists ::= */
151801 case 18: /* temp ::= */ yytestcase(yyruleno==18);
151802 case 21: /* table_options ::= */ yytestcase(yyruleno==21);
151803 case 43: /* autoinc ::= */ yytestcase(yyruleno==43);
151804 case 58: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==58);
151805 case 68: /* defer_subclause_opt ::= */ yytestcase(yyruleno==68);
151806 case 77: /* ifexists ::= */ yytestcase(yyruleno==77);
151807 case 94: /* distinct ::= */ yytestcase(yyruleno==94);
151808 case 227: /* collate ::= */ yytestcase(yyruleno==227);
151809 {yymsp[1].minor.yy100 = 0;}
151810 break;
151811 case 16: /* ifnotexists ::= IF NOT EXISTS */
151812 {yymsp[-2].minor.yy100 = 1;}
151813 break;
151814 case 17: /* temp ::= TEMP */
151815 case 44: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==44);
151816 {yymsp[0].minor.yy100 = 1;}
151817 break;
151818 case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
151819 {
151820 sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy100,0);
151821 }
151822 break;
151823 case 20: /* create_table_args ::= AS select */
151824 {
151825 sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy391);
151826 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy391);
151827 }
151828 break;
151829 case 22: /* table_options ::= WITHOUT nm */
151830 {
151831 if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
151832 yymsp[-1].minor.yy100 = TF_WithoutRowid | TF_NoVisibleRowid;
151833 }else{
151834 yymsp[-1].minor.yy100 = 0;
151835 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
151836 }
151837 }
151838 break;
151839 case 23: /* columnname ::= nm typetoken */
151840 {sqlite3AddColumn(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
151841 break;
151842 case 24: /* typetoken ::= */
151843 case 61: /* conslist_opt ::= */ yytestcase(yyruleno==61);
151844 case 100: /* as ::= */ yytestcase(yyruleno==100);
151845 {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;}
151846 break;
151847 case 25: /* typetoken ::= typename LP signed RP */
151848 {
151849 yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z);
@@ -151707,352 +151858,358 @@
151858 {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
151859 break;
151860 case 28: /* scanpt ::= */
151861 {
151862 assert( yyLookahead!=YYNOCODE );
151863 yymsp[1].minor.yy528 = yyLookaheadToken.z;
151864 }
151865 break;
151866 case 29: /* scantok ::= */
151867 {
151868 assert( yyLookahead!=YYNOCODE );
151869 yymsp[1].minor.yy0 = yyLookaheadToken;
151870 }
151871 break;
151872 case 30: /* ccons ::= CONSTRAINT nm */
151873 case 63: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==63);
151874 {pParse->constraintName = yymsp[0].minor.yy0;}
151875 break;
151876 case 31: /* ccons ::= DEFAULT scantok term */
151877 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy102,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
151878 break;
151879 case 32: /* ccons ::= DEFAULT LP expr RP */
151880 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy102,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
151881 break;
151882 case 33: /* ccons ::= DEFAULT PLUS scantok term */
151883 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy102,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
151884 break;
151885 case 34: /* ccons ::= DEFAULT MINUS scantok term */
151886 {
151887 Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy102, 0);
151888 sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
151889 }
151890 break;
151891 case 35: /* ccons ::= DEFAULT scantok ID|INDEXED */
151892 {
151893 Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0);
151894 if( p ){
151895 sqlite3ExprIdToTrueFalse(p);
151896 testcase( p->op==TK_TRUEFALSE && sqlite3ExprTruthValue(p) );
151897 }
151898 sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
151899 }
151900 break;
151901 case 36: /* ccons ::= NOT NULL onconf */
151902 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy100);}
151903 break;
151904 case 37: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
151905 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy100,yymsp[0].minor.yy100,yymsp[-2].minor.yy100);}
151906 break;
151907 case 38: /* ccons ::= UNIQUE onconf */
151908 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy100,0,0,0,0,
151909 SQLITE_IDXTYPE_UNIQUE);}
151910 break;
151911 case 39: /* ccons ::= CHECK LP expr RP */
151912 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy102);}
151913 break;
151914 case 40: /* ccons ::= REFERENCES nm eidlist_opt refargs */
151915 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy94,yymsp[0].minor.yy100);}
151916 break;
151917 case 41: /* ccons ::= defer_subclause */
151918 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy100);}
151919 break;
151920 case 42: /* ccons ::= COLLATE ID|STRING */
151921 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
151922 break;
151923 case 45: /* refargs ::= */
151924 { yymsp[1].minor.yy100 = OE_None*0x0101; /* EV: R-19803-45884 */}
151925 break;
151926 case 46: /* refargs ::= refargs refarg */
151927 { yymsp[-1].minor.yy100 = (yymsp[-1].minor.yy100 & ~yymsp[0].minor.yy199.mask) | yymsp[0].minor.yy199.value; }
151928 break;
151929 case 47: /* refarg ::= MATCH nm */
151930 { yymsp[-1].minor.yy199.value = 0; yymsp[-1].minor.yy199.mask = 0x000000; }
151931 break;
151932 case 48: /* refarg ::= ON INSERT refact */
151933 { yymsp[-2].minor.yy199.value = 0; yymsp[-2].minor.yy199.mask = 0x000000; }
151934 break;
151935 case 49: /* refarg ::= ON DELETE refact */
151936 { yymsp[-2].minor.yy199.value = yymsp[0].minor.yy100; yymsp[-2].minor.yy199.mask = 0x0000ff; }
151937 break;
151938 case 50: /* refarg ::= ON UPDATE refact */
151939 { yymsp[-2].minor.yy199.value = yymsp[0].minor.yy100<<8; yymsp[-2].minor.yy199.mask = 0x00ff00; }
151940 break;
151941 case 51: /* refact ::= SET NULL */
151942 { yymsp[-1].minor.yy100 = OE_SetNull; /* EV: R-33326-45252 */}
151943 break;
151944 case 52: /* refact ::= SET DEFAULT */
151945 { yymsp[-1].minor.yy100 = OE_SetDflt; /* EV: R-33326-45252 */}
151946 break;
151947 case 53: /* refact ::= CASCADE */
151948 { yymsp[0].minor.yy100 = OE_Cascade; /* EV: R-33326-45252 */}
151949 break;
151950 case 54: /* refact ::= RESTRICT */
151951 { yymsp[0].minor.yy100 = OE_Restrict; /* EV: R-33326-45252 */}
151952 break;
151953 case 55: /* refact ::= NO ACTION */
151954 { yymsp[-1].minor.yy100 = OE_None; /* EV: R-33326-45252 */}
151955 break;
151956 case 56: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
151957 {yymsp[-2].minor.yy100 = 0;}
151958 break;
151959 case 57: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
151960 case 72: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==72);
151961 case 157: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==157);
151962 {yymsp[-1].minor.yy100 = yymsp[0].minor.yy100;}
151963 break;
151964 case 59: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
151965 case 76: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==76);
151966 case 199: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==199);
151967 case 202: /* in_op ::= NOT IN */ yytestcase(yyruleno==202);
151968 case 228: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==228);
151969 {yymsp[-1].minor.yy100 = 1;}
151970 break;
151971 case 60: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
151972 {yymsp[-1].minor.yy100 = 0;}
151973 break;
151974 case 62: /* tconscomma ::= COMMA */
151975 {pParse->constraintName.n = 0;}
151976 break;
151977 case 64: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
151978 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy94,yymsp[0].minor.yy100,yymsp[-2].minor.yy100,0);}
151979 break;
151980 case 65: /* tcons ::= UNIQUE LP sortlist RP onconf */
151981 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy94,yymsp[0].minor.yy100,0,0,0,0,
151982 SQLITE_IDXTYPE_UNIQUE);}
151983 break;
151984 case 66: /* tcons ::= CHECK LP expr RP onconf */
151985 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy102);}
151986 break;
151987 case 67: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
151988 {
151989 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy94, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy94, yymsp[-1].minor.yy100);
151990 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy100);
151991 }
151992 break;
151993 case 69: /* onconf ::= */
151994 case 71: /* orconf ::= */ yytestcase(yyruleno==71);
151995 {yymsp[1].minor.yy100 = OE_Default;}
151996 break;
151997 case 70: /* onconf ::= ON CONFLICT resolvetype */
151998 {yymsp[-2].minor.yy100 = yymsp[0].minor.yy100;}
151999 break;
152000 case 73: /* resolvetype ::= IGNORE */
152001 {yymsp[0].minor.yy100 = OE_Ignore;}
152002 break;
152003 case 74: /* resolvetype ::= REPLACE */
152004 case 158: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==158);
152005 {yymsp[0].minor.yy100 = OE_Replace;}
152006 break;
152007 case 75: /* cmd ::= DROP TABLE ifexists fullname */
152008 {
152009 sqlite3DropTable(pParse, yymsp[0].minor.yy407, 0, yymsp[-1].minor.yy100);
152010 }
152011 break;
152012 case 78: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
152013 {
152014 sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy94, yymsp[0].minor.yy391, yymsp[-7].minor.yy100, yymsp[-5].minor.yy100);
152015 }
152016 break;
152017 case 79: /* cmd ::= DROP VIEW ifexists fullname */
152018 {
152019 sqlite3DropTable(pParse, yymsp[0].minor.yy407, 1, yymsp[-1].minor.yy100);
152020 }
152021 break;
152022 case 80: /* cmd ::= select */
152023 {
152024 SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0};
152025 sqlite3Select(pParse, yymsp[0].minor.yy391, &dest);
152026 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy391);
152027 }
152028 break;
152029 case 81: /* select ::= WITH wqlist selectnowith */
152030 {
152031 Select *p = yymsp[0].minor.yy391;
152032 if( p ){
152033 p->pWith = yymsp[-1].minor.yy243;
152034 parserDoubleLinkSelect(pParse, p);
152035 }else{
152036 sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy243);
152037 }
152038 yymsp[-2].minor.yy391 = p;
152039 }
152040 break;
152041 case 82: /* select ::= WITH RECURSIVE wqlist selectnowith */
152042 {
152043 Select *p = yymsp[0].minor.yy391;
152044 if( p ){
152045 p->pWith = yymsp[-1].minor.yy243;
152046 parserDoubleLinkSelect(pParse, p);
152047 }else{
152048 sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy243);
152049 }
152050 yymsp[-3].minor.yy391 = p;
152051 }
152052 break;
152053 case 83: /* select ::= selectnowith */
152054 {
152055 Select *p = yymsp[0].minor.yy391;
152056 if( p ){
152057 parserDoubleLinkSelect(pParse, p);
152058 }
152059 yymsp[0].minor.yy391 = p; /*A-overwrites-X*/
152060 }
152061 break;
152062 case 84: /* selectnowith ::= selectnowith multiselect_op oneselect */
152063 {
152064 Select *pRhs = yymsp[0].minor.yy391;
152065 Select *pLhs = yymsp[-2].minor.yy391;
152066 if( pRhs && pRhs->pPrior ){
152067 SrcList *pFrom;
152068 Token x;
152069 x.n = 0;
152070 parserDoubleLinkSelect(pParse, pRhs);
152071 pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
152072 pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
152073 }
152074 if( pRhs ){
152075 pRhs->op = (u8)yymsp[-1].minor.yy100;
152076 pRhs->pPrior = pLhs;
152077 if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
152078 pRhs->selFlags &= ~SF_MultiValue;
152079 if( yymsp[-1].minor.yy100!=TK_ALL ) pParse->hasCompound = 1;
152080 }else{
152081 sqlite3SelectDelete(pParse->db, pLhs);
152082 }
152083 yymsp[-2].minor.yy391 = pRhs;
152084 }
152085 break;
152086 case 85: /* multiselect_op ::= UNION */
152087 case 87: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==87);
152088 {yymsp[0].minor.yy100 = yymsp[0].major; /*A-overwrites-OP*/}
152089 break;
152090 case 86: /* multiselect_op ::= UNION ALL */
152091 {yymsp[-1].minor.yy100 = TK_ALL;}
152092 break;
152093 case 88: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
152094 {
152095 yymsp[-8].minor.yy391 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy94,yymsp[-5].minor.yy407,yymsp[-4].minor.yy102,yymsp[-3].minor.yy94,yymsp[-2].minor.yy102,yymsp[-1].minor.yy94,yymsp[-7].minor.yy100,yymsp[0].minor.yy102);
152096 }
152097 break;
152098 case 89: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
152099 {
152100 yymsp[-9].minor.yy391 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy94,yymsp[-6].minor.yy407,yymsp[-5].minor.yy102,yymsp[-4].minor.yy94,yymsp[-3].minor.yy102,yymsp[-1].minor.yy94,yymsp[-8].minor.yy100,yymsp[0].minor.yy102);
152101 if( yymsp[-9].minor.yy391 ){
152102 yymsp[-9].minor.yy391->pWinDefn = yymsp[-2].minor.yy379;
152103 }else{
152104 sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy379);
152105 }
152106 }
152107 break;
152108 case 90: /* values ::= VALUES LP nexprlist RP */
152109 {
152110 yymsp[-3].minor.yy391 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy94,0,0,0,0,0,SF_Values,0);
152111 }
152112 break;
152113 case 91: /* values ::= values COMMA LP nexprlist RP */
152114 {
152115 Select *pRight, *pLeft = yymsp[-4].minor.yy391;
152116 pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy94,0,0,0,0,0,SF_Values|SF_MultiValue,0);
152117 if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
152118 if( pRight ){
152119 pRight->op = TK_ALL;
152120 pRight->pPrior = pLeft;
152121 yymsp[-4].minor.yy391 = pRight;
152122 }else{
152123 yymsp[-4].minor.yy391 = pLeft;
152124 }
152125 }
152126 break;
152127 case 92: /* distinct ::= DISTINCT */
152128 {yymsp[0].minor.yy100 = SF_Distinct;}
152129 break;
152130 case 93: /* distinct ::= ALL */
152131 {yymsp[0].minor.yy100 = SF_All;}
152132 break;
152133 case 95: /* sclp ::= */
152134 case 128: /* orderby_opt ::= */ yytestcase(yyruleno==128);
152135 case 135: /* groupby_opt ::= */ yytestcase(yyruleno==135);
152136 case 215: /* exprlist ::= */ yytestcase(yyruleno==215);
152137 case 218: /* paren_exprlist ::= */ yytestcase(yyruleno==218);
152138 case 223: /* eidlist_opt ::= */ yytestcase(yyruleno==223);
152139 {yymsp[1].minor.yy94 = 0;}
152140 break;
152141 case 96: /* selcollist ::= sclp scanpt expr scanpt as */
152142 {
152143 yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy94, yymsp[-2].minor.yy102);
152144 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy94, &yymsp[0].minor.yy0, 1);
152145 sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy94,yymsp[-3].minor.yy528,yymsp[-1].minor.yy528);
152146 }
152147 break;
152148 case 97: /* selcollist ::= sclp scanpt STAR */
152149 {
152150 Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
152151 yymsp[-2].minor.yy94 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy94, p);
152152 }
152153 break;
152154 case 98: /* selcollist ::= sclp scanpt nm DOT STAR */
152155 {
152156 Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
152157 Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
152158 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
152159 yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy94, pDot);
152160 }
152161 break;
152162 case 99: /* as ::= AS nm */
152163 case 110: /* dbnm ::= DOT nm */ yytestcase(yyruleno==110);
152164 case 239: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==239);
152165 case 240: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==240);
152166 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
152167 break;
152168 case 101: /* from ::= */
152169 {yymsp[1].minor.yy407 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy407));}
152170 break;
152171 case 102: /* from ::= FROM seltablist */
152172 {
152173 yymsp[-1].minor.yy407 = yymsp[0].minor.yy407;
152174 sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy407);
152175 }
152176 break;
152177 case 103: /* stl_prefix ::= seltablist joinop */
152178 {
152179 if( ALWAYS(yymsp[-1].minor.yy407 && yymsp[-1].minor.yy407->nSrc>0) ) yymsp[-1].minor.yy407->a[yymsp[-1].minor.yy407->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy100;
152180 }
152181 break;
152182 case 104: /* stl_prefix ::= */
152183 {yymsp[1].minor.yy407 = 0;}
152184 break;
152185 case 105: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
152186 {
152187 yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152188 sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy407, &yymsp[-2].minor.yy0);
152189 }
152190 break;
152191 case 106: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
152192 {
152193 yymsp[-8].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy407,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152194 sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy407, yymsp[-4].minor.yy94);
152195 }
152196 break;
152197 case 107: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
152198 {
152199 yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy391,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152200 }
152201 break;
152202 case 108: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
152203 {
152204 if( yymsp[-6].minor.yy407==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy102==0 && yymsp[0].minor.yy76==0 ){
152205 yymsp[-6].minor.yy407 = yymsp[-4].minor.yy407;
152206 }else if( yymsp[-4].minor.yy407->nSrc==1 ){
152207 yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152208 if( yymsp[-6].minor.yy407 ){
152209 struct SrcList_item *pNew = &yymsp[-6].minor.yy407->a[yymsp[-6].minor.yy407->nSrc-1];
152210 struct SrcList_item *pOld = yymsp[-4].minor.yy407->a;
152211 pNew->zName = pOld->zName;
152212 pNew->zDatabase = pOld->zDatabase;
152213 pNew->pSelect = pOld->pSelect;
152214 if( pOld->fg.isTabFunc ){
152215 pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -152061,417 +152218,417 @@
152218 pNew->fg.isTabFunc = 1;
152219 }
152220 pOld->zName = pOld->zDatabase = 0;
152221 pOld->pSelect = 0;
152222 }
152223 sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy407);
152224 }else{
152225 Select *pSubquery;
152226 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy407);
152227 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy407,0,0,0,0,SF_NestedFrom,0);
152228 yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
152229 }
152230 }
152231 break;
152232 case 109: /* dbnm ::= */
152233 case 123: /* indexed_opt ::= */ yytestcase(yyruleno==123);
152234 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
152235 break;
152236 case 111: /* fullname ::= nm */
152237 {
152238 yylhsminor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
152239 if( IN_RENAME_OBJECT && yylhsminor.yy407 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy407->a[0].zName, &yymsp[0].minor.yy0);
152240 }
152241 yymsp[0].minor.yy407 = yylhsminor.yy407;
152242 break;
152243 case 112: /* fullname ::= nm DOT nm */
152244 {
152245 yylhsminor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
152246 if( IN_RENAME_OBJECT && yylhsminor.yy407 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy407->a[0].zName, &yymsp[0].minor.yy0);
152247 }
152248 yymsp[-2].minor.yy407 = yylhsminor.yy407;
152249 break;
152250 case 113: /* xfullname ::= nm */
152251 {yymsp[0].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
152252 break;
152253 case 114: /* xfullname ::= nm DOT nm */
152254 {yymsp[-2].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
152255 break;
152256 case 115: /* xfullname ::= nm DOT nm AS nm */
152257 {
152258 yymsp[-4].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
152259 if( yymsp[-4].minor.yy407 ) yymsp[-4].minor.yy407->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
152260 }
152261 break;
152262 case 116: /* xfullname ::= nm AS nm */
152263 {
152264 yymsp[-2].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
152265 if( yymsp[-2].minor.yy407 ) yymsp[-2].minor.yy407->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
152266 }
152267 break;
152268 case 117: /* joinop ::= COMMA|JOIN */
152269 { yymsp[0].minor.yy100 = JT_INNER; }
152270 break;
152271 case 118: /* joinop ::= JOIN_KW JOIN */
152272 {yymsp[-1].minor.yy100 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
152273 break;
152274 case 119: /* joinop ::= JOIN_KW nm JOIN */
152275 {yymsp[-2].minor.yy100 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
152276 break;
152277 case 120: /* joinop ::= JOIN_KW nm nm JOIN */
152278 {yymsp[-3].minor.yy100 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
152279 break;
152280 case 121: /* on_opt ::= ON expr */
152281 case 138: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==138);
152282 case 145: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==145);
152283 case 211: /* case_else ::= ELSE expr */ yytestcase(yyruleno==211);
152284 case 232: /* vinto ::= INTO expr */ yytestcase(yyruleno==232);
152285 {yymsp[-1].minor.yy102 = yymsp[0].minor.yy102;}
152286 break;
152287 case 122: /* on_opt ::= */
152288 case 137: /* having_opt ::= */ yytestcase(yyruleno==137);
152289 case 139: /* limit_opt ::= */ yytestcase(yyruleno==139);
152290 case 144: /* where_opt ::= */ yytestcase(yyruleno==144);
152291 case 212: /* case_else ::= */ yytestcase(yyruleno==212);
152292 case 214: /* case_operand ::= */ yytestcase(yyruleno==214);
152293 case 233: /* vinto ::= */ yytestcase(yyruleno==233);
152294 {yymsp[1].minor.yy102 = 0;}
152295 break;
152296 case 124: /* indexed_opt ::= INDEXED BY nm */
152297 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
152298 break;
152299 case 125: /* indexed_opt ::= NOT INDEXED */
152300 {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
152301 break;
152302 case 126: /* using_opt ::= USING LP idlist RP */
152303 {yymsp[-3].minor.yy76 = yymsp[-1].minor.yy76;}
152304 break;
152305 case 127: /* using_opt ::= */
152306 case 159: /* idlist_opt ::= */ yytestcase(yyruleno==159);
152307 {yymsp[1].minor.yy76 = 0;}
152308 break;
152309 case 129: /* orderby_opt ::= ORDER BY sortlist */
152310 case 136: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==136);
152311 {yymsp[-2].minor.yy94 = yymsp[0].minor.yy94;}
152312 break;
152313 case 130: /* sortlist ::= sortlist COMMA expr sortorder */
152314 {
152315 yymsp[-3].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy94,yymsp[-1].minor.yy102);
152316 sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy94,yymsp[0].minor.yy100);
152317 }
152318 break;
152319 case 131: /* sortlist ::= expr sortorder */
152320 {
152321 yymsp[-1].minor.yy94 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy102); /*A-overwrites-Y*/
152322 sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy94,yymsp[0].minor.yy100);
152323 }
152324 break;
152325 case 132: /* sortorder ::= ASC */
152326 {yymsp[0].minor.yy100 = SQLITE_SO_ASC;}
152327 break;
152328 case 133: /* sortorder ::= DESC */
152329 {yymsp[0].minor.yy100 = SQLITE_SO_DESC;}
152330 break;
152331 case 134: /* sortorder ::= */
152332 {yymsp[1].minor.yy100 = SQLITE_SO_UNDEFINED;}
152333 break;
152334 case 140: /* limit_opt ::= LIMIT expr */
152335 {yymsp[-1].minor.yy102 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy102,0);}
152336 break;
152337 case 141: /* limit_opt ::= LIMIT expr OFFSET expr */
152338 {yymsp[-3].minor.yy102 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);}
152339 break;
152340 case 142: /* limit_opt ::= LIMIT expr COMMA expr */
152341 {yymsp[-3].minor.yy102 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy102,yymsp[-2].minor.yy102);}
152342 break;
152343 case 143: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
152344 {
152345 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy407, &yymsp[-1].minor.yy0);
152346 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy407,yymsp[0].minor.yy102,0,0);
152347 }
152348 break;
152349 case 146: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
152350 {
152351 sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy407, &yymsp[-3].minor.yy0);
152352 sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy94,"set list");
152353 sqlite3Update(pParse,yymsp[-4].minor.yy407,yymsp[-1].minor.yy94,yymsp[0].minor.yy102,yymsp[-5].minor.yy100,0,0,0);
152354 }
152355 break;
152356 case 147: /* setlist ::= setlist COMMA nm EQ expr */
152357 {
152358 yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy94, yymsp[0].minor.yy102);
152359 sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy94, &yymsp[-2].minor.yy0, 1);
152360 }
152361 break;
152362 case 148: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
152363 {
152364 yymsp[-6].minor.yy94 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy94, yymsp[-3].minor.yy76, yymsp[0].minor.yy102);
152365 }
152366 break;
152367 case 149: /* setlist ::= nm EQ expr */
152368 {
152369 yylhsminor.yy94 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy102);
152370 sqlite3ExprListSetName(pParse, yylhsminor.yy94, &yymsp[-2].minor.yy0, 1);
152371 }
152372 yymsp[-2].minor.yy94 = yylhsminor.yy94;
152373 break;
152374 case 150: /* setlist ::= LP idlist RP EQ expr */
152375 {
152376 yymsp[-4].minor.yy94 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy76, yymsp[0].minor.yy102);
152377 }
152378 break;
152379 case 151: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
152380 {
152381 sqlite3Insert(pParse, yymsp[-3].minor.yy407, yymsp[-1].minor.yy391, yymsp[-2].minor.yy76, yymsp[-5].minor.yy100, yymsp[0].minor.yy95);
152382 }
152383 break;
152384 case 152: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
152385 {
152386 sqlite3Insert(pParse, yymsp[-3].minor.yy407, 0, yymsp[-2].minor.yy76, yymsp[-5].minor.yy100, 0);
152387 }
152388 break;
152389 case 153: /* upsert ::= */
152390 { yymsp[1].minor.yy95 = 0; }
152391 break;
152392 case 154: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
152393 { yymsp[-10].minor.yy95 = sqlite3UpsertNew(pParse->db,yymsp[-7].minor.yy94,yymsp[-5].minor.yy102,yymsp[-1].minor.yy94,yymsp[0].minor.yy102);}
152394 break;
152395 case 155: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
152396 { yymsp[-7].minor.yy95 = sqlite3UpsertNew(pParse->db,yymsp[-4].minor.yy94,yymsp[-2].minor.yy102,0,0); }
152397 break;
152398 case 156: /* upsert ::= ON CONFLICT DO NOTHING */
152399 { yymsp[-3].minor.yy95 = sqlite3UpsertNew(pParse->db,0,0,0,0); }
152400 break;
152401 case 160: /* idlist_opt ::= LP idlist RP */
152402 {yymsp[-2].minor.yy76 = yymsp[-1].minor.yy76;}
152403 break;
152404 case 161: /* idlist ::= idlist COMMA nm */
152405 {yymsp[-2].minor.yy76 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy76,&yymsp[0].minor.yy0);}
152406 break;
152407 case 162: /* idlist ::= nm */
152408 {yymsp[0].minor.yy76 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
152409 break;
152410 case 163: /* expr ::= LP expr RP */
152411 {yymsp[-2].minor.yy102 = yymsp[-1].minor.yy102;}
152412 break;
152413 case 164: /* expr ::= ID|INDEXED */
152414 case 165: /* expr ::= JOIN_KW */ yytestcase(yyruleno==165);
152415 {yymsp[0].minor.yy102=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
152416 break;
152417 case 166: /* expr ::= nm DOT nm */
152418 {
152419 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
152420 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
152421 if( IN_RENAME_OBJECT ){
152422 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
152423 sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
152424 }
152425 yylhsminor.yy102 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
152426 }
152427 yymsp[-2].minor.yy102 = yylhsminor.yy102;
152428 break;
152429 case 167: /* expr ::= nm DOT nm DOT nm */
152430 {
152431 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
152432 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
152433 Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
152434 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
152435 if( IN_RENAME_OBJECT ){
152436 sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
152437 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
152438 }
152439 yylhsminor.yy102 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
152440 }
152441 yymsp[-4].minor.yy102 = yylhsminor.yy102;
152442 break;
152443 case 168: /* term ::= NULL|FLOAT|BLOB */
152444 case 169: /* term ::= STRING */ yytestcase(yyruleno==169);
152445 {yymsp[0].minor.yy102=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
152446 break;
152447 case 170: /* term ::= INTEGER */
152448 {
152449 yylhsminor.yy102 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
152450 }
152451 yymsp[0].minor.yy102 = yylhsminor.yy102;
152452 break;
152453 case 171: /* expr ::= VARIABLE */
152454 {
152455 if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
152456 u32 n = yymsp[0].minor.yy0.n;
152457 yymsp[0].minor.yy102 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
152458 sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy102, n);
152459 }else{
152460 /* When doing a nested parse, one can include terms in an expression
152461 ** that look like this: #1 #2 ... These terms refer to registers
152462 ** in the virtual machine. #N is the N-th register. */
152463 Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
152464 assert( t.n>=2 );
152465 if( pParse->nested==0 ){
152466 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
152467 yymsp[0].minor.yy102 = 0;
152468 }else{
152469 yymsp[0].minor.yy102 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
152470 if( yymsp[0].minor.yy102 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy102->iTable);
152471 }
152472 }
152473 }
152474 break;
152475 case 172: /* expr ::= expr COLLATE ID|STRING */
152476 {
152477 yymsp[-2].minor.yy102 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy102, &yymsp[0].minor.yy0, 1);
152478 }
152479 break;
152480 case 173: /* expr ::= CAST LP expr AS typetoken RP */
152481 {
152482 yymsp[-5].minor.yy102 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
152483 sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy102, yymsp[-3].minor.yy102, 0);
152484 }
152485 break;
152486 case 174: /* expr ::= ID|INDEXED LP distinct exprlist RP */
152487 {
152488 yylhsminor.yy102 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy94, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy100);
152489 }
152490 yymsp[-4].minor.yy102 = yylhsminor.yy102;
152491 break;
152492 case 175: /* expr ::= ID|INDEXED LP STAR RP */
152493 {
152494 yylhsminor.yy102 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
152495 }
152496 yymsp[-3].minor.yy102 = yylhsminor.yy102;
152497 break;
152498 case 176: /* expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
152499 {
152500 yylhsminor.yy102 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy94, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy100);
152501 sqlite3WindowAttach(pParse, yylhsminor.yy102, yymsp[0].minor.yy379);
152502 }
152503 yymsp[-5].minor.yy102 = yylhsminor.yy102;
152504 break;
152505 case 177: /* expr ::= ID|INDEXED LP STAR RP over_clause */
152506 {
152507 yylhsminor.yy102 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
152508 sqlite3WindowAttach(pParse, yylhsminor.yy102, yymsp[0].minor.yy379);
152509 }
152510 yymsp[-4].minor.yy102 = yylhsminor.yy102;
152511 break;
152512 case 178: /* term ::= CTIME_KW */
152513 {
152514 yylhsminor.yy102 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
152515 }
152516 yymsp[0].minor.yy102 = yylhsminor.yy102;
152517 break;
152518 case 179: /* expr ::= LP nexprlist COMMA expr RP */
152519 {
152520 ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy94, yymsp[-1].minor.yy102);
152521 yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
152522 if( yymsp[-4].minor.yy102 ){
152523 yymsp[-4].minor.yy102->x.pList = pList;
152524 }else{
152525 sqlite3ExprListDelete(pParse->db, pList);
152526 }
152527 }
152528 break;
152529 case 180: /* expr ::= expr AND expr */
152530 {yymsp[-2].minor.yy102=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);}
152531 break;
152532 case 181: /* expr ::= expr OR expr */
152533 case 182: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==182);
152534 case 183: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==183);
152535 case 184: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==184);
152536 case 185: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==185);
152537 case 186: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==186);
152538 case 187: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==187);
152539 {yymsp[-2].minor.yy102=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);}
152540 break;
152541 case 188: /* likeop ::= NOT LIKE_KW|MATCH */
152542 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
152543 break;
152544 case 189: /* expr ::= expr likeop expr */
152545 {
152546 ExprList *pList;
152547 int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
152548 yymsp[-1].minor.yy0.n &= 0x7fffffff;
152549 pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy102);
152550 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy102);
152551 yymsp[-2].minor.yy102 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
152552 if( bNot ) yymsp[-2].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy102, 0);
152553 if( yymsp[-2].minor.yy102 ) yymsp[-2].minor.yy102->flags |= EP_InfixFunc;
152554 }
152555 break;
152556 case 190: /* expr ::= expr likeop expr ESCAPE expr */
152557 {
152558 ExprList *pList;
152559 int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
152560 yymsp[-3].minor.yy0.n &= 0x7fffffff;
152561 pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy102);
152562 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy102);
152563 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy102);
152564 yymsp[-4].minor.yy102 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
152565 if( bNot ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152566 if( yymsp[-4].minor.yy102 ) yymsp[-4].minor.yy102->flags |= EP_InfixFunc;
152567 }
152568 break;
152569 case 191: /* expr ::= expr ISNULL|NOTNULL */
152570 {yymsp[-1].minor.yy102 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy102,0);}
152571 break;
152572 case 192: /* expr ::= expr NOT NULL */
152573 {yymsp[-2].minor.yy102 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy102,0);}
152574 break;
152575 case 193: /* expr ::= expr IS expr */
152576 {
152577 yymsp[-2].minor.yy102 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);
152578 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy102, yymsp[-2].minor.yy102, TK_ISNULL);
152579 }
152580 break;
152581 case 194: /* expr ::= expr IS NOT expr */
152582 {
152583 yymsp[-3].minor.yy102 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy102,yymsp[0].minor.yy102);
152584 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy102, yymsp[-3].minor.yy102, TK_NOTNULL);
152585 }
152586 break;
152587 case 195: /* expr ::= NOT expr */
152588 case 196: /* expr ::= BITNOT expr */ yytestcase(yyruleno==196);
152589 {yymsp[-1].minor.yy102 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy102, 0);/*A-overwrites-B*/}
152590 break;
152591 case 197: /* expr ::= PLUS|MINUS expr */
152592 {
152593 yymsp[-1].minor.yy102 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy102, 0);
152594 /*A-overwrites-B*/
152595 }
152596 break;
152597 case 198: /* between_op ::= BETWEEN */
152598 case 201: /* in_op ::= IN */ yytestcase(yyruleno==201);
152599 {yymsp[0].minor.yy100 = 0;}
152600 break;
152601 case 200: /* expr ::= expr between_op expr AND expr */
152602 {
152603 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy102);
152604 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy102);
152605 yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy102, 0);
152606 if( yymsp[-4].minor.yy102 ){
152607 yymsp[-4].minor.yy102->x.pList = pList;
152608 }else{
152609 sqlite3ExprListDelete(pParse->db, pList);
152610 }
152611 if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152612 }
152613 break;
152614 case 203: /* expr ::= expr in_op LP exprlist RP */
152615 {
152616 if( yymsp[-1].minor.yy94==0 ){
152617 /* Expressions of the form
152618 **
152619 ** expr1 IN ()
152620 ** expr1 NOT IN ()
152621 **
152622 ** simplify to constants 0 (false) and 1 (true), respectively,
152623 ** regardless of the value of expr1.
152624 */
152625 if( IN_RENAME_OBJECT==0 ){
152626 sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy102);
152627 yymsp[-4].minor.yy102 = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[yymsp[-3].minor.yy100],1);
152628 }
152629 }else if( yymsp[-1].minor.yy94->nExpr==1 ){
152630 /* Expressions of the form:
152631 **
152632 ** expr1 IN (?1)
152633 ** expr1 NOT IN (?2)
152634 **
@@ -152484,532 +152641,532 @@
152641 ** But, the RHS of the == or <> is marked with the EP_Generic flag
152642 ** so that it may not contribute to the computation of comparison
152643 ** affinity or the collating sequence to use for comparison. Otherwise,
152644 ** the semantics would be subtly different from IN or NOT IN.
152645 */
152646 Expr *pRHS = yymsp[-1].minor.yy94->a[0].pExpr;
152647 yymsp[-1].minor.yy94->a[0].pExpr = 0;
152648 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy94);
152649 /* pRHS cannot be NULL because a malloc error would have been detected
152650 ** before now and control would have never reached this point */
152651 if( ALWAYS(pRHS) ){
152652 pRHS->flags &= ~EP_Collate;
152653 pRHS->flags |= EP_Generic;
152654 }
152655 yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, yymsp[-3].minor.yy100 ? TK_NE : TK_EQ, yymsp[-4].minor.yy102, pRHS);
152656 }else{
152657 yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy102, 0);
152658 if( yymsp[-4].minor.yy102 ){
152659 yymsp[-4].minor.yy102->x.pList = yymsp[-1].minor.yy94;
152660 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy102);
152661 }else{
152662 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy94);
152663 }
152664 if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152665 }
152666 }
152667 break;
152668 case 204: /* expr ::= LP select RP */
152669 {
152670 yymsp[-2].minor.yy102 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
152671 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy102, yymsp[-1].minor.yy391);
152672 }
152673 break;
152674 case 205: /* expr ::= expr in_op LP select RP */
152675 {
152676 yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy102, 0);
152677 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy102, yymsp[-1].minor.yy391);
152678 if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152679 }
152680 break;
152681 case 206: /* expr ::= expr in_op nm dbnm paren_exprlist */
152682 {
152683 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
152684 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
152685 if( yymsp[0].minor.yy94 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy94);
152686 yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy102, 0);
152687 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy102, pSelect);
152688 if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
152689 }
152690 break;
152691 case 207: /* expr ::= EXISTS LP select RP */
152692 {
152693 Expr *p;
152694 p = yymsp[-3].minor.yy102 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
152695 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy391);
152696 }
152697 break;
152698 case 208: /* expr ::= CASE case_operand case_exprlist case_else END */
152699 {
152700 yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy102, 0);
152701 if( yymsp[-4].minor.yy102 ){
152702 yymsp[-4].minor.yy102->x.pList = yymsp[-1].minor.yy102 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy94,yymsp[-1].minor.yy102) : yymsp[-2].minor.yy94;
152703 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy102);
152704 }else{
152705 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy94);
152706 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy102);
152707 }
152708 }
152709 break;
152710 case 209: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
152711 {
152712 yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy94, yymsp[-2].minor.yy102);
152713 yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy94, yymsp[0].minor.yy102);
152714 }
152715 break;
152716 case 210: /* case_exprlist ::= WHEN expr THEN expr */
152717 {
152718 yymsp[-3].minor.yy94 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy102);
152719 yymsp[-3].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy94, yymsp[0].minor.yy102);
152720 }
152721 break;
152722 case 213: /* case_operand ::= expr */
152723 {yymsp[0].minor.yy102 = yymsp[0].minor.yy102; /*A-overwrites-X*/}
152724 break;
152725 case 216: /* nexprlist ::= nexprlist COMMA expr */
152726 {yymsp[-2].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy94,yymsp[0].minor.yy102);}
152727 break;
152728 case 217: /* nexprlist ::= expr */
152729 {yymsp[0].minor.yy94 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy102); /*A-overwrites-Y*/}
152730 break;
152731 case 219: /* paren_exprlist ::= LP exprlist RP */
152732 case 224: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==224);
152733 {yymsp[-2].minor.yy94 = yymsp[-1].minor.yy94;}
152734 break;
152735 case 220: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
152736 {
152737 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
152738 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy94, yymsp[-10].minor.yy100,
152739 &yymsp[-11].minor.yy0, yymsp[0].minor.yy102, SQLITE_SO_ASC, yymsp[-8].minor.yy100, SQLITE_IDXTYPE_APPDEF);
152740 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
152741 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
152742 }
152743 }
152744 break;
152745 case 221: /* uniqueflag ::= UNIQUE */
152746 case 263: /* raisetype ::= ABORT */ yytestcase(yyruleno==263);
152747 {yymsp[0].minor.yy100 = OE_Abort;}
152748 break;
152749 case 222: /* uniqueflag ::= */
152750 {yymsp[1].minor.yy100 = OE_None;}
152751 break;
152752 case 225: /* eidlist ::= eidlist COMMA nm collate sortorder */
152753 {
152754 yymsp[-4].minor.yy94 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy94, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy100, yymsp[0].minor.yy100);
152755 }
152756 break;
152757 case 226: /* eidlist ::= nm collate sortorder */
152758 {
152759 yymsp[-2].minor.yy94 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy100, yymsp[0].minor.yy100); /*A-overwrites-Y*/
152760 }
152761 break;
152762 case 229: /* cmd ::= DROP INDEX ifexists fullname */
152763 {sqlite3DropIndex(pParse, yymsp[0].minor.yy407, yymsp[-1].minor.yy100);}
152764 break;
152765 case 230: /* cmd ::= VACUUM vinto */
152766 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy102);}
152767 break;
152768 case 231: /* cmd ::= VACUUM nm vinto */
152769 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy102);}
152770 break;
152771 case 234: /* cmd ::= PRAGMA nm dbnm */
152772 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
152773 break;
152774 case 235: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
152775 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
152776 break;
152777 case 236: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
152778 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
152779 break;
152780 case 237: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
152781 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
152782 break;
152783 case 238: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
152784 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
152785 break;
152786 case 241: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
152787 {
152788 Token all;
152789 all.z = yymsp[-3].minor.yy0.z;
152790 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
152791 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy11, &all);
152792 }
152793 break;
152794 case 242: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
152795 {
152796 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy100, yymsp[-4].minor.yy298.a, yymsp[-4].minor.yy298.b, yymsp[-2].minor.yy407, yymsp[0].minor.yy102, yymsp[-10].minor.yy100, yymsp[-8].minor.yy100);
152797 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
152798 }
152799 break;
152800 case 243: /* trigger_time ::= BEFORE|AFTER */
152801 { yymsp[0].minor.yy100 = yymsp[0].major; /*A-overwrites-X*/ }
152802 break;
152803 case 244: /* trigger_time ::= INSTEAD OF */
152804 { yymsp[-1].minor.yy100 = TK_INSTEAD;}
152805 break;
152806 case 245: /* trigger_time ::= */
152807 { yymsp[1].minor.yy100 = TK_BEFORE; }
152808 break;
152809 case 246: /* trigger_event ::= DELETE|INSERT */
152810 case 247: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==247);
152811 {yymsp[0].minor.yy298.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy298.b = 0;}
152812 break;
152813 case 248: /* trigger_event ::= UPDATE OF idlist */
152814 {yymsp[-2].minor.yy298.a = TK_UPDATE; yymsp[-2].minor.yy298.b = yymsp[0].minor.yy76;}
152815 break;
152816 case 249: /* when_clause ::= */
152817 case 268: /* key_opt ::= */ yytestcase(yyruleno==268);
152818 case 316: /* filter_opt ::= */ yytestcase(yyruleno==316);
152819 { yymsp[1].minor.yy102 = 0; }
152820 break;
152821 case 250: /* when_clause ::= WHEN expr */
152822 case 269: /* key_opt ::= KEY expr */ yytestcase(yyruleno==269);
152823 { yymsp[-1].minor.yy102 = yymsp[0].minor.yy102; }
152824 break;
152825 case 251: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
152826 {
152827 assert( yymsp[-2].minor.yy11!=0 );
152828 yymsp[-2].minor.yy11->pLast->pNext = yymsp[-1].minor.yy11;
152829 yymsp[-2].minor.yy11->pLast = yymsp[-1].minor.yy11;
152830 }
152831 break;
152832 case 252: /* trigger_cmd_list ::= trigger_cmd SEMI */
152833 {
152834 assert( yymsp[-1].minor.yy11!=0 );
152835 yymsp[-1].minor.yy11->pLast = yymsp[-1].minor.yy11;
152836 }
152837 break;
152838 case 253: /* trnm ::= nm DOT nm */
152839 {
152840 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
152841 sqlite3ErrorMsg(pParse,
152842 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
152843 "statements within triggers");
152844 }
152845 break;
152846 case 254: /* tridxby ::= INDEXED BY nm */
152847 {
152848 sqlite3ErrorMsg(pParse,
152849 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
152850 "within triggers");
152851 }
152852 break;
152853 case 255: /* tridxby ::= NOT INDEXED */
152854 {
152855 sqlite3ErrorMsg(pParse,
152856 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
152857 "within triggers");
152858 }
152859 break;
152860 case 256: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
152861 {yylhsminor.yy11 = sqlite3TriggerUpdateStep(pParse, &yymsp[-5].minor.yy0, yymsp[-2].minor.yy94, yymsp[-1].minor.yy102, yymsp[-6].minor.yy100, yymsp[-7].minor.yy0.z, yymsp[0].minor.yy528);}
152862 yymsp[-7].minor.yy11 = yylhsminor.yy11;
152863 break;
152864 case 257: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
152865 {
152866 yylhsminor.yy11 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy76,yymsp[-2].minor.yy391,yymsp[-6].minor.yy100,yymsp[-1].minor.yy95,yymsp[-7].minor.yy528,yymsp[0].minor.yy528);/*yylhsminor.yy11-overwrites-yymsp[-6].minor.yy100*/
152867 }
152868 yymsp[-7].minor.yy11 = yylhsminor.yy11;
152869 break;
152870 case 258: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
152871 {yylhsminor.yy11 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy102, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy528);}
152872 yymsp[-5].minor.yy11 = yylhsminor.yy11;
152873 break;
152874 case 259: /* trigger_cmd ::= scanpt select scanpt */
152875 {yylhsminor.yy11 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy391, yymsp[-2].minor.yy528, yymsp[0].minor.yy528); /*yylhsminor.yy11-overwrites-yymsp[-1].minor.yy391*/}
152876 yymsp[-2].minor.yy11 = yylhsminor.yy11;
152877 break;
152878 case 260: /* expr ::= RAISE LP IGNORE RP */
152879 {
152880 yymsp[-3].minor.yy102 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
152881 if( yymsp[-3].minor.yy102 ){
152882 yymsp[-3].minor.yy102->affinity = OE_Ignore;
152883 }
152884 }
152885 break;
152886 case 261: /* expr ::= RAISE LP raisetype COMMA nm RP */
152887 {
152888 yymsp[-5].minor.yy102 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
152889 if( yymsp[-5].minor.yy102 ) {
152890 yymsp[-5].minor.yy102->affinity = (char)yymsp[-3].minor.yy100;
152891 }
152892 }
152893 break;
152894 case 262: /* raisetype ::= ROLLBACK */
152895 {yymsp[0].minor.yy100 = OE_Rollback;}
152896 break;
152897 case 264: /* raisetype ::= FAIL */
152898 {yymsp[0].minor.yy100 = OE_Fail;}
152899 break;
152900 case 265: /* cmd ::= DROP TRIGGER ifexists fullname */
152901 {
152902 sqlite3DropTrigger(pParse,yymsp[0].minor.yy407,yymsp[-1].minor.yy100);
152903 }
152904 break;
152905 case 266: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
152906 {
152907 sqlite3Attach(pParse, yymsp[-3].minor.yy102, yymsp[-1].minor.yy102, yymsp[0].minor.yy102);
152908 }
152909 break;
152910 case 267: /* cmd ::= DETACH database_kw_opt expr */
152911 {
152912 sqlite3Detach(pParse, yymsp[0].minor.yy102);
152913 }
152914 break;
152915 case 270: /* cmd ::= REINDEX */
152916 {sqlite3Reindex(pParse, 0, 0);}
152917 break;
152918 case 271: /* cmd ::= REINDEX nm dbnm */
152919 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
152920 break;
152921 case 272: /* cmd ::= ANALYZE */
152922 {sqlite3Analyze(pParse, 0, 0);}
152923 break;
152924 case 273: /* cmd ::= ANALYZE nm dbnm */
152925 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
152926 break;
152927 case 274: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
152928 {
152929 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy407,&yymsp[0].minor.yy0);
152930 }
152931 break;
152932 case 275: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
152933 {
152934 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
152935 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
152936 }
152937 break;
152938 case 276: /* add_column_fullname ::= fullname */
152939 {
152940 disableLookaside(pParse);
152941 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy407);
152942 }
152943 break;
152944 case 277: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
152945 {
152946 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy407, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
152947 }
152948 break;
152949 case 278: /* cmd ::= create_vtab */
152950 {sqlite3VtabFinishParse(pParse,0);}
152951 break;
152952 case 279: /* cmd ::= create_vtab LP vtabarglist RP */
152953 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
152954 break;
152955 case 280: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
152956 {
152957 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy100);
152958 }
152959 break;
152960 case 281: /* vtabarg ::= */
152961 {sqlite3VtabArgInit(pParse);}
152962 break;
152963 case 282: /* vtabargtoken ::= ANY */
152964 case 283: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==283);
152965 case 284: /* lp ::= LP */ yytestcase(yyruleno==284);
152966 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
152967 break;
152968 case 285: /* with ::= WITH wqlist */
152969 case 286: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==286);
152970 { sqlite3WithPush(pParse, yymsp[0].minor.yy243, 1); }
152971 break;
152972 case 287: /* wqlist ::= nm eidlist_opt AS LP select RP */
152973 {
152974 yymsp[-5].minor.yy243 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy94, yymsp[-1].minor.yy391); /*A-overwrites-X*/
152975 }
152976 break;
152977 case 288: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
152978 {
152979 yymsp[-7].minor.yy243 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy243, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy94, yymsp[-1].minor.yy391);
152980 }
152981 break;
152982 case 289: /* windowdefn_list ::= windowdefn */
152983 { yylhsminor.yy379 = yymsp[0].minor.yy379; }
152984 yymsp[0].minor.yy379 = yylhsminor.yy379;
152985 break;
152986 case 290: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
152987 {
152988 assert( yymsp[0].minor.yy379!=0 );
152989 sqlite3WindowChain(pParse, yymsp[0].minor.yy379, yymsp[-2].minor.yy379);
152990 yymsp[0].minor.yy379->pNextWin = yymsp[-2].minor.yy379;
152991 yylhsminor.yy379 = yymsp[0].minor.yy379;
152992 }
152993 yymsp[-2].minor.yy379 = yylhsminor.yy379;
152994 break;
152995 case 291: /* windowdefn ::= nm AS LP window RP */
152996 {
152997 if( ALWAYS(yymsp[-1].minor.yy379) ){
152998 yymsp[-1].minor.yy379->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
152999 }
153000 yylhsminor.yy379 = yymsp[-1].minor.yy379;
153001 }
153002 yymsp[-4].minor.yy379 = yylhsminor.yy379;
153003 break;
153004 case 292: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
153005 {
153006 yymsp[-4].minor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, yymsp[-2].minor.yy94, yymsp[-1].minor.yy94, 0);
153007 }
153008 break;
153009 case 293: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
153010 {
153011 yylhsminor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, yymsp[-2].minor.yy94, yymsp[-1].minor.yy94, &yymsp[-5].minor.yy0);
153012 }
153013 yymsp[-5].minor.yy379 = yylhsminor.yy379;
153014 break;
153015 case 294: /* window ::= ORDER BY sortlist frame_opt */
153016 {
153017 yymsp[-3].minor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, 0, yymsp[-1].minor.yy94, 0);
153018 }
153019 break;
153020 case 295: /* window ::= nm ORDER BY sortlist frame_opt */
153021 {
153022 yylhsminor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, 0, yymsp[-1].minor.yy94, &yymsp[-4].minor.yy0);
153023 }
153024 yymsp[-4].minor.yy379 = yylhsminor.yy379;
153025 break;
153026 case 296: /* window ::= frame_opt */
153027 {
153028 yylhsminor.yy379 = yymsp[0].minor.yy379;
153029 }
153030 yymsp[0].minor.yy379 = yylhsminor.yy379;
153031 break;
153032 case 297: /* window ::= nm frame_opt */
153033 {
153034 yylhsminor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, 0, 0, &yymsp[-1].minor.yy0);
153035 }
153036 yymsp[-1].minor.yy379 = yylhsminor.yy379;
153037 break;
153038 case 298: /* frame_opt ::= */
153039 {
153040 yymsp[1].minor.yy379 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
153041 }
153042 break;
153043 case 299: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
153044 {
153045 yylhsminor.yy379 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy100, yymsp[-1].minor.yy389.eType, yymsp[-1].minor.yy389.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy218);
153046 }
153047 yymsp[-2].minor.yy379 = yylhsminor.yy379;
153048 break;
153049 case 300: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
153050 {
153051 yylhsminor.yy379 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy100, yymsp[-3].minor.yy389.eType, yymsp[-3].minor.yy389.pExpr, yymsp[-1].minor.yy389.eType, yymsp[-1].minor.yy389.pExpr, yymsp[0].minor.yy218);
153052 }
153053 yymsp[-5].minor.yy379 = yylhsminor.yy379;
153054 break;
153055 case 302: /* frame_bound_s ::= frame_bound */
153056 case 304: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==304);
153057 {yylhsminor.yy389 = yymsp[0].minor.yy389;}
153058 yymsp[0].minor.yy389 = yylhsminor.yy389;
153059 break;
153060 case 303: /* frame_bound_s ::= UNBOUNDED PRECEDING */
153061 case 305: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==305);
153062 case 307: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==307);
153063 {yylhsminor.yy389.eType = yymsp[-1].major; yylhsminor.yy389.pExpr = 0;}
153064 yymsp[-1].minor.yy389 = yylhsminor.yy389;
153065 break;
153066 case 306: /* frame_bound ::= expr PRECEDING|FOLLOWING */
153067 {yylhsminor.yy389.eType = yymsp[0].major; yylhsminor.yy389.pExpr = yymsp[-1].minor.yy102;}
153068 yymsp[-1].minor.yy389 = yylhsminor.yy389;
153069 break;
153070 case 308: /* frame_exclude_opt ::= */
153071 {yymsp[1].minor.yy218 = 0;}
153072 break;
153073 case 309: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
153074 {yymsp[-1].minor.yy218 = yymsp[0].minor.yy218;}
153075 break;
153076 case 310: /* frame_exclude ::= NO OTHERS */
153077 case 311: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==311);
153078 {yymsp[-1].minor.yy218 = yymsp[-1].major; /*A-overwrites-X*/}
153079 break;
153080 case 312: /* frame_exclude ::= GROUP|TIES */
153081 {yymsp[0].minor.yy218 = yymsp[0].major; /*A-overwrites-X*/}
153082 break;
153083 case 313: /* window_clause ::= WINDOW windowdefn_list */
153084 { yymsp[-1].minor.yy379 = yymsp[0].minor.yy379; }
153085 break;
153086 case 314: /* over_clause ::= filter_opt OVER LP window RP */
153087 {
153088 yylhsminor.yy379 = yymsp[-1].minor.yy379;
153089 assert( yylhsminor.yy379!=0 );
153090 yylhsminor.yy379->pFilter = yymsp[-4].minor.yy102;
153091 }
153092 yymsp[-4].minor.yy379 = yylhsminor.yy379;
153093 break;
153094 case 315: /* over_clause ::= filter_opt OVER nm */
153095 {
153096 yylhsminor.yy379 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
153097 if( yylhsminor.yy379 ){
153098 yylhsminor.yy379->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
153099 yylhsminor.yy379->pFilter = yymsp[-2].minor.yy102;
153100 }else{
153101 sqlite3ExprDelete(pParse->db, yymsp[-2].minor.yy102);
153102 }
153103 }
153104 yymsp[-2].minor.yy379 = yylhsminor.yy379;
153105 break;
153106 case 317: /* filter_opt ::= FILTER LP WHERE expr RP */
153107 { yymsp[-4].minor.yy102 = yymsp[-1].minor.yy102; }
153108 break;
153109 default:
153110 /* (318) input ::= cmdlist */ yytestcase(yyruleno==318);
153111 /* (319) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==319);
153112 /* (320) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=320);
153113 /* (321) ecmd ::= SEMI */ yytestcase(yyruleno==321);
153114 /* (322) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==322);
153115 /* (323) ecmd ::= explain cmdx */ yytestcase(yyruleno==323);
153116 /* (324) trans_opt ::= */ yytestcase(yyruleno==324);
153117 /* (325) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==325);
153118 /* (326) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==326);
153119 /* (327) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==327);
153120 /* (328) savepoint_opt ::= */ yytestcase(yyruleno==328);
153121 /* (329) cmd ::= create_table create_table_args */ yytestcase(yyruleno==329);
153122 /* (330) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==330);
153123 /* (331) columnlist ::= columnname carglist */ yytestcase(yyruleno==331);
153124 /* (332) nm ::= ID|INDEXED */ yytestcase(yyruleno==332);
153125 /* (333) nm ::= STRING */ yytestcase(yyruleno==333);
153126 /* (334) nm ::= JOIN_KW */ yytestcase(yyruleno==334);
153127 /* (335) typetoken ::= typename */ yytestcase(yyruleno==335);
153128 /* (336) typename ::= ID|STRING */ yytestcase(yyruleno==336);
153129 /* (337) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=337);
153130 /* (338) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=338);
153131 /* (339) carglist ::= carglist ccons */ yytestcase(yyruleno==339);
153132 /* (340) carglist ::= */ yytestcase(yyruleno==340);
153133 /* (341) ccons ::= NULL onconf */ yytestcase(yyruleno==341);
153134 /* (342) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==342);
153135 /* (343) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==343);
153136 /* (344) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=344);
153137 /* (345) tconscomma ::= */ yytestcase(yyruleno==345);
153138 /* (346) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=346);
153139 /* (347) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=347);
153140 /* (348) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=348);
153141 /* (349) oneselect ::= values */ yytestcase(yyruleno==349);
153142 /* (350) sclp ::= selcollist COMMA */ yytestcase(yyruleno==350);
153143 /* (351) as ::= ID|STRING */ yytestcase(yyruleno==351);
153144 /* (352) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=352);
153145 /* (353) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==353);
153146 /* (354) exprlist ::= nexprlist */ yytestcase(yyruleno==354);
153147 /* (355) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=355);
153148 /* (356) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=356);
153149 /* (357) nmnum ::= ON */ yytestcase(yyruleno==357);
153150 /* (358) nmnum ::= DELETE */ yytestcase(yyruleno==358);
153151 /* (359) nmnum ::= DEFAULT */ yytestcase(yyruleno==359);
153152 /* (360) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==360);
153153 /* (361) foreach_clause ::= */ yytestcase(yyruleno==361);
153154 /* (362) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==362);
153155 /* (363) trnm ::= nm */ yytestcase(yyruleno==363);
153156 /* (364) tridxby ::= */ yytestcase(yyruleno==364);
153157 /* (365) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==365);
153158 /* (366) database_kw_opt ::= */ yytestcase(yyruleno==366);
153159 /* (367) kwcolumn_opt ::= */ yytestcase(yyruleno==367);
153160 /* (368) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==368);
153161 /* (369) vtabarglist ::= vtabarg */ yytestcase(yyruleno==369);
153162 /* (370) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==370);
153163 /* (371) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==371);
153164 /* (372) anylist ::= */ yytestcase(yyruleno==372);
153165 /* (373) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==373);
153166 /* (374) anylist ::= anylist ANY */ yytestcase(yyruleno==374);
153167 /* (375) with ::= */ yytestcase(yyruleno==375);
153168 break;
153169 /********** End reduce actions ************************************************/
153170 };
153171 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
153172 yygoto = yyRuleInfoLhs[yyruleno];
@@ -173300,18 +173457,18 @@
173457 break;
173458 }
173459
173460 nList -= (int)(p - pList);
173461 pList = p;
173462 if( nList<=0 ){
173463 break;
173464 }
173465 p = &pList[1];
173466 p += fts3GetVarint32(p, &iCurrent);
173467 }
173468
173469 if( bZero && (pEnd - &pList[nList])>0){
173470 memset(&pList[nList], 0, pEnd - &pList[nList]);
173471 }
173472 *ppList = pList;
173473 *pnList = nList;
173474 }
@@ -193872,13 +194029,11 @@
194029 rc = SQLITE_ERROR;
194030 pRbu->zErrmsg = sqlite3_mprintf("rbu/zipvfs setup error");
194031 }else if( rc==SQLITE_NOTFOUND ){
194032 pRbu->pTargetFd = p;
194033 p->pRbu = pRbu;
194034 rbuMainlistAdd(p);
 
 
194035 if( p->pWalFd ) p->pWalFd->pRbu = pRbu;
194036 rc = SQLITE_OK;
194037 }
194038 }
194039 return rc;
@@ -193937,14 +194092,11 @@
194092 ** todo: really, it's not clear why this might occur, as
194093 ** wal_autocheckpoint ought to be turned off. */
194094 if( ofst==WAL_LOCK_CKPT && n==1 ) rc = SQLITE_BUSY;
194095 }else{
194096 int bCapture = 0;
194097 if( pRbu && pRbu->eStage==RBU_STAGE_CAPTURE ){
 
 
 
194098 bCapture = 1;
194099 }
194100
194101 if( bCapture==0 || 0==(flags & SQLITE_SHM_UNLOCK) ){
194102 rc = p->pReal->pMethods->xShmLock(p->pReal, ofst, n, flags);
@@ -193973,24 +194125,28 @@
194125
194126 /* If not in RBU_STAGE_OAL, allow this call to pass through. Or, if this
194127 ** rbu is in the RBU_STAGE_OAL state, use heap memory for *-shm space
194128 ** instead of a file on disk. */
194129 assert( p->openFlags & (SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_TEMP_DB) );
194130 if( eStage==RBU_STAGE_OAL ){
194131 sqlite3_int64 nByte = (iRegion+1) * sizeof(char*);
194132 char **apNew = (char**)sqlite3_realloc64(p->apShm, nByte);
194133
194134 /* This is an RBU connection that uses its own heap memory for the
194135 ** pages of the *-shm file. Since no other process can have run
194136 ** recovery, the connection must request *-shm pages in order
194137 ** from start to finish. */
194138 assert( iRegion==p->nShm );
194139 if( apNew==0 ){
194140 rc = SQLITE_NOMEM;
194141 }else{
194142 memset(&apNew[p->nShm], 0, sizeof(char*) * (1 + iRegion - p->nShm));
194143 p->apShm = apNew;
194144 p->nShm = iRegion+1;
194145 }
194146
194147 if( rc==SQLITE_OK ){
194148 char *pNew = (char*)sqlite3_malloc64(szRegion);
194149 if( pNew==0 ){
194150 rc = SQLITE_NOMEM;
194151 }else{
194152 memset(pNew, 0, szRegion);
@@ -197209,11 +197365,13 @@
197365 }
197366 }
197367 }
197368 sqlite3_free((char*)azCol);
197369 if( bMismatch ){
197370 if( pzErrMsg ){
197371 *pzErrMsg = sqlite3_mprintf("table schemas do not match");
197372 }
197373 rc = SQLITE_SCHEMA;
197374 }
197375 if( bHasPk==0 ){
197376 /* Ignore tables with no primary keys */
197377 goto diff_out;
@@ -197415,11 +197573,11 @@
197573 **
197574 ** If successful, return zero. Otherwise, if an OOM condition is encountered,
197575 ** set *pRc to SQLITE_NOMEM and return non-zero.
197576 */
197577 static int sessionBufferGrow(SessionBuffer *p, size_t nByte, int *pRc){
197578 if( *pRc==SQLITE_OK && (size_t)(p->nAlloc-p->nBuf)<nByte ){
197579 u8 *aNew;
197580 i64 nNew = p->nAlloc ? p->nAlloc : 128;
197581 do {
197582 nNew = nNew*2;
197583 }while( (nNew-p->nBuf)<nByte );
@@ -204848,10 +205006,15 @@
205006 return 0;
205007 }
205008 fts5FastGetVarint32(a, i, iVal);
205009 iOff = ((i64)iVal) << 32;
205010 fts5FastGetVarint32(a, i, iVal);
205011 if( iVal<2 ){
205012 /* This is a corrupt record. So stop parsing it here. */
205013 *piOff = -1;
205014 return 1;
205015 }
205016 }
205017 *piOff = iOff + ((iVal-2) & 0x7FFFFFFF);
205018 *pi = i;
205019 return 0;
205020 }
@@ -214391,12 +214554,18 @@
214554 /* The maximum size of the output is equal to the sum of the two
214555 ** input sizes + 1 varint (9 bytes). The extra varint is because if the
214556 ** first rowid in one input is a large negative number, and the first in
214557 ** the other a non-negative number, the delta for the non-negative
214558 ** number will be larger on disk than the literal integer value
214559 ** was.
214560 **
214561 ** Or, if the input position-lists are corrupt, then the output might
214562 ** include up to 2 extra 10-byte positions created by interpreting -1
214563 ** (the value PoslistNext64() uses for EOF) as a position and appending
214564 ** it to the output. This can happen at most once for each input
214565 ** position-list, hence two 10 byte paddings. */
214566 if( sqlite3Fts5BufferSize(&p->rc, &out, p1->n + p2->n + 9+10+10) ) return;
214567 fts5DoclistIterInit(p1, &i1);
214568 fts5DoclistIterInit(p2, &i2);
214569
214570 while( 1 ){
214571 if( i1.iRowid<i2.iRowid ){
@@ -214403,17 +214572,19 @@
214572 /* Copy entry from i1 */
214573 fts5MergeAppendDocid(&out, iLastRowid, i1.iRowid);
214574 fts5BufferSafeAppendBlob(&out, i1.aPoslist, i1.nPoslist+i1.nSize);
214575 fts5DoclistIterNext(&i1);
214576 if( i1.aPoslist==0 ) break;
214577 assert( out.n<=((i1.aPoslist-p1->p) + (i2.aPoslist-p2->p)+9+10+10) );
214578 }
214579 else if( i2.iRowid!=i1.iRowid ){
214580 /* Copy entry from i2 */
214581 fts5MergeAppendDocid(&out, iLastRowid, i2.iRowid);
214582 fts5BufferSafeAppendBlob(&out, i2.aPoslist, i2.nPoslist+i2.nSize);
214583 fts5DoclistIterNext(&i2);
214584 if( i2.aPoslist==0 ) break;
214585 assert( out.n<=((i1.aPoslist-p1->p) + (i2.aPoslist-p2->p)+9+10+10) );
214586 }
214587 else{
214588 /* Merge the two position lists. */
214589 i64 iPos1 = 0;
214590 i64 iPos2 = 0;
@@ -214433,20 +214604,19 @@
214604 sqlite3Fts5BufferSize(&p->rc, &tmp, i1.nPoslist + i2.nPoslist);
214605 if( p->rc ) break;
214606
214607 sqlite3Fts5PoslistNext64(a1, i1.nPoslist, &iOff1, &iPos1);
214608 sqlite3Fts5PoslistNext64(a2, i2.nPoslist, &iOff2, &iPos2);
214609 assert_nc( iPos1>=0 && iPos2>=0 );
214610
214611 if( iPos1<iPos2 ){
214612 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos1);
214613 sqlite3Fts5PoslistNext64(a1, i1.nPoslist, &iOff1, &iPos1);
214614 }else{
214615 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos2);
214616 sqlite3Fts5PoslistNext64(a2, i2.nPoslist, &iOff2, &iPos2);
214617 }
 
214618 if( iPos1>=0 && iPos2>=0 ){
214619 while( 1 ){
214620 if( iPos1<iPos2 ){
214621 if( iPos1!=iPrev ){
214622 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos1);
@@ -214467,11 +214637,11 @@
214637 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos1);
214638 }
214639 aCopy = &a1[iOff1];
214640 nCopy = i1.nPoslist - iOff1;
214641 }else{
214642 assert_nc( iPos2>=0 && iPos2!=iPrev );
214643 sqlite3Fts5PoslistSafeAppend(&tmp, &iPrev, iPos2);
214644 aCopy = &a2[iOff2];
214645 nCopy = i2.nPoslist - iOff2;
214646 }
214647 if( nCopy>0 ){
@@ -214481,12 +214651,13 @@
214651 /* WRITEPOSLISTSIZE */
214652 fts5BufferSafeAppendVarint(&out, tmp.n * 2);
214653 fts5BufferSafeAppendBlob(&out, tmp.p, tmp.n);
214654 fts5DoclistIterNext(&i1);
214655 fts5DoclistIterNext(&i2);
214656 assert_nc( out.n<=(p1->n+p2->n+9) );
214657 if( i1.aPoslist==0 || i2.aPoslist==0 ) break;
214658 assert( out.n<=((i1.aPoslist-p1->p) + (i2.aPoslist-p2->p)+9+10+10) );
214659 }
214660 }
214661
214662 if( i1.aPoslist ){
214663 fts5MergeAppendDocid(&out, iLastRowid, i1.iRowid);
@@ -214494,11 +214665,11 @@
214665 }
214666 else if( i2.aPoslist ){
214667 fts5MergeAppendDocid(&out, iLastRowid, i2.iRowid);
214668 fts5BufferSafeAppendBlob(&out, i2.aPoslist, i2.aEof - i2.aPoslist);
214669 }
214670 assert_nc( out.n<=(p1->n+p2->n+9) );
214671
214672 fts5BufferSet(&p->rc, p1, out.n, out.p);
214673 fts5BufferFree(&tmp);
214674 fts5BufferFree(&out);
214675 }
@@ -218660,11 +218831,11 @@
218831 int nArg, /* Number of args */
218832 sqlite3_value **apUnused /* Function arguments */
218833 ){
218834 assert( nArg==0 );
218835 UNUSED_PARAM2(nArg, apUnused);
218836 sqlite3_result_text(pCtx, "fts5: 2019-05-23 16:38:12 d2fe370cafa9b11f6c3eb4e1c3be48d9d2610b9d2f9d9ebf9e50267f9079dfc0", -1, SQLITE_TRANSIENT);
218837 }
218838
218839 /*
218840 ** Return true if zName is the extension on one of the shadow tables used
218841 ** by this module.
@@ -222919,12 +223090,14 @@
223090 }
223091 }
223092 }
223093
223094 if( rc==SQLITE_OK && pCsr->bEof==0 && pTab->eType==FTS5_VOCAB_COL ){
223095 for(/* noop */; pCsr->iCol<nCol && pCsr->aDoc[pCsr->iCol]==0; pCsr->iCol++);
223096 if( pCsr->iCol==nCol ){
223097 rc = FTS5_CORRUPT;
223098 }
223099 }
223100 return rc;
223101 }
223102
223103 /*
@@ -223424,12 +223597,12 @@
223597 }
223598 #endif /* SQLITE_CORE */
223599 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
223600
223601 /************** End of stmt.c ************************************************/
223602 #if __LINE__!=223602
223603 #undef SQLITE_SOURCE_ID
223604 #define SQLITE_SOURCE_ID "2019-05-23 16:38:12 d2fe370cafa9b11f6c3eb4e1c3be48d9d2610b9d2f9d9ebf9e50267f9079alt2"
223605 #endif
223606 /* Return the source-id for this library */
223607 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
223608 /************************** End of sqlite3.c ******************************/
223609
+2 -1
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123123
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124124
** [sqlite_version()] and [sqlite_source_id()].
125125
*/
126126
#define SQLITE_VERSION "3.29.0"
127127
#define SQLITE_VERSION_NUMBER 3029000
128
-#define SQLITE_SOURCE_ID "2019-05-10 17:54:58 956ca2a452aa3707bca553007a7ef221af3d4f6b0af747d17070926e000f2362"
128
+#define SQLITE_SOURCE_ID "2019-05-23 16:38:12 d2fe370cafa9b11f6c3eb4e1c3be48d9d2610b9d2f9d9ebf9e50267f9079dfc0"
129129
130130
/*
131131
** CAPI3REF: Run-Time Library Version Numbers
132132
** KEYWORDS: sqlite3_version sqlite3_sourceid
133133
**
@@ -2196,10 +2196,11 @@
21962196
** flag is enabled, language features that allow ordinary SQL to
21972197
** deliberately corrupt the database file are disabled. The disabled
21982198
** features include but are not limited to the following:
21992199
** <ul>
22002200
** <li> The [PRAGMA writable_schema=ON] statement.
2201
+** <li> The [PRAGMA journal_mode=OFF] statement.
22012202
** <li> Writes to the [sqlite_dbpage] virtual table.
22022203
** <li> Direct writes to [shadow tables].
22032204
** </ul>
22042205
** </dd>
22052206
**
22062207
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.29.0"
127 #define SQLITE_VERSION_NUMBER 3029000
128 #define SQLITE_SOURCE_ID "2019-05-10 17:54:58 956ca2a452aa3707bca553007a7ef221af3d4f6b0af747d17070926e000f2362"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
@@ -2196,10 +2196,11 @@
2196 ** flag is enabled, language features that allow ordinary SQL to
2197 ** deliberately corrupt the database file are disabled. The disabled
2198 ** features include but are not limited to the following:
2199 ** <ul>
2200 ** <li> The [PRAGMA writable_schema=ON] statement.
 
2201 ** <li> Writes to the [sqlite_dbpage] virtual table.
2202 ** <li> Direct writes to [shadow tables].
2203 ** </ul>
2204 ** </dd>
2205 **
2206
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.29.0"
127 #define SQLITE_VERSION_NUMBER 3029000
128 #define SQLITE_SOURCE_ID "2019-05-23 16:38:12 d2fe370cafa9b11f6c3eb4e1c3be48d9d2610b9d2f9d9ebf9e50267f9079dfc0"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
@@ -2196,10 +2196,11 @@
2196 ** flag is enabled, language features that allow ordinary SQL to
2197 ** deliberately corrupt the database file are disabled. The disabled
2198 ** features include but are not limited to the following:
2199 ** <ul>
2200 ** <li> The [PRAGMA writable_schema=ON] statement.
2201 ** <li> The [PRAGMA journal_mode=OFF] statement.
2202 ** <li> Writes to the [sqlite_dbpage] virtual table.
2203 ** <li> Direct writes to [shadow tables].
2204 ** </ul>
2205 ** </dd>
2206 **
2207

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button