Fossil SCM

Update the built-in SQLite to the latest 3.38.0 alpha for testing. With this change, SQL now has access to the new -> and ->> operators for JSON.

drh 2022-01-12 00:42 trunk
Commit cae03867de3c44e65e1105404d297c031249a9cf5c86ba5c95319f23d18f8ad6
2 files changed +2849 -2861 +1 -1
+2849 -2861
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -452,11 +452,11 @@
452452
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453453
** [sqlite_version()] and [sqlite_source_id()].
454454
*/
455455
#define SQLITE_VERSION "3.38.0"
456456
#define SQLITE_VERSION_NUMBER 3038000
457
-#define SQLITE_SOURCE_ID "2022-01-06 17:13:56 2d6a16caa7d28ad5c766036b2eb6c2020683fcc9389b3c7df2013739929dd36f"
457
+#define SQLITE_SOURCE_ID "2022-01-12 00:28:12 adebb9d7478d092f16fb0ef7d5246ce152b166479d6f949110b5878b89ea2cec"
458458
459459
/*
460460
** CAPI3REF: Run-Time Library Version Numbers
461461
** KEYWORDS: sqlite3_version sqlite3_sourceid
462462
**
@@ -13593,14 +13593,14 @@
1359313593
#define TK_DETACH 40
1359413594
#define TK_EACH 41
1359513595
#define TK_FAIL 42
1359613596
#define TK_OR 43
1359713597
#define TK_AND 44
13598
-#define TK_MATCH 45
13599
-#define TK_LIKE_KW 46
13600
-#define TK_BETWEEN 47
13601
-#define TK_IS 48
13598
+#define TK_IS 45
13599
+#define TK_MATCH 46
13600
+#define TK_LIKE_KW 47
13601
+#define TK_BETWEEN 48
1360213602
#define TK_IN 49
1360313603
#define TK_ISNULL 50
1360413604
#define TK_NOTNULL 51
1360513605
#define TK_NE 52
1360613606
#define TK_EQ 53
@@ -13660,82 +13660,83 @@
1366013660
#define TK_MINUS 107
1366113661
#define TK_STAR 108
1366213662
#define TK_SLASH 109
1366313663
#define TK_REM 110
1366413664
#define TK_CONCAT 111
13665
-#define TK_COLLATE 112
13666
-#define TK_BITNOT 113
13667
-#define TK_ON 114
13668
-#define TK_INDEXED 115
13669
-#define TK_STRING 116
13670
-#define TK_JOIN_KW 117
13671
-#define TK_CONSTRAINT 118
13672
-#define TK_DEFAULT 119
13673
-#define TK_NULL 120
13674
-#define TK_PRIMARY 121
13675
-#define TK_UNIQUE 122
13676
-#define TK_CHECK 123
13677
-#define TK_REFERENCES 124
13678
-#define TK_AUTOINCR 125
13679
-#define TK_INSERT 126
13680
-#define TK_DELETE 127
13681
-#define TK_UPDATE 128
13682
-#define TK_SET 129
13683
-#define TK_DEFERRABLE 130
13684
-#define TK_FOREIGN 131
13685
-#define TK_DROP 132
13686
-#define TK_UNION 133
13687
-#define TK_ALL 134
13688
-#define TK_EXCEPT 135
13689
-#define TK_INTERSECT 136
13690
-#define TK_SELECT 137
13691
-#define TK_VALUES 138
13692
-#define TK_DISTINCT 139
13693
-#define TK_DOT 140
13694
-#define TK_FROM 141
13695
-#define TK_JOIN 142
13696
-#define TK_USING 143
13697
-#define TK_ORDER 144
13698
-#define TK_GROUP 145
13699
-#define TK_HAVING 146
13700
-#define TK_LIMIT 147
13701
-#define TK_WHERE 148
13702
-#define TK_RETURNING 149
13703
-#define TK_INTO 150
13704
-#define TK_NOTHING 151
13705
-#define TK_FLOAT 152
13706
-#define TK_BLOB 153
13707
-#define TK_INTEGER 154
13708
-#define TK_VARIABLE 155
13709
-#define TK_CASE 156
13710
-#define TK_WHEN 157
13711
-#define TK_THEN 158
13712
-#define TK_ELSE 159
13713
-#define TK_INDEX 160
13714
-#define TK_ALTER 161
13715
-#define TK_ADD 162
13716
-#define TK_WINDOW 163
13717
-#define TK_OVER 164
13718
-#define TK_FILTER 165
13719
-#define TK_COLUMN 166
13720
-#define TK_AGG_FUNCTION 167
13721
-#define TK_AGG_COLUMN 168
13722
-#define TK_TRUEFALSE 169
13723
-#define TK_ISNOT 170
13724
-#define TK_FUNCTION 171
13725
-#define TK_UMINUS 172
13726
-#define TK_UPLUS 173
13727
-#define TK_TRUTH 174
13728
-#define TK_REGISTER 175
13729
-#define TK_VECTOR 176
13730
-#define TK_SELECT_COLUMN 177
13731
-#define TK_IF_NULL_ROW 178
13732
-#define TK_ASTERISK 179
13733
-#define TK_SPAN 180
13734
-#define TK_ERROR 181
13735
-#define TK_SPACE 182
13736
-#define TK_ILLEGAL 183
13665
+#define TK_PTR 112
13666
+#define TK_COLLATE 113
13667
+#define TK_BITNOT 114
13668
+#define TK_ON 115
13669
+#define TK_INDEXED 116
13670
+#define TK_STRING 117
13671
+#define TK_JOIN_KW 118
13672
+#define TK_CONSTRAINT 119
13673
+#define TK_DEFAULT 120
13674
+#define TK_NULL 121
13675
+#define TK_PRIMARY 122
13676
+#define TK_UNIQUE 123
13677
+#define TK_CHECK 124
13678
+#define TK_REFERENCES 125
13679
+#define TK_AUTOINCR 126
13680
+#define TK_INSERT 127
13681
+#define TK_DELETE 128
13682
+#define TK_UPDATE 129
13683
+#define TK_SET 130
13684
+#define TK_DEFERRABLE 131
13685
+#define TK_FOREIGN 132
13686
+#define TK_DROP 133
13687
+#define TK_UNION 134
13688
+#define TK_ALL 135
13689
+#define TK_EXCEPT 136
13690
+#define TK_INTERSECT 137
13691
+#define TK_SELECT 138
13692
+#define TK_VALUES 139
13693
+#define TK_DISTINCT 140
13694
+#define TK_DOT 141
13695
+#define TK_FROM 142
13696
+#define TK_JOIN 143
13697
+#define TK_USING 144
13698
+#define TK_ORDER 145
13699
+#define TK_GROUP 146
13700
+#define TK_HAVING 147
13701
+#define TK_LIMIT 148
13702
+#define TK_WHERE 149
13703
+#define TK_RETURNING 150
13704
+#define TK_INTO 151
13705
+#define TK_NOTHING 152
13706
+#define TK_FLOAT 153
13707
+#define TK_BLOB 154
13708
+#define TK_INTEGER 155
13709
+#define TK_VARIABLE 156
13710
+#define TK_CASE 157
13711
+#define TK_WHEN 158
13712
+#define TK_THEN 159
13713
+#define TK_ELSE 160
13714
+#define TK_INDEX 161
13715
+#define TK_ALTER 162
13716
+#define TK_ADD 163
13717
+#define TK_WINDOW 164
13718
+#define TK_OVER 165
13719
+#define TK_FILTER 166
13720
+#define TK_COLUMN 167
13721
+#define TK_AGG_FUNCTION 168
13722
+#define TK_AGG_COLUMN 169
13723
+#define TK_TRUEFALSE 170
13724
+#define TK_ISNOT 171
13725
+#define TK_FUNCTION 172
13726
+#define TK_UMINUS 173
13727
+#define TK_UPLUS 174
13728
+#define TK_TRUTH 175
13729
+#define TK_REGISTER 176
13730
+#define TK_VECTOR 177
13731
+#define TK_SELECT_COLUMN 178
13732
+#define TK_IF_NULL_ROW 179
13733
+#define TK_ASTERISK 180
13734
+#define TK_SPAN 181
13735
+#define TK_ERROR 182
13736
+#define TK_SPACE 183
13737
+#define TK_ILLEGAL 184
1373713738
1373813739
/************** End of parse.h ***********************************************/
1373913740
/************** Continuing where we left off in sqliteInt.h ******************/
1374013741
#include <stdio.h>
1374113742
#include <stdlib.h>
@@ -15342,15 +15343,15 @@
1534215343
#define OP_Multiply 108 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
1534315344
#define OP_Divide 109 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
1534415345
#define OP_Remainder 110 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
1534515346
#define OP_Concat 111 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
1534615347
#define OP_OpenWrite 112 /* synopsis: root=P2 iDb=P3 */
15347
-#define OP_BitNot 113 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
15348
-#define OP_OpenDup 114
15348
+#define OP_OpenDup 113
15349
+#define OP_BitNot 114 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
1534915350
#define OP_OpenAutoindex 115 /* synopsis: nColumn=P2 */
15350
-#define OP_String8 116 /* same as TK_STRING, synopsis: r[P2]='P4' */
15351
-#define OP_OpenEphemeral 117 /* synopsis: nColumn=P2 */
15351
+#define OP_OpenEphemeral 116 /* synopsis: nColumn=P2 */
15352
+#define OP_String8 117 /* same as TK_STRING, synopsis: r[P2]='P4' */
1535215353
#define OP_SorterOpen 118
1535315354
#define OP_SequenceTest 119 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
1535415355
#define OP_OpenPseudo 120 /* synopsis: P3 columns in r[P2] */
1535515356
#define OP_Close 121
1535615357
#define OP_ColumnsUsed 122
@@ -15381,12 +15382,12 @@
1538115382
#define OP_SqlExec 147
1538215383
#define OP_ParseSchema 148
1538315384
#define OP_LoadAnalysis 149
1538415385
#define OP_DropTable 150
1538515386
#define OP_DropIndex 151
15386
-#define OP_Real 152 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15387
-#define OP_DropTrigger 153
15387
+#define OP_DropTrigger 152
15388
+#define OP_Real 153 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
1538815389
#define OP_IntegrityCk 154
1538915390
#define OP_RowSetAdd 155 /* synopsis: rowset(P1)=r[P2] */
1539015391
#define OP_Param 156
1539115392
#define OP_FkCounter 157 /* synopsis: fkctr[P1]+=P2 */
1539215393
#define OP_MemMax 158 /* synopsis: r[P1]=max(r[P1],r[P2]) */
@@ -15439,16 +15440,16 @@
1543915440
/* 72 */ 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00,\
1544015441
/* 80 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,\
1544115442
/* 88 */ 0x00, 0x00, 0x12, 0x1e, 0x20, 0x00, 0x00, 0x00,\
1544215443
/* 96 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x26, 0x26,\
1544315444
/* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
15444
-/* 112 */ 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\
15445
+/* 112 */ 0x00, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00,\
1544515446
/* 120 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00,\
1544615447
/* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\
1544715448
/* 136 */ 0x00, 0x04, 0x04, 0x00, 0x00, 0x10, 0x00, 0x10,\
1544815449
/* 144 */ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,\
15449
-/* 152 */ 0x10, 0x00, 0x00, 0x06, 0x10, 0x00, 0x04, 0x1a,\
15450
+/* 152 */ 0x00, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x1a,\
1545015451
/* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
1545115452
/* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,\
1545215453
/* 176 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
1545315454
}
1545415455
@@ -16928,11 +16929,11 @@
1692816929
** Used to create an aggregate function definition implemented by
1692916930
** the C functions xStep and xFinal. The first four parameters
1693016931
** are interpreted in the same way as the first 4 parameters to
1693116932
** FUNCTION().
1693216933
**
16933
-** WFUNCTION(zName, nArg, iArg, xStep, xFinal, xValue, xInverse)
16934
+** WAGGREGATE(zName, nArg, iArg, xStep, xFinal, xValue, xInverse)
1693416935
** Used to create an aggregate function definition implemented by
1693516936
** the C functions xStep and xFinal. The first four parameters
1693616937
** are interpreted in the same way as the first 4 parameters to
1693716938
** FUNCTION().
1693816939
**
@@ -16955,10 +16956,14 @@
1695516956
{nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_DIRECTONLY|SQLITE_FUNC_UNSAFE, \
1695616957
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
1695716958
#define MFUNCTION(zName, nArg, xPtr, xFunc) \
1695816959
{nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_CONSTANT|SQLITE_UTF8, \
1695916960
xPtr, 0, xFunc, 0, 0, 0, #zName, {0} }
16961
+#define JFUNCTION(zName, nArg, iArg, xFunc) \
16962
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS|\
16963
+ SQLITE_FUNC_CONSTANT|SQLITE_UTF8, \
16964
+ SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
1696016965
#define INLINE_FUNC(zName, nArg, iArg, mFlags) \
1696116966
{nArg, SQLITE_FUNC_BUILTIN|\
1696216967
SQLITE_UTF8|SQLITE_FUNC_INLINE|SQLITE_FUNC_CONSTANT|(mFlags), \
1696316968
SQLITE_INT_TO_PTR(iArg), 0, noopFunc, 0, 0, 0, #zName, {0} }
1696416969
#define TEST_FUNC(zName, nArg, iArg, mFlags) \
@@ -19679,11 +19684,15 @@
1967919684
SQLITE_PRIVATE void sqlite3InsertBuiltinFuncs(FuncDef*,int);
1968019685
SQLITE_PRIVATE FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,u8,u8);
1968119686
SQLITE_PRIVATE void sqlite3QuoteValue(StrAccum*,sqlite3_value*);
1968219687
SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void);
1968319688
SQLITE_PRIVATE void sqlite3RegisterDateTimeFunctions(void);
19689
+SQLITE_PRIVATE void sqlite3RegisterJsonFunctions(void);
1968419690
SQLITE_PRIVATE void sqlite3RegisterPerConnectionBuiltinFunctions(sqlite3*);
19691
+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_JSON)
19692
+SQLITE_PRIVATE int sqlite3JsonTableFunctions(sqlite3*);
19693
+#endif
1968519694
SQLITE_PRIVATE int sqlite3SafetyCheckOk(sqlite3*);
1968619695
SQLITE_PRIVATE int sqlite3SafetyCheckSickOrOk(sqlite3*);
1968719696
SQLITE_PRIVATE void sqlite3ChangeCookie(Parse*, int);
1968819697
SQLITE_PRIVATE With *sqlite3WithDup(sqlite3 *db, With *p);
1968919698
@@ -20691,10 +20700,13 @@
2069120700
#ifdef SQLITE_DISABLE_FTS4_DEFERRED
2069220701
"DISABLE_FTS4_DEFERRED",
2069320702
#endif
2069420703
#ifdef SQLITE_DISABLE_INTRINSIC
2069520704
"DISABLE_INTRINSIC",
20705
+#endif
20706
+#ifdef SQLITE_DISABLE_JSON
20707
+ "DISABLE_JSON",
2069620708
#endif
2069720709
#ifdef SQLITE_DISABLE_LFS
2069820710
"DISABLE_LFS",
2069920711
#endif
2070020712
#ifdef SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
@@ -20770,13 +20782,10 @@
2077020782
"ENABLE_ICU",
2077120783
#endif
2077220784
#ifdef SQLITE_ENABLE_IOTRACE
2077320785
"ENABLE_IOTRACE",
2077420786
#endif
20775
-#ifdef SQLITE_ENABLE_JSON1
20776
- "ENABLE_JSON1",
20777
-#endif
2077820787
#ifdef SQLITE_ENABLE_LOAD_EXTENSION
2077920788
"ENABLE_LOAD_EXTENSION",
2078020789
#endif
2078120790
#ifdef SQLITE_ENABLE_LOCKING_STYLE
2078220791
"ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
@@ -34265,15 +34274,15 @@
3426534274
/* 108 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
3426634275
/* 109 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
3426734276
/* 110 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
3426834277
/* 111 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
3426934278
/* 112 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
34270
- /* 113 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
34271
- /* 114 */ "OpenDup" OpHelp(""),
34279
+ /* 113 */ "OpenDup" OpHelp(""),
34280
+ /* 114 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
3427234281
/* 115 */ "OpenAutoindex" OpHelp("nColumn=P2"),
34273
- /* 116 */ "String8" OpHelp("r[P2]='P4'"),
34274
- /* 117 */ "OpenEphemeral" OpHelp("nColumn=P2"),
34282
+ /* 116 */ "OpenEphemeral" OpHelp("nColumn=P2"),
34283
+ /* 117 */ "String8" OpHelp("r[P2]='P4'"),
3427534284
/* 118 */ "SorterOpen" OpHelp(""),
3427634285
/* 119 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
3427734286
/* 120 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
3427834287
/* 121 */ "Close" OpHelp(""),
3427934288
/* 122 */ "ColumnsUsed" OpHelp(""),
@@ -34304,12 +34313,12 @@
3430434313
/* 147 */ "SqlExec" OpHelp(""),
3430534314
/* 148 */ "ParseSchema" OpHelp(""),
3430634315
/* 149 */ "LoadAnalysis" OpHelp(""),
3430734316
/* 150 */ "DropTable" OpHelp(""),
3430834317
/* 151 */ "DropIndex" OpHelp(""),
34309
- /* 152 */ "Real" OpHelp("r[P2]=P4"),
34310
- /* 153 */ "DropTrigger" OpHelp(""),
34318
+ /* 152 */ "DropTrigger" OpHelp(""),
34319
+ /* 153 */ "Real" OpHelp("r[P2]=P4"),
3431134320
/* 154 */ "IntegrityCk" OpHelp(""),
3431234321
/* 155 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
3431334322
/* 156 */ "Param" OpHelp(""),
3431434323
/* 157 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
3431534324
/* 158 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
@@ -58435,10 +58444,11 @@
5843558444
Pager *pPager, /* The pager open on the database file */
5843658445
Pgno pgno, /* Page number to fetch */
5843758446
DbPage **ppPage, /* Write a pointer to the page here */
5843858447
int flags /* PAGER_GET_XXX flags */
5843958448
){
58449
+ /* printf("PAGE %u\n", pgno); fflush(stdout); */
5844058450
return pPager->xGet(pPager, pgno, ppPage, flags);
5844158451
}
5844258452
5844358453
/*
5844458454
** Acquire a page if it is already in the in-memory cache. Do
@@ -72528,11 +72538,11 @@
7252872538
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
7252972539
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
7253072540
assert( pPage->nFree>=0 );
7253172541
data = pPage->aData;
7253272542
ptr = &pPage->aCellIdx[2*idx];
72533
- assert( pPage->pBt->usableSize > (int)(ptr-data) );
72543
+ assert( pPage->pBt->usableSize > (u32)(ptr-data) );
7253472544
pc = get2byte(ptr);
7253572545
hdr = pPage->hdrOffset;
7253672546
testcase( pc==(u32)get2byte(&data[hdr+5]) );
7253772547
testcase( pc+sz==pPage->pBt->usableSize );
7253872548
if( pc+sz > pPage->pBt->usableSize ){
@@ -113443,11 +113453,11 @@
113443113453
Returning *pReturning = pParse->u1.pReturning;
113444113454
int addrRewind;
113445113455
int i;
113446113456
int reg;
113447113457
113448
- if( pReturning->nRetCol==0 ){
113458
+ if( NEVER(pReturning->nRetCol==0) ){
113449113459
assert( CORRUPT_DB );
113450113460
}else{
113451113461
sqlite3VdbeAddOp0(v, OP_FkCheck);
113452113462
addrRewind =
113453113463
sqlite3VdbeAddOp1(v, OP_Rewind, pReturning->iRetCur);
@@ -113539,11 +113549,11 @@
113539113549
}
113540113550
}
113541113551
113542113552
if( pParse->bReturning ){
113543113553
Returning *pRet = pParse->u1.pReturning;
113544
- if( pRet->nRetCol==0 ){
113554
+ if( NEVER(pRet->nRetCol==0) ){
113545113555
assert( CORRUPT_DB );
113546113556
}else{
113547113557
sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol);
113548113558
}
113549113559
}
@@ -119261,11 +119271,10 @@
119261119271
for(i=0; i<nDef; i++){
119262119272
FuncDef *pOther;
119263119273
const char *zName = aDef[i].zName;
119264119274
int nName = sqlite3Strlen30(zName);
119265119275
int h = SQLITE_FUNC_HASH(zName[0], nName);
119266
- assert( zName[0]>='a' && zName[0]<='z' );
119267119276
assert( aDef[i].funcFlags & SQLITE_FUNC_BUILTIN );
119268119277
pOther = sqlite3FunctionSearch(h, zName);
119269119278
if( pOther ){
119270119279
assert( pOther!=&aDef[i] && pOther->pNext!=&aDef[i] );
119271119280
aDef[i].pNext = pOther->pNext;
@@ -120524,10 +120533,21 @@
120524120533
** V. The returned value is one of SQLITE_INTEGER, SQLITE_FLOAT,
120525120534
** SQLITE_TEXT, SQLITE_BLOB, or SQLITE_NULL. */
120526120535
sqlite3_result_text(context, azType[i], -1, SQLITE_STATIC);
120527120536
}
120528120537
120538
+/* subtype(X)
120539
+**
120540
+** Return the subtype of X
120541
+*/
120542
+static void subtypeFunc(
120543
+ sqlite3_context *context,
120544
+ int argc,
120545
+ sqlite3_value **argv
120546
+){
120547
+ sqlite3_result_int(context, sqlite3_value_subtype(argv[0]));
120548
+}
120529120549
120530120550
/*
120531120551
** Implementation of the length() function
120532120552
*/
120533120553
static void lengthFunc(
@@ -120685,11 +120705,11 @@
120685120705
sqlite3_result_error_nomem(context);
120686120706
goto endInstr;
120687120707
}
120688120708
120689120709
/*
120690
-** Implementation of the printf() function.
120710
+** Implementation of the printf() (a.k.a. format()) SQL function.
120691120711
*/
120692120712
static void printfFunc(
120693120713
sqlite3_context *context,
120694120714
int argc,
120695120715
sqlite3_value **argv
@@ -122673,13 +122693,15 @@
122673122693
FUNCTION(max, -1, 1, 1, minmaxFunc ),
122674122694
FUNCTION(max, 0, 1, 1, 0 ),
122675122695
WAGGREGATE(max, 1, 1, 1, minmaxStep, minMaxFinalize, minMaxValue, 0,
122676122696
SQLITE_FUNC_MINMAX|SQLITE_FUNC_ANYORDER ),
122677122697
FUNCTION2(typeof, 1, 0, 0, typeofFunc, SQLITE_FUNC_TYPEOF),
122698
+ FUNCTION2(subtype, 1, 0, 0, subtypeFunc, SQLITE_FUNC_TYPEOF),
122678122699
FUNCTION2(length, 1, 0, 0, lengthFunc, SQLITE_FUNC_LENGTH),
122679122700
FUNCTION(instr, 2, 0, 0, instrFunc ),
122680122701
FUNCTION(printf, -1, 0, 0, printfFunc ),
122702
+ FUNCTION(format, -1, 0, 0, printfFunc ),
122681122703
FUNCTION(unicode, 1, 0, 0, unicodeFunc ),
122682122704
FUNCTION(char, -1, 0, 0, charFunc ),
122683122705
FUNCTION(abs, 1, 0, 0, absFunc ),
122684122706
#ifndef SQLITE_OMIT_FLOATING_POINT
122685122707
FUNCTION(round, 1, 0, 0, roundFunc ),
@@ -122774,10 +122796,11 @@
122774122796
#ifndef SQLITE_OMIT_ALTERTABLE
122775122797
sqlite3AlterFunctions();
122776122798
#endif
122777122799
sqlite3WindowFunctions();
122778122800
sqlite3RegisterDateTimeFunctions();
122801
+ sqlite3RegisterJsonFunctions();
122779122802
sqlite3InsertBuiltinFuncs(aBuiltinFunc, ArraySize(aBuiltinFunc));
122780122803
122781122804
#if 0 /* Enable to print out how the built-in functions are hashed */
122782122805
{
122783122806
int i;
@@ -160516,14 +160539,14 @@
160516160539
#define TK_DETACH 40
160517160540
#define TK_EACH 41
160518160541
#define TK_FAIL 42
160519160542
#define TK_OR 43
160520160543
#define TK_AND 44
160521
-#define TK_MATCH 45
160522
-#define TK_LIKE_KW 46
160523
-#define TK_BETWEEN 47
160524
-#define TK_IS 48
160544
+#define TK_IS 45
160545
+#define TK_MATCH 46
160546
+#define TK_LIKE_KW 47
160547
+#define TK_BETWEEN 48
160525160548
#define TK_IN 49
160526160549
#define TK_ISNULL 50
160527160550
#define TK_NOTNULL 51
160528160551
#define TK_NE 52
160529160552
#define TK_EQ 53
@@ -160583,82 +160606,83 @@
160583160606
#define TK_MINUS 107
160584160607
#define TK_STAR 108
160585160608
#define TK_SLASH 109
160586160609
#define TK_REM 110
160587160610
#define TK_CONCAT 111
160588
-#define TK_COLLATE 112
160589
-#define TK_BITNOT 113
160590
-#define TK_ON 114
160591
-#define TK_INDEXED 115
160592
-#define TK_STRING 116
160593
-#define TK_JOIN_KW 117
160594
-#define TK_CONSTRAINT 118
160595
-#define TK_DEFAULT 119
160596
-#define TK_NULL 120
160597
-#define TK_PRIMARY 121
160598
-#define TK_UNIQUE 122
160599
-#define TK_CHECK 123
160600
-#define TK_REFERENCES 124
160601
-#define TK_AUTOINCR 125
160602
-#define TK_INSERT 126
160603
-#define TK_DELETE 127
160604
-#define TK_UPDATE 128
160605
-#define TK_SET 129
160606
-#define TK_DEFERRABLE 130
160607
-#define TK_FOREIGN 131
160608
-#define TK_DROP 132
160609
-#define TK_UNION 133
160610
-#define TK_ALL 134
160611
-#define TK_EXCEPT 135
160612
-#define TK_INTERSECT 136
160613
-#define TK_SELECT 137
160614
-#define TK_VALUES 138
160615
-#define TK_DISTINCT 139
160616
-#define TK_DOT 140
160617
-#define TK_FROM 141
160618
-#define TK_JOIN 142
160619
-#define TK_USING 143
160620
-#define TK_ORDER 144
160621
-#define TK_GROUP 145
160622
-#define TK_HAVING 146
160623
-#define TK_LIMIT 147
160624
-#define TK_WHERE 148
160625
-#define TK_RETURNING 149
160626
-#define TK_INTO 150
160627
-#define TK_NOTHING 151
160628
-#define TK_FLOAT 152
160629
-#define TK_BLOB 153
160630
-#define TK_INTEGER 154
160631
-#define TK_VARIABLE 155
160632
-#define TK_CASE 156
160633
-#define TK_WHEN 157
160634
-#define TK_THEN 158
160635
-#define TK_ELSE 159
160636
-#define TK_INDEX 160
160637
-#define TK_ALTER 161
160638
-#define TK_ADD 162
160639
-#define TK_WINDOW 163
160640
-#define TK_OVER 164
160641
-#define TK_FILTER 165
160642
-#define TK_COLUMN 166
160643
-#define TK_AGG_FUNCTION 167
160644
-#define TK_AGG_COLUMN 168
160645
-#define TK_TRUEFALSE 169
160646
-#define TK_ISNOT 170
160647
-#define TK_FUNCTION 171
160648
-#define TK_UMINUS 172
160649
-#define TK_UPLUS 173
160650
-#define TK_TRUTH 174
160651
-#define TK_REGISTER 175
160652
-#define TK_VECTOR 176
160653
-#define TK_SELECT_COLUMN 177
160654
-#define TK_IF_NULL_ROW 178
160655
-#define TK_ASTERISK 179
160656
-#define TK_SPAN 180
160657
-#define TK_ERROR 181
160658
-#define TK_SPACE 182
160659
-#define TK_ILLEGAL 183
160611
+#define TK_PTR 112
160612
+#define TK_COLLATE 113
160613
+#define TK_BITNOT 114
160614
+#define TK_ON 115
160615
+#define TK_INDEXED 116
160616
+#define TK_STRING 117
160617
+#define TK_JOIN_KW 118
160618
+#define TK_CONSTRAINT 119
160619
+#define TK_DEFAULT 120
160620
+#define TK_NULL 121
160621
+#define TK_PRIMARY 122
160622
+#define TK_UNIQUE 123
160623
+#define TK_CHECK 124
160624
+#define TK_REFERENCES 125
160625
+#define TK_AUTOINCR 126
160626
+#define TK_INSERT 127
160627
+#define TK_DELETE 128
160628
+#define TK_UPDATE 129
160629
+#define TK_SET 130
160630
+#define TK_DEFERRABLE 131
160631
+#define TK_FOREIGN 132
160632
+#define TK_DROP 133
160633
+#define TK_UNION 134
160634
+#define TK_ALL 135
160635
+#define TK_EXCEPT 136
160636
+#define TK_INTERSECT 137
160637
+#define TK_SELECT 138
160638
+#define TK_VALUES 139
160639
+#define TK_DISTINCT 140
160640
+#define TK_DOT 141
160641
+#define TK_FROM 142
160642
+#define TK_JOIN 143
160643
+#define TK_USING 144
160644
+#define TK_ORDER 145
160645
+#define TK_GROUP 146
160646
+#define TK_HAVING 147
160647
+#define TK_LIMIT 148
160648
+#define TK_WHERE 149
160649
+#define TK_RETURNING 150
160650
+#define TK_INTO 151
160651
+#define TK_NOTHING 152
160652
+#define TK_FLOAT 153
160653
+#define TK_BLOB 154
160654
+#define TK_INTEGER 155
160655
+#define TK_VARIABLE 156
160656
+#define TK_CASE 157
160657
+#define TK_WHEN 158
160658
+#define TK_THEN 159
160659
+#define TK_ELSE 160
160660
+#define TK_INDEX 161
160661
+#define TK_ALTER 162
160662
+#define TK_ADD 163
160663
+#define TK_WINDOW 164
160664
+#define TK_OVER 165
160665
+#define TK_FILTER 166
160666
+#define TK_COLUMN 167
160667
+#define TK_AGG_FUNCTION 168
160668
+#define TK_AGG_COLUMN 169
160669
+#define TK_TRUEFALSE 170
160670
+#define TK_ISNOT 171
160671
+#define TK_FUNCTION 172
160672
+#define TK_UMINUS 173
160673
+#define TK_UPLUS 174
160674
+#define TK_TRUTH 175
160675
+#define TK_REGISTER 176
160676
+#define TK_VECTOR 177
160677
+#define TK_SELECT_COLUMN 178
160678
+#define TK_IF_NULL_ROW 179
160679
+#define TK_ASTERISK 180
160680
+#define TK_SPAN 181
160681
+#define TK_ERROR 182
160682
+#define TK_SPACE 183
160683
+#define TK_ILLEGAL 184
160660160684
#endif
160661160685
/**************** End token definitions ***************************************/
160662160686
160663160687
/* The next sections is a series of control #defines.
160664160688
** various aspects of the generated parser.
@@ -160714,34 +160738,34 @@
160714160738
#ifndef INTERFACE
160715160739
# define INTERFACE 1
160716160740
#endif
160717160741
/************* Begin control #defines *****************************************/
160718160742
#define YYCODETYPE unsigned short int
160719
-#define YYNOCODE 318
160743
+#define YYNOCODE 319
160720160744
#define YYACTIONTYPE unsigned short int
160721160745
#define YYWILDCARD 101
160722160746
#define sqlite3ParserTOKENTYPE Token
160723160747
typedef union {
160724160748
int yyinit;
160725160749
sqlite3ParserTOKENTYPE yy0;
160726
- With* yy43;
160727
- u32 yy51;
160728
- int yy64;
160729
- struct FrameBound yy81;
160730
- struct {int value; int mask;} yy83;
160731
- TriggerStep* yy95;
160732
- Upsert* yy138;
160733
- IdList* yy240;
160734
- Cte* yy255;
160735
- Select* yy303;
160736
- Window* yy375;
160737
- u8 yy534;
160738
- ExprList* yy562;
160739
- struct TrigEvent yy570;
160740
- const char* yy600;
160741
- SrcList* yy607;
160742
- Expr* yy626;
160750
+ TriggerStep* yy33;
160751
+ Window* yy41;
160752
+ Select* yy47;
160753
+ SrcList* yy131;
160754
+ struct TrigEvent yy180;
160755
+ struct {int value; int mask;} yy231;
160756
+ IdList* yy254;
160757
+ u32 yy285;
160758
+ ExprList* yy322;
160759
+ Cte* yy385;
160760
+ int yy394;
160761
+ Upsert* yy444;
160762
+ u8 yy516;
160763
+ With* yy521;
160764
+ const char* yy522;
160765
+ Expr* yy528;
160766
+ struct FrameBound yy595;
160743160767
} YYMINORTYPE;
160744160768
#ifndef YYSTACKDEPTH
160745160769
#define YYSTACKDEPTH 100
160746160770
#endif
160747160771
#define sqlite3ParserARG_SDECL
@@ -160753,22 +160777,22 @@
160753160777
#define sqlite3ParserCTX_PDECL ,Parse *pParse
160754160778
#define sqlite3ParserCTX_PARAM ,pParse
160755160779
#define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
160756160780
#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
160757160781
#define YYFALLBACK 1
160758
-#define YYNSTATE 572
160759
-#define YYNRULE 401
160760
-#define YYNRULE_WITH_ACTION 339
160761
-#define YYNTOKEN 184
160762
-#define YY_MAX_SHIFT 571
160763
-#define YY_MIN_SHIFTREDUCE 829
160764
-#define YY_MAX_SHIFTREDUCE 1229
160765
-#define YY_ERROR_ACTION 1230
160766
-#define YY_ACCEPT_ACTION 1231
160767
-#define YY_NO_ACTION 1232
160768
-#define YY_MIN_REDUCE 1233
160769
-#define YY_MAX_REDUCE 1633
160782
+#define YYNSTATE 574
160783
+#define YYNRULE 402
160784
+#define YYNRULE_WITH_ACTION 340
160785
+#define YYNTOKEN 185
160786
+#define YY_MAX_SHIFT 573
160787
+#define YY_MIN_SHIFTREDUCE 831
160788
+#define YY_MAX_SHIFTREDUCE 1232
160789
+#define YY_ERROR_ACTION 1233
160790
+#define YY_ACCEPT_ACTION 1234
160791
+#define YY_NO_ACTION 1235
160792
+#define YY_MIN_REDUCE 1236
160793
+#define YY_MAX_REDUCE 1637
160770160794
/************* End control #defines *******************************************/
160771160795
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
160772160796
160773160797
/* Define the yytestcase() macro to be a no-op if is not already defined
160774160798
** otherwise.
@@ -160831,607 +160855,616 @@
160831160855
** yy_reduce_ofst[] For each state, the offset into yy_action for
160832160856
** shifting non-terminals after a reduce.
160833160857
** yy_default[] Default action for each state.
160834160858
**
160835160859
*********** Begin parsing tables **********************************************/
160836
-#define YY_ACTTAB_COUNT (2022)
160860
+#define YY_ACTTAB_COUNT (2070)
160837160861
static const YYACTIONTYPE yy_action[] = {
160838
- /* 0 */ 564, 115, 112, 220, 169, 199, 115, 112, 220, 564,
160839
- /* 10 */ 375, 1266, 564, 376, 564, 270, 1309, 1309, 406, 407,
160840
- /* 20 */ 1084, 199, 1513, 41, 41, 515, 489, 521, 558, 558,
160841
- /* 30 */ 558, 965, 41, 41, 395, 41, 41, 51, 51, 966,
160842
- /* 40 */ 296, 1269, 296, 122, 123, 1207, 1207, 1041, 113, 1044,
160843
- /* 50 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 564, 407,
160844
- /* 60 */ 275, 275, 275, 275, 1268, 115, 112, 220, 115, 112,
160845
- /* 70 */ 220, 1512, 846, 561, 516, 561, 115, 112, 220, 250,
160846
- /* 80 */ 217, 71, 71, 122, 123, 1207, 1207, 1041, 113, 1044,
160847
- /* 90 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 440, 440,
160848
- /* 100 */ 440, 1149, 119, 119, 119, 119, 118, 118, 117, 117,
160849
- /* 110 */ 117, 116, 442, 1183, 1149, 116, 442, 1149, 546, 513,
160850
- /* 120 */ 1548, 1554, 374, 213, 6, 169, 1154, 522, 1154, 407,
160851
- /* 130 */ 1556, 461, 373, 1554, 535, 99, 463, 332, 121, 121,
160852
- /* 140 */ 121, 121, 119, 119, 119, 119, 118, 118, 117, 117,
160853
- /* 150 */ 117, 116, 442, 122, 123, 1207, 1207, 1041, 113, 1044,
160854
- /* 160 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 1257, 1183,
160855
- /* 170 */ 1184, 1185, 243, 1064, 564, 502, 499, 498, 567, 124,
160856
- /* 180 */ 567, 1128, 1627, 344, 1627, 497, 119, 119, 119, 119,
160857
- /* 190 */ 118, 118, 117, 117, 117, 116, 442, 70, 70, 407,
160858
- /* 200 */ 121, 121, 121, 121, 114, 117, 117, 117, 116, 442,
160859
- /* 210 */ 474, 1469, 119, 119, 119, 119, 118, 118, 117, 117,
160860
- /* 220 */ 117, 116, 442, 122, 123, 1207, 1207, 1041, 113, 1044,
160861
- /* 230 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 407, 208,
160862
- /* 240 */ 539, 1548, 1424, 81, 339, 6, 342, 80, 119, 119,
160863
- /* 250 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 381,
160864
- /* 260 */ 1126, 442, 122, 123, 1207, 1207, 1041, 113, 1044, 1034,
160865
- /* 270 */ 1034, 120, 120, 121, 121, 121, 121, 262, 463, 332,
160866
- /* 280 */ 359, 1567, 119, 119, 119, 119, 118, 118, 117, 117,
160867
- /* 290 */ 117, 116, 442, 1231, 1, 1, 571, 2, 1235, 1573,
160868
- /* 300 */ 571, 2, 1235, 307, 1149, 141, 417, 307, 407, 141,
160869
- /* 310 */ 1183, 98, 1317, 489, 866, 531, 1317, 1149, 215, 512,
160870
- /* 320 */ 1149, 119, 119, 119, 119, 118, 118, 117, 117, 117,
160871
- /* 330 */ 116, 442, 122, 123, 1207, 1207, 1041, 113, 1044, 1034,
160872
- /* 340 */ 1034, 120, 120, 121, 121, 121, 121, 275, 275, 1001,
160873
- /* 350 */ 1257, 275, 275, 1128, 1628, 1021, 1628, 137, 415, 1600,
160874
- /* 360 */ 561, 272, 1255, 950, 561, 1423, 1183, 1184, 1185, 1594,
160875
- /* 370 */ 866, 1012, 530, 315, 231, 1011, 317, 1276, 231, 119,
160876
- /* 380 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
160877
- /* 390 */ 1570, 119, 119, 119, 119, 118, 118, 117, 117, 117,
160878
- /* 400 */ 116, 442, 330, 359, 1567, 564, 446, 1011, 1011, 1013,
160879
- /* 410 */ 446, 877, 564, 306, 555, 407, 447, 1021, 563, 346,
160880
- /* 420 */ 184, 118, 118, 117, 117, 117, 116, 442, 71, 71,
160881
- /* 430 */ 439, 438, 1126, 1012, 472, 71, 71, 1011, 205, 122,
160882
- /* 440 */ 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120,
160883
- /* 450 */ 121, 121, 121, 121, 1304, 219, 1283, 1183, 407, 570,
160884
- /* 460 */ 1183, 1235, 503, 1477, 1304, 546, 307, 489, 141, 1011,
160885
- /* 470 */ 1011, 1013, 546, 140, 545, 1317, 1214, 382, 1214, 378,
160886
- /* 480 */ 950, 514, 122, 123, 1207, 1207, 1041, 113, 1044, 1034,
160887
- /* 490 */ 1034, 120, 120, 121, 121, 121, 121, 472, 119, 119,
160888
- /* 500 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 283,
160889
- /* 510 */ 275, 275, 1476, 1183, 1184, 1185, 1183, 1184, 1185, 417,
160890
- /* 520 */ 1183, 243, 541, 561, 502, 499, 498, 1001, 407, 478,
160891
- /* 530 */ 1183, 472, 870, 143, 497, 1549, 185, 231, 9, 6,
160892
- /* 540 */ 253, 119, 119, 119, 119, 118, 118, 117, 117, 117,
160893
- /* 550 */ 116, 442, 122, 123, 1207, 1207, 1041, 113, 1044, 1034,
160894
- /* 560 */ 1034, 120, 120, 121, 121, 121, 121, 407, 372, 446,
160895
- /* 570 */ 363, 863, 288, 1183, 397, 1204, 1183, 1184, 1185, 931,
160896
- /* 580 */ 330, 458, 318, 526, 564, 541, 1183, 1184, 1185, 284,
160897
- /* 590 */ 1183, 122, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034,
160898
- /* 600 */ 120, 120, 121, 121, 121, 121, 291, 71, 71, 275,
160899
- /* 610 */ 275, 119, 119, 119, 119, 118, 118, 117, 117, 117,
160900
- /* 620 */ 116, 442, 561, 1031, 1031, 1042, 1183, 1045, 287, 1183,
160901
- /* 630 */ 1184, 1185, 1204, 137, 218, 542, 1541, 407, 363, 470,
160902
- /* 640 */ 431, 1167, 32, 363, 527, 350, 1183, 1184, 1185, 380,
160903
- /* 650 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
160904
- /* 660 */ 442, 122, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034,
160905
- /* 670 */ 120, 120, 121, 121, 121, 121, 407, 392, 1227, 1183,
160906
- /* 680 */ 1022, 1540, 1183, 1184, 1185, 1523, 149, 1307, 1307, 306,
160907
- /* 690 */ 555, 151, 1546, 361, 5, 564, 6, 3, 1035, 1542,
160908
- /* 700 */ 122, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120,
160909
- /* 710 */ 120, 121, 121, 121, 121, 411, 505, 83, 71, 71,
160910
- /* 720 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
160911
- /* 730 */ 442, 1183, 426, 428, 1183, 1183, 1184, 1185, 191, 261,
160912
- /* 740 */ 278, 358, 508, 353, 507, 248, 407, 455, 137, 1539,
160913
- /* 750 */ 1006, 349, 363, 472, 1539, 302, 1228, 405, 281, 119,
160914
- /* 760 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
160915
- /* 770 */ 122, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120,
160916
- /* 780 */ 120, 121, 121, 121, 121, 407, 452, 1183, 1184, 1185,
160917
- /* 790 */ 1183, 1184, 1185, 275, 275, 269, 269, 489, 483, 1525,
160918
- /* 800 */ 148, 363, 480, 564, 306, 555, 561, 489, 561, 122,
160919
- /* 810 */ 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120,
160920
- /* 820 */ 121, 121, 121, 121, 564, 886, 13, 13, 293, 119,
160921
- /* 830 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
160922
- /* 840 */ 1183, 420, 1316, 564, 98, 417, 199, 13, 13, 150,
160923
- /* 850 */ 306, 555, 1312, 322, 386, 407, 506, 478, 562, 400,
160924
- /* 860 */ 920, 920, 425, 1539, 887, 292, 71, 71, 119, 119,
160925
- /* 870 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 122,
160926
- /* 880 */ 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120,
160927
- /* 890 */ 121, 121, 121, 121, 564, 1149, 1183, 1184, 1185, 407,
160928
- /* 900 */ 275, 275, 451, 303, 1089, 1089, 486, 448, 1149, 276,
160929
- /* 910 */ 276, 1149, 1539, 561, 319, 286, 321, 71, 71, 429,
160930
- /* 920 */ 451, 450, 561, 952, 101, 1207, 1207, 1041, 113, 1044,
160931
- /* 930 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 119, 119,
160932
- /* 940 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 1105,
160933
- /* 950 */ 1183, 1547, 564, 12, 437, 6, 329, 564, 834, 835,
160934
- /* 960 */ 836, 1629, 393, 547, 1106, 246, 245, 244, 1545, 1258,
160935
- /* 970 */ 413, 1521, 6, 1086, 310, 71, 71, 1086, 564, 1107,
160936
- /* 980 */ 13, 13, 119, 119, 119, 119, 118, 118, 117, 117,
160937
- /* 990 */ 117, 116, 442, 451, 104, 427, 537, 320, 275, 275,
160938
- /* 1000 */ 906, 13, 13, 520, 1482, 1105, 1183, 1184, 1185, 484,
160939
- /* 1010 */ 907, 561, 546, 564, 407, 536, 295, 478, 253, 200,
160940
- /* 1020 */ 1106, 548, 1482, 1484, 1160, 1409, 16, 16, 126, 557,
160941
- /* 1030 */ 413, 479, 311, 951, 407, 1107, 71, 71, 122, 123,
160942
- /* 1040 */ 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120, 121,
160943
- /* 1050 */ 121, 121, 121, 1204, 407, 544, 552, 314, 122, 123,
160944
- /* 1060 */ 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120, 121,
160945
- /* 1070 */ 121, 121, 121, 441, 144, 1160, 468, 146, 122, 111,
160946
- /* 1080 */ 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120, 121,
160947
- /* 1090 */ 121, 121, 121, 247, 12, 1482, 422, 119, 119, 119,
160948
- /* 1100 */ 119, 118, 118, 117, 117, 117, 116, 442, 1183, 564,
160949
- /* 1110 */ 1204, 207, 404, 403, 858, 950, 294, 119, 119, 119,
160950
- /* 1120 */ 119, 118, 118, 117, 117, 117, 116, 442, 564, 30,
160951
- /* 1130 */ 564, 1409, 55, 55, 1599, 564, 895, 119, 119, 119,
160952
- /* 1140 */ 119, 118, 118, 117, 117, 117, 116, 442, 510, 1409,
160953
- /* 1150 */ 1409, 56, 56, 15, 15, 439, 438, 407, 13, 13,
160954
- /* 1160 */ 31, 1187, 412, 1211, 1183, 1184, 1185, 196, 1213, 306,
160955
- /* 1170 */ 555, 858, 462, 193, 926, 564, 1212, 489, 361, 925,
160956
- /* 1180 */ 1183, 564, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034,
160957
- /* 1190 */ 120, 120, 121, 121, 121, 121, 1544, 1149, 43, 43,
160958
- /* 1200 */ 6, 1214, 423, 1214, 13, 13, 564, 219, 538, 494,
160959
- /* 1210 */ 1149, 108, 556, 1149, 4, 392, 1127, 434, 1187, 194,
160960
- /* 1220 */ 424, 485, 337, 1315, 414, 171, 1253, 1321, 559, 57,
160961
- /* 1230 */ 57, 564, 950, 564, 224, 247, 1183, 1184, 1185, 561,
160962
- /* 1240 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
160963
- /* 1250 */ 442, 443, 564, 517, 13, 13, 44, 44, 275, 275,
160964
- /* 1260 */ 1409, 275, 275, 553, 1353, 529, 213, 549, 456, 543,
160965
- /* 1270 */ 465, 561, 564, 137, 561, 58, 58, 469, 405, 1222,
160966
- /* 1280 */ 405, 274, 217, 108, 556, 110, 4, 405, 275, 275,
160967
- /* 1290 */ 564, 1352, 1021, 564, 1228, 59, 59, 523, 106, 106,
160968
- /* 1300 */ 559, 561, 275, 275, 412, 107, 457, 443, 566, 565,
160969
- /* 1310 */ 564, 8, 1011, 60, 60, 561, 61, 61, 564, 965,
160970
- /* 1320 */ 349, 926, 305, 443, 84, 204, 925, 966, 564, 306,
160971
- /* 1330 */ 555, 435, 405, 62, 62, 553, 476, 105, 564, 103,
160972
- /* 1340 */ 464, 45, 45, 1203, 1011, 1011, 1013, 1014, 27, 533,
160973
- /* 1350 */ 564, 46, 46, 453, 532, 1572, 1171, 445, 1528, 564,
160974
- /* 1360 */ 279, 47, 47, 327, 1021, 390, 390, 389, 264, 387,
160975
- /* 1370 */ 106, 106, 843, 49, 49, 108, 556, 107, 4, 443,
160976
- /* 1380 */ 566, 565, 50, 50, 1011, 225, 564, 313, 564, 96,
160977
- /* 1390 */ 564, 228, 559, 524, 147, 312, 38, 1123, 564, 394,
160978
- /* 1400 */ 466, 328, 280, 98, 544, 564, 17, 564, 323, 63,
160979
- /* 1410 */ 63, 64, 64, 65, 65, 443, 1011, 1011, 1013, 1014,
160980
- /* 1420 */ 27, 14, 14, 289, 564, 227, 564, 553, 66, 66,
160981
- /* 1430 */ 128, 128, 477, 162, 564, 309, 135, 564, 1003, 277,
160982
- /* 1440 */ 252, 533, 564, 1501, 564, 418, 534, 67, 67, 52,
160983
- /* 1450 */ 52, 564, 1287, 226, 564, 1500, 1021, 68, 68, 208,
160984
- /* 1460 */ 69, 69, 106, 106, 1286, 53, 53, 157, 157, 107,
160985
- /* 1470 */ 873, 443, 566, 565, 158, 158, 1011, 76, 76, 564,
160986
- /* 1480 */ 357, 564, 108, 556, 471, 4, 252, 408, 885, 884,
160987
- /* 1490 */ 356, 564, 306, 555, 564, 473, 564, 252, 481, 559,
160988
- /* 1500 */ 564, 334, 54, 54, 72, 72, 564, 230, 1011, 1011,
160989
- /* 1510 */ 1013, 1014, 27, 564, 129, 129, 449, 73, 73, 130,
160990
- /* 1520 */ 130, 564, 443, 131, 131, 519, 564, 873, 564, 127,
160991
- /* 1530 */ 127, 333, 1071, 98, 553, 1349, 156, 156, 564, 495,
160992
- /* 1540 */ 347, 249, 98, 338, 155, 155, 892, 893, 533, 136,
160993
- /* 1550 */ 136, 134, 134, 532, 341, 1171, 445, 1587, 564, 279,
160994
- /* 1560 */ 343, 132, 132, 1021, 390, 390, 389, 264, 387, 106,
160995
- /* 1570 */ 106, 843, 564, 1067, 564, 249, 107, 564, 443, 566,
160996
- /* 1580 */ 565, 133, 133, 1011, 225, 1015, 313, 108, 556, 1071,
160997
- /* 1590 */ 4, 345, 968, 969, 312, 75, 75, 77, 77, 1300,
160998
- /* 1600 */ 74, 74, 564, 1132, 559, 564, 108, 556, 959, 4,
160999
- /* 1610 */ 252, 923, 1083, 110, 1083, 1011, 1011, 1013, 1014, 27,
161000
- /* 1620 */ 1082, 1285, 1082, 559, 227, 42, 42, 443, 48, 48,
161001
- /* 1630 */ 1284, 856, 162, 145, 924, 135, 110, 352, 362, 553,
161002
- /* 1640 */ 1340, 1361, 1015, 1408, 1336, 301, 443, 1561, 1347, 550,
161003
- /* 1650 */ 1414, 551, 226, 202, 1265, 1333, 1256, 1244, 553, 1243,
161004
- /* 1660 */ 490, 1245, 1580, 267, 11, 391, 210, 223, 1021, 1390,
161005
- /* 1670 */ 1395, 282, 365, 367, 106, 106, 930, 369, 454, 285,
161006
- /* 1680 */ 1383, 107, 325, 443, 566, 565, 408, 1021, 1011, 326,
161007
- /* 1690 */ 475, 306, 555, 106, 106, 100, 556, 500, 4, 1400,
161008
- /* 1700 */ 107, 1399, 443, 566, 565, 398, 1283, 1011, 214, 355,
161009
- /* 1710 */ 1473, 290, 559, 1472, 1583, 449, 554, 371, 331, 197,
161010
- /* 1720 */ 1011, 1011, 1013, 1014, 27, 198, 209, 385, 1222, 173,
161011
- /* 1730 */ 221, 256, 1520, 1518, 1219, 443, 79, 416, 206, 1011,
161012
- /* 1740 */ 1011, 1013, 1014, 27, 83, 279, 182, 553, 82, 167,
161013
- /* 1750 */ 390, 390, 389, 264, 387, 35, 1396, 843, 1478, 459,
161014
- /* 1760 */ 175, 177, 460, 493, 178, 179, 180, 233, 96, 396,
161015
- /* 1770 */ 225, 1402, 313, 1401, 36, 1404, 1021, 467, 186, 482,
161016
- /* 1780 */ 312, 399, 106, 106, 237, 1467, 89, 1489, 488, 107,
161017
- /* 1790 */ 239, 443, 566, 565, 268, 336, 1011, 190, 491, 340,
161018
- /* 1800 */ 240, 401, 1246, 241, 509, 1294, 430, 1303, 91, 877,
161019
- /* 1810 */ 227, 215, 1566, 1302, 1301, 1273, 1598, 432, 162, 518,
161020
- /* 1820 */ 1272, 135, 1597, 354, 402, 433, 1271, 1596, 1011, 1011,
161021
- /* 1830 */ 1013, 1014, 27, 1293, 299, 360, 300, 525, 226, 95,
161022
- /* 1840 */ 254, 255, 1344, 364, 436, 125, 544, 1552, 10, 1453,
161023
- /* 1850 */ 379, 1551, 102, 304, 97, 528, 34, 568, 1177, 263,
161024
- /* 1860 */ 265, 266, 569, 1241, 1236, 172, 409, 410, 159, 383,
161025
- /* 1870 */ 377, 366, 408, 1345, 1343, 368, 370, 306, 555, 1342,
161026
- /* 1880 */ 1326, 1325, 1368, 201, 384, 1367, 1505, 1506, 160, 1504,
161027
- /* 1890 */ 1503, 142, 161, 211, 212, 78, 830, 444, 203, 308,
161028
- /* 1900 */ 297, 449, 222, 1081, 139, 1079, 316, 174, 163, 1203,
161029
- /* 1910 */ 229, 176, 232, 909, 324, 1095, 164, 181, 165, 419,
161030
- /* 1920 */ 421, 183, 85, 86, 87, 88, 166, 1098, 235, 234,
161031
- /* 1930 */ 1094, 152, 18, 236, 335, 1087, 252, 1216, 487, 238,
161032
- /* 1940 */ 37, 187, 188, 845, 492, 356, 242, 348, 496, 189,
161033
- /* 1950 */ 90, 93, 19, 20, 168, 875, 501, 351, 92, 504,
161034
- /* 1960 */ 888, 153, 511, 1133, 1165, 154, 298, 1047, 94, 1134,
161035
- /* 1970 */ 39, 958, 216, 271, 273, 192, 953, 110, 1151, 251,
161036
- /* 1980 */ 1155, 21, 1159, 22, 1158, 1139, 1153, 33, 23, 24,
161037
- /* 1990 */ 540, 25, 195, 98, 26, 1062, 1048, 1046, 1050, 1104,
161038
- /* 2000 */ 7, 1103, 257, 258, 1051, 28, 40, 560, 1016, 857,
161039
- /* 2010 */ 109, 29, 919, 138, 259, 260, 170, 1589, 388, 1588,
161040
- /* 2020 */ 1173, 1172,
160862
+ /* 0 */ 566, 1307, 566, 1286, 201, 201, 566, 116, 112, 222,
160863
+ /* 10 */ 566, 1307, 377, 566, 116, 112, 222, 397, 408, 409,
160864
+ /* 20 */ 1260, 378, 1269, 41, 41, 41, 41, 1412, 1517, 71,
160865
+ /* 30 */ 71, 967, 1258, 41, 41, 491, 71, 71, 272, 968,
160866
+ /* 40 */ 298, 476, 298, 123, 124, 114, 1210, 1210, 1044, 1047,
160867
+ /* 50 */ 1036, 1036, 121, 121, 122, 122, 122, 122, 543, 409,
160868
+ /* 60 */ 1234, 1, 1, 573, 2, 1238, 548, 116, 112, 222,
160869
+ /* 70 */ 309, 480, 142, 548, 1272, 524, 116, 112, 222, 1320,
160870
+ /* 80 */ 417, 523, 547, 123, 124, 114, 1210, 1210, 1044, 1047,
160871
+ /* 90 */ 1036, 1036, 121, 121, 122, 122, 122, 122, 424, 116,
160872
+ /* 100 */ 112, 222, 120, 120, 120, 120, 119, 119, 118, 118,
160873
+ /* 110 */ 118, 117, 113, 444, 277, 277, 277, 277, 560, 560,
160874
+ /* 120 */ 560, 1558, 376, 1560, 1186, 375, 1157, 563, 1157, 563,
160875
+ /* 130 */ 409, 1558, 537, 252, 219, 1553, 99, 141, 449, 6,
160876
+ /* 140 */ 365, 233, 120, 120, 120, 120, 119, 119, 118, 118,
160877
+ /* 150 */ 118, 117, 113, 444, 123, 124, 114, 1210, 1210, 1044,
160878
+ /* 160 */ 1047, 1036, 1036, 121, 121, 122, 122, 122, 122, 138,
160879
+ /* 170 */ 289, 1186, 1546, 448, 118, 118, 118, 117, 113, 444,
160880
+ /* 180 */ 125, 1186, 1187, 1188, 144, 465, 334, 566, 150, 127,
160881
+ /* 190 */ 444, 122, 122, 122, 122, 115, 120, 120, 120, 120,
160882
+ /* 200 */ 119, 119, 118, 118, 118, 117, 113, 444, 454, 419,
160883
+ /* 210 */ 13, 13, 215, 120, 120, 120, 120, 119, 119, 118,
160884
+ /* 220 */ 118, 118, 117, 113, 444, 422, 308, 557, 1186, 1187,
160885
+ /* 230 */ 1188, 441, 440, 409, 1271, 122, 122, 122, 122, 120,
160886
+ /* 240 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113,
160887
+ /* 250 */ 444, 1543, 98, 1033, 1033, 1045, 1048, 123, 124, 114,
160888
+ /* 260 */ 1210, 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122,
160889
+ /* 270 */ 122, 122, 566, 406, 405, 1186, 566, 409, 1217, 319,
160890
+ /* 280 */ 1217, 80, 81, 120, 120, 120, 120, 119, 119, 118,
160891
+ /* 290 */ 118, 118, 117, 113, 444, 70, 70, 1186, 1604, 71,
160892
+ /* 300 */ 71, 123, 124, 114, 1210, 1210, 1044, 1047, 1036, 1036,
160893
+ /* 310 */ 121, 121, 122, 122, 122, 122, 120, 120, 120, 120,
160894
+ /* 320 */ 119, 119, 118, 118, 118, 117, 113, 444, 1037, 210,
160895
+ /* 330 */ 1186, 365, 1186, 1187, 1188, 245, 548, 399, 504, 501,
160896
+ /* 340 */ 500, 108, 558, 138, 4, 516, 933, 433, 499, 217,
160897
+ /* 350 */ 514, 522, 352, 879, 1186, 1187, 1188, 383, 561, 566,
160898
+ /* 360 */ 120, 120, 120, 120, 119, 119, 118, 118, 118, 117,
160899
+ /* 370 */ 113, 444, 277, 277, 16, 16, 1598, 441, 440, 153,
160900
+ /* 380 */ 409, 445, 13, 13, 1279, 563, 1214, 1186, 1187, 1188,
160901
+ /* 390 */ 1003, 1216, 264, 555, 1574, 186, 566, 427, 138, 1215,
160902
+ /* 400 */ 308, 557, 472, 138, 123, 124, 114, 1210, 1210, 1044,
160903
+ /* 410 */ 1047, 1036, 1036, 121, 121, 122, 122, 122, 122, 55,
160904
+ /* 420 */ 55, 413, 1023, 507, 1217, 1186, 1217, 474, 106, 106,
160905
+ /* 430 */ 1312, 1312, 1186, 171, 566, 384, 107, 380, 445, 568,
160906
+ /* 440 */ 567, 430, 1543, 1013, 332, 549, 565, 263, 280, 360,
160907
+ /* 450 */ 510, 355, 509, 250, 491, 308, 557, 71, 71, 351,
160908
+ /* 460 */ 308, 557, 374, 120, 120, 120, 120, 119, 119, 118,
160909
+ /* 470 */ 118, 118, 117, 113, 444, 1013, 1013, 1015, 1016, 27,
160910
+ /* 480 */ 277, 277, 1186, 1187, 1188, 1152, 566, 528, 409, 1186,
160911
+ /* 490 */ 1187, 1188, 348, 563, 548, 1260, 533, 517, 1152, 1516,
160912
+ /* 500 */ 317, 1152, 285, 550, 485, 569, 566, 569, 482, 51,
160913
+ /* 510 */ 51, 207, 123, 124, 114, 1210, 1210, 1044, 1047, 1036,
160914
+ /* 520 */ 1036, 121, 121, 122, 122, 122, 122, 171, 1412, 13,
160915
+ /* 530 */ 13, 409, 277, 277, 1186, 505, 119, 119, 118, 118,
160916
+ /* 540 */ 118, 117, 113, 444, 429, 563, 518, 220, 515, 1552,
160917
+ /* 550 */ 365, 546, 1186, 6, 532, 123, 124, 114, 1210, 1210,
160918
+ /* 560 */ 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122, 122,
160919
+ /* 570 */ 145, 120, 120, 120, 120, 119, 119, 118, 118, 118,
160920
+ /* 580 */ 117, 113, 444, 245, 566, 474, 504, 501, 500, 566,
160921
+ /* 590 */ 1481, 1186, 1187, 1188, 1310, 1310, 499, 1186, 149, 425,
160922
+ /* 600 */ 1186, 480, 409, 274, 365, 952, 872, 56, 56, 1186,
160923
+ /* 610 */ 1187, 1188, 71, 71, 120, 120, 120, 120, 119, 119,
160924
+ /* 620 */ 118, 118, 118, 117, 113, 444, 123, 124, 114, 1210,
160925
+ /* 630 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160926
+ /* 640 */ 122, 409, 541, 1552, 83, 865, 98, 6, 928, 529,
160927
+ /* 650 */ 848, 543, 151, 927, 1186, 1187, 1188, 1186, 1187, 1188,
160928
+ /* 660 */ 290, 1543, 187, 1633, 395, 123, 124, 114, 1210, 1210,
160929
+ /* 670 */ 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122, 122,
160930
+ /* 680 */ 566, 954, 566, 453, 953, 120, 120, 120, 120, 119,
160931
+ /* 690 */ 119, 118, 118, 118, 117, 113, 444, 1152, 221, 1186,
160932
+ /* 700 */ 331, 453, 452, 13, 13, 13, 13, 1003, 365, 463,
160933
+ /* 710 */ 1152, 193, 409, 1152, 382, 1543, 1170, 32, 297, 474,
160934
+ /* 720 */ 195, 1527, 5, 952, 120, 120, 120, 120, 119, 119,
160935
+ /* 730 */ 118, 118, 118, 117, 113, 444, 123, 124, 114, 1210,
160936
+ /* 740 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160937
+ /* 750 */ 122, 409, 1067, 419, 1186, 1024, 1186, 1187, 1188, 1186,
160938
+ /* 760 */ 419, 332, 460, 320, 544, 1545, 442, 442, 442, 566,
160939
+ /* 770 */ 3, 117, 113, 444, 453, 123, 124, 114, 1210, 1210,
160940
+ /* 780 */ 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122, 122,
160941
+ /* 790 */ 1473, 566, 15, 15, 293, 120, 120, 120, 120, 119,
160942
+ /* 800 */ 119, 118, 118, 118, 117, 113, 444, 1186, 566, 1486,
160943
+ /* 810 */ 1412, 1186, 1187, 1188, 13, 13, 1186, 1187, 1188, 1544,
160944
+ /* 820 */ 271, 271, 409, 286, 308, 557, 1008, 1486, 1488, 196,
160945
+ /* 830 */ 288, 71, 71, 563, 120, 120, 120, 120, 119, 119,
160946
+ /* 840 */ 118, 118, 118, 117, 113, 444, 123, 124, 114, 1210,
160947
+ /* 850 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160948
+ /* 860 */ 122, 409, 201, 1087, 1186, 1187, 1188, 1324, 304, 1529,
160949
+ /* 870 */ 388, 278, 278, 450, 564, 402, 922, 922, 566, 563,
160950
+ /* 880 */ 566, 426, 491, 480, 563, 123, 124, 114, 1210, 1210,
160951
+ /* 890 */ 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122, 122,
160952
+ /* 900 */ 1486, 71, 71, 13, 13, 120, 120, 120, 120, 119,
160953
+ /* 910 */ 119, 118, 118, 118, 117, 113, 444, 566, 545, 566,
160954
+ /* 920 */ 1577, 573, 2, 1238, 1092, 1092, 488, 1480, 309, 1525,
160955
+ /* 930 */ 142, 324, 409, 836, 837, 838, 312, 1320, 305, 363,
160956
+ /* 940 */ 43, 43, 57, 57, 120, 120, 120, 120, 119, 119,
160957
+ /* 950 */ 118, 118, 118, 117, 113, 444, 123, 124, 114, 1210,
160958
+ /* 960 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160959
+ /* 970 */ 122, 12, 277, 277, 566, 1152, 409, 572, 428, 1238,
160960
+ /* 980 */ 465, 334, 296, 474, 309, 563, 142, 249, 1152, 308,
160961
+ /* 990 */ 557, 1152, 321, 1320, 323, 491, 455, 71, 71, 233,
160962
+ /* 1000 */ 283, 101, 114, 1210, 1210, 1044, 1047, 1036, 1036, 121,
160963
+ /* 1010 */ 121, 122, 122, 122, 122, 120, 120, 120, 120, 119,
160964
+ /* 1020 */ 119, 118, 118, 118, 117, 113, 444, 1108, 277, 277,
160965
+ /* 1030 */ 1412, 448, 394, 1230, 439, 277, 277, 248, 247, 246,
160966
+ /* 1040 */ 1319, 563, 1109, 313, 198, 294, 491, 1318, 563, 464,
160967
+ /* 1050 */ 566, 1427, 394, 1130, 1023, 233, 414, 1110, 295, 120,
160968
+ /* 1060 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113,
160969
+ /* 1070 */ 444, 1014, 104, 71, 71, 1013, 322, 496, 908, 566,
160970
+ /* 1080 */ 277, 277, 277, 277, 1108, 1261, 415, 448, 909, 361,
160971
+ /* 1090 */ 1571, 1315, 409, 563, 952, 563, 9, 202, 255, 1109,
160972
+ /* 1100 */ 316, 487, 44, 44, 249, 559, 415, 1013, 1013, 1015,
160973
+ /* 1110 */ 443, 1231, 409, 1603, 1110, 897, 123, 124, 114, 1210,
160974
+ /* 1120 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160975
+ /* 1130 */ 122, 1231, 409, 1207, 215, 554, 123, 124, 114, 1210,
160976
+ /* 1140 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160977
+ /* 1150 */ 122, 1131, 1631, 470, 1631, 255, 123, 111, 114, 1210,
160978
+ /* 1160 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160979
+ /* 1170 */ 122, 1131, 1632, 414, 1632, 120, 120, 120, 120, 119,
160980
+ /* 1180 */ 119, 118, 118, 118, 117, 113, 444, 221, 209, 351,
160981
+ /* 1190 */ 1207, 1207, 147, 1426, 491, 120, 120, 120, 120, 119,
160982
+ /* 1200 */ 119, 118, 118, 118, 117, 113, 444, 1256, 539, 519,
160983
+ /* 1210 */ 888, 551, 952, 12, 566, 120, 120, 120, 120, 119,
160984
+ /* 1220 */ 119, 118, 118, 118, 117, 113, 444, 538, 566, 860,
160985
+ /* 1230 */ 1129, 361, 1571, 346, 1356, 409, 1163, 58, 58, 339,
160986
+ /* 1240 */ 1355, 508, 277, 277, 277, 277, 277, 277, 1207, 889,
160987
+ /* 1250 */ 1129, 59, 59, 459, 363, 563, 566, 563, 96, 563,
160988
+ /* 1260 */ 124, 114, 1210, 1210, 1044, 1047, 1036, 1036, 121, 121,
160989
+ /* 1270 */ 122, 122, 122, 122, 566, 1412, 566, 281, 1186, 60,
160990
+ /* 1280 */ 60, 110, 392, 392, 391, 266, 389, 860, 1163, 845,
160991
+ /* 1290 */ 566, 481, 566, 436, 341, 1152, 344, 61, 61, 62,
160992
+ /* 1300 */ 62, 967, 227, 1550, 315, 431, 540, 6, 1152, 968,
160993
+ /* 1310 */ 566, 1152, 314, 45, 45, 46, 46, 512, 120, 120,
160994
+ /* 1320 */ 120, 120, 119, 119, 118, 118, 118, 117, 113, 444,
160995
+ /* 1330 */ 416, 173, 1532, 47, 47, 1186, 1187, 1188, 108, 558,
160996
+ /* 1340 */ 325, 4, 229, 1551, 928, 566, 437, 6, 566, 927,
160997
+ /* 1350 */ 164, 566, 1290, 137, 1190, 561, 566, 1549, 566, 1089,
160998
+ /* 1360 */ 566, 6, 566, 1089, 531, 566, 868, 8, 49, 49,
160999
+ /* 1370 */ 228, 50, 50, 566, 63, 63, 566, 457, 445, 64,
161000
+ /* 1380 */ 64, 65, 65, 14, 14, 66, 66, 407, 129, 129,
161001
+ /* 1390 */ 555, 566, 458, 566, 1505, 486, 67, 67, 566, 52,
161002
+ /* 1400 */ 52, 546, 407, 467, 535, 410, 226, 1023, 566, 534,
161003
+ /* 1410 */ 308, 557, 1190, 407, 68, 68, 69, 69, 566, 1023,
161004
+ /* 1420 */ 566, 53, 53, 868, 1014, 106, 106, 525, 1013, 566,
161005
+ /* 1430 */ 1504, 159, 159, 107, 451, 445, 568, 567, 471, 307,
161006
+ /* 1440 */ 1013, 160, 160, 76, 76, 566, 1548, 466, 407, 407,
161007
+ /* 1450 */ 6, 1225, 54, 54, 478, 276, 219, 566, 887, 886,
161008
+ /* 1460 */ 1013, 1013, 1015, 84, 206, 1206, 230, 282, 72, 72,
161009
+ /* 1470 */ 329, 483, 1013, 1013, 1015, 1016, 27, 1576, 1174, 447,
161010
+ /* 1480 */ 130, 130, 281, 148, 105, 38, 103, 392, 392, 391,
161011
+ /* 1490 */ 266, 389, 566, 1126, 845, 396, 566, 108, 558, 566,
161012
+ /* 1500 */ 4, 311, 566, 30, 17, 566, 279, 227, 566, 315,
161013
+ /* 1510 */ 108, 558, 468, 4, 561, 73, 73, 314, 566, 157,
161014
+ /* 1520 */ 157, 566, 131, 131, 526, 132, 132, 561, 128, 128,
161015
+ /* 1530 */ 566, 158, 158, 566, 31, 291, 566, 445, 330, 521,
161016
+ /* 1540 */ 98, 152, 152, 420, 136, 136, 1005, 229, 254, 555,
161017
+ /* 1550 */ 445, 479, 336, 135, 135, 164, 133, 133, 137, 134,
161018
+ /* 1560 */ 134, 875, 555, 535, 566, 473, 566, 254, 536, 475,
161019
+ /* 1570 */ 335, 254, 98, 894, 895, 228, 535, 566, 1023, 566,
161020
+ /* 1580 */ 1074, 534, 210, 232, 106, 106, 1352, 75, 75, 77,
161021
+ /* 1590 */ 77, 1023, 107, 340, 445, 568, 567, 106, 106, 1013,
161022
+ /* 1600 */ 74, 74, 42, 42, 566, 107, 343, 445, 568, 567,
161023
+ /* 1610 */ 410, 497, 1013, 251, 359, 308, 557, 1135, 349, 875,
161024
+ /* 1620 */ 98, 1070, 345, 251, 358, 1591, 347, 48, 48, 1017,
161025
+ /* 1630 */ 1303, 1013, 1013, 1015, 1016, 27, 1289, 1287, 1074, 451,
161026
+ /* 1640 */ 961, 925, 254, 110, 1013, 1013, 1015, 1016, 27, 1174,
161027
+ /* 1650 */ 447, 970, 971, 281, 108, 558, 1288, 4, 392, 392,
161028
+ /* 1660 */ 391, 266, 389, 1343, 1086, 845, 1086, 1085, 858, 1085,
161029
+ /* 1670 */ 146, 561, 926, 354, 110, 303, 364, 553, 227, 1364,
161030
+ /* 1680 */ 315, 108, 558, 1411, 4, 1339, 492, 1017, 314, 1350,
161031
+ /* 1690 */ 1565, 552, 1417, 1268, 445, 204, 1259, 1247, 561, 1246,
161032
+ /* 1700 */ 1248, 1584, 269, 1336, 367, 369, 555, 371, 11, 212,
161033
+ /* 1710 */ 393, 225, 1393, 284, 1398, 456, 287, 327, 229, 328,
161034
+ /* 1720 */ 292, 445, 1386, 216, 333, 1403, 164, 477, 373, 137,
161035
+ /* 1730 */ 1402, 400, 502, 555, 1286, 1023, 357, 1477, 199, 1587,
161036
+ /* 1740 */ 211, 106, 106, 932, 1476, 1225, 228, 556, 175, 107,
161037
+ /* 1750 */ 200, 445, 568, 567, 258, 387, 1013, 1524, 1522, 223,
161038
+ /* 1760 */ 1222, 418, 1023, 83, 208, 79, 82, 184, 106, 106,
161039
+ /* 1770 */ 1482, 169, 177, 461, 179, 462, 107, 1399, 445, 568,
161040
+ /* 1780 */ 567, 410, 180, 1013, 495, 181, 308, 557, 1013, 1013,
161041
+ /* 1790 */ 1015, 1016, 27, 182, 35, 235, 100, 558, 398, 4,
161042
+ /* 1800 */ 96, 1405, 1404, 36, 484, 469, 1407, 188, 401, 1471,
161043
+ /* 1810 */ 451, 89, 1493, 561, 239, 1013, 1013, 1015, 1016, 27,
161044
+ /* 1820 */ 490, 338, 270, 241, 192, 342, 493, 242, 403, 1249,
161045
+ /* 1830 */ 243, 511, 432, 1297, 1306, 91, 445, 1305, 1304, 879,
161046
+ /* 1840 */ 217, 434, 435, 1570, 1276, 1602, 520, 1601, 555, 301,
161047
+ /* 1850 */ 527, 404, 1275, 302, 356, 1274, 1600, 95, 1347, 366,
161048
+ /* 1860 */ 1296, 362, 1348, 368, 256, 257, 1556, 1555, 438, 1346,
161049
+ /* 1870 */ 370, 126, 1345, 10, 1371, 546, 381, 1023, 102, 1457,
161050
+ /* 1880 */ 97, 530, 34, 106, 106, 570, 1180, 372, 265, 1329,
161051
+ /* 1890 */ 379, 107, 203, 445, 568, 567, 1328, 385, 1013, 1370,
161052
+ /* 1900 */ 386, 267, 268, 571, 1244, 161, 1239, 162, 1509, 1510,
161053
+ /* 1910 */ 1508, 143, 1507, 299, 832, 213, 214, 78, 446, 205,
161054
+ /* 1920 */ 310, 306, 163, 224, 1084, 140, 1082, 318, 165, 176,
161055
+ /* 1930 */ 1013, 1013, 1015, 1016, 27, 178, 1206, 231, 911, 234,
161056
+ /* 1940 */ 326, 1098, 183, 421, 166, 167, 411, 185, 85, 423,
161057
+ /* 1950 */ 412, 86, 174, 87, 168, 88, 1101, 236, 1097, 237,
161058
+ /* 1960 */ 154, 18, 238, 254, 337, 1219, 489, 1090, 240, 190,
161059
+ /* 1970 */ 37, 847, 189, 494, 358, 244, 350, 506, 191, 877,
161060
+ /* 1980 */ 90, 498, 19, 20, 503, 92, 353, 890, 300, 170,
161061
+ /* 1990 */ 155, 93, 513, 94, 1168, 156, 1050, 1137, 39, 218,
161062
+ /* 2000 */ 273, 275, 1136, 960, 194, 955, 110, 1154, 1158, 253,
161063
+ /* 2010 */ 7, 1162, 1156, 21, 22, 1161, 1142, 23, 24, 25,
161064
+ /* 2020 */ 33, 542, 26, 260, 197, 98, 1065, 1051, 1049, 1053,
161065
+ /* 2030 */ 1107, 1054, 1106, 259, 28, 40, 562, 1018, 859, 109,
161066
+ /* 2040 */ 29, 921, 390, 1176, 172, 139, 1175, 1235, 261, 1235,
161067
+ /* 2050 */ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 262, 1235, 1235,
161068
+ /* 2060 */ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1593, 1592,
161041161069
};
161042161070
static const YYCODETYPE yy_lookahead[] = {
161043
- /* 0 */ 192, 273, 274, 275, 192, 192, 273, 274, 275, 192,
161044
- /* 10 */ 218, 215, 192, 218, 192, 212, 234, 235, 205, 19,
161045
- /* 20 */ 11, 192, 294, 215, 216, 203, 192, 203, 209, 210,
161046
- /* 30 */ 211, 31, 215, 216, 205, 215, 216, 215, 216, 39,
161047
- /* 40 */ 227, 215, 229, 43, 44, 45, 46, 47, 48, 49,
161048
- /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 19,
161049
- /* 60 */ 238, 239, 238, 239, 215, 273, 274, 275, 273, 274,
161050
- /* 70 */ 275, 237, 21, 251, 252, 251, 273, 274, 275, 255,
161051
- /* 80 */ 256, 215, 216, 43, 44, 45, 46, 47, 48, 49,
161052
- /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 209, 210,
161053
- /* 100 */ 211, 76, 102, 103, 104, 105, 106, 107, 108, 109,
161054
- /* 110 */ 110, 111, 112, 59, 89, 111, 112, 92, 252, 307,
161055
- /* 120 */ 308, 313, 314, 25, 312, 192, 86, 261, 88, 19,
161056
- /* 130 */ 313, 80, 315, 313, 314, 25, 127, 128, 54, 55,
161057
- /* 140 */ 56, 57, 102, 103, 104, 105, 106, 107, 108, 109,
161058
- /* 150 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
161059
- /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 115,
161060
- /* 170 */ 116, 117, 118, 122, 192, 121, 122, 123, 202, 69,
161061
- /* 180 */ 204, 22, 23, 16, 25, 131, 102, 103, 104, 105,
161062
- /* 190 */ 106, 107, 108, 109, 110, 111, 112, 215, 216, 19,
161063
- /* 200 */ 54, 55, 56, 57, 58, 108, 109, 110, 111, 112,
161064
- /* 210 */ 192, 160, 102, 103, 104, 105, 106, 107, 108, 109,
161065
- /* 220 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
161066
- /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 141,
161067
- /* 240 */ 307, 308, 272, 24, 77, 312, 79, 67, 102, 103,
161068
- /* 250 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 277,
161069
- /* 260 */ 101, 112, 43, 44, 45, 46, 47, 48, 49, 50,
161070
- /* 270 */ 51, 52, 53, 54, 55, 56, 57, 26, 127, 128,
161071
- /* 280 */ 310, 311, 102, 103, 104, 105, 106, 107, 108, 109,
161072
- /* 290 */ 110, 111, 112, 184, 185, 186, 187, 188, 189, 186,
161073
- /* 300 */ 187, 188, 189, 194, 76, 196, 192, 194, 19, 196,
161074
- /* 310 */ 59, 25, 203, 192, 59, 87, 203, 89, 164, 165,
161075
- /* 320 */ 92, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161076
- /* 330 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
161077
- /* 340 */ 51, 52, 53, 54, 55, 56, 57, 238, 239, 73,
161078
- /* 350 */ 192, 238, 239, 22, 23, 100, 25, 81, 237, 229,
161079
- /* 360 */ 251, 23, 204, 25, 251, 272, 115, 116, 117, 214,
161080
- /* 370 */ 115, 116, 144, 192, 265, 120, 262, 222, 265, 102,
161081
- /* 380 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161082
- /* 390 */ 192, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161083
- /* 400 */ 111, 112, 126, 310, 311, 192, 297, 152, 153, 154,
161084
- /* 410 */ 297, 125, 192, 137, 138, 19, 295, 100, 192, 23,
161085
- /* 420 */ 22, 106, 107, 108, 109, 110, 111, 112, 215, 216,
161086
- /* 430 */ 106, 107, 101, 116, 192, 215, 216, 120, 149, 43,
161087
- /* 440 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
161088
- /* 450 */ 54, 55, 56, 57, 222, 117, 224, 59, 19, 187,
161089
- /* 460 */ 59, 189, 23, 282, 232, 252, 194, 192, 196, 152,
161090
- /* 470 */ 153, 154, 252, 72, 261, 203, 152, 248, 154, 250,
161091
- /* 480 */ 142, 261, 43, 44, 45, 46, 47, 48, 49, 50,
161092
- /* 490 */ 51, 52, 53, 54, 55, 56, 57, 192, 102, 103,
161093
- /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 267,
161094
- /* 510 */ 238, 239, 237, 115, 116, 117, 115, 116, 117, 192,
161095
- /* 520 */ 59, 118, 192, 251, 121, 122, 123, 73, 19, 192,
161096
- /* 530 */ 59, 192, 23, 72, 131, 308, 22, 265, 22, 312,
161097
- /* 540 */ 24, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161098
- /* 550 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
161099
- /* 560 */ 51, 52, 53, 54, 55, 56, 57, 19, 192, 297,
161100
- /* 570 */ 192, 23, 267, 59, 203, 59, 115, 116, 117, 108,
161101
- /* 580 */ 126, 127, 128, 192, 192, 192, 115, 116, 117, 262,
161102
- /* 590 */ 59, 43, 44, 45, 46, 47, 48, 49, 50, 51,
161103
- /* 600 */ 52, 53, 54, 55, 56, 57, 267, 215, 216, 238,
161104
- /* 610 */ 239, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161105
- /* 620 */ 111, 112, 251, 45, 46, 47, 59, 49, 291, 115,
161106
- /* 630 */ 116, 117, 116, 81, 192, 305, 306, 19, 192, 268,
161107
- /* 640 */ 19, 23, 22, 192, 252, 24, 115, 116, 117, 192,
161108
- /* 650 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
161109
- /* 660 */ 112, 43, 44, 45, 46, 47, 48, 49, 50, 51,
161110
- /* 670 */ 52, 53, 54, 55, 56, 57, 19, 22, 23, 59,
161111
- /* 680 */ 23, 303, 115, 116, 117, 192, 240, 234, 235, 137,
161112
- /* 690 */ 138, 240, 308, 192, 22, 192, 312, 22, 120, 306,
161113
- /* 700 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
161114
- /* 710 */ 53, 54, 55, 56, 57, 197, 95, 150, 215, 216,
161115
- /* 720 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
161116
- /* 730 */ 112, 59, 231, 112, 59, 115, 116, 117, 25, 118,
161117
- /* 740 */ 119, 120, 121, 122, 123, 124, 19, 243, 81, 303,
161118
- /* 750 */ 23, 130, 192, 192, 303, 252, 101, 253, 203, 102,
161119
- /* 760 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161120
- /* 770 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
161121
- /* 780 */ 53, 54, 55, 56, 57, 19, 119, 115, 116, 117,
161122
- /* 790 */ 115, 116, 117, 238, 239, 238, 239, 192, 280, 192,
161123
- /* 800 */ 240, 192, 284, 192, 137, 138, 251, 192, 251, 43,
161124
- /* 810 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
161125
- /* 820 */ 54, 55, 56, 57, 192, 35, 215, 216, 267, 102,
161126
- /* 830 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161127
- /* 840 */ 59, 230, 237, 192, 25, 192, 192, 215, 216, 240,
161128
- /* 850 */ 137, 138, 237, 16, 200, 19, 66, 192, 133, 205,
161129
- /* 860 */ 135, 136, 230, 303, 74, 203, 215, 216, 102, 103,
161130
- /* 870 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 43,
161131
- /* 880 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
161132
- /* 890 */ 54, 55, 56, 57, 192, 76, 115, 116, 117, 19,
161133
- /* 900 */ 238, 239, 192, 252, 126, 127, 128, 192, 89, 238,
161134
- /* 910 */ 239, 92, 303, 251, 77, 262, 79, 215, 216, 129,
161135
- /* 920 */ 210, 211, 251, 142, 158, 45, 46, 47, 48, 49,
161136
- /* 930 */ 50, 51, 52, 53, 54, 55, 56, 57, 102, 103,
161137
- /* 940 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 12,
161138
- /* 950 */ 59, 308, 192, 212, 252, 312, 291, 192, 7, 8,
161139
- /* 960 */ 9, 300, 301, 203, 27, 126, 127, 128, 308, 207,
161140
- /* 970 */ 208, 192, 312, 29, 192, 215, 216, 33, 192, 42,
161141
- /* 980 */ 215, 216, 102, 103, 104, 105, 106, 107, 108, 109,
161142
- /* 990 */ 110, 111, 112, 283, 158, 230, 66, 160, 238, 239,
161143
- /* 1000 */ 63, 215, 216, 192, 192, 12, 115, 116, 117, 65,
161144
- /* 1010 */ 73, 251, 252, 192, 19, 85, 230, 192, 24, 24,
161145
- /* 1020 */ 27, 261, 210, 211, 94, 192, 215, 216, 22, 207,
161146
- /* 1030 */ 208, 290, 192, 142, 19, 42, 215, 216, 43, 44,
161147
- /* 1040 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
161148
- /* 1050 */ 55, 56, 57, 59, 19, 144, 63, 192, 43, 44,
161149
- /* 1060 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
161150
- /* 1070 */ 55, 56, 57, 252, 163, 145, 114, 22, 43, 44,
161151
- /* 1080 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
161152
- /* 1090 */ 55, 56, 57, 45, 212, 283, 263, 102, 103, 104,
161153
- /* 1100 */ 105, 106, 107, 108, 109, 110, 111, 112, 59, 192,
161154
- /* 1110 */ 116, 149, 106, 107, 59, 25, 291, 102, 103, 104,
161155
- /* 1120 */ 105, 106, 107, 108, 109, 110, 111, 112, 192, 22,
161156
- /* 1130 */ 192, 192, 215, 216, 23, 192, 25, 102, 103, 104,
161157
- /* 1140 */ 105, 106, 107, 108, 109, 110, 111, 112, 108, 192,
161158
- /* 1150 */ 192, 215, 216, 215, 216, 106, 107, 19, 215, 216,
161159
- /* 1160 */ 53, 59, 114, 114, 115, 116, 117, 285, 119, 137,
161160
- /* 1170 */ 138, 116, 290, 230, 134, 192, 127, 192, 192, 139,
161161
- /* 1180 */ 59, 192, 44, 45, 46, 47, 48, 49, 50, 51,
161162
- /* 1190 */ 52, 53, 54, 55, 56, 57, 308, 76, 215, 216,
161163
- /* 1200 */ 312, 152, 263, 154, 215, 216, 192, 117, 87, 19,
161164
- /* 1210 */ 89, 19, 20, 92, 22, 22, 23, 231, 116, 230,
161165
- /* 1220 */ 263, 263, 237, 203, 298, 299, 203, 239, 36, 215,
161166
- /* 1230 */ 216, 192, 142, 192, 15, 45, 115, 116, 117, 251,
161167
- /* 1240 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
161168
- /* 1250 */ 112, 59, 192, 203, 215, 216, 215, 216, 238, 239,
161169
- /* 1260 */ 192, 238, 239, 71, 192, 144, 25, 203, 243, 230,
161170
- /* 1270 */ 243, 251, 192, 81, 251, 215, 216, 243, 253, 60,
161171
- /* 1280 */ 253, 255, 256, 19, 20, 25, 22, 253, 238, 239,
161172
- /* 1290 */ 192, 192, 100, 192, 101, 215, 216, 19, 106, 107,
161173
- /* 1300 */ 36, 251, 238, 239, 114, 113, 192, 115, 116, 117,
161174
- /* 1310 */ 192, 47, 120, 215, 216, 251, 215, 216, 192, 31,
161175
- /* 1320 */ 130, 134, 243, 59, 148, 149, 139, 39, 192, 137,
161176
- /* 1330 */ 138, 263, 253, 215, 216, 71, 19, 157, 192, 159,
161177
- /* 1340 */ 128, 215, 216, 25, 152, 153, 154, 155, 156, 85,
161178
- /* 1350 */ 192, 215, 216, 268, 90, 0, 1, 2, 192, 192,
161179
- /* 1360 */ 5, 215, 216, 151, 100, 10, 11, 12, 13, 14,
161180
- /* 1370 */ 106, 107, 17, 215, 216, 19, 20, 113, 22, 115,
161181
- /* 1380 */ 116, 117, 215, 216, 120, 30, 192, 32, 192, 148,
161182
- /* 1390 */ 192, 24, 36, 115, 22, 40, 24, 23, 192, 25,
161183
- /* 1400 */ 128, 23, 99, 25, 144, 192, 22, 192, 192, 215,
161184
- /* 1410 */ 216, 215, 216, 215, 216, 59, 152, 153, 154, 155,
161185
- /* 1420 */ 156, 215, 216, 151, 192, 70, 192, 71, 215, 216,
161186
- /* 1430 */ 215, 216, 115, 78, 192, 132, 81, 192, 23, 22,
161187
- /* 1440 */ 25, 85, 192, 192, 192, 61, 90, 215, 216, 215,
161188
- /* 1450 */ 216, 192, 225, 98, 192, 192, 100, 215, 216, 141,
161189
- /* 1460 */ 215, 216, 106, 107, 225, 215, 216, 215, 216, 113,
161190
- /* 1470 */ 59, 115, 116, 117, 215, 216, 120, 215, 216, 192,
161191
- /* 1480 */ 120, 192, 19, 20, 23, 22, 25, 132, 119, 120,
161192
- /* 1490 */ 130, 192, 137, 138, 192, 23, 192, 25, 192, 36,
161193
- /* 1500 */ 192, 192, 215, 216, 215, 216, 192, 140, 152, 153,
161194
- /* 1510 */ 154, 155, 156, 192, 215, 216, 161, 215, 216, 215,
161195
- /* 1520 */ 216, 192, 59, 215, 216, 19, 192, 116, 192, 215,
161196
- /* 1530 */ 216, 23, 59, 25, 71, 192, 215, 216, 192, 23,
161197
- /* 1540 */ 23, 25, 25, 192, 215, 216, 7, 8, 85, 215,
161198
- /* 1550 */ 216, 215, 216, 90, 192, 1, 2, 140, 192, 5,
161199
- /* 1560 */ 192, 215, 216, 100, 10, 11, 12, 13, 14, 106,
161200
- /* 1570 */ 107, 17, 192, 23, 192, 25, 113, 192, 115, 116,
161201
- /* 1580 */ 117, 215, 216, 120, 30, 59, 32, 19, 20, 116,
161202
- /* 1590 */ 22, 192, 83, 84, 40, 215, 216, 215, 216, 192,
161203
- /* 1600 */ 215, 216, 192, 97, 36, 192, 19, 20, 23, 22,
161204
- /* 1610 */ 25, 23, 152, 25, 154, 152, 153, 154, 155, 156,
161205
- /* 1620 */ 152, 225, 154, 36, 70, 215, 216, 59, 215, 216,
161206
- /* 1630 */ 192, 23, 78, 25, 23, 81, 25, 192, 192, 71,
161207
- /* 1640 */ 257, 192, 116, 192, 192, 254, 59, 317, 192, 192,
161208
- /* 1650 */ 192, 235, 98, 241, 192, 254, 192, 192, 71, 192,
161209
- /* 1660 */ 287, 192, 192, 286, 242, 190, 213, 296, 100, 266,
161210
- /* 1670 */ 270, 244, 254, 254, 106, 107, 108, 254, 258, 258,
161211
- /* 1680 */ 266, 113, 292, 115, 116, 117, 132, 100, 120, 245,
161212
- /* 1690 */ 292, 137, 138, 106, 107, 19, 20, 219, 22, 270,
161213
- /* 1700 */ 113, 270, 115, 116, 117, 270, 224, 120, 228, 218,
161214
- /* 1710 */ 218, 245, 36, 218, 195, 161, 279, 258, 244, 248,
161215
- /* 1720 */ 152, 153, 154, 155, 156, 248, 242, 244, 60, 296,
161216
- /* 1730 */ 296, 140, 199, 199, 38, 59, 293, 199, 149, 152,
161217
- /* 1740 */ 153, 154, 155, 156, 150, 5, 22, 71, 293, 43,
161218
- /* 1750 */ 10, 11, 12, 13, 14, 269, 271, 17, 282, 18,
161219
- /* 1760 */ 233, 236, 199, 18, 236, 236, 236, 198, 148, 245,
161220
- /* 1770 */ 30, 271, 32, 271, 269, 233, 100, 245, 233, 199,
161221
- /* 1780 */ 40, 245, 106, 107, 198, 245, 157, 289, 62, 113,
161222
- /* 1790 */ 198, 115, 116, 117, 199, 288, 120, 22, 220, 199,
161223
- /* 1800 */ 198, 220, 199, 198, 114, 226, 64, 217, 22, 125,
161224
- /* 1810 */ 70, 164, 311, 217, 217, 217, 223, 24, 78, 304,
161225
- /* 1820 */ 219, 81, 223, 217, 220, 112, 217, 217, 152, 153,
161226
- /* 1830 */ 154, 155, 156, 226, 281, 220, 281, 143, 98, 114,
161227
- /* 1840 */ 199, 91, 260, 259, 82, 147, 144, 316, 22, 276,
161228
- /* 1850 */ 199, 316, 157, 278, 146, 145, 25, 201, 13, 193,
161229
- /* 1860 */ 193, 6, 191, 191, 191, 299, 302, 302, 206, 246,
161230
- /* 1870 */ 248, 259, 132, 260, 260, 259, 259, 137, 138, 260,
161231
- /* 1880 */ 249, 249, 264, 247, 245, 264, 212, 212, 206, 212,
161232
- /* 1890 */ 212, 221, 206, 213, 213, 212, 4, 3, 22, 162,
161233
- /* 1900 */ 221, 161, 15, 23, 16, 23, 138, 150, 129, 25,
161234
- /* 1910 */ 24, 141, 143, 20, 16, 1, 129, 141, 129, 61,
161235
- /* 1920 */ 37, 150, 53, 53, 53, 53, 129, 115, 140, 34,
161236
- /* 1930 */ 1, 5, 22, 114, 160, 68, 25, 75, 41, 140,
161237
- /* 1940 */ 24, 68, 114, 20, 19, 130, 124, 23, 67, 22,
161238
- /* 1950 */ 22, 148, 22, 22, 37, 59, 67, 24, 22, 96,
161239
- /* 1960 */ 28, 23, 22, 97, 23, 23, 67, 23, 25, 23,
161240
- /* 1970 */ 22, 115, 140, 23, 23, 22, 142, 25, 88, 34,
161241
- /* 1980 */ 75, 34, 75, 34, 93, 23, 86, 22, 34, 34,
161242
- /* 1990 */ 24, 34, 25, 25, 34, 23, 23, 23, 23, 23,
161243
- /* 2000 */ 44, 23, 25, 22, 11, 22, 22, 25, 23, 23,
161244
- /* 2010 */ 22, 22, 134, 23, 140, 140, 25, 140, 15, 140,
161245
- /* 2020 */ 1, 1, 318, 318, 318, 318, 318, 318, 318, 318,
161246
- /* 2030 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161247
- /* 2040 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161248
- /* 2050 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161249
- /* 2060 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161250
- /* 2070 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161251
- /* 2080 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161252
- /* 2090 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161253
- /* 2100 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161254
- /* 2110 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161255
- /* 2120 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161256
- /* 2130 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161257
- /* 2140 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161258
- /* 2150 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161259
- /* 2160 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161260
- /* 2170 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161261
- /* 2180 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161262
- /* 2190 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161263
- /* 2200 */ 318, 318, 318, 318, 318, 318,
161264
-};
161265
-#define YY_SHIFT_COUNT (571)
161071
+ /* 0 */ 193, 223, 193, 225, 193, 193, 193, 274, 275, 276,
161072
+ /* 10 */ 193, 233, 219, 193, 274, 275, 276, 206, 206, 19,
161073
+ /* 20 */ 193, 219, 216, 216, 217, 216, 217, 193, 295, 216,
161074
+ /* 30 */ 217, 31, 205, 216, 217, 193, 216, 217, 213, 39,
161075
+ /* 40 */ 228, 193, 230, 43, 44, 45, 46, 47, 48, 49,
161076
+ /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 193, 19,
161077
+ /* 60 */ 185, 186, 187, 188, 189, 190, 253, 274, 275, 276,
161078
+ /* 70 */ 195, 193, 197, 253, 216, 262, 274, 275, 276, 204,
161079
+ /* 80 */ 238, 204, 262, 43, 44, 45, 46, 47, 48, 49,
161080
+ /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 264, 274,
161081
+ /* 100 */ 275, 276, 102, 103, 104, 105, 106, 107, 108, 109,
161082
+ /* 110 */ 110, 111, 112, 113, 239, 240, 239, 240, 210, 211,
161083
+ /* 120 */ 212, 314, 315, 314, 59, 316, 86, 252, 88, 252,
161084
+ /* 130 */ 19, 314, 315, 256, 257, 309, 25, 72, 296, 313,
161085
+ /* 140 */ 193, 266, 102, 103, 104, 105, 106, 107, 108, 109,
161086
+ /* 150 */ 110, 111, 112, 113, 43, 44, 45, 46, 47, 48,
161087
+ /* 160 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 81,
161088
+ /* 170 */ 292, 59, 307, 298, 108, 109, 110, 111, 112, 113,
161089
+ /* 180 */ 69, 116, 117, 118, 72, 128, 129, 193, 241, 22,
161090
+ /* 190 */ 113, 54, 55, 56, 57, 58, 102, 103, 104, 105,
161091
+ /* 200 */ 106, 107, 108, 109, 110, 111, 112, 113, 120, 193,
161092
+ /* 210 */ 216, 217, 25, 102, 103, 104, 105, 106, 107, 108,
161093
+ /* 220 */ 109, 110, 111, 112, 113, 231, 138, 139, 116, 117,
161094
+ /* 230 */ 118, 106, 107, 19, 216, 54, 55, 56, 57, 102,
161095
+ /* 240 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161096
+ /* 250 */ 113, 304, 25, 46, 47, 48, 49, 43, 44, 45,
161097
+ /* 260 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
161098
+ /* 270 */ 56, 57, 193, 106, 107, 59, 193, 19, 153, 263,
161099
+ /* 280 */ 155, 67, 24, 102, 103, 104, 105, 106, 107, 108,
161100
+ /* 290 */ 109, 110, 111, 112, 113, 216, 217, 59, 230, 216,
161101
+ /* 300 */ 217, 43, 44, 45, 46, 47, 48, 49, 50, 51,
161102
+ /* 310 */ 52, 53, 54, 55, 56, 57, 102, 103, 104, 105,
161103
+ /* 320 */ 106, 107, 108, 109, 110, 111, 112, 113, 121, 142,
161104
+ /* 330 */ 59, 193, 116, 117, 118, 119, 253, 204, 122, 123,
161105
+ /* 340 */ 124, 19, 20, 81, 22, 262, 108, 19, 132, 165,
161106
+ /* 350 */ 166, 193, 24, 126, 116, 117, 118, 278, 36, 193,
161107
+ /* 360 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
161108
+ /* 370 */ 112, 113, 239, 240, 216, 217, 215, 106, 107, 241,
161109
+ /* 380 */ 19, 59, 216, 217, 223, 252, 115, 116, 117, 118,
161110
+ /* 390 */ 73, 120, 26, 71, 193, 22, 193, 231, 81, 128,
161111
+ /* 400 */ 138, 139, 269, 81, 43, 44, 45, 46, 47, 48,
161112
+ /* 410 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 216,
161113
+ /* 420 */ 217, 198, 100, 95, 153, 59, 155, 193, 106, 107,
161114
+ /* 430 */ 235, 236, 59, 193, 193, 249, 114, 251, 116, 117,
161115
+ /* 440 */ 118, 113, 304, 121, 127, 204, 193, 119, 120, 121,
161116
+ /* 450 */ 122, 123, 124, 125, 193, 138, 139, 216, 217, 131,
161117
+ /* 460 */ 138, 139, 193, 102, 103, 104, 105, 106, 107, 108,
161118
+ /* 470 */ 109, 110, 111, 112, 113, 153, 154, 155, 156, 157,
161119
+ /* 480 */ 239, 240, 116, 117, 118, 76, 193, 193, 19, 116,
161120
+ /* 490 */ 117, 118, 23, 252, 253, 193, 87, 204, 89, 238,
161121
+ /* 500 */ 193, 92, 268, 262, 281, 203, 193, 205, 285, 216,
161122
+ /* 510 */ 217, 150, 43, 44, 45, 46, 47, 48, 49, 50,
161123
+ /* 520 */ 51, 52, 53, 54, 55, 56, 57, 193, 193, 216,
161124
+ /* 530 */ 217, 19, 239, 240, 59, 23, 106, 107, 108, 109,
161125
+ /* 540 */ 110, 111, 112, 113, 231, 252, 253, 193, 308, 309,
161126
+ /* 550 */ 193, 145, 59, 313, 145, 43, 44, 45, 46, 47,
161127
+ /* 560 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
161128
+ /* 570 */ 164, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161129
+ /* 580 */ 111, 112, 113, 119, 193, 193, 122, 123, 124, 193,
161130
+ /* 590 */ 283, 116, 117, 118, 235, 236, 132, 59, 241, 264,
161131
+ /* 600 */ 59, 193, 19, 23, 193, 25, 23, 216, 217, 116,
161132
+ /* 610 */ 117, 118, 216, 217, 102, 103, 104, 105, 106, 107,
161133
+ /* 620 */ 108, 109, 110, 111, 112, 113, 43, 44, 45, 46,
161134
+ /* 630 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161135
+ /* 640 */ 57, 19, 308, 309, 151, 23, 25, 313, 135, 253,
161136
+ /* 650 */ 21, 193, 241, 140, 116, 117, 118, 116, 117, 118,
161137
+ /* 660 */ 268, 304, 22, 301, 302, 43, 44, 45, 46, 47,
161138
+ /* 670 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
161139
+ /* 680 */ 193, 143, 193, 193, 143, 102, 103, 104, 105, 106,
161140
+ /* 690 */ 107, 108, 109, 110, 111, 112, 113, 76, 118, 59,
161141
+ /* 700 */ 292, 211, 212, 216, 217, 216, 217, 73, 193, 80,
161142
+ /* 710 */ 89, 25, 19, 92, 193, 304, 23, 22, 231, 193,
161143
+ /* 720 */ 231, 193, 22, 143, 102, 103, 104, 105, 106, 107,
161144
+ /* 730 */ 108, 109, 110, 111, 112, 113, 43, 44, 45, 46,
161145
+ /* 740 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161146
+ /* 750 */ 57, 19, 123, 193, 59, 23, 116, 117, 118, 59,
161147
+ /* 760 */ 193, 127, 128, 129, 306, 307, 210, 211, 212, 193,
161148
+ /* 770 */ 22, 111, 112, 113, 284, 43, 44, 45, 46, 47,
161149
+ /* 780 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
161150
+ /* 790 */ 161, 193, 216, 217, 268, 102, 103, 104, 105, 106,
161151
+ /* 800 */ 107, 108, 109, 110, 111, 112, 113, 59, 193, 193,
161152
+ /* 810 */ 193, 116, 117, 118, 216, 217, 116, 117, 118, 304,
161153
+ /* 820 */ 239, 240, 19, 263, 138, 139, 23, 211, 212, 231,
161154
+ /* 830 */ 263, 216, 217, 252, 102, 103, 104, 105, 106, 107,
161155
+ /* 840 */ 108, 109, 110, 111, 112, 113, 43, 44, 45, 46,
161156
+ /* 850 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161157
+ /* 860 */ 57, 19, 193, 11, 116, 117, 118, 240, 253, 193,
161158
+ /* 870 */ 201, 239, 240, 193, 134, 206, 136, 137, 193, 252,
161159
+ /* 880 */ 193, 264, 193, 193, 252, 43, 44, 45, 46, 47,
161160
+ /* 890 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
161161
+ /* 900 */ 284, 216, 217, 216, 217, 102, 103, 104, 105, 106,
161162
+ /* 910 */ 107, 108, 109, 110, 111, 112, 113, 193, 231, 193,
161163
+ /* 920 */ 187, 188, 189, 190, 127, 128, 129, 238, 195, 193,
161164
+ /* 930 */ 197, 16, 19, 7, 8, 9, 193, 204, 253, 193,
161165
+ /* 940 */ 216, 217, 216, 217, 102, 103, 104, 105, 106, 107,
161166
+ /* 950 */ 108, 109, 110, 111, 112, 113, 43, 44, 45, 46,
161167
+ /* 960 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161168
+ /* 970 */ 57, 213, 239, 240, 193, 76, 19, 188, 232, 190,
161169
+ /* 980 */ 128, 129, 292, 193, 195, 252, 197, 46, 89, 138,
161170
+ /* 990 */ 139, 92, 77, 204, 79, 193, 269, 216, 217, 266,
161171
+ /* 1000 */ 204, 159, 45, 46, 47, 48, 49, 50, 51, 52,
161172
+ /* 1010 */ 53, 54, 55, 56, 57, 102, 103, 104, 105, 106,
161173
+ /* 1020 */ 107, 108, 109, 110, 111, 112, 113, 12, 239, 240,
161174
+ /* 1030 */ 193, 298, 22, 23, 253, 239, 240, 127, 128, 129,
161175
+ /* 1040 */ 238, 252, 27, 193, 286, 204, 193, 204, 252, 291,
161176
+ /* 1050 */ 193, 273, 22, 23, 100, 266, 115, 42, 268, 102,
161177
+ /* 1060 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161178
+ /* 1070 */ 113, 117, 159, 216, 217, 121, 161, 19, 63, 193,
161179
+ /* 1080 */ 239, 240, 239, 240, 12, 208, 209, 298, 73, 311,
161180
+ /* 1090 */ 312, 238, 19, 252, 25, 252, 22, 24, 24, 27,
161181
+ /* 1100 */ 193, 264, 216, 217, 46, 208, 209, 153, 154, 155,
161182
+ /* 1110 */ 253, 101, 19, 23, 42, 25, 43, 44, 45, 46,
161183
+ /* 1120 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161184
+ /* 1130 */ 57, 101, 19, 59, 25, 63, 43, 44, 45, 46,
161185
+ /* 1140 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161186
+ /* 1150 */ 57, 22, 23, 115, 25, 24, 43, 44, 45, 46,
161187
+ /* 1160 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161188
+ /* 1170 */ 57, 22, 23, 115, 25, 102, 103, 104, 105, 106,
161189
+ /* 1180 */ 107, 108, 109, 110, 111, 112, 113, 118, 150, 131,
161190
+ /* 1190 */ 59, 117, 22, 273, 193, 102, 103, 104, 105, 106,
161191
+ /* 1200 */ 107, 108, 109, 110, 111, 112, 113, 204, 66, 204,
161192
+ /* 1210 */ 35, 204, 143, 213, 193, 102, 103, 104, 105, 106,
161193
+ /* 1220 */ 107, 108, 109, 110, 111, 112, 113, 85, 193, 59,
161194
+ /* 1230 */ 101, 311, 312, 16, 193, 19, 94, 216, 217, 238,
161195
+ /* 1240 */ 193, 66, 239, 240, 239, 240, 239, 240, 117, 74,
161196
+ /* 1250 */ 101, 216, 217, 193, 193, 252, 193, 252, 149, 252,
161197
+ /* 1260 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
161198
+ /* 1270 */ 54, 55, 56, 57, 193, 193, 193, 5, 59, 216,
161199
+ /* 1280 */ 217, 25, 10, 11, 12, 13, 14, 117, 146, 17,
161200
+ /* 1290 */ 193, 291, 193, 232, 77, 76, 79, 216, 217, 216,
161201
+ /* 1300 */ 217, 31, 30, 309, 32, 130, 87, 313, 89, 39,
161202
+ /* 1310 */ 193, 92, 40, 216, 217, 216, 217, 108, 102, 103,
161203
+ /* 1320 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
161204
+ /* 1330 */ 299, 300, 193, 216, 217, 116, 117, 118, 19, 20,
161205
+ /* 1340 */ 193, 22, 70, 309, 135, 193, 264, 313, 193, 140,
161206
+ /* 1350 */ 78, 193, 226, 81, 59, 36, 193, 309, 193, 29,
161207
+ /* 1360 */ 193, 313, 193, 33, 145, 193, 59, 48, 216, 217,
161208
+ /* 1370 */ 98, 216, 217, 193, 216, 217, 193, 244, 59, 216,
161209
+ /* 1380 */ 217, 216, 217, 216, 217, 216, 217, 254, 216, 217,
161210
+ /* 1390 */ 71, 193, 244, 193, 193, 65, 216, 217, 193, 216,
161211
+ /* 1400 */ 217, 145, 254, 244, 85, 133, 15, 100, 193, 90,
161212
+ /* 1410 */ 138, 139, 117, 254, 216, 217, 216, 217, 193, 100,
161213
+ /* 1420 */ 193, 216, 217, 116, 117, 106, 107, 19, 121, 193,
161214
+ /* 1430 */ 193, 216, 217, 114, 162, 116, 117, 118, 244, 244,
161215
+ /* 1440 */ 121, 216, 217, 216, 217, 193, 309, 129, 254, 254,
161216
+ /* 1450 */ 313, 60, 216, 217, 19, 256, 257, 193, 120, 121,
161217
+ /* 1460 */ 153, 154, 155, 149, 150, 25, 24, 99, 216, 217,
161218
+ /* 1470 */ 152, 193, 153, 154, 155, 156, 157, 0, 1, 2,
161219
+ /* 1480 */ 216, 217, 5, 22, 158, 24, 160, 10, 11, 12,
161220
+ /* 1490 */ 13, 14, 193, 23, 17, 25, 193, 19, 20, 193,
161221
+ /* 1500 */ 22, 133, 193, 22, 22, 193, 22, 30, 193, 32,
161222
+ /* 1510 */ 19, 20, 129, 22, 36, 216, 217, 40, 193, 216,
161223
+ /* 1520 */ 217, 193, 216, 217, 116, 216, 217, 36, 216, 217,
161224
+ /* 1530 */ 193, 216, 217, 193, 53, 152, 193, 59, 23, 19,
161225
+ /* 1540 */ 25, 216, 217, 61, 216, 217, 23, 70, 25, 71,
161226
+ /* 1550 */ 59, 116, 193, 216, 217, 78, 216, 217, 81, 216,
161227
+ /* 1560 */ 217, 59, 71, 85, 193, 23, 193, 25, 90, 23,
161228
+ /* 1570 */ 23, 25, 25, 7, 8, 98, 85, 193, 100, 193,
161229
+ /* 1580 */ 59, 90, 142, 141, 106, 107, 193, 216, 217, 216,
161230
+ /* 1590 */ 217, 100, 114, 193, 116, 117, 118, 106, 107, 121,
161231
+ /* 1600 */ 216, 217, 216, 217, 193, 114, 193, 116, 117, 118,
161232
+ /* 1610 */ 133, 23, 121, 25, 121, 138, 139, 97, 23, 117,
161233
+ /* 1620 */ 25, 23, 193, 25, 131, 141, 193, 216, 217, 59,
161234
+ /* 1630 */ 193, 153, 154, 155, 156, 157, 226, 193, 117, 162,
161235
+ /* 1640 */ 23, 23, 25, 25, 153, 154, 155, 156, 157, 1,
161236
+ /* 1650 */ 2, 83, 84, 5, 19, 20, 226, 22, 10, 11,
161237
+ /* 1660 */ 12, 13, 14, 258, 153, 17, 155, 153, 23, 155,
161238
+ /* 1670 */ 25, 36, 23, 193, 25, 255, 193, 236, 30, 193,
161239
+ /* 1680 */ 32, 19, 20, 193, 22, 193, 288, 117, 40, 193,
161240
+ /* 1690 */ 318, 193, 193, 193, 59, 242, 193, 193, 36, 193,
161241
+ /* 1700 */ 193, 193, 287, 255, 255, 255, 71, 255, 243, 214,
161242
+ /* 1710 */ 191, 297, 267, 245, 271, 259, 259, 293, 70, 246,
161243
+ /* 1720 */ 246, 59, 267, 229, 245, 271, 78, 293, 259, 81,
161244
+ /* 1730 */ 271, 271, 220, 71, 225, 100, 219, 219, 249, 196,
161245
+ /* 1740 */ 243, 106, 107, 108, 219, 60, 98, 280, 297, 114,
161246
+ /* 1750 */ 249, 116, 117, 118, 141, 245, 121, 200, 200, 297,
161247
+ /* 1760 */ 38, 200, 100, 151, 150, 294, 294, 22, 106, 107,
161248
+ /* 1770 */ 283, 43, 234, 18, 237, 200, 114, 272, 116, 117,
161249
+ /* 1780 */ 118, 133, 237, 121, 18, 237, 138, 139, 153, 154,
161250
+ /* 1790 */ 155, 156, 157, 237, 270, 199, 19, 20, 246, 22,
161251
+ /* 1800 */ 149, 272, 272, 270, 200, 246, 234, 234, 246, 246,
161252
+ /* 1810 */ 162, 158, 290, 36, 199, 153, 154, 155, 156, 157,
161253
+ /* 1820 */ 62, 289, 200, 199, 22, 200, 221, 199, 221, 200,
161254
+ /* 1830 */ 199, 115, 64, 227, 218, 22, 59, 218, 218, 126,
161255
+ /* 1840 */ 165, 24, 113, 312, 218, 224, 305, 224, 71, 282,
161256
+ /* 1850 */ 144, 221, 220, 282, 218, 218, 218, 115, 261, 260,
161257
+ /* 1860 */ 227, 221, 261, 260, 200, 91, 317, 317, 82, 261,
161258
+ /* 1870 */ 260, 148, 261, 22, 265, 145, 200, 100, 158, 277,
161259
+ /* 1880 */ 147, 146, 25, 106, 107, 202, 13, 260, 194, 250,
161260
+ /* 1890 */ 249, 114, 248, 116, 117, 118, 250, 247, 121, 265,
161261
+ /* 1900 */ 246, 194, 6, 192, 192, 207, 192, 207, 213, 213,
161262
+ /* 1910 */ 213, 222, 213, 222, 4, 214, 214, 213, 3, 22,
161263
+ /* 1920 */ 163, 279, 207, 15, 23, 16, 23, 139, 130, 151,
161264
+ /* 1930 */ 153, 154, 155, 156, 157, 142, 25, 24, 20, 144,
161265
+ /* 1940 */ 16, 1, 142, 61, 130, 130, 303, 151, 53, 37,
161266
+ /* 1950 */ 303, 53, 300, 53, 130, 53, 116, 34, 1, 141,
161267
+ /* 1960 */ 5, 22, 115, 25, 161, 75, 41, 68, 141, 115,
161268
+ /* 1970 */ 24, 20, 68, 19, 131, 125, 23, 96, 22, 59,
161269
+ /* 1980 */ 22, 67, 22, 22, 67, 22, 24, 28, 67, 37,
161270
+ /* 1990 */ 23, 149, 22, 25, 23, 23, 23, 23, 22, 141,
161271
+ /* 2000 */ 23, 23, 97, 116, 22, 143, 25, 88, 75, 34,
161272
+ /* 2010 */ 44, 75, 86, 34, 34, 93, 23, 34, 34, 34,
161273
+ /* 2020 */ 22, 24, 34, 22, 25, 25, 23, 23, 23, 23,
161274
+ /* 2030 */ 23, 11, 23, 25, 22, 22, 25, 23, 23, 22,
161275
+ /* 2040 */ 22, 135, 15, 1, 25, 23, 1, 319, 141, 319,
161276
+ /* 2050 */ 319, 319, 319, 319, 319, 319, 319, 141, 319, 319,
161277
+ /* 2060 */ 319, 319, 319, 319, 319, 319, 319, 319, 141, 141,
161278
+ /* 2070 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161279
+ /* 2080 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161280
+ /* 2090 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161281
+ /* 2100 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161282
+ /* 2110 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161283
+ /* 2120 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161284
+ /* 2130 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161285
+ /* 2140 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161286
+ /* 2150 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161287
+ /* 2160 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161288
+ /* 2170 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161289
+ /* 2180 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161290
+ /* 2190 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161291
+ /* 2200 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161292
+ /* 2210 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161293
+ /* 2220 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161294
+ /* 2230 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161295
+ /* 2240 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161296
+ /* 2250 */ 319, 319, 319, 319, 319,
161297
+};
161298
+#define YY_SHIFT_COUNT (573)
161266161299
#define YY_SHIFT_MIN (0)
161267
-#define YY_SHIFT_MAX (2020)
161300
+#define YY_SHIFT_MAX (2045)
161268161301
static const unsigned short int yy_shift_ofst[] = {
161269
- /* 0 */ 1554, 1355, 1740, 1192, 1192, 552, 1264, 1356, 1463, 1587,
161270
- /* 10 */ 1587, 1587, 276, 0, 0, 180, 1015, 1587, 1587, 1587,
161271
- /* 20 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
161272
- /* 30 */ 1049, 1049, 1121, 1121, 54, 667, 552, 552, 552, 552,
161273
- /* 40 */ 552, 40, 110, 219, 289, 396, 439, 509, 548, 618,
161274
- /* 50 */ 657, 727, 766, 836, 995, 1015, 1015, 1015, 1015, 1015,
161275
- /* 60 */ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
161276
- /* 70 */ 1015, 1015, 1015, 1035, 1015, 1138, 880, 880, 1568, 1587,
161277
- /* 80 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
161278
- /* 90 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
161279
- /* 100 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
161280
- /* 110 */ 1587, 1587, 1587, 1676, 1587, 1587, 1587, 1587, 1587, 1587,
161281
- /* 120 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 146, 84, 84,
161282
- /* 130 */ 84, 84, 84, 277, 315, 401, 97, 461, 251, 531,
161283
- /* 140 */ 531, 51, 1190, 531, 531, 324, 324, 531, 713, 713,
161284
- /* 150 */ 713, 713, 151, 154, 154, 4, 149, 2022, 2022, 621,
161285
- /* 160 */ 621, 621, 567, 398, 398, 398, 398, 937, 937, 228,
161286
- /* 170 */ 251, 159, 331, 531, 531, 531, 531, 531, 531, 531,
161287
- /* 180 */ 531, 531, 531, 531, 531, 531, 531, 531, 531, 531,
161288
- /* 190 */ 531, 531, 531, 819, 819, 531, 9, 25, 25, 1102,
161289
- /* 200 */ 1102, 911, 1032, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
161290
- /* 210 */ 255, 317, 317, 514, 403, 620, 471, 672, 781, 891,
161291
- /* 220 */ 675, 531, 531, 531, 531, 531, 531, 531, 531, 531,
161292
- /* 230 */ 531, 454, 531, 531, 531, 531, 531, 531, 531, 531,
161293
- /* 240 */ 531, 531, 531, 531, 790, 790, 790, 531, 531, 531,
161294
- /* 250 */ 338, 531, 531, 531, 516, 930, 531, 531, 993, 531,
161295
- /* 260 */ 531, 531, 531, 531, 531, 531, 531, 778, 944, 725,
161296
- /* 270 */ 994, 994, 994, 994, 1090, 725, 725, 1040, 1006, 951,
161297
- /* 280 */ 1219, 962, 1176, 98, 1278, 1176, 1278, 1317, 1241, 962,
161298
- /* 290 */ 962, 1241, 962, 98, 1317, 286, 1111, 1048, 1288, 1288,
161299
- /* 300 */ 1288, 1278, 1260, 1260, 1180, 1318, 1187, 1372, 1668, 1668,
161300
- /* 310 */ 1591, 1591, 1696, 1696, 1591, 1594, 1589, 1724, 1706, 1741,
161301
- /* 320 */ 1741, 1741, 1741, 1591, 1745, 1620, 1589, 1589, 1620, 1724,
161302
- /* 330 */ 1706, 1620, 1706, 1620, 1591, 1745, 1629, 1726, 1591, 1745,
161303
- /* 340 */ 1775, 1591, 1745, 1591, 1745, 1775, 1690, 1690, 1690, 1742,
161304
- /* 350 */ 1786, 1786, 1775, 1690, 1684, 1690, 1742, 1690, 1690, 1647,
161305
- /* 360 */ 1793, 1713, 1713, 1775, 1694, 1725, 1694, 1725, 1694, 1725,
161306
- /* 370 */ 1694, 1725, 1591, 1750, 1750, 1762, 1762, 1698, 1702, 1826,
161307
- /* 380 */ 1591, 1695, 1698, 1708, 1710, 1620, 1831, 1845, 1845, 1855,
161308
- /* 390 */ 1855, 1855, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
161309
- /* 400 */ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 578, 837, 655,
161310
- /* 410 */ 1193, 167, 839, 1055, 1374, 1303, 1107, 1367, 1212, 1272,
161311
- /* 420 */ 1378, 1384, 1415, 1461, 1472, 1508, 1516, 1517, 1411, 1369,
161312
- /* 430 */ 1539, 1360, 1506, 1473, 1550, 1585, 1509, 1588, 1460, 1468,
161313
- /* 440 */ 1608, 1611, 1526, 1417, 1892, 1894, 1876, 1737, 1887, 1888,
161314
- /* 450 */ 1880, 1882, 1768, 1757, 1779, 1884, 1884, 1886, 1770, 1893,
161315
- /* 460 */ 1769, 1898, 1914, 1776, 1787, 1884, 1789, 1858, 1883, 1884,
161316
- /* 470 */ 1771, 1869, 1870, 1871, 1872, 1797, 1812, 1895, 1788, 1929,
161317
- /* 480 */ 1926, 1910, 1819, 1774, 1867, 1911, 1873, 1862, 1897, 1799,
161318
- /* 490 */ 1828, 1916, 1923, 1925, 1815, 1822, 1927, 1881, 1928, 1930,
161319
- /* 500 */ 1924, 1931, 1889, 1896, 1933, 1863, 1932, 1936, 1899, 1917,
161320
- /* 510 */ 1938, 1803, 1940, 1941, 1942, 1944, 1943, 1946, 1948, 1866,
161321
- /* 520 */ 1832, 1950, 1951, 1856, 1945, 1953, 1834, 1952, 1947, 1949,
161322
- /* 530 */ 1954, 1955, 1890, 1905, 1900, 1956, 1907, 1891, 1957, 1962,
161323
- /* 540 */ 1965, 1966, 1967, 1968, 1960, 1972, 1952, 1973, 1974, 1975,
161324
- /* 550 */ 1976, 1977, 1978, 1981, 1993, 1983, 1984, 1985, 1986, 1988,
161325
- /* 560 */ 1989, 1982, 1878, 1874, 1875, 1877, 1879, 1991, 1990, 2003,
161326
- /* 570 */ 2019, 2020,
161327
-};
161328
-#define YY_REDUCE_COUNT (406)
161329
-#define YY_REDUCE_MIN (-272)
161330
-#define YY_REDUCE_MAX (1686)
161302
+ /* 0 */ 1648, 1477, 1272, 322, 322, 262, 1319, 1478, 1491, 1662,
161303
+ /* 10 */ 1662, 1662, 317, 0, 0, 214, 1093, 1662, 1662, 1662,
161304
+ /* 20 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
161305
+ /* 30 */ 271, 271, 1219, 1219, 216, 88, 262, 262, 262, 262,
161306
+ /* 40 */ 262, 40, 111, 258, 361, 469, 512, 583, 622, 693,
161307
+ /* 50 */ 732, 803, 842, 913, 1073, 1093, 1093, 1093, 1093, 1093,
161308
+ /* 60 */ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
161309
+ /* 70 */ 1093, 1093, 1093, 1113, 1093, 1216, 957, 957, 1635, 1662,
161310
+ /* 80 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
161311
+ /* 90 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
161312
+ /* 100 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
161313
+ /* 110 */ 1662, 1662, 1662, 1662, 1777, 1662, 1662, 1662, 1662, 1662,
161314
+ /* 120 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 137, 181,
161315
+ /* 130 */ 181, 181, 181, 181, 94, 430, 66, 65, 112, 366,
161316
+ /* 140 */ 475, 475, 629, 1058, 475, 475, 125, 125, 475, 686,
161317
+ /* 150 */ 686, 686, 660, 686, 57, 184, 184, 77, 77, 2070,
161318
+ /* 160 */ 2070, 328, 328, 328, 493, 373, 373, 373, 373, 1015,
161319
+ /* 170 */ 1015, 409, 366, 1129, 1149, 475, 475, 475, 475, 475,
161320
+ /* 180 */ 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
161321
+ /* 190 */ 475, 475, 475, 475, 475, 621, 621, 475, 852, 899,
161322
+ /* 200 */ 899, 1295, 1295, 406, 851, 2070, 2070, 2070, 2070, 2070,
161323
+ /* 210 */ 2070, 2070, 1307, 954, 954, 640, 464, 695, 238, 700,
161324
+ /* 220 */ 538, 541, 748, 475, 475, 475, 475, 475, 475, 475,
161325
+ /* 230 */ 475, 475, 475, 634, 475, 475, 475, 475, 475, 475,
161326
+ /* 240 */ 475, 475, 475, 475, 475, 475, 1175, 1175, 1175, 475,
161327
+ /* 250 */ 475, 475, 580, 475, 475, 475, 1074, 1142, 475, 475,
161328
+ /* 260 */ 1072, 475, 475, 475, 475, 475, 475, 475, 475, 797,
161329
+ /* 270 */ 1330, 740, 1131, 1131, 1131, 1131, 1069, 740, 740, 1209,
161330
+ /* 280 */ 167, 926, 1391, 1038, 1314, 187, 1408, 1314, 1408, 1435,
161331
+ /* 290 */ 1109, 1038, 1038, 1109, 1038, 187, 1435, 227, 1090, 941,
161332
+ /* 300 */ 1270, 1270, 1270, 1408, 1256, 1256, 1326, 1440, 513, 1461,
161333
+ /* 310 */ 1685, 1685, 1613, 1613, 1722, 1722, 1613, 1612, 1614, 1745,
161334
+ /* 320 */ 1728, 1755, 1755, 1755, 1755, 1613, 1766, 1651, 1614, 1614,
161335
+ /* 330 */ 1651, 1745, 1728, 1651, 1728, 1651, 1613, 1766, 1653, 1758,
161336
+ /* 340 */ 1613, 1766, 1802, 1613, 1766, 1613, 1766, 1802, 1716, 1716,
161337
+ /* 350 */ 1716, 1768, 1813, 1813, 1802, 1716, 1713, 1716, 1768, 1716,
161338
+ /* 360 */ 1716, 1675, 1817, 1729, 1729, 1802, 1706, 1742, 1706, 1742,
161339
+ /* 370 */ 1706, 1742, 1706, 1742, 1613, 1774, 1774, 1786, 1786, 1723,
161340
+ /* 380 */ 1730, 1851, 1613, 1720, 1723, 1733, 1735, 1651, 1857, 1873,
161341
+ /* 390 */ 1873, 1896, 1896, 1896, 2070, 2070, 2070, 2070, 2070, 2070,
161342
+ /* 400 */ 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 207,
161343
+ /* 410 */ 915, 1010, 1030, 1217, 910, 1170, 1470, 1368, 1481, 1442,
161344
+ /* 420 */ 1318, 1383, 1515, 1482, 1523, 1542, 1546, 1547, 1588, 1595,
161345
+ /* 430 */ 1502, 1338, 1566, 1493, 1520, 1521, 1598, 1617, 1568, 1618,
161346
+ /* 440 */ 1511, 1514, 1645, 1649, 1570, 1484, 1910, 1915, 1897, 1757,
161347
+ /* 450 */ 1908, 1909, 1901, 1903, 1788, 1778, 1798, 1911, 1911, 1913,
161348
+ /* 460 */ 1793, 1918, 1795, 1924, 1940, 1800, 1814, 1911, 1815, 1882,
161349
+ /* 470 */ 1912, 1911, 1796, 1895, 1898, 1900, 1902, 1824, 1840, 1923,
161350
+ /* 480 */ 1818, 1957, 1955, 1939, 1847, 1803, 1899, 1938, 1904, 1890,
161351
+ /* 490 */ 1925, 1827, 1854, 1946, 1951, 1954, 1843, 1850, 1956, 1914,
161352
+ /* 500 */ 1958, 1960, 1953, 1961, 1917, 1920, 1962, 1881, 1959, 1963,
161353
+ /* 510 */ 1921, 1952, 1967, 1842, 1970, 1971, 1972, 1973, 1968, 1974,
161354
+ /* 520 */ 1976, 1905, 1858, 1977, 1978, 1887, 1975, 1982, 1862, 1981,
161355
+ /* 530 */ 1979, 1980, 1983, 1984, 1919, 1933, 1926, 1966, 1936, 1922,
161356
+ /* 540 */ 1985, 1993, 1998, 1997, 1999, 2000, 1988, 2003, 1981, 2004,
161357
+ /* 550 */ 2005, 2006, 2007, 2008, 2009, 2001, 2020, 2012, 2013, 2014,
161358
+ /* 560 */ 2015, 2017, 2018, 2011, 1906, 1907, 1916, 1927, 1928, 2019,
161359
+ /* 570 */ 2022, 2027, 2042, 2045,
161360
+};
161361
+#define YY_REDUCE_COUNT (408)
161362
+#define YY_REDUCE_MIN (-267)
161363
+#define YY_REDUCE_MAX (1715)
161331161364
static const short yy_reduce_ofst[] = {
161332
- /* 0 */ 109, 113, 272, 760, -178, -176, -192, -183, -180, -134,
161333
- /* 10 */ 213, 220, 371, -208, -205, -272, -197, 611, 632, 765,
161334
- /* 20 */ 786, 392, 943, 989, 503, 651, 1039, -18, 702, 821,
161335
- /* 30 */ 710, 812, -188, -67, -187, 555, 662, 1020, 1023, 1050,
161336
- /* 40 */ 1064, -267, -267, -267, -267, -267, -267, -267, -267, -267,
161337
- /* 50 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
161338
- /* 60 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
161339
- /* 70 */ -267, -267, -267, -267, -267, -267, -267, -267, 811, 917,
161340
- /* 80 */ 936, 938, 983, 1014, 1041, 1060, 1080, 1098, 1101, 1118,
161341
- /* 90 */ 1126, 1136, 1146, 1158, 1167, 1194, 1196, 1198, 1206, 1213,
161342
- /* 100 */ 1215, 1232, 1234, 1242, 1245, 1250, 1252, 1259, 1262, 1287,
161343
- /* 110 */ 1289, 1299, 1302, 1304, 1308, 1314, 1321, 1329, 1334, 1336,
161344
- /* 120 */ 1346, 1366, 1380, 1382, 1385, 1410, 1413, -267, -267, -267,
161345
- /* 130 */ -267, -267, -267, -267, -267, 446, -267, 451, -24, 121,
161346
- /* 140 */ 560, 518, 232, 609, 330, -181, -111, 654, 557, 671,
161347
- /* 150 */ 557, 671, 882, -30, 93, -267, -267, -267, -267, 155,
161348
- /* 160 */ 155, 155, 181, 242, 305, 339, 561, -218, 453, 227,
161349
- /* 170 */ 158, 661, 661, -171, 114, 327, 653, -166, 275, 605,
161350
- /* 180 */ 615, 337, 833, 665, 939, 957, 825, 958, 985, 501,
161351
- /* 190 */ 986, 378, 1068, 384, 643, 393, 741, 660, 888, 762,
161352
- /* 200 */ 822, 229, 988, 926, 504, 1025, 1027, 1034, 1026, 1079,
161353
- /* 210 */ -204, -174, -151, 18, 130, 198, 226, 376, 391, 442,
161354
- /* 220 */ 457, 493, 607, 715, 779, 782, 840, 865, 1072, 1099,
161355
- /* 230 */ 1114, 1085, 1166, 1216, 1251, 1263, 1306, 1309, 1343, 1351,
161356
- /* 240 */ 1362, 1368, 1399, 1407, 1227, 1239, 1396, 1438, 1445, 1446,
161357
- /* 250 */ 1383, 1449, 1451, 1452, 1391, 1330, 1456, 1457, 1416, 1458,
161358
- /* 260 */ 226, 1462, 1464, 1465, 1467, 1469, 1470, 1373, 1377, 1412,
161359
- /* 270 */ 1401, 1418, 1419, 1423, 1383, 1412, 1412, 1422, 1453, 1475,
161360
- /* 280 */ 1371, 1400, 1403, 1427, 1420, 1414, 1421, 1390, 1444, 1429,
161361
- /* 290 */ 1431, 1466, 1435, 1474, 1398, 1478, 1480, 1482, 1491, 1492,
161362
- /* 300 */ 1495, 1459, 1471, 1477, 1437, 1483, 1484, 1519, 1433, 1434,
161363
- /* 310 */ 1533, 1534, 1443, 1455, 1538, 1476, 1485, 1486, 1527, 1525,
161364
- /* 320 */ 1528, 1529, 1530, 1563, 1569, 1524, 1500, 1502, 1532, 1505,
161365
- /* 330 */ 1542, 1536, 1545, 1540, 1580, 1586, 1498, 1507, 1595, 1592,
161366
- /* 340 */ 1578, 1600, 1602, 1603, 1605, 1581, 1590, 1596, 1597, 1579,
161367
- /* 350 */ 1593, 1599, 1604, 1598, 1601, 1606, 1607, 1609, 1610, 1501,
161368
- /* 360 */ 1515, 1553, 1555, 1615, 1582, 1584, 1613, 1612, 1614, 1616,
161369
- /* 370 */ 1619, 1617, 1641, 1531, 1535, 1618, 1621, 1631, 1622, 1573,
161370
- /* 380 */ 1651, 1575, 1632, 1636, 1623, 1639, 1656, 1666, 1667, 1671,
161371
- /* 390 */ 1672, 1673, 1564, 1565, 1566, 1662, 1674, 1675, 1677, 1678,
161372
- /* 400 */ 1682, 1670, 1679, 1680, 1681, 1683, 1686,
161365
+ /* 0 */ -125, 733, 789, 241, 293, -123, -193, -191, -183, -187,
161366
+ /* 10 */ -180, 83, 133, -207, -198, -267, -175, -6, 166, 313,
161367
+ /* 20 */ 487, 396, 489, 598, 615, 685, 687, 79, 781, 857,
161368
+ /* 30 */ 490, 616, 240, 334, -188, 796, 841, 843, 1003, 1005,
161369
+ /* 40 */ 1007, -260, -260, -260, -260, -260, -260, -260, -260, -260,
161370
+ /* 50 */ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
161371
+ /* 60 */ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
161372
+ /* 70 */ -260, -260, -260, -260, -260, -260, -260, -260, 158, 203,
161373
+ /* 80 */ 391, 576, 724, 726, 886, 1021, 1035, 1063, 1081, 1083,
161374
+ /* 90 */ 1097, 1099, 1117, 1152, 1155, 1158, 1163, 1165, 1167, 1169,
161375
+ /* 100 */ 1172, 1180, 1183, 1198, 1200, 1205, 1215, 1225, 1227, 1236,
161376
+ /* 110 */ 1252, 1264, 1299, 1303, 1306, 1309, 1312, 1315, 1325, 1328,
161377
+ /* 120 */ 1337, 1340, 1343, 1371, 1373, 1384, 1386, 1411, -260, -260,
161378
+ /* 130 */ -260, -260, -260, -260, -260, -260, -260, -53, 138, 302,
161379
+ /* 140 */ -158, 357, 223, -222, 411, 458, -92, 556, 669, 581,
161380
+ /* 150 */ 632, 581, -260, 632, 758, 778, 920, -260, -260, -260,
161381
+ /* 160 */ -260, 161, 161, 161, 307, 234, 392, 526, 790, 195,
161382
+ /* 170 */ 359, -174, -173, 362, 362, -189, 16, 560, 567, 261,
161383
+ /* 180 */ 689, 802, 853, -122, -166, 408, 335, 617, 690, 837,
161384
+ /* 190 */ 1001, 746, 1061, 515, 1082, 994, 1034, -135, 1000, 1048,
161385
+ /* 200 */ 1137, 877, 897, 186, 627, 1031, 1133, 1148, 1159, 1194,
161386
+ /* 210 */ 1199, 1195, -194, -142, 18, -152, 68, 201, 253, 269,
161387
+ /* 220 */ 294, 354, 521, 528, 676, 680, 736, 743, 850, 907,
161388
+ /* 230 */ 1041, 1047, 1060, 727, 1139, 1147, 1201, 1237, 1278, 1359,
161389
+ /* 240 */ 1393, 1400, 1413, 1429, 1433, 1437, 1126, 1410, 1430, 1444,
161390
+ /* 250 */ 1480, 1483, 1405, 1486, 1490, 1492, 1420, 1372, 1496, 1498,
161391
+ /* 260 */ 1441, 1499, 253, 1500, 1503, 1504, 1506, 1507, 1508, 1398,
161392
+ /* 270 */ 1415, 1453, 1448, 1449, 1450, 1452, 1405, 1453, 1453, 1465,
161393
+ /* 280 */ 1495, 1519, 1414, 1443, 1445, 1468, 1456, 1455, 1457, 1424,
161394
+ /* 290 */ 1473, 1454, 1459, 1474, 1460, 1479, 1434, 1512, 1494, 1509,
161395
+ /* 300 */ 1517, 1518, 1525, 1469, 1489, 1501, 1467, 1510, 1497, 1543,
161396
+ /* 310 */ 1451, 1462, 1557, 1558, 1471, 1472, 1561, 1487, 1505, 1524,
161397
+ /* 320 */ 1538, 1537, 1545, 1548, 1556, 1575, 1596, 1552, 1529, 1530,
161398
+ /* 330 */ 1559, 1533, 1572, 1562, 1573, 1563, 1604, 1615, 1522, 1532,
161399
+ /* 340 */ 1622, 1624, 1605, 1625, 1628, 1629, 1631, 1607, 1616, 1619,
161400
+ /* 350 */ 1620, 1606, 1621, 1623, 1630, 1626, 1632, 1636, 1633, 1637,
161401
+ /* 360 */ 1638, 1531, 1541, 1567, 1571, 1640, 1597, 1599, 1601, 1603,
161402
+ /* 370 */ 1608, 1610, 1611, 1627, 1664, 1549, 1550, 1609, 1634, 1639,
161403
+ /* 380 */ 1641, 1602, 1676, 1642, 1646, 1644, 1650, 1654, 1683, 1694,
161404
+ /* 390 */ 1707, 1711, 1712, 1714, 1643, 1647, 1652, 1698, 1695, 1696,
161405
+ /* 400 */ 1697, 1699, 1700, 1689, 1691, 1701, 1702, 1704, 1715,
161373161406
};
161374161407
static const YYACTIONTYPE yy_default[] = {
161375
- /* 0 */ 1633, 1633, 1633, 1462, 1230, 1341, 1230, 1230, 1230, 1462,
161376
- /* 10 */ 1462, 1462, 1230, 1371, 1371, 1515, 1263, 1230, 1230, 1230,
161377
- /* 20 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1461, 1230, 1230,
161378
- /* 30 */ 1230, 1230, 1550, 1550, 1230, 1230, 1230, 1230, 1230, 1230,
161379
- /* 40 */ 1230, 1230, 1380, 1230, 1387, 1230, 1230, 1230, 1230, 1230,
161380
- /* 50 */ 1463, 1464, 1230, 1230, 1230, 1514, 1516, 1479, 1394, 1393,
161381
- /* 60 */ 1392, 1391, 1497, 1358, 1385, 1378, 1382, 1457, 1458, 1456,
161382
- /* 70 */ 1460, 1464, 1463, 1230, 1381, 1428, 1442, 1427, 1230, 1230,
161383
- /* 80 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161384
- /* 90 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161385
- /* 100 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161386
- /* 110 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161387
- /* 120 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1436, 1441, 1447,
161388
- /* 130 */ 1440, 1437, 1430, 1429, 1431, 1230, 1432, 1230, 1254, 1230,
161389
- /* 140 */ 1230, 1251, 1305, 1230, 1230, 1230, 1230, 1230, 1534, 1533,
161390
- /* 150 */ 1230, 1230, 1263, 1422, 1421, 1433, 1434, 1444, 1443, 1522,
161391
- /* 160 */ 1586, 1585, 1480, 1230, 1230, 1230, 1230, 1230, 1230, 1550,
161392
- /* 170 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161393
- /* 180 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161394
- /* 190 */ 1230, 1230, 1230, 1550, 1550, 1230, 1263, 1550, 1550, 1259,
161395
- /* 200 */ 1259, 1365, 1230, 1529, 1332, 1332, 1332, 1332, 1341, 1332,
161396
- /* 210 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161397
- /* 220 */ 1230, 1230, 1230, 1230, 1230, 1519, 1517, 1230, 1230, 1230,
161398
- /* 230 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161399
- /* 240 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161400
- /* 250 */ 1230, 1230, 1230, 1230, 1337, 1230, 1230, 1230, 1230, 1230,
161401
- /* 260 */ 1230, 1230, 1230, 1230, 1230, 1230, 1579, 1230, 1492, 1319,
161402
- /* 270 */ 1337, 1337, 1337, 1337, 1339, 1320, 1318, 1331, 1264, 1237,
161403
- /* 280 */ 1625, 1397, 1386, 1338, 1360, 1386, 1360, 1622, 1384, 1397,
161404
- /* 290 */ 1397, 1384, 1397, 1338, 1622, 1280, 1602, 1275, 1371, 1371,
161405
- /* 300 */ 1371, 1360, 1365, 1365, 1459, 1338, 1331, 1230, 1625, 1625,
161406
- /* 310 */ 1346, 1346, 1624, 1624, 1346, 1480, 1609, 1406, 1308, 1314,
161407
- /* 320 */ 1314, 1314, 1314, 1346, 1248, 1384, 1609, 1609, 1384, 1406,
161408
- /* 330 */ 1308, 1384, 1308, 1384, 1346, 1248, 1496, 1619, 1346, 1248,
161409
- /* 340 */ 1470, 1346, 1248, 1346, 1248, 1470, 1306, 1306, 1306, 1295,
161410
- /* 350 */ 1230, 1230, 1470, 1306, 1280, 1306, 1295, 1306, 1306, 1568,
161411
- /* 360 */ 1230, 1474, 1474, 1470, 1364, 1359, 1364, 1359, 1364, 1359,
161412
- /* 370 */ 1364, 1359, 1346, 1560, 1560, 1374, 1374, 1379, 1365, 1465,
161413
- /* 380 */ 1346, 1230, 1379, 1377, 1375, 1384, 1298, 1582, 1582, 1578,
161414
- /* 390 */ 1578, 1578, 1630, 1630, 1529, 1595, 1263, 1263, 1263, 1263,
161415
- /* 400 */ 1595, 1282, 1282, 1264, 1264, 1263, 1595, 1230, 1230, 1230,
161416
- /* 410 */ 1230, 1230, 1230, 1590, 1230, 1524, 1481, 1350, 1230, 1230,
161417
- /* 420 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161418
- /* 430 */ 1230, 1230, 1535, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161419
- /* 440 */ 1230, 1230, 1230, 1411, 1230, 1233, 1526, 1230, 1230, 1230,
161420
- /* 450 */ 1230, 1230, 1230, 1230, 1230, 1388, 1389, 1351, 1230, 1230,
161421
- /* 460 */ 1230, 1230, 1230, 1230, 1230, 1403, 1230, 1230, 1230, 1398,
161422
- /* 470 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1621, 1230,
161423
- /* 480 */ 1230, 1230, 1230, 1230, 1230, 1495, 1494, 1230, 1230, 1348,
161424
- /* 490 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161425
- /* 500 */ 1230, 1230, 1230, 1278, 1230, 1230, 1230, 1230, 1230, 1230,
161426
- /* 510 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161427
- /* 520 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1376, 1230, 1230,
161428
- /* 530 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161429
- /* 540 */ 1230, 1230, 1565, 1366, 1230, 1230, 1612, 1230, 1230, 1230,
161430
- /* 550 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161431
- /* 560 */ 1230, 1606, 1322, 1413, 1230, 1412, 1416, 1252, 1230, 1242,
161432
- /* 570 */ 1230, 1230,
161408
+ /* 0 */ 1637, 1637, 1637, 1466, 1233, 1344, 1233, 1233, 1233, 1466,
161409
+ /* 10 */ 1466, 1466, 1233, 1374, 1374, 1519, 1266, 1233, 1233, 1233,
161410
+ /* 20 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1465, 1233, 1233,
161411
+ /* 30 */ 1233, 1233, 1554, 1554, 1233, 1233, 1233, 1233, 1233, 1233,
161412
+ /* 40 */ 1233, 1233, 1383, 1233, 1390, 1233, 1233, 1233, 1233, 1233,
161413
+ /* 50 */ 1467, 1468, 1233, 1233, 1233, 1518, 1520, 1483, 1397, 1396,
161414
+ /* 60 */ 1395, 1394, 1501, 1361, 1388, 1381, 1385, 1461, 1462, 1460,
161415
+ /* 70 */ 1464, 1468, 1467, 1233, 1384, 1431, 1445, 1430, 1233, 1233,
161416
+ /* 80 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161417
+ /* 90 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161418
+ /* 100 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161419
+ /* 110 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161420
+ /* 120 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1439, 1444,
161421
+ /* 130 */ 1451, 1443, 1440, 1433, 1432, 1434, 1435, 1233, 1233, 1257,
161422
+ /* 140 */ 1233, 1233, 1254, 1308, 1233, 1233, 1233, 1233, 1233, 1538,
161423
+ /* 150 */ 1537, 1233, 1436, 1233, 1266, 1425, 1424, 1448, 1437, 1447,
161424
+ /* 160 */ 1446, 1526, 1590, 1589, 1484, 1233, 1233, 1233, 1233, 1233,
161425
+ /* 170 */ 1233, 1554, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161426
+ /* 180 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161427
+ /* 190 */ 1233, 1233, 1233, 1233, 1233, 1554, 1554, 1233, 1266, 1554,
161428
+ /* 200 */ 1554, 1262, 1262, 1368, 1233, 1533, 1335, 1335, 1335, 1335,
161429
+ /* 210 */ 1344, 1335, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161430
+ /* 220 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1523, 1521, 1233,
161431
+ /* 230 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161432
+ /* 240 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161433
+ /* 250 */ 1233, 1233, 1233, 1233, 1233, 1233, 1340, 1233, 1233, 1233,
161434
+ /* 260 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1583, 1233,
161435
+ /* 270 */ 1496, 1322, 1340, 1340, 1340, 1340, 1342, 1323, 1321, 1334,
161436
+ /* 280 */ 1267, 1240, 1629, 1400, 1389, 1341, 1363, 1389, 1363, 1626,
161437
+ /* 290 */ 1387, 1400, 1400, 1387, 1400, 1341, 1626, 1283, 1606, 1278,
161438
+ /* 300 */ 1374, 1374, 1374, 1363, 1368, 1368, 1463, 1341, 1334, 1233,
161439
+ /* 310 */ 1629, 1629, 1349, 1349, 1628, 1628, 1349, 1484, 1613, 1409,
161440
+ /* 320 */ 1311, 1317, 1317, 1317, 1317, 1349, 1251, 1387, 1613, 1613,
161441
+ /* 330 */ 1387, 1409, 1311, 1387, 1311, 1387, 1349, 1251, 1500, 1623,
161442
+ /* 340 */ 1349, 1251, 1474, 1349, 1251, 1349, 1251, 1474, 1309, 1309,
161443
+ /* 350 */ 1309, 1298, 1233, 1233, 1474, 1309, 1283, 1309, 1298, 1309,
161444
+ /* 360 */ 1309, 1572, 1233, 1478, 1478, 1474, 1367, 1362, 1367, 1362,
161445
+ /* 370 */ 1367, 1362, 1367, 1362, 1349, 1564, 1564, 1377, 1377, 1382,
161446
+ /* 380 */ 1368, 1469, 1349, 1233, 1382, 1380, 1378, 1387, 1301, 1586,
161447
+ /* 390 */ 1586, 1582, 1582, 1582, 1634, 1634, 1533, 1599, 1266, 1266,
161448
+ /* 400 */ 1266, 1266, 1599, 1285, 1285, 1267, 1267, 1266, 1599, 1233,
161449
+ /* 410 */ 1233, 1233, 1233, 1233, 1233, 1594, 1233, 1528, 1485, 1353,
161450
+ /* 420 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161451
+ /* 430 */ 1233, 1233, 1233, 1233, 1539, 1233, 1233, 1233, 1233, 1233,
161452
+ /* 440 */ 1233, 1233, 1233, 1233, 1233, 1414, 1233, 1236, 1530, 1233,
161453
+ /* 450 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1391, 1392, 1354,
161454
+ /* 460 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1406, 1233, 1233,
161455
+ /* 470 */ 1233, 1401, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161456
+ /* 480 */ 1625, 1233, 1233, 1233, 1233, 1233, 1233, 1499, 1498, 1233,
161457
+ /* 490 */ 1233, 1351, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161458
+ /* 500 */ 1233, 1233, 1233, 1233, 1233, 1281, 1233, 1233, 1233, 1233,
161459
+ /* 510 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161460
+ /* 520 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1379,
161461
+ /* 530 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161462
+ /* 540 */ 1233, 1233, 1233, 1233, 1569, 1369, 1233, 1233, 1616, 1233,
161463
+ /* 550 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161464
+ /* 560 */ 1233, 1233, 1233, 1610, 1325, 1416, 1233, 1415, 1419, 1255,
161465
+ /* 570 */ 1233, 1245, 1233, 1233,
161433161466
};
161434161467
/********** End of lemon-generated parsing tables *****************************/
161435161468
161436161469
/* The next table maps tokens (terminal symbols) into fallback tokens.
161437161470
** If a construct like the following:
@@ -161492,14 +161525,14 @@
161492161525
59, /* DETACH => ID */
161493161526
59, /* EACH => ID */
161494161527
59, /* FAIL => ID */
161495161528
0, /* OR => nothing */
161496161529
0, /* AND => nothing */
161530
+ 0, /* IS => nothing */
161497161531
59, /* MATCH => ID */
161498161532
59, /* LIKE_KW => ID */
161499161533
0, /* BETWEEN => nothing */
161500
- 0, /* IS => nothing */
161501161534
0, /* IN => nothing */
161502161535
0, /* ISNULL => nothing */
161503161536
0, /* NOTNULL => nothing */
161504161537
0, /* NE => nothing */
161505161538
0, /* EQ => nothing */
@@ -161559,10 +161592,11 @@
161559161592
0, /* MINUS => nothing */
161560161593
0, /* STAR => nothing */
161561161594
0, /* SLASH => nothing */
161562161595
0, /* REM => nothing */
161563161596
0, /* CONCAT => nothing */
161597
+ 0, /* PTR => nothing */
161564161598
0, /* COLLATE => nothing */
161565161599
0, /* BITNOT => nothing */
161566161600
0, /* ON => nothing */
161567161601
0, /* INDEXED => nothing */
161568161602
0, /* STRING => nothing */
@@ -161764,14 +161798,14 @@
161764161798
/* 40 */ "DETACH",
161765161799
/* 41 */ "EACH",
161766161800
/* 42 */ "FAIL",
161767161801
/* 43 */ "OR",
161768161802
/* 44 */ "AND",
161769
- /* 45 */ "MATCH",
161770
- /* 46 */ "LIKE_KW",
161771
- /* 47 */ "BETWEEN",
161772
- /* 48 */ "IS",
161803
+ /* 45 */ "IS",
161804
+ /* 46 */ "MATCH",
161805
+ /* 47 */ "LIKE_KW",
161806
+ /* 48 */ "BETWEEN",
161773161807
/* 49 */ "IN",
161774161808
/* 50 */ "ISNULL",
161775161809
/* 51 */ "NOTNULL",
161776161810
/* 52 */ "NE",
161777161811
/* 53 */ "EQ",
@@ -161831,216 +161865,217 @@
161831161865
/* 107 */ "MINUS",
161832161866
/* 108 */ "STAR",
161833161867
/* 109 */ "SLASH",
161834161868
/* 110 */ "REM",
161835161869
/* 111 */ "CONCAT",
161836
- /* 112 */ "COLLATE",
161837
- /* 113 */ "BITNOT",
161838
- /* 114 */ "ON",
161839
- /* 115 */ "INDEXED",
161840
- /* 116 */ "STRING",
161841
- /* 117 */ "JOIN_KW",
161842
- /* 118 */ "CONSTRAINT",
161843
- /* 119 */ "DEFAULT",
161844
- /* 120 */ "NULL",
161845
- /* 121 */ "PRIMARY",
161846
- /* 122 */ "UNIQUE",
161847
- /* 123 */ "CHECK",
161848
- /* 124 */ "REFERENCES",
161849
- /* 125 */ "AUTOINCR",
161850
- /* 126 */ "INSERT",
161851
- /* 127 */ "DELETE",
161852
- /* 128 */ "UPDATE",
161853
- /* 129 */ "SET",
161854
- /* 130 */ "DEFERRABLE",
161855
- /* 131 */ "FOREIGN",
161856
- /* 132 */ "DROP",
161857
- /* 133 */ "UNION",
161858
- /* 134 */ "ALL",
161859
- /* 135 */ "EXCEPT",
161860
- /* 136 */ "INTERSECT",
161861
- /* 137 */ "SELECT",
161862
- /* 138 */ "VALUES",
161863
- /* 139 */ "DISTINCT",
161864
- /* 140 */ "DOT",
161865
- /* 141 */ "FROM",
161866
- /* 142 */ "JOIN",
161867
- /* 143 */ "USING",
161868
- /* 144 */ "ORDER",
161869
- /* 145 */ "GROUP",
161870
- /* 146 */ "HAVING",
161871
- /* 147 */ "LIMIT",
161872
- /* 148 */ "WHERE",
161873
- /* 149 */ "RETURNING",
161874
- /* 150 */ "INTO",
161875
- /* 151 */ "NOTHING",
161876
- /* 152 */ "FLOAT",
161877
- /* 153 */ "BLOB",
161878
- /* 154 */ "INTEGER",
161879
- /* 155 */ "VARIABLE",
161880
- /* 156 */ "CASE",
161881
- /* 157 */ "WHEN",
161882
- /* 158 */ "THEN",
161883
- /* 159 */ "ELSE",
161884
- /* 160 */ "INDEX",
161885
- /* 161 */ "ALTER",
161886
- /* 162 */ "ADD",
161887
- /* 163 */ "WINDOW",
161888
- /* 164 */ "OVER",
161889
- /* 165 */ "FILTER",
161890
- /* 166 */ "COLUMN",
161891
- /* 167 */ "AGG_FUNCTION",
161892
- /* 168 */ "AGG_COLUMN",
161893
- /* 169 */ "TRUEFALSE",
161894
- /* 170 */ "ISNOT",
161895
- /* 171 */ "FUNCTION",
161896
- /* 172 */ "UMINUS",
161897
- /* 173 */ "UPLUS",
161898
- /* 174 */ "TRUTH",
161899
- /* 175 */ "REGISTER",
161900
- /* 176 */ "VECTOR",
161901
- /* 177 */ "SELECT_COLUMN",
161902
- /* 178 */ "IF_NULL_ROW",
161903
- /* 179 */ "ASTERISK",
161904
- /* 180 */ "SPAN",
161905
- /* 181 */ "ERROR",
161906
- /* 182 */ "SPACE",
161907
- /* 183 */ "ILLEGAL",
161908
- /* 184 */ "input",
161909
- /* 185 */ "cmdlist",
161910
- /* 186 */ "ecmd",
161911
- /* 187 */ "cmdx",
161912
- /* 188 */ "explain",
161913
- /* 189 */ "cmd",
161914
- /* 190 */ "transtype",
161915
- /* 191 */ "trans_opt",
161916
- /* 192 */ "nm",
161917
- /* 193 */ "savepoint_opt",
161918
- /* 194 */ "create_table",
161919
- /* 195 */ "create_table_args",
161920
- /* 196 */ "createkw",
161921
- /* 197 */ "temp",
161922
- /* 198 */ "ifnotexists",
161923
- /* 199 */ "dbnm",
161924
- /* 200 */ "columnlist",
161925
- /* 201 */ "conslist_opt",
161926
- /* 202 */ "table_option_set",
161927
- /* 203 */ "select",
161928
- /* 204 */ "table_option",
161929
- /* 205 */ "columnname",
161930
- /* 206 */ "carglist",
161931
- /* 207 */ "typetoken",
161932
- /* 208 */ "typename",
161933
- /* 209 */ "signed",
161934
- /* 210 */ "plus_num",
161935
- /* 211 */ "minus_num",
161936
- /* 212 */ "scanpt",
161937
- /* 213 */ "scantok",
161938
- /* 214 */ "ccons",
161939
- /* 215 */ "term",
161940
- /* 216 */ "expr",
161941
- /* 217 */ "onconf",
161942
- /* 218 */ "sortorder",
161943
- /* 219 */ "autoinc",
161944
- /* 220 */ "eidlist_opt",
161945
- /* 221 */ "refargs",
161946
- /* 222 */ "defer_subclause",
161947
- /* 223 */ "generated",
161948
- /* 224 */ "refarg",
161949
- /* 225 */ "refact",
161950
- /* 226 */ "init_deferred_pred_opt",
161951
- /* 227 */ "conslist",
161952
- /* 228 */ "tconscomma",
161953
- /* 229 */ "tcons",
161954
- /* 230 */ "sortlist",
161955
- /* 231 */ "eidlist",
161956
- /* 232 */ "defer_subclause_opt",
161957
- /* 233 */ "orconf",
161958
- /* 234 */ "resolvetype",
161959
- /* 235 */ "raisetype",
161960
- /* 236 */ "ifexists",
161961
- /* 237 */ "fullname",
161962
- /* 238 */ "selectnowith",
161963
- /* 239 */ "oneselect",
161964
- /* 240 */ "wqlist",
161965
- /* 241 */ "multiselect_op",
161966
- /* 242 */ "distinct",
161967
- /* 243 */ "selcollist",
161968
- /* 244 */ "from",
161969
- /* 245 */ "where_opt",
161970
- /* 246 */ "groupby_opt",
161971
- /* 247 */ "having_opt",
161972
- /* 248 */ "orderby_opt",
161973
- /* 249 */ "limit_opt",
161974
- /* 250 */ "window_clause",
161975
- /* 251 */ "values",
161976
- /* 252 */ "nexprlist",
161977
- /* 253 */ "sclp",
161978
- /* 254 */ "as",
161979
- /* 255 */ "seltablist",
161980
- /* 256 */ "stl_prefix",
161981
- /* 257 */ "joinop",
161982
- /* 258 */ "indexed_opt",
161983
- /* 259 */ "on_opt",
161984
- /* 260 */ "using_opt",
161985
- /* 261 */ "exprlist",
161986
- /* 262 */ "xfullname",
161987
- /* 263 */ "idlist",
161988
- /* 264 */ "nulls",
161989
- /* 265 */ "with",
161990
- /* 266 */ "where_opt_ret",
161991
- /* 267 */ "setlist",
161992
- /* 268 */ "insert_cmd",
161993
- /* 269 */ "idlist_opt",
161994
- /* 270 */ "upsert",
161995
- /* 271 */ "returning",
161996
- /* 272 */ "filter_over",
161997
- /* 273 */ "likeop",
161998
- /* 274 */ "between_op",
161999
- /* 275 */ "in_op",
162000
- /* 276 */ "paren_exprlist",
162001
- /* 277 */ "case_operand",
162002
- /* 278 */ "case_exprlist",
162003
- /* 279 */ "case_else",
162004
- /* 280 */ "uniqueflag",
162005
- /* 281 */ "collate",
162006
- /* 282 */ "vinto",
162007
- /* 283 */ "nmnum",
162008
- /* 284 */ "trigger_decl",
162009
- /* 285 */ "trigger_cmd_list",
162010
- /* 286 */ "trigger_time",
162011
- /* 287 */ "trigger_event",
162012
- /* 288 */ "foreach_clause",
162013
- /* 289 */ "when_clause",
162014
- /* 290 */ "trigger_cmd",
162015
- /* 291 */ "trnm",
162016
- /* 292 */ "tridxby",
162017
- /* 293 */ "database_kw_opt",
162018
- /* 294 */ "key_opt",
162019
- /* 295 */ "add_column_fullname",
162020
- /* 296 */ "kwcolumn_opt",
162021
- /* 297 */ "create_vtab",
162022
- /* 298 */ "vtabarglist",
162023
- /* 299 */ "vtabarg",
162024
- /* 300 */ "vtabargtoken",
162025
- /* 301 */ "lp",
162026
- /* 302 */ "anylist",
162027
- /* 303 */ "wqitem",
162028
- /* 304 */ "wqas",
162029
- /* 305 */ "windowdefn_list",
162030
- /* 306 */ "windowdefn",
162031
- /* 307 */ "window",
162032
- /* 308 */ "frame_opt",
162033
- /* 309 */ "part_opt",
162034
- /* 310 */ "filter_clause",
162035
- /* 311 */ "over_clause",
162036
- /* 312 */ "range_or_rows",
162037
- /* 313 */ "frame_bound",
162038
- /* 314 */ "frame_bound_s",
162039
- /* 315 */ "frame_bound_e",
162040
- /* 316 */ "frame_exclude_opt",
162041
- /* 317 */ "frame_exclude",
161870
+ /* 112 */ "PTR",
161871
+ /* 113 */ "COLLATE",
161872
+ /* 114 */ "BITNOT",
161873
+ /* 115 */ "ON",
161874
+ /* 116 */ "INDEXED",
161875
+ /* 117 */ "STRING",
161876
+ /* 118 */ "JOIN_KW",
161877
+ /* 119 */ "CONSTRAINT",
161878
+ /* 120 */ "DEFAULT",
161879
+ /* 121 */ "NULL",
161880
+ /* 122 */ "PRIMARY",
161881
+ /* 123 */ "UNIQUE",
161882
+ /* 124 */ "CHECK",
161883
+ /* 125 */ "REFERENCES",
161884
+ /* 126 */ "AUTOINCR",
161885
+ /* 127 */ "INSERT",
161886
+ /* 128 */ "DELETE",
161887
+ /* 129 */ "UPDATE",
161888
+ /* 130 */ "SET",
161889
+ /* 131 */ "DEFERRABLE",
161890
+ /* 132 */ "FOREIGN",
161891
+ /* 133 */ "DROP",
161892
+ /* 134 */ "UNION",
161893
+ /* 135 */ "ALL",
161894
+ /* 136 */ "EXCEPT",
161895
+ /* 137 */ "INTERSECT",
161896
+ /* 138 */ "SELECT",
161897
+ /* 139 */ "VALUES",
161898
+ /* 140 */ "DISTINCT",
161899
+ /* 141 */ "DOT",
161900
+ /* 142 */ "FROM",
161901
+ /* 143 */ "JOIN",
161902
+ /* 144 */ "USING",
161903
+ /* 145 */ "ORDER",
161904
+ /* 146 */ "GROUP",
161905
+ /* 147 */ "HAVING",
161906
+ /* 148 */ "LIMIT",
161907
+ /* 149 */ "WHERE",
161908
+ /* 150 */ "RETURNING",
161909
+ /* 151 */ "INTO",
161910
+ /* 152 */ "NOTHING",
161911
+ /* 153 */ "FLOAT",
161912
+ /* 154 */ "BLOB",
161913
+ /* 155 */ "INTEGER",
161914
+ /* 156 */ "VARIABLE",
161915
+ /* 157 */ "CASE",
161916
+ /* 158 */ "WHEN",
161917
+ /* 159 */ "THEN",
161918
+ /* 160 */ "ELSE",
161919
+ /* 161 */ "INDEX",
161920
+ /* 162 */ "ALTER",
161921
+ /* 163 */ "ADD",
161922
+ /* 164 */ "WINDOW",
161923
+ /* 165 */ "OVER",
161924
+ /* 166 */ "FILTER",
161925
+ /* 167 */ "COLUMN",
161926
+ /* 168 */ "AGG_FUNCTION",
161927
+ /* 169 */ "AGG_COLUMN",
161928
+ /* 170 */ "TRUEFALSE",
161929
+ /* 171 */ "ISNOT",
161930
+ /* 172 */ "FUNCTION",
161931
+ /* 173 */ "UMINUS",
161932
+ /* 174 */ "UPLUS",
161933
+ /* 175 */ "TRUTH",
161934
+ /* 176 */ "REGISTER",
161935
+ /* 177 */ "VECTOR",
161936
+ /* 178 */ "SELECT_COLUMN",
161937
+ /* 179 */ "IF_NULL_ROW",
161938
+ /* 180 */ "ASTERISK",
161939
+ /* 181 */ "SPAN",
161940
+ /* 182 */ "ERROR",
161941
+ /* 183 */ "SPACE",
161942
+ /* 184 */ "ILLEGAL",
161943
+ /* 185 */ "input",
161944
+ /* 186 */ "cmdlist",
161945
+ /* 187 */ "ecmd",
161946
+ /* 188 */ "cmdx",
161947
+ /* 189 */ "explain",
161948
+ /* 190 */ "cmd",
161949
+ /* 191 */ "transtype",
161950
+ /* 192 */ "trans_opt",
161951
+ /* 193 */ "nm",
161952
+ /* 194 */ "savepoint_opt",
161953
+ /* 195 */ "create_table",
161954
+ /* 196 */ "create_table_args",
161955
+ /* 197 */ "createkw",
161956
+ /* 198 */ "temp",
161957
+ /* 199 */ "ifnotexists",
161958
+ /* 200 */ "dbnm",
161959
+ /* 201 */ "columnlist",
161960
+ /* 202 */ "conslist_opt",
161961
+ /* 203 */ "table_option_set",
161962
+ /* 204 */ "select",
161963
+ /* 205 */ "table_option",
161964
+ /* 206 */ "columnname",
161965
+ /* 207 */ "carglist",
161966
+ /* 208 */ "typetoken",
161967
+ /* 209 */ "typename",
161968
+ /* 210 */ "signed",
161969
+ /* 211 */ "plus_num",
161970
+ /* 212 */ "minus_num",
161971
+ /* 213 */ "scanpt",
161972
+ /* 214 */ "scantok",
161973
+ /* 215 */ "ccons",
161974
+ /* 216 */ "term",
161975
+ /* 217 */ "expr",
161976
+ /* 218 */ "onconf",
161977
+ /* 219 */ "sortorder",
161978
+ /* 220 */ "autoinc",
161979
+ /* 221 */ "eidlist_opt",
161980
+ /* 222 */ "refargs",
161981
+ /* 223 */ "defer_subclause",
161982
+ /* 224 */ "generated",
161983
+ /* 225 */ "refarg",
161984
+ /* 226 */ "refact",
161985
+ /* 227 */ "init_deferred_pred_opt",
161986
+ /* 228 */ "conslist",
161987
+ /* 229 */ "tconscomma",
161988
+ /* 230 */ "tcons",
161989
+ /* 231 */ "sortlist",
161990
+ /* 232 */ "eidlist",
161991
+ /* 233 */ "defer_subclause_opt",
161992
+ /* 234 */ "orconf",
161993
+ /* 235 */ "resolvetype",
161994
+ /* 236 */ "raisetype",
161995
+ /* 237 */ "ifexists",
161996
+ /* 238 */ "fullname",
161997
+ /* 239 */ "selectnowith",
161998
+ /* 240 */ "oneselect",
161999
+ /* 241 */ "wqlist",
162000
+ /* 242 */ "multiselect_op",
162001
+ /* 243 */ "distinct",
162002
+ /* 244 */ "selcollist",
162003
+ /* 245 */ "from",
162004
+ /* 246 */ "where_opt",
162005
+ /* 247 */ "groupby_opt",
162006
+ /* 248 */ "having_opt",
162007
+ /* 249 */ "orderby_opt",
162008
+ /* 250 */ "limit_opt",
162009
+ /* 251 */ "window_clause",
162010
+ /* 252 */ "values",
162011
+ /* 253 */ "nexprlist",
162012
+ /* 254 */ "sclp",
162013
+ /* 255 */ "as",
162014
+ /* 256 */ "seltablist",
162015
+ /* 257 */ "stl_prefix",
162016
+ /* 258 */ "joinop",
162017
+ /* 259 */ "indexed_opt",
162018
+ /* 260 */ "on_opt",
162019
+ /* 261 */ "using_opt",
162020
+ /* 262 */ "exprlist",
162021
+ /* 263 */ "xfullname",
162022
+ /* 264 */ "idlist",
162023
+ /* 265 */ "nulls",
162024
+ /* 266 */ "with",
162025
+ /* 267 */ "where_opt_ret",
162026
+ /* 268 */ "setlist",
162027
+ /* 269 */ "insert_cmd",
162028
+ /* 270 */ "idlist_opt",
162029
+ /* 271 */ "upsert",
162030
+ /* 272 */ "returning",
162031
+ /* 273 */ "filter_over",
162032
+ /* 274 */ "likeop",
162033
+ /* 275 */ "between_op",
162034
+ /* 276 */ "in_op",
162035
+ /* 277 */ "paren_exprlist",
162036
+ /* 278 */ "case_operand",
162037
+ /* 279 */ "case_exprlist",
162038
+ /* 280 */ "case_else",
162039
+ /* 281 */ "uniqueflag",
162040
+ /* 282 */ "collate",
162041
+ /* 283 */ "vinto",
162042
+ /* 284 */ "nmnum",
162043
+ /* 285 */ "trigger_decl",
162044
+ /* 286 */ "trigger_cmd_list",
162045
+ /* 287 */ "trigger_time",
162046
+ /* 288 */ "trigger_event",
162047
+ /* 289 */ "foreach_clause",
162048
+ /* 290 */ "when_clause",
162049
+ /* 291 */ "trigger_cmd",
162050
+ /* 292 */ "trnm",
162051
+ /* 293 */ "tridxby",
162052
+ /* 294 */ "database_kw_opt",
162053
+ /* 295 */ "key_opt",
162054
+ /* 296 */ "add_column_fullname",
162055
+ /* 297 */ "kwcolumn_opt",
162056
+ /* 298 */ "create_vtab",
162057
+ /* 299 */ "vtabarglist",
162058
+ /* 300 */ "vtabarg",
162059
+ /* 301 */ "vtabargtoken",
162060
+ /* 302 */ "lp",
162061
+ /* 303 */ "anylist",
162062
+ /* 304 */ "wqitem",
162063
+ /* 305 */ "wqas",
162064
+ /* 306 */ "windowdefn_list",
162065
+ /* 307 */ "windowdefn",
162066
+ /* 308 */ "window",
162067
+ /* 309 */ "frame_opt",
162068
+ /* 310 */ "part_opt",
162069
+ /* 311 */ "filter_clause",
162070
+ /* 312 */ "over_clause",
162071
+ /* 313 */ "range_or_rows",
162072
+ /* 314 */ "frame_bound",
162073
+ /* 315 */ "frame_bound_s",
162074
+ /* 316 */ "frame_bound_e",
162075
+ /* 317 */ "frame_exclude_opt",
162076
+ /* 318 */ "frame_exclude",
162042162077
};
162043162078
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
162044162079
162045162080
#ifndef NDEBUG
162046162081
/* For tracing reduce actions, the names of all rules are required.
@@ -162256,199 +162291,200 @@
162256162291
/* 207 */ "expr ::= expr IS expr",
162257162292
/* 208 */ "expr ::= expr IS NOT expr",
162258162293
/* 209 */ "expr ::= NOT expr",
162259162294
/* 210 */ "expr ::= BITNOT expr",
162260162295
/* 211 */ "expr ::= PLUS|MINUS expr",
162261
- /* 212 */ "between_op ::= BETWEEN",
162262
- /* 213 */ "between_op ::= NOT BETWEEN",
162263
- /* 214 */ "expr ::= expr between_op expr AND expr",
162264
- /* 215 */ "in_op ::= IN",
162265
- /* 216 */ "in_op ::= NOT IN",
162266
- /* 217 */ "expr ::= expr in_op LP exprlist RP",
162267
- /* 218 */ "expr ::= LP select RP",
162268
- /* 219 */ "expr ::= expr in_op LP select RP",
162269
- /* 220 */ "expr ::= expr in_op nm dbnm paren_exprlist",
162270
- /* 221 */ "expr ::= EXISTS LP select RP",
162271
- /* 222 */ "expr ::= CASE case_operand case_exprlist case_else END",
162272
- /* 223 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
162273
- /* 224 */ "case_exprlist ::= WHEN expr THEN expr",
162274
- /* 225 */ "case_else ::= ELSE expr",
162275
- /* 226 */ "case_else ::=",
162276
- /* 227 */ "case_operand ::= expr",
162277
- /* 228 */ "case_operand ::=",
162278
- /* 229 */ "exprlist ::=",
162279
- /* 230 */ "nexprlist ::= nexprlist COMMA expr",
162280
- /* 231 */ "nexprlist ::= expr",
162281
- /* 232 */ "paren_exprlist ::=",
162282
- /* 233 */ "paren_exprlist ::= LP exprlist RP",
162283
- /* 234 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
162284
- /* 235 */ "uniqueflag ::= UNIQUE",
162285
- /* 236 */ "uniqueflag ::=",
162286
- /* 237 */ "eidlist_opt ::=",
162287
- /* 238 */ "eidlist_opt ::= LP eidlist RP",
162288
- /* 239 */ "eidlist ::= eidlist COMMA nm collate sortorder",
162289
- /* 240 */ "eidlist ::= nm collate sortorder",
162290
- /* 241 */ "collate ::=",
162291
- /* 242 */ "collate ::= COLLATE ID|STRING",
162292
- /* 243 */ "cmd ::= DROP INDEX ifexists fullname",
162293
- /* 244 */ "cmd ::= VACUUM vinto",
162294
- /* 245 */ "cmd ::= VACUUM nm vinto",
162295
- /* 246 */ "vinto ::= INTO expr",
162296
- /* 247 */ "vinto ::=",
162297
- /* 248 */ "cmd ::= PRAGMA nm dbnm",
162298
- /* 249 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
162299
- /* 250 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
162300
- /* 251 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
162301
- /* 252 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
162302
- /* 253 */ "plus_num ::= PLUS INTEGER|FLOAT",
162303
- /* 254 */ "minus_num ::= MINUS INTEGER|FLOAT",
162304
- /* 255 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
162305
- /* 256 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
162306
- /* 257 */ "trigger_time ::= BEFORE|AFTER",
162307
- /* 258 */ "trigger_time ::= INSTEAD OF",
162308
- /* 259 */ "trigger_time ::=",
162309
- /* 260 */ "trigger_event ::= DELETE|INSERT",
162310
- /* 261 */ "trigger_event ::= UPDATE",
162311
- /* 262 */ "trigger_event ::= UPDATE OF idlist",
162312
- /* 263 */ "when_clause ::=",
162313
- /* 264 */ "when_clause ::= WHEN expr",
162314
- /* 265 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
162315
- /* 266 */ "trigger_cmd_list ::= trigger_cmd SEMI",
162316
- /* 267 */ "trnm ::= nm DOT nm",
162317
- /* 268 */ "tridxby ::= INDEXED BY nm",
162318
- /* 269 */ "tridxby ::= NOT INDEXED",
162319
- /* 270 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
162320
- /* 271 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
162321
- /* 272 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
162322
- /* 273 */ "trigger_cmd ::= scanpt select scanpt",
162323
- /* 274 */ "expr ::= RAISE LP IGNORE RP",
162324
- /* 275 */ "expr ::= RAISE LP raisetype COMMA nm RP",
162325
- /* 276 */ "raisetype ::= ROLLBACK",
162326
- /* 277 */ "raisetype ::= ABORT",
162327
- /* 278 */ "raisetype ::= FAIL",
162328
- /* 279 */ "cmd ::= DROP TRIGGER ifexists fullname",
162329
- /* 280 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
162330
- /* 281 */ "cmd ::= DETACH database_kw_opt expr",
162331
- /* 282 */ "key_opt ::=",
162332
- /* 283 */ "key_opt ::= KEY expr",
162333
- /* 284 */ "cmd ::= REINDEX",
162334
- /* 285 */ "cmd ::= REINDEX nm dbnm",
162335
- /* 286 */ "cmd ::= ANALYZE",
162336
- /* 287 */ "cmd ::= ANALYZE nm dbnm",
162337
- /* 288 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
162338
- /* 289 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
162339
- /* 290 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
162340
- /* 291 */ "add_column_fullname ::= fullname",
162341
- /* 292 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
162342
- /* 293 */ "cmd ::= create_vtab",
162343
- /* 294 */ "cmd ::= create_vtab LP vtabarglist RP",
162344
- /* 295 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
162345
- /* 296 */ "vtabarg ::=",
162346
- /* 297 */ "vtabargtoken ::= ANY",
162347
- /* 298 */ "vtabargtoken ::= lp anylist RP",
162348
- /* 299 */ "lp ::= LP",
162349
- /* 300 */ "with ::= WITH wqlist",
162350
- /* 301 */ "with ::= WITH RECURSIVE wqlist",
162351
- /* 302 */ "wqas ::= AS",
162352
- /* 303 */ "wqas ::= AS MATERIALIZED",
162353
- /* 304 */ "wqas ::= AS NOT MATERIALIZED",
162354
- /* 305 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
162355
- /* 306 */ "wqlist ::= wqitem",
162356
- /* 307 */ "wqlist ::= wqlist COMMA wqitem",
162357
- /* 308 */ "windowdefn_list ::= windowdefn",
162358
- /* 309 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
162359
- /* 310 */ "windowdefn ::= nm AS LP window RP",
162360
- /* 311 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
162361
- /* 312 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
162362
- /* 313 */ "window ::= ORDER BY sortlist frame_opt",
162363
- /* 314 */ "window ::= nm ORDER BY sortlist frame_opt",
162364
- /* 315 */ "window ::= frame_opt",
162365
- /* 316 */ "window ::= nm frame_opt",
162366
- /* 317 */ "frame_opt ::=",
162367
- /* 318 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
162368
- /* 319 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
162369
- /* 320 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
162370
- /* 321 */ "frame_bound_s ::= frame_bound",
162371
- /* 322 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
162372
- /* 323 */ "frame_bound_e ::= frame_bound",
162373
- /* 324 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
162374
- /* 325 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
162375
- /* 326 */ "frame_bound ::= CURRENT ROW",
162376
- /* 327 */ "frame_exclude_opt ::=",
162377
- /* 328 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
162378
- /* 329 */ "frame_exclude ::= NO OTHERS",
162379
- /* 330 */ "frame_exclude ::= CURRENT ROW",
162380
- /* 331 */ "frame_exclude ::= GROUP|TIES",
162381
- /* 332 */ "window_clause ::= WINDOW windowdefn_list",
162382
- /* 333 */ "filter_over ::= filter_clause over_clause",
162383
- /* 334 */ "filter_over ::= over_clause",
162384
- /* 335 */ "filter_over ::= filter_clause",
162385
- /* 336 */ "over_clause ::= OVER LP window RP",
162386
- /* 337 */ "over_clause ::= OVER nm",
162387
- /* 338 */ "filter_clause ::= FILTER LP WHERE expr RP",
162388
- /* 339 */ "input ::= cmdlist",
162389
- /* 340 */ "cmdlist ::= cmdlist ecmd",
162390
- /* 341 */ "cmdlist ::= ecmd",
162391
- /* 342 */ "ecmd ::= SEMI",
162392
- /* 343 */ "ecmd ::= cmdx SEMI",
162393
- /* 344 */ "ecmd ::= explain cmdx SEMI",
162394
- /* 345 */ "trans_opt ::=",
162395
- /* 346 */ "trans_opt ::= TRANSACTION",
162396
- /* 347 */ "trans_opt ::= TRANSACTION nm",
162397
- /* 348 */ "savepoint_opt ::= SAVEPOINT",
162398
- /* 349 */ "savepoint_opt ::=",
162399
- /* 350 */ "cmd ::= create_table create_table_args",
162400
- /* 351 */ "table_option_set ::= table_option",
162401
- /* 352 */ "columnlist ::= columnlist COMMA columnname carglist",
162402
- /* 353 */ "columnlist ::= columnname carglist",
162403
- /* 354 */ "nm ::= ID|INDEXED",
162404
- /* 355 */ "nm ::= STRING",
162405
- /* 356 */ "nm ::= JOIN_KW",
162406
- /* 357 */ "typetoken ::= typename",
162407
- /* 358 */ "typename ::= ID|STRING",
162408
- /* 359 */ "signed ::= plus_num",
162409
- /* 360 */ "signed ::= minus_num",
162410
- /* 361 */ "carglist ::= carglist ccons",
162411
- /* 362 */ "carglist ::=",
162412
- /* 363 */ "ccons ::= NULL onconf",
162413
- /* 364 */ "ccons ::= GENERATED ALWAYS AS generated",
162414
- /* 365 */ "ccons ::= AS generated",
162415
- /* 366 */ "conslist_opt ::= COMMA conslist",
162416
- /* 367 */ "conslist ::= conslist tconscomma tcons",
162417
- /* 368 */ "conslist ::= tcons",
162418
- /* 369 */ "tconscomma ::=",
162419
- /* 370 */ "defer_subclause_opt ::= defer_subclause",
162420
- /* 371 */ "resolvetype ::= raisetype",
162421
- /* 372 */ "selectnowith ::= oneselect",
162422
- /* 373 */ "oneselect ::= values",
162423
- /* 374 */ "sclp ::= selcollist COMMA",
162424
- /* 375 */ "as ::= ID|STRING",
162425
- /* 376 */ "returning ::=",
162426
- /* 377 */ "expr ::= term",
162427
- /* 378 */ "likeop ::= LIKE_KW|MATCH",
162428
- /* 379 */ "exprlist ::= nexprlist",
162429
- /* 380 */ "nmnum ::= plus_num",
162430
- /* 381 */ "nmnum ::= nm",
162431
- /* 382 */ "nmnum ::= ON",
162432
- /* 383 */ "nmnum ::= DELETE",
162433
- /* 384 */ "nmnum ::= DEFAULT",
162434
- /* 385 */ "plus_num ::= INTEGER|FLOAT",
162435
- /* 386 */ "foreach_clause ::=",
162436
- /* 387 */ "foreach_clause ::= FOR EACH ROW",
162437
- /* 388 */ "trnm ::= nm",
162438
- /* 389 */ "tridxby ::=",
162439
- /* 390 */ "database_kw_opt ::= DATABASE",
162440
- /* 391 */ "database_kw_opt ::=",
162441
- /* 392 */ "kwcolumn_opt ::=",
162442
- /* 393 */ "kwcolumn_opt ::= COLUMNKW",
162443
- /* 394 */ "vtabarglist ::= vtabarg",
162444
- /* 395 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
162445
- /* 396 */ "vtabarg ::= vtabarg vtabargtoken",
162446
- /* 397 */ "anylist ::=",
162447
- /* 398 */ "anylist ::= anylist LP anylist RP",
162448
- /* 399 */ "anylist ::= anylist ANY",
162449
- /* 400 */ "with ::=",
162296
+ /* 212 */ "expr ::= expr PTR expr",
162297
+ /* 213 */ "between_op ::= BETWEEN",
162298
+ /* 214 */ "between_op ::= NOT BETWEEN",
162299
+ /* 215 */ "expr ::= expr between_op expr AND expr",
162300
+ /* 216 */ "in_op ::= IN",
162301
+ /* 217 */ "in_op ::= NOT IN",
162302
+ /* 218 */ "expr ::= expr in_op LP exprlist RP",
162303
+ /* 219 */ "expr ::= LP select RP",
162304
+ /* 220 */ "expr ::= expr in_op LP select RP",
162305
+ /* 221 */ "expr ::= expr in_op nm dbnm paren_exprlist",
162306
+ /* 222 */ "expr ::= EXISTS LP select RP",
162307
+ /* 223 */ "expr ::= CASE case_operand case_exprlist case_else END",
162308
+ /* 224 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
162309
+ /* 225 */ "case_exprlist ::= WHEN expr THEN expr",
162310
+ /* 226 */ "case_else ::= ELSE expr",
162311
+ /* 227 */ "case_else ::=",
162312
+ /* 228 */ "case_operand ::= expr",
162313
+ /* 229 */ "case_operand ::=",
162314
+ /* 230 */ "exprlist ::=",
162315
+ /* 231 */ "nexprlist ::= nexprlist COMMA expr",
162316
+ /* 232 */ "nexprlist ::= expr",
162317
+ /* 233 */ "paren_exprlist ::=",
162318
+ /* 234 */ "paren_exprlist ::= LP exprlist RP",
162319
+ /* 235 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
162320
+ /* 236 */ "uniqueflag ::= UNIQUE",
162321
+ /* 237 */ "uniqueflag ::=",
162322
+ /* 238 */ "eidlist_opt ::=",
162323
+ /* 239 */ "eidlist_opt ::= LP eidlist RP",
162324
+ /* 240 */ "eidlist ::= eidlist COMMA nm collate sortorder",
162325
+ /* 241 */ "eidlist ::= nm collate sortorder",
162326
+ /* 242 */ "collate ::=",
162327
+ /* 243 */ "collate ::= COLLATE ID|STRING",
162328
+ /* 244 */ "cmd ::= DROP INDEX ifexists fullname",
162329
+ /* 245 */ "cmd ::= VACUUM vinto",
162330
+ /* 246 */ "cmd ::= VACUUM nm vinto",
162331
+ /* 247 */ "vinto ::= INTO expr",
162332
+ /* 248 */ "vinto ::=",
162333
+ /* 249 */ "cmd ::= PRAGMA nm dbnm",
162334
+ /* 250 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
162335
+ /* 251 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
162336
+ /* 252 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
162337
+ /* 253 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
162338
+ /* 254 */ "plus_num ::= PLUS INTEGER|FLOAT",
162339
+ /* 255 */ "minus_num ::= MINUS INTEGER|FLOAT",
162340
+ /* 256 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
162341
+ /* 257 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
162342
+ /* 258 */ "trigger_time ::= BEFORE|AFTER",
162343
+ /* 259 */ "trigger_time ::= INSTEAD OF",
162344
+ /* 260 */ "trigger_time ::=",
162345
+ /* 261 */ "trigger_event ::= DELETE|INSERT",
162346
+ /* 262 */ "trigger_event ::= UPDATE",
162347
+ /* 263 */ "trigger_event ::= UPDATE OF idlist",
162348
+ /* 264 */ "when_clause ::=",
162349
+ /* 265 */ "when_clause ::= WHEN expr",
162350
+ /* 266 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
162351
+ /* 267 */ "trigger_cmd_list ::= trigger_cmd SEMI",
162352
+ /* 268 */ "trnm ::= nm DOT nm",
162353
+ /* 269 */ "tridxby ::= INDEXED BY nm",
162354
+ /* 270 */ "tridxby ::= NOT INDEXED",
162355
+ /* 271 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
162356
+ /* 272 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
162357
+ /* 273 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
162358
+ /* 274 */ "trigger_cmd ::= scanpt select scanpt",
162359
+ /* 275 */ "expr ::= RAISE LP IGNORE RP",
162360
+ /* 276 */ "expr ::= RAISE LP raisetype COMMA nm RP",
162361
+ /* 277 */ "raisetype ::= ROLLBACK",
162362
+ /* 278 */ "raisetype ::= ABORT",
162363
+ /* 279 */ "raisetype ::= FAIL",
162364
+ /* 280 */ "cmd ::= DROP TRIGGER ifexists fullname",
162365
+ /* 281 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
162366
+ /* 282 */ "cmd ::= DETACH database_kw_opt expr",
162367
+ /* 283 */ "key_opt ::=",
162368
+ /* 284 */ "key_opt ::= KEY expr",
162369
+ /* 285 */ "cmd ::= REINDEX",
162370
+ /* 286 */ "cmd ::= REINDEX nm dbnm",
162371
+ /* 287 */ "cmd ::= ANALYZE",
162372
+ /* 288 */ "cmd ::= ANALYZE nm dbnm",
162373
+ /* 289 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
162374
+ /* 290 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
162375
+ /* 291 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
162376
+ /* 292 */ "add_column_fullname ::= fullname",
162377
+ /* 293 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
162378
+ /* 294 */ "cmd ::= create_vtab",
162379
+ /* 295 */ "cmd ::= create_vtab LP vtabarglist RP",
162380
+ /* 296 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
162381
+ /* 297 */ "vtabarg ::=",
162382
+ /* 298 */ "vtabargtoken ::= ANY",
162383
+ /* 299 */ "vtabargtoken ::= lp anylist RP",
162384
+ /* 300 */ "lp ::= LP",
162385
+ /* 301 */ "with ::= WITH wqlist",
162386
+ /* 302 */ "with ::= WITH RECURSIVE wqlist",
162387
+ /* 303 */ "wqas ::= AS",
162388
+ /* 304 */ "wqas ::= AS MATERIALIZED",
162389
+ /* 305 */ "wqas ::= AS NOT MATERIALIZED",
162390
+ /* 306 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
162391
+ /* 307 */ "wqlist ::= wqitem",
162392
+ /* 308 */ "wqlist ::= wqlist COMMA wqitem",
162393
+ /* 309 */ "windowdefn_list ::= windowdefn",
162394
+ /* 310 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
162395
+ /* 311 */ "windowdefn ::= nm AS LP window RP",
162396
+ /* 312 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
162397
+ /* 313 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
162398
+ /* 314 */ "window ::= ORDER BY sortlist frame_opt",
162399
+ /* 315 */ "window ::= nm ORDER BY sortlist frame_opt",
162400
+ /* 316 */ "window ::= frame_opt",
162401
+ /* 317 */ "window ::= nm frame_opt",
162402
+ /* 318 */ "frame_opt ::=",
162403
+ /* 319 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
162404
+ /* 320 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
162405
+ /* 321 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
162406
+ /* 322 */ "frame_bound_s ::= frame_bound",
162407
+ /* 323 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
162408
+ /* 324 */ "frame_bound_e ::= frame_bound",
162409
+ /* 325 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
162410
+ /* 326 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
162411
+ /* 327 */ "frame_bound ::= CURRENT ROW",
162412
+ /* 328 */ "frame_exclude_opt ::=",
162413
+ /* 329 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
162414
+ /* 330 */ "frame_exclude ::= NO OTHERS",
162415
+ /* 331 */ "frame_exclude ::= CURRENT ROW",
162416
+ /* 332 */ "frame_exclude ::= GROUP|TIES",
162417
+ /* 333 */ "window_clause ::= WINDOW windowdefn_list",
162418
+ /* 334 */ "filter_over ::= filter_clause over_clause",
162419
+ /* 335 */ "filter_over ::= over_clause",
162420
+ /* 336 */ "filter_over ::= filter_clause",
162421
+ /* 337 */ "over_clause ::= OVER LP window RP",
162422
+ /* 338 */ "over_clause ::= OVER nm",
162423
+ /* 339 */ "filter_clause ::= FILTER LP WHERE expr RP",
162424
+ /* 340 */ "input ::= cmdlist",
162425
+ /* 341 */ "cmdlist ::= cmdlist ecmd",
162426
+ /* 342 */ "cmdlist ::= ecmd",
162427
+ /* 343 */ "ecmd ::= SEMI",
162428
+ /* 344 */ "ecmd ::= cmdx SEMI",
162429
+ /* 345 */ "ecmd ::= explain cmdx SEMI",
162430
+ /* 346 */ "trans_opt ::=",
162431
+ /* 347 */ "trans_opt ::= TRANSACTION",
162432
+ /* 348 */ "trans_opt ::= TRANSACTION nm",
162433
+ /* 349 */ "savepoint_opt ::= SAVEPOINT",
162434
+ /* 350 */ "savepoint_opt ::=",
162435
+ /* 351 */ "cmd ::= create_table create_table_args",
162436
+ /* 352 */ "table_option_set ::= table_option",
162437
+ /* 353 */ "columnlist ::= columnlist COMMA columnname carglist",
162438
+ /* 354 */ "columnlist ::= columnname carglist",
162439
+ /* 355 */ "nm ::= ID|INDEXED",
162440
+ /* 356 */ "nm ::= STRING",
162441
+ /* 357 */ "nm ::= JOIN_KW",
162442
+ /* 358 */ "typetoken ::= typename",
162443
+ /* 359 */ "typename ::= ID|STRING",
162444
+ /* 360 */ "signed ::= plus_num",
162445
+ /* 361 */ "signed ::= minus_num",
162446
+ /* 362 */ "carglist ::= carglist ccons",
162447
+ /* 363 */ "carglist ::=",
162448
+ /* 364 */ "ccons ::= NULL onconf",
162449
+ /* 365 */ "ccons ::= GENERATED ALWAYS AS generated",
162450
+ /* 366 */ "ccons ::= AS generated",
162451
+ /* 367 */ "conslist_opt ::= COMMA conslist",
162452
+ /* 368 */ "conslist ::= conslist tconscomma tcons",
162453
+ /* 369 */ "conslist ::= tcons",
162454
+ /* 370 */ "tconscomma ::=",
162455
+ /* 371 */ "defer_subclause_opt ::= defer_subclause",
162456
+ /* 372 */ "resolvetype ::= raisetype",
162457
+ /* 373 */ "selectnowith ::= oneselect",
162458
+ /* 374 */ "oneselect ::= values",
162459
+ /* 375 */ "sclp ::= selcollist COMMA",
162460
+ /* 376 */ "as ::= ID|STRING",
162461
+ /* 377 */ "returning ::=",
162462
+ /* 378 */ "expr ::= term",
162463
+ /* 379 */ "likeop ::= LIKE_KW|MATCH",
162464
+ /* 380 */ "exprlist ::= nexprlist",
162465
+ /* 381 */ "nmnum ::= plus_num",
162466
+ /* 382 */ "nmnum ::= nm",
162467
+ /* 383 */ "nmnum ::= ON",
162468
+ /* 384 */ "nmnum ::= DELETE",
162469
+ /* 385 */ "nmnum ::= DEFAULT",
162470
+ /* 386 */ "plus_num ::= INTEGER|FLOAT",
162471
+ /* 387 */ "foreach_clause ::=",
162472
+ /* 388 */ "foreach_clause ::= FOR EACH ROW",
162473
+ /* 389 */ "trnm ::= nm",
162474
+ /* 390 */ "tridxby ::=",
162475
+ /* 391 */ "database_kw_opt ::= DATABASE",
162476
+ /* 392 */ "database_kw_opt ::=",
162477
+ /* 393 */ "kwcolumn_opt ::=",
162478
+ /* 394 */ "kwcolumn_opt ::= COLUMNKW",
162479
+ /* 395 */ "vtabarglist ::= vtabarg",
162480
+ /* 396 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
162481
+ /* 397 */ "vtabarg ::= vtabarg vtabargtoken",
162482
+ /* 398 */ "anylist ::=",
162483
+ /* 399 */ "anylist ::= anylist LP anylist RP",
162484
+ /* 400 */ "anylist ::= anylist ANY",
162485
+ /* 401 */ "with ::=",
162450162486
};
162451162487
#endif /* NDEBUG */
162452162488
162453162489
162454162490
#if YYSTACKDEPTH<=0
@@ -162570,103 +162606,103 @@
162570162606
** Note: during a reduce, the only symbols destroyed are those
162571162607
** which appear on the RHS of the rule, but which are *not* used
162572162608
** inside the C code.
162573162609
*/
162574162610
/********* Begin destructor definitions ***************************************/
162575
- case 203: /* select */
162576
- case 238: /* selectnowith */
162577
- case 239: /* oneselect */
162578
- case 251: /* values */
162579
-{
162580
-sqlite3SelectDelete(pParse->db, (yypminor->yy303));
162581
-}
162582
- break;
162583
- case 215: /* term */
162584
- case 216: /* expr */
162585
- case 245: /* where_opt */
162586
- case 247: /* having_opt */
162587
- case 259: /* on_opt */
162588
- case 266: /* where_opt_ret */
162589
- case 277: /* case_operand */
162590
- case 279: /* case_else */
162591
- case 282: /* vinto */
162592
- case 289: /* when_clause */
162593
- case 294: /* key_opt */
162594
- case 310: /* filter_clause */
162595
-{
162596
-sqlite3ExprDelete(pParse->db, (yypminor->yy626));
162597
-}
162598
- break;
162599
- case 220: /* eidlist_opt */
162600
- case 230: /* sortlist */
162601
- case 231: /* eidlist */
162602
- case 243: /* selcollist */
162603
- case 246: /* groupby_opt */
162604
- case 248: /* orderby_opt */
162605
- case 252: /* nexprlist */
162606
- case 253: /* sclp */
162607
- case 261: /* exprlist */
162608
- case 267: /* setlist */
162609
- case 276: /* paren_exprlist */
162610
- case 278: /* case_exprlist */
162611
- case 309: /* part_opt */
162612
-{
162613
-sqlite3ExprListDelete(pParse->db, (yypminor->yy562));
162614
-}
162615
- break;
162616
- case 237: /* fullname */
162617
- case 244: /* from */
162618
- case 255: /* seltablist */
162619
- case 256: /* stl_prefix */
162620
- case 262: /* xfullname */
162621
-{
162622
-sqlite3SrcListDelete(pParse->db, (yypminor->yy607));
162623
-}
162624
- break;
162625
- case 240: /* wqlist */
162626
-{
162627
-sqlite3WithDelete(pParse->db, (yypminor->yy43));
162628
-}
162629
- break;
162630
- case 250: /* window_clause */
162631
- case 305: /* windowdefn_list */
162632
-{
162633
-sqlite3WindowListDelete(pParse->db, (yypminor->yy375));
162634
-}
162635
- break;
162636
- case 260: /* using_opt */
162637
- case 263: /* idlist */
162638
- case 269: /* idlist_opt */
162639
-{
162640
-sqlite3IdListDelete(pParse->db, (yypminor->yy240));
162641
-}
162642
- break;
162643
- case 272: /* filter_over */
162644
- case 306: /* windowdefn */
162645
- case 307: /* window */
162646
- case 308: /* frame_opt */
162647
- case 311: /* over_clause */
162648
-{
162649
-sqlite3WindowDelete(pParse->db, (yypminor->yy375));
162650
-}
162651
- break;
162652
- case 285: /* trigger_cmd_list */
162653
- case 290: /* trigger_cmd */
162654
-{
162655
-sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy95));
162656
-}
162657
- break;
162658
- case 287: /* trigger_event */
162659
-{
162660
-sqlite3IdListDelete(pParse->db, (yypminor->yy570).b);
162661
-}
162662
- break;
162663
- case 313: /* frame_bound */
162664
- case 314: /* frame_bound_s */
162665
- case 315: /* frame_bound_e */
162666
-{
162667
-sqlite3ExprDelete(pParse->db, (yypminor->yy81).pExpr);
162611
+ case 204: /* select */
162612
+ case 239: /* selectnowith */
162613
+ case 240: /* oneselect */
162614
+ case 252: /* values */
162615
+{
162616
+sqlite3SelectDelete(pParse->db, (yypminor->yy47));
162617
+}
162618
+ break;
162619
+ case 216: /* term */
162620
+ case 217: /* expr */
162621
+ case 246: /* where_opt */
162622
+ case 248: /* having_opt */
162623
+ case 260: /* on_opt */
162624
+ case 267: /* where_opt_ret */
162625
+ case 278: /* case_operand */
162626
+ case 280: /* case_else */
162627
+ case 283: /* vinto */
162628
+ case 290: /* when_clause */
162629
+ case 295: /* key_opt */
162630
+ case 311: /* filter_clause */
162631
+{
162632
+sqlite3ExprDelete(pParse->db, (yypminor->yy528));
162633
+}
162634
+ break;
162635
+ case 221: /* eidlist_opt */
162636
+ case 231: /* sortlist */
162637
+ case 232: /* eidlist */
162638
+ case 244: /* selcollist */
162639
+ case 247: /* groupby_opt */
162640
+ case 249: /* orderby_opt */
162641
+ case 253: /* nexprlist */
162642
+ case 254: /* sclp */
162643
+ case 262: /* exprlist */
162644
+ case 268: /* setlist */
162645
+ case 277: /* paren_exprlist */
162646
+ case 279: /* case_exprlist */
162647
+ case 310: /* part_opt */
162648
+{
162649
+sqlite3ExprListDelete(pParse->db, (yypminor->yy322));
162650
+}
162651
+ break;
162652
+ case 238: /* fullname */
162653
+ case 245: /* from */
162654
+ case 256: /* seltablist */
162655
+ case 257: /* stl_prefix */
162656
+ case 263: /* xfullname */
162657
+{
162658
+sqlite3SrcListDelete(pParse->db, (yypminor->yy131));
162659
+}
162660
+ break;
162661
+ case 241: /* wqlist */
162662
+{
162663
+sqlite3WithDelete(pParse->db, (yypminor->yy521));
162664
+}
162665
+ break;
162666
+ case 251: /* window_clause */
162667
+ case 306: /* windowdefn_list */
162668
+{
162669
+sqlite3WindowListDelete(pParse->db, (yypminor->yy41));
162670
+}
162671
+ break;
162672
+ case 261: /* using_opt */
162673
+ case 264: /* idlist */
162674
+ case 270: /* idlist_opt */
162675
+{
162676
+sqlite3IdListDelete(pParse->db, (yypminor->yy254));
162677
+}
162678
+ break;
162679
+ case 273: /* filter_over */
162680
+ case 307: /* windowdefn */
162681
+ case 308: /* window */
162682
+ case 309: /* frame_opt */
162683
+ case 312: /* over_clause */
162684
+{
162685
+sqlite3WindowDelete(pParse->db, (yypminor->yy41));
162686
+}
162687
+ break;
162688
+ case 286: /* trigger_cmd_list */
162689
+ case 291: /* trigger_cmd */
162690
+{
162691
+sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy33));
162692
+}
162693
+ break;
162694
+ case 288: /* trigger_event */
162695
+{
162696
+sqlite3IdListDelete(pParse->db, (yypminor->yy180).b);
162697
+}
162698
+ break;
162699
+ case 314: /* frame_bound */
162700
+ case 315: /* frame_bound_s */
162701
+ case 316: /* frame_bound_e */
162702
+{
162703
+sqlite3ExprDelete(pParse->db, (yypminor->yy595).pExpr);
162668162704
}
162669162705
break;
162670162706
/********* End destructor definitions *****************************************/
162671162707
default: break; /* If no destructor action specified: do nothing */
162672162708
}
@@ -162953,411 +162989,412 @@
162953162989
}
162954162990
162955162991
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
162956162992
** of that rule */
162957162993
static const YYCODETYPE yyRuleInfoLhs[] = {
162958
- 188, /* (0) explain ::= EXPLAIN */
162959
- 188, /* (1) explain ::= EXPLAIN QUERY PLAN */
162960
- 187, /* (2) cmdx ::= cmd */
162961
- 189, /* (3) cmd ::= BEGIN transtype trans_opt */
162962
- 190, /* (4) transtype ::= */
162963
- 190, /* (5) transtype ::= DEFERRED */
162964
- 190, /* (6) transtype ::= IMMEDIATE */
162965
- 190, /* (7) transtype ::= EXCLUSIVE */
162966
- 189, /* (8) cmd ::= COMMIT|END trans_opt */
162967
- 189, /* (9) cmd ::= ROLLBACK trans_opt */
162968
- 189, /* (10) cmd ::= SAVEPOINT nm */
162969
- 189, /* (11) cmd ::= RELEASE savepoint_opt nm */
162970
- 189, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
162971
- 194, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
162972
- 196, /* (14) createkw ::= CREATE */
162973
- 198, /* (15) ifnotexists ::= */
162974
- 198, /* (16) ifnotexists ::= IF NOT EXISTS */
162975
- 197, /* (17) temp ::= TEMP */
162976
- 197, /* (18) temp ::= */
162977
- 195, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
162978
- 195, /* (20) create_table_args ::= AS select */
162979
- 202, /* (21) table_option_set ::= */
162980
- 202, /* (22) table_option_set ::= table_option_set COMMA table_option */
162981
- 204, /* (23) table_option ::= WITHOUT nm */
162982
- 204, /* (24) table_option ::= nm */
162983
- 205, /* (25) columnname ::= nm typetoken */
162984
- 207, /* (26) typetoken ::= */
162985
- 207, /* (27) typetoken ::= typename LP signed RP */
162986
- 207, /* (28) typetoken ::= typename LP signed COMMA signed RP */
162987
- 208, /* (29) typename ::= typename ID|STRING */
162988
- 212, /* (30) scanpt ::= */
162989
- 213, /* (31) scantok ::= */
162990
- 214, /* (32) ccons ::= CONSTRAINT nm */
162991
- 214, /* (33) ccons ::= DEFAULT scantok term */
162992
- 214, /* (34) ccons ::= DEFAULT LP expr RP */
162993
- 214, /* (35) ccons ::= DEFAULT PLUS scantok term */
162994
- 214, /* (36) ccons ::= DEFAULT MINUS scantok term */
162995
- 214, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
162996
- 214, /* (38) ccons ::= NOT NULL onconf */
162997
- 214, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
162998
- 214, /* (40) ccons ::= UNIQUE onconf */
162999
- 214, /* (41) ccons ::= CHECK LP expr RP */
163000
- 214, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
163001
- 214, /* (43) ccons ::= defer_subclause */
163002
- 214, /* (44) ccons ::= COLLATE ID|STRING */
163003
- 223, /* (45) generated ::= LP expr RP */
163004
- 223, /* (46) generated ::= LP expr RP ID */
163005
- 219, /* (47) autoinc ::= */
163006
- 219, /* (48) autoinc ::= AUTOINCR */
163007
- 221, /* (49) refargs ::= */
163008
- 221, /* (50) refargs ::= refargs refarg */
163009
- 224, /* (51) refarg ::= MATCH nm */
163010
- 224, /* (52) refarg ::= ON INSERT refact */
163011
- 224, /* (53) refarg ::= ON DELETE refact */
163012
- 224, /* (54) refarg ::= ON UPDATE refact */
163013
- 225, /* (55) refact ::= SET NULL */
163014
- 225, /* (56) refact ::= SET DEFAULT */
163015
- 225, /* (57) refact ::= CASCADE */
163016
- 225, /* (58) refact ::= RESTRICT */
163017
- 225, /* (59) refact ::= NO ACTION */
163018
- 222, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
163019
- 222, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
163020
- 226, /* (62) init_deferred_pred_opt ::= */
163021
- 226, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
163022
- 226, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
163023
- 201, /* (65) conslist_opt ::= */
163024
- 228, /* (66) tconscomma ::= COMMA */
163025
- 229, /* (67) tcons ::= CONSTRAINT nm */
163026
- 229, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
163027
- 229, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
163028
- 229, /* (70) tcons ::= CHECK LP expr RP onconf */
163029
- 229, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
163030
- 232, /* (72) defer_subclause_opt ::= */
163031
- 217, /* (73) onconf ::= */
163032
- 217, /* (74) onconf ::= ON CONFLICT resolvetype */
163033
- 233, /* (75) orconf ::= */
163034
- 233, /* (76) orconf ::= OR resolvetype */
163035
- 234, /* (77) resolvetype ::= IGNORE */
163036
- 234, /* (78) resolvetype ::= REPLACE */
163037
- 189, /* (79) cmd ::= DROP TABLE ifexists fullname */
163038
- 236, /* (80) ifexists ::= IF EXISTS */
163039
- 236, /* (81) ifexists ::= */
163040
- 189, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
163041
- 189, /* (83) cmd ::= DROP VIEW ifexists fullname */
163042
- 189, /* (84) cmd ::= select */
163043
- 203, /* (85) select ::= WITH wqlist selectnowith */
163044
- 203, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
163045
- 203, /* (87) select ::= selectnowith */
163046
- 238, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
163047
- 241, /* (89) multiselect_op ::= UNION */
163048
- 241, /* (90) multiselect_op ::= UNION ALL */
163049
- 241, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
163050
- 239, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
163051
- 239, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
163052
- 251, /* (94) values ::= VALUES LP nexprlist RP */
163053
- 251, /* (95) values ::= values COMMA LP nexprlist RP */
163054
- 242, /* (96) distinct ::= DISTINCT */
163055
- 242, /* (97) distinct ::= ALL */
163056
- 242, /* (98) distinct ::= */
163057
- 253, /* (99) sclp ::= */
163058
- 243, /* (100) selcollist ::= sclp scanpt expr scanpt as */
163059
- 243, /* (101) selcollist ::= sclp scanpt STAR */
163060
- 243, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
163061
- 254, /* (103) as ::= AS nm */
163062
- 254, /* (104) as ::= */
163063
- 244, /* (105) from ::= */
163064
- 244, /* (106) from ::= FROM seltablist */
163065
- 256, /* (107) stl_prefix ::= seltablist joinop */
163066
- 256, /* (108) stl_prefix ::= */
163067
- 255, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
163068
- 255, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
163069
- 255, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
163070
- 255, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
163071
- 199, /* (113) dbnm ::= */
163072
- 199, /* (114) dbnm ::= DOT nm */
163073
- 237, /* (115) fullname ::= nm */
163074
- 237, /* (116) fullname ::= nm DOT nm */
163075
- 262, /* (117) xfullname ::= nm */
163076
- 262, /* (118) xfullname ::= nm DOT nm */
163077
- 262, /* (119) xfullname ::= nm DOT nm AS nm */
163078
- 262, /* (120) xfullname ::= nm AS nm */
163079
- 257, /* (121) joinop ::= COMMA|JOIN */
163080
- 257, /* (122) joinop ::= JOIN_KW JOIN */
163081
- 257, /* (123) joinop ::= JOIN_KW nm JOIN */
163082
- 257, /* (124) joinop ::= JOIN_KW nm nm JOIN */
163083
- 259, /* (125) on_opt ::= ON expr */
163084
- 259, /* (126) on_opt ::= */
163085
- 258, /* (127) indexed_opt ::= */
163086
- 258, /* (128) indexed_opt ::= INDEXED BY nm */
163087
- 258, /* (129) indexed_opt ::= NOT INDEXED */
163088
- 260, /* (130) using_opt ::= USING LP idlist RP */
163089
- 260, /* (131) using_opt ::= */
163090
- 248, /* (132) orderby_opt ::= */
163091
- 248, /* (133) orderby_opt ::= ORDER BY sortlist */
163092
- 230, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
163093
- 230, /* (135) sortlist ::= expr sortorder nulls */
163094
- 218, /* (136) sortorder ::= ASC */
163095
- 218, /* (137) sortorder ::= DESC */
163096
- 218, /* (138) sortorder ::= */
163097
- 264, /* (139) nulls ::= NULLS FIRST */
163098
- 264, /* (140) nulls ::= NULLS LAST */
163099
- 264, /* (141) nulls ::= */
163100
- 246, /* (142) groupby_opt ::= */
163101
- 246, /* (143) groupby_opt ::= GROUP BY nexprlist */
163102
- 247, /* (144) having_opt ::= */
163103
- 247, /* (145) having_opt ::= HAVING expr */
163104
- 249, /* (146) limit_opt ::= */
163105
- 249, /* (147) limit_opt ::= LIMIT expr */
163106
- 249, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
163107
- 249, /* (149) limit_opt ::= LIMIT expr COMMA expr */
163108
- 189, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
163109
- 245, /* (151) where_opt ::= */
163110
- 245, /* (152) where_opt ::= WHERE expr */
163111
- 266, /* (153) where_opt_ret ::= */
163112
- 266, /* (154) where_opt_ret ::= WHERE expr */
163113
- 266, /* (155) where_opt_ret ::= RETURNING selcollist */
163114
- 266, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
163115
- 189, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
163116
- 267, /* (158) setlist ::= setlist COMMA nm EQ expr */
163117
- 267, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
163118
- 267, /* (160) setlist ::= nm EQ expr */
163119
- 267, /* (161) setlist ::= LP idlist RP EQ expr */
163120
- 189, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
163121
- 189, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
163122
- 270, /* (164) upsert ::= */
163123
- 270, /* (165) upsert ::= RETURNING selcollist */
163124
- 270, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
163125
- 270, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
163126
- 270, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
163127
- 270, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
163128
- 271, /* (170) returning ::= RETURNING selcollist */
163129
- 268, /* (171) insert_cmd ::= INSERT orconf */
163130
- 268, /* (172) insert_cmd ::= REPLACE */
163131
- 269, /* (173) idlist_opt ::= */
163132
- 269, /* (174) idlist_opt ::= LP idlist RP */
163133
- 263, /* (175) idlist ::= idlist COMMA nm */
163134
- 263, /* (176) idlist ::= nm */
163135
- 216, /* (177) expr ::= LP expr RP */
163136
- 216, /* (178) expr ::= ID|INDEXED */
163137
- 216, /* (179) expr ::= JOIN_KW */
163138
- 216, /* (180) expr ::= nm DOT nm */
163139
- 216, /* (181) expr ::= nm DOT nm DOT nm */
163140
- 215, /* (182) term ::= NULL|FLOAT|BLOB */
163141
- 215, /* (183) term ::= STRING */
163142
- 215, /* (184) term ::= INTEGER */
163143
- 216, /* (185) expr ::= VARIABLE */
163144
- 216, /* (186) expr ::= expr COLLATE ID|STRING */
163145
- 216, /* (187) expr ::= CAST LP expr AS typetoken RP */
163146
- 216, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
163147
- 216, /* (189) expr ::= ID|INDEXED LP STAR RP */
163148
- 216, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
163149
- 216, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
163150
- 215, /* (192) term ::= CTIME_KW */
163151
- 216, /* (193) expr ::= LP nexprlist COMMA expr RP */
163152
- 216, /* (194) expr ::= expr AND expr */
163153
- 216, /* (195) expr ::= expr OR expr */
163154
- 216, /* (196) expr ::= expr LT|GT|GE|LE expr */
163155
- 216, /* (197) expr ::= expr EQ|NE expr */
163156
- 216, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
163157
- 216, /* (199) expr ::= expr PLUS|MINUS expr */
163158
- 216, /* (200) expr ::= expr STAR|SLASH|REM expr */
163159
- 216, /* (201) expr ::= expr CONCAT expr */
163160
- 273, /* (202) likeop ::= NOT LIKE_KW|MATCH */
163161
- 216, /* (203) expr ::= expr likeop expr */
163162
- 216, /* (204) expr ::= expr likeop expr ESCAPE expr */
163163
- 216, /* (205) expr ::= expr ISNULL|NOTNULL */
163164
- 216, /* (206) expr ::= expr NOT NULL */
163165
- 216, /* (207) expr ::= expr IS expr */
163166
- 216, /* (208) expr ::= expr IS NOT expr */
163167
- 216, /* (209) expr ::= NOT expr */
163168
- 216, /* (210) expr ::= BITNOT expr */
163169
- 216, /* (211) expr ::= PLUS|MINUS expr */
163170
- 274, /* (212) between_op ::= BETWEEN */
163171
- 274, /* (213) between_op ::= NOT BETWEEN */
163172
- 216, /* (214) expr ::= expr between_op expr AND expr */
163173
- 275, /* (215) in_op ::= IN */
163174
- 275, /* (216) in_op ::= NOT IN */
163175
- 216, /* (217) expr ::= expr in_op LP exprlist RP */
163176
- 216, /* (218) expr ::= LP select RP */
163177
- 216, /* (219) expr ::= expr in_op LP select RP */
163178
- 216, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
163179
- 216, /* (221) expr ::= EXISTS LP select RP */
163180
- 216, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
163181
- 278, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
163182
- 278, /* (224) case_exprlist ::= WHEN expr THEN expr */
163183
- 279, /* (225) case_else ::= ELSE expr */
163184
- 279, /* (226) case_else ::= */
163185
- 277, /* (227) case_operand ::= expr */
163186
- 277, /* (228) case_operand ::= */
163187
- 261, /* (229) exprlist ::= */
163188
- 252, /* (230) nexprlist ::= nexprlist COMMA expr */
163189
- 252, /* (231) nexprlist ::= expr */
163190
- 276, /* (232) paren_exprlist ::= */
163191
- 276, /* (233) paren_exprlist ::= LP exprlist RP */
163192
- 189, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163193
- 280, /* (235) uniqueflag ::= UNIQUE */
163194
- 280, /* (236) uniqueflag ::= */
163195
- 220, /* (237) eidlist_opt ::= */
163196
- 220, /* (238) eidlist_opt ::= LP eidlist RP */
163197
- 231, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
163198
- 231, /* (240) eidlist ::= nm collate sortorder */
163199
- 281, /* (241) collate ::= */
163200
- 281, /* (242) collate ::= COLLATE ID|STRING */
163201
- 189, /* (243) cmd ::= DROP INDEX ifexists fullname */
163202
- 189, /* (244) cmd ::= VACUUM vinto */
163203
- 189, /* (245) cmd ::= VACUUM nm vinto */
163204
- 282, /* (246) vinto ::= INTO expr */
163205
- 282, /* (247) vinto ::= */
163206
- 189, /* (248) cmd ::= PRAGMA nm dbnm */
163207
- 189, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
163208
- 189, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
163209
- 189, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
163210
- 189, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
163211
- 210, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
163212
- 211, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
163213
- 189, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163214
- 284, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163215
- 286, /* (257) trigger_time ::= BEFORE|AFTER */
163216
- 286, /* (258) trigger_time ::= INSTEAD OF */
163217
- 286, /* (259) trigger_time ::= */
163218
- 287, /* (260) trigger_event ::= DELETE|INSERT */
163219
- 287, /* (261) trigger_event ::= UPDATE */
163220
- 287, /* (262) trigger_event ::= UPDATE OF idlist */
163221
- 289, /* (263) when_clause ::= */
163222
- 289, /* (264) when_clause ::= WHEN expr */
163223
- 285, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163224
- 285, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
163225
- 291, /* (267) trnm ::= nm DOT nm */
163226
- 292, /* (268) tridxby ::= INDEXED BY nm */
163227
- 292, /* (269) tridxby ::= NOT INDEXED */
163228
- 290, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163229
- 290, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163230
- 290, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163231
- 290, /* (273) trigger_cmd ::= scanpt select scanpt */
163232
- 216, /* (274) expr ::= RAISE LP IGNORE RP */
163233
- 216, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
163234
- 235, /* (276) raisetype ::= ROLLBACK */
163235
- 235, /* (277) raisetype ::= ABORT */
163236
- 235, /* (278) raisetype ::= FAIL */
163237
- 189, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
163238
- 189, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163239
- 189, /* (281) cmd ::= DETACH database_kw_opt expr */
163240
- 294, /* (282) key_opt ::= */
163241
- 294, /* (283) key_opt ::= KEY expr */
163242
- 189, /* (284) cmd ::= REINDEX */
163243
- 189, /* (285) cmd ::= REINDEX nm dbnm */
163244
- 189, /* (286) cmd ::= ANALYZE */
163245
- 189, /* (287) cmd ::= ANALYZE nm dbnm */
163246
- 189, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
163247
- 189, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163248
- 189, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163249
- 295, /* (291) add_column_fullname ::= fullname */
163250
- 189, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163251
- 189, /* (293) cmd ::= create_vtab */
163252
- 189, /* (294) cmd ::= create_vtab LP vtabarglist RP */
163253
- 297, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163254
- 299, /* (296) vtabarg ::= */
163255
- 300, /* (297) vtabargtoken ::= ANY */
163256
- 300, /* (298) vtabargtoken ::= lp anylist RP */
163257
- 301, /* (299) lp ::= LP */
163258
- 265, /* (300) with ::= WITH wqlist */
163259
- 265, /* (301) with ::= WITH RECURSIVE wqlist */
163260
- 304, /* (302) wqas ::= AS */
163261
- 304, /* (303) wqas ::= AS MATERIALIZED */
163262
- 304, /* (304) wqas ::= AS NOT MATERIALIZED */
163263
- 303, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
163264
- 240, /* (306) wqlist ::= wqitem */
163265
- 240, /* (307) wqlist ::= wqlist COMMA wqitem */
163266
- 305, /* (308) windowdefn_list ::= windowdefn */
163267
- 305, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
163268
- 306, /* (310) windowdefn ::= nm AS LP window RP */
163269
- 307, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163270
- 307, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163271
- 307, /* (313) window ::= ORDER BY sortlist frame_opt */
163272
- 307, /* (314) window ::= nm ORDER BY sortlist frame_opt */
163273
- 307, /* (315) window ::= frame_opt */
163274
- 307, /* (316) window ::= nm frame_opt */
163275
- 308, /* (317) frame_opt ::= */
163276
- 308, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163277
- 308, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163278
- 312, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
163279
- 314, /* (321) frame_bound_s ::= frame_bound */
163280
- 314, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
163281
- 315, /* (323) frame_bound_e ::= frame_bound */
163282
- 315, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
163283
- 313, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
163284
- 313, /* (326) frame_bound ::= CURRENT ROW */
163285
- 316, /* (327) frame_exclude_opt ::= */
163286
- 316, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
163287
- 317, /* (329) frame_exclude ::= NO OTHERS */
163288
- 317, /* (330) frame_exclude ::= CURRENT ROW */
163289
- 317, /* (331) frame_exclude ::= GROUP|TIES */
163290
- 250, /* (332) window_clause ::= WINDOW windowdefn_list */
163291
- 272, /* (333) filter_over ::= filter_clause over_clause */
163292
- 272, /* (334) filter_over ::= over_clause */
163293
- 272, /* (335) filter_over ::= filter_clause */
163294
- 311, /* (336) over_clause ::= OVER LP window RP */
163295
- 311, /* (337) over_clause ::= OVER nm */
163296
- 310, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
163297
- 184, /* (339) input ::= cmdlist */
163298
- 185, /* (340) cmdlist ::= cmdlist ecmd */
163299
- 185, /* (341) cmdlist ::= ecmd */
163300
- 186, /* (342) ecmd ::= SEMI */
163301
- 186, /* (343) ecmd ::= cmdx SEMI */
163302
- 186, /* (344) ecmd ::= explain cmdx SEMI */
163303
- 191, /* (345) trans_opt ::= */
163304
- 191, /* (346) trans_opt ::= TRANSACTION */
163305
- 191, /* (347) trans_opt ::= TRANSACTION nm */
163306
- 193, /* (348) savepoint_opt ::= SAVEPOINT */
163307
- 193, /* (349) savepoint_opt ::= */
163308
- 189, /* (350) cmd ::= create_table create_table_args */
163309
- 202, /* (351) table_option_set ::= table_option */
163310
- 200, /* (352) columnlist ::= columnlist COMMA columnname carglist */
163311
- 200, /* (353) columnlist ::= columnname carglist */
163312
- 192, /* (354) nm ::= ID|INDEXED */
163313
- 192, /* (355) nm ::= STRING */
163314
- 192, /* (356) nm ::= JOIN_KW */
163315
- 207, /* (357) typetoken ::= typename */
163316
- 208, /* (358) typename ::= ID|STRING */
163317
- 209, /* (359) signed ::= plus_num */
163318
- 209, /* (360) signed ::= minus_num */
163319
- 206, /* (361) carglist ::= carglist ccons */
163320
- 206, /* (362) carglist ::= */
163321
- 214, /* (363) ccons ::= NULL onconf */
163322
- 214, /* (364) ccons ::= GENERATED ALWAYS AS generated */
163323
- 214, /* (365) ccons ::= AS generated */
163324
- 201, /* (366) conslist_opt ::= COMMA conslist */
163325
- 227, /* (367) conslist ::= conslist tconscomma tcons */
163326
- 227, /* (368) conslist ::= tcons */
163327
- 228, /* (369) tconscomma ::= */
163328
- 232, /* (370) defer_subclause_opt ::= defer_subclause */
163329
- 234, /* (371) resolvetype ::= raisetype */
163330
- 238, /* (372) selectnowith ::= oneselect */
163331
- 239, /* (373) oneselect ::= values */
163332
- 253, /* (374) sclp ::= selcollist COMMA */
163333
- 254, /* (375) as ::= ID|STRING */
163334
- 271, /* (376) returning ::= */
163335
- 216, /* (377) expr ::= term */
163336
- 273, /* (378) likeop ::= LIKE_KW|MATCH */
163337
- 261, /* (379) exprlist ::= nexprlist */
163338
- 283, /* (380) nmnum ::= plus_num */
163339
- 283, /* (381) nmnum ::= nm */
163340
- 283, /* (382) nmnum ::= ON */
163341
- 283, /* (383) nmnum ::= DELETE */
163342
- 283, /* (384) nmnum ::= DEFAULT */
163343
- 210, /* (385) plus_num ::= INTEGER|FLOAT */
163344
- 288, /* (386) foreach_clause ::= */
163345
- 288, /* (387) foreach_clause ::= FOR EACH ROW */
163346
- 291, /* (388) trnm ::= nm */
163347
- 292, /* (389) tridxby ::= */
163348
- 293, /* (390) database_kw_opt ::= DATABASE */
163349
- 293, /* (391) database_kw_opt ::= */
163350
- 296, /* (392) kwcolumn_opt ::= */
163351
- 296, /* (393) kwcolumn_opt ::= COLUMNKW */
163352
- 298, /* (394) vtabarglist ::= vtabarg */
163353
- 298, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
163354
- 299, /* (396) vtabarg ::= vtabarg vtabargtoken */
163355
- 302, /* (397) anylist ::= */
163356
- 302, /* (398) anylist ::= anylist LP anylist RP */
163357
- 302, /* (399) anylist ::= anylist ANY */
163358
- 265, /* (400) with ::= */
162994
+ 189, /* (0) explain ::= EXPLAIN */
162995
+ 189, /* (1) explain ::= EXPLAIN QUERY PLAN */
162996
+ 188, /* (2) cmdx ::= cmd */
162997
+ 190, /* (3) cmd ::= BEGIN transtype trans_opt */
162998
+ 191, /* (4) transtype ::= */
162999
+ 191, /* (5) transtype ::= DEFERRED */
163000
+ 191, /* (6) transtype ::= IMMEDIATE */
163001
+ 191, /* (7) transtype ::= EXCLUSIVE */
163002
+ 190, /* (8) cmd ::= COMMIT|END trans_opt */
163003
+ 190, /* (9) cmd ::= ROLLBACK trans_opt */
163004
+ 190, /* (10) cmd ::= SAVEPOINT nm */
163005
+ 190, /* (11) cmd ::= RELEASE savepoint_opt nm */
163006
+ 190, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
163007
+ 195, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
163008
+ 197, /* (14) createkw ::= CREATE */
163009
+ 199, /* (15) ifnotexists ::= */
163010
+ 199, /* (16) ifnotexists ::= IF NOT EXISTS */
163011
+ 198, /* (17) temp ::= TEMP */
163012
+ 198, /* (18) temp ::= */
163013
+ 196, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
163014
+ 196, /* (20) create_table_args ::= AS select */
163015
+ 203, /* (21) table_option_set ::= */
163016
+ 203, /* (22) table_option_set ::= table_option_set COMMA table_option */
163017
+ 205, /* (23) table_option ::= WITHOUT nm */
163018
+ 205, /* (24) table_option ::= nm */
163019
+ 206, /* (25) columnname ::= nm typetoken */
163020
+ 208, /* (26) typetoken ::= */
163021
+ 208, /* (27) typetoken ::= typename LP signed RP */
163022
+ 208, /* (28) typetoken ::= typename LP signed COMMA signed RP */
163023
+ 209, /* (29) typename ::= typename ID|STRING */
163024
+ 213, /* (30) scanpt ::= */
163025
+ 214, /* (31) scantok ::= */
163026
+ 215, /* (32) ccons ::= CONSTRAINT nm */
163027
+ 215, /* (33) ccons ::= DEFAULT scantok term */
163028
+ 215, /* (34) ccons ::= DEFAULT LP expr RP */
163029
+ 215, /* (35) ccons ::= DEFAULT PLUS scantok term */
163030
+ 215, /* (36) ccons ::= DEFAULT MINUS scantok term */
163031
+ 215, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
163032
+ 215, /* (38) ccons ::= NOT NULL onconf */
163033
+ 215, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
163034
+ 215, /* (40) ccons ::= UNIQUE onconf */
163035
+ 215, /* (41) ccons ::= CHECK LP expr RP */
163036
+ 215, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
163037
+ 215, /* (43) ccons ::= defer_subclause */
163038
+ 215, /* (44) ccons ::= COLLATE ID|STRING */
163039
+ 224, /* (45) generated ::= LP expr RP */
163040
+ 224, /* (46) generated ::= LP expr RP ID */
163041
+ 220, /* (47) autoinc ::= */
163042
+ 220, /* (48) autoinc ::= AUTOINCR */
163043
+ 222, /* (49) refargs ::= */
163044
+ 222, /* (50) refargs ::= refargs refarg */
163045
+ 225, /* (51) refarg ::= MATCH nm */
163046
+ 225, /* (52) refarg ::= ON INSERT refact */
163047
+ 225, /* (53) refarg ::= ON DELETE refact */
163048
+ 225, /* (54) refarg ::= ON UPDATE refact */
163049
+ 226, /* (55) refact ::= SET NULL */
163050
+ 226, /* (56) refact ::= SET DEFAULT */
163051
+ 226, /* (57) refact ::= CASCADE */
163052
+ 226, /* (58) refact ::= RESTRICT */
163053
+ 226, /* (59) refact ::= NO ACTION */
163054
+ 223, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
163055
+ 223, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
163056
+ 227, /* (62) init_deferred_pred_opt ::= */
163057
+ 227, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
163058
+ 227, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
163059
+ 202, /* (65) conslist_opt ::= */
163060
+ 229, /* (66) tconscomma ::= COMMA */
163061
+ 230, /* (67) tcons ::= CONSTRAINT nm */
163062
+ 230, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
163063
+ 230, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
163064
+ 230, /* (70) tcons ::= CHECK LP expr RP onconf */
163065
+ 230, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
163066
+ 233, /* (72) defer_subclause_opt ::= */
163067
+ 218, /* (73) onconf ::= */
163068
+ 218, /* (74) onconf ::= ON CONFLICT resolvetype */
163069
+ 234, /* (75) orconf ::= */
163070
+ 234, /* (76) orconf ::= OR resolvetype */
163071
+ 235, /* (77) resolvetype ::= IGNORE */
163072
+ 235, /* (78) resolvetype ::= REPLACE */
163073
+ 190, /* (79) cmd ::= DROP TABLE ifexists fullname */
163074
+ 237, /* (80) ifexists ::= IF EXISTS */
163075
+ 237, /* (81) ifexists ::= */
163076
+ 190, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
163077
+ 190, /* (83) cmd ::= DROP VIEW ifexists fullname */
163078
+ 190, /* (84) cmd ::= select */
163079
+ 204, /* (85) select ::= WITH wqlist selectnowith */
163080
+ 204, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
163081
+ 204, /* (87) select ::= selectnowith */
163082
+ 239, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
163083
+ 242, /* (89) multiselect_op ::= UNION */
163084
+ 242, /* (90) multiselect_op ::= UNION ALL */
163085
+ 242, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
163086
+ 240, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
163087
+ 240, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
163088
+ 252, /* (94) values ::= VALUES LP nexprlist RP */
163089
+ 252, /* (95) values ::= values COMMA LP nexprlist RP */
163090
+ 243, /* (96) distinct ::= DISTINCT */
163091
+ 243, /* (97) distinct ::= ALL */
163092
+ 243, /* (98) distinct ::= */
163093
+ 254, /* (99) sclp ::= */
163094
+ 244, /* (100) selcollist ::= sclp scanpt expr scanpt as */
163095
+ 244, /* (101) selcollist ::= sclp scanpt STAR */
163096
+ 244, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
163097
+ 255, /* (103) as ::= AS nm */
163098
+ 255, /* (104) as ::= */
163099
+ 245, /* (105) from ::= */
163100
+ 245, /* (106) from ::= FROM seltablist */
163101
+ 257, /* (107) stl_prefix ::= seltablist joinop */
163102
+ 257, /* (108) stl_prefix ::= */
163103
+ 256, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
163104
+ 256, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
163105
+ 256, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
163106
+ 256, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
163107
+ 200, /* (113) dbnm ::= */
163108
+ 200, /* (114) dbnm ::= DOT nm */
163109
+ 238, /* (115) fullname ::= nm */
163110
+ 238, /* (116) fullname ::= nm DOT nm */
163111
+ 263, /* (117) xfullname ::= nm */
163112
+ 263, /* (118) xfullname ::= nm DOT nm */
163113
+ 263, /* (119) xfullname ::= nm DOT nm AS nm */
163114
+ 263, /* (120) xfullname ::= nm AS nm */
163115
+ 258, /* (121) joinop ::= COMMA|JOIN */
163116
+ 258, /* (122) joinop ::= JOIN_KW JOIN */
163117
+ 258, /* (123) joinop ::= JOIN_KW nm JOIN */
163118
+ 258, /* (124) joinop ::= JOIN_KW nm nm JOIN */
163119
+ 260, /* (125) on_opt ::= ON expr */
163120
+ 260, /* (126) on_opt ::= */
163121
+ 259, /* (127) indexed_opt ::= */
163122
+ 259, /* (128) indexed_opt ::= INDEXED BY nm */
163123
+ 259, /* (129) indexed_opt ::= NOT INDEXED */
163124
+ 261, /* (130) using_opt ::= USING LP idlist RP */
163125
+ 261, /* (131) using_opt ::= */
163126
+ 249, /* (132) orderby_opt ::= */
163127
+ 249, /* (133) orderby_opt ::= ORDER BY sortlist */
163128
+ 231, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
163129
+ 231, /* (135) sortlist ::= expr sortorder nulls */
163130
+ 219, /* (136) sortorder ::= ASC */
163131
+ 219, /* (137) sortorder ::= DESC */
163132
+ 219, /* (138) sortorder ::= */
163133
+ 265, /* (139) nulls ::= NULLS FIRST */
163134
+ 265, /* (140) nulls ::= NULLS LAST */
163135
+ 265, /* (141) nulls ::= */
163136
+ 247, /* (142) groupby_opt ::= */
163137
+ 247, /* (143) groupby_opt ::= GROUP BY nexprlist */
163138
+ 248, /* (144) having_opt ::= */
163139
+ 248, /* (145) having_opt ::= HAVING expr */
163140
+ 250, /* (146) limit_opt ::= */
163141
+ 250, /* (147) limit_opt ::= LIMIT expr */
163142
+ 250, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
163143
+ 250, /* (149) limit_opt ::= LIMIT expr COMMA expr */
163144
+ 190, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
163145
+ 246, /* (151) where_opt ::= */
163146
+ 246, /* (152) where_opt ::= WHERE expr */
163147
+ 267, /* (153) where_opt_ret ::= */
163148
+ 267, /* (154) where_opt_ret ::= WHERE expr */
163149
+ 267, /* (155) where_opt_ret ::= RETURNING selcollist */
163150
+ 267, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
163151
+ 190, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
163152
+ 268, /* (158) setlist ::= setlist COMMA nm EQ expr */
163153
+ 268, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
163154
+ 268, /* (160) setlist ::= nm EQ expr */
163155
+ 268, /* (161) setlist ::= LP idlist RP EQ expr */
163156
+ 190, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
163157
+ 190, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
163158
+ 271, /* (164) upsert ::= */
163159
+ 271, /* (165) upsert ::= RETURNING selcollist */
163160
+ 271, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
163161
+ 271, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
163162
+ 271, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
163163
+ 271, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
163164
+ 272, /* (170) returning ::= RETURNING selcollist */
163165
+ 269, /* (171) insert_cmd ::= INSERT orconf */
163166
+ 269, /* (172) insert_cmd ::= REPLACE */
163167
+ 270, /* (173) idlist_opt ::= */
163168
+ 270, /* (174) idlist_opt ::= LP idlist RP */
163169
+ 264, /* (175) idlist ::= idlist COMMA nm */
163170
+ 264, /* (176) idlist ::= nm */
163171
+ 217, /* (177) expr ::= LP expr RP */
163172
+ 217, /* (178) expr ::= ID|INDEXED */
163173
+ 217, /* (179) expr ::= JOIN_KW */
163174
+ 217, /* (180) expr ::= nm DOT nm */
163175
+ 217, /* (181) expr ::= nm DOT nm DOT nm */
163176
+ 216, /* (182) term ::= NULL|FLOAT|BLOB */
163177
+ 216, /* (183) term ::= STRING */
163178
+ 216, /* (184) term ::= INTEGER */
163179
+ 217, /* (185) expr ::= VARIABLE */
163180
+ 217, /* (186) expr ::= expr COLLATE ID|STRING */
163181
+ 217, /* (187) expr ::= CAST LP expr AS typetoken RP */
163182
+ 217, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
163183
+ 217, /* (189) expr ::= ID|INDEXED LP STAR RP */
163184
+ 217, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
163185
+ 217, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
163186
+ 216, /* (192) term ::= CTIME_KW */
163187
+ 217, /* (193) expr ::= LP nexprlist COMMA expr RP */
163188
+ 217, /* (194) expr ::= expr AND expr */
163189
+ 217, /* (195) expr ::= expr OR expr */
163190
+ 217, /* (196) expr ::= expr LT|GT|GE|LE expr */
163191
+ 217, /* (197) expr ::= expr EQ|NE expr */
163192
+ 217, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
163193
+ 217, /* (199) expr ::= expr PLUS|MINUS expr */
163194
+ 217, /* (200) expr ::= expr STAR|SLASH|REM expr */
163195
+ 217, /* (201) expr ::= expr CONCAT expr */
163196
+ 274, /* (202) likeop ::= NOT LIKE_KW|MATCH */
163197
+ 217, /* (203) expr ::= expr likeop expr */
163198
+ 217, /* (204) expr ::= expr likeop expr ESCAPE expr */
163199
+ 217, /* (205) expr ::= expr ISNULL|NOTNULL */
163200
+ 217, /* (206) expr ::= expr NOT NULL */
163201
+ 217, /* (207) expr ::= expr IS expr */
163202
+ 217, /* (208) expr ::= expr IS NOT expr */
163203
+ 217, /* (209) expr ::= NOT expr */
163204
+ 217, /* (210) expr ::= BITNOT expr */
163205
+ 217, /* (211) expr ::= PLUS|MINUS expr */
163206
+ 217, /* (212) expr ::= expr PTR expr */
163207
+ 275, /* (213) between_op ::= BETWEEN */
163208
+ 275, /* (214) between_op ::= NOT BETWEEN */
163209
+ 217, /* (215) expr ::= expr between_op expr AND expr */
163210
+ 276, /* (216) in_op ::= IN */
163211
+ 276, /* (217) in_op ::= NOT IN */
163212
+ 217, /* (218) expr ::= expr in_op LP exprlist RP */
163213
+ 217, /* (219) expr ::= LP select RP */
163214
+ 217, /* (220) expr ::= expr in_op LP select RP */
163215
+ 217, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */
163216
+ 217, /* (222) expr ::= EXISTS LP select RP */
163217
+ 217, /* (223) expr ::= CASE case_operand case_exprlist case_else END */
163218
+ 279, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */
163219
+ 279, /* (225) case_exprlist ::= WHEN expr THEN expr */
163220
+ 280, /* (226) case_else ::= ELSE expr */
163221
+ 280, /* (227) case_else ::= */
163222
+ 278, /* (228) case_operand ::= expr */
163223
+ 278, /* (229) case_operand ::= */
163224
+ 262, /* (230) exprlist ::= */
163225
+ 253, /* (231) nexprlist ::= nexprlist COMMA expr */
163226
+ 253, /* (232) nexprlist ::= expr */
163227
+ 277, /* (233) paren_exprlist ::= */
163228
+ 277, /* (234) paren_exprlist ::= LP exprlist RP */
163229
+ 190, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163230
+ 281, /* (236) uniqueflag ::= UNIQUE */
163231
+ 281, /* (237) uniqueflag ::= */
163232
+ 221, /* (238) eidlist_opt ::= */
163233
+ 221, /* (239) eidlist_opt ::= LP eidlist RP */
163234
+ 232, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */
163235
+ 232, /* (241) eidlist ::= nm collate sortorder */
163236
+ 282, /* (242) collate ::= */
163237
+ 282, /* (243) collate ::= COLLATE ID|STRING */
163238
+ 190, /* (244) cmd ::= DROP INDEX ifexists fullname */
163239
+ 190, /* (245) cmd ::= VACUUM vinto */
163240
+ 190, /* (246) cmd ::= VACUUM nm vinto */
163241
+ 283, /* (247) vinto ::= INTO expr */
163242
+ 283, /* (248) vinto ::= */
163243
+ 190, /* (249) cmd ::= PRAGMA nm dbnm */
163244
+ 190, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */
163245
+ 190, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */
163246
+ 190, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */
163247
+ 190, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */
163248
+ 211, /* (254) plus_num ::= PLUS INTEGER|FLOAT */
163249
+ 212, /* (255) minus_num ::= MINUS INTEGER|FLOAT */
163250
+ 190, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163251
+ 285, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163252
+ 287, /* (258) trigger_time ::= BEFORE|AFTER */
163253
+ 287, /* (259) trigger_time ::= INSTEAD OF */
163254
+ 287, /* (260) trigger_time ::= */
163255
+ 288, /* (261) trigger_event ::= DELETE|INSERT */
163256
+ 288, /* (262) trigger_event ::= UPDATE */
163257
+ 288, /* (263) trigger_event ::= UPDATE OF idlist */
163258
+ 290, /* (264) when_clause ::= */
163259
+ 290, /* (265) when_clause ::= WHEN expr */
163260
+ 286, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163261
+ 286, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */
163262
+ 292, /* (268) trnm ::= nm DOT nm */
163263
+ 293, /* (269) tridxby ::= INDEXED BY nm */
163264
+ 293, /* (270) tridxby ::= NOT INDEXED */
163265
+ 291, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163266
+ 291, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163267
+ 291, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163268
+ 291, /* (274) trigger_cmd ::= scanpt select scanpt */
163269
+ 217, /* (275) expr ::= RAISE LP IGNORE RP */
163270
+ 217, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */
163271
+ 236, /* (277) raisetype ::= ROLLBACK */
163272
+ 236, /* (278) raisetype ::= ABORT */
163273
+ 236, /* (279) raisetype ::= FAIL */
163274
+ 190, /* (280) cmd ::= DROP TRIGGER ifexists fullname */
163275
+ 190, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163276
+ 190, /* (282) cmd ::= DETACH database_kw_opt expr */
163277
+ 295, /* (283) key_opt ::= */
163278
+ 295, /* (284) key_opt ::= KEY expr */
163279
+ 190, /* (285) cmd ::= REINDEX */
163280
+ 190, /* (286) cmd ::= REINDEX nm dbnm */
163281
+ 190, /* (287) cmd ::= ANALYZE */
163282
+ 190, /* (288) cmd ::= ANALYZE nm dbnm */
163283
+ 190, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */
163284
+ 190, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163285
+ 190, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163286
+ 296, /* (292) add_column_fullname ::= fullname */
163287
+ 190, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163288
+ 190, /* (294) cmd ::= create_vtab */
163289
+ 190, /* (295) cmd ::= create_vtab LP vtabarglist RP */
163290
+ 298, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163291
+ 300, /* (297) vtabarg ::= */
163292
+ 301, /* (298) vtabargtoken ::= ANY */
163293
+ 301, /* (299) vtabargtoken ::= lp anylist RP */
163294
+ 302, /* (300) lp ::= LP */
163295
+ 266, /* (301) with ::= WITH wqlist */
163296
+ 266, /* (302) with ::= WITH RECURSIVE wqlist */
163297
+ 305, /* (303) wqas ::= AS */
163298
+ 305, /* (304) wqas ::= AS MATERIALIZED */
163299
+ 305, /* (305) wqas ::= AS NOT MATERIALIZED */
163300
+ 304, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
163301
+ 241, /* (307) wqlist ::= wqitem */
163302
+ 241, /* (308) wqlist ::= wqlist COMMA wqitem */
163303
+ 306, /* (309) windowdefn_list ::= windowdefn */
163304
+ 306, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */
163305
+ 307, /* (311) windowdefn ::= nm AS LP window RP */
163306
+ 308, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163307
+ 308, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163308
+ 308, /* (314) window ::= ORDER BY sortlist frame_opt */
163309
+ 308, /* (315) window ::= nm ORDER BY sortlist frame_opt */
163310
+ 308, /* (316) window ::= frame_opt */
163311
+ 308, /* (317) window ::= nm frame_opt */
163312
+ 309, /* (318) frame_opt ::= */
163313
+ 309, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163314
+ 309, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163315
+ 313, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
163316
+ 315, /* (322) frame_bound_s ::= frame_bound */
163317
+ 315, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
163318
+ 316, /* (324) frame_bound_e ::= frame_bound */
163319
+ 316, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
163320
+ 314, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
163321
+ 314, /* (327) frame_bound ::= CURRENT ROW */
163322
+ 317, /* (328) frame_exclude_opt ::= */
163323
+ 317, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
163324
+ 318, /* (330) frame_exclude ::= NO OTHERS */
163325
+ 318, /* (331) frame_exclude ::= CURRENT ROW */
163326
+ 318, /* (332) frame_exclude ::= GROUP|TIES */
163327
+ 251, /* (333) window_clause ::= WINDOW windowdefn_list */
163328
+ 273, /* (334) filter_over ::= filter_clause over_clause */
163329
+ 273, /* (335) filter_over ::= over_clause */
163330
+ 273, /* (336) filter_over ::= filter_clause */
163331
+ 312, /* (337) over_clause ::= OVER LP window RP */
163332
+ 312, /* (338) over_clause ::= OVER nm */
163333
+ 311, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
163334
+ 185, /* (340) input ::= cmdlist */
163335
+ 186, /* (341) cmdlist ::= cmdlist ecmd */
163336
+ 186, /* (342) cmdlist ::= ecmd */
163337
+ 187, /* (343) ecmd ::= SEMI */
163338
+ 187, /* (344) ecmd ::= cmdx SEMI */
163339
+ 187, /* (345) ecmd ::= explain cmdx SEMI */
163340
+ 192, /* (346) trans_opt ::= */
163341
+ 192, /* (347) trans_opt ::= TRANSACTION */
163342
+ 192, /* (348) trans_opt ::= TRANSACTION nm */
163343
+ 194, /* (349) savepoint_opt ::= SAVEPOINT */
163344
+ 194, /* (350) savepoint_opt ::= */
163345
+ 190, /* (351) cmd ::= create_table create_table_args */
163346
+ 203, /* (352) table_option_set ::= table_option */
163347
+ 201, /* (353) columnlist ::= columnlist COMMA columnname carglist */
163348
+ 201, /* (354) columnlist ::= columnname carglist */
163349
+ 193, /* (355) nm ::= ID|INDEXED */
163350
+ 193, /* (356) nm ::= STRING */
163351
+ 193, /* (357) nm ::= JOIN_KW */
163352
+ 208, /* (358) typetoken ::= typename */
163353
+ 209, /* (359) typename ::= ID|STRING */
163354
+ 210, /* (360) signed ::= plus_num */
163355
+ 210, /* (361) signed ::= minus_num */
163356
+ 207, /* (362) carglist ::= carglist ccons */
163357
+ 207, /* (363) carglist ::= */
163358
+ 215, /* (364) ccons ::= NULL onconf */
163359
+ 215, /* (365) ccons ::= GENERATED ALWAYS AS generated */
163360
+ 215, /* (366) ccons ::= AS generated */
163361
+ 202, /* (367) conslist_opt ::= COMMA conslist */
163362
+ 228, /* (368) conslist ::= conslist tconscomma tcons */
163363
+ 228, /* (369) conslist ::= tcons */
163364
+ 229, /* (370) tconscomma ::= */
163365
+ 233, /* (371) defer_subclause_opt ::= defer_subclause */
163366
+ 235, /* (372) resolvetype ::= raisetype */
163367
+ 239, /* (373) selectnowith ::= oneselect */
163368
+ 240, /* (374) oneselect ::= values */
163369
+ 254, /* (375) sclp ::= selcollist COMMA */
163370
+ 255, /* (376) as ::= ID|STRING */
163371
+ 272, /* (377) returning ::= */
163372
+ 217, /* (378) expr ::= term */
163373
+ 274, /* (379) likeop ::= LIKE_KW|MATCH */
163374
+ 262, /* (380) exprlist ::= nexprlist */
163375
+ 284, /* (381) nmnum ::= plus_num */
163376
+ 284, /* (382) nmnum ::= nm */
163377
+ 284, /* (383) nmnum ::= ON */
163378
+ 284, /* (384) nmnum ::= DELETE */
163379
+ 284, /* (385) nmnum ::= DEFAULT */
163380
+ 211, /* (386) plus_num ::= INTEGER|FLOAT */
163381
+ 289, /* (387) foreach_clause ::= */
163382
+ 289, /* (388) foreach_clause ::= FOR EACH ROW */
163383
+ 292, /* (389) trnm ::= nm */
163384
+ 293, /* (390) tridxby ::= */
163385
+ 294, /* (391) database_kw_opt ::= DATABASE */
163386
+ 294, /* (392) database_kw_opt ::= */
163387
+ 297, /* (393) kwcolumn_opt ::= */
163388
+ 297, /* (394) kwcolumn_opt ::= COLUMNKW */
163389
+ 299, /* (395) vtabarglist ::= vtabarg */
163390
+ 299, /* (396) vtabarglist ::= vtabarglist COMMA vtabarg */
163391
+ 300, /* (397) vtabarg ::= vtabarg vtabargtoken */
163392
+ 303, /* (398) anylist ::= */
163393
+ 303, /* (399) anylist ::= anylist LP anylist RP */
163394
+ 303, /* (400) anylist ::= anylist ANY */
163395
+ 266, /* (401) with ::= */
163359163396
};
163360163397
163361163398
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
163362163399
** of symbols on the right-hand side of that rule. */
163363163400
static const signed char yyRuleInfoNRhs[] = {
@@ -163571,199 +163608,200 @@
163571163608
-3, /* (207) expr ::= expr IS expr */
163572163609
-4, /* (208) expr ::= expr IS NOT expr */
163573163610
-2, /* (209) expr ::= NOT expr */
163574163611
-2, /* (210) expr ::= BITNOT expr */
163575163612
-2, /* (211) expr ::= PLUS|MINUS expr */
163576
- -1, /* (212) between_op ::= BETWEEN */
163577
- -2, /* (213) between_op ::= NOT BETWEEN */
163578
- -5, /* (214) expr ::= expr between_op expr AND expr */
163579
- -1, /* (215) in_op ::= IN */
163580
- -2, /* (216) in_op ::= NOT IN */
163581
- -5, /* (217) expr ::= expr in_op LP exprlist RP */
163582
- -3, /* (218) expr ::= LP select RP */
163583
- -5, /* (219) expr ::= expr in_op LP select RP */
163584
- -5, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
163585
- -4, /* (221) expr ::= EXISTS LP select RP */
163586
- -5, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
163587
- -5, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
163588
- -4, /* (224) case_exprlist ::= WHEN expr THEN expr */
163589
- -2, /* (225) case_else ::= ELSE expr */
163590
- 0, /* (226) case_else ::= */
163591
- -1, /* (227) case_operand ::= expr */
163592
- 0, /* (228) case_operand ::= */
163593
- 0, /* (229) exprlist ::= */
163594
- -3, /* (230) nexprlist ::= nexprlist COMMA expr */
163595
- -1, /* (231) nexprlist ::= expr */
163596
- 0, /* (232) paren_exprlist ::= */
163597
- -3, /* (233) paren_exprlist ::= LP exprlist RP */
163598
- -12, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163599
- -1, /* (235) uniqueflag ::= UNIQUE */
163600
- 0, /* (236) uniqueflag ::= */
163601
- 0, /* (237) eidlist_opt ::= */
163602
- -3, /* (238) eidlist_opt ::= LP eidlist RP */
163603
- -5, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
163604
- -3, /* (240) eidlist ::= nm collate sortorder */
163605
- 0, /* (241) collate ::= */
163606
- -2, /* (242) collate ::= COLLATE ID|STRING */
163607
- -4, /* (243) cmd ::= DROP INDEX ifexists fullname */
163608
- -2, /* (244) cmd ::= VACUUM vinto */
163609
- -3, /* (245) cmd ::= VACUUM nm vinto */
163610
- -2, /* (246) vinto ::= INTO expr */
163611
- 0, /* (247) vinto ::= */
163612
- -3, /* (248) cmd ::= PRAGMA nm dbnm */
163613
- -5, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
163614
- -6, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
163615
- -5, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
163616
- -6, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
163617
- -2, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
163618
- -2, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
163619
- -5, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163620
- -11, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163621
- -1, /* (257) trigger_time ::= BEFORE|AFTER */
163622
- -2, /* (258) trigger_time ::= INSTEAD OF */
163623
- 0, /* (259) trigger_time ::= */
163624
- -1, /* (260) trigger_event ::= DELETE|INSERT */
163625
- -1, /* (261) trigger_event ::= UPDATE */
163626
- -3, /* (262) trigger_event ::= UPDATE OF idlist */
163627
- 0, /* (263) when_clause ::= */
163628
- -2, /* (264) when_clause ::= WHEN expr */
163629
- -3, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163630
- -2, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
163631
- -3, /* (267) trnm ::= nm DOT nm */
163632
- -3, /* (268) tridxby ::= INDEXED BY nm */
163633
- -2, /* (269) tridxby ::= NOT INDEXED */
163634
- -9, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163635
- -8, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163636
- -6, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163637
- -3, /* (273) trigger_cmd ::= scanpt select scanpt */
163638
- -4, /* (274) expr ::= RAISE LP IGNORE RP */
163639
- -6, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
163640
- -1, /* (276) raisetype ::= ROLLBACK */
163641
- -1, /* (277) raisetype ::= ABORT */
163642
- -1, /* (278) raisetype ::= FAIL */
163643
- -4, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
163644
- -6, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163645
- -3, /* (281) cmd ::= DETACH database_kw_opt expr */
163646
- 0, /* (282) key_opt ::= */
163647
- -2, /* (283) key_opt ::= KEY expr */
163648
- -1, /* (284) cmd ::= REINDEX */
163649
- -3, /* (285) cmd ::= REINDEX nm dbnm */
163650
- -1, /* (286) cmd ::= ANALYZE */
163651
- -3, /* (287) cmd ::= ANALYZE nm dbnm */
163652
- -6, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
163653
- -7, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163654
- -6, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163655
- -1, /* (291) add_column_fullname ::= fullname */
163656
- -8, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163657
- -1, /* (293) cmd ::= create_vtab */
163658
- -4, /* (294) cmd ::= create_vtab LP vtabarglist RP */
163659
- -8, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163660
- 0, /* (296) vtabarg ::= */
163661
- -1, /* (297) vtabargtoken ::= ANY */
163662
- -3, /* (298) vtabargtoken ::= lp anylist RP */
163663
- -1, /* (299) lp ::= LP */
163664
- -2, /* (300) with ::= WITH wqlist */
163665
- -3, /* (301) with ::= WITH RECURSIVE wqlist */
163666
- -1, /* (302) wqas ::= AS */
163667
- -2, /* (303) wqas ::= AS MATERIALIZED */
163668
- -3, /* (304) wqas ::= AS NOT MATERIALIZED */
163669
- -6, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
163670
- -1, /* (306) wqlist ::= wqitem */
163671
- -3, /* (307) wqlist ::= wqlist COMMA wqitem */
163672
- -1, /* (308) windowdefn_list ::= windowdefn */
163673
- -3, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
163674
- -5, /* (310) windowdefn ::= nm AS LP window RP */
163675
- -5, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163676
- -6, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163677
- -4, /* (313) window ::= ORDER BY sortlist frame_opt */
163678
- -5, /* (314) window ::= nm ORDER BY sortlist frame_opt */
163679
- -1, /* (315) window ::= frame_opt */
163680
- -2, /* (316) window ::= nm frame_opt */
163681
- 0, /* (317) frame_opt ::= */
163682
- -3, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163683
- -6, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163684
- -1, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
163685
- -1, /* (321) frame_bound_s ::= frame_bound */
163686
- -2, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
163687
- -1, /* (323) frame_bound_e ::= frame_bound */
163688
- -2, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
163689
- -2, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
163690
- -2, /* (326) frame_bound ::= CURRENT ROW */
163691
- 0, /* (327) frame_exclude_opt ::= */
163692
- -2, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
163693
- -2, /* (329) frame_exclude ::= NO OTHERS */
163694
- -2, /* (330) frame_exclude ::= CURRENT ROW */
163695
- -1, /* (331) frame_exclude ::= GROUP|TIES */
163696
- -2, /* (332) window_clause ::= WINDOW windowdefn_list */
163697
- -2, /* (333) filter_over ::= filter_clause over_clause */
163698
- -1, /* (334) filter_over ::= over_clause */
163699
- -1, /* (335) filter_over ::= filter_clause */
163700
- -4, /* (336) over_clause ::= OVER LP window RP */
163701
- -2, /* (337) over_clause ::= OVER nm */
163702
- -5, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
163703
- -1, /* (339) input ::= cmdlist */
163704
- -2, /* (340) cmdlist ::= cmdlist ecmd */
163705
- -1, /* (341) cmdlist ::= ecmd */
163706
- -1, /* (342) ecmd ::= SEMI */
163707
- -2, /* (343) ecmd ::= cmdx SEMI */
163708
- -3, /* (344) ecmd ::= explain cmdx SEMI */
163709
- 0, /* (345) trans_opt ::= */
163710
- -1, /* (346) trans_opt ::= TRANSACTION */
163711
- -2, /* (347) trans_opt ::= TRANSACTION nm */
163712
- -1, /* (348) savepoint_opt ::= SAVEPOINT */
163713
- 0, /* (349) savepoint_opt ::= */
163714
- -2, /* (350) cmd ::= create_table create_table_args */
163715
- -1, /* (351) table_option_set ::= table_option */
163716
- -4, /* (352) columnlist ::= columnlist COMMA columnname carglist */
163717
- -2, /* (353) columnlist ::= columnname carglist */
163718
- -1, /* (354) nm ::= ID|INDEXED */
163719
- -1, /* (355) nm ::= STRING */
163720
- -1, /* (356) nm ::= JOIN_KW */
163721
- -1, /* (357) typetoken ::= typename */
163722
- -1, /* (358) typename ::= ID|STRING */
163723
- -1, /* (359) signed ::= plus_num */
163724
- -1, /* (360) signed ::= minus_num */
163725
- -2, /* (361) carglist ::= carglist ccons */
163726
- 0, /* (362) carglist ::= */
163727
- -2, /* (363) ccons ::= NULL onconf */
163728
- -4, /* (364) ccons ::= GENERATED ALWAYS AS generated */
163729
- -2, /* (365) ccons ::= AS generated */
163730
- -2, /* (366) conslist_opt ::= COMMA conslist */
163731
- -3, /* (367) conslist ::= conslist tconscomma tcons */
163732
- -1, /* (368) conslist ::= tcons */
163733
- 0, /* (369) tconscomma ::= */
163734
- -1, /* (370) defer_subclause_opt ::= defer_subclause */
163735
- -1, /* (371) resolvetype ::= raisetype */
163736
- -1, /* (372) selectnowith ::= oneselect */
163737
- -1, /* (373) oneselect ::= values */
163738
- -2, /* (374) sclp ::= selcollist COMMA */
163739
- -1, /* (375) as ::= ID|STRING */
163740
- 0, /* (376) returning ::= */
163741
- -1, /* (377) expr ::= term */
163742
- -1, /* (378) likeop ::= LIKE_KW|MATCH */
163743
- -1, /* (379) exprlist ::= nexprlist */
163744
- -1, /* (380) nmnum ::= plus_num */
163745
- -1, /* (381) nmnum ::= nm */
163746
- -1, /* (382) nmnum ::= ON */
163747
- -1, /* (383) nmnum ::= DELETE */
163748
- -1, /* (384) nmnum ::= DEFAULT */
163749
- -1, /* (385) plus_num ::= INTEGER|FLOAT */
163750
- 0, /* (386) foreach_clause ::= */
163751
- -3, /* (387) foreach_clause ::= FOR EACH ROW */
163752
- -1, /* (388) trnm ::= nm */
163753
- 0, /* (389) tridxby ::= */
163754
- -1, /* (390) database_kw_opt ::= DATABASE */
163755
- 0, /* (391) database_kw_opt ::= */
163756
- 0, /* (392) kwcolumn_opt ::= */
163757
- -1, /* (393) kwcolumn_opt ::= COLUMNKW */
163758
- -1, /* (394) vtabarglist ::= vtabarg */
163759
- -3, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
163760
- -2, /* (396) vtabarg ::= vtabarg vtabargtoken */
163761
- 0, /* (397) anylist ::= */
163762
- -4, /* (398) anylist ::= anylist LP anylist RP */
163763
- -2, /* (399) anylist ::= anylist ANY */
163764
- 0, /* (400) with ::= */
163613
+ -3, /* (212) expr ::= expr PTR expr */
163614
+ -1, /* (213) between_op ::= BETWEEN */
163615
+ -2, /* (214) between_op ::= NOT BETWEEN */
163616
+ -5, /* (215) expr ::= expr between_op expr AND expr */
163617
+ -1, /* (216) in_op ::= IN */
163618
+ -2, /* (217) in_op ::= NOT IN */
163619
+ -5, /* (218) expr ::= expr in_op LP exprlist RP */
163620
+ -3, /* (219) expr ::= LP select RP */
163621
+ -5, /* (220) expr ::= expr in_op LP select RP */
163622
+ -5, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */
163623
+ -4, /* (222) expr ::= EXISTS LP select RP */
163624
+ -5, /* (223) expr ::= CASE case_operand case_exprlist case_else END */
163625
+ -5, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */
163626
+ -4, /* (225) case_exprlist ::= WHEN expr THEN expr */
163627
+ -2, /* (226) case_else ::= ELSE expr */
163628
+ 0, /* (227) case_else ::= */
163629
+ -1, /* (228) case_operand ::= expr */
163630
+ 0, /* (229) case_operand ::= */
163631
+ 0, /* (230) exprlist ::= */
163632
+ -3, /* (231) nexprlist ::= nexprlist COMMA expr */
163633
+ -1, /* (232) nexprlist ::= expr */
163634
+ 0, /* (233) paren_exprlist ::= */
163635
+ -3, /* (234) paren_exprlist ::= LP exprlist RP */
163636
+ -12, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163637
+ -1, /* (236) uniqueflag ::= UNIQUE */
163638
+ 0, /* (237) uniqueflag ::= */
163639
+ 0, /* (238) eidlist_opt ::= */
163640
+ -3, /* (239) eidlist_opt ::= LP eidlist RP */
163641
+ -5, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */
163642
+ -3, /* (241) eidlist ::= nm collate sortorder */
163643
+ 0, /* (242) collate ::= */
163644
+ -2, /* (243) collate ::= COLLATE ID|STRING */
163645
+ -4, /* (244) cmd ::= DROP INDEX ifexists fullname */
163646
+ -2, /* (245) cmd ::= VACUUM vinto */
163647
+ -3, /* (246) cmd ::= VACUUM nm vinto */
163648
+ -2, /* (247) vinto ::= INTO expr */
163649
+ 0, /* (248) vinto ::= */
163650
+ -3, /* (249) cmd ::= PRAGMA nm dbnm */
163651
+ -5, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */
163652
+ -6, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */
163653
+ -5, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */
163654
+ -6, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */
163655
+ -2, /* (254) plus_num ::= PLUS INTEGER|FLOAT */
163656
+ -2, /* (255) minus_num ::= MINUS INTEGER|FLOAT */
163657
+ -5, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163658
+ -11, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163659
+ -1, /* (258) trigger_time ::= BEFORE|AFTER */
163660
+ -2, /* (259) trigger_time ::= INSTEAD OF */
163661
+ 0, /* (260) trigger_time ::= */
163662
+ -1, /* (261) trigger_event ::= DELETE|INSERT */
163663
+ -1, /* (262) trigger_event ::= UPDATE */
163664
+ -3, /* (263) trigger_event ::= UPDATE OF idlist */
163665
+ 0, /* (264) when_clause ::= */
163666
+ -2, /* (265) when_clause ::= WHEN expr */
163667
+ -3, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163668
+ -2, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */
163669
+ -3, /* (268) trnm ::= nm DOT nm */
163670
+ -3, /* (269) tridxby ::= INDEXED BY nm */
163671
+ -2, /* (270) tridxby ::= NOT INDEXED */
163672
+ -9, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163673
+ -8, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163674
+ -6, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163675
+ -3, /* (274) trigger_cmd ::= scanpt select scanpt */
163676
+ -4, /* (275) expr ::= RAISE LP IGNORE RP */
163677
+ -6, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */
163678
+ -1, /* (277) raisetype ::= ROLLBACK */
163679
+ -1, /* (278) raisetype ::= ABORT */
163680
+ -1, /* (279) raisetype ::= FAIL */
163681
+ -4, /* (280) cmd ::= DROP TRIGGER ifexists fullname */
163682
+ -6, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163683
+ -3, /* (282) cmd ::= DETACH database_kw_opt expr */
163684
+ 0, /* (283) key_opt ::= */
163685
+ -2, /* (284) key_opt ::= KEY expr */
163686
+ -1, /* (285) cmd ::= REINDEX */
163687
+ -3, /* (286) cmd ::= REINDEX nm dbnm */
163688
+ -1, /* (287) cmd ::= ANALYZE */
163689
+ -3, /* (288) cmd ::= ANALYZE nm dbnm */
163690
+ -6, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */
163691
+ -7, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163692
+ -6, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163693
+ -1, /* (292) add_column_fullname ::= fullname */
163694
+ -8, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163695
+ -1, /* (294) cmd ::= create_vtab */
163696
+ -4, /* (295) cmd ::= create_vtab LP vtabarglist RP */
163697
+ -8, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163698
+ 0, /* (297) vtabarg ::= */
163699
+ -1, /* (298) vtabargtoken ::= ANY */
163700
+ -3, /* (299) vtabargtoken ::= lp anylist RP */
163701
+ -1, /* (300) lp ::= LP */
163702
+ -2, /* (301) with ::= WITH wqlist */
163703
+ -3, /* (302) with ::= WITH RECURSIVE wqlist */
163704
+ -1, /* (303) wqas ::= AS */
163705
+ -2, /* (304) wqas ::= AS MATERIALIZED */
163706
+ -3, /* (305) wqas ::= AS NOT MATERIALIZED */
163707
+ -6, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
163708
+ -1, /* (307) wqlist ::= wqitem */
163709
+ -3, /* (308) wqlist ::= wqlist COMMA wqitem */
163710
+ -1, /* (309) windowdefn_list ::= windowdefn */
163711
+ -3, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */
163712
+ -5, /* (311) windowdefn ::= nm AS LP window RP */
163713
+ -5, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163714
+ -6, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163715
+ -4, /* (314) window ::= ORDER BY sortlist frame_opt */
163716
+ -5, /* (315) window ::= nm ORDER BY sortlist frame_opt */
163717
+ -1, /* (316) window ::= frame_opt */
163718
+ -2, /* (317) window ::= nm frame_opt */
163719
+ 0, /* (318) frame_opt ::= */
163720
+ -3, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163721
+ -6, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163722
+ -1, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
163723
+ -1, /* (322) frame_bound_s ::= frame_bound */
163724
+ -2, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
163725
+ -1, /* (324) frame_bound_e ::= frame_bound */
163726
+ -2, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
163727
+ -2, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
163728
+ -2, /* (327) frame_bound ::= CURRENT ROW */
163729
+ 0, /* (328) frame_exclude_opt ::= */
163730
+ -2, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
163731
+ -2, /* (330) frame_exclude ::= NO OTHERS */
163732
+ -2, /* (331) frame_exclude ::= CURRENT ROW */
163733
+ -1, /* (332) frame_exclude ::= GROUP|TIES */
163734
+ -2, /* (333) window_clause ::= WINDOW windowdefn_list */
163735
+ -2, /* (334) filter_over ::= filter_clause over_clause */
163736
+ -1, /* (335) filter_over ::= over_clause */
163737
+ -1, /* (336) filter_over ::= filter_clause */
163738
+ -4, /* (337) over_clause ::= OVER LP window RP */
163739
+ -2, /* (338) over_clause ::= OVER nm */
163740
+ -5, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
163741
+ -1, /* (340) input ::= cmdlist */
163742
+ -2, /* (341) cmdlist ::= cmdlist ecmd */
163743
+ -1, /* (342) cmdlist ::= ecmd */
163744
+ -1, /* (343) ecmd ::= SEMI */
163745
+ -2, /* (344) ecmd ::= cmdx SEMI */
163746
+ -3, /* (345) ecmd ::= explain cmdx SEMI */
163747
+ 0, /* (346) trans_opt ::= */
163748
+ -1, /* (347) trans_opt ::= TRANSACTION */
163749
+ -2, /* (348) trans_opt ::= TRANSACTION nm */
163750
+ -1, /* (349) savepoint_opt ::= SAVEPOINT */
163751
+ 0, /* (350) savepoint_opt ::= */
163752
+ -2, /* (351) cmd ::= create_table create_table_args */
163753
+ -1, /* (352) table_option_set ::= table_option */
163754
+ -4, /* (353) columnlist ::= columnlist COMMA columnname carglist */
163755
+ -2, /* (354) columnlist ::= columnname carglist */
163756
+ -1, /* (355) nm ::= ID|INDEXED */
163757
+ -1, /* (356) nm ::= STRING */
163758
+ -1, /* (357) nm ::= JOIN_KW */
163759
+ -1, /* (358) typetoken ::= typename */
163760
+ -1, /* (359) typename ::= ID|STRING */
163761
+ -1, /* (360) signed ::= plus_num */
163762
+ -1, /* (361) signed ::= minus_num */
163763
+ -2, /* (362) carglist ::= carglist ccons */
163764
+ 0, /* (363) carglist ::= */
163765
+ -2, /* (364) ccons ::= NULL onconf */
163766
+ -4, /* (365) ccons ::= GENERATED ALWAYS AS generated */
163767
+ -2, /* (366) ccons ::= AS generated */
163768
+ -2, /* (367) conslist_opt ::= COMMA conslist */
163769
+ -3, /* (368) conslist ::= conslist tconscomma tcons */
163770
+ -1, /* (369) conslist ::= tcons */
163771
+ 0, /* (370) tconscomma ::= */
163772
+ -1, /* (371) defer_subclause_opt ::= defer_subclause */
163773
+ -1, /* (372) resolvetype ::= raisetype */
163774
+ -1, /* (373) selectnowith ::= oneselect */
163775
+ -1, /* (374) oneselect ::= values */
163776
+ -2, /* (375) sclp ::= selcollist COMMA */
163777
+ -1, /* (376) as ::= ID|STRING */
163778
+ 0, /* (377) returning ::= */
163779
+ -1, /* (378) expr ::= term */
163780
+ -1, /* (379) likeop ::= LIKE_KW|MATCH */
163781
+ -1, /* (380) exprlist ::= nexprlist */
163782
+ -1, /* (381) nmnum ::= plus_num */
163783
+ -1, /* (382) nmnum ::= nm */
163784
+ -1, /* (383) nmnum ::= ON */
163785
+ -1, /* (384) nmnum ::= DELETE */
163786
+ -1, /* (385) nmnum ::= DEFAULT */
163787
+ -1, /* (386) plus_num ::= INTEGER|FLOAT */
163788
+ 0, /* (387) foreach_clause ::= */
163789
+ -3, /* (388) foreach_clause ::= FOR EACH ROW */
163790
+ -1, /* (389) trnm ::= nm */
163791
+ 0, /* (390) tridxby ::= */
163792
+ -1, /* (391) database_kw_opt ::= DATABASE */
163793
+ 0, /* (392) database_kw_opt ::= */
163794
+ 0, /* (393) kwcolumn_opt ::= */
163795
+ -1, /* (394) kwcolumn_opt ::= COLUMNKW */
163796
+ -1, /* (395) vtabarglist ::= vtabarg */
163797
+ -3, /* (396) vtabarglist ::= vtabarglist COMMA vtabarg */
163798
+ -2, /* (397) vtabarg ::= vtabarg vtabargtoken */
163799
+ 0, /* (398) anylist ::= */
163800
+ -4, /* (399) anylist ::= anylist LP anylist RP */
163801
+ -2, /* (400) anylist ::= anylist ANY */
163802
+ 0, /* (401) with ::= */
163765163803
};
163766163804
163767163805
static void yy_accept(yyParser*); /* Forward Declaration */
163768163806
163769163807
/*
@@ -163811,20 +163849,20 @@
163811163849
break;
163812163850
case 2: /* cmdx ::= cmd */
163813163851
{ sqlite3FinishCoding(pParse); }
163814163852
break;
163815163853
case 3: /* cmd ::= BEGIN transtype trans_opt */
163816
-{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy64);}
163854
+{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy394);}
163817163855
break;
163818163856
case 4: /* transtype ::= */
163819
-{yymsp[1].minor.yy64 = TK_DEFERRED;}
163857
+{yymsp[1].minor.yy394 = TK_DEFERRED;}
163820163858
break;
163821163859
case 5: /* transtype ::= DEFERRED */
163822163860
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
163823163861
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
163824
- case 320: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==320);
163825
-{yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/}
163862
+ case 321: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==321);
163863
+{yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/}
163826163864
break;
163827163865
case 8: /* cmd ::= COMMIT|END trans_opt */
163828163866
case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
163829163867
{sqlite3EndTransaction(pParse,yymsp[-1].major);}
163830163868
break;
@@ -163843,11 +163881,11 @@
163843163881
sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
163844163882
}
163845163883
break;
163846163884
case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
163847163885
{
163848
- sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy64,0,0,yymsp[-2].minor.yy64);
163886
+ sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy394,0,0,yymsp[-2].minor.yy394);
163849163887
}
163850163888
break;
163851163889
case 14: /* createkw ::= CREATE */
163852163890
{disableLookaside(pParse);}
163853163891
break;
@@ -163856,57 +163894,57 @@
163856163894
case 47: /* autoinc ::= */ yytestcase(yyruleno==47);
163857163895
case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
163858163896
case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72);
163859163897
case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
163860163898
case 98: /* distinct ::= */ yytestcase(yyruleno==98);
163861
- case 241: /* collate ::= */ yytestcase(yyruleno==241);
163862
-{yymsp[1].minor.yy64 = 0;}
163899
+ case 242: /* collate ::= */ yytestcase(yyruleno==242);
163900
+{yymsp[1].minor.yy394 = 0;}
163863163901
break;
163864163902
case 16: /* ifnotexists ::= IF NOT EXISTS */
163865
-{yymsp[-2].minor.yy64 = 1;}
163903
+{yymsp[-2].minor.yy394 = 1;}
163866163904
break;
163867163905
case 17: /* temp ::= TEMP */
163868
-{yymsp[0].minor.yy64 = pParse->db->init.busy==0;}
163906
+{yymsp[0].minor.yy394 = pParse->db->init.busy==0;}
163869163907
break;
163870163908
case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */
163871163909
{
163872
- sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy51,0);
163910
+ sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy285,0);
163873163911
}
163874163912
break;
163875163913
case 20: /* create_table_args ::= AS select */
163876163914
{
163877
- sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy303);
163878
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
163915
+ sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy47);
163916
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy47);
163879163917
}
163880163918
break;
163881163919
case 21: /* table_option_set ::= */
163882
-{yymsp[1].minor.yy51 = 0;}
163920
+{yymsp[1].minor.yy285 = 0;}
163883163921
break;
163884163922
case 22: /* table_option_set ::= table_option_set COMMA table_option */
163885
-{yylhsminor.yy51 = yymsp[-2].minor.yy51|yymsp[0].minor.yy51;}
163886
- yymsp[-2].minor.yy51 = yylhsminor.yy51;
163923
+{yylhsminor.yy285 = yymsp[-2].minor.yy285|yymsp[0].minor.yy285;}
163924
+ yymsp[-2].minor.yy285 = yylhsminor.yy285;
163887163925
break;
163888163926
case 23: /* table_option ::= WITHOUT nm */
163889163927
{
163890163928
if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
163891
- yymsp[-1].minor.yy51 = TF_WithoutRowid | TF_NoVisibleRowid;
163929
+ yymsp[-1].minor.yy285 = TF_WithoutRowid | TF_NoVisibleRowid;
163892163930
}else{
163893
- yymsp[-1].minor.yy51 = 0;
163931
+ yymsp[-1].minor.yy285 = 0;
163894163932
sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
163895163933
}
163896163934
}
163897163935
break;
163898163936
case 24: /* table_option ::= nm */
163899163937
{
163900163938
if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict",6)==0 ){
163901
- yylhsminor.yy51 = TF_Strict;
163939
+ yylhsminor.yy285 = TF_Strict;
163902163940
}else{
163903
- yylhsminor.yy51 = 0;
163941
+ yylhsminor.yy285 = 0;
163904163942
sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
163905163943
}
163906163944
}
163907
- yymsp[0].minor.yy51 = yylhsminor.yy51;
163945
+ yymsp[0].minor.yy285 = yylhsminor.yy285;
163908163946
break;
163909163947
case 25: /* columnname ::= nm typetoken */
163910163948
{sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);}
163911163949
break;
163912163950
case 26: /* typetoken ::= */
@@ -163928,11 +163966,11 @@
163928163966
{yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
163929163967
break;
163930163968
case 30: /* scanpt ::= */
163931163969
{
163932163970
assert( yyLookahead!=YYNOCODE );
163933
- yymsp[1].minor.yy600 = yyLookaheadToken.z;
163971
+ yymsp[1].minor.yy522 = yyLookaheadToken.z;
163934163972
}
163935163973
break;
163936163974
case 31: /* scantok ::= */
163937163975
{
163938163976
assert( yyLookahead!=YYNOCODE );
@@ -163942,21 +163980,21 @@
163942163980
case 32: /* ccons ::= CONSTRAINT nm */
163943163981
case 67: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==67);
163944163982
{pParse->constraintName = yymsp[0].minor.yy0;}
163945163983
break;
163946163984
case 33: /* ccons ::= DEFAULT scantok term */
163947
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
163985
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy528,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
163948163986
break;
163949163987
case 34: /* ccons ::= DEFAULT LP expr RP */
163950
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
163988
+{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy528,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
163951163989
break;
163952163990
case 35: /* ccons ::= DEFAULT PLUS scantok term */
163953
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
163991
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy528,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
163954163992
break;
163955163993
case 36: /* ccons ::= DEFAULT MINUS scantok term */
163956163994
{
163957
- Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy626, 0);
163995
+ Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy528, 0);
163958163996
sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
163959163997
}
163960163998
break;
163961163999
case 37: /* ccons ::= DEFAULT scantok ID|INDEXED */
163962164000
{
@@ -163967,308 +164005,308 @@
163967164005
}
163968164006
sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
163969164007
}
163970164008
break;
163971164009
case 38: /* ccons ::= NOT NULL onconf */
163972
-{sqlite3AddNotNull(pParse, yymsp[0].minor.yy64);}
164010
+{sqlite3AddNotNull(pParse, yymsp[0].minor.yy394);}
163973164011
break;
163974164012
case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
163975
-{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy64,yymsp[0].minor.yy64,yymsp[-2].minor.yy64);}
164013
+{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy394,yymsp[0].minor.yy394,yymsp[-2].minor.yy394);}
163976164014
break;
163977164015
case 40: /* ccons ::= UNIQUE onconf */
163978
-{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy64,0,0,0,0,
164016
+{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy394,0,0,0,0,
163979164017
SQLITE_IDXTYPE_UNIQUE);}
163980164018
break;
163981164019
case 41: /* ccons ::= CHECK LP expr RP */
163982
-{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
164020
+{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy528,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
163983164021
break;
163984164022
case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */
163985
-{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy562,yymsp[0].minor.yy64);}
164023
+{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy322,yymsp[0].minor.yy394);}
163986164024
break;
163987164025
case 43: /* ccons ::= defer_subclause */
163988
-{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy64);}
164026
+{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy394);}
163989164027
break;
163990164028
case 44: /* ccons ::= COLLATE ID|STRING */
163991164029
{sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
163992164030
break;
163993164031
case 45: /* generated ::= LP expr RP */
163994
-{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy626,0);}
164032
+{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy528,0);}
163995164033
break;
163996164034
case 46: /* generated ::= LP expr RP ID */
163997
-{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy626,&yymsp[0].minor.yy0);}
164035
+{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy528,&yymsp[0].minor.yy0);}
163998164036
break;
163999164037
case 48: /* autoinc ::= AUTOINCR */
164000
-{yymsp[0].minor.yy64 = 1;}
164038
+{yymsp[0].minor.yy394 = 1;}
164001164039
break;
164002164040
case 49: /* refargs ::= */
164003
-{ yymsp[1].minor.yy64 = OE_None*0x0101; /* EV: R-19803-45884 */}
164041
+{ yymsp[1].minor.yy394 = OE_None*0x0101; /* EV: R-19803-45884 */}
164004164042
break;
164005164043
case 50: /* refargs ::= refargs refarg */
164006
-{ yymsp[-1].minor.yy64 = (yymsp[-1].minor.yy64 & ~yymsp[0].minor.yy83.mask) | yymsp[0].minor.yy83.value; }
164044
+{ yymsp[-1].minor.yy394 = (yymsp[-1].minor.yy394 & ~yymsp[0].minor.yy231.mask) | yymsp[0].minor.yy231.value; }
164007164045
break;
164008164046
case 51: /* refarg ::= MATCH nm */
164009
-{ yymsp[-1].minor.yy83.value = 0; yymsp[-1].minor.yy83.mask = 0x000000; }
164047
+{ yymsp[-1].minor.yy231.value = 0; yymsp[-1].minor.yy231.mask = 0x000000; }
164010164048
break;
164011164049
case 52: /* refarg ::= ON INSERT refact */
164012
-{ yymsp[-2].minor.yy83.value = 0; yymsp[-2].minor.yy83.mask = 0x000000; }
164050
+{ yymsp[-2].minor.yy231.value = 0; yymsp[-2].minor.yy231.mask = 0x000000; }
164013164051
break;
164014164052
case 53: /* refarg ::= ON DELETE refact */
164015
-{ yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64; yymsp[-2].minor.yy83.mask = 0x0000ff; }
164053
+{ yymsp[-2].minor.yy231.value = yymsp[0].minor.yy394; yymsp[-2].minor.yy231.mask = 0x0000ff; }
164016164054
break;
164017164055
case 54: /* refarg ::= ON UPDATE refact */
164018
-{ yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64<<8; yymsp[-2].minor.yy83.mask = 0x00ff00; }
164056
+{ yymsp[-2].minor.yy231.value = yymsp[0].minor.yy394<<8; yymsp[-2].minor.yy231.mask = 0x00ff00; }
164019164057
break;
164020164058
case 55: /* refact ::= SET NULL */
164021
-{ yymsp[-1].minor.yy64 = OE_SetNull; /* EV: R-33326-45252 */}
164059
+{ yymsp[-1].minor.yy394 = OE_SetNull; /* EV: R-33326-45252 */}
164022164060
break;
164023164061
case 56: /* refact ::= SET DEFAULT */
164024
-{ yymsp[-1].minor.yy64 = OE_SetDflt; /* EV: R-33326-45252 */}
164062
+{ yymsp[-1].minor.yy394 = OE_SetDflt; /* EV: R-33326-45252 */}
164025164063
break;
164026164064
case 57: /* refact ::= CASCADE */
164027
-{ yymsp[0].minor.yy64 = OE_Cascade; /* EV: R-33326-45252 */}
164065
+{ yymsp[0].minor.yy394 = OE_Cascade; /* EV: R-33326-45252 */}
164028164066
break;
164029164067
case 58: /* refact ::= RESTRICT */
164030
-{ yymsp[0].minor.yy64 = OE_Restrict; /* EV: R-33326-45252 */}
164068
+{ yymsp[0].minor.yy394 = OE_Restrict; /* EV: R-33326-45252 */}
164031164069
break;
164032164070
case 59: /* refact ::= NO ACTION */
164033
-{ yymsp[-1].minor.yy64 = OE_None; /* EV: R-33326-45252 */}
164071
+{ yymsp[-1].minor.yy394 = OE_None; /* EV: R-33326-45252 */}
164034164072
break;
164035164073
case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
164036
-{yymsp[-2].minor.yy64 = 0;}
164074
+{yymsp[-2].minor.yy394 = 0;}
164037164075
break;
164038164076
case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
164039164077
case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76);
164040164078
case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
164041
-{yymsp[-1].minor.yy64 = yymsp[0].minor.yy64;}
164079
+{yymsp[-1].minor.yy394 = yymsp[0].minor.yy394;}
164042164080
break;
164043164081
case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
164044164082
case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
164045
- case 213: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==213);
164046
- case 216: /* in_op ::= NOT IN */ yytestcase(yyruleno==216);
164047
- case 242: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==242);
164048
-{yymsp[-1].minor.yy64 = 1;}
164083
+ case 214: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==214);
164084
+ case 217: /* in_op ::= NOT IN */ yytestcase(yyruleno==217);
164085
+ case 243: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==243);
164086
+{yymsp[-1].minor.yy394 = 1;}
164049164087
break;
164050164088
case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
164051
-{yymsp[-1].minor.yy64 = 0;}
164089
+{yymsp[-1].minor.yy394 = 0;}
164052164090
break;
164053164091
case 66: /* tconscomma ::= COMMA */
164054164092
{pParse->constraintName.n = 0;}
164055164093
break;
164056164094
case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
164057
-{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy562,yymsp[0].minor.yy64,yymsp[-2].minor.yy64,0);}
164095
+{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy322,yymsp[0].minor.yy394,yymsp[-2].minor.yy394,0);}
164058164096
break;
164059164097
case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */
164060
-{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy562,yymsp[0].minor.yy64,0,0,0,0,
164098
+{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy322,yymsp[0].minor.yy394,0,0,0,0,
164061164099
SQLITE_IDXTYPE_UNIQUE);}
164062164100
break;
164063164101
case 70: /* tcons ::= CHECK LP expr RP onconf */
164064
-{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy626,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
164102
+{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy528,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
164065164103
break;
164066164104
case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
164067164105
{
164068
- sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy562, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy562, yymsp[-1].minor.yy64);
164069
- sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy64);
164106
+ sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy322, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy322, yymsp[-1].minor.yy394);
164107
+ sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy394);
164070164108
}
164071164109
break;
164072164110
case 73: /* onconf ::= */
164073164111
case 75: /* orconf ::= */ yytestcase(yyruleno==75);
164074
-{yymsp[1].minor.yy64 = OE_Default;}
164112
+{yymsp[1].minor.yy394 = OE_Default;}
164075164113
break;
164076164114
case 74: /* onconf ::= ON CONFLICT resolvetype */
164077
-{yymsp[-2].minor.yy64 = yymsp[0].minor.yy64;}
164115
+{yymsp[-2].minor.yy394 = yymsp[0].minor.yy394;}
164078164116
break;
164079164117
case 77: /* resolvetype ::= IGNORE */
164080
-{yymsp[0].minor.yy64 = OE_Ignore;}
164118
+{yymsp[0].minor.yy394 = OE_Ignore;}
164081164119
break;
164082164120
case 78: /* resolvetype ::= REPLACE */
164083164121
case 172: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==172);
164084
-{yymsp[0].minor.yy64 = OE_Replace;}
164122
+{yymsp[0].minor.yy394 = OE_Replace;}
164085164123
break;
164086164124
case 79: /* cmd ::= DROP TABLE ifexists fullname */
164087164125
{
164088
- sqlite3DropTable(pParse, yymsp[0].minor.yy607, 0, yymsp[-1].minor.yy64);
164126
+ sqlite3DropTable(pParse, yymsp[0].minor.yy131, 0, yymsp[-1].minor.yy394);
164089164127
}
164090164128
break;
164091164129
case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
164092164130
{
164093
- sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy562, yymsp[0].minor.yy303, yymsp[-7].minor.yy64, yymsp[-5].minor.yy64);
164131
+ sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy322, yymsp[0].minor.yy47, yymsp[-7].minor.yy394, yymsp[-5].minor.yy394);
164094164132
}
164095164133
break;
164096164134
case 83: /* cmd ::= DROP VIEW ifexists fullname */
164097164135
{
164098
- sqlite3DropTable(pParse, yymsp[0].minor.yy607, 1, yymsp[-1].minor.yy64);
164136
+ sqlite3DropTable(pParse, yymsp[0].minor.yy131, 1, yymsp[-1].minor.yy394);
164099164137
}
164100164138
break;
164101164139
case 84: /* cmd ::= select */
164102164140
{
164103164141
SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
164104
- sqlite3Select(pParse, yymsp[0].minor.yy303, &dest);
164105
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
164142
+ sqlite3Select(pParse, yymsp[0].minor.yy47, &dest);
164143
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy47);
164106164144
}
164107164145
break;
164108164146
case 85: /* select ::= WITH wqlist selectnowith */
164109
-{yymsp[-2].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
164147
+{yymsp[-2].minor.yy47 = attachWithToSelect(pParse,yymsp[0].minor.yy47,yymsp[-1].minor.yy521);}
164110164148
break;
164111164149
case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */
164112
-{yymsp[-3].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
164150
+{yymsp[-3].minor.yy47 = attachWithToSelect(pParse,yymsp[0].minor.yy47,yymsp[-1].minor.yy521);}
164113164151
break;
164114164152
case 87: /* select ::= selectnowith */
164115164153
{
164116
- Select *p = yymsp[0].minor.yy303;
164154
+ Select *p = yymsp[0].minor.yy47;
164117164155
if( p ){
164118164156
parserDoubleLinkSelect(pParse, p);
164119164157
}
164120
- yymsp[0].minor.yy303 = p; /*A-overwrites-X*/
164158
+ yymsp[0].minor.yy47 = p; /*A-overwrites-X*/
164121164159
}
164122164160
break;
164123164161
case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */
164124164162
{
164125
- Select *pRhs = yymsp[0].minor.yy303;
164126
- Select *pLhs = yymsp[-2].minor.yy303;
164163
+ Select *pRhs = yymsp[0].minor.yy47;
164164
+ Select *pLhs = yymsp[-2].minor.yy47;
164127164165
if( pRhs && pRhs->pPrior ){
164128164166
SrcList *pFrom;
164129164167
Token x;
164130164168
x.n = 0;
164131164169
parserDoubleLinkSelect(pParse, pRhs);
164132164170
pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
164133164171
pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
164134164172
}
164135164173
if( pRhs ){
164136
- pRhs->op = (u8)yymsp[-1].minor.yy64;
164174
+ pRhs->op = (u8)yymsp[-1].minor.yy394;
164137164175
pRhs->pPrior = pLhs;
164138164176
if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
164139164177
pRhs->selFlags &= ~SF_MultiValue;
164140
- if( yymsp[-1].minor.yy64!=TK_ALL ) pParse->hasCompound = 1;
164178
+ if( yymsp[-1].minor.yy394!=TK_ALL ) pParse->hasCompound = 1;
164141164179
}else{
164142164180
sqlite3SelectDelete(pParse->db, pLhs);
164143164181
}
164144
- yymsp[-2].minor.yy303 = pRhs;
164182
+ yymsp[-2].minor.yy47 = pRhs;
164145164183
}
164146164184
break;
164147164185
case 89: /* multiselect_op ::= UNION */
164148164186
case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91);
164149
-{yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-OP*/}
164187
+{yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-OP*/}
164150164188
break;
164151164189
case 90: /* multiselect_op ::= UNION ALL */
164152
-{yymsp[-1].minor.yy64 = TK_ALL;}
164190
+{yymsp[-1].minor.yy394 = TK_ALL;}
164153164191
break;
164154164192
case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
164155164193
{
164156
- yymsp[-8].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy562,yymsp[-5].minor.yy607,yymsp[-4].minor.yy626,yymsp[-3].minor.yy562,yymsp[-2].minor.yy626,yymsp[-1].minor.yy562,yymsp[-7].minor.yy64,yymsp[0].minor.yy626);
164194
+ yymsp[-8].minor.yy47 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy322,yymsp[-5].minor.yy131,yymsp[-4].minor.yy528,yymsp[-3].minor.yy322,yymsp[-2].minor.yy528,yymsp[-1].minor.yy322,yymsp[-7].minor.yy394,yymsp[0].minor.yy528);
164157164195
}
164158164196
break;
164159164197
case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
164160164198
{
164161
- yymsp[-9].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy562,yymsp[-6].minor.yy607,yymsp[-5].minor.yy626,yymsp[-4].minor.yy562,yymsp[-3].minor.yy626,yymsp[-1].minor.yy562,yymsp[-8].minor.yy64,yymsp[0].minor.yy626);
164162
- if( yymsp[-9].minor.yy303 ){
164163
- yymsp[-9].minor.yy303->pWinDefn = yymsp[-2].minor.yy375;
164199
+ yymsp[-9].minor.yy47 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy322,yymsp[-6].minor.yy131,yymsp[-5].minor.yy528,yymsp[-4].minor.yy322,yymsp[-3].minor.yy528,yymsp[-1].minor.yy322,yymsp[-8].minor.yy394,yymsp[0].minor.yy528);
164200
+ if( yymsp[-9].minor.yy47 ){
164201
+ yymsp[-9].minor.yy47->pWinDefn = yymsp[-2].minor.yy41;
164164164202
}else{
164165
- sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy375);
164203
+ sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy41);
164166164204
}
164167164205
}
164168164206
break;
164169164207
case 94: /* values ::= VALUES LP nexprlist RP */
164170164208
{
164171
- yymsp[-3].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values,0);
164209
+ yymsp[-3].minor.yy47 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values,0);
164172164210
}
164173164211
break;
164174164212
case 95: /* values ::= values COMMA LP nexprlist RP */
164175164213
{
164176
- Select *pRight, *pLeft = yymsp[-4].minor.yy303;
164177
- pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values|SF_MultiValue,0);
164214
+ Select *pRight, *pLeft = yymsp[-4].minor.yy47;
164215
+ pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values|SF_MultiValue,0);
164178164216
if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
164179164217
if( pRight ){
164180164218
pRight->op = TK_ALL;
164181164219
pRight->pPrior = pLeft;
164182
- yymsp[-4].minor.yy303 = pRight;
164220
+ yymsp[-4].minor.yy47 = pRight;
164183164221
}else{
164184
- yymsp[-4].minor.yy303 = pLeft;
164222
+ yymsp[-4].minor.yy47 = pLeft;
164185164223
}
164186164224
}
164187164225
break;
164188164226
case 96: /* distinct ::= DISTINCT */
164189
-{yymsp[0].minor.yy64 = SF_Distinct;}
164227
+{yymsp[0].minor.yy394 = SF_Distinct;}
164190164228
break;
164191164229
case 97: /* distinct ::= ALL */
164192
-{yymsp[0].minor.yy64 = SF_All;}
164230
+{yymsp[0].minor.yy394 = SF_All;}
164193164231
break;
164194164232
case 99: /* sclp ::= */
164195164233
case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132);
164196164234
case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142);
164197
- case 229: /* exprlist ::= */ yytestcase(yyruleno==229);
164198
- case 232: /* paren_exprlist ::= */ yytestcase(yyruleno==232);
164199
- case 237: /* eidlist_opt ::= */ yytestcase(yyruleno==237);
164200
-{yymsp[1].minor.yy562 = 0;}
164235
+ case 230: /* exprlist ::= */ yytestcase(yyruleno==230);
164236
+ case 233: /* paren_exprlist ::= */ yytestcase(yyruleno==233);
164237
+ case 238: /* eidlist_opt ::= */ yytestcase(yyruleno==238);
164238
+{yymsp[1].minor.yy322 = 0;}
164201164239
break;
164202164240
case 100: /* selcollist ::= sclp scanpt expr scanpt as */
164203164241
{
164204
- yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
164205
- if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[0].minor.yy0, 1);
164206
- sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy562,yymsp[-3].minor.yy600,yymsp[-1].minor.yy600);
164242
+ yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
164243
+ if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[0].minor.yy0, 1);
164244
+ sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy322,yymsp[-3].minor.yy522,yymsp[-1].minor.yy522);
164207164245
}
164208164246
break;
164209164247
case 101: /* selcollist ::= sclp scanpt STAR */
164210164248
{
164211164249
Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
164212
- yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy562, p);
164250
+ yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy322, p);
164213164251
}
164214164252
break;
164215164253
case 102: /* selcollist ::= sclp scanpt nm DOT STAR */
164216164254
{
164217164255
Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
164218164256
Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
164219164257
Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
164220
- yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, pDot);
164258
+ yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot);
164221164259
}
164222164260
break;
164223164261
case 103: /* as ::= AS nm */
164224164262
case 114: /* dbnm ::= DOT nm */ yytestcase(yyruleno==114);
164225
- case 253: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==253);
164226
- case 254: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
164263
+ case 254: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
164264
+ case 255: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==255);
164227164265
{yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
164228164266
break;
164229164267
case 105: /* from ::= */
164230164268
case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108);
164231
-{yymsp[1].minor.yy607 = 0;}
164269
+{yymsp[1].minor.yy131 = 0;}
164232164270
break;
164233164271
case 106: /* from ::= FROM seltablist */
164234164272
{
164235
- yymsp[-1].minor.yy607 = yymsp[0].minor.yy607;
164236
- sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy607);
164273
+ yymsp[-1].minor.yy131 = yymsp[0].minor.yy131;
164274
+ sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy131);
164237164275
}
164238164276
break;
164239164277
case 107: /* stl_prefix ::= seltablist joinop */
164240164278
{
164241
- if( ALWAYS(yymsp[-1].minor.yy607 && yymsp[-1].minor.yy607->nSrc>0) ) yymsp[-1].minor.yy607->a[yymsp[-1].minor.yy607->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy64;
164279
+ if( ALWAYS(yymsp[-1].minor.yy131 && yymsp[-1].minor.yy131->nSrc>0) ) yymsp[-1].minor.yy131->a[yymsp[-1].minor.yy131->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy394;
164242164280
}
164243164281
break;
164244164282
case 109: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
164245164283
{
164246
- yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164247
- sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy607, &yymsp[-2].minor.yy0);
164284
+ yymsp[-6].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy131,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164285
+ sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy131, &yymsp[-2].minor.yy0);
164248164286
}
164249164287
break;
164250164288
case 110: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
164251164289
{
164252
- yymsp[-8].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy607,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164253
- sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy607, yymsp[-4].minor.yy562);
164290
+ yymsp[-8].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy131,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164291
+ sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy131, yymsp[-4].minor.yy322);
164254164292
}
164255164293
break;
164256164294
case 111: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
164257164295
{
164258
- yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy303,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164296
+ yymsp[-6].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy131,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy47,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164259164297
}
164260164298
break;
164261164299
case 112: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
164262164300
{
164263
- if( yymsp[-6].minor.yy607==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy626==0 && yymsp[0].minor.yy240==0 ){
164264
- yymsp[-6].minor.yy607 = yymsp[-4].minor.yy607;
164265
- }else if( yymsp[-4].minor.yy607->nSrc==1 ){
164266
- yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164267
- if( yymsp[-6].minor.yy607 ){
164268
- SrcItem *pNew = &yymsp[-6].minor.yy607->a[yymsp[-6].minor.yy607->nSrc-1];
164269
- SrcItem *pOld = yymsp[-4].minor.yy607->a;
164301
+ if( yymsp[-6].minor.yy131==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy528==0 && yymsp[0].minor.yy254==0 ){
164302
+ yymsp[-6].minor.yy131 = yymsp[-4].minor.yy131;
164303
+ }else if( yymsp[-4].minor.yy131->nSrc==1 ){
164304
+ yymsp[-6].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy131,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164305
+ if( yymsp[-6].minor.yy131 ){
164306
+ SrcItem *pNew = &yymsp[-6].minor.yy131->a[yymsp[-6].minor.yy131->nSrc-1];
164307
+ SrcItem *pOld = yymsp[-4].minor.yy131->a;
164270164308
pNew->zName = pOld->zName;
164271164309
pNew->zDatabase = pOld->zDatabase;
164272164310
pNew->pSelect = pOld->pSelect;
164273164311
if( pOld->fg.isTabFunc ){
164274164312
pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -164277,240 +164315,240 @@
164277164315
pNew->fg.isTabFunc = 1;
164278164316
}
164279164317
pOld->zName = pOld->zDatabase = 0;
164280164318
pOld->pSelect = 0;
164281164319
}
164282
- sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy607);
164320
+ sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy131);
164283164321
}else{
164284164322
Select *pSubquery;
164285
- sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy607);
164286
- pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy607,0,0,0,0,SF_NestedFrom,0);
164287
- yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164323
+ sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy131);
164324
+ pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy131,0,0,0,0,SF_NestedFrom,0);
164325
+ yymsp[-6].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy131,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164288164326
}
164289164327
}
164290164328
break;
164291164329
case 113: /* dbnm ::= */
164292164330
case 127: /* indexed_opt ::= */ yytestcase(yyruleno==127);
164293164331
{yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
164294164332
break;
164295164333
case 115: /* fullname ::= nm */
164296164334
{
164297
- yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
164298
- if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
164335
+ yylhsminor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
164336
+ if( IN_RENAME_OBJECT && yylhsminor.yy131 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy131->a[0].zName, &yymsp[0].minor.yy0);
164299164337
}
164300
- yymsp[0].minor.yy607 = yylhsminor.yy607;
164338
+ yymsp[0].minor.yy131 = yylhsminor.yy131;
164301164339
break;
164302164340
case 116: /* fullname ::= nm DOT nm */
164303164341
{
164304
- yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
164305
- if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
164342
+ yylhsminor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
164343
+ if( IN_RENAME_OBJECT && yylhsminor.yy131 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy131->a[0].zName, &yymsp[0].minor.yy0);
164306164344
}
164307
- yymsp[-2].minor.yy607 = yylhsminor.yy607;
164345
+ yymsp[-2].minor.yy131 = yylhsminor.yy131;
164308164346
break;
164309164347
case 117: /* xfullname ::= nm */
164310
-{yymsp[0].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
164348
+{yymsp[0].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
164311164349
break;
164312164350
case 118: /* xfullname ::= nm DOT nm */
164313
-{yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
164351
+{yymsp[-2].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
164314164352
break;
164315164353
case 119: /* xfullname ::= nm DOT nm AS nm */
164316164354
{
164317
- yymsp[-4].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
164318
- if( yymsp[-4].minor.yy607 ) yymsp[-4].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
164355
+ yymsp[-4].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
164356
+ if( yymsp[-4].minor.yy131 ) yymsp[-4].minor.yy131->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
164319164357
}
164320164358
break;
164321164359
case 120: /* xfullname ::= nm AS nm */
164322164360
{
164323
- yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
164324
- if( yymsp[-2].minor.yy607 ) yymsp[-2].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
164361
+ yymsp[-2].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
164362
+ if( yymsp[-2].minor.yy131 ) yymsp[-2].minor.yy131->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
164325164363
}
164326164364
break;
164327164365
case 121: /* joinop ::= COMMA|JOIN */
164328
-{ yymsp[0].minor.yy64 = JT_INNER; }
164366
+{ yymsp[0].minor.yy394 = JT_INNER; }
164329164367
break;
164330164368
case 122: /* joinop ::= JOIN_KW JOIN */
164331
-{yymsp[-1].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
164369
+{yymsp[-1].minor.yy394 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
164332164370
break;
164333164371
case 123: /* joinop ::= JOIN_KW nm JOIN */
164334
-{yymsp[-2].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
164372
+{yymsp[-2].minor.yy394 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
164335164373
break;
164336164374
case 124: /* joinop ::= JOIN_KW nm nm JOIN */
164337
-{yymsp[-3].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
164375
+{yymsp[-3].minor.yy394 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
164338164376
break;
164339164377
case 125: /* on_opt ::= ON expr */
164340164378
case 145: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==145);
164341164379
case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
164342164380
case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
164343
- case 225: /* case_else ::= ELSE expr */ yytestcase(yyruleno==225);
164344
- case 246: /* vinto ::= INTO expr */ yytestcase(yyruleno==246);
164345
-{yymsp[-1].minor.yy626 = yymsp[0].minor.yy626;}
164381
+ case 226: /* case_else ::= ELSE expr */ yytestcase(yyruleno==226);
164382
+ case 247: /* vinto ::= INTO expr */ yytestcase(yyruleno==247);
164383
+{yymsp[-1].minor.yy528 = yymsp[0].minor.yy528;}
164346164384
break;
164347164385
case 126: /* on_opt ::= */
164348164386
case 144: /* having_opt ::= */ yytestcase(yyruleno==144);
164349164387
case 146: /* limit_opt ::= */ yytestcase(yyruleno==146);
164350164388
case 151: /* where_opt ::= */ yytestcase(yyruleno==151);
164351164389
case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153);
164352
- case 226: /* case_else ::= */ yytestcase(yyruleno==226);
164353
- case 228: /* case_operand ::= */ yytestcase(yyruleno==228);
164354
- case 247: /* vinto ::= */ yytestcase(yyruleno==247);
164355
-{yymsp[1].minor.yy626 = 0;}
164390
+ case 227: /* case_else ::= */ yytestcase(yyruleno==227);
164391
+ case 229: /* case_operand ::= */ yytestcase(yyruleno==229);
164392
+ case 248: /* vinto ::= */ yytestcase(yyruleno==248);
164393
+{yymsp[1].minor.yy528 = 0;}
164356164394
break;
164357164395
case 128: /* indexed_opt ::= INDEXED BY nm */
164358164396
{yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
164359164397
break;
164360164398
case 129: /* indexed_opt ::= NOT INDEXED */
164361164399
{yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
164362164400
break;
164363164401
case 130: /* using_opt ::= USING LP idlist RP */
164364
-{yymsp[-3].minor.yy240 = yymsp[-1].minor.yy240;}
164402
+{yymsp[-3].minor.yy254 = yymsp[-1].minor.yy254;}
164365164403
break;
164366164404
case 131: /* using_opt ::= */
164367164405
case 173: /* idlist_opt ::= */ yytestcase(yyruleno==173);
164368
-{yymsp[1].minor.yy240 = 0;}
164406
+{yymsp[1].minor.yy254 = 0;}
164369164407
break;
164370164408
case 133: /* orderby_opt ::= ORDER BY sortlist */
164371164409
case 143: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==143);
164372
-{yymsp[-2].minor.yy562 = yymsp[0].minor.yy562;}
164410
+{yymsp[-2].minor.yy322 = yymsp[0].minor.yy322;}
164373164411
break;
164374164412
case 134: /* sortlist ::= sortlist COMMA expr sortorder nulls */
164375164413
{
164376
- yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562,yymsp[-2].minor.yy626);
164377
- sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
164414
+ yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322,yymsp[-2].minor.yy528);
164415
+ sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy322,yymsp[-1].minor.yy394,yymsp[0].minor.yy394);
164378164416
}
164379164417
break;
164380164418
case 135: /* sortlist ::= expr sortorder nulls */
164381164419
{
164382
- yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy626); /*A-overwrites-Y*/
164383
- sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
164420
+ yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy528); /*A-overwrites-Y*/
164421
+ sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy322,yymsp[-1].minor.yy394,yymsp[0].minor.yy394);
164384164422
}
164385164423
break;
164386164424
case 136: /* sortorder ::= ASC */
164387
-{yymsp[0].minor.yy64 = SQLITE_SO_ASC;}
164425
+{yymsp[0].minor.yy394 = SQLITE_SO_ASC;}
164388164426
break;
164389164427
case 137: /* sortorder ::= DESC */
164390
-{yymsp[0].minor.yy64 = SQLITE_SO_DESC;}
164428
+{yymsp[0].minor.yy394 = SQLITE_SO_DESC;}
164391164429
break;
164392164430
case 138: /* sortorder ::= */
164393164431
case 141: /* nulls ::= */ yytestcase(yyruleno==141);
164394
-{yymsp[1].minor.yy64 = SQLITE_SO_UNDEFINED;}
164432
+{yymsp[1].minor.yy394 = SQLITE_SO_UNDEFINED;}
164395164433
break;
164396164434
case 139: /* nulls ::= NULLS FIRST */
164397
-{yymsp[-1].minor.yy64 = SQLITE_SO_ASC;}
164435
+{yymsp[-1].minor.yy394 = SQLITE_SO_ASC;}
164398164436
break;
164399164437
case 140: /* nulls ::= NULLS LAST */
164400
-{yymsp[-1].minor.yy64 = SQLITE_SO_DESC;}
164438
+{yymsp[-1].minor.yy394 = SQLITE_SO_DESC;}
164401164439
break;
164402164440
case 147: /* limit_opt ::= LIMIT expr */
164403
-{yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,0);}
164441
+{yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,0);}
164404164442
break;
164405164443
case 148: /* limit_opt ::= LIMIT expr OFFSET expr */
164406
-{yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
164444
+{yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);}
164407164445
break;
164408164446
case 149: /* limit_opt ::= LIMIT expr COMMA expr */
164409
-{yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,yymsp[-2].minor.yy626);}
164447
+{yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,yymsp[-2].minor.yy528);}
164410164448
break;
164411164449
case 150: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
164412164450
{
164413
- sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy607, &yymsp[-1].minor.yy0);
164414
- sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy607,yymsp[0].minor.yy626,0,0);
164451
+ sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy131, &yymsp[-1].minor.yy0);
164452
+ sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy131,yymsp[0].minor.yy528,0,0);
164415164453
}
164416164454
break;
164417164455
case 155: /* where_opt_ret ::= RETURNING selcollist */
164418
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-1].minor.yy626 = 0;}
164456
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy322); yymsp[-1].minor.yy528 = 0;}
164419164457
break;
164420164458
case 156: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
164421
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-3].minor.yy626 = yymsp[-2].minor.yy626;}
164459
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy322); yymsp[-3].minor.yy528 = yymsp[-2].minor.yy528;}
164422164460
break;
164423164461
case 157: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
164424164462
{
164425
- sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy607, &yymsp[-4].minor.yy0);
164426
- sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy562,"set list");
164427
- yymsp[-5].minor.yy607 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy607, yymsp[-1].minor.yy607);
164428
- sqlite3Update(pParse,yymsp[-5].minor.yy607,yymsp[-2].minor.yy562,yymsp[0].minor.yy626,yymsp[-6].minor.yy64,0,0,0);
164463
+ sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy131, &yymsp[-4].minor.yy0);
164464
+ sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy322,"set list");
164465
+ yymsp[-5].minor.yy131 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy131, yymsp[-1].minor.yy131);
164466
+ sqlite3Update(pParse,yymsp[-5].minor.yy131,yymsp[-2].minor.yy322,yymsp[0].minor.yy528,yymsp[-6].minor.yy394,0,0,0);
164429164467
}
164430164468
break;
164431164469
case 158: /* setlist ::= setlist COMMA nm EQ expr */
164432164470
{
164433
- yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
164434
- sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, 1);
164471
+ yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[0].minor.yy528);
164472
+ sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, 1);
164435164473
}
164436164474
break;
164437164475
case 159: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
164438164476
{
164439
- yymsp[-6].minor.yy562 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy562, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
164477
+ yymsp[-6].minor.yy322 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy322, yymsp[-3].minor.yy254, yymsp[0].minor.yy528);
164440164478
}
164441164479
break;
164442164480
case 160: /* setlist ::= nm EQ expr */
164443164481
{
164444
- yylhsminor.yy562 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy626);
164445
- sqlite3ExprListSetName(pParse, yylhsminor.yy562, &yymsp[-2].minor.yy0, 1);
164482
+ yylhsminor.yy322 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy528);
164483
+ sqlite3ExprListSetName(pParse, yylhsminor.yy322, &yymsp[-2].minor.yy0, 1);
164446164484
}
164447
- yymsp[-2].minor.yy562 = yylhsminor.yy562;
164485
+ yymsp[-2].minor.yy322 = yylhsminor.yy322;
164448164486
break;
164449164487
case 161: /* setlist ::= LP idlist RP EQ expr */
164450164488
{
164451
- yymsp[-4].minor.yy562 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
164489
+ yymsp[-4].minor.yy322 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy254, yymsp[0].minor.yy528);
164452164490
}
164453164491
break;
164454164492
case 162: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
164455164493
{
164456
- sqlite3Insert(pParse, yymsp[-3].minor.yy607, yymsp[-1].minor.yy303, yymsp[-2].minor.yy240, yymsp[-5].minor.yy64, yymsp[0].minor.yy138);
164494
+ sqlite3Insert(pParse, yymsp[-3].minor.yy131, yymsp[-1].minor.yy47, yymsp[-2].minor.yy254, yymsp[-5].minor.yy394, yymsp[0].minor.yy444);
164457164495
}
164458164496
break;
164459164497
case 163: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
164460164498
{
164461
- sqlite3Insert(pParse, yymsp[-4].minor.yy607, 0, yymsp[-3].minor.yy240, yymsp[-6].minor.yy64, 0);
164499
+ sqlite3Insert(pParse, yymsp[-4].minor.yy131, 0, yymsp[-3].minor.yy254, yymsp[-6].minor.yy394, 0);
164462164500
}
164463164501
break;
164464164502
case 164: /* upsert ::= */
164465
-{ yymsp[1].minor.yy138 = 0; }
164503
+{ yymsp[1].minor.yy444 = 0; }
164466164504
break;
164467164505
case 165: /* upsert ::= RETURNING selcollist */
164468
-{ yymsp[-1].minor.yy138 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy562); }
164506
+{ yymsp[-1].minor.yy444 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy322); }
164469164507
break;
164470164508
case 166: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
164471
-{ yymsp[-11].minor.yy138 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy562,yymsp[-6].minor.yy626,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626,yymsp[0].minor.yy138);}
164509
+{ yymsp[-11].minor.yy444 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy322,yymsp[-6].minor.yy528,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528,yymsp[0].minor.yy444);}
164472164510
break;
164473164511
case 167: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
164474
-{ yymsp[-8].minor.yy138 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy562,yymsp[-3].minor.yy626,0,0,yymsp[0].minor.yy138); }
164512
+{ yymsp[-8].minor.yy444 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy322,yymsp[-3].minor.yy528,0,0,yymsp[0].minor.yy444); }
164475164513
break;
164476164514
case 168: /* upsert ::= ON CONFLICT DO NOTHING returning */
164477
-{ yymsp[-4].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
164515
+{ yymsp[-4].minor.yy444 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
164478164516
break;
164479164517
case 169: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
164480
-{ yymsp[-7].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626,0);}
164518
+{ yymsp[-7].minor.yy444 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528,0);}
164481164519
break;
164482164520
case 170: /* returning ::= RETURNING selcollist */
164483
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy562);}
164521
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy322);}
164484164522
break;
164485164523
case 174: /* idlist_opt ::= LP idlist RP */
164486
-{yymsp[-2].minor.yy240 = yymsp[-1].minor.yy240;}
164524
+{yymsp[-2].minor.yy254 = yymsp[-1].minor.yy254;}
164487164525
break;
164488164526
case 175: /* idlist ::= idlist COMMA nm */
164489
-{yymsp[-2].minor.yy240 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy240,&yymsp[0].minor.yy0);}
164527
+{yymsp[-2].minor.yy254 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);}
164490164528
break;
164491164529
case 176: /* idlist ::= nm */
164492
-{yymsp[0].minor.yy240 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
164530
+{yymsp[0].minor.yy254 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
164493164531
break;
164494164532
case 177: /* expr ::= LP expr RP */
164495
-{yymsp[-2].minor.yy626 = yymsp[-1].minor.yy626;}
164533
+{yymsp[-2].minor.yy528 = yymsp[-1].minor.yy528;}
164496164534
break;
164497164535
case 178: /* expr ::= ID|INDEXED */
164498164536
case 179: /* expr ::= JOIN_KW */ yytestcase(yyruleno==179);
164499
-{yymsp[0].minor.yy626=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
164537
+{yymsp[0].minor.yy528=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
164500164538
break;
164501164539
case 180: /* expr ::= nm DOT nm */
164502164540
{
164503164541
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
164504164542
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
164505164543
if( IN_RENAME_OBJECT ){
164506164544
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
164507164545
sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
164508164546
}
164509
- yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
164547
+ yylhsminor.yy528 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
164510164548
}
164511
- yymsp[-2].minor.yy626 = yylhsminor.yy626;
164549
+ yymsp[-2].minor.yy528 = yylhsminor.yy528;
164512164550
break;
164513164551
case 181: /* expr ::= nm DOT nm DOT nm */
164514164552
{
164515164553
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
164516164554
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
@@ -164518,768 +164556,776 @@
164518164556
Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
164519164557
if( IN_RENAME_OBJECT ){
164520164558
sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
164521164559
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
164522164560
}
164523
- yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
164561
+ yylhsminor.yy528 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
164524164562
}
164525
- yymsp[-4].minor.yy626 = yylhsminor.yy626;
164563
+ yymsp[-4].minor.yy528 = yylhsminor.yy528;
164526164564
break;
164527164565
case 182: /* term ::= NULL|FLOAT|BLOB */
164528164566
case 183: /* term ::= STRING */ yytestcase(yyruleno==183);
164529
-{yymsp[0].minor.yy626=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
164567
+{yymsp[0].minor.yy528=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
164530164568
break;
164531164569
case 184: /* term ::= INTEGER */
164532164570
{
164533
- yylhsminor.yy626 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
164571
+ yylhsminor.yy528 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
164534164572
}
164535
- yymsp[0].minor.yy626 = yylhsminor.yy626;
164573
+ yymsp[0].minor.yy528 = yylhsminor.yy528;
164536164574
break;
164537164575
case 185: /* expr ::= VARIABLE */
164538164576
{
164539164577
if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
164540164578
u32 n = yymsp[0].minor.yy0.n;
164541
- yymsp[0].minor.yy626 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
164542
- sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy626, n);
164579
+ yymsp[0].minor.yy528 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
164580
+ sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy528, n);
164543164581
}else{
164544164582
/* When doing a nested parse, one can include terms in an expression
164545164583
** that look like this: #1 #2 ... These terms refer to registers
164546164584
** in the virtual machine. #N is the N-th register. */
164547164585
Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
164548164586
assert( t.n>=2 );
164549164587
if( pParse->nested==0 ){
164550164588
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
164551
- yymsp[0].minor.yy626 = 0;
164589
+ yymsp[0].minor.yy528 = 0;
164552164590
}else{
164553
- yymsp[0].minor.yy626 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
164554
- if( yymsp[0].minor.yy626 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy626->iTable);
164591
+ yymsp[0].minor.yy528 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
164592
+ if( yymsp[0].minor.yy528 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy528->iTable);
164555164593
}
164556164594
}
164557164595
}
164558164596
break;
164559164597
case 186: /* expr ::= expr COLLATE ID|STRING */
164560164598
{
164561
- yymsp[-2].minor.yy626 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy626, &yymsp[0].minor.yy0, 1);
164599
+ yymsp[-2].minor.yy528 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy528, &yymsp[0].minor.yy0, 1);
164562164600
}
164563164601
break;
164564164602
case 187: /* expr ::= CAST LP expr AS typetoken RP */
164565164603
{
164566
- yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
164567
- sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy626, yymsp[-3].minor.yy626, 0);
164604
+ yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
164605
+ sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy528, yymsp[-3].minor.yy528, 0);
164568164606
}
164569164607
break;
164570164608
case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP */
164571164609
{
164572
- yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy64);
164610
+ yylhsminor.yy528 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy394);
164573164611
}
164574
- yymsp[-4].minor.yy626 = yylhsminor.yy626;
164612
+ yymsp[-4].minor.yy528 = yylhsminor.yy528;
164575164613
break;
164576164614
case 189: /* expr ::= ID|INDEXED LP STAR RP */
164577164615
{
164578
- yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
164616
+ yylhsminor.yy528 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
164579164617
}
164580
- yymsp[-3].minor.yy626 = yylhsminor.yy626;
164618
+ yymsp[-3].minor.yy528 = yylhsminor.yy528;
164581164619
break;
164582164620
case 190: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
164583164621
{
164584
- yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy562, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy64);
164585
- sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
164622
+ yylhsminor.yy528 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy322, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy394);
164623
+ sqlite3WindowAttach(pParse, yylhsminor.yy528, yymsp[0].minor.yy41);
164586164624
}
164587
- yymsp[-5].minor.yy626 = yylhsminor.yy626;
164625
+ yymsp[-5].minor.yy528 = yylhsminor.yy528;
164588164626
break;
164589164627
case 191: /* expr ::= ID|INDEXED LP STAR RP filter_over */
164590164628
{
164591
- yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
164592
- sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
164629
+ yylhsminor.yy528 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
164630
+ sqlite3WindowAttach(pParse, yylhsminor.yy528, yymsp[0].minor.yy41);
164593164631
}
164594
- yymsp[-4].minor.yy626 = yylhsminor.yy626;
164632
+ yymsp[-4].minor.yy528 = yylhsminor.yy528;
164595164633
break;
164596164634
case 192: /* term ::= CTIME_KW */
164597164635
{
164598
- yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
164636
+ yylhsminor.yy528 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
164599164637
}
164600
- yymsp[0].minor.yy626 = yylhsminor.yy626;
164638
+ yymsp[0].minor.yy528 = yylhsminor.yy528;
164601164639
break;
164602164640
case 193: /* expr ::= LP nexprlist COMMA expr RP */
164603164641
{
164604
- ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy562, yymsp[-1].minor.yy626);
164605
- yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
164606
- if( yymsp[-4].minor.yy626 ){
164607
- yymsp[-4].minor.yy626->x.pList = pList;
164642
+ ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528);
164643
+ yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
164644
+ if( yymsp[-4].minor.yy528 ){
164645
+ yymsp[-4].minor.yy528->x.pList = pList;
164608164646
if( ALWAYS(pList->nExpr) ){
164609
- yymsp[-4].minor.yy626->flags |= pList->a[0].pExpr->flags & EP_Propagate;
164647
+ yymsp[-4].minor.yy528->flags |= pList->a[0].pExpr->flags & EP_Propagate;
164610164648
}
164611164649
}else{
164612164650
sqlite3ExprListDelete(pParse->db, pList);
164613164651
}
164614164652
}
164615164653
break;
164616164654
case 194: /* expr ::= expr AND expr */
164617
-{yymsp[-2].minor.yy626=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
164655
+{yymsp[-2].minor.yy528=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);}
164618164656
break;
164619164657
case 195: /* expr ::= expr OR expr */
164620164658
case 196: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==196);
164621164659
case 197: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==197);
164622164660
case 198: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==198);
164623164661
case 199: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==199);
164624164662
case 200: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==200);
164625164663
case 201: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==201);
164626
-{yymsp[-2].minor.yy626=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
164664
+{yymsp[-2].minor.yy528=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);}
164627164665
break;
164628164666
case 202: /* likeop ::= NOT LIKE_KW|MATCH */
164629164667
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
164630164668
break;
164631164669
case 203: /* expr ::= expr likeop expr */
164632164670
{
164633164671
ExprList *pList;
164634164672
int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
164635164673
yymsp[-1].minor.yy0.n &= 0x7fffffff;
164636
- pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy626);
164637
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy626);
164638
- yymsp[-2].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
164639
- if( bNot ) yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy626, 0);
164640
- if( yymsp[-2].minor.yy626 ) yymsp[-2].minor.yy626->flags |= EP_InfixFunc;
164674
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy528);
164675
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy528);
164676
+ yymsp[-2].minor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
164677
+ if( bNot ) yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy528, 0);
164678
+ if( yymsp[-2].minor.yy528 ) yymsp[-2].minor.yy528->flags |= EP_InfixFunc;
164641164679
}
164642164680
break;
164643164681
case 204: /* expr ::= expr likeop expr ESCAPE expr */
164644164682
{
164645164683
ExprList *pList;
164646164684
int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
164647164685
yymsp[-3].minor.yy0.n &= 0x7fffffff;
164648
- pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
164649
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy626);
164650
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
164651
- yymsp[-4].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
164652
- if( bNot ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164653
- if( yymsp[-4].minor.yy626 ) yymsp[-4].minor.yy626->flags |= EP_InfixFunc;
164686
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
164687
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy528);
164688
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528);
164689
+ yymsp[-4].minor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
164690
+ if( bNot ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164691
+ if( yymsp[-4].minor.yy528 ) yymsp[-4].minor.yy528->flags |= EP_InfixFunc;
164654164692
}
164655164693
break;
164656164694
case 205: /* expr ::= expr ISNULL|NOTNULL */
164657
-{yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy626,0);}
164695
+{yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy528,0);}
164658164696
break;
164659164697
case 206: /* expr ::= expr NOT NULL */
164660
-{yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy626,0);}
164698
+{yymsp[-2].minor.yy528 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy528,0);}
164661164699
break;
164662164700
case 207: /* expr ::= expr IS expr */
164663164701
{
164664
- yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);
164665
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-2].minor.yy626, TK_ISNULL);
164702
+ yymsp[-2].minor.yy528 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);
164703
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-2].minor.yy528, TK_ISNULL);
164666164704
}
164667164705
break;
164668164706
case 208: /* expr ::= expr IS NOT expr */
164669164707
{
164670
- yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy626,yymsp[0].minor.yy626);
164671
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-3].minor.yy626, TK_NOTNULL);
164708
+ yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy528,yymsp[0].minor.yy528);
164709
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-3].minor.yy528, TK_NOTNULL);
164672164710
}
164673164711
break;
164674164712
case 209: /* expr ::= NOT expr */
164675164713
case 210: /* expr ::= BITNOT expr */ yytestcase(yyruleno==210);
164676
-{yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy626, 0);/*A-overwrites-B*/}
164714
+{yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy528, 0);/*A-overwrites-B*/}
164677164715
break;
164678164716
case 211: /* expr ::= PLUS|MINUS expr */
164679164717
{
164680
- yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy626, 0);
164718
+ yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy528, 0);
164681164719
/*A-overwrites-B*/
164682164720
}
164683164721
break;
164684
- case 212: /* between_op ::= BETWEEN */
164685
- case 215: /* in_op ::= IN */ yytestcase(yyruleno==215);
164686
-{yymsp[0].minor.yy64 = 0;}
164722
+ case 212: /* expr ::= expr PTR expr */
164723
+{
164724
+ ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy528);
164725
+ pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy528);
164726
+ yylhsminor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
164727
+}
164728
+ yymsp[-2].minor.yy528 = yylhsminor.yy528;
164687164729
break;
164688
- case 214: /* expr ::= expr between_op expr AND expr */
164730
+ case 213: /* between_op ::= BETWEEN */
164731
+ case 216: /* in_op ::= IN */ yytestcase(yyruleno==216);
164732
+{yymsp[0].minor.yy394 = 0;}
164733
+ break;
164734
+ case 215: /* expr ::= expr between_op expr AND expr */
164689164735
{
164690
- ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
164691
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
164692
- yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy626, 0);
164693
- if( yymsp[-4].minor.yy626 ){
164694
- yymsp[-4].minor.yy626->x.pList = pList;
164736
+ ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
164737
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528);
164738
+ yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy528, 0);
164739
+ if( yymsp[-4].minor.yy528 ){
164740
+ yymsp[-4].minor.yy528->x.pList = pList;
164695164741
}else{
164696164742
sqlite3ExprListDelete(pParse->db, pList);
164697164743
}
164698
- if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164744
+ if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164699164745
}
164700164746
break;
164701
- case 217: /* expr ::= expr in_op LP exprlist RP */
164747
+ case 218: /* expr ::= expr in_op LP exprlist RP */
164702164748
{
164703
- if( yymsp[-1].minor.yy562==0 ){
164749
+ if( yymsp[-1].minor.yy322==0 ){
164704164750
/* Expressions of the form
164705164751
**
164706164752
** expr1 IN ()
164707164753
** expr1 NOT IN ()
164708164754
**
164709164755
** simplify to constants 0 (false) and 1 (true), respectively,
164710164756
** regardless of the value of expr1.
164711164757
*/
164712
- sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy626);
164713
- yymsp[-4].minor.yy626 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy64 ? "1" : "0");
164758
+ sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy528);
164759
+ yymsp[-4].minor.yy528 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy394 ? "1" : "0");
164714164760
}else{
164715
- Expr *pRHS = yymsp[-1].minor.yy562->a[0].pExpr;
164716
- if( yymsp[-1].minor.yy562->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy626->op!=TK_VECTOR ){
164717
- yymsp[-1].minor.yy562->a[0].pExpr = 0;
164718
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
164761
+ Expr *pRHS = yymsp[-1].minor.yy322->a[0].pExpr;
164762
+ if( yymsp[-1].minor.yy322->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy528->op!=TK_VECTOR ){
164763
+ yymsp[-1].minor.yy322->a[0].pExpr = 0;
164764
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322);
164719164765
pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
164720
- yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy626, pRHS);
164766
+ yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy528, pRHS);
164721164767
}else{
164722
- yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
164723
- if( yymsp[-4].minor.yy626==0 ){
164724
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
164725
- }else if( yymsp[-4].minor.yy626->pLeft->op==TK_VECTOR ){
164726
- int nExpr = yymsp[-4].minor.yy626->pLeft->x.pList->nExpr;
164727
- Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy562);
164768
+ yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
164769
+ if( yymsp[-4].minor.yy528==0 ){
164770
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322);
164771
+ }else if( yymsp[-4].minor.yy528->pLeft->op==TK_VECTOR ){
164772
+ int nExpr = yymsp[-4].minor.yy528->pLeft->x.pList->nExpr;
164773
+ Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy322);
164728164774
if( pSelectRHS ){
164729164775
parserDoubleLinkSelect(pParse, pSelectRHS);
164730
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelectRHS);
164731
- }
164732
- }else{
164733
- yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy562;
164734
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
164735
- }
164736
- }
164737
- if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164738
- }
164739
- }
164740
- break;
164741
- case 218: /* expr ::= LP select RP */
164742
-{
164743
- yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
164744
- sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy626, yymsp[-1].minor.yy303);
164745
- }
164746
- break;
164747
- case 219: /* expr ::= expr in_op LP select RP */
164748
-{
164749
- yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
164750
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, yymsp[-1].minor.yy303);
164751
- if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164752
- }
164753
- break;
164754
- case 220: /* expr ::= expr in_op nm dbnm paren_exprlist */
164776
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelectRHS);
164777
+ }
164778
+ }else{
164779
+ yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy322;
164780
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528);
164781
+ }
164782
+ }
164783
+ if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164784
+ }
164785
+ }
164786
+ break;
164787
+ case 219: /* expr ::= LP select RP */
164788
+{
164789
+ yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
164790
+ sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy528, yymsp[-1].minor.yy47);
164791
+ }
164792
+ break;
164793
+ case 220: /* expr ::= expr in_op LP select RP */
164794
+{
164795
+ yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
164796
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, yymsp[-1].minor.yy47);
164797
+ if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164798
+ }
164799
+ break;
164800
+ case 221: /* expr ::= expr in_op nm dbnm paren_exprlist */
164755164801
{
164756164802
SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
164757164803
Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
164758
- if( yymsp[0].minor.yy562 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy562);
164759
- yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
164760
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelect);
164761
- if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164804
+ if( yymsp[0].minor.yy322 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy322);
164805
+ yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
164806
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelect);
164807
+ if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164762164808
}
164763164809
break;
164764
- case 221: /* expr ::= EXISTS LP select RP */
164810
+ case 222: /* expr ::= EXISTS LP select RP */
164765164811
{
164766164812
Expr *p;
164767
- p = yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
164768
- sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy303);
164769
- }
164770
- break;
164771
- case 222: /* expr ::= CASE case_operand case_exprlist case_else END */
164772
-{
164773
- yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy626, 0);
164774
- if( yymsp[-4].minor.yy626 ){
164775
- yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy626 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626) : yymsp[-2].minor.yy562;
164776
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
164777
- }else{
164778
- sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy562);
164779
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
164780
- }
164781
-}
164782
- break;
164783
- case 223: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
164784
-{
164785
- yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
164786
- yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
164787
-}
164788
- break;
164789
- case 224: /* case_exprlist ::= WHEN expr THEN expr */
164790
-{
164791
- yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
164792
- yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy562, yymsp[0].minor.yy626);
164793
-}
164794
- break;
164795
- case 227: /* case_operand ::= expr */
164796
-{yymsp[0].minor.yy626 = yymsp[0].minor.yy626; /*A-overwrites-X*/}
164797
- break;
164798
- case 230: /* nexprlist ::= nexprlist COMMA expr */
164799
-{yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[0].minor.yy626);}
164800
- break;
164801
- case 231: /* nexprlist ::= expr */
164802
-{yymsp[0].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy626); /*A-overwrites-Y*/}
164803
- break;
164804
- case 233: /* paren_exprlist ::= LP exprlist RP */
164805
- case 238: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==238);
164806
-{yymsp[-2].minor.yy562 = yymsp[-1].minor.yy562;}
164807
- break;
164808
- case 234: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
164813
+ p = yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
164814
+ sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy47);
164815
+ }
164816
+ break;
164817
+ case 223: /* expr ::= CASE case_operand case_exprlist case_else END */
164818
+{
164819
+ yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy528, 0);
164820
+ if( yymsp[-4].minor.yy528 ){
164821
+ yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy528 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528) : yymsp[-2].minor.yy322;
164822
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528);
164823
+ }else{
164824
+ sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy322);
164825
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
164826
+ }
164827
+}
164828
+ break;
164829
+ case 224: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
164830
+{
164831
+ yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
164832
+ yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[0].minor.yy528);
164833
+}
164834
+ break;
164835
+ case 225: /* case_exprlist ::= WHEN expr THEN expr */
164836
+{
164837
+ yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
164838
+ yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322, yymsp[0].minor.yy528);
164839
+}
164840
+ break;
164841
+ case 228: /* case_operand ::= expr */
164842
+{yymsp[0].minor.yy528 = yymsp[0].minor.yy528; /*A-overwrites-X*/}
164843
+ break;
164844
+ case 231: /* nexprlist ::= nexprlist COMMA expr */
164845
+{yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[0].minor.yy528);}
164846
+ break;
164847
+ case 232: /* nexprlist ::= expr */
164848
+{yymsp[0].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy528); /*A-overwrites-Y*/}
164849
+ break;
164850
+ case 234: /* paren_exprlist ::= LP exprlist RP */
164851
+ case 239: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==239);
164852
+{yymsp[-2].minor.yy322 = yymsp[-1].minor.yy322;}
164853
+ break;
164854
+ case 235: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
164809164855
{
164810164856
sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
164811
- sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy562, yymsp[-10].minor.yy64,
164812
- &yymsp[-11].minor.yy0, yymsp[0].minor.yy626, SQLITE_SO_ASC, yymsp[-8].minor.yy64, SQLITE_IDXTYPE_APPDEF);
164857
+ sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy322, yymsp[-10].minor.yy394,
164858
+ &yymsp[-11].minor.yy0, yymsp[0].minor.yy528, SQLITE_SO_ASC, yymsp[-8].minor.yy394, SQLITE_IDXTYPE_APPDEF);
164813164859
if( IN_RENAME_OBJECT && pParse->pNewIndex ){
164814164860
sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
164815164861
}
164816164862
}
164817164863
break;
164818
- case 235: /* uniqueflag ::= UNIQUE */
164819
- case 277: /* raisetype ::= ABORT */ yytestcase(yyruleno==277);
164820
-{yymsp[0].minor.yy64 = OE_Abort;}
164821
- break;
164822
- case 236: /* uniqueflag ::= */
164823
-{yymsp[1].minor.yy64 = OE_None;}
164824
- break;
164825
- case 239: /* eidlist ::= eidlist COMMA nm collate sortorder */
164826
-{
164827
- yymsp[-4].minor.yy562 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64);
164828
-}
164829
- break;
164830
- case 240: /* eidlist ::= nm collate sortorder */
164831
-{
164832
- yymsp[-2].minor.yy562 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64); /*A-overwrites-Y*/
164833
-}
164834
- break;
164835
- case 243: /* cmd ::= DROP INDEX ifexists fullname */
164836
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy607, yymsp[-1].minor.yy64);}
164837
- break;
164838
- case 244: /* cmd ::= VACUUM vinto */
164839
-{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy626);}
164840
- break;
164841
- case 245: /* cmd ::= VACUUM nm vinto */
164842
-{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy626);}
164843
- break;
164844
- case 248: /* cmd ::= PRAGMA nm dbnm */
164864
+ case 236: /* uniqueflag ::= UNIQUE */
164865
+ case 278: /* raisetype ::= ABORT */ yytestcase(yyruleno==278);
164866
+{yymsp[0].minor.yy394 = OE_Abort;}
164867
+ break;
164868
+ case 237: /* uniqueflag ::= */
164869
+{yymsp[1].minor.yy394 = OE_None;}
164870
+ break;
164871
+ case 240: /* eidlist ::= eidlist COMMA nm collate sortorder */
164872
+{
164873
+ yymsp[-4].minor.yy322 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394);
164874
+}
164875
+ break;
164876
+ case 241: /* eidlist ::= nm collate sortorder */
164877
+{
164878
+ yymsp[-2].minor.yy322 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394); /*A-overwrites-Y*/
164879
+}
164880
+ break;
164881
+ case 244: /* cmd ::= DROP INDEX ifexists fullname */
164882
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy131, yymsp[-1].minor.yy394);}
164883
+ break;
164884
+ case 245: /* cmd ::= VACUUM vinto */
164885
+{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy528);}
164886
+ break;
164887
+ case 246: /* cmd ::= VACUUM nm vinto */
164888
+{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy528);}
164889
+ break;
164890
+ case 249: /* cmd ::= PRAGMA nm dbnm */
164845164891
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
164846164892
break;
164847
- case 249: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
164893
+ case 250: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
164848164894
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
164849164895
break;
164850
- case 250: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
164896
+ case 251: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
164851164897
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
164852164898
break;
164853
- case 251: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
164899
+ case 252: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
164854164900
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
164855164901
break;
164856
- case 252: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
164902
+ case 253: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
164857164903
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
164858164904
break;
164859
- case 255: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
164905
+ case 256: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
164860164906
{
164861164907
Token all;
164862164908
all.z = yymsp[-3].minor.yy0.z;
164863164909
all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
164864
- sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy95, &all);
164910
+ sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy33, &all);
164865164911
}
164866164912
break;
164867
- case 256: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
164913
+ case 257: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
164868164914
{
164869
- sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy64, yymsp[-4].minor.yy570.a, yymsp[-4].minor.yy570.b, yymsp[-2].minor.yy607, yymsp[0].minor.yy626, yymsp[-10].minor.yy64, yymsp[-8].minor.yy64);
164915
+ sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy394, yymsp[-4].minor.yy180.a, yymsp[-4].minor.yy180.b, yymsp[-2].minor.yy131, yymsp[0].minor.yy528, yymsp[-10].minor.yy394, yymsp[-8].minor.yy394);
164870164916
yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
164871164917
}
164872164918
break;
164873
- case 257: /* trigger_time ::= BEFORE|AFTER */
164874
-{ yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/ }
164875
- break;
164876
- case 258: /* trigger_time ::= INSTEAD OF */
164877
-{ yymsp[-1].minor.yy64 = TK_INSTEAD;}
164878
- break;
164879
- case 259: /* trigger_time ::= */
164880
-{ yymsp[1].minor.yy64 = TK_BEFORE; }
164881
- break;
164882
- case 260: /* trigger_event ::= DELETE|INSERT */
164883
- case 261: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==261);
164884
-{yymsp[0].minor.yy570.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy570.b = 0;}
164885
- break;
164886
- case 262: /* trigger_event ::= UPDATE OF idlist */
164887
-{yymsp[-2].minor.yy570.a = TK_UPDATE; yymsp[-2].minor.yy570.b = yymsp[0].minor.yy240;}
164888
- break;
164889
- case 263: /* when_clause ::= */
164890
- case 282: /* key_opt ::= */ yytestcase(yyruleno==282);
164891
-{ yymsp[1].minor.yy626 = 0; }
164892
- break;
164893
- case 264: /* when_clause ::= WHEN expr */
164894
- case 283: /* key_opt ::= KEY expr */ yytestcase(yyruleno==283);
164895
-{ yymsp[-1].minor.yy626 = yymsp[0].minor.yy626; }
164896
- break;
164897
- case 265: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
164898
-{
164899
- assert( yymsp[-2].minor.yy95!=0 );
164900
- yymsp[-2].minor.yy95->pLast->pNext = yymsp[-1].minor.yy95;
164901
- yymsp[-2].minor.yy95->pLast = yymsp[-1].minor.yy95;
164902
-}
164903
- break;
164904
- case 266: /* trigger_cmd_list ::= trigger_cmd SEMI */
164905
-{
164906
- assert( yymsp[-1].minor.yy95!=0 );
164907
- yymsp[-1].minor.yy95->pLast = yymsp[-1].minor.yy95;
164908
-}
164909
- break;
164910
- case 267: /* trnm ::= nm DOT nm */
164919
+ case 258: /* trigger_time ::= BEFORE|AFTER */
164920
+{ yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/ }
164921
+ break;
164922
+ case 259: /* trigger_time ::= INSTEAD OF */
164923
+{ yymsp[-1].minor.yy394 = TK_INSTEAD;}
164924
+ break;
164925
+ case 260: /* trigger_time ::= */
164926
+{ yymsp[1].minor.yy394 = TK_BEFORE; }
164927
+ break;
164928
+ case 261: /* trigger_event ::= DELETE|INSERT */
164929
+ case 262: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==262);
164930
+{yymsp[0].minor.yy180.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy180.b = 0;}
164931
+ break;
164932
+ case 263: /* trigger_event ::= UPDATE OF idlist */
164933
+{yymsp[-2].minor.yy180.a = TK_UPDATE; yymsp[-2].minor.yy180.b = yymsp[0].minor.yy254;}
164934
+ break;
164935
+ case 264: /* when_clause ::= */
164936
+ case 283: /* key_opt ::= */ yytestcase(yyruleno==283);
164937
+{ yymsp[1].minor.yy528 = 0; }
164938
+ break;
164939
+ case 265: /* when_clause ::= WHEN expr */
164940
+ case 284: /* key_opt ::= KEY expr */ yytestcase(yyruleno==284);
164941
+{ yymsp[-1].minor.yy528 = yymsp[0].minor.yy528; }
164942
+ break;
164943
+ case 266: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
164944
+{
164945
+ assert( yymsp[-2].minor.yy33!=0 );
164946
+ yymsp[-2].minor.yy33->pLast->pNext = yymsp[-1].minor.yy33;
164947
+ yymsp[-2].minor.yy33->pLast = yymsp[-1].minor.yy33;
164948
+}
164949
+ break;
164950
+ case 267: /* trigger_cmd_list ::= trigger_cmd SEMI */
164951
+{
164952
+ assert( yymsp[-1].minor.yy33!=0 );
164953
+ yymsp[-1].minor.yy33->pLast = yymsp[-1].minor.yy33;
164954
+}
164955
+ break;
164956
+ case 268: /* trnm ::= nm DOT nm */
164911164957
{
164912164958
yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
164913164959
sqlite3ErrorMsg(pParse,
164914164960
"qualified table names are not allowed on INSERT, UPDATE, and DELETE "
164915164961
"statements within triggers");
164916164962
}
164917164963
break;
164918
- case 268: /* tridxby ::= INDEXED BY nm */
164964
+ case 269: /* tridxby ::= INDEXED BY nm */
164919164965
{
164920164966
sqlite3ErrorMsg(pParse,
164921164967
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
164922164968
"within triggers");
164923164969
}
164924164970
break;
164925
- case 269: /* tridxby ::= NOT INDEXED */
164971
+ case 270: /* tridxby ::= NOT INDEXED */
164926164972
{
164927164973
sqlite3ErrorMsg(pParse,
164928164974
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
164929164975
"within triggers");
164930164976
}
164931164977
break;
164932
- case 270: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
164933
-{yylhsminor.yy95 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy607, yymsp[-3].minor.yy562, yymsp[-1].minor.yy626, yymsp[-7].minor.yy64, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy600);}
164934
- yymsp[-8].minor.yy95 = yylhsminor.yy95;
164935
- break;
164936
- case 271: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
164937
-{
164938
- yylhsminor.yy95 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy240,yymsp[-2].minor.yy303,yymsp[-6].minor.yy64,yymsp[-1].minor.yy138,yymsp[-7].minor.yy600,yymsp[0].minor.yy600);/*yylhsminor.yy95-overwrites-yymsp[-6].minor.yy64*/
164939
-}
164940
- yymsp[-7].minor.yy95 = yylhsminor.yy95;
164941
- break;
164942
- case 272: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
164943
-{yylhsminor.yy95 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy626, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy600);}
164944
- yymsp[-5].minor.yy95 = yylhsminor.yy95;
164945
- break;
164946
- case 273: /* trigger_cmd ::= scanpt select scanpt */
164947
-{yylhsminor.yy95 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy303, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); /*yylhsminor.yy95-overwrites-yymsp[-1].minor.yy303*/}
164948
- yymsp[-2].minor.yy95 = yylhsminor.yy95;
164949
- break;
164950
- case 274: /* expr ::= RAISE LP IGNORE RP */
164951
-{
164952
- yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
164953
- if( yymsp[-3].minor.yy626 ){
164954
- yymsp[-3].minor.yy626->affExpr = OE_Ignore;
164955
- }
164956
-}
164957
- break;
164958
- case 275: /* expr ::= RAISE LP raisetype COMMA nm RP */
164959
-{
164960
- yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
164961
- if( yymsp[-5].minor.yy626 ) {
164962
- yymsp[-5].minor.yy626->affExpr = (char)yymsp[-3].minor.yy64;
164963
- }
164964
-}
164965
- break;
164966
- case 276: /* raisetype ::= ROLLBACK */
164967
-{yymsp[0].minor.yy64 = OE_Rollback;}
164968
- break;
164969
- case 278: /* raisetype ::= FAIL */
164970
-{yymsp[0].minor.yy64 = OE_Fail;}
164971
- break;
164972
- case 279: /* cmd ::= DROP TRIGGER ifexists fullname */
164973
-{
164974
- sqlite3DropTrigger(pParse,yymsp[0].minor.yy607,yymsp[-1].minor.yy64);
164975
-}
164976
- break;
164977
- case 280: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
164978
-{
164979
- sqlite3Attach(pParse, yymsp[-3].minor.yy626, yymsp[-1].minor.yy626, yymsp[0].minor.yy626);
164980
-}
164981
- break;
164982
- case 281: /* cmd ::= DETACH database_kw_opt expr */
164983
-{
164984
- sqlite3Detach(pParse, yymsp[0].minor.yy626);
164985
-}
164986
- break;
164987
- case 284: /* cmd ::= REINDEX */
164978
+ case 271: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
164979
+{yylhsminor.yy33 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy131, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528, yymsp[-7].minor.yy394, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy522);}
164980
+ yymsp[-8].minor.yy33 = yylhsminor.yy33;
164981
+ break;
164982
+ case 272: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
164983
+{
164984
+ yylhsminor.yy33 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy254,yymsp[-2].minor.yy47,yymsp[-6].minor.yy394,yymsp[-1].minor.yy444,yymsp[-7].minor.yy522,yymsp[0].minor.yy522);/*yylhsminor.yy33-overwrites-yymsp[-6].minor.yy394*/
164985
+}
164986
+ yymsp[-7].minor.yy33 = yylhsminor.yy33;
164987
+ break;
164988
+ case 273: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
164989
+{yylhsminor.yy33 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy528, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy522);}
164990
+ yymsp[-5].minor.yy33 = yylhsminor.yy33;
164991
+ break;
164992
+ case 274: /* trigger_cmd ::= scanpt select scanpt */
164993
+{yylhsminor.yy33 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy47, yymsp[-2].minor.yy522, yymsp[0].minor.yy522); /*yylhsminor.yy33-overwrites-yymsp[-1].minor.yy47*/}
164994
+ yymsp[-2].minor.yy33 = yylhsminor.yy33;
164995
+ break;
164996
+ case 275: /* expr ::= RAISE LP IGNORE RP */
164997
+{
164998
+ yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
164999
+ if( yymsp[-3].minor.yy528 ){
165000
+ yymsp[-3].minor.yy528->affExpr = OE_Ignore;
165001
+ }
165002
+}
165003
+ break;
165004
+ case 276: /* expr ::= RAISE LP raisetype COMMA nm RP */
165005
+{
165006
+ yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
165007
+ if( yymsp[-5].minor.yy528 ) {
165008
+ yymsp[-5].minor.yy528->affExpr = (char)yymsp[-3].minor.yy394;
165009
+ }
165010
+}
165011
+ break;
165012
+ case 277: /* raisetype ::= ROLLBACK */
165013
+{yymsp[0].minor.yy394 = OE_Rollback;}
165014
+ break;
165015
+ case 279: /* raisetype ::= FAIL */
165016
+{yymsp[0].minor.yy394 = OE_Fail;}
165017
+ break;
165018
+ case 280: /* cmd ::= DROP TRIGGER ifexists fullname */
165019
+{
165020
+ sqlite3DropTrigger(pParse,yymsp[0].minor.yy131,yymsp[-1].minor.yy394);
165021
+}
165022
+ break;
165023
+ case 281: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
165024
+{
165025
+ sqlite3Attach(pParse, yymsp[-3].minor.yy528, yymsp[-1].minor.yy528, yymsp[0].minor.yy528);
165026
+}
165027
+ break;
165028
+ case 282: /* cmd ::= DETACH database_kw_opt expr */
165029
+{
165030
+ sqlite3Detach(pParse, yymsp[0].minor.yy528);
165031
+}
165032
+ break;
165033
+ case 285: /* cmd ::= REINDEX */
164988165034
{sqlite3Reindex(pParse, 0, 0);}
164989165035
break;
164990
- case 285: /* cmd ::= REINDEX nm dbnm */
165036
+ case 286: /* cmd ::= REINDEX nm dbnm */
164991165037
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
164992165038
break;
164993
- case 286: /* cmd ::= ANALYZE */
165039
+ case 287: /* cmd ::= ANALYZE */
164994165040
{sqlite3Analyze(pParse, 0, 0);}
164995165041
break;
164996
- case 287: /* cmd ::= ANALYZE nm dbnm */
165042
+ case 288: /* cmd ::= ANALYZE nm dbnm */
164997165043
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
164998165044
break;
164999
- case 288: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
165045
+ case 289: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
165000165046
{
165001
- sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy607,&yymsp[0].minor.yy0);
165047
+ sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy131,&yymsp[0].minor.yy0);
165002165048
}
165003165049
break;
165004
- case 289: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
165050
+ case 290: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
165005165051
{
165006165052
yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
165007165053
sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
165008165054
}
165009165055
break;
165010
- case 290: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
165056
+ case 291: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
165011165057
{
165012
- sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy607, &yymsp[0].minor.yy0);
165058
+ sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy131, &yymsp[0].minor.yy0);
165013165059
}
165014165060
break;
165015
- case 291: /* add_column_fullname ::= fullname */
165061
+ case 292: /* add_column_fullname ::= fullname */
165016165062
{
165017165063
disableLookaside(pParse);
165018
- sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy607);
165019
-}
165020
- break;
165021
- case 292: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
165022
-{
165023
- sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy607, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
165024
-}
165025
- break;
165026
- case 293: /* cmd ::= create_vtab */
165064
+ sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy131);
165065
+}
165066
+ break;
165067
+ case 293: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
165068
+{
165069
+ sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy131, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
165070
+}
165071
+ break;
165072
+ case 294: /* cmd ::= create_vtab */
165027165073
{sqlite3VtabFinishParse(pParse,0);}
165028165074
break;
165029
- case 294: /* cmd ::= create_vtab LP vtabarglist RP */
165075
+ case 295: /* cmd ::= create_vtab LP vtabarglist RP */
165030165076
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
165031165077
break;
165032
- case 295: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
165078
+ case 296: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
165033165079
{
165034
- sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy64);
165080
+ sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy394);
165035165081
}
165036165082
break;
165037
- case 296: /* vtabarg ::= */
165083
+ case 297: /* vtabarg ::= */
165038165084
{sqlite3VtabArgInit(pParse);}
165039165085
break;
165040
- case 297: /* vtabargtoken ::= ANY */
165041
- case 298: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==298);
165042
- case 299: /* lp ::= LP */ yytestcase(yyruleno==299);
165086
+ case 298: /* vtabargtoken ::= ANY */
165087
+ case 299: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==299);
165088
+ case 300: /* lp ::= LP */ yytestcase(yyruleno==300);
165043165089
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
165044165090
break;
165045
- case 300: /* with ::= WITH wqlist */
165046
- case 301: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==301);
165047
-{ sqlite3WithPush(pParse, yymsp[0].minor.yy43, 1); }
165048
- break;
165049
- case 302: /* wqas ::= AS */
165050
-{yymsp[0].minor.yy534 = M10d_Any;}
165051
- break;
165052
- case 303: /* wqas ::= AS MATERIALIZED */
165053
-{yymsp[-1].minor.yy534 = M10d_Yes;}
165054
- break;
165055
- case 304: /* wqas ::= AS NOT MATERIALIZED */
165056
-{yymsp[-2].minor.yy534 = M10d_No;}
165057
- break;
165058
- case 305: /* wqitem ::= nm eidlist_opt wqas LP select RP */
165059
-{
165060
- yymsp[-5].minor.yy255 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy562, yymsp[-1].minor.yy303, yymsp[-3].minor.yy534); /*A-overwrites-X*/
165061
-}
165062
- break;
165063
- case 306: /* wqlist ::= wqitem */
165064
-{
165065
- yymsp[0].minor.yy43 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy255); /*A-overwrites-X*/
165066
-}
165067
- break;
165068
- case 307: /* wqlist ::= wqlist COMMA wqitem */
165069
-{
165070
- yymsp[-2].minor.yy43 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy43, yymsp[0].minor.yy255);
165071
-}
165072
- break;
165073
- case 308: /* windowdefn_list ::= windowdefn */
165074
-{ yylhsminor.yy375 = yymsp[0].minor.yy375; }
165075
- yymsp[0].minor.yy375 = yylhsminor.yy375;
165076
- break;
165077
- case 309: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
165078
-{
165079
- assert( yymsp[0].minor.yy375!=0 );
165080
- sqlite3WindowChain(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy375);
165081
- yymsp[0].minor.yy375->pNextWin = yymsp[-2].minor.yy375;
165082
- yylhsminor.yy375 = yymsp[0].minor.yy375;
165083
-}
165084
- yymsp[-2].minor.yy375 = yylhsminor.yy375;
165085
- break;
165086
- case 310: /* windowdefn ::= nm AS LP window RP */
165087
-{
165088
- if( ALWAYS(yymsp[-1].minor.yy375) ){
165089
- yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
165090
- }
165091
- yylhsminor.yy375 = yymsp[-1].minor.yy375;
165092
-}
165093
- yymsp[-4].minor.yy375 = yylhsminor.yy375;
165094
- break;
165095
- case 311: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
165096
-{
165097
- yymsp[-4].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, 0);
165098
-}
165099
- break;
165100
- case 312: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
165101
-{
165102
- yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, &yymsp[-5].minor.yy0);
165103
-}
165104
- yymsp[-5].minor.yy375 = yylhsminor.yy375;
165105
- break;
165106
- case 313: /* window ::= ORDER BY sortlist frame_opt */
165107
-{
165108
- yymsp[-3].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, 0);
165109
-}
165110
- break;
165111
- case 314: /* window ::= nm ORDER BY sortlist frame_opt */
165112
-{
165113
- yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0);
165114
-}
165115
- yymsp[-4].minor.yy375 = yylhsminor.yy375;
165116
- break;
165117
- case 315: /* window ::= frame_opt */
165118
- case 334: /* filter_over ::= over_clause */ yytestcase(yyruleno==334);
165119
-{
165120
- yylhsminor.yy375 = yymsp[0].minor.yy375;
165121
-}
165122
- yymsp[0].minor.yy375 = yylhsminor.yy375;
165123
- break;
165124
- case 316: /* window ::= nm frame_opt */
165125
-{
165126
- yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, 0, &yymsp[-1].minor.yy0);
165127
-}
165128
- yymsp[-1].minor.yy375 = yylhsminor.yy375;
165129
- break;
165130
- case 317: /* frame_opt ::= */
165131
-{
165132
- yymsp[1].minor.yy375 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
165133
-}
165134
- break;
165135
- case 318: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
165136
-{
165137
- yylhsminor.yy375 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy64, yymsp[-1].minor.yy81.eType, yymsp[-1].minor.yy81.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy534);
165138
-}
165139
- yymsp[-2].minor.yy375 = yylhsminor.yy375;
165140
- break;
165141
- case 319: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
165142
-{
165143
- yylhsminor.yy375 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy64, yymsp[-3].minor.yy81.eType, yymsp[-3].minor.yy81.pExpr, yymsp[-1].minor.yy81.eType, yymsp[-1].minor.yy81.pExpr, yymsp[0].minor.yy534);
165144
-}
165145
- yymsp[-5].minor.yy375 = yylhsminor.yy375;
165146
- break;
165147
- case 321: /* frame_bound_s ::= frame_bound */
165148
- case 323: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==323);
165149
-{yylhsminor.yy81 = yymsp[0].minor.yy81;}
165150
- yymsp[0].minor.yy81 = yylhsminor.yy81;
165151
- break;
165152
- case 322: /* frame_bound_s ::= UNBOUNDED PRECEDING */
165153
- case 324: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==324);
165154
- case 326: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==326);
165155
-{yylhsminor.yy81.eType = yymsp[-1].major; yylhsminor.yy81.pExpr = 0;}
165156
- yymsp[-1].minor.yy81 = yylhsminor.yy81;
165157
- break;
165158
- case 325: /* frame_bound ::= expr PRECEDING|FOLLOWING */
165159
-{yylhsminor.yy81.eType = yymsp[0].major; yylhsminor.yy81.pExpr = yymsp[-1].minor.yy626;}
165160
- yymsp[-1].minor.yy81 = yylhsminor.yy81;
165161
- break;
165162
- case 327: /* frame_exclude_opt ::= */
165163
-{yymsp[1].minor.yy534 = 0;}
165164
- break;
165165
- case 328: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
165166
-{yymsp[-1].minor.yy534 = yymsp[0].minor.yy534;}
165167
- break;
165168
- case 329: /* frame_exclude ::= NO OTHERS */
165169
- case 330: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==330);
165170
-{yymsp[-1].minor.yy534 = yymsp[-1].major; /*A-overwrites-X*/}
165171
- break;
165172
- case 331: /* frame_exclude ::= GROUP|TIES */
165173
-{yymsp[0].minor.yy534 = yymsp[0].major; /*A-overwrites-X*/}
165174
- break;
165175
- case 332: /* window_clause ::= WINDOW windowdefn_list */
165176
-{ yymsp[-1].minor.yy375 = yymsp[0].minor.yy375; }
165177
- break;
165178
- case 333: /* filter_over ::= filter_clause over_clause */
165179
-{
165180
- if( yymsp[0].minor.yy375 ){
165181
- yymsp[0].minor.yy375->pFilter = yymsp[-1].minor.yy626;
165182
- }else{
165183
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
165184
- }
165185
- yylhsminor.yy375 = yymsp[0].minor.yy375;
165186
-}
165187
- yymsp[-1].minor.yy375 = yylhsminor.yy375;
165188
- break;
165189
- case 335: /* filter_over ::= filter_clause */
165190
-{
165191
- yylhsminor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
165192
- if( yylhsminor.yy375 ){
165193
- yylhsminor.yy375->eFrmType = TK_FILTER;
165194
- yylhsminor.yy375->pFilter = yymsp[0].minor.yy626;
165195
- }else{
165196
- sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy626);
165197
- }
165198
-}
165199
- yymsp[0].minor.yy375 = yylhsminor.yy375;
165200
- break;
165201
- case 336: /* over_clause ::= OVER LP window RP */
165202
-{
165203
- yymsp[-3].minor.yy375 = yymsp[-1].minor.yy375;
165204
- assert( yymsp[-3].minor.yy375!=0 );
165205
-}
165206
- break;
165207
- case 337: /* over_clause ::= OVER nm */
165208
-{
165209
- yymsp[-1].minor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
165210
- if( yymsp[-1].minor.yy375 ){
165211
- yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
165212
- }
165213
-}
165214
- break;
165215
- case 338: /* filter_clause ::= FILTER LP WHERE expr RP */
165216
-{ yymsp[-4].minor.yy626 = yymsp[-1].minor.yy626; }
165091
+ case 301: /* with ::= WITH wqlist */
165092
+ case 302: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==302);
165093
+{ sqlite3WithPush(pParse, yymsp[0].minor.yy521, 1); }
165094
+ break;
165095
+ case 303: /* wqas ::= AS */
165096
+{yymsp[0].minor.yy516 = M10d_Any;}
165097
+ break;
165098
+ case 304: /* wqas ::= AS MATERIALIZED */
165099
+{yymsp[-1].minor.yy516 = M10d_Yes;}
165100
+ break;
165101
+ case 305: /* wqas ::= AS NOT MATERIALIZED */
165102
+{yymsp[-2].minor.yy516 = M10d_No;}
165103
+ break;
165104
+ case 306: /* wqitem ::= nm eidlist_opt wqas LP select RP */
165105
+{
165106
+ yymsp[-5].minor.yy385 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy47, yymsp[-3].minor.yy516); /*A-overwrites-X*/
165107
+}
165108
+ break;
165109
+ case 307: /* wqlist ::= wqitem */
165110
+{
165111
+ yymsp[0].minor.yy521 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy385); /*A-overwrites-X*/
165112
+}
165113
+ break;
165114
+ case 308: /* wqlist ::= wqlist COMMA wqitem */
165115
+{
165116
+ yymsp[-2].minor.yy521 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy521, yymsp[0].minor.yy385);
165117
+}
165118
+ break;
165119
+ case 309: /* windowdefn_list ::= windowdefn */
165120
+{ yylhsminor.yy41 = yymsp[0].minor.yy41; }
165121
+ yymsp[0].minor.yy41 = yylhsminor.yy41;
165122
+ break;
165123
+ case 310: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
165124
+{
165125
+ assert( yymsp[0].minor.yy41!=0 );
165126
+ sqlite3WindowChain(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy41);
165127
+ yymsp[0].minor.yy41->pNextWin = yymsp[-2].minor.yy41;
165128
+ yylhsminor.yy41 = yymsp[0].minor.yy41;
165129
+}
165130
+ yymsp[-2].minor.yy41 = yylhsminor.yy41;
165131
+ break;
165132
+ case 311: /* windowdefn ::= nm AS LP window RP */
165133
+{
165134
+ if( ALWAYS(yymsp[-1].minor.yy41) ){
165135
+ yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
165136
+ }
165137
+ yylhsminor.yy41 = yymsp[-1].minor.yy41;
165138
+}
165139
+ yymsp[-4].minor.yy41 = yylhsminor.yy41;
165140
+ break;
165141
+ case 312: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
165142
+{
165143
+ yymsp[-4].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, 0);
165144
+}
165145
+ break;
165146
+ case 313: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
165147
+{
165148
+ yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, &yymsp[-5].minor.yy0);
165149
+}
165150
+ yymsp[-5].minor.yy41 = yylhsminor.yy41;
165151
+ break;
165152
+ case 314: /* window ::= ORDER BY sortlist frame_opt */
165153
+{
165154
+ yymsp[-3].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, 0);
165155
+}
165156
+ break;
165157
+ case 315: /* window ::= nm ORDER BY sortlist frame_opt */
165158
+{
165159
+ yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0);
165160
+}
165161
+ yymsp[-4].minor.yy41 = yylhsminor.yy41;
165162
+ break;
165163
+ case 316: /* window ::= frame_opt */
165164
+ case 335: /* filter_over ::= over_clause */ yytestcase(yyruleno==335);
165165
+{
165166
+ yylhsminor.yy41 = yymsp[0].minor.yy41;
165167
+}
165168
+ yymsp[0].minor.yy41 = yylhsminor.yy41;
165169
+ break;
165170
+ case 317: /* window ::= nm frame_opt */
165171
+{
165172
+ yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, 0, &yymsp[-1].minor.yy0);
165173
+}
165174
+ yymsp[-1].minor.yy41 = yylhsminor.yy41;
165175
+ break;
165176
+ case 318: /* frame_opt ::= */
165177
+{
165178
+ yymsp[1].minor.yy41 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
165179
+}
165180
+ break;
165181
+ case 319: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
165182
+{
165183
+ yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy394, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy516);
165184
+}
165185
+ yymsp[-2].minor.yy41 = yylhsminor.yy41;
165186
+ break;
165187
+ case 320: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
165188
+{
165189
+ yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy394, yymsp[-3].minor.yy595.eType, yymsp[-3].minor.yy595.pExpr, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, yymsp[0].minor.yy516);
165190
+}
165191
+ yymsp[-5].minor.yy41 = yylhsminor.yy41;
165192
+ break;
165193
+ case 322: /* frame_bound_s ::= frame_bound */
165194
+ case 324: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==324);
165195
+{yylhsminor.yy595 = yymsp[0].minor.yy595;}
165196
+ yymsp[0].minor.yy595 = yylhsminor.yy595;
165197
+ break;
165198
+ case 323: /* frame_bound_s ::= UNBOUNDED PRECEDING */
165199
+ case 325: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==325);
165200
+ case 327: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==327);
165201
+{yylhsminor.yy595.eType = yymsp[-1].major; yylhsminor.yy595.pExpr = 0;}
165202
+ yymsp[-1].minor.yy595 = yylhsminor.yy595;
165203
+ break;
165204
+ case 326: /* frame_bound ::= expr PRECEDING|FOLLOWING */
165205
+{yylhsminor.yy595.eType = yymsp[0].major; yylhsminor.yy595.pExpr = yymsp[-1].minor.yy528;}
165206
+ yymsp[-1].minor.yy595 = yylhsminor.yy595;
165207
+ break;
165208
+ case 328: /* frame_exclude_opt ::= */
165209
+{yymsp[1].minor.yy516 = 0;}
165210
+ break;
165211
+ case 329: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
165212
+{yymsp[-1].minor.yy516 = yymsp[0].minor.yy516;}
165213
+ break;
165214
+ case 330: /* frame_exclude ::= NO OTHERS */
165215
+ case 331: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==331);
165216
+{yymsp[-1].minor.yy516 = yymsp[-1].major; /*A-overwrites-X*/}
165217
+ break;
165218
+ case 332: /* frame_exclude ::= GROUP|TIES */
165219
+{yymsp[0].minor.yy516 = yymsp[0].major; /*A-overwrites-X*/}
165220
+ break;
165221
+ case 333: /* window_clause ::= WINDOW windowdefn_list */
165222
+{ yymsp[-1].minor.yy41 = yymsp[0].minor.yy41; }
165223
+ break;
165224
+ case 334: /* filter_over ::= filter_clause over_clause */
165225
+{
165226
+ if( yymsp[0].minor.yy41 ){
165227
+ yymsp[0].minor.yy41->pFilter = yymsp[-1].minor.yy528;
165228
+ }else{
165229
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
165230
+ }
165231
+ yylhsminor.yy41 = yymsp[0].minor.yy41;
165232
+}
165233
+ yymsp[-1].minor.yy41 = yylhsminor.yy41;
165234
+ break;
165235
+ case 336: /* filter_over ::= filter_clause */
165236
+{
165237
+ yylhsminor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
165238
+ if( yylhsminor.yy41 ){
165239
+ yylhsminor.yy41->eFrmType = TK_FILTER;
165240
+ yylhsminor.yy41->pFilter = yymsp[0].minor.yy528;
165241
+ }else{
165242
+ sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy528);
165243
+ }
165244
+}
165245
+ yymsp[0].minor.yy41 = yylhsminor.yy41;
165246
+ break;
165247
+ case 337: /* over_clause ::= OVER LP window RP */
165248
+{
165249
+ yymsp[-3].minor.yy41 = yymsp[-1].minor.yy41;
165250
+ assert( yymsp[-3].minor.yy41!=0 );
165251
+}
165252
+ break;
165253
+ case 338: /* over_clause ::= OVER nm */
165254
+{
165255
+ yymsp[-1].minor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
165256
+ if( yymsp[-1].minor.yy41 ){
165257
+ yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
165258
+ }
165259
+}
165260
+ break;
165261
+ case 339: /* filter_clause ::= FILTER LP WHERE expr RP */
165262
+{ yymsp[-4].minor.yy528 = yymsp[-1].minor.yy528; }
165217165263
break;
165218165264
default:
165219
- /* (339) input ::= cmdlist */ yytestcase(yyruleno==339);
165220
- /* (340) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==340);
165221
- /* (341) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=341);
165222
- /* (342) ecmd ::= SEMI */ yytestcase(yyruleno==342);
165223
- /* (343) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==343);
165224
- /* (344) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=344);
165225
- /* (345) trans_opt ::= */ yytestcase(yyruleno==345);
165226
- /* (346) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==346);
165227
- /* (347) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==347);
165228
- /* (348) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==348);
165229
- /* (349) savepoint_opt ::= */ yytestcase(yyruleno==349);
165230
- /* (350) cmd ::= create_table create_table_args */ yytestcase(yyruleno==350);
165231
- /* (351) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=351);
165232
- /* (352) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==352);
165233
- /* (353) columnlist ::= columnname carglist */ yytestcase(yyruleno==353);
165234
- /* (354) nm ::= ID|INDEXED */ yytestcase(yyruleno==354);
165235
- /* (355) nm ::= STRING */ yytestcase(yyruleno==355);
165236
- /* (356) nm ::= JOIN_KW */ yytestcase(yyruleno==356);
165237
- /* (357) typetoken ::= typename */ yytestcase(yyruleno==357);
165238
- /* (358) typename ::= ID|STRING */ yytestcase(yyruleno==358);
165239
- /* (359) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=359);
165240
- /* (360) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
165241
- /* (361) carglist ::= carglist ccons */ yytestcase(yyruleno==361);
165242
- /* (362) carglist ::= */ yytestcase(yyruleno==362);
165243
- /* (363) ccons ::= NULL onconf */ yytestcase(yyruleno==363);
165244
- /* (364) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==364);
165245
- /* (365) ccons ::= AS generated */ yytestcase(yyruleno==365);
165246
- /* (366) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==366);
165247
- /* (367) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==367);
165248
- /* (368) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=368);
165249
- /* (369) tconscomma ::= */ yytestcase(yyruleno==369);
165250
- /* (370) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=370);
165251
- /* (371) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=371);
165252
- /* (372) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=372);
165253
- /* (373) oneselect ::= values */ yytestcase(yyruleno==373);
165254
- /* (374) sclp ::= selcollist COMMA */ yytestcase(yyruleno==374);
165255
- /* (375) as ::= ID|STRING */ yytestcase(yyruleno==375);
165256
- /* (376) returning ::= */ yytestcase(yyruleno==376);
165257
- /* (377) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=377);
165258
- /* (378) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==378);
165259
- /* (379) exprlist ::= nexprlist */ yytestcase(yyruleno==379);
165260
- /* (380) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=380);
165261
- /* (381) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=381);
165262
- /* (382) nmnum ::= ON */ yytestcase(yyruleno==382);
165263
- /* (383) nmnum ::= DELETE */ yytestcase(yyruleno==383);
165264
- /* (384) nmnum ::= DEFAULT */ yytestcase(yyruleno==384);
165265
- /* (385) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==385);
165266
- /* (386) foreach_clause ::= */ yytestcase(yyruleno==386);
165267
- /* (387) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==387);
165268
- /* (388) trnm ::= nm */ yytestcase(yyruleno==388);
165269
- /* (389) tridxby ::= */ yytestcase(yyruleno==389);
165270
- /* (390) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==390);
165271
- /* (391) database_kw_opt ::= */ yytestcase(yyruleno==391);
165272
- /* (392) kwcolumn_opt ::= */ yytestcase(yyruleno==392);
165273
- /* (393) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==393);
165274
- /* (394) vtabarglist ::= vtabarg */ yytestcase(yyruleno==394);
165275
- /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==395);
165276
- /* (396) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==396);
165277
- /* (397) anylist ::= */ yytestcase(yyruleno==397);
165278
- /* (398) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==398);
165279
- /* (399) anylist ::= anylist ANY */ yytestcase(yyruleno==399);
165280
- /* (400) with ::= */ yytestcase(yyruleno==400);
165265
+ /* (340) input ::= cmdlist */ yytestcase(yyruleno==340);
165266
+ /* (341) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==341);
165267
+ /* (342) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=342);
165268
+ /* (343) ecmd ::= SEMI */ yytestcase(yyruleno==343);
165269
+ /* (344) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==344);
165270
+ /* (345) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=345);
165271
+ /* (346) trans_opt ::= */ yytestcase(yyruleno==346);
165272
+ /* (347) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==347);
165273
+ /* (348) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==348);
165274
+ /* (349) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==349);
165275
+ /* (350) savepoint_opt ::= */ yytestcase(yyruleno==350);
165276
+ /* (351) cmd ::= create_table create_table_args */ yytestcase(yyruleno==351);
165277
+ /* (352) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=352);
165278
+ /* (353) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==353);
165279
+ /* (354) columnlist ::= columnname carglist */ yytestcase(yyruleno==354);
165280
+ /* (355) nm ::= ID|INDEXED */ yytestcase(yyruleno==355);
165281
+ /* (356) nm ::= STRING */ yytestcase(yyruleno==356);
165282
+ /* (357) nm ::= JOIN_KW */ yytestcase(yyruleno==357);
165283
+ /* (358) typetoken ::= typename */ yytestcase(yyruleno==358);
165284
+ /* (359) typename ::= ID|STRING */ yytestcase(yyruleno==359);
165285
+ /* (360) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
165286
+ /* (361) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=361);
165287
+ /* (362) carglist ::= carglist ccons */ yytestcase(yyruleno==362);
165288
+ /* (363) carglist ::= */ yytestcase(yyruleno==363);
165289
+ /* (364) ccons ::= NULL onconf */ yytestcase(yyruleno==364);
165290
+ /* (365) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==365);
165291
+ /* (366) ccons ::= AS generated */ yytestcase(yyruleno==366);
165292
+ /* (367) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==367);
165293
+ /* (368) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==368);
165294
+ /* (369) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=369);
165295
+ /* (370) tconscomma ::= */ yytestcase(yyruleno==370);
165296
+ /* (371) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=371);
165297
+ /* (372) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=372);
165298
+ /* (373) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=373);
165299
+ /* (374) oneselect ::= values */ yytestcase(yyruleno==374);
165300
+ /* (375) sclp ::= selcollist COMMA */ yytestcase(yyruleno==375);
165301
+ /* (376) as ::= ID|STRING */ yytestcase(yyruleno==376);
165302
+ /* (377) returning ::= */ yytestcase(yyruleno==377);
165303
+ /* (378) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=378);
165304
+ /* (379) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==379);
165305
+ /* (380) exprlist ::= nexprlist */ yytestcase(yyruleno==380);
165306
+ /* (381) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=381);
165307
+ /* (382) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=382);
165308
+ /* (383) nmnum ::= ON */ yytestcase(yyruleno==383);
165309
+ /* (384) nmnum ::= DELETE */ yytestcase(yyruleno==384);
165310
+ /* (385) nmnum ::= DEFAULT */ yytestcase(yyruleno==385);
165311
+ /* (386) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==386);
165312
+ /* (387) foreach_clause ::= */ yytestcase(yyruleno==387);
165313
+ /* (388) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==388);
165314
+ /* (389) trnm ::= nm */ yytestcase(yyruleno==389);
165315
+ /* (390) tridxby ::= */ yytestcase(yyruleno==390);
165316
+ /* (391) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==391);
165317
+ /* (392) database_kw_opt ::= */ yytestcase(yyruleno==392);
165318
+ /* (393) kwcolumn_opt ::= */ yytestcase(yyruleno==393);
165319
+ /* (394) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==394);
165320
+ /* (395) vtabarglist ::= vtabarg */ yytestcase(yyruleno==395);
165321
+ /* (396) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==396);
165322
+ /* (397) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==397);
165323
+ /* (398) anylist ::= */ yytestcase(yyruleno==398);
165324
+ /* (399) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==399);
165325
+ /* (400) anylist ::= anylist ANY */ yytestcase(yyruleno==400);
165326
+ /* (401) with ::= */ yytestcase(yyruleno==401);
165281165327
break;
165282165328
/********** End reduce actions ************************************************/
165283165329
};
165284165330
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
165285165331
yygoto = yyRuleInfoLhs[yyruleno];
@@ -166398,10 +166444,13 @@
166398166444
case CC_MINUS: {
166399166445
if( z[1]=='-' ){
166400166446
for(i=2; (c=z[i])!=0 && c!='\n'; i++){}
166401166447
*tokenType = TK_SPACE; /* IMP: R-22934-25134 */
166402166448
return i;
166449
+ }else if( z[1]=='>' ){
166450
+ *tokenType = TK_PTR;
166451
+ return 2 + (z[2]=='>');
166403166452
}
166404166453
*tokenType = TK_MINUS;
166405166454
return 1;
166406166455
}
166407166456
case CC_LP: {
@@ -167394,13 +167443,10 @@
167394167443
SQLITE_PRIVATE int sqlite3Fts2Init(sqlite3*);
167395167444
#endif
167396167445
#ifdef SQLITE_ENABLE_FTS5
167397167446
SQLITE_PRIVATE int sqlite3Fts5Init(sqlite3*);
167398167447
#endif
167399
-#ifdef SQLITE_ENABLE_JSON1
167400
-SQLITE_PRIVATE int sqlite3Json1Init(sqlite3*);
167401
-#endif
167402167448
#ifdef SQLITE_ENABLE_STMTVTAB
167403167449
SQLITE_PRIVATE int sqlite3StmtVtabInit(sqlite3*);
167404167450
#endif
167405167451
167406167452
/*
@@ -167431,12 +167477,12 @@
167431167477
#endif
167432167478
#ifdef SQLITE_ENABLE_DBSTAT_VTAB
167433167479
sqlite3DbstatRegister,
167434167480
#endif
167435167481
sqlite3TestExtInit,
167436
-#ifdef SQLITE_ENABLE_JSON1
167437
- sqlite3Json1Init,
167482
+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_JSON)
167483
+ sqlite3JsonTableFunctions,
167438167484
#endif
167439167485
#ifdef SQLITE_ENABLE_STMTVTAB
167440167486
sqlite3StmtVtabInit,
167441167487
#endif
167442167488
#ifdef SQLITE_ENABLE_BYTECODE_VTAB
@@ -192022,11 +192068,11 @@
192022192068
}
192023192069
#endif /* defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4) */
192024192070
#endif /* !defined(SQLITE_DISABLE_FTS3_UNICODE) */
192025192071
192026192072
/************** End of fts3_unicode2.c ***************************************/
192027
-/************** Begin file json1.c *******************************************/
192073
+/************** Begin file json.c ********************************************/
192028192074
/*
192029192075
** 2015-08-12
192030192076
**
192031192077
** The author disclaims copyright to this source code. In place of
192032192078
** a legal notice, here is a blessing:
@@ -192035,72 +192081,23 @@
192035192081
** May you find forgiveness for yourself and forgive others.
192036192082
** May you share freely, never taking more than you give.
192037192083
**
192038192084
******************************************************************************
192039192085
**
192040
-** This SQLite extension implements JSON functions. The interface is
192041
-** modeled after MySQL JSON functions:
192086
+** This SQLite JSON functions.
192042192087
**
192043
-** https://dev.mysql.com/doc/refman/5.7/en/json.html
192088
+** This file began as an extension in ext/misc/json1.c in 2015. That
192089
+** extension proved so useful that it has now been moved into the core.
192044192090
**
192045192091
** For the time being, all JSON is stored as pure text. (We might add
192046192092
** a JSONB type in the future which stores a binary encoding of JSON in
192047192093
** a BLOB, but there is no support for JSONB in the current implementation.
192048192094
** This implementation parses JSON text at 250 MB/s, so it is hard to see
192049192095
** how JSONB might improve on that.)
192050192096
*/
192051
-#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_JSON1)
192052
-#if !defined(SQLITEINT_H)
192053
-/* #include "sqlite3ext.h" */
192054
-#endif
192055
-SQLITE_EXTENSION_INIT1
192056
-
192057
-/* If compiling this extension separately (why would anybody do that when
192058
-** it is built into the amalgamation?) we must set NDEBUG if SQLITE_DEBUG
192059
-** is not defined *before* including <assert.h>, in order to disable asserts().
192060
-*/
192061
-#if !defined(SQLITE_AMALGAMATION) && !defined(SQLITE_DEBUG)
192062
-# define NDEBUG 1
192063
-#endif
192064
-
192065
-/* #include <assert.h> */
192066
-/* #include <string.h> */
192067
-/* #include <stdlib.h> */
192068
-/* #include <stdarg.h> */
192069
-
192070
-/* Mark a function parameter as unused, to suppress nuisance compiler
192071
-** warnings. */
192072
-#ifndef UNUSED_PARAM
192073
-# define UNUSED_PARAM(X) (void)(X)
192074
-#endif
192075
-
192076
-#ifndef LARGEST_INT64
192077
-# define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32))
192078
-# define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64)
192079
-#endif
192080
-
192081
-#ifndef deliberate_fall_through
192082
-# define deliberate_fall_through
192083
-#endif
192084
-
192085
-/*
192086
-** Versions of isspace(), isalnum() and isdigit() to which it is safe
192087
-** to pass signed char values.
192088
-*/
192089
-#ifdef sqlite3Isdigit
192090
- /* Use the SQLite core versions if this routine is part of the
192091
- ** SQLite amalgamation */
192092
-# define safe_isdigit(x) sqlite3Isdigit(x)
192093
-# define safe_isalnum(x) sqlite3Isalnum(x)
192094
-# define safe_isxdigit(x) sqlite3Isxdigit(x)
192095
-#else
192096
- /* Use the standard library for separate compilation */
192097
-#include <ctype.h> /* amalgamator: keep */
192098
-# define safe_isdigit(x) isdigit((unsigned char)(x))
192099
-# define safe_isalnum(x) isalnum((unsigned char)(x))
192100
-# define safe_isxdigit(x) isxdigit((unsigned char)(x))
192101
-#endif
192097
+#ifndef SQLITE_OMIT_JSON
192098
+/* #include "sqliteInt.h" */
192102192099
192103192100
/*
192104192101
** Growing our own isspace() routine this way is twice as fast as
192105192102
** the library isspace() function, resulting in a 7% overall performance
192106192103
** increase for the parser. (Ubuntu14.10 gcc 4.8.4 x64 with -Os).
@@ -192121,48 +192118,18 @@
192121192118
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192122192119
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192123192120
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192124192121
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192125192122
};
192126
-#define safe_isspace(x) (jsonIsSpace[(unsigned char)x])
192127
-
192128
-#ifndef SQLITE_AMALGAMATION
192129
- /* Unsigned integer types. These are already defined in the sqliteInt.h,
192130
- ** but the definitions need to be repeated for separate compilation. */
192131
- typedef sqlite3_uint64 u64;
192132
- typedef unsigned int u32;
192133
- typedef unsigned short int u16;
192134
- typedef unsigned char u8;
192135
-# if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_MUTATION_TEST)
192136
-# define SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS 1
192137
-# endif
192138
-# if defined(SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS)
192139
-# define ALWAYS(X) (1)
192140
-# define NEVER(X) (0)
192141
-# elif !defined(NDEBUG)
192142
-# define ALWAYS(X) ((X)?1:(assert(0),0))
192143
-# define NEVER(X) ((X)?(assert(0),1):0)
192144
-# else
192145
-# define ALWAYS(X) (X)
192146
-# define NEVER(X) (X)
192147
-# endif
192148
-# define testcase(X)
192149
-#endif
192123
+#define fast_isspace(x) (jsonIsSpace[(unsigned char)x])
192124
+
192150192125
#if !defined(SQLITE_DEBUG) && !defined(SQLITE_COVERAGE_TEST)
192151192126
# define VVA(X)
192152192127
#else
192153192128
# define VVA(X) X
192154192129
#endif
192155192130
192156
-/*
192157
-** Some of the testcase() macros in this file are problematic for gcov
192158
-** in that they generate false-miss errors randomly. This is a gcov problem,
192159
-** not a problem in this case. But to work around it, we disable the
192160
-** problematic test cases for production builds.
192161
-*/
192162
-#define json_testcase(X)
192163
-
192164192131
/* Objects */
192165192132
typedef struct JsonString JsonString;
192166192133
typedef struct JsonNode JsonNode;
192167192134
typedef struct JsonParse JsonParse;
192168192135
@@ -192616,14 +192583,14 @@
192616192583
/*
192617192584
** Convert a 4-byte hex string into an integer
192618192585
*/
192619192586
static u32 jsonHexToInt4(const char *z){
192620192587
u32 v;
192621
- assert( safe_isxdigit(z[0]) );
192622
- assert( safe_isxdigit(z[1]) );
192623
- assert( safe_isxdigit(z[2]) );
192624
- assert( safe_isxdigit(z[3]) );
192588
+ assert( sqlite3Isxdigit(z[0]) );
192589
+ assert( sqlite3Isxdigit(z[1]) );
192590
+ assert( sqlite3Isxdigit(z[2]) );
192591
+ assert( sqlite3Isxdigit(z[3]) );
192625192592
v = (jsonHexToInt(z[0])<<12)
192626192593
+ (jsonHexToInt(z[1])<<8)
192627192594
+ (jsonHexToInt(z[2])<<4)
192628192595
+ jsonHexToInt(z[3]);
192629192596
return v;
@@ -192854,11 +192821,11 @@
192854192821
/*
192855192822
** Return true if z[] begins with 4 (or more) hexadecimal digits
192856192823
*/
192857192824
static int jsonIs4Hex(const char *z){
192858192825
int i;
192859
- for(i=0; i<4; i++) if( !safe_isxdigit(z[i]) ) return 0;
192826
+ for(i=0; i<4; i++) if( !sqlite3Isxdigit(z[i]) ) return 0;
192860192827
return 1;
192861192828
}
192862192829
192863192830
/*
192864192831
** Parse a single JSON value which begins at pParse->zJson[i]. Return the
@@ -192873,17 +192840,17 @@
192873192840
u32 j;
192874192841
int iThis;
192875192842
int x;
192876192843
JsonNode *pNode;
192877192844
const char *z = pParse->zJson;
192878
- while( safe_isspace(z[i]) ){ i++; }
192845
+ while( fast_isspace(z[i]) ){ i++; }
192879192846
if( (c = z[i])=='{' ){
192880192847
/* Parse object */
192881192848
iThis = jsonParseAddNode(pParse, JSON_OBJECT, 0, 0);
192882192849
if( iThis<0 ) return -1;
192883192850
for(j=i+1;;j++){
192884
- while( safe_isspace(z[j]) ){ j++; }
192851
+ while( fast_isspace(z[j]) ){ j++; }
192885192852
if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1;
192886192853
x = jsonParseValue(pParse, j);
192887192854
if( x<0 ){
192888192855
pParse->iDepth--;
192889192856
if( x==(-2) && pParse->nNode==(u32)iThis+1 ) return j+1;
@@ -192892,18 +192859,18 @@
192892192859
if( pParse->oom ) return -1;
192893192860
pNode = &pParse->aNode[pParse->nNode-1];
192894192861
if( pNode->eType!=JSON_STRING ) return -1;
192895192862
pNode->jnFlags |= JNODE_LABEL;
192896192863
j = x;
192897
- while( safe_isspace(z[j]) ){ j++; }
192864
+ while( fast_isspace(z[j]) ){ j++; }
192898192865
if( z[j]!=':' ) return -1;
192899192866
j++;
192900192867
x = jsonParseValue(pParse, j);
192901192868
pParse->iDepth--;
192902192869
if( x<0 ) return -1;
192903192870
j = x;
192904
- while( safe_isspace(z[j]) ){ j++; }
192871
+ while( fast_isspace(z[j]) ){ j++; }
192905192872
c = z[j];
192906192873
if( c==',' ) continue;
192907192874
if( c!='}' ) return -1;
192908192875
break;
192909192876
}
@@ -192913,20 +192880,20 @@
192913192880
/* Parse array */
192914192881
iThis = jsonParseAddNode(pParse, JSON_ARRAY, 0, 0);
192915192882
if( iThis<0 ) return -1;
192916192883
memset(&pParse->aNode[iThis].u, 0, sizeof(pParse->aNode[iThis].u));
192917192884
for(j=i+1;;j++){
192918
- while( safe_isspace(z[j]) ){ j++; }
192885
+ while( fast_isspace(z[j]) ){ j++; }
192919192886
if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1;
192920192887
x = jsonParseValue(pParse, j);
192921192888
pParse->iDepth--;
192922192889
if( x<0 ){
192923192890
if( x==(-3) && pParse->nNode==(u32)iThis+1 ) return j+1;
192924192891
return -1;
192925192892
}
192926192893
j = x;
192927
- while( safe_isspace(z[j]) ){ j++; }
192894
+ while( fast_isspace(z[j]) ){ j++; }
192928192895
c = z[j];
192929192896
if( c==',' ) continue;
192930192897
if( c!=']' ) return -1;
192931192898
break;
192932192899
}
@@ -192959,21 +192926,21 @@
192959192926
jsonParseAddNode(pParse, JSON_STRING, j+1-i, &z[i]);
192960192927
if( !pParse->oom ) pParse->aNode[pParse->nNode-1].jnFlags = jnFlags;
192961192928
return j+1;
192962192929
}else if( c=='n'
192963192930
&& strncmp(z+i,"null",4)==0
192964
- && !safe_isalnum(z[i+4]) ){
192931
+ && !sqlite3Isalnum(z[i+4]) ){
192965192932
jsonParseAddNode(pParse, JSON_NULL, 0, 0);
192966192933
return i+4;
192967192934
}else if( c=='t'
192968192935
&& strncmp(z+i,"true",4)==0
192969
- && !safe_isalnum(z[i+4]) ){
192936
+ && !sqlite3Isalnum(z[i+4]) ){
192970192937
jsonParseAddNode(pParse, JSON_TRUE, 0, 0);
192971192938
return i+4;
192972192939
}else if( c=='f'
192973192940
&& strncmp(z+i,"false",5)==0
192974
- && !safe_isalnum(z[i+5]) ){
192941
+ && !sqlite3Isalnum(z[i+5]) ){
192975192942
jsonParseAddNode(pParse, JSON_FALSE, 0, 0);
192976192943
return i+5;
192977192944
}else if( c=='-' || (c>='0' && c<='9') ){
192978192945
/* Parse number */
192979192946
u8 seenDP = 0;
@@ -193040,11 +193007,11 @@
193040193007
pParse->zJson = zJson;
193041193008
i = jsonParseValue(pParse, 0);
193042193009
if( pParse->oom ) i = -1;
193043193010
if( i>0 ){
193044193011
assert( pParse->iDepth==0 );
193045
- while( safe_isspace(zJson[i]) ) i++;
193012
+ while( fast_isspace(zJson[i]) ) i++;
193046193013
if( zJson[i] ) i = -1;
193047193014
}
193048193015
if( i<=0 ){
193049193016
if( pCtx!=0 ){
193050193017
if( pParse->oom ){
@@ -193268,11 +193235,11 @@
193268193235
return pNode;
193269193236
}
193270193237
}else if( zPath[0]=='[' ){
193271193238
i = 0;
193272193239
j = 1;
193273
- while( safe_isdigit(zPath[j]) ){
193240
+ while( sqlite3Isdigit(zPath[j]) ){
193274193241
i = i*10 + zPath[j] - '0';
193275193242
j++;
193276193243
}
193277193244
if( j<2 || zPath[j]!=']' ){
193278193245
if( zPath[1]=='#' ){
@@ -193289,17 +193256,17 @@
193289193256
iBase += pBase->u.iAppend;
193290193257
pBase = &pParse->aNode[iBase];
193291193258
j = 1;
193292193259
}
193293193260
j = 2;
193294
- if( zPath[2]=='-' && safe_isdigit(zPath[3]) ){
193261
+ if( zPath[2]=='-' && sqlite3Isdigit(zPath[3]) ){
193295193262
unsigned int x = 0;
193296193263
j = 3;
193297193264
do{
193298193265
x = x*10 + zPath[j] - '0';
193299193266
j++;
193300
- }while( safe_isdigit(zPath[j]) );
193267
+ }while( sqlite3Isdigit(zPath[j]) );
193301193268
if( x>i ) return 0;
193302193269
i -= x;
193303193270
}
193304193271
if( zPath[j]!=']' ){
193305193272
*pzErr = zPath;
@@ -193514,11 +193481,11 @@
193514193481
static void jsonTest1Func(
193515193482
sqlite3_context *ctx,
193516193483
int argc,
193517193484
sqlite3_value **argv
193518193485
){
193519
- UNUSED_PARAM(argc);
193486
+ UNUSED_PARAMETER(argc);
193520193487
sqlite3_result_int(ctx, sqlite3_value_subtype(argv[0])==JSON_SUBTYPE);
193521193488
}
193522193489
#endif /* SQLITE_DEBUG */
193523193490
193524193491
/****************************************************************************
@@ -193535,11 +193502,11 @@
193535193502
sqlite3_context *ctx,
193536193503
int argc,
193537193504
sqlite3_value **argv
193538193505
){
193539193506
JsonString jx;
193540
- UNUSED_PARAM(argc);
193507
+ UNUSED_PARAMETER(argc);
193541193508
193542193509
jsonInit(&jx, ctx);
193543193510
jsonAppendValue(&jx, argv[0]);
193544193511
jsonResult(&jx);
193545193512
sqlite3_result_subtype(ctx, JSON_SUBTYPE);
@@ -193606,55 +193573,118 @@
193606193573
}
193607193574
}
193608193575
sqlite3_result_int64(ctx, n);
193609193576
}
193610193577
193578
+/*
193579
+** Bit values for the flags passed into jsonExtractFunc() or
193580
+** jsonSetFunc() via the user-data value.
193581
+*/
193582
+#define JSON_JSON 0x01 /* Result is always JSON */
193583
+#define JSON_SQL 0x02 /* Result is always SQL */
193584
+#define JSON_ABPATH 0x03 /* Allow abbreviated JSON path specs */
193585
+#define JSON_ISSET 0x04 /* json_set(), not json_insert() */
193586
+
193611193587
/*
193612193588
** json_extract(JSON, PATH, ...)
193589
+** "->"(JSON,PATH)
193590
+** "->>"(JSON,PATH)
193613193591
**
193614
-** Return the element described by PATH. Return NULL if there is no
193615
-** PATH element. If there are multiple PATHs, then return a JSON array
193616
-** with the result from each path. Throw an error if the JSON or any PATH
193617
-** is malformed.
193592
+** Return the element described by PATH. Return NULL if that PATH element
193593
+** is not found.
193594
+**
193595
+** If JSON_JSON is set or if more that one PATH argument is supplied then
193596
+** always return a JSON representation of the result. If JSON_SQL is set,
193597
+** then always return an SQL representation of the result. If neither flag
193598
+** is present and argc==2, then return JSON for objects and arrays and SQL
193599
+** for all other values.
193600
+**
193601
+** When multiple PATH arguments are supplied, the result is a JSON array
193602
+** containing the result of each PATH.
193603
+**
193604
+** Abbreviated JSON path expressions are allows if JSON_ABPATH, for
193605
+** compatibility with PG.
193618193606
*/
193619193607
static void jsonExtractFunc(
193620193608
sqlite3_context *ctx,
193621193609
int argc,
193622193610
sqlite3_value **argv
193623193611
){
193624193612
JsonParse *p; /* The parse */
193625193613
JsonNode *pNode;
193626193614
const char *zPath;
193615
+ int flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
193627193616
JsonString jx;
193628
- int i;
193629193617
193630193618
if( argc<2 ) return;
193631193619
p = jsonParseCached(ctx, argv, ctx);
193632193620
if( p==0 ) return;
193633
- jsonInit(&jx, ctx);
193634
- jsonAppendChar(&jx, '[');
193635
- for(i=1; i<argc; i++){
193636
- zPath = (const char*)sqlite3_value_text(argv[i]);
193637
- pNode = jsonLookup(p, zPath, 0, ctx);
193638
- if( p->nErr ) break;
193639
- if( argc>2 ){
193621
+ if( argc==2 ){
193622
+ /* With a single PATH argument */
193623
+ zPath = (const char*)sqlite3_value_text(argv[1]);
193624
+ if( zPath==0 ) return;
193625
+ if( flags & JSON_ABPATH ){
193626
+ if( zPath[0]!='$' ){
193627
+ /* The -> and ->> operators accept abbreviated PATH arguments. This
193628
+ ** is mostly for compatibility with PostgreSQL, but also for
193629
+ ** convenience.
193630
+ **
193631
+ ** NUMBER ==> $[NUMBER] // PG compatible
193632
+ ** LABEL ==> $.LABEL // PG compatible
193633
+ ** [NUMBER] ==> $[NUMBER] // Not PG. Purely for convenience
193634
+ */
193635
+ jsonInit(&jx, ctx);
193636
+ if( sqlite3Isdigit(zPath[0]) ){
193637
+ jsonAppendRaw(&jx, "$[", 2);
193638
+ jsonAppendRaw(&jx, zPath, (int)strlen(zPath));
193639
+ jsonAppendRaw(&jx, "]", 2);
193640
+ }else{
193641
+ jsonAppendRaw(&jx, "$.", 1 + (zPath[0]!='['));
193642
+ jsonAppendRaw(&jx, zPath, (int)strlen(zPath));
193643
+ jsonAppendChar(&jx, 0);
193644
+ }
193645
+ pNode = jx.bErr ? 0 : jsonLookup(p, jx.zBuf, 0, ctx);
193646
+ jsonReset(&jx);
193647
+ }else{
193648
+ pNode = jsonLookup(p, zPath, 0, ctx);
193649
+ }
193650
+ if( pNode ){
193651
+ if( flags & JSON_JSON ){
193652
+ jsonReturnJson(pNode, ctx, 0);
193653
+ }else{
193654
+ jsonReturn(pNode, ctx, 0);
193655
+ sqlite3_result_subtype(ctx, 0);
193656
+ }
193657
+ }
193658
+ }else{
193659
+ pNode = jsonLookup(p, zPath, 0, ctx);
193660
+ if( p->nErr==0 && pNode ) jsonReturn(pNode, ctx, 0);
193661
+ }
193662
+ }else{
193663
+ /* Two or more PATH arguments results in a JSON array with each
193664
+ ** element of the array being the value selected by one of the PATHs */
193665
+ int i;
193666
+ jsonInit(&jx, ctx);
193667
+ jsonAppendChar(&jx, '[');
193668
+ for(i=1; i<argc; i++){
193669
+ zPath = (const char*)sqlite3_value_text(argv[i]);
193670
+ pNode = jsonLookup(p, zPath, 0, ctx);
193671
+ if( p->nErr ) break;
193640193672
jsonAppendSeparator(&jx);
193641193673
if( pNode ){
193642193674
jsonRenderNode(pNode, &jx, 0);
193643193675
}else{
193644193676
jsonAppendRaw(&jx, "null", 4);
193645193677
}
193646
- }else if( pNode ){
193647
- jsonReturn(pNode, ctx, 0);
193648
- }
193649
- }
193650
- if( argc>2 && i==argc ){
193651
- jsonAppendChar(&jx, ']');
193652
- jsonResult(&jx);
193653
- sqlite3_result_subtype(ctx, JSON_SUBTYPE);
193654
- }
193655
- jsonReset(&jx);
193678
+ }
193679
+ if( i==argc ){
193680
+ jsonAppendChar(&jx, ']');
193681
+ jsonResult(&jx);
193682
+ sqlite3_result_subtype(ctx, JSON_SUBTYPE);
193683
+ }
193684
+ jsonReset(&jx);
193685
+ }
193656193686
}
193657193687
193658193688
/* This is the RFC 7396 MergePatch algorithm.
193659193689
*/
193660193690
static JsonNode *jsonMergePatch(
@@ -193746,11 +193776,11 @@
193746193776
){
193747193777
JsonParse x; /* The JSON that is being patched */
193748193778
JsonParse y; /* The patch */
193749193779
JsonNode *pResult; /* The result of the merge */
193750193780
193751
- UNUSED_PARAM(argc);
193781
+ UNUSED_PARAMETER(argc);
193752193782
if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return;
193753193783
if( jsonParse(&y, ctx, (const char*)sqlite3_value_text(argv[1])) ){
193754193784
jsonParseReset(&x);
193755193785
return;
193756193786
}
@@ -193867,11 +193897,11 @@
193867193897
zPath = (const char*)sqlite3_value_text(argv[i]);
193868193898
pNode = jsonLookup(&x, zPath, 0, ctx);
193869193899
if( x.nErr ) goto replace_err;
193870193900
if( pNode ){
193871193901
assert( pNode->eU==0 || pNode->eU==1 || pNode->eU==4 );
193872
- json_testcase( pNode->eU!=0 && pNode->eU!=1 );
193902
+ testcase( pNode->eU!=0 && pNode->eU!=1 );
193873193903
pNode->jnFlags |= (u8)JNODE_REPLACE;
193874193904
VVA( pNode->eU = 4 );
193875193905
pNode->u.iReplace = i + 1;
193876193906
}
193877193907
}
@@ -193882,10 +193912,11 @@
193882193912
jsonReturnJson(x.aNode, ctx, argv);
193883193913
}
193884193914
replace_err:
193885193915
jsonParseReset(&x);
193886193916
}
193917
+
193887193918
193888193919
/*
193889193920
** json_set(JSON, PATH, VALUE, ...)
193890193921
**
193891193922
** Set the value at PATH to VALUE. Create the PATH if it does not already
@@ -193905,11 +193936,11 @@
193905193936
JsonParse x; /* The parse */
193906193937
JsonNode *pNode;
193907193938
const char *zPath;
193908193939
u32 i;
193909193940
int bApnd;
193910
- int bIsSet = *(int*)sqlite3_user_data(ctx);
193941
+ int bIsSet = sqlite3_user_data(ctx)!=0;
193911193942
193912193943
if( argc<1 ) return;
193913193944
if( (argc&1)==0 ) {
193914193945
jsonWrongNumArgs(ctx, bIsSet ? "set" : "insert");
193915193946
return;
@@ -193924,11 +193955,11 @@
193924193955
sqlite3_result_error_nomem(ctx);
193925193956
goto jsonSetDone;
193926193957
}else if( x.nErr ){
193927193958
goto jsonSetDone;
193928193959
}else if( pNode && (bApnd || bIsSet) ){
193929
- json_testcase( pNode->eU!=0 && pNode->eU!=1 && pNode->eU!=4 );
193960
+ testcase( pNode->eU!=0 && pNode->eU!=1 && pNode->eU!=4 );
193930193961
assert( pNode->eU!=3 || pNode->eU!=5 );
193931193962
VVA( pNode->eU = 4 );
193932193963
pNode->jnFlags |= (u8)JNODE_REPLACE;
193933193964
pNode->u.iReplace = i + 1;
193934193965
}
@@ -193945,12 +193976,12 @@
193945193976
193946193977
/*
193947193978
** json_type(JSON)
193948193979
** json_type(JSON, PATH)
193949193980
**
193950
-** Return the top-level "type" of a JSON string. Throw an error if
193951
-** either the JSON or PATH inputs are not well-formed.
193981
+** Return the top-level "type" of a JSON string. json_type() raises an
193982
+** error if either the JSON or PATH inputs are not well-formed.
193952193983
*/
193953193984
static void jsonTypeFunc(
193954193985
sqlite3_context *ctx,
193955193986
int argc,
193956193987
sqlite3_value **argv
@@ -193982,11 +194013,11 @@
193982194013
sqlite3_context *ctx,
193983194014
int argc,
193984194015
sqlite3_value **argv
193985194016
){
193986194017
JsonParse *p; /* The parse */
193987
- UNUSED_PARAM(argc);
194018
+ UNUSED_PARAMETER(argc);
193988194019
p = jsonParseCached(ctx, argv, 0);
193989194020
sqlite3_result_int(ctx, p!=0);
193990194021
}
193991194022
193992194023
@@ -194002,11 +194033,11 @@
194002194033
sqlite3_context *ctx,
194003194034
int argc,
194004194035
sqlite3_value **argv
194005194036
){
194006194037
JsonString *pStr;
194007
- UNUSED_PARAM(argc);
194038
+ UNUSED_PARAMETER(argc);
194008194039
pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr));
194009194040
if( pStr ){
194010194041
if( pStr->zBuf==0 ){
194011194042
jsonInit(pStr, ctx);
194012194043
jsonAppendChar(pStr, '[');
@@ -194062,12 +194093,12 @@
194062194093
int inStr = 0;
194063194094
int nNest = 0;
194064194095
char *z;
194065194096
char c;
194066194097
JsonString *pStr;
194067
- UNUSED_PARAM(argc);
194068
- UNUSED_PARAM(argv);
194098
+ UNUSED_PARAMETER(argc);
194099
+ UNUSED_PARAMETER(argv);
194069194100
pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
194070194101
#ifdef NEVER
194071194102
/* pStr is always non-NULL since jsonArrayStep() or jsonObjectStep() will
194072194103
** always have been called to initalize it */
194073194104
if( NEVER(!pStr) ) return;
@@ -194107,11 +194138,11 @@
194107194138
sqlite3_value **argv
194108194139
){
194109194140
JsonString *pStr;
194110194141
const char *z;
194111194142
u32 n;
194112
- UNUSED_PARAM(argc);
194143
+ UNUSED_PARAMETER(argc);
194113194144
pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr));
194114194145
if( pStr ){
194115194146
if( pStr->zBuf==0 ){
194116194147
jsonInit(pStr, ctx);
194117194148
jsonAppendChar(pStr, '{');
@@ -194198,14 +194229,14 @@
194198194229
** the last two columns in the table. Should this ever changes, be
194199194230
** sure to update the xBestIndex method. */
194200194231
#define JEACH_JSON 8
194201194232
#define JEACH_ROOT 9
194202194233
194203
- UNUSED_PARAM(pzErr);
194204
- UNUSED_PARAM(argv);
194205
- UNUSED_PARAM(argc);
194206
- UNUSED_PARAM(pAux);
194234
+ UNUSED_PARAMETER(pzErr);
194235
+ UNUSED_PARAMETER(argv);
194236
+ UNUSED_PARAMETER(argc);
194237
+ UNUSED_PARAMETER(pAux);
194207194238
rc = sqlite3_declare_vtab(db,
194208194239
"CREATE TABLE x(key,value,type,atom,id,parent,fullkey,path,"
194209194240
"json HIDDEN,root HIDDEN)");
194210194241
if( rc==SQLITE_OK ){
194211194242
pNew = *ppVtab = sqlite3_malloc( sizeof(*pNew) );
@@ -194224,11 +194255,11 @@
194224194255
194225194256
/* constructor for a JsonEachCursor object for json_each(). */
194226194257
static int jsonEachOpenEach(sqlite3_vtab *p, sqlite3_vtab_cursor **ppCursor){
194227194258
JsonEachCursor *pCur;
194228194259
194229
- UNUSED_PARAM(p);
194260
+ UNUSED_PARAMETER(p);
194230194261
pCur = sqlite3_malloc( sizeof(*pCur) );
194231194262
if( pCur==0 ) return SQLITE_NOMEM;
194232194263
memset(pCur, 0, sizeof(*pCur));
194233194264
*ppCursor = &pCur->base;
194234194265
return SQLITE_OK;
@@ -194284,11 +194315,11 @@
194284194315
u32 iUp = p->sParse.aUp[p->i];
194285194316
JsonNode *pUp = &p->sParse.aNode[iUp];
194286194317
p->eType = pUp->eType;
194287194318
if( pUp->eType==JSON_ARRAY ){
194288194319
assert( pUp->eU==0 || pUp->eU==3 );
194289
- json_testcase( pUp->eU==3 );
194320
+ testcase( pUp->eU==3 );
194290194321
VVA( pUp->eU = 3 );
194291194322
if( iUp==p->i-1 ){
194292194323
pUp->u.iKey = 0;
194293194324
}else{
194294194325
pUp->u.iKey++;
@@ -194471,11 +194502,11 @@
194471194502
const struct sqlite3_index_constraint *pConstraint;
194472194503
194473194504
/* This implementation assumes that JSON and ROOT are the last two
194474194505
** columns in the table */
194475194506
assert( JEACH_ROOT == JEACH_JSON+1 );
194476
- UNUSED_PARAM(tab);
194507
+ UNUSED_PARAMETER(tab);
194477194508
aIdx[0] = aIdx[1] = -1;
194478194509
pConstraint = pIdxInfo->aConstraint;
194479194510
for(i=0; i<pIdxInfo->nConstraint; i++, pConstraint++){
194480194511
int iCol;
194481194512
int iMask;
@@ -194527,12 +194558,12 @@
194527194558
JsonEachCursor *p = (JsonEachCursor*)cur;
194528194559
const char *z;
194529194560
const char *zRoot = 0;
194530194561
sqlite3_int64 n;
194531194562
194532
- UNUSED_PARAM(idxStr);
194533
- UNUSED_PARAM(argc);
194563
+ UNUSED_PARAMETER(idxStr);
194564
+ UNUSED_PARAMETER(argc);
194534194565
jsonEachCursorReset(p);
194535194566
if( idxNum==0 ) return SQLITE_OK;
194536194567
z = (const char*)sqlite3_value_text(argv[0]);
194537194568
if( z==0 ) return SQLITE_OK;
194538194569
n = sqlite3_value_bytes(argv[0]);
@@ -194653,112 +194684,72 @@
194653194684
0, /* xRelease */
194654194685
0, /* xRollbackTo */
194655194686
0 /* xShadowName */
194656194687
};
194657194688
#endif /* SQLITE_OMIT_VIRTUALTABLE */
194658
-
194659
-/****************************************************************************
194660
-** The following routines are the only publically visible identifiers in this
194661
-** file. Call the following routines in order to register the various SQL
194662
-** functions and the virtual table implemented by this file.
194663
-****************************************************************************/
194664
-
194665
-SQLITE_PRIVATE int sqlite3Json1Init(sqlite3 *db){
194666
- int rc = SQLITE_OK;
194667
- unsigned int i;
194668
- static const struct {
194669
- const char *zName;
194670
- int nArg;
194671
- int flag;
194672
- void (*xFunc)(sqlite3_context*,int,sqlite3_value**);
194673
- } aFunc[] = {
194674
- { "json", 1, 0, jsonRemoveFunc },
194675
- { "json_array", -1, 0, jsonArrayFunc },
194676
- { "json_array_length", 1, 0, jsonArrayLengthFunc },
194677
- { "json_array_length", 2, 0, jsonArrayLengthFunc },
194678
- { "json_extract", -1, 0, jsonExtractFunc },
194679
- { "json_insert", -1, 0, jsonSetFunc },
194680
- { "json_object", -1, 0, jsonObjectFunc },
194681
- { "json_patch", 2, 0, jsonPatchFunc },
194682
- { "json_quote", 1, 0, jsonQuoteFunc },
194683
- { "json_remove", -1, 0, jsonRemoveFunc },
194684
- { "json_replace", -1, 0, jsonReplaceFunc },
194685
- { "json_set", -1, 1, jsonSetFunc },
194686
- { "json_type", 1, 0, jsonTypeFunc },
194687
- { "json_type", 2, 0, jsonTypeFunc },
194688
- { "json_valid", 1, 0, jsonValidFunc },
194689
-
194689
+#endif /* !defined(SQLITE_OMIT_JSON) */
194690
+
194691
+/*
194692
+** Register JSON functions.
194693
+*/
194694
+SQLITE_PRIVATE void sqlite3RegisterJsonFunctions(void){
194695
+#ifndef SQLITE_OMIT_JSON
194696
+ static FuncDef aJsonFunc[] = {
194697
+ JFUNCTION(json, 1, 0, jsonRemoveFunc),
194698
+ JFUNCTION(json_array, -1, 0, jsonArrayFunc),
194699
+ JFUNCTION(json_array_length, 1, 0, jsonArrayLengthFunc),
194700
+ JFUNCTION(json_array_length, 2, 0, jsonArrayLengthFunc),
194701
+ JFUNCTION(json_extract, -1, 0, jsonExtractFunc),
194702
+ JFUNCTION(->, 2, JSON_JSON, jsonExtractFunc),
194703
+ JFUNCTION(->>, 2, JSON_SQL, jsonExtractFunc),
194704
+ JFUNCTION(json_insert, -1, 0, jsonSetFunc),
194705
+ JFUNCTION(json_object, -1, 0, jsonObjectFunc),
194706
+ JFUNCTION(json_patch, 2, 0, jsonPatchFunc),
194707
+ JFUNCTION(json_quote, 1, 0, jsonQuoteFunc),
194708
+ JFUNCTION(json_remove, -1, 0, jsonRemoveFunc),
194709
+ JFUNCTION(json_replace, -1, 0, jsonReplaceFunc),
194710
+ JFUNCTION(json_set, -1, JSON_ISSET, jsonSetFunc),
194711
+ JFUNCTION(json_type, 1, 0, jsonTypeFunc),
194712
+ JFUNCTION(json_type, 2, 0, jsonTypeFunc),
194713
+ JFUNCTION(json_valid, 1, 0, jsonValidFunc),
194690194714
#if SQLITE_DEBUG
194691
- /* DEBUG and TESTING functions */
194692
- { "json_parse", 1, 0, jsonParseFunc },
194693
- { "json_test1", 1, 0, jsonTest1Func },
194694
-#endif
194695
- };
194696
- static const struct {
194697
- const char *zName;
194698
- int nArg;
194699
- void (*xStep)(sqlite3_context*,int,sqlite3_value**);
194700
- void (*xFinal)(sqlite3_context*);
194701
- void (*xValue)(sqlite3_context*);
194702
- } aAgg[] = {
194703
- { "json_group_array", 1,
194704
- jsonArrayStep, jsonArrayFinal, jsonArrayValue },
194705
- { "json_group_object", 2,
194706
- jsonObjectStep, jsonObjectFinal, jsonObjectValue },
194707
- };
194708
-#ifndef SQLITE_OMIT_VIRTUALTABLE
194709
- static const struct {
194710
- const char *zName;
194711
- sqlite3_module *pModule;
194715
+ JFUNCTION(json_parse, 1, 0, jsonParseFunc),
194716
+ JFUNCTION(json_test1, 1, 0, jsonTest1Func),
194717
+#endif
194718
+ WAGGREGATE(json_group_array, 1, 0, 0,
194719
+ jsonArrayStep, jsonArrayFinal, jsonArrayValue, jsonGroupInverse,
194720
+ SQLITE_SUBTYPE|SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS),
194721
+ WAGGREGATE(json_group_object, 2, 0, 0,
194722
+ jsonObjectStep, jsonObjectFinal, jsonObjectValue, jsonGroupInverse,
194723
+ SQLITE_SUBTYPE|SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS)
194724
+ };
194725
+ sqlite3InsertBuiltinFuncs(aJsonFunc, ArraySize(aJsonFunc));
194726
+#endif
194727
+}
194728
+
194729
+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_JSON)
194730
+/*
194731
+** Register the JSON table-valued functions
194732
+*/
194733
+SQLITE_PRIVATE int sqlite3JsonTableFunctions(sqlite3 *db){
194734
+ int rc = SQLITE_OK;
194735
+ static const struct {
194736
+ const char *zName;
194737
+ sqlite3_module *pModule;
194712194738
} aMod[] = {
194713194739
{ "json_each", &jsonEachModule },
194714194740
{ "json_tree", &jsonTreeModule },
194715194741
};
194716
-#endif
194717
- static const int enc =
194718
- SQLITE_UTF8 |
194719
- SQLITE_DETERMINISTIC |
194720
- SQLITE_INNOCUOUS;
194721
- for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
194722
- rc = sqlite3_create_function(db, aFunc[i].zName, aFunc[i].nArg, enc,
194723
- (void*)&aFunc[i].flag,
194724
- aFunc[i].xFunc, 0, 0);
194725
- }
194726
-#ifndef SQLITE_OMIT_WINDOWFUNC
194727
- for(i=0; i<sizeof(aAgg)/sizeof(aAgg[0]) && rc==SQLITE_OK; i++){
194728
- rc = sqlite3_create_window_function(db, aAgg[i].zName, aAgg[i].nArg,
194729
- SQLITE_SUBTYPE | enc, 0,
194730
- aAgg[i].xStep, aAgg[i].xFinal,
194731
- aAgg[i].xValue, jsonGroupInverse, 0);
194732
- }
194733
-#endif
194734
-#ifndef SQLITE_OMIT_VIRTUALTABLE
194742
+ int i;
194735194743
for(i=0; i<sizeof(aMod)/sizeof(aMod[0]) && rc==SQLITE_OK; i++){
194736194744
rc = sqlite3_create_module(db, aMod[i].zName, aMod[i].pModule, 0);
194737194745
}
194738
-#endif
194739194746
return rc;
194740194747
}
194741
-
194742
-
194743
-#ifndef SQLITE_CORE
194744
-#ifdef _WIN32
194745
-__declspec(dllexport)
194746
-#endif
194747
-SQLITE_API int sqlite3_json_init(
194748
- sqlite3 *db,
194749
- char **pzErrMsg,
194750
- const sqlite3_api_routines *pApi
194751
-){
194752
- SQLITE_EXTENSION_INIT2(pApi);
194753
- (void)pzErrMsg; /* Unused parameter */
194754
- return sqlite3Json1Init(db);
194755
-}
194756
-#endif
194757
-#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_JSON1) */
194758
-
194759
-/************** End of json1.c ***********************************************/
194748
+#endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_JSON) */
194749
+
194750
+/************** End of json.c ************************************************/
194760194751
/************** Begin file rtree.c *******************************************/
194761194752
/*
194762194753
** 2001 September 15
194763194754
**
194764194755
** The author disclaims copyright to this source code. In place of
@@ -199188,15 +199179,11 @@
199188199179
# define GEODEBUG(X) if(geo_debug)printf X
199189199180
#else
199190199181
# define GEODEBUG(X)
199191199182
#endif
199192199183
199193
-#ifndef JSON_NULL /* The following stuff repeats things found in json1 */
199194
-/*
199195
-** Versions of isspace(), isalnum() and isdigit() to which it is safe
199196
-** to pass signed char values.
199197
-*/
199184
+/* Character class routines */
199198199185
#ifdef sqlite3Isdigit
199199199186
/* Use the SQLite core versions if this routine is part of the
199200199187
** SQLite amalgamation */
199201199188
# define safe_isdigit(x) sqlite3Isdigit(x)
199202199189
# define safe_isalnum(x) sqlite3Isalnum(x)
@@ -199207,10 +199194,11 @@
199207199194
# define safe_isdigit(x) isdigit((unsigned char)(x))
199208199195
# define safe_isalnum(x) isalnum((unsigned char)(x))
199209199196
# define safe_isxdigit(x) isxdigit((unsigned char)(x))
199210199197
#endif
199211199198
199199
+#ifndef JSON_NULL /* The following stuff repeats things found in json1 */
199212199200
/*
199213199201
** Growing our own isspace() routine this way is twice as fast as
199214199202
** the library isspace() function.
199215199203
*/
199216199204
static const char geopolyIsSpace[] = {
@@ -199229,11 +199217,11 @@
199229199217
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199230199218
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199231199219
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199232199220
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199233199221
};
199234
-#define safe_isspace(x) (geopolyIsSpace[(unsigned char)x])
199222
+#define fast_isspace(x) (geopolyIsSpace[(unsigned char)x])
199235199223
#endif /* JSON NULL - back to original code */
199236199224
199237199225
/* Compiler and version */
199238199226
#ifndef GCC_VERSION
199239199227
#if defined(__GNUC__) && !defined(SQLITE_DISABLE_INTRINSIC)
@@ -199318,11 +199306,11 @@
199318199306
a[2] = t;
199319199307
}
199320199308
199321199309
/* Skip whitespace. Return the next non-whitespace character. */
199322199310
static char geopolySkipSpace(GeoParse *p){
199323
- while( safe_isspace(p->z[0]) ) p->z++;
199311
+ while( fast_isspace(p->z[0]) ) p->z++;
199324199312
return p->z[0];
199325199313
}
199326199314
199327199315
/* Parse out a number. Write the value into *pVal if pVal!=0.
199328199316
** return non-zero on success and zero if the next token is not a number.
@@ -233346,11 +233334,11 @@
233346233334
int nArg, /* Number of args */
233347233335
sqlite3_value **apUnused /* Function arguments */
233348233336
){
233349233337
assert( nArg==0 );
233350233338
UNUSED_PARAM2(nArg, apUnused);
233351
- sqlite3_result_text(pCtx, "fts5: 2022-01-06 17:13:56 2d6a16caa7d28ad5c766036b2eb6c2020683fcc9389b3c7df2013739929dd36f", -1, SQLITE_TRANSIENT);
233339
+ sqlite3_result_text(pCtx, "fts5: 2022-01-12 00:28:12 adebb9d7478d092f16fb0ef7d5246ce152b166479d6f949110b5878b89ea2cec", -1, SQLITE_TRANSIENT);
233352233340
}
233353233341
233354233342
/*
233355233343
** Return true if zName is the extension on one of the shadow tables used
233356233344
** by this module.
233357233345
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -452,11 +452,11 @@
452 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453 ** [sqlite_version()] and [sqlite_source_id()].
454 */
455 #define SQLITE_VERSION "3.38.0"
456 #define SQLITE_VERSION_NUMBER 3038000
457 #define SQLITE_SOURCE_ID "2022-01-06 17:13:56 2d6a16caa7d28ad5c766036b2eb6c2020683fcc9389b3c7df2013739929dd36f"
458
459 /*
460 ** CAPI3REF: Run-Time Library Version Numbers
461 ** KEYWORDS: sqlite3_version sqlite3_sourceid
462 **
@@ -13593,14 +13593,14 @@
13593 #define TK_DETACH 40
13594 #define TK_EACH 41
13595 #define TK_FAIL 42
13596 #define TK_OR 43
13597 #define TK_AND 44
13598 #define TK_MATCH 45
13599 #define TK_LIKE_KW 46
13600 #define TK_BETWEEN 47
13601 #define TK_IS 48
13602 #define TK_IN 49
13603 #define TK_ISNULL 50
13604 #define TK_NOTNULL 51
13605 #define TK_NE 52
13606 #define TK_EQ 53
@@ -13660,82 +13660,83 @@
13660 #define TK_MINUS 107
13661 #define TK_STAR 108
13662 #define TK_SLASH 109
13663 #define TK_REM 110
13664 #define TK_CONCAT 111
13665 #define TK_COLLATE 112
13666 #define TK_BITNOT 113
13667 #define TK_ON 114
13668 #define TK_INDEXED 115
13669 #define TK_STRING 116
13670 #define TK_JOIN_KW 117
13671 #define TK_CONSTRAINT 118
13672 #define TK_DEFAULT 119
13673 #define TK_NULL 120
13674 #define TK_PRIMARY 121
13675 #define TK_UNIQUE 122
13676 #define TK_CHECK 123
13677 #define TK_REFERENCES 124
13678 #define TK_AUTOINCR 125
13679 #define TK_INSERT 126
13680 #define TK_DELETE 127
13681 #define TK_UPDATE 128
13682 #define TK_SET 129
13683 #define TK_DEFERRABLE 130
13684 #define TK_FOREIGN 131
13685 #define TK_DROP 132
13686 #define TK_UNION 133
13687 #define TK_ALL 134
13688 #define TK_EXCEPT 135
13689 #define TK_INTERSECT 136
13690 #define TK_SELECT 137
13691 #define TK_VALUES 138
13692 #define TK_DISTINCT 139
13693 #define TK_DOT 140
13694 #define TK_FROM 141
13695 #define TK_JOIN 142
13696 #define TK_USING 143
13697 #define TK_ORDER 144
13698 #define TK_GROUP 145
13699 #define TK_HAVING 146
13700 #define TK_LIMIT 147
13701 #define TK_WHERE 148
13702 #define TK_RETURNING 149
13703 #define TK_INTO 150
13704 #define TK_NOTHING 151
13705 #define TK_FLOAT 152
13706 #define TK_BLOB 153
13707 #define TK_INTEGER 154
13708 #define TK_VARIABLE 155
13709 #define TK_CASE 156
13710 #define TK_WHEN 157
13711 #define TK_THEN 158
13712 #define TK_ELSE 159
13713 #define TK_INDEX 160
13714 #define TK_ALTER 161
13715 #define TK_ADD 162
13716 #define TK_WINDOW 163
13717 #define TK_OVER 164
13718 #define TK_FILTER 165
13719 #define TK_COLUMN 166
13720 #define TK_AGG_FUNCTION 167
13721 #define TK_AGG_COLUMN 168
13722 #define TK_TRUEFALSE 169
13723 #define TK_ISNOT 170
13724 #define TK_FUNCTION 171
13725 #define TK_UMINUS 172
13726 #define TK_UPLUS 173
13727 #define TK_TRUTH 174
13728 #define TK_REGISTER 175
13729 #define TK_VECTOR 176
13730 #define TK_SELECT_COLUMN 177
13731 #define TK_IF_NULL_ROW 178
13732 #define TK_ASTERISK 179
13733 #define TK_SPAN 180
13734 #define TK_ERROR 181
13735 #define TK_SPACE 182
13736 #define TK_ILLEGAL 183
 
13737
13738 /************** End of parse.h ***********************************************/
13739 /************** Continuing where we left off in sqliteInt.h ******************/
13740 #include <stdio.h>
13741 #include <stdlib.h>
@@ -15342,15 +15343,15 @@
15342 #define OP_Multiply 108 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
15343 #define OP_Divide 109 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
15344 #define OP_Remainder 110 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
15345 #define OP_Concat 111 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
15346 #define OP_OpenWrite 112 /* synopsis: root=P2 iDb=P3 */
15347 #define OP_BitNot 113 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
15348 #define OP_OpenDup 114
15349 #define OP_OpenAutoindex 115 /* synopsis: nColumn=P2 */
15350 #define OP_String8 116 /* same as TK_STRING, synopsis: r[P2]='P4' */
15351 #define OP_OpenEphemeral 117 /* synopsis: nColumn=P2 */
15352 #define OP_SorterOpen 118
15353 #define OP_SequenceTest 119 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
15354 #define OP_OpenPseudo 120 /* synopsis: P3 columns in r[P2] */
15355 #define OP_Close 121
15356 #define OP_ColumnsUsed 122
@@ -15381,12 +15382,12 @@
15381 #define OP_SqlExec 147
15382 #define OP_ParseSchema 148
15383 #define OP_LoadAnalysis 149
15384 #define OP_DropTable 150
15385 #define OP_DropIndex 151
15386 #define OP_Real 152 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15387 #define OP_DropTrigger 153
15388 #define OP_IntegrityCk 154
15389 #define OP_RowSetAdd 155 /* synopsis: rowset(P1)=r[P2] */
15390 #define OP_Param 156
15391 #define OP_FkCounter 157 /* synopsis: fkctr[P1]+=P2 */
15392 #define OP_MemMax 158 /* synopsis: r[P1]=max(r[P1],r[P2]) */
@@ -15439,16 +15440,16 @@
15439 /* 72 */ 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00,\
15440 /* 80 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,\
15441 /* 88 */ 0x00, 0x00, 0x12, 0x1e, 0x20, 0x00, 0x00, 0x00,\
15442 /* 96 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x26, 0x26,\
15443 /* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
15444 /* 112 */ 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\
15445 /* 120 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00,\
15446 /* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\
15447 /* 136 */ 0x00, 0x04, 0x04, 0x00, 0x00, 0x10, 0x00, 0x10,\
15448 /* 144 */ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,\
15449 /* 152 */ 0x10, 0x00, 0x00, 0x06, 0x10, 0x00, 0x04, 0x1a,\
15450 /* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15451 /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,\
15452 /* 176 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15453 }
15454
@@ -16928,11 +16929,11 @@
16928 ** Used to create an aggregate function definition implemented by
16929 ** the C functions xStep and xFinal. The first four parameters
16930 ** are interpreted in the same way as the first 4 parameters to
16931 ** FUNCTION().
16932 **
16933 ** WFUNCTION(zName, nArg, iArg, xStep, xFinal, xValue, xInverse)
16934 ** Used to create an aggregate function definition implemented by
16935 ** the C functions xStep and xFinal. The first four parameters
16936 ** are interpreted in the same way as the first 4 parameters to
16937 ** FUNCTION().
16938 **
@@ -16955,10 +16956,14 @@
16955 {nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_DIRECTONLY|SQLITE_FUNC_UNSAFE, \
16956 SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
16957 #define MFUNCTION(zName, nArg, xPtr, xFunc) \
16958 {nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_CONSTANT|SQLITE_UTF8, \
16959 xPtr, 0, xFunc, 0, 0, 0, #zName, {0} }
 
 
 
 
16960 #define INLINE_FUNC(zName, nArg, iArg, mFlags) \
16961 {nArg, SQLITE_FUNC_BUILTIN|\
16962 SQLITE_UTF8|SQLITE_FUNC_INLINE|SQLITE_FUNC_CONSTANT|(mFlags), \
16963 SQLITE_INT_TO_PTR(iArg), 0, noopFunc, 0, 0, 0, #zName, {0} }
16964 #define TEST_FUNC(zName, nArg, iArg, mFlags) \
@@ -19679,11 +19684,15 @@
19679 SQLITE_PRIVATE void sqlite3InsertBuiltinFuncs(FuncDef*,int);
19680 SQLITE_PRIVATE FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,u8,u8);
19681 SQLITE_PRIVATE void sqlite3QuoteValue(StrAccum*,sqlite3_value*);
19682 SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void);
19683 SQLITE_PRIVATE void sqlite3RegisterDateTimeFunctions(void);
 
19684 SQLITE_PRIVATE void sqlite3RegisterPerConnectionBuiltinFunctions(sqlite3*);
 
 
 
19685 SQLITE_PRIVATE int sqlite3SafetyCheckOk(sqlite3*);
19686 SQLITE_PRIVATE int sqlite3SafetyCheckSickOrOk(sqlite3*);
19687 SQLITE_PRIVATE void sqlite3ChangeCookie(Parse*, int);
19688 SQLITE_PRIVATE With *sqlite3WithDup(sqlite3 *db, With *p);
19689
@@ -20691,10 +20700,13 @@
20691 #ifdef SQLITE_DISABLE_FTS4_DEFERRED
20692 "DISABLE_FTS4_DEFERRED",
20693 #endif
20694 #ifdef SQLITE_DISABLE_INTRINSIC
20695 "DISABLE_INTRINSIC",
 
 
 
20696 #endif
20697 #ifdef SQLITE_DISABLE_LFS
20698 "DISABLE_LFS",
20699 #endif
20700 #ifdef SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
@@ -20770,13 +20782,10 @@
20770 "ENABLE_ICU",
20771 #endif
20772 #ifdef SQLITE_ENABLE_IOTRACE
20773 "ENABLE_IOTRACE",
20774 #endif
20775 #ifdef SQLITE_ENABLE_JSON1
20776 "ENABLE_JSON1",
20777 #endif
20778 #ifdef SQLITE_ENABLE_LOAD_EXTENSION
20779 "ENABLE_LOAD_EXTENSION",
20780 #endif
20781 #ifdef SQLITE_ENABLE_LOCKING_STYLE
20782 "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
@@ -34265,15 +34274,15 @@
34265 /* 108 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
34266 /* 109 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
34267 /* 110 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
34268 /* 111 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
34269 /* 112 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
34270 /* 113 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
34271 /* 114 */ "OpenDup" OpHelp(""),
34272 /* 115 */ "OpenAutoindex" OpHelp("nColumn=P2"),
34273 /* 116 */ "String8" OpHelp("r[P2]='P4'"),
34274 /* 117 */ "OpenEphemeral" OpHelp("nColumn=P2"),
34275 /* 118 */ "SorterOpen" OpHelp(""),
34276 /* 119 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
34277 /* 120 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
34278 /* 121 */ "Close" OpHelp(""),
34279 /* 122 */ "ColumnsUsed" OpHelp(""),
@@ -34304,12 +34313,12 @@
34304 /* 147 */ "SqlExec" OpHelp(""),
34305 /* 148 */ "ParseSchema" OpHelp(""),
34306 /* 149 */ "LoadAnalysis" OpHelp(""),
34307 /* 150 */ "DropTable" OpHelp(""),
34308 /* 151 */ "DropIndex" OpHelp(""),
34309 /* 152 */ "Real" OpHelp("r[P2]=P4"),
34310 /* 153 */ "DropTrigger" OpHelp(""),
34311 /* 154 */ "IntegrityCk" OpHelp(""),
34312 /* 155 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
34313 /* 156 */ "Param" OpHelp(""),
34314 /* 157 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
34315 /* 158 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
@@ -58435,10 +58444,11 @@
58435 Pager *pPager, /* The pager open on the database file */
58436 Pgno pgno, /* Page number to fetch */
58437 DbPage **ppPage, /* Write a pointer to the page here */
58438 int flags /* PAGER_GET_XXX flags */
58439 ){
 
58440 return pPager->xGet(pPager, pgno, ppPage, flags);
58441 }
58442
58443 /*
58444 ** Acquire a page if it is already in the in-memory cache. Do
@@ -72528,11 +72538,11 @@
72528 assert( sqlite3PagerIswriteable(pPage->pDbPage) );
72529 assert( sqlite3_mutex_held(pPage->pBt->mutex) );
72530 assert( pPage->nFree>=0 );
72531 data = pPage->aData;
72532 ptr = &pPage->aCellIdx[2*idx];
72533 assert( pPage->pBt->usableSize > (int)(ptr-data) );
72534 pc = get2byte(ptr);
72535 hdr = pPage->hdrOffset;
72536 testcase( pc==(u32)get2byte(&data[hdr+5]) );
72537 testcase( pc+sz==pPage->pBt->usableSize );
72538 if( pc+sz > pPage->pBt->usableSize ){
@@ -113443,11 +113453,11 @@
113443 Returning *pReturning = pParse->u1.pReturning;
113444 int addrRewind;
113445 int i;
113446 int reg;
113447
113448 if( pReturning->nRetCol==0 ){
113449 assert( CORRUPT_DB );
113450 }else{
113451 sqlite3VdbeAddOp0(v, OP_FkCheck);
113452 addrRewind =
113453 sqlite3VdbeAddOp1(v, OP_Rewind, pReturning->iRetCur);
@@ -113539,11 +113549,11 @@
113539 }
113540 }
113541
113542 if( pParse->bReturning ){
113543 Returning *pRet = pParse->u1.pReturning;
113544 if( pRet->nRetCol==0 ){
113545 assert( CORRUPT_DB );
113546 }else{
113547 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol);
113548 }
113549 }
@@ -119261,11 +119271,10 @@
119261 for(i=0; i<nDef; i++){
119262 FuncDef *pOther;
119263 const char *zName = aDef[i].zName;
119264 int nName = sqlite3Strlen30(zName);
119265 int h = SQLITE_FUNC_HASH(zName[0], nName);
119266 assert( zName[0]>='a' && zName[0]<='z' );
119267 assert( aDef[i].funcFlags & SQLITE_FUNC_BUILTIN );
119268 pOther = sqlite3FunctionSearch(h, zName);
119269 if( pOther ){
119270 assert( pOther!=&aDef[i] && pOther->pNext!=&aDef[i] );
119271 aDef[i].pNext = pOther->pNext;
@@ -120524,10 +120533,21 @@
120524 ** V. The returned value is one of SQLITE_INTEGER, SQLITE_FLOAT,
120525 ** SQLITE_TEXT, SQLITE_BLOB, or SQLITE_NULL. */
120526 sqlite3_result_text(context, azType[i], -1, SQLITE_STATIC);
120527 }
120528
 
 
 
 
 
 
 
 
 
 
 
120529
120530 /*
120531 ** Implementation of the length() function
120532 */
120533 static void lengthFunc(
@@ -120685,11 +120705,11 @@
120685 sqlite3_result_error_nomem(context);
120686 goto endInstr;
120687 }
120688
120689 /*
120690 ** Implementation of the printf() function.
120691 */
120692 static void printfFunc(
120693 sqlite3_context *context,
120694 int argc,
120695 sqlite3_value **argv
@@ -122673,13 +122693,15 @@
122673 FUNCTION(max, -1, 1, 1, minmaxFunc ),
122674 FUNCTION(max, 0, 1, 1, 0 ),
122675 WAGGREGATE(max, 1, 1, 1, minmaxStep, minMaxFinalize, minMaxValue, 0,
122676 SQLITE_FUNC_MINMAX|SQLITE_FUNC_ANYORDER ),
122677 FUNCTION2(typeof, 1, 0, 0, typeofFunc, SQLITE_FUNC_TYPEOF),
 
122678 FUNCTION2(length, 1, 0, 0, lengthFunc, SQLITE_FUNC_LENGTH),
122679 FUNCTION(instr, 2, 0, 0, instrFunc ),
122680 FUNCTION(printf, -1, 0, 0, printfFunc ),
 
122681 FUNCTION(unicode, 1, 0, 0, unicodeFunc ),
122682 FUNCTION(char, -1, 0, 0, charFunc ),
122683 FUNCTION(abs, 1, 0, 0, absFunc ),
122684 #ifndef SQLITE_OMIT_FLOATING_POINT
122685 FUNCTION(round, 1, 0, 0, roundFunc ),
@@ -122774,10 +122796,11 @@
122774 #ifndef SQLITE_OMIT_ALTERTABLE
122775 sqlite3AlterFunctions();
122776 #endif
122777 sqlite3WindowFunctions();
122778 sqlite3RegisterDateTimeFunctions();
 
122779 sqlite3InsertBuiltinFuncs(aBuiltinFunc, ArraySize(aBuiltinFunc));
122780
122781 #if 0 /* Enable to print out how the built-in functions are hashed */
122782 {
122783 int i;
@@ -160516,14 +160539,14 @@
160516 #define TK_DETACH 40
160517 #define TK_EACH 41
160518 #define TK_FAIL 42
160519 #define TK_OR 43
160520 #define TK_AND 44
160521 #define TK_MATCH 45
160522 #define TK_LIKE_KW 46
160523 #define TK_BETWEEN 47
160524 #define TK_IS 48
160525 #define TK_IN 49
160526 #define TK_ISNULL 50
160527 #define TK_NOTNULL 51
160528 #define TK_NE 52
160529 #define TK_EQ 53
@@ -160583,82 +160606,83 @@
160583 #define TK_MINUS 107
160584 #define TK_STAR 108
160585 #define TK_SLASH 109
160586 #define TK_REM 110
160587 #define TK_CONCAT 111
160588 #define TK_COLLATE 112
160589 #define TK_BITNOT 113
160590 #define TK_ON 114
160591 #define TK_INDEXED 115
160592 #define TK_STRING 116
160593 #define TK_JOIN_KW 117
160594 #define TK_CONSTRAINT 118
160595 #define TK_DEFAULT 119
160596 #define TK_NULL 120
160597 #define TK_PRIMARY 121
160598 #define TK_UNIQUE 122
160599 #define TK_CHECK 123
160600 #define TK_REFERENCES 124
160601 #define TK_AUTOINCR 125
160602 #define TK_INSERT 126
160603 #define TK_DELETE 127
160604 #define TK_UPDATE 128
160605 #define TK_SET 129
160606 #define TK_DEFERRABLE 130
160607 #define TK_FOREIGN 131
160608 #define TK_DROP 132
160609 #define TK_UNION 133
160610 #define TK_ALL 134
160611 #define TK_EXCEPT 135
160612 #define TK_INTERSECT 136
160613 #define TK_SELECT 137
160614 #define TK_VALUES 138
160615 #define TK_DISTINCT 139
160616 #define TK_DOT 140
160617 #define TK_FROM 141
160618 #define TK_JOIN 142
160619 #define TK_USING 143
160620 #define TK_ORDER 144
160621 #define TK_GROUP 145
160622 #define TK_HAVING 146
160623 #define TK_LIMIT 147
160624 #define TK_WHERE 148
160625 #define TK_RETURNING 149
160626 #define TK_INTO 150
160627 #define TK_NOTHING 151
160628 #define TK_FLOAT 152
160629 #define TK_BLOB 153
160630 #define TK_INTEGER 154
160631 #define TK_VARIABLE 155
160632 #define TK_CASE 156
160633 #define TK_WHEN 157
160634 #define TK_THEN 158
160635 #define TK_ELSE 159
160636 #define TK_INDEX 160
160637 #define TK_ALTER 161
160638 #define TK_ADD 162
160639 #define TK_WINDOW 163
160640 #define TK_OVER 164
160641 #define TK_FILTER 165
160642 #define TK_COLUMN 166
160643 #define TK_AGG_FUNCTION 167
160644 #define TK_AGG_COLUMN 168
160645 #define TK_TRUEFALSE 169
160646 #define TK_ISNOT 170
160647 #define TK_FUNCTION 171
160648 #define TK_UMINUS 172
160649 #define TK_UPLUS 173
160650 #define TK_TRUTH 174
160651 #define TK_REGISTER 175
160652 #define TK_VECTOR 176
160653 #define TK_SELECT_COLUMN 177
160654 #define TK_IF_NULL_ROW 178
160655 #define TK_ASTERISK 179
160656 #define TK_SPAN 180
160657 #define TK_ERROR 181
160658 #define TK_SPACE 182
160659 #define TK_ILLEGAL 183
 
160660 #endif
160661 /**************** End token definitions ***************************************/
160662
160663 /* The next sections is a series of control #defines.
160664 ** various aspects of the generated parser.
@@ -160714,34 +160738,34 @@
160714 #ifndef INTERFACE
160715 # define INTERFACE 1
160716 #endif
160717 /************* Begin control #defines *****************************************/
160718 #define YYCODETYPE unsigned short int
160719 #define YYNOCODE 318
160720 #define YYACTIONTYPE unsigned short int
160721 #define YYWILDCARD 101
160722 #define sqlite3ParserTOKENTYPE Token
160723 typedef union {
160724 int yyinit;
160725 sqlite3ParserTOKENTYPE yy0;
160726 With* yy43;
160727 u32 yy51;
160728 int yy64;
160729 struct FrameBound yy81;
160730 struct {int value; int mask;} yy83;
160731 TriggerStep* yy95;
160732 Upsert* yy138;
160733 IdList* yy240;
160734 Cte* yy255;
160735 Select* yy303;
160736 Window* yy375;
160737 u8 yy534;
160738 ExprList* yy562;
160739 struct TrigEvent yy570;
160740 const char* yy600;
160741 SrcList* yy607;
160742 Expr* yy626;
160743 } YYMINORTYPE;
160744 #ifndef YYSTACKDEPTH
160745 #define YYSTACKDEPTH 100
160746 #endif
160747 #define sqlite3ParserARG_SDECL
@@ -160753,22 +160777,22 @@
160753 #define sqlite3ParserCTX_PDECL ,Parse *pParse
160754 #define sqlite3ParserCTX_PARAM ,pParse
160755 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
160756 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
160757 #define YYFALLBACK 1
160758 #define YYNSTATE 572
160759 #define YYNRULE 401
160760 #define YYNRULE_WITH_ACTION 339
160761 #define YYNTOKEN 184
160762 #define YY_MAX_SHIFT 571
160763 #define YY_MIN_SHIFTREDUCE 829
160764 #define YY_MAX_SHIFTREDUCE 1229
160765 #define YY_ERROR_ACTION 1230
160766 #define YY_ACCEPT_ACTION 1231
160767 #define YY_NO_ACTION 1232
160768 #define YY_MIN_REDUCE 1233
160769 #define YY_MAX_REDUCE 1633
160770 /************* End control #defines *******************************************/
160771 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
160772
160773 /* Define the yytestcase() macro to be a no-op if is not already defined
160774 ** otherwise.
@@ -160831,607 +160855,616 @@
160831 ** yy_reduce_ofst[] For each state, the offset into yy_action for
160832 ** shifting non-terminals after a reduce.
160833 ** yy_default[] Default action for each state.
160834 **
160835 *********** Begin parsing tables **********************************************/
160836 #define YY_ACTTAB_COUNT (2022)
160837 static const YYACTIONTYPE yy_action[] = {
160838 /* 0 */ 564, 115, 112, 220, 169, 199, 115, 112, 220, 564,
160839 /* 10 */ 375, 1266, 564, 376, 564, 270, 1309, 1309, 406, 407,
160840 /* 20 */ 1084, 199, 1513, 41, 41, 515, 489, 521, 558, 558,
160841 /* 30 */ 558, 965, 41, 41, 395, 41, 41, 51, 51, 966,
160842 /* 40 */ 296, 1269, 296, 122, 123, 1207, 1207, 1041, 113, 1044,
160843 /* 50 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 564, 407,
160844 /* 60 */ 275, 275, 275, 275, 1268, 115, 112, 220, 115, 112,
160845 /* 70 */ 220, 1512, 846, 561, 516, 561, 115, 112, 220, 250,
160846 /* 80 */ 217, 71, 71, 122, 123, 1207, 1207, 1041, 113, 1044,
160847 /* 90 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 440, 440,
160848 /* 100 */ 440, 1149, 119, 119, 119, 119, 118, 118, 117, 117,
160849 /* 110 */ 117, 116, 442, 1183, 1149, 116, 442, 1149, 546, 513,
160850 /* 120 */ 1548, 1554, 374, 213, 6, 169, 1154, 522, 1154, 407,
160851 /* 130 */ 1556, 461, 373, 1554, 535, 99, 463, 332, 121, 121,
160852 /* 140 */ 121, 121, 119, 119, 119, 119, 118, 118, 117, 117,
160853 /* 150 */ 117, 116, 442, 122, 123, 1207, 1207, 1041, 113, 1044,
160854 /* 160 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 1257, 1183,
160855 /* 170 */ 1184, 1185, 243, 1064, 564, 502, 499, 498, 567, 124,
160856 /* 180 */ 567, 1128, 1627, 344, 1627, 497, 119, 119, 119, 119,
160857 /* 190 */ 118, 118, 117, 117, 117, 116, 442, 70, 70, 407,
160858 /* 200 */ 121, 121, 121, 121, 114, 117, 117, 117, 116, 442,
160859 /* 210 */ 474, 1469, 119, 119, 119, 119, 118, 118, 117, 117,
160860 /* 220 */ 117, 116, 442, 122, 123, 1207, 1207, 1041, 113, 1044,
160861 /* 230 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 407, 208,
160862 /* 240 */ 539, 1548, 1424, 81, 339, 6, 342, 80, 119, 119,
160863 /* 250 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 381,
160864 /* 260 */ 1126, 442, 122, 123, 1207, 1207, 1041, 113, 1044, 1034,
160865 /* 270 */ 1034, 120, 120, 121, 121, 121, 121, 262, 463, 332,
160866 /* 280 */ 359, 1567, 119, 119, 119, 119, 118, 118, 117, 117,
160867 /* 290 */ 117, 116, 442, 1231, 1, 1, 571, 2, 1235, 1573,
160868 /* 300 */ 571, 2, 1235, 307, 1149, 141, 417, 307, 407, 141,
160869 /* 310 */ 1183, 98, 1317, 489, 866, 531, 1317, 1149, 215, 512,
160870 /* 320 */ 1149, 119, 119, 119, 119, 118, 118, 117, 117, 117,
160871 /* 330 */ 116, 442, 122, 123, 1207, 1207, 1041, 113, 1044, 1034,
160872 /* 340 */ 1034, 120, 120, 121, 121, 121, 121, 275, 275, 1001,
160873 /* 350 */ 1257, 275, 275, 1128, 1628, 1021, 1628, 137, 415, 1600,
160874 /* 360 */ 561, 272, 1255, 950, 561, 1423, 1183, 1184, 1185, 1594,
160875 /* 370 */ 866, 1012, 530, 315, 231, 1011, 317, 1276, 231, 119,
160876 /* 380 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
160877 /* 390 */ 1570, 119, 119, 119, 119, 118, 118, 117, 117, 117,
160878 /* 400 */ 116, 442, 330, 359, 1567, 564, 446, 1011, 1011, 1013,
160879 /* 410 */ 446, 877, 564, 306, 555, 407, 447, 1021, 563, 346,
160880 /* 420 */ 184, 118, 118, 117, 117, 117, 116, 442, 71, 71,
160881 /* 430 */ 439, 438, 1126, 1012, 472, 71, 71, 1011, 205, 122,
160882 /* 440 */ 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120,
160883 /* 450 */ 121, 121, 121, 121, 1304, 219, 1283, 1183, 407, 570,
160884 /* 460 */ 1183, 1235, 503, 1477, 1304, 546, 307, 489, 141, 1011,
160885 /* 470 */ 1011, 1013, 546, 140, 545, 1317, 1214, 382, 1214, 378,
160886 /* 480 */ 950, 514, 122, 123, 1207, 1207, 1041, 113, 1044, 1034,
160887 /* 490 */ 1034, 120, 120, 121, 121, 121, 121, 472, 119, 119,
160888 /* 500 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 283,
160889 /* 510 */ 275, 275, 1476, 1183, 1184, 1185, 1183, 1184, 1185, 417,
160890 /* 520 */ 1183, 243, 541, 561, 502, 499, 498, 1001, 407, 478,
160891 /* 530 */ 1183, 472, 870, 143, 497, 1549, 185, 231, 9, 6,
160892 /* 540 */ 253, 119, 119, 119, 119, 118, 118, 117, 117, 117,
160893 /* 550 */ 116, 442, 122, 123, 1207, 1207, 1041, 113, 1044, 1034,
160894 /* 560 */ 1034, 120, 120, 121, 121, 121, 121, 407, 372, 446,
160895 /* 570 */ 363, 863, 288, 1183, 397, 1204, 1183, 1184, 1185, 931,
160896 /* 580 */ 330, 458, 318, 526, 564, 541, 1183, 1184, 1185, 284,
160897 /* 590 */ 1183, 122, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034,
160898 /* 600 */ 120, 120, 121, 121, 121, 121, 291, 71, 71, 275,
160899 /* 610 */ 275, 119, 119, 119, 119, 118, 118, 117, 117, 117,
160900 /* 620 */ 116, 442, 561, 1031, 1031, 1042, 1183, 1045, 287, 1183,
160901 /* 630 */ 1184, 1185, 1204, 137, 218, 542, 1541, 407, 363, 470,
160902 /* 640 */ 431, 1167, 32, 363, 527, 350, 1183, 1184, 1185, 380,
160903 /* 650 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
160904 /* 660 */ 442, 122, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034,
160905 /* 670 */ 120, 120, 121, 121, 121, 121, 407, 392, 1227, 1183,
160906 /* 680 */ 1022, 1540, 1183, 1184, 1185, 1523, 149, 1307, 1307, 306,
160907 /* 690 */ 555, 151, 1546, 361, 5, 564, 6, 3, 1035, 1542,
160908 /* 700 */ 122, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120,
160909 /* 710 */ 120, 121, 121, 121, 121, 411, 505, 83, 71, 71,
160910 /* 720 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
160911 /* 730 */ 442, 1183, 426, 428, 1183, 1183, 1184, 1185, 191, 261,
160912 /* 740 */ 278, 358, 508, 353, 507, 248, 407, 455, 137, 1539,
160913 /* 750 */ 1006, 349, 363, 472, 1539, 302, 1228, 405, 281, 119,
160914 /* 760 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
160915 /* 770 */ 122, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120,
160916 /* 780 */ 120, 121, 121, 121, 121, 407, 452, 1183, 1184, 1185,
160917 /* 790 */ 1183, 1184, 1185, 275, 275, 269, 269, 489, 483, 1525,
160918 /* 800 */ 148, 363, 480, 564, 306, 555, 561, 489, 561, 122,
160919 /* 810 */ 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120,
160920 /* 820 */ 121, 121, 121, 121, 564, 886, 13, 13, 293, 119,
160921 /* 830 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
160922 /* 840 */ 1183, 420, 1316, 564, 98, 417, 199, 13, 13, 150,
160923 /* 850 */ 306, 555, 1312, 322, 386, 407, 506, 478, 562, 400,
160924 /* 860 */ 920, 920, 425, 1539, 887, 292, 71, 71, 119, 119,
160925 /* 870 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 122,
160926 /* 880 */ 123, 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120,
160927 /* 890 */ 121, 121, 121, 121, 564, 1149, 1183, 1184, 1185, 407,
160928 /* 900 */ 275, 275, 451, 303, 1089, 1089, 486, 448, 1149, 276,
160929 /* 910 */ 276, 1149, 1539, 561, 319, 286, 321, 71, 71, 429,
160930 /* 920 */ 451, 450, 561, 952, 101, 1207, 1207, 1041, 113, 1044,
160931 /* 930 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 119, 119,
160932 /* 940 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 1105,
160933 /* 950 */ 1183, 1547, 564, 12, 437, 6, 329, 564, 834, 835,
160934 /* 960 */ 836, 1629, 393, 547, 1106, 246, 245, 244, 1545, 1258,
160935 /* 970 */ 413, 1521, 6, 1086, 310, 71, 71, 1086, 564, 1107,
160936 /* 980 */ 13, 13, 119, 119, 119, 119, 118, 118, 117, 117,
160937 /* 990 */ 117, 116, 442, 451, 104, 427, 537, 320, 275, 275,
160938 /* 1000 */ 906, 13, 13, 520, 1482, 1105, 1183, 1184, 1185, 484,
160939 /* 1010 */ 907, 561, 546, 564, 407, 536, 295, 478, 253, 200,
160940 /* 1020 */ 1106, 548, 1482, 1484, 1160, 1409, 16, 16, 126, 557,
160941 /* 1030 */ 413, 479, 311, 951, 407, 1107, 71, 71, 122, 123,
160942 /* 1040 */ 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120, 121,
160943 /* 1050 */ 121, 121, 121, 1204, 407, 544, 552, 314, 122, 123,
160944 /* 1060 */ 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120, 121,
160945 /* 1070 */ 121, 121, 121, 441, 144, 1160, 468, 146, 122, 111,
160946 /* 1080 */ 1207, 1207, 1041, 113, 1044, 1034, 1034, 120, 120, 121,
160947 /* 1090 */ 121, 121, 121, 247, 12, 1482, 422, 119, 119, 119,
160948 /* 1100 */ 119, 118, 118, 117, 117, 117, 116, 442, 1183, 564,
160949 /* 1110 */ 1204, 207, 404, 403, 858, 950, 294, 119, 119, 119,
160950 /* 1120 */ 119, 118, 118, 117, 117, 117, 116, 442, 564, 30,
160951 /* 1130 */ 564, 1409, 55, 55, 1599, 564, 895, 119, 119, 119,
160952 /* 1140 */ 119, 118, 118, 117, 117, 117, 116, 442, 510, 1409,
160953 /* 1150 */ 1409, 56, 56, 15, 15, 439, 438, 407, 13, 13,
160954 /* 1160 */ 31, 1187, 412, 1211, 1183, 1184, 1185, 196, 1213, 306,
160955 /* 1170 */ 555, 858, 462, 193, 926, 564, 1212, 489, 361, 925,
160956 /* 1180 */ 1183, 564, 123, 1207, 1207, 1041, 113, 1044, 1034, 1034,
160957 /* 1190 */ 120, 120, 121, 121, 121, 121, 1544, 1149, 43, 43,
160958 /* 1200 */ 6, 1214, 423, 1214, 13, 13, 564, 219, 538, 494,
160959 /* 1210 */ 1149, 108, 556, 1149, 4, 392, 1127, 434, 1187, 194,
160960 /* 1220 */ 424, 485, 337, 1315, 414, 171, 1253, 1321, 559, 57,
160961 /* 1230 */ 57, 564, 950, 564, 224, 247, 1183, 1184, 1185, 561,
160962 /* 1240 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
160963 /* 1250 */ 442, 443, 564, 517, 13, 13, 44, 44, 275, 275,
160964 /* 1260 */ 1409, 275, 275, 553, 1353, 529, 213, 549, 456, 543,
160965 /* 1270 */ 465, 561, 564, 137, 561, 58, 58, 469, 405, 1222,
160966 /* 1280 */ 405, 274, 217, 108, 556, 110, 4, 405, 275, 275,
160967 /* 1290 */ 564, 1352, 1021, 564, 1228, 59, 59, 523, 106, 106,
160968 /* 1300 */ 559, 561, 275, 275, 412, 107, 457, 443, 566, 565,
160969 /* 1310 */ 564, 8, 1011, 60, 60, 561, 61, 61, 564, 965,
160970 /* 1320 */ 349, 926, 305, 443, 84, 204, 925, 966, 564, 306,
160971 /* 1330 */ 555, 435, 405, 62, 62, 553, 476, 105, 564, 103,
160972 /* 1340 */ 464, 45, 45, 1203, 1011, 1011, 1013, 1014, 27, 533,
160973 /* 1350 */ 564, 46, 46, 453, 532, 1572, 1171, 445, 1528, 564,
160974 /* 1360 */ 279, 47, 47, 327, 1021, 390, 390, 389, 264, 387,
160975 /* 1370 */ 106, 106, 843, 49, 49, 108, 556, 107, 4, 443,
160976 /* 1380 */ 566, 565, 50, 50, 1011, 225, 564, 313, 564, 96,
160977 /* 1390 */ 564, 228, 559, 524, 147, 312, 38, 1123, 564, 394,
160978 /* 1400 */ 466, 328, 280, 98, 544, 564, 17, 564, 323, 63,
160979 /* 1410 */ 63, 64, 64, 65, 65, 443, 1011, 1011, 1013, 1014,
160980 /* 1420 */ 27, 14, 14, 289, 564, 227, 564, 553, 66, 66,
160981 /* 1430 */ 128, 128, 477, 162, 564, 309, 135, 564, 1003, 277,
160982 /* 1440 */ 252, 533, 564, 1501, 564, 418, 534, 67, 67, 52,
160983 /* 1450 */ 52, 564, 1287, 226, 564, 1500, 1021, 68, 68, 208,
160984 /* 1460 */ 69, 69, 106, 106, 1286, 53, 53, 157, 157, 107,
160985 /* 1470 */ 873, 443, 566, 565, 158, 158, 1011, 76, 76, 564,
160986 /* 1480 */ 357, 564, 108, 556, 471, 4, 252, 408, 885, 884,
160987 /* 1490 */ 356, 564, 306, 555, 564, 473, 564, 252, 481, 559,
160988 /* 1500 */ 564, 334, 54, 54, 72, 72, 564, 230, 1011, 1011,
160989 /* 1510 */ 1013, 1014, 27, 564, 129, 129, 449, 73, 73, 130,
160990 /* 1520 */ 130, 564, 443, 131, 131, 519, 564, 873, 564, 127,
160991 /* 1530 */ 127, 333, 1071, 98, 553, 1349, 156, 156, 564, 495,
160992 /* 1540 */ 347, 249, 98, 338, 155, 155, 892, 893, 533, 136,
160993 /* 1550 */ 136, 134, 134, 532, 341, 1171, 445, 1587, 564, 279,
160994 /* 1560 */ 343, 132, 132, 1021, 390, 390, 389, 264, 387, 106,
160995 /* 1570 */ 106, 843, 564, 1067, 564, 249, 107, 564, 443, 566,
160996 /* 1580 */ 565, 133, 133, 1011, 225, 1015, 313, 108, 556, 1071,
160997 /* 1590 */ 4, 345, 968, 969, 312, 75, 75, 77, 77, 1300,
160998 /* 1600 */ 74, 74, 564, 1132, 559, 564, 108, 556, 959, 4,
160999 /* 1610 */ 252, 923, 1083, 110, 1083, 1011, 1011, 1013, 1014, 27,
161000 /* 1620 */ 1082, 1285, 1082, 559, 227, 42, 42, 443, 48, 48,
161001 /* 1630 */ 1284, 856, 162, 145, 924, 135, 110, 352, 362, 553,
161002 /* 1640 */ 1340, 1361, 1015, 1408, 1336, 301, 443, 1561, 1347, 550,
161003 /* 1650 */ 1414, 551, 226, 202, 1265, 1333, 1256, 1244, 553, 1243,
161004 /* 1660 */ 490, 1245, 1580, 267, 11, 391, 210, 223, 1021, 1390,
161005 /* 1670 */ 1395, 282, 365, 367, 106, 106, 930, 369, 454, 285,
161006 /* 1680 */ 1383, 107, 325, 443, 566, 565, 408, 1021, 1011, 326,
161007 /* 1690 */ 475, 306, 555, 106, 106, 100, 556, 500, 4, 1400,
161008 /* 1700 */ 107, 1399, 443, 566, 565, 398, 1283, 1011, 214, 355,
161009 /* 1710 */ 1473, 290, 559, 1472, 1583, 449, 554, 371, 331, 197,
161010 /* 1720 */ 1011, 1011, 1013, 1014, 27, 198, 209, 385, 1222, 173,
161011 /* 1730 */ 221, 256, 1520, 1518, 1219, 443, 79, 416, 206, 1011,
161012 /* 1740 */ 1011, 1013, 1014, 27, 83, 279, 182, 553, 82, 167,
161013 /* 1750 */ 390, 390, 389, 264, 387, 35, 1396, 843, 1478, 459,
161014 /* 1760 */ 175, 177, 460, 493, 178, 179, 180, 233, 96, 396,
161015 /* 1770 */ 225, 1402, 313, 1401, 36, 1404, 1021, 467, 186, 482,
161016 /* 1780 */ 312, 399, 106, 106, 237, 1467, 89, 1489, 488, 107,
161017 /* 1790 */ 239, 443, 566, 565, 268, 336, 1011, 190, 491, 340,
161018 /* 1800 */ 240, 401, 1246, 241, 509, 1294, 430, 1303, 91, 877,
161019 /* 1810 */ 227, 215, 1566, 1302, 1301, 1273, 1598, 432, 162, 518,
161020 /* 1820 */ 1272, 135, 1597, 354, 402, 433, 1271, 1596, 1011, 1011,
161021 /* 1830 */ 1013, 1014, 27, 1293, 299, 360, 300, 525, 226, 95,
161022 /* 1840 */ 254, 255, 1344, 364, 436, 125, 544, 1552, 10, 1453,
161023 /* 1850 */ 379, 1551, 102, 304, 97, 528, 34, 568, 1177, 263,
161024 /* 1860 */ 265, 266, 569, 1241, 1236, 172, 409, 410, 159, 383,
161025 /* 1870 */ 377, 366, 408, 1345, 1343, 368, 370, 306, 555, 1342,
161026 /* 1880 */ 1326, 1325, 1368, 201, 384, 1367, 1505, 1506, 160, 1504,
161027 /* 1890 */ 1503, 142, 161, 211, 212, 78, 830, 444, 203, 308,
161028 /* 1900 */ 297, 449, 222, 1081, 139, 1079, 316, 174, 163, 1203,
161029 /* 1910 */ 229, 176, 232, 909, 324, 1095, 164, 181, 165, 419,
161030 /* 1920 */ 421, 183, 85, 86, 87, 88, 166, 1098, 235, 234,
161031 /* 1930 */ 1094, 152, 18, 236, 335, 1087, 252, 1216, 487, 238,
161032 /* 1940 */ 37, 187, 188, 845, 492, 356, 242, 348, 496, 189,
161033 /* 1950 */ 90, 93, 19, 20, 168, 875, 501, 351, 92, 504,
161034 /* 1960 */ 888, 153, 511, 1133, 1165, 154, 298, 1047, 94, 1134,
161035 /* 1970 */ 39, 958, 216, 271, 273, 192, 953, 110, 1151, 251,
161036 /* 1980 */ 1155, 21, 1159, 22, 1158, 1139, 1153, 33, 23, 24,
161037 /* 1990 */ 540, 25, 195, 98, 26, 1062, 1048, 1046, 1050, 1104,
161038 /* 2000 */ 7, 1103, 257, 258, 1051, 28, 40, 560, 1016, 857,
161039 /* 2010 */ 109, 29, 919, 138, 259, 260, 170, 1589, 388, 1588,
161040 /* 2020 */ 1173, 1172,
 
 
 
 
161041 };
161042 static const YYCODETYPE yy_lookahead[] = {
161043 /* 0 */ 192, 273, 274, 275, 192, 192, 273, 274, 275, 192,
161044 /* 10 */ 218, 215, 192, 218, 192, 212, 234, 235, 205, 19,
161045 /* 20 */ 11, 192, 294, 215, 216, 203, 192, 203, 209, 210,
161046 /* 30 */ 211, 31, 215, 216, 205, 215, 216, 215, 216, 39,
161047 /* 40 */ 227, 215, 229, 43, 44, 45, 46, 47, 48, 49,
161048 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 19,
161049 /* 60 */ 238, 239, 238, 239, 215, 273, 274, 275, 273, 274,
161050 /* 70 */ 275, 237, 21, 251, 252, 251, 273, 274, 275, 255,
161051 /* 80 */ 256, 215, 216, 43, 44, 45, 46, 47, 48, 49,
161052 /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 209, 210,
161053 /* 100 */ 211, 76, 102, 103, 104, 105, 106, 107, 108, 109,
161054 /* 110 */ 110, 111, 112, 59, 89, 111, 112, 92, 252, 307,
161055 /* 120 */ 308, 313, 314, 25, 312, 192, 86, 261, 88, 19,
161056 /* 130 */ 313, 80, 315, 313, 314, 25, 127, 128, 54, 55,
161057 /* 140 */ 56, 57, 102, 103, 104, 105, 106, 107, 108, 109,
161058 /* 150 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
161059 /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 115,
161060 /* 170 */ 116, 117, 118, 122, 192, 121, 122, 123, 202, 69,
161061 /* 180 */ 204, 22, 23, 16, 25, 131, 102, 103, 104, 105,
161062 /* 190 */ 106, 107, 108, 109, 110, 111, 112, 215, 216, 19,
161063 /* 200 */ 54, 55, 56, 57, 58, 108, 109, 110, 111, 112,
161064 /* 210 */ 192, 160, 102, 103, 104, 105, 106, 107, 108, 109,
161065 /* 220 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
161066 /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 141,
161067 /* 240 */ 307, 308, 272, 24, 77, 312, 79, 67, 102, 103,
161068 /* 250 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 277,
161069 /* 260 */ 101, 112, 43, 44, 45, 46, 47, 48, 49, 50,
161070 /* 270 */ 51, 52, 53, 54, 55, 56, 57, 26, 127, 128,
161071 /* 280 */ 310, 311, 102, 103, 104, 105, 106, 107, 108, 109,
161072 /* 290 */ 110, 111, 112, 184, 185, 186, 187, 188, 189, 186,
161073 /* 300 */ 187, 188, 189, 194, 76, 196, 192, 194, 19, 196,
161074 /* 310 */ 59, 25, 203, 192, 59, 87, 203, 89, 164, 165,
161075 /* 320 */ 92, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161076 /* 330 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
161077 /* 340 */ 51, 52, 53, 54, 55, 56, 57, 238, 239, 73,
161078 /* 350 */ 192, 238, 239, 22, 23, 100, 25, 81, 237, 229,
161079 /* 360 */ 251, 23, 204, 25, 251, 272, 115, 116, 117, 214,
161080 /* 370 */ 115, 116, 144, 192, 265, 120, 262, 222, 265, 102,
161081 /* 380 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161082 /* 390 */ 192, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161083 /* 400 */ 111, 112, 126, 310, 311, 192, 297, 152, 153, 154,
161084 /* 410 */ 297, 125, 192, 137, 138, 19, 295, 100, 192, 23,
161085 /* 420 */ 22, 106, 107, 108, 109, 110, 111, 112, 215, 216,
161086 /* 430 */ 106, 107, 101, 116, 192, 215, 216, 120, 149, 43,
161087 /* 440 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
161088 /* 450 */ 54, 55, 56, 57, 222, 117, 224, 59, 19, 187,
161089 /* 460 */ 59, 189, 23, 282, 232, 252, 194, 192, 196, 152,
161090 /* 470 */ 153, 154, 252, 72, 261, 203, 152, 248, 154, 250,
161091 /* 480 */ 142, 261, 43, 44, 45, 46, 47, 48, 49, 50,
161092 /* 490 */ 51, 52, 53, 54, 55, 56, 57, 192, 102, 103,
161093 /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 267,
161094 /* 510 */ 238, 239, 237, 115, 116, 117, 115, 116, 117, 192,
161095 /* 520 */ 59, 118, 192, 251, 121, 122, 123, 73, 19, 192,
161096 /* 530 */ 59, 192, 23, 72, 131, 308, 22, 265, 22, 312,
161097 /* 540 */ 24, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161098 /* 550 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
161099 /* 560 */ 51, 52, 53, 54, 55, 56, 57, 19, 192, 297,
161100 /* 570 */ 192, 23, 267, 59, 203, 59, 115, 116, 117, 108,
161101 /* 580 */ 126, 127, 128, 192, 192, 192, 115, 116, 117, 262,
161102 /* 590 */ 59, 43, 44, 45, 46, 47, 48, 49, 50, 51,
161103 /* 600 */ 52, 53, 54, 55, 56, 57, 267, 215, 216, 238,
161104 /* 610 */ 239, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161105 /* 620 */ 111, 112, 251, 45, 46, 47, 59, 49, 291, 115,
161106 /* 630 */ 116, 117, 116, 81, 192, 305, 306, 19, 192, 268,
161107 /* 640 */ 19, 23, 22, 192, 252, 24, 115, 116, 117, 192,
161108 /* 650 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
161109 /* 660 */ 112, 43, 44, 45, 46, 47, 48, 49, 50, 51,
161110 /* 670 */ 52, 53, 54, 55, 56, 57, 19, 22, 23, 59,
161111 /* 680 */ 23, 303, 115, 116, 117, 192, 240, 234, 235, 137,
161112 /* 690 */ 138, 240, 308, 192, 22, 192, 312, 22, 120, 306,
161113 /* 700 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
161114 /* 710 */ 53, 54, 55, 56, 57, 197, 95, 150, 215, 216,
161115 /* 720 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
161116 /* 730 */ 112, 59, 231, 112, 59, 115, 116, 117, 25, 118,
161117 /* 740 */ 119, 120, 121, 122, 123, 124, 19, 243, 81, 303,
161118 /* 750 */ 23, 130, 192, 192, 303, 252, 101, 253, 203, 102,
161119 /* 760 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161120 /* 770 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
161121 /* 780 */ 53, 54, 55, 56, 57, 19, 119, 115, 116, 117,
161122 /* 790 */ 115, 116, 117, 238, 239, 238, 239, 192, 280, 192,
161123 /* 800 */ 240, 192, 284, 192, 137, 138, 251, 192, 251, 43,
161124 /* 810 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
161125 /* 820 */ 54, 55, 56, 57, 192, 35, 215, 216, 267, 102,
161126 /* 830 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161127 /* 840 */ 59, 230, 237, 192, 25, 192, 192, 215, 216, 240,
161128 /* 850 */ 137, 138, 237, 16, 200, 19, 66, 192, 133, 205,
161129 /* 860 */ 135, 136, 230, 303, 74, 203, 215, 216, 102, 103,
161130 /* 870 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 43,
161131 /* 880 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
161132 /* 890 */ 54, 55, 56, 57, 192, 76, 115, 116, 117, 19,
161133 /* 900 */ 238, 239, 192, 252, 126, 127, 128, 192, 89, 238,
161134 /* 910 */ 239, 92, 303, 251, 77, 262, 79, 215, 216, 129,
161135 /* 920 */ 210, 211, 251, 142, 158, 45, 46, 47, 48, 49,
161136 /* 930 */ 50, 51, 52, 53, 54, 55, 56, 57, 102, 103,
161137 /* 940 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 12,
161138 /* 950 */ 59, 308, 192, 212, 252, 312, 291, 192, 7, 8,
161139 /* 960 */ 9, 300, 301, 203, 27, 126, 127, 128, 308, 207,
161140 /* 970 */ 208, 192, 312, 29, 192, 215, 216, 33, 192, 42,
161141 /* 980 */ 215, 216, 102, 103, 104, 105, 106, 107, 108, 109,
161142 /* 990 */ 110, 111, 112, 283, 158, 230, 66, 160, 238, 239,
161143 /* 1000 */ 63, 215, 216, 192, 192, 12, 115, 116, 117, 65,
161144 /* 1010 */ 73, 251, 252, 192, 19, 85, 230, 192, 24, 24,
161145 /* 1020 */ 27, 261, 210, 211, 94, 192, 215, 216, 22, 207,
161146 /* 1030 */ 208, 290, 192, 142, 19, 42, 215, 216, 43, 44,
161147 /* 1040 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
161148 /* 1050 */ 55, 56, 57, 59, 19, 144, 63, 192, 43, 44,
161149 /* 1060 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
161150 /* 1070 */ 55, 56, 57, 252, 163, 145, 114, 22, 43, 44,
161151 /* 1080 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
161152 /* 1090 */ 55, 56, 57, 45, 212, 283, 263, 102, 103, 104,
161153 /* 1100 */ 105, 106, 107, 108, 109, 110, 111, 112, 59, 192,
161154 /* 1110 */ 116, 149, 106, 107, 59, 25, 291, 102, 103, 104,
161155 /* 1120 */ 105, 106, 107, 108, 109, 110, 111, 112, 192, 22,
161156 /* 1130 */ 192, 192, 215, 216, 23, 192, 25, 102, 103, 104,
161157 /* 1140 */ 105, 106, 107, 108, 109, 110, 111, 112, 108, 192,
161158 /* 1150 */ 192, 215, 216, 215, 216, 106, 107, 19, 215, 216,
161159 /* 1160 */ 53, 59, 114, 114, 115, 116, 117, 285, 119, 137,
161160 /* 1170 */ 138, 116, 290, 230, 134, 192, 127, 192, 192, 139,
161161 /* 1180 */ 59, 192, 44, 45, 46, 47, 48, 49, 50, 51,
161162 /* 1190 */ 52, 53, 54, 55, 56, 57, 308, 76, 215, 216,
161163 /* 1200 */ 312, 152, 263, 154, 215, 216, 192, 117, 87, 19,
161164 /* 1210 */ 89, 19, 20, 92, 22, 22, 23, 231, 116, 230,
161165 /* 1220 */ 263, 263, 237, 203, 298, 299, 203, 239, 36, 215,
161166 /* 1230 */ 216, 192, 142, 192, 15, 45, 115, 116, 117, 251,
161167 /* 1240 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
161168 /* 1250 */ 112, 59, 192, 203, 215, 216, 215, 216, 238, 239,
161169 /* 1260 */ 192, 238, 239, 71, 192, 144, 25, 203, 243, 230,
161170 /* 1270 */ 243, 251, 192, 81, 251, 215, 216, 243, 253, 60,
161171 /* 1280 */ 253, 255, 256, 19, 20, 25, 22, 253, 238, 239,
161172 /* 1290 */ 192, 192, 100, 192, 101, 215, 216, 19, 106, 107,
161173 /* 1300 */ 36, 251, 238, 239, 114, 113, 192, 115, 116, 117,
161174 /* 1310 */ 192, 47, 120, 215, 216, 251, 215, 216, 192, 31,
161175 /* 1320 */ 130, 134, 243, 59, 148, 149, 139, 39, 192, 137,
161176 /* 1330 */ 138, 263, 253, 215, 216, 71, 19, 157, 192, 159,
161177 /* 1340 */ 128, 215, 216, 25, 152, 153, 154, 155, 156, 85,
161178 /* 1350 */ 192, 215, 216, 268, 90, 0, 1, 2, 192, 192,
161179 /* 1360 */ 5, 215, 216, 151, 100, 10, 11, 12, 13, 14,
161180 /* 1370 */ 106, 107, 17, 215, 216, 19, 20, 113, 22, 115,
161181 /* 1380 */ 116, 117, 215, 216, 120, 30, 192, 32, 192, 148,
161182 /* 1390 */ 192, 24, 36, 115, 22, 40, 24, 23, 192, 25,
161183 /* 1400 */ 128, 23, 99, 25, 144, 192, 22, 192, 192, 215,
161184 /* 1410 */ 216, 215, 216, 215, 216, 59, 152, 153, 154, 155,
161185 /* 1420 */ 156, 215, 216, 151, 192, 70, 192, 71, 215, 216,
161186 /* 1430 */ 215, 216, 115, 78, 192, 132, 81, 192, 23, 22,
161187 /* 1440 */ 25, 85, 192, 192, 192, 61, 90, 215, 216, 215,
161188 /* 1450 */ 216, 192, 225, 98, 192, 192, 100, 215, 216, 141,
161189 /* 1460 */ 215, 216, 106, 107, 225, 215, 216, 215, 216, 113,
161190 /* 1470 */ 59, 115, 116, 117, 215, 216, 120, 215, 216, 192,
161191 /* 1480 */ 120, 192, 19, 20, 23, 22, 25, 132, 119, 120,
161192 /* 1490 */ 130, 192, 137, 138, 192, 23, 192, 25, 192, 36,
161193 /* 1500 */ 192, 192, 215, 216, 215, 216, 192, 140, 152, 153,
161194 /* 1510 */ 154, 155, 156, 192, 215, 216, 161, 215, 216, 215,
161195 /* 1520 */ 216, 192, 59, 215, 216, 19, 192, 116, 192, 215,
161196 /* 1530 */ 216, 23, 59, 25, 71, 192, 215, 216, 192, 23,
161197 /* 1540 */ 23, 25, 25, 192, 215, 216, 7, 8, 85, 215,
161198 /* 1550 */ 216, 215, 216, 90, 192, 1, 2, 140, 192, 5,
161199 /* 1560 */ 192, 215, 216, 100, 10, 11, 12, 13, 14, 106,
161200 /* 1570 */ 107, 17, 192, 23, 192, 25, 113, 192, 115, 116,
161201 /* 1580 */ 117, 215, 216, 120, 30, 59, 32, 19, 20, 116,
161202 /* 1590 */ 22, 192, 83, 84, 40, 215, 216, 215, 216, 192,
161203 /* 1600 */ 215, 216, 192, 97, 36, 192, 19, 20, 23, 22,
161204 /* 1610 */ 25, 23, 152, 25, 154, 152, 153, 154, 155, 156,
161205 /* 1620 */ 152, 225, 154, 36, 70, 215, 216, 59, 215, 216,
161206 /* 1630 */ 192, 23, 78, 25, 23, 81, 25, 192, 192, 71,
161207 /* 1640 */ 257, 192, 116, 192, 192, 254, 59, 317, 192, 192,
161208 /* 1650 */ 192, 235, 98, 241, 192, 254, 192, 192, 71, 192,
161209 /* 1660 */ 287, 192, 192, 286, 242, 190, 213, 296, 100, 266,
161210 /* 1670 */ 270, 244, 254, 254, 106, 107, 108, 254, 258, 258,
161211 /* 1680 */ 266, 113, 292, 115, 116, 117, 132, 100, 120, 245,
161212 /* 1690 */ 292, 137, 138, 106, 107, 19, 20, 219, 22, 270,
161213 /* 1700 */ 113, 270, 115, 116, 117, 270, 224, 120, 228, 218,
161214 /* 1710 */ 218, 245, 36, 218, 195, 161, 279, 258, 244, 248,
161215 /* 1720 */ 152, 153, 154, 155, 156, 248, 242, 244, 60, 296,
161216 /* 1730 */ 296, 140, 199, 199, 38, 59, 293, 199, 149, 152,
161217 /* 1740 */ 153, 154, 155, 156, 150, 5, 22, 71, 293, 43,
161218 /* 1750 */ 10, 11, 12, 13, 14, 269, 271, 17, 282, 18,
161219 /* 1760 */ 233, 236, 199, 18, 236, 236, 236, 198, 148, 245,
161220 /* 1770 */ 30, 271, 32, 271, 269, 233, 100, 245, 233, 199,
161221 /* 1780 */ 40, 245, 106, 107, 198, 245, 157, 289, 62, 113,
161222 /* 1790 */ 198, 115, 116, 117, 199, 288, 120, 22, 220, 199,
161223 /* 1800 */ 198, 220, 199, 198, 114, 226, 64, 217, 22, 125,
161224 /* 1810 */ 70, 164, 311, 217, 217, 217, 223, 24, 78, 304,
161225 /* 1820 */ 219, 81, 223, 217, 220, 112, 217, 217, 152, 153,
161226 /* 1830 */ 154, 155, 156, 226, 281, 220, 281, 143, 98, 114,
161227 /* 1840 */ 199, 91, 260, 259, 82, 147, 144, 316, 22, 276,
161228 /* 1850 */ 199, 316, 157, 278, 146, 145, 25, 201, 13, 193,
161229 /* 1860 */ 193, 6, 191, 191, 191, 299, 302, 302, 206, 246,
161230 /* 1870 */ 248, 259, 132, 260, 260, 259, 259, 137, 138, 260,
161231 /* 1880 */ 249, 249, 264, 247, 245, 264, 212, 212, 206, 212,
161232 /* 1890 */ 212, 221, 206, 213, 213, 212, 4, 3, 22, 162,
161233 /* 1900 */ 221, 161, 15, 23, 16, 23, 138, 150, 129, 25,
161234 /* 1910 */ 24, 141, 143, 20, 16, 1, 129, 141, 129, 61,
161235 /* 1920 */ 37, 150, 53, 53, 53, 53, 129, 115, 140, 34,
161236 /* 1930 */ 1, 5, 22, 114, 160, 68, 25, 75, 41, 140,
161237 /* 1940 */ 24, 68, 114, 20, 19, 130, 124, 23, 67, 22,
161238 /* 1950 */ 22, 148, 22, 22, 37, 59, 67, 24, 22, 96,
161239 /* 1960 */ 28, 23, 22, 97, 23, 23, 67, 23, 25, 23,
161240 /* 1970 */ 22, 115, 140, 23, 23, 22, 142, 25, 88, 34,
161241 /* 1980 */ 75, 34, 75, 34, 93, 23, 86, 22, 34, 34,
161242 /* 1990 */ 24, 34, 25, 25, 34, 23, 23, 23, 23, 23,
161243 /* 2000 */ 44, 23, 25, 22, 11, 22, 22, 25, 23, 23,
161244 /* 2010 */ 22, 22, 134, 23, 140, 140, 25, 140, 15, 140,
161245 /* 2020 */ 1, 1, 318, 318, 318, 318, 318, 318, 318, 318,
161246 /* 2030 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161247 /* 2040 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161248 /* 2050 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161249 /* 2060 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161250 /* 2070 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161251 /* 2080 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161252 /* 2090 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161253 /* 2100 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161254 /* 2110 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161255 /* 2120 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161256 /* 2130 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161257 /* 2140 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161258 /* 2150 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161259 /* 2160 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161260 /* 2170 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161261 /* 2180 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161262 /* 2190 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
161263 /* 2200 */ 318, 318, 318, 318, 318, 318,
161264 };
161265 #define YY_SHIFT_COUNT (571)
 
 
 
 
 
161266 #define YY_SHIFT_MIN (0)
161267 #define YY_SHIFT_MAX (2020)
161268 static const unsigned short int yy_shift_ofst[] = {
161269 /* 0 */ 1554, 1355, 1740, 1192, 1192, 552, 1264, 1356, 1463, 1587,
161270 /* 10 */ 1587, 1587, 276, 0, 0, 180, 1015, 1587, 1587, 1587,
161271 /* 20 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
161272 /* 30 */ 1049, 1049, 1121, 1121, 54, 667, 552, 552, 552, 552,
161273 /* 40 */ 552, 40, 110, 219, 289, 396, 439, 509, 548, 618,
161274 /* 50 */ 657, 727, 766, 836, 995, 1015, 1015, 1015, 1015, 1015,
161275 /* 60 */ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
161276 /* 70 */ 1015, 1015, 1015, 1035, 1015, 1138, 880, 880, 1568, 1587,
161277 /* 80 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
161278 /* 90 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
161279 /* 100 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
161280 /* 110 */ 1587, 1587, 1587, 1676, 1587, 1587, 1587, 1587, 1587, 1587,
161281 /* 120 */ 1587, 1587, 1587, 1587, 1587, 1587, 1587, 146, 84, 84,
161282 /* 130 */ 84, 84, 84, 277, 315, 401, 97, 461, 251, 531,
161283 /* 140 */ 531, 51, 1190, 531, 531, 324, 324, 531, 713, 713,
161284 /* 150 */ 713, 713, 151, 154, 154, 4, 149, 2022, 2022, 621,
161285 /* 160 */ 621, 621, 567, 398, 398, 398, 398, 937, 937, 228,
161286 /* 170 */ 251, 159, 331, 531, 531, 531, 531, 531, 531, 531,
161287 /* 180 */ 531, 531, 531, 531, 531, 531, 531, 531, 531, 531,
161288 /* 190 */ 531, 531, 531, 819, 819, 531, 9, 25, 25, 1102,
161289 /* 200 */ 1102, 911, 1032, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
161290 /* 210 */ 255, 317, 317, 514, 403, 620, 471, 672, 781, 891,
161291 /* 220 */ 675, 531, 531, 531, 531, 531, 531, 531, 531, 531,
161292 /* 230 */ 531, 454, 531, 531, 531, 531, 531, 531, 531, 531,
161293 /* 240 */ 531, 531, 531, 531, 790, 790, 790, 531, 531, 531,
161294 /* 250 */ 338, 531, 531, 531, 516, 930, 531, 531, 993, 531,
161295 /* 260 */ 531, 531, 531, 531, 531, 531, 531, 778, 944, 725,
161296 /* 270 */ 994, 994, 994, 994, 1090, 725, 725, 1040, 1006, 951,
161297 /* 280 */ 1219, 962, 1176, 98, 1278, 1176, 1278, 1317, 1241, 962,
161298 /* 290 */ 962, 1241, 962, 98, 1317, 286, 1111, 1048, 1288, 1288,
161299 /* 300 */ 1288, 1278, 1260, 1260, 1180, 1318, 1187, 1372, 1668, 1668,
161300 /* 310 */ 1591, 1591, 1696, 1696, 1591, 1594, 1589, 1724, 1706, 1741,
161301 /* 320 */ 1741, 1741, 1741, 1591, 1745, 1620, 1589, 1589, 1620, 1724,
161302 /* 330 */ 1706, 1620, 1706, 1620, 1591, 1745, 1629, 1726, 1591, 1745,
161303 /* 340 */ 1775, 1591, 1745, 1591, 1745, 1775, 1690, 1690, 1690, 1742,
161304 /* 350 */ 1786, 1786, 1775, 1690, 1684, 1690, 1742, 1690, 1690, 1647,
161305 /* 360 */ 1793, 1713, 1713, 1775, 1694, 1725, 1694, 1725, 1694, 1725,
161306 /* 370 */ 1694, 1725, 1591, 1750, 1750, 1762, 1762, 1698, 1702, 1826,
161307 /* 380 */ 1591, 1695, 1698, 1708, 1710, 1620, 1831, 1845, 1845, 1855,
161308 /* 390 */ 1855, 1855, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
161309 /* 400 */ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 578, 837, 655,
161310 /* 410 */ 1193, 167, 839, 1055, 1374, 1303, 1107, 1367, 1212, 1272,
161311 /* 420 */ 1378, 1384, 1415, 1461, 1472, 1508, 1516, 1517, 1411, 1369,
161312 /* 430 */ 1539, 1360, 1506, 1473, 1550, 1585, 1509, 1588, 1460, 1468,
161313 /* 440 */ 1608, 1611, 1526, 1417, 1892, 1894, 1876, 1737, 1887, 1888,
161314 /* 450 */ 1880, 1882, 1768, 1757, 1779, 1884, 1884, 1886, 1770, 1893,
161315 /* 460 */ 1769, 1898, 1914, 1776, 1787, 1884, 1789, 1858, 1883, 1884,
161316 /* 470 */ 1771, 1869, 1870, 1871, 1872, 1797, 1812, 1895, 1788, 1929,
161317 /* 480 */ 1926, 1910, 1819, 1774, 1867, 1911, 1873, 1862, 1897, 1799,
161318 /* 490 */ 1828, 1916, 1923, 1925, 1815, 1822, 1927, 1881, 1928, 1930,
161319 /* 500 */ 1924, 1931, 1889, 1896, 1933, 1863, 1932, 1936, 1899, 1917,
161320 /* 510 */ 1938, 1803, 1940, 1941, 1942, 1944, 1943, 1946, 1948, 1866,
161321 /* 520 */ 1832, 1950, 1951, 1856, 1945, 1953, 1834, 1952, 1947, 1949,
161322 /* 530 */ 1954, 1955, 1890, 1905, 1900, 1956, 1907, 1891, 1957, 1962,
161323 /* 540 */ 1965, 1966, 1967, 1968, 1960, 1972, 1952, 1973, 1974, 1975,
161324 /* 550 */ 1976, 1977, 1978, 1981, 1993, 1983, 1984, 1985, 1986, 1988,
161325 /* 560 */ 1989, 1982, 1878, 1874, 1875, 1877, 1879, 1991, 1990, 2003,
161326 /* 570 */ 2019, 2020,
161327 };
161328 #define YY_REDUCE_COUNT (406)
161329 #define YY_REDUCE_MIN (-272)
161330 #define YY_REDUCE_MAX (1686)
161331 static const short yy_reduce_ofst[] = {
161332 /* 0 */ 109, 113, 272, 760, -178, -176, -192, -183, -180, -134,
161333 /* 10 */ 213, 220, 371, -208, -205, -272, -197, 611, 632, 765,
161334 /* 20 */ 786, 392, 943, 989, 503, 651, 1039, -18, 702, 821,
161335 /* 30 */ 710, 812, -188, -67, -187, 555, 662, 1020, 1023, 1050,
161336 /* 40 */ 1064, -267, -267, -267, -267, -267, -267, -267, -267, -267,
161337 /* 50 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
161338 /* 60 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
161339 /* 70 */ -267, -267, -267, -267, -267, -267, -267, -267, 811, 917,
161340 /* 80 */ 936, 938, 983, 1014, 1041, 1060, 1080, 1098, 1101, 1118,
161341 /* 90 */ 1126, 1136, 1146, 1158, 1167, 1194, 1196, 1198, 1206, 1213,
161342 /* 100 */ 1215, 1232, 1234, 1242, 1245, 1250, 1252, 1259, 1262, 1287,
161343 /* 110 */ 1289, 1299, 1302, 1304, 1308, 1314, 1321, 1329, 1334, 1336,
161344 /* 120 */ 1346, 1366, 1380, 1382, 1385, 1410, 1413, -267, -267, -267,
161345 /* 130 */ -267, -267, -267, -267, -267, 446, -267, 451, -24, 121,
161346 /* 140 */ 560, 518, 232, 609, 330, -181, -111, 654, 557, 671,
161347 /* 150 */ 557, 671, 882, -30, 93, -267, -267, -267, -267, 155,
161348 /* 160 */ 155, 155, 181, 242, 305, 339, 561, -218, 453, 227,
161349 /* 170 */ 158, 661, 661, -171, 114, 327, 653, -166, 275, 605,
161350 /* 180 */ 615, 337, 833, 665, 939, 957, 825, 958, 985, 501,
161351 /* 190 */ 986, 378, 1068, 384, 643, 393, 741, 660, 888, 762,
161352 /* 200 */ 822, 229, 988, 926, 504, 1025, 1027, 1034, 1026, 1079,
161353 /* 210 */ -204, -174, -151, 18, 130, 198, 226, 376, 391, 442,
161354 /* 220 */ 457, 493, 607, 715, 779, 782, 840, 865, 1072, 1099,
161355 /* 230 */ 1114, 1085, 1166, 1216, 1251, 1263, 1306, 1309, 1343, 1351,
161356 /* 240 */ 1362, 1368, 1399, 1407, 1227, 1239, 1396, 1438, 1445, 1446,
161357 /* 250 */ 1383, 1449, 1451, 1452, 1391, 1330, 1456, 1457, 1416, 1458,
161358 /* 260 */ 226, 1462, 1464, 1465, 1467, 1469, 1470, 1373, 1377, 1412,
161359 /* 270 */ 1401, 1418, 1419, 1423, 1383, 1412, 1412, 1422, 1453, 1475,
161360 /* 280 */ 1371, 1400, 1403, 1427, 1420, 1414, 1421, 1390, 1444, 1429,
161361 /* 290 */ 1431, 1466, 1435, 1474, 1398, 1478, 1480, 1482, 1491, 1492,
161362 /* 300 */ 1495, 1459, 1471, 1477, 1437, 1483, 1484, 1519, 1433, 1434,
161363 /* 310 */ 1533, 1534, 1443, 1455, 1538, 1476, 1485, 1486, 1527, 1525,
161364 /* 320 */ 1528, 1529, 1530, 1563, 1569, 1524, 1500, 1502, 1532, 1505,
161365 /* 330 */ 1542, 1536, 1545, 1540, 1580, 1586, 1498, 1507, 1595, 1592,
161366 /* 340 */ 1578, 1600, 1602, 1603, 1605, 1581, 1590, 1596, 1597, 1579,
161367 /* 350 */ 1593, 1599, 1604, 1598, 1601, 1606, 1607, 1609, 1610, 1501,
161368 /* 360 */ 1515, 1553, 1555, 1615, 1582, 1584, 1613, 1612, 1614, 1616,
161369 /* 370 */ 1619, 1617, 1641, 1531, 1535, 1618, 1621, 1631, 1622, 1573,
161370 /* 380 */ 1651, 1575, 1632, 1636, 1623, 1639, 1656, 1666, 1667, 1671,
161371 /* 390 */ 1672, 1673, 1564, 1565, 1566, 1662, 1674, 1675, 1677, 1678,
161372 /* 400 */ 1682, 1670, 1679, 1680, 1681, 1683, 1686,
161373 };
161374 static const YYACTIONTYPE yy_default[] = {
161375 /* 0 */ 1633, 1633, 1633, 1462, 1230, 1341, 1230, 1230, 1230, 1462,
161376 /* 10 */ 1462, 1462, 1230, 1371, 1371, 1515, 1263, 1230, 1230, 1230,
161377 /* 20 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1461, 1230, 1230,
161378 /* 30 */ 1230, 1230, 1550, 1550, 1230, 1230, 1230, 1230, 1230, 1230,
161379 /* 40 */ 1230, 1230, 1380, 1230, 1387, 1230, 1230, 1230, 1230, 1230,
161380 /* 50 */ 1463, 1464, 1230, 1230, 1230, 1514, 1516, 1479, 1394, 1393,
161381 /* 60 */ 1392, 1391, 1497, 1358, 1385, 1378, 1382, 1457, 1458, 1456,
161382 /* 70 */ 1460, 1464, 1463, 1230, 1381, 1428, 1442, 1427, 1230, 1230,
161383 /* 80 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161384 /* 90 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161385 /* 100 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161386 /* 110 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161387 /* 120 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1436, 1441, 1447,
161388 /* 130 */ 1440, 1437, 1430, 1429, 1431, 1230, 1432, 1230, 1254, 1230,
161389 /* 140 */ 1230, 1251, 1305, 1230, 1230, 1230, 1230, 1230, 1534, 1533,
161390 /* 150 */ 1230, 1230, 1263, 1422, 1421, 1433, 1434, 1444, 1443, 1522,
161391 /* 160 */ 1586, 1585, 1480, 1230, 1230, 1230, 1230, 1230, 1230, 1550,
161392 /* 170 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161393 /* 180 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161394 /* 190 */ 1230, 1230, 1230, 1550, 1550, 1230, 1263, 1550, 1550, 1259,
161395 /* 200 */ 1259, 1365, 1230, 1529, 1332, 1332, 1332, 1332, 1341, 1332,
161396 /* 210 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161397 /* 220 */ 1230, 1230, 1230, 1230, 1230, 1519, 1517, 1230, 1230, 1230,
161398 /* 230 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161399 /* 240 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161400 /* 250 */ 1230, 1230, 1230, 1230, 1337, 1230, 1230, 1230, 1230, 1230,
161401 /* 260 */ 1230, 1230, 1230, 1230, 1230, 1230, 1579, 1230, 1492, 1319,
161402 /* 270 */ 1337, 1337, 1337, 1337, 1339, 1320, 1318, 1331, 1264, 1237,
161403 /* 280 */ 1625, 1397, 1386, 1338, 1360, 1386, 1360, 1622, 1384, 1397,
161404 /* 290 */ 1397, 1384, 1397, 1338, 1622, 1280, 1602, 1275, 1371, 1371,
161405 /* 300 */ 1371, 1360, 1365, 1365, 1459, 1338, 1331, 1230, 1625, 1625,
161406 /* 310 */ 1346, 1346, 1624, 1624, 1346, 1480, 1609, 1406, 1308, 1314,
161407 /* 320 */ 1314, 1314, 1314, 1346, 1248, 1384, 1609, 1609, 1384, 1406,
161408 /* 330 */ 1308, 1384, 1308, 1384, 1346, 1248, 1496, 1619, 1346, 1248,
161409 /* 340 */ 1470, 1346, 1248, 1346, 1248, 1470, 1306, 1306, 1306, 1295,
161410 /* 350 */ 1230, 1230, 1470, 1306, 1280, 1306, 1295, 1306, 1306, 1568,
161411 /* 360 */ 1230, 1474, 1474, 1470, 1364, 1359, 1364, 1359, 1364, 1359,
161412 /* 370 */ 1364, 1359, 1346, 1560, 1560, 1374, 1374, 1379, 1365, 1465,
161413 /* 380 */ 1346, 1230, 1379, 1377, 1375, 1384, 1298, 1582, 1582, 1578,
161414 /* 390 */ 1578, 1578, 1630, 1630, 1529, 1595, 1263, 1263, 1263, 1263,
161415 /* 400 */ 1595, 1282, 1282, 1264, 1264, 1263, 1595, 1230, 1230, 1230,
161416 /* 410 */ 1230, 1230, 1230, 1590, 1230, 1524, 1481, 1350, 1230, 1230,
161417 /* 420 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161418 /* 430 */ 1230, 1230, 1535, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161419 /* 440 */ 1230, 1230, 1230, 1411, 1230, 1233, 1526, 1230, 1230, 1230,
161420 /* 450 */ 1230, 1230, 1230, 1230, 1230, 1388, 1389, 1351, 1230, 1230,
161421 /* 460 */ 1230, 1230, 1230, 1230, 1230, 1403, 1230, 1230, 1230, 1398,
161422 /* 470 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1621, 1230,
161423 /* 480 */ 1230, 1230, 1230, 1230, 1230, 1495, 1494, 1230, 1230, 1348,
161424 /* 490 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161425 /* 500 */ 1230, 1230, 1230, 1278, 1230, 1230, 1230, 1230, 1230, 1230,
161426 /* 510 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161427 /* 520 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1376, 1230, 1230,
161428 /* 530 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161429 /* 540 */ 1230, 1230, 1565, 1366, 1230, 1230, 1612, 1230, 1230, 1230,
161430 /* 550 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
161431 /* 560 */ 1230, 1606, 1322, 1413, 1230, 1412, 1416, 1252, 1230, 1242,
161432 /* 570 */ 1230, 1230,
161433 };
161434 /********** End of lemon-generated parsing tables *****************************/
161435
161436 /* The next table maps tokens (terminal symbols) into fallback tokens.
161437 ** If a construct like the following:
@@ -161492,14 +161525,14 @@
161492 59, /* DETACH => ID */
161493 59, /* EACH => ID */
161494 59, /* FAIL => ID */
161495 0, /* OR => nothing */
161496 0, /* AND => nothing */
 
161497 59, /* MATCH => ID */
161498 59, /* LIKE_KW => ID */
161499 0, /* BETWEEN => nothing */
161500 0, /* IS => nothing */
161501 0, /* IN => nothing */
161502 0, /* ISNULL => nothing */
161503 0, /* NOTNULL => nothing */
161504 0, /* NE => nothing */
161505 0, /* EQ => nothing */
@@ -161559,10 +161592,11 @@
161559 0, /* MINUS => nothing */
161560 0, /* STAR => nothing */
161561 0, /* SLASH => nothing */
161562 0, /* REM => nothing */
161563 0, /* CONCAT => nothing */
 
161564 0, /* COLLATE => nothing */
161565 0, /* BITNOT => nothing */
161566 0, /* ON => nothing */
161567 0, /* INDEXED => nothing */
161568 0, /* STRING => nothing */
@@ -161764,14 +161798,14 @@
161764 /* 40 */ "DETACH",
161765 /* 41 */ "EACH",
161766 /* 42 */ "FAIL",
161767 /* 43 */ "OR",
161768 /* 44 */ "AND",
161769 /* 45 */ "MATCH",
161770 /* 46 */ "LIKE_KW",
161771 /* 47 */ "BETWEEN",
161772 /* 48 */ "IS",
161773 /* 49 */ "IN",
161774 /* 50 */ "ISNULL",
161775 /* 51 */ "NOTNULL",
161776 /* 52 */ "NE",
161777 /* 53 */ "EQ",
@@ -161831,216 +161865,217 @@
161831 /* 107 */ "MINUS",
161832 /* 108 */ "STAR",
161833 /* 109 */ "SLASH",
161834 /* 110 */ "REM",
161835 /* 111 */ "CONCAT",
161836 /* 112 */ "COLLATE",
161837 /* 113 */ "BITNOT",
161838 /* 114 */ "ON",
161839 /* 115 */ "INDEXED",
161840 /* 116 */ "STRING",
161841 /* 117 */ "JOIN_KW",
161842 /* 118 */ "CONSTRAINT",
161843 /* 119 */ "DEFAULT",
161844 /* 120 */ "NULL",
161845 /* 121 */ "PRIMARY",
161846 /* 122 */ "UNIQUE",
161847 /* 123 */ "CHECK",
161848 /* 124 */ "REFERENCES",
161849 /* 125 */ "AUTOINCR",
161850 /* 126 */ "INSERT",
161851 /* 127 */ "DELETE",
161852 /* 128 */ "UPDATE",
161853 /* 129 */ "SET",
161854 /* 130 */ "DEFERRABLE",
161855 /* 131 */ "FOREIGN",
161856 /* 132 */ "DROP",
161857 /* 133 */ "UNION",
161858 /* 134 */ "ALL",
161859 /* 135 */ "EXCEPT",
161860 /* 136 */ "INTERSECT",
161861 /* 137 */ "SELECT",
161862 /* 138 */ "VALUES",
161863 /* 139 */ "DISTINCT",
161864 /* 140 */ "DOT",
161865 /* 141 */ "FROM",
161866 /* 142 */ "JOIN",
161867 /* 143 */ "USING",
161868 /* 144 */ "ORDER",
161869 /* 145 */ "GROUP",
161870 /* 146 */ "HAVING",
161871 /* 147 */ "LIMIT",
161872 /* 148 */ "WHERE",
161873 /* 149 */ "RETURNING",
161874 /* 150 */ "INTO",
161875 /* 151 */ "NOTHING",
161876 /* 152 */ "FLOAT",
161877 /* 153 */ "BLOB",
161878 /* 154 */ "INTEGER",
161879 /* 155 */ "VARIABLE",
161880 /* 156 */ "CASE",
161881 /* 157 */ "WHEN",
161882 /* 158 */ "THEN",
161883 /* 159 */ "ELSE",
161884 /* 160 */ "INDEX",
161885 /* 161 */ "ALTER",
161886 /* 162 */ "ADD",
161887 /* 163 */ "WINDOW",
161888 /* 164 */ "OVER",
161889 /* 165 */ "FILTER",
161890 /* 166 */ "COLUMN",
161891 /* 167 */ "AGG_FUNCTION",
161892 /* 168 */ "AGG_COLUMN",
161893 /* 169 */ "TRUEFALSE",
161894 /* 170 */ "ISNOT",
161895 /* 171 */ "FUNCTION",
161896 /* 172 */ "UMINUS",
161897 /* 173 */ "UPLUS",
161898 /* 174 */ "TRUTH",
161899 /* 175 */ "REGISTER",
161900 /* 176 */ "VECTOR",
161901 /* 177 */ "SELECT_COLUMN",
161902 /* 178 */ "IF_NULL_ROW",
161903 /* 179 */ "ASTERISK",
161904 /* 180 */ "SPAN",
161905 /* 181 */ "ERROR",
161906 /* 182 */ "SPACE",
161907 /* 183 */ "ILLEGAL",
161908 /* 184 */ "input",
161909 /* 185 */ "cmdlist",
161910 /* 186 */ "ecmd",
161911 /* 187 */ "cmdx",
161912 /* 188 */ "explain",
161913 /* 189 */ "cmd",
161914 /* 190 */ "transtype",
161915 /* 191 */ "trans_opt",
161916 /* 192 */ "nm",
161917 /* 193 */ "savepoint_opt",
161918 /* 194 */ "create_table",
161919 /* 195 */ "create_table_args",
161920 /* 196 */ "createkw",
161921 /* 197 */ "temp",
161922 /* 198 */ "ifnotexists",
161923 /* 199 */ "dbnm",
161924 /* 200 */ "columnlist",
161925 /* 201 */ "conslist_opt",
161926 /* 202 */ "table_option_set",
161927 /* 203 */ "select",
161928 /* 204 */ "table_option",
161929 /* 205 */ "columnname",
161930 /* 206 */ "carglist",
161931 /* 207 */ "typetoken",
161932 /* 208 */ "typename",
161933 /* 209 */ "signed",
161934 /* 210 */ "plus_num",
161935 /* 211 */ "minus_num",
161936 /* 212 */ "scanpt",
161937 /* 213 */ "scantok",
161938 /* 214 */ "ccons",
161939 /* 215 */ "term",
161940 /* 216 */ "expr",
161941 /* 217 */ "onconf",
161942 /* 218 */ "sortorder",
161943 /* 219 */ "autoinc",
161944 /* 220 */ "eidlist_opt",
161945 /* 221 */ "refargs",
161946 /* 222 */ "defer_subclause",
161947 /* 223 */ "generated",
161948 /* 224 */ "refarg",
161949 /* 225 */ "refact",
161950 /* 226 */ "init_deferred_pred_opt",
161951 /* 227 */ "conslist",
161952 /* 228 */ "tconscomma",
161953 /* 229 */ "tcons",
161954 /* 230 */ "sortlist",
161955 /* 231 */ "eidlist",
161956 /* 232 */ "defer_subclause_opt",
161957 /* 233 */ "orconf",
161958 /* 234 */ "resolvetype",
161959 /* 235 */ "raisetype",
161960 /* 236 */ "ifexists",
161961 /* 237 */ "fullname",
161962 /* 238 */ "selectnowith",
161963 /* 239 */ "oneselect",
161964 /* 240 */ "wqlist",
161965 /* 241 */ "multiselect_op",
161966 /* 242 */ "distinct",
161967 /* 243 */ "selcollist",
161968 /* 244 */ "from",
161969 /* 245 */ "where_opt",
161970 /* 246 */ "groupby_opt",
161971 /* 247 */ "having_opt",
161972 /* 248 */ "orderby_opt",
161973 /* 249 */ "limit_opt",
161974 /* 250 */ "window_clause",
161975 /* 251 */ "values",
161976 /* 252 */ "nexprlist",
161977 /* 253 */ "sclp",
161978 /* 254 */ "as",
161979 /* 255 */ "seltablist",
161980 /* 256 */ "stl_prefix",
161981 /* 257 */ "joinop",
161982 /* 258 */ "indexed_opt",
161983 /* 259 */ "on_opt",
161984 /* 260 */ "using_opt",
161985 /* 261 */ "exprlist",
161986 /* 262 */ "xfullname",
161987 /* 263 */ "idlist",
161988 /* 264 */ "nulls",
161989 /* 265 */ "with",
161990 /* 266 */ "where_opt_ret",
161991 /* 267 */ "setlist",
161992 /* 268 */ "insert_cmd",
161993 /* 269 */ "idlist_opt",
161994 /* 270 */ "upsert",
161995 /* 271 */ "returning",
161996 /* 272 */ "filter_over",
161997 /* 273 */ "likeop",
161998 /* 274 */ "between_op",
161999 /* 275 */ "in_op",
162000 /* 276 */ "paren_exprlist",
162001 /* 277 */ "case_operand",
162002 /* 278 */ "case_exprlist",
162003 /* 279 */ "case_else",
162004 /* 280 */ "uniqueflag",
162005 /* 281 */ "collate",
162006 /* 282 */ "vinto",
162007 /* 283 */ "nmnum",
162008 /* 284 */ "trigger_decl",
162009 /* 285 */ "trigger_cmd_list",
162010 /* 286 */ "trigger_time",
162011 /* 287 */ "trigger_event",
162012 /* 288 */ "foreach_clause",
162013 /* 289 */ "when_clause",
162014 /* 290 */ "trigger_cmd",
162015 /* 291 */ "trnm",
162016 /* 292 */ "tridxby",
162017 /* 293 */ "database_kw_opt",
162018 /* 294 */ "key_opt",
162019 /* 295 */ "add_column_fullname",
162020 /* 296 */ "kwcolumn_opt",
162021 /* 297 */ "create_vtab",
162022 /* 298 */ "vtabarglist",
162023 /* 299 */ "vtabarg",
162024 /* 300 */ "vtabargtoken",
162025 /* 301 */ "lp",
162026 /* 302 */ "anylist",
162027 /* 303 */ "wqitem",
162028 /* 304 */ "wqas",
162029 /* 305 */ "windowdefn_list",
162030 /* 306 */ "windowdefn",
162031 /* 307 */ "window",
162032 /* 308 */ "frame_opt",
162033 /* 309 */ "part_opt",
162034 /* 310 */ "filter_clause",
162035 /* 311 */ "over_clause",
162036 /* 312 */ "range_or_rows",
162037 /* 313 */ "frame_bound",
162038 /* 314 */ "frame_bound_s",
162039 /* 315 */ "frame_bound_e",
162040 /* 316 */ "frame_exclude_opt",
162041 /* 317 */ "frame_exclude",
 
162042 };
162043 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
162044
162045 #ifndef NDEBUG
162046 /* For tracing reduce actions, the names of all rules are required.
@@ -162256,199 +162291,200 @@
162256 /* 207 */ "expr ::= expr IS expr",
162257 /* 208 */ "expr ::= expr IS NOT expr",
162258 /* 209 */ "expr ::= NOT expr",
162259 /* 210 */ "expr ::= BITNOT expr",
162260 /* 211 */ "expr ::= PLUS|MINUS expr",
162261 /* 212 */ "between_op ::= BETWEEN",
162262 /* 213 */ "between_op ::= NOT BETWEEN",
162263 /* 214 */ "expr ::= expr between_op expr AND expr",
162264 /* 215 */ "in_op ::= IN",
162265 /* 216 */ "in_op ::= NOT IN",
162266 /* 217 */ "expr ::= expr in_op LP exprlist RP",
162267 /* 218 */ "expr ::= LP select RP",
162268 /* 219 */ "expr ::= expr in_op LP select RP",
162269 /* 220 */ "expr ::= expr in_op nm dbnm paren_exprlist",
162270 /* 221 */ "expr ::= EXISTS LP select RP",
162271 /* 222 */ "expr ::= CASE case_operand case_exprlist case_else END",
162272 /* 223 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
162273 /* 224 */ "case_exprlist ::= WHEN expr THEN expr",
162274 /* 225 */ "case_else ::= ELSE expr",
162275 /* 226 */ "case_else ::=",
162276 /* 227 */ "case_operand ::= expr",
162277 /* 228 */ "case_operand ::=",
162278 /* 229 */ "exprlist ::=",
162279 /* 230 */ "nexprlist ::= nexprlist COMMA expr",
162280 /* 231 */ "nexprlist ::= expr",
162281 /* 232 */ "paren_exprlist ::=",
162282 /* 233 */ "paren_exprlist ::= LP exprlist RP",
162283 /* 234 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
162284 /* 235 */ "uniqueflag ::= UNIQUE",
162285 /* 236 */ "uniqueflag ::=",
162286 /* 237 */ "eidlist_opt ::=",
162287 /* 238 */ "eidlist_opt ::= LP eidlist RP",
162288 /* 239 */ "eidlist ::= eidlist COMMA nm collate sortorder",
162289 /* 240 */ "eidlist ::= nm collate sortorder",
162290 /* 241 */ "collate ::=",
162291 /* 242 */ "collate ::= COLLATE ID|STRING",
162292 /* 243 */ "cmd ::= DROP INDEX ifexists fullname",
162293 /* 244 */ "cmd ::= VACUUM vinto",
162294 /* 245 */ "cmd ::= VACUUM nm vinto",
162295 /* 246 */ "vinto ::= INTO expr",
162296 /* 247 */ "vinto ::=",
162297 /* 248 */ "cmd ::= PRAGMA nm dbnm",
162298 /* 249 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
162299 /* 250 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
162300 /* 251 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
162301 /* 252 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
162302 /* 253 */ "plus_num ::= PLUS INTEGER|FLOAT",
162303 /* 254 */ "minus_num ::= MINUS INTEGER|FLOAT",
162304 /* 255 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
162305 /* 256 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
162306 /* 257 */ "trigger_time ::= BEFORE|AFTER",
162307 /* 258 */ "trigger_time ::= INSTEAD OF",
162308 /* 259 */ "trigger_time ::=",
162309 /* 260 */ "trigger_event ::= DELETE|INSERT",
162310 /* 261 */ "trigger_event ::= UPDATE",
162311 /* 262 */ "trigger_event ::= UPDATE OF idlist",
162312 /* 263 */ "when_clause ::=",
162313 /* 264 */ "when_clause ::= WHEN expr",
162314 /* 265 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
162315 /* 266 */ "trigger_cmd_list ::= trigger_cmd SEMI",
162316 /* 267 */ "trnm ::= nm DOT nm",
162317 /* 268 */ "tridxby ::= INDEXED BY nm",
162318 /* 269 */ "tridxby ::= NOT INDEXED",
162319 /* 270 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
162320 /* 271 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
162321 /* 272 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
162322 /* 273 */ "trigger_cmd ::= scanpt select scanpt",
162323 /* 274 */ "expr ::= RAISE LP IGNORE RP",
162324 /* 275 */ "expr ::= RAISE LP raisetype COMMA nm RP",
162325 /* 276 */ "raisetype ::= ROLLBACK",
162326 /* 277 */ "raisetype ::= ABORT",
162327 /* 278 */ "raisetype ::= FAIL",
162328 /* 279 */ "cmd ::= DROP TRIGGER ifexists fullname",
162329 /* 280 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
162330 /* 281 */ "cmd ::= DETACH database_kw_opt expr",
162331 /* 282 */ "key_opt ::=",
162332 /* 283 */ "key_opt ::= KEY expr",
162333 /* 284 */ "cmd ::= REINDEX",
162334 /* 285 */ "cmd ::= REINDEX nm dbnm",
162335 /* 286 */ "cmd ::= ANALYZE",
162336 /* 287 */ "cmd ::= ANALYZE nm dbnm",
162337 /* 288 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
162338 /* 289 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
162339 /* 290 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
162340 /* 291 */ "add_column_fullname ::= fullname",
162341 /* 292 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
162342 /* 293 */ "cmd ::= create_vtab",
162343 /* 294 */ "cmd ::= create_vtab LP vtabarglist RP",
162344 /* 295 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
162345 /* 296 */ "vtabarg ::=",
162346 /* 297 */ "vtabargtoken ::= ANY",
162347 /* 298 */ "vtabargtoken ::= lp anylist RP",
162348 /* 299 */ "lp ::= LP",
162349 /* 300 */ "with ::= WITH wqlist",
162350 /* 301 */ "with ::= WITH RECURSIVE wqlist",
162351 /* 302 */ "wqas ::= AS",
162352 /* 303 */ "wqas ::= AS MATERIALIZED",
162353 /* 304 */ "wqas ::= AS NOT MATERIALIZED",
162354 /* 305 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
162355 /* 306 */ "wqlist ::= wqitem",
162356 /* 307 */ "wqlist ::= wqlist COMMA wqitem",
162357 /* 308 */ "windowdefn_list ::= windowdefn",
162358 /* 309 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
162359 /* 310 */ "windowdefn ::= nm AS LP window RP",
162360 /* 311 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
162361 /* 312 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
162362 /* 313 */ "window ::= ORDER BY sortlist frame_opt",
162363 /* 314 */ "window ::= nm ORDER BY sortlist frame_opt",
162364 /* 315 */ "window ::= frame_opt",
162365 /* 316 */ "window ::= nm frame_opt",
162366 /* 317 */ "frame_opt ::=",
162367 /* 318 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
162368 /* 319 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
162369 /* 320 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
162370 /* 321 */ "frame_bound_s ::= frame_bound",
162371 /* 322 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
162372 /* 323 */ "frame_bound_e ::= frame_bound",
162373 /* 324 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
162374 /* 325 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
162375 /* 326 */ "frame_bound ::= CURRENT ROW",
162376 /* 327 */ "frame_exclude_opt ::=",
162377 /* 328 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
162378 /* 329 */ "frame_exclude ::= NO OTHERS",
162379 /* 330 */ "frame_exclude ::= CURRENT ROW",
162380 /* 331 */ "frame_exclude ::= GROUP|TIES",
162381 /* 332 */ "window_clause ::= WINDOW windowdefn_list",
162382 /* 333 */ "filter_over ::= filter_clause over_clause",
162383 /* 334 */ "filter_over ::= over_clause",
162384 /* 335 */ "filter_over ::= filter_clause",
162385 /* 336 */ "over_clause ::= OVER LP window RP",
162386 /* 337 */ "over_clause ::= OVER nm",
162387 /* 338 */ "filter_clause ::= FILTER LP WHERE expr RP",
162388 /* 339 */ "input ::= cmdlist",
162389 /* 340 */ "cmdlist ::= cmdlist ecmd",
162390 /* 341 */ "cmdlist ::= ecmd",
162391 /* 342 */ "ecmd ::= SEMI",
162392 /* 343 */ "ecmd ::= cmdx SEMI",
162393 /* 344 */ "ecmd ::= explain cmdx SEMI",
162394 /* 345 */ "trans_opt ::=",
162395 /* 346 */ "trans_opt ::= TRANSACTION",
162396 /* 347 */ "trans_opt ::= TRANSACTION nm",
162397 /* 348 */ "savepoint_opt ::= SAVEPOINT",
162398 /* 349 */ "savepoint_opt ::=",
162399 /* 350 */ "cmd ::= create_table create_table_args",
162400 /* 351 */ "table_option_set ::= table_option",
162401 /* 352 */ "columnlist ::= columnlist COMMA columnname carglist",
162402 /* 353 */ "columnlist ::= columnname carglist",
162403 /* 354 */ "nm ::= ID|INDEXED",
162404 /* 355 */ "nm ::= STRING",
162405 /* 356 */ "nm ::= JOIN_KW",
162406 /* 357 */ "typetoken ::= typename",
162407 /* 358 */ "typename ::= ID|STRING",
162408 /* 359 */ "signed ::= plus_num",
162409 /* 360 */ "signed ::= minus_num",
162410 /* 361 */ "carglist ::= carglist ccons",
162411 /* 362 */ "carglist ::=",
162412 /* 363 */ "ccons ::= NULL onconf",
162413 /* 364 */ "ccons ::= GENERATED ALWAYS AS generated",
162414 /* 365 */ "ccons ::= AS generated",
162415 /* 366 */ "conslist_opt ::= COMMA conslist",
162416 /* 367 */ "conslist ::= conslist tconscomma tcons",
162417 /* 368 */ "conslist ::= tcons",
162418 /* 369 */ "tconscomma ::=",
162419 /* 370 */ "defer_subclause_opt ::= defer_subclause",
162420 /* 371 */ "resolvetype ::= raisetype",
162421 /* 372 */ "selectnowith ::= oneselect",
162422 /* 373 */ "oneselect ::= values",
162423 /* 374 */ "sclp ::= selcollist COMMA",
162424 /* 375 */ "as ::= ID|STRING",
162425 /* 376 */ "returning ::=",
162426 /* 377 */ "expr ::= term",
162427 /* 378 */ "likeop ::= LIKE_KW|MATCH",
162428 /* 379 */ "exprlist ::= nexprlist",
162429 /* 380 */ "nmnum ::= plus_num",
162430 /* 381 */ "nmnum ::= nm",
162431 /* 382 */ "nmnum ::= ON",
162432 /* 383 */ "nmnum ::= DELETE",
162433 /* 384 */ "nmnum ::= DEFAULT",
162434 /* 385 */ "plus_num ::= INTEGER|FLOAT",
162435 /* 386 */ "foreach_clause ::=",
162436 /* 387 */ "foreach_clause ::= FOR EACH ROW",
162437 /* 388 */ "trnm ::= nm",
162438 /* 389 */ "tridxby ::=",
162439 /* 390 */ "database_kw_opt ::= DATABASE",
162440 /* 391 */ "database_kw_opt ::=",
162441 /* 392 */ "kwcolumn_opt ::=",
162442 /* 393 */ "kwcolumn_opt ::= COLUMNKW",
162443 /* 394 */ "vtabarglist ::= vtabarg",
162444 /* 395 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
162445 /* 396 */ "vtabarg ::= vtabarg vtabargtoken",
162446 /* 397 */ "anylist ::=",
162447 /* 398 */ "anylist ::= anylist LP anylist RP",
162448 /* 399 */ "anylist ::= anylist ANY",
162449 /* 400 */ "with ::=",
 
162450 };
162451 #endif /* NDEBUG */
162452
162453
162454 #if YYSTACKDEPTH<=0
@@ -162570,103 +162606,103 @@
162570 ** Note: during a reduce, the only symbols destroyed are those
162571 ** which appear on the RHS of the rule, but which are *not* used
162572 ** inside the C code.
162573 */
162574 /********* Begin destructor definitions ***************************************/
162575 case 203: /* select */
162576 case 238: /* selectnowith */
162577 case 239: /* oneselect */
162578 case 251: /* values */
162579 {
162580 sqlite3SelectDelete(pParse->db, (yypminor->yy303));
162581 }
162582 break;
162583 case 215: /* term */
162584 case 216: /* expr */
162585 case 245: /* where_opt */
162586 case 247: /* having_opt */
162587 case 259: /* on_opt */
162588 case 266: /* where_opt_ret */
162589 case 277: /* case_operand */
162590 case 279: /* case_else */
162591 case 282: /* vinto */
162592 case 289: /* when_clause */
162593 case 294: /* key_opt */
162594 case 310: /* filter_clause */
162595 {
162596 sqlite3ExprDelete(pParse->db, (yypminor->yy626));
162597 }
162598 break;
162599 case 220: /* eidlist_opt */
162600 case 230: /* sortlist */
162601 case 231: /* eidlist */
162602 case 243: /* selcollist */
162603 case 246: /* groupby_opt */
162604 case 248: /* orderby_opt */
162605 case 252: /* nexprlist */
162606 case 253: /* sclp */
162607 case 261: /* exprlist */
162608 case 267: /* setlist */
162609 case 276: /* paren_exprlist */
162610 case 278: /* case_exprlist */
162611 case 309: /* part_opt */
162612 {
162613 sqlite3ExprListDelete(pParse->db, (yypminor->yy562));
162614 }
162615 break;
162616 case 237: /* fullname */
162617 case 244: /* from */
162618 case 255: /* seltablist */
162619 case 256: /* stl_prefix */
162620 case 262: /* xfullname */
162621 {
162622 sqlite3SrcListDelete(pParse->db, (yypminor->yy607));
162623 }
162624 break;
162625 case 240: /* wqlist */
162626 {
162627 sqlite3WithDelete(pParse->db, (yypminor->yy43));
162628 }
162629 break;
162630 case 250: /* window_clause */
162631 case 305: /* windowdefn_list */
162632 {
162633 sqlite3WindowListDelete(pParse->db, (yypminor->yy375));
162634 }
162635 break;
162636 case 260: /* using_opt */
162637 case 263: /* idlist */
162638 case 269: /* idlist_opt */
162639 {
162640 sqlite3IdListDelete(pParse->db, (yypminor->yy240));
162641 }
162642 break;
162643 case 272: /* filter_over */
162644 case 306: /* windowdefn */
162645 case 307: /* window */
162646 case 308: /* frame_opt */
162647 case 311: /* over_clause */
162648 {
162649 sqlite3WindowDelete(pParse->db, (yypminor->yy375));
162650 }
162651 break;
162652 case 285: /* trigger_cmd_list */
162653 case 290: /* trigger_cmd */
162654 {
162655 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy95));
162656 }
162657 break;
162658 case 287: /* trigger_event */
162659 {
162660 sqlite3IdListDelete(pParse->db, (yypminor->yy570).b);
162661 }
162662 break;
162663 case 313: /* frame_bound */
162664 case 314: /* frame_bound_s */
162665 case 315: /* frame_bound_e */
162666 {
162667 sqlite3ExprDelete(pParse->db, (yypminor->yy81).pExpr);
162668 }
162669 break;
162670 /********* End destructor definitions *****************************************/
162671 default: break; /* If no destructor action specified: do nothing */
162672 }
@@ -162953,411 +162989,412 @@
162953 }
162954
162955 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
162956 ** of that rule */
162957 static const YYCODETYPE yyRuleInfoLhs[] = {
162958 188, /* (0) explain ::= EXPLAIN */
162959 188, /* (1) explain ::= EXPLAIN QUERY PLAN */
162960 187, /* (2) cmdx ::= cmd */
162961 189, /* (3) cmd ::= BEGIN transtype trans_opt */
162962 190, /* (4) transtype ::= */
162963 190, /* (5) transtype ::= DEFERRED */
162964 190, /* (6) transtype ::= IMMEDIATE */
162965 190, /* (7) transtype ::= EXCLUSIVE */
162966 189, /* (8) cmd ::= COMMIT|END trans_opt */
162967 189, /* (9) cmd ::= ROLLBACK trans_opt */
162968 189, /* (10) cmd ::= SAVEPOINT nm */
162969 189, /* (11) cmd ::= RELEASE savepoint_opt nm */
162970 189, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
162971 194, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
162972 196, /* (14) createkw ::= CREATE */
162973 198, /* (15) ifnotexists ::= */
162974 198, /* (16) ifnotexists ::= IF NOT EXISTS */
162975 197, /* (17) temp ::= TEMP */
162976 197, /* (18) temp ::= */
162977 195, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
162978 195, /* (20) create_table_args ::= AS select */
162979 202, /* (21) table_option_set ::= */
162980 202, /* (22) table_option_set ::= table_option_set COMMA table_option */
162981 204, /* (23) table_option ::= WITHOUT nm */
162982 204, /* (24) table_option ::= nm */
162983 205, /* (25) columnname ::= nm typetoken */
162984 207, /* (26) typetoken ::= */
162985 207, /* (27) typetoken ::= typename LP signed RP */
162986 207, /* (28) typetoken ::= typename LP signed COMMA signed RP */
162987 208, /* (29) typename ::= typename ID|STRING */
162988 212, /* (30) scanpt ::= */
162989 213, /* (31) scantok ::= */
162990 214, /* (32) ccons ::= CONSTRAINT nm */
162991 214, /* (33) ccons ::= DEFAULT scantok term */
162992 214, /* (34) ccons ::= DEFAULT LP expr RP */
162993 214, /* (35) ccons ::= DEFAULT PLUS scantok term */
162994 214, /* (36) ccons ::= DEFAULT MINUS scantok term */
162995 214, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
162996 214, /* (38) ccons ::= NOT NULL onconf */
162997 214, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
162998 214, /* (40) ccons ::= UNIQUE onconf */
162999 214, /* (41) ccons ::= CHECK LP expr RP */
163000 214, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
163001 214, /* (43) ccons ::= defer_subclause */
163002 214, /* (44) ccons ::= COLLATE ID|STRING */
163003 223, /* (45) generated ::= LP expr RP */
163004 223, /* (46) generated ::= LP expr RP ID */
163005 219, /* (47) autoinc ::= */
163006 219, /* (48) autoinc ::= AUTOINCR */
163007 221, /* (49) refargs ::= */
163008 221, /* (50) refargs ::= refargs refarg */
163009 224, /* (51) refarg ::= MATCH nm */
163010 224, /* (52) refarg ::= ON INSERT refact */
163011 224, /* (53) refarg ::= ON DELETE refact */
163012 224, /* (54) refarg ::= ON UPDATE refact */
163013 225, /* (55) refact ::= SET NULL */
163014 225, /* (56) refact ::= SET DEFAULT */
163015 225, /* (57) refact ::= CASCADE */
163016 225, /* (58) refact ::= RESTRICT */
163017 225, /* (59) refact ::= NO ACTION */
163018 222, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
163019 222, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
163020 226, /* (62) init_deferred_pred_opt ::= */
163021 226, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
163022 226, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
163023 201, /* (65) conslist_opt ::= */
163024 228, /* (66) tconscomma ::= COMMA */
163025 229, /* (67) tcons ::= CONSTRAINT nm */
163026 229, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
163027 229, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
163028 229, /* (70) tcons ::= CHECK LP expr RP onconf */
163029 229, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
163030 232, /* (72) defer_subclause_opt ::= */
163031 217, /* (73) onconf ::= */
163032 217, /* (74) onconf ::= ON CONFLICT resolvetype */
163033 233, /* (75) orconf ::= */
163034 233, /* (76) orconf ::= OR resolvetype */
163035 234, /* (77) resolvetype ::= IGNORE */
163036 234, /* (78) resolvetype ::= REPLACE */
163037 189, /* (79) cmd ::= DROP TABLE ifexists fullname */
163038 236, /* (80) ifexists ::= IF EXISTS */
163039 236, /* (81) ifexists ::= */
163040 189, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
163041 189, /* (83) cmd ::= DROP VIEW ifexists fullname */
163042 189, /* (84) cmd ::= select */
163043 203, /* (85) select ::= WITH wqlist selectnowith */
163044 203, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
163045 203, /* (87) select ::= selectnowith */
163046 238, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
163047 241, /* (89) multiselect_op ::= UNION */
163048 241, /* (90) multiselect_op ::= UNION ALL */
163049 241, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
163050 239, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
163051 239, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
163052 251, /* (94) values ::= VALUES LP nexprlist RP */
163053 251, /* (95) values ::= values COMMA LP nexprlist RP */
163054 242, /* (96) distinct ::= DISTINCT */
163055 242, /* (97) distinct ::= ALL */
163056 242, /* (98) distinct ::= */
163057 253, /* (99) sclp ::= */
163058 243, /* (100) selcollist ::= sclp scanpt expr scanpt as */
163059 243, /* (101) selcollist ::= sclp scanpt STAR */
163060 243, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
163061 254, /* (103) as ::= AS nm */
163062 254, /* (104) as ::= */
163063 244, /* (105) from ::= */
163064 244, /* (106) from ::= FROM seltablist */
163065 256, /* (107) stl_prefix ::= seltablist joinop */
163066 256, /* (108) stl_prefix ::= */
163067 255, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
163068 255, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
163069 255, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
163070 255, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
163071 199, /* (113) dbnm ::= */
163072 199, /* (114) dbnm ::= DOT nm */
163073 237, /* (115) fullname ::= nm */
163074 237, /* (116) fullname ::= nm DOT nm */
163075 262, /* (117) xfullname ::= nm */
163076 262, /* (118) xfullname ::= nm DOT nm */
163077 262, /* (119) xfullname ::= nm DOT nm AS nm */
163078 262, /* (120) xfullname ::= nm AS nm */
163079 257, /* (121) joinop ::= COMMA|JOIN */
163080 257, /* (122) joinop ::= JOIN_KW JOIN */
163081 257, /* (123) joinop ::= JOIN_KW nm JOIN */
163082 257, /* (124) joinop ::= JOIN_KW nm nm JOIN */
163083 259, /* (125) on_opt ::= ON expr */
163084 259, /* (126) on_opt ::= */
163085 258, /* (127) indexed_opt ::= */
163086 258, /* (128) indexed_opt ::= INDEXED BY nm */
163087 258, /* (129) indexed_opt ::= NOT INDEXED */
163088 260, /* (130) using_opt ::= USING LP idlist RP */
163089 260, /* (131) using_opt ::= */
163090 248, /* (132) orderby_opt ::= */
163091 248, /* (133) orderby_opt ::= ORDER BY sortlist */
163092 230, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
163093 230, /* (135) sortlist ::= expr sortorder nulls */
163094 218, /* (136) sortorder ::= ASC */
163095 218, /* (137) sortorder ::= DESC */
163096 218, /* (138) sortorder ::= */
163097 264, /* (139) nulls ::= NULLS FIRST */
163098 264, /* (140) nulls ::= NULLS LAST */
163099 264, /* (141) nulls ::= */
163100 246, /* (142) groupby_opt ::= */
163101 246, /* (143) groupby_opt ::= GROUP BY nexprlist */
163102 247, /* (144) having_opt ::= */
163103 247, /* (145) having_opt ::= HAVING expr */
163104 249, /* (146) limit_opt ::= */
163105 249, /* (147) limit_opt ::= LIMIT expr */
163106 249, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
163107 249, /* (149) limit_opt ::= LIMIT expr COMMA expr */
163108 189, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
163109 245, /* (151) where_opt ::= */
163110 245, /* (152) where_opt ::= WHERE expr */
163111 266, /* (153) where_opt_ret ::= */
163112 266, /* (154) where_opt_ret ::= WHERE expr */
163113 266, /* (155) where_opt_ret ::= RETURNING selcollist */
163114 266, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
163115 189, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
163116 267, /* (158) setlist ::= setlist COMMA nm EQ expr */
163117 267, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
163118 267, /* (160) setlist ::= nm EQ expr */
163119 267, /* (161) setlist ::= LP idlist RP EQ expr */
163120 189, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
163121 189, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
163122 270, /* (164) upsert ::= */
163123 270, /* (165) upsert ::= RETURNING selcollist */
163124 270, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
163125 270, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
163126 270, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
163127 270, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
163128 271, /* (170) returning ::= RETURNING selcollist */
163129 268, /* (171) insert_cmd ::= INSERT orconf */
163130 268, /* (172) insert_cmd ::= REPLACE */
163131 269, /* (173) idlist_opt ::= */
163132 269, /* (174) idlist_opt ::= LP idlist RP */
163133 263, /* (175) idlist ::= idlist COMMA nm */
163134 263, /* (176) idlist ::= nm */
163135 216, /* (177) expr ::= LP expr RP */
163136 216, /* (178) expr ::= ID|INDEXED */
163137 216, /* (179) expr ::= JOIN_KW */
163138 216, /* (180) expr ::= nm DOT nm */
163139 216, /* (181) expr ::= nm DOT nm DOT nm */
163140 215, /* (182) term ::= NULL|FLOAT|BLOB */
163141 215, /* (183) term ::= STRING */
163142 215, /* (184) term ::= INTEGER */
163143 216, /* (185) expr ::= VARIABLE */
163144 216, /* (186) expr ::= expr COLLATE ID|STRING */
163145 216, /* (187) expr ::= CAST LP expr AS typetoken RP */
163146 216, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
163147 216, /* (189) expr ::= ID|INDEXED LP STAR RP */
163148 216, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
163149 216, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
163150 215, /* (192) term ::= CTIME_KW */
163151 216, /* (193) expr ::= LP nexprlist COMMA expr RP */
163152 216, /* (194) expr ::= expr AND expr */
163153 216, /* (195) expr ::= expr OR expr */
163154 216, /* (196) expr ::= expr LT|GT|GE|LE expr */
163155 216, /* (197) expr ::= expr EQ|NE expr */
163156 216, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
163157 216, /* (199) expr ::= expr PLUS|MINUS expr */
163158 216, /* (200) expr ::= expr STAR|SLASH|REM expr */
163159 216, /* (201) expr ::= expr CONCAT expr */
163160 273, /* (202) likeop ::= NOT LIKE_KW|MATCH */
163161 216, /* (203) expr ::= expr likeop expr */
163162 216, /* (204) expr ::= expr likeop expr ESCAPE expr */
163163 216, /* (205) expr ::= expr ISNULL|NOTNULL */
163164 216, /* (206) expr ::= expr NOT NULL */
163165 216, /* (207) expr ::= expr IS expr */
163166 216, /* (208) expr ::= expr IS NOT expr */
163167 216, /* (209) expr ::= NOT expr */
163168 216, /* (210) expr ::= BITNOT expr */
163169 216, /* (211) expr ::= PLUS|MINUS expr */
163170 274, /* (212) between_op ::= BETWEEN */
163171 274, /* (213) between_op ::= NOT BETWEEN */
163172 216, /* (214) expr ::= expr between_op expr AND expr */
163173 275, /* (215) in_op ::= IN */
163174 275, /* (216) in_op ::= NOT IN */
163175 216, /* (217) expr ::= expr in_op LP exprlist RP */
163176 216, /* (218) expr ::= LP select RP */
163177 216, /* (219) expr ::= expr in_op LP select RP */
163178 216, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
163179 216, /* (221) expr ::= EXISTS LP select RP */
163180 216, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
163181 278, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
163182 278, /* (224) case_exprlist ::= WHEN expr THEN expr */
163183 279, /* (225) case_else ::= ELSE expr */
163184 279, /* (226) case_else ::= */
163185 277, /* (227) case_operand ::= expr */
163186 277, /* (228) case_operand ::= */
163187 261, /* (229) exprlist ::= */
163188 252, /* (230) nexprlist ::= nexprlist COMMA expr */
163189 252, /* (231) nexprlist ::= expr */
163190 276, /* (232) paren_exprlist ::= */
163191 276, /* (233) paren_exprlist ::= LP exprlist RP */
163192 189, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163193 280, /* (235) uniqueflag ::= UNIQUE */
163194 280, /* (236) uniqueflag ::= */
163195 220, /* (237) eidlist_opt ::= */
163196 220, /* (238) eidlist_opt ::= LP eidlist RP */
163197 231, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
163198 231, /* (240) eidlist ::= nm collate sortorder */
163199 281, /* (241) collate ::= */
163200 281, /* (242) collate ::= COLLATE ID|STRING */
163201 189, /* (243) cmd ::= DROP INDEX ifexists fullname */
163202 189, /* (244) cmd ::= VACUUM vinto */
163203 189, /* (245) cmd ::= VACUUM nm vinto */
163204 282, /* (246) vinto ::= INTO expr */
163205 282, /* (247) vinto ::= */
163206 189, /* (248) cmd ::= PRAGMA nm dbnm */
163207 189, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
163208 189, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
163209 189, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
163210 189, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
163211 210, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
163212 211, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
163213 189, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163214 284, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163215 286, /* (257) trigger_time ::= BEFORE|AFTER */
163216 286, /* (258) trigger_time ::= INSTEAD OF */
163217 286, /* (259) trigger_time ::= */
163218 287, /* (260) trigger_event ::= DELETE|INSERT */
163219 287, /* (261) trigger_event ::= UPDATE */
163220 287, /* (262) trigger_event ::= UPDATE OF idlist */
163221 289, /* (263) when_clause ::= */
163222 289, /* (264) when_clause ::= WHEN expr */
163223 285, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163224 285, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
163225 291, /* (267) trnm ::= nm DOT nm */
163226 292, /* (268) tridxby ::= INDEXED BY nm */
163227 292, /* (269) tridxby ::= NOT INDEXED */
163228 290, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163229 290, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163230 290, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163231 290, /* (273) trigger_cmd ::= scanpt select scanpt */
163232 216, /* (274) expr ::= RAISE LP IGNORE RP */
163233 216, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
163234 235, /* (276) raisetype ::= ROLLBACK */
163235 235, /* (277) raisetype ::= ABORT */
163236 235, /* (278) raisetype ::= FAIL */
163237 189, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
163238 189, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163239 189, /* (281) cmd ::= DETACH database_kw_opt expr */
163240 294, /* (282) key_opt ::= */
163241 294, /* (283) key_opt ::= KEY expr */
163242 189, /* (284) cmd ::= REINDEX */
163243 189, /* (285) cmd ::= REINDEX nm dbnm */
163244 189, /* (286) cmd ::= ANALYZE */
163245 189, /* (287) cmd ::= ANALYZE nm dbnm */
163246 189, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
163247 189, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163248 189, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163249 295, /* (291) add_column_fullname ::= fullname */
163250 189, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163251 189, /* (293) cmd ::= create_vtab */
163252 189, /* (294) cmd ::= create_vtab LP vtabarglist RP */
163253 297, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163254 299, /* (296) vtabarg ::= */
163255 300, /* (297) vtabargtoken ::= ANY */
163256 300, /* (298) vtabargtoken ::= lp anylist RP */
163257 301, /* (299) lp ::= LP */
163258 265, /* (300) with ::= WITH wqlist */
163259 265, /* (301) with ::= WITH RECURSIVE wqlist */
163260 304, /* (302) wqas ::= AS */
163261 304, /* (303) wqas ::= AS MATERIALIZED */
163262 304, /* (304) wqas ::= AS NOT MATERIALIZED */
163263 303, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
163264 240, /* (306) wqlist ::= wqitem */
163265 240, /* (307) wqlist ::= wqlist COMMA wqitem */
163266 305, /* (308) windowdefn_list ::= windowdefn */
163267 305, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
163268 306, /* (310) windowdefn ::= nm AS LP window RP */
163269 307, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163270 307, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163271 307, /* (313) window ::= ORDER BY sortlist frame_opt */
163272 307, /* (314) window ::= nm ORDER BY sortlist frame_opt */
163273 307, /* (315) window ::= frame_opt */
163274 307, /* (316) window ::= nm frame_opt */
163275 308, /* (317) frame_opt ::= */
163276 308, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163277 308, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163278 312, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
163279 314, /* (321) frame_bound_s ::= frame_bound */
163280 314, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
163281 315, /* (323) frame_bound_e ::= frame_bound */
163282 315, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
163283 313, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
163284 313, /* (326) frame_bound ::= CURRENT ROW */
163285 316, /* (327) frame_exclude_opt ::= */
163286 316, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
163287 317, /* (329) frame_exclude ::= NO OTHERS */
163288 317, /* (330) frame_exclude ::= CURRENT ROW */
163289 317, /* (331) frame_exclude ::= GROUP|TIES */
163290 250, /* (332) window_clause ::= WINDOW windowdefn_list */
163291 272, /* (333) filter_over ::= filter_clause over_clause */
163292 272, /* (334) filter_over ::= over_clause */
163293 272, /* (335) filter_over ::= filter_clause */
163294 311, /* (336) over_clause ::= OVER LP window RP */
163295 311, /* (337) over_clause ::= OVER nm */
163296 310, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
163297 184, /* (339) input ::= cmdlist */
163298 185, /* (340) cmdlist ::= cmdlist ecmd */
163299 185, /* (341) cmdlist ::= ecmd */
163300 186, /* (342) ecmd ::= SEMI */
163301 186, /* (343) ecmd ::= cmdx SEMI */
163302 186, /* (344) ecmd ::= explain cmdx SEMI */
163303 191, /* (345) trans_opt ::= */
163304 191, /* (346) trans_opt ::= TRANSACTION */
163305 191, /* (347) trans_opt ::= TRANSACTION nm */
163306 193, /* (348) savepoint_opt ::= SAVEPOINT */
163307 193, /* (349) savepoint_opt ::= */
163308 189, /* (350) cmd ::= create_table create_table_args */
163309 202, /* (351) table_option_set ::= table_option */
163310 200, /* (352) columnlist ::= columnlist COMMA columnname carglist */
163311 200, /* (353) columnlist ::= columnname carglist */
163312 192, /* (354) nm ::= ID|INDEXED */
163313 192, /* (355) nm ::= STRING */
163314 192, /* (356) nm ::= JOIN_KW */
163315 207, /* (357) typetoken ::= typename */
163316 208, /* (358) typename ::= ID|STRING */
163317 209, /* (359) signed ::= plus_num */
163318 209, /* (360) signed ::= minus_num */
163319 206, /* (361) carglist ::= carglist ccons */
163320 206, /* (362) carglist ::= */
163321 214, /* (363) ccons ::= NULL onconf */
163322 214, /* (364) ccons ::= GENERATED ALWAYS AS generated */
163323 214, /* (365) ccons ::= AS generated */
163324 201, /* (366) conslist_opt ::= COMMA conslist */
163325 227, /* (367) conslist ::= conslist tconscomma tcons */
163326 227, /* (368) conslist ::= tcons */
163327 228, /* (369) tconscomma ::= */
163328 232, /* (370) defer_subclause_opt ::= defer_subclause */
163329 234, /* (371) resolvetype ::= raisetype */
163330 238, /* (372) selectnowith ::= oneselect */
163331 239, /* (373) oneselect ::= values */
163332 253, /* (374) sclp ::= selcollist COMMA */
163333 254, /* (375) as ::= ID|STRING */
163334 271, /* (376) returning ::= */
163335 216, /* (377) expr ::= term */
163336 273, /* (378) likeop ::= LIKE_KW|MATCH */
163337 261, /* (379) exprlist ::= nexprlist */
163338 283, /* (380) nmnum ::= plus_num */
163339 283, /* (381) nmnum ::= nm */
163340 283, /* (382) nmnum ::= ON */
163341 283, /* (383) nmnum ::= DELETE */
163342 283, /* (384) nmnum ::= DEFAULT */
163343 210, /* (385) plus_num ::= INTEGER|FLOAT */
163344 288, /* (386) foreach_clause ::= */
163345 288, /* (387) foreach_clause ::= FOR EACH ROW */
163346 291, /* (388) trnm ::= nm */
163347 292, /* (389) tridxby ::= */
163348 293, /* (390) database_kw_opt ::= DATABASE */
163349 293, /* (391) database_kw_opt ::= */
163350 296, /* (392) kwcolumn_opt ::= */
163351 296, /* (393) kwcolumn_opt ::= COLUMNKW */
163352 298, /* (394) vtabarglist ::= vtabarg */
163353 298, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
163354 299, /* (396) vtabarg ::= vtabarg vtabargtoken */
163355 302, /* (397) anylist ::= */
163356 302, /* (398) anylist ::= anylist LP anylist RP */
163357 302, /* (399) anylist ::= anylist ANY */
163358 265, /* (400) with ::= */
 
163359 };
163360
163361 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
163362 ** of symbols on the right-hand side of that rule. */
163363 static const signed char yyRuleInfoNRhs[] = {
@@ -163571,199 +163608,200 @@
163571 -3, /* (207) expr ::= expr IS expr */
163572 -4, /* (208) expr ::= expr IS NOT expr */
163573 -2, /* (209) expr ::= NOT expr */
163574 -2, /* (210) expr ::= BITNOT expr */
163575 -2, /* (211) expr ::= PLUS|MINUS expr */
163576 -1, /* (212) between_op ::= BETWEEN */
163577 -2, /* (213) between_op ::= NOT BETWEEN */
163578 -5, /* (214) expr ::= expr between_op expr AND expr */
163579 -1, /* (215) in_op ::= IN */
163580 -2, /* (216) in_op ::= NOT IN */
163581 -5, /* (217) expr ::= expr in_op LP exprlist RP */
163582 -3, /* (218) expr ::= LP select RP */
163583 -5, /* (219) expr ::= expr in_op LP select RP */
163584 -5, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
163585 -4, /* (221) expr ::= EXISTS LP select RP */
163586 -5, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
163587 -5, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
163588 -4, /* (224) case_exprlist ::= WHEN expr THEN expr */
163589 -2, /* (225) case_else ::= ELSE expr */
163590 0, /* (226) case_else ::= */
163591 -1, /* (227) case_operand ::= expr */
163592 0, /* (228) case_operand ::= */
163593 0, /* (229) exprlist ::= */
163594 -3, /* (230) nexprlist ::= nexprlist COMMA expr */
163595 -1, /* (231) nexprlist ::= expr */
163596 0, /* (232) paren_exprlist ::= */
163597 -3, /* (233) paren_exprlist ::= LP exprlist RP */
163598 -12, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163599 -1, /* (235) uniqueflag ::= UNIQUE */
163600 0, /* (236) uniqueflag ::= */
163601 0, /* (237) eidlist_opt ::= */
163602 -3, /* (238) eidlist_opt ::= LP eidlist RP */
163603 -5, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
163604 -3, /* (240) eidlist ::= nm collate sortorder */
163605 0, /* (241) collate ::= */
163606 -2, /* (242) collate ::= COLLATE ID|STRING */
163607 -4, /* (243) cmd ::= DROP INDEX ifexists fullname */
163608 -2, /* (244) cmd ::= VACUUM vinto */
163609 -3, /* (245) cmd ::= VACUUM nm vinto */
163610 -2, /* (246) vinto ::= INTO expr */
163611 0, /* (247) vinto ::= */
163612 -3, /* (248) cmd ::= PRAGMA nm dbnm */
163613 -5, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
163614 -6, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
163615 -5, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
163616 -6, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
163617 -2, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
163618 -2, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
163619 -5, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163620 -11, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163621 -1, /* (257) trigger_time ::= BEFORE|AFTER */
163622 -2, /* (258) trigger_time ::= INSTEAD OF */
163623 0, /* (259) trigger_time ::= */
163624 -1, /* (260) trigger_event ::= DELETE|INSERT */
163625 -1, /* (261) trigger_event ::= UPDATE */
163626 -3, /* (262) trigger_event ::= UPDATE OF idlist */
163627 0, /* (263) when_clause ::= */
163628 -2, /* (264) when_clause ::= WHEN expr */
163629 -3, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163630 -2, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
163631 -3, /* (267) trnm ::= nm DOT nm */
163632 -3, /* (268) tridxby ::= INDEXED BY nm */
163633 -2, /* (269) tridxby ::= NOT INDEXED */
163634 -9, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163635 -8, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163636 -6, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163637 -3, /* (273) trigger_cmd ::= scanpt select scanpt */
163638 -4, /* (274) expr ::= RAISE LP IGNORE RP */
163639 -6, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
163640 -1, /* (276) raisetype ::= ROLLBACK */
163641 -1, /* (277) raisetype ::= ABORT */
163642 -1, /* (278) raisetype ::= FAIL */
163643 -4, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
163644 -6, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163645 -3, /* (281) cmd ::= DETACH database_kw_opt expr */
163646 0, /* (282) key_opt ::= */
163647 -2, /* (283) key_opt ::= KEY expr */
163648 -1, /* (284) cmd ::= REINDEX */
163649 -3, /* (285) cmd ::= REINDEX nm dbnm */
163650 -1, /* (286) cmd ::= ANALYZE */
163651 -3, /* (287) cmd ::= ANALYZE nm dbnm */
163652 -6, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
163653 -7, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163654 -6, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163655 -1, /* (291) add_column_fullname ::= fullname */
163656 -8, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163657 -1, /* (293) cmd ::= create_vtab */
163658 -4, /* (294) cmd ::= create_vtab LP vtabarglist RP */
163659 -8, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163660 0, /* (296) vtabarg ::= */
163661 -1, /* (297) vtabargtoken ::= ANY */
163662 -3, /* (298) vtabargtoken ::= lp anylist RP */
163663 -1, /* (299) lp ::= LP */
163664 -2, /* (300) with ::= WITH wqlist */
163665 -3, /* (301) with ::= WITH RECURSIVE wqlist */
163666 -1, /* (302) wqas ::= AS */
163667 -2, /* (303) wqas ::= AS MATERIALIZED */
163668 -3, /* (304) wqas ::= AS NOT MATERIALIZED */
163669 -6, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
163670 -1, /* (306) wqlist ::= wqitem */
163671 -3, /* (307) wqlist ::= wqlist COMMA wqitem */
163672 -1, /* (308) windowdefn_list ::= windowdefn */
163673 -3, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
163674 -5, /* (310) windowdefn ::= nm AS LP window RP */
163675 -5, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163676 -6, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163677 -4, /* (313) window ::= ORDER BY sortlist frame_opt */
163678 -5, /* (314) window ::= nm ORDER BY sortlist frame_opt */
163679 -1, /* (315) window ::= frame_opt */
163680 -2, /* (316) window ::= nm frame_opt */
163681 0, /* (317) frame_opt ::= */
163682 -3, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163683 -6, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163684 -1, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
163685 -1, /* (321) frame_bound_s ::= frame_bound */
163686 -2, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
163687 -1, /* (323) frame_bound_e ::= frame_bound */
163688 -2, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
163689 -2, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
163690 -2, /* (326) frame_bound ::= CURRENT ROW */
163691 0, /* (327) frame_exclude_opt ::= */
163692 -2, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
163693 -2, /* (329) frame_exclude ::= NO OTHERS */
163694 -2, /* (330) frame_exclude ::= CURRENT ROW */
163695 -1, /* (331) frame_exclude ::= GROUP|TIES */
163696 -2, /* (332) window_clause ::= WINDOW windowdefn_list */
163697 -2, /* (333) filter_over ::= filter_clause over_clause */
163698 -1, /* (334) filter_over ::= over_clause */
163699 -1, /* (335) filter_over ::= filter_clause */
163700 -4, /* (336) over_clause ::= OVER LP window RP */
163701 -2, /* (337) over_clause ::= OVER nm */
163702 -5, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
163703 -1, /* (339) input ::= cmdlist */
163704 -2, /* (340) cmdlist ::= cmdlist ecmd */
163705 -1, /* (341) cmdlist ::= ecmd */
163706 -1, /* (342) ecmd ::= SEMI */
163707 -2, /* (343) ecmd ::= cmdx SEMI */
163708 -3, /* (344) ecmd ::= explain cmdx SEMI */
163709 0, /* (345) trans_opt ::= */
163710 -1, /* (346) trans_opt ::= TRANSACTION */
163711 -2, /* (347) trans_opt ::= TRANSACTION nm */
163712 -1, /* (348) savepoint_opt ::= SAVEPOINT */
163713 0, /* (349) savepoint_opt ::= */
163714 -2, /* (350) cmd ::= create_table create_table_args */
163715 -1, /* (351) table_option_set ::= table_option */
163716 -4, /* (352) columnlist ::= columnlist COMMA columnname carglist */
163717 -2, /* (353) columnlist ::= columnname carglist */
163718 -1, /* (354) nm ::= ID|INDEXED */
163719 -1, /* (355) nm ::= STRING */
163720 -1, /* (356) nm ::= JOIN_KW */
163721 -1, /* (357) typetoken ::= typename */
163722 -1, /* (358) typename ::= ID|STRING */
163723 -1, /* (359) signed ::= plus_num */
163724 -1, /* (360) signed ::= minus_num */
163725 -2, /* (361) carglist ::= carglist ccons */
163726 0, /* (362) carglist ::= */
163727 -2, /* (363) ccons ::= NULL onconf */
163728 -4, /* (364) ccons ::= GENERATED ALWAYS AS generated */
163729 -2, /* (365) ccons ::= AS generated */
163730 -2, /* (366) conslist_opt ::= COMMA conslist */
163731 -3, /* (367) conslist ::= conslist tconscomma tcons */
163732 -1, /* (368) conslist ::= tcons */
163733 0, /* (369) tconscomma ::= */
163734 -1, /* (370) defer_subclause_opt ::= defer_subclause */
163735 -1, /* (371) resolvetype ::= raisetype */
163736 -1, /* (372) selectnowith ::= oneselect */
163737 -1, /* (373) oneselect ::= values */
163738 -2, /* (374) sclp ::= selcollist COMMA */
163739 -1, /* (375) as ::= ID|STRING */
163740 0, /* (376) returning ::= */
163741 -1, /* (377) expr ::= term */
163742 -1, /* (378) likeop ::= LIKE_KW|MATCH */
163743 -1, /* (379) exprlist ::= nexprlist */
163744 -1, /* (380) nmnum ::= plus_num */
163745 -1, /* (381) nmnum ::= nm */
163746 -1, /* (382) nmnum ::= ON */
163747 -1, /* (383) nmnum ::= DELETE */
163748 -1, /* (384) nmnum ::= DEFAULT */
163749 -1, /* (385) plus_num ::= INTEGER|FLOAT */
163750 0, /* (386) foreach_clause ::= */
163751 -3, /* (387) foreach_clause ::= FOR EACH ROW */
163752 -1, /* (388) trnm ::= nm */
163753 0, /* (389) tridxby ::= */
163754 -1, /* (390) database_kw_opt ::= DATABASE */
163755 0, /* (391) database_kw_opt ::= */
163756 0, /* (392) kwcolumn_opt ::= */
163757 -1, /* (393) kwcolumn_opt ::= COLUMNKW */
163758 -1, /* (394) vtabarglist ::= vtabarg */
163759 -3, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
163760 -2, /* (396) vtabarg ::= vtabarg vtabargtoken */
163761 0, /* (397) anylist ::= */
163762 -4, /* (398) anylist ::= anylist LP anylist RP */
163763 -2, /* (399) anylist ::= anylist ANY */
163764 0, /* (400) with ::= */
 
163765 };
163766
163767 static void yy_accept(yyParser*); /* Forward Declaration */
163768
163769 /*
@@ -163811,20 +163849,20 @@
163811 break;
163812 case 2: /* cmdx ::= cmd */
163813 { sqlite3FinishCoding(pParse); }
163814 break;
163815 case 3: /* cmd ::= BEGIN transtype trans_opt */
163816 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy64);}
163817 break;
163818 case 4: /* transtype ::= */
163819 {yymsp[1].minor.yy64 = TK_DEFERRED;}
163820 break;
163821 case 5: /* transtype ::= DEFERRED */
163822 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
163823 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
163824 case 320: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==320);
163825 {yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/}
163826 break;
163827 case 8: /* cmd ::= COMMIT|END trans_opt */
163828 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
163829 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
163830 break;
@@ -163843,11 +163881,11 @@
163843 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
163844 }
163845 break;
163846 case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
163847 {
163848 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy64,0,0,yymsp[-2].minor.yy64);
163849 }
163850 break;
163851 case 14: /* createkw ::= CREATE */
163852 {disableLookaside(pParse);}
163853 break;
@@ -163856,57 +163894,57 @@
163856 case 47: /* autoinc ::= */ yytestcase(yyruleno==47);
163857 case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
163858 case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72);
163859 case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
163860 case 98: /* distinct ::= */ yytestcase(yyruleno==98);
163861 case 241: /* collate ::= */ yytestcase(yyruleno==241);
163862 {yymsp[1].minor.yy64 = 0;}
163863 break;
163864 case 16: /* ifnotexists ::= IF NOT EXISTS */
163865 {yymsp[-2].minor.yy64 = 1;}
163866 break;
163867 case 17: /* temp ::= TEMP */
163868 {yymsp[0].minor.yy64 = pParse->db->init.busy==0;}
163869 break;
163870 case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */
163871 {
163872 sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy51,0);
163873 }
163874 break;
163875 case 20: /* create_table_args ::= AS select */
163876 {
163877 sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy303);
163878 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
163879 }
163880 break;
163881 case 21: /* table_option_set ::= */
163882 {yymsp[1].minor.yy51 = 0;}
163883 break;
163884 case 22: /* table_option_set ::= table_option_set COMMA table_option */
163885 {yylhsminor.yy51 = yymsp[-2].minor.yy51|yymsp[0].minor.yy51;}
163886 yymsp[-2].minor.yy51 = yylhsminor.yy51;
163887 break;
163888 case 23: /* table_option ::= WITHOUT nm */
163889 {
163890 if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
163891 yymsp[-1].minor.yy51 = TF_WithoutRowid | TF_NoVisibleRowid;
163892 }else{
163893 yymsp[-1].minor.yy51 = 0;
163894 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
163895 }
163896 }
163897 break;
163898 case 24: /* table_option ::= nm */
163899 {
163900 if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict",6)==0 ){
163901 yylhsminor.yy51 = TF_Strict;
163902 }else{
163903 yylhsminor.yy51 = 0;
163904 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
163905 }
163906 }
163907 yymsp[0].minor.yy51 = yylhsminor.yy51;
163908 break;
163909 case 25: /* columnname ::= nm typetoken */
163910 {sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);}
163911 break;
163912 case 26: /* typetoken ::= */
@@ -163928,11 +163966,11 @@
163928 {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
163929 break;
163930 case 30: /* scanpt ::= */
163931 {
163932 assert( yyLookahead!=YYNOCODE );
163933 yymsp[1].minor.yy600 = yyLookaheadToken.z;
163934 }
163935 break;
163936 case 31: /* scantok ::= */
163937 {
163938 assert( yyLookahead!=YYNOCODE );
@@ -163942,21 +163980,21 @@
163942 case 32: /* ccons ::= CONSTRAINT nm */
163943 case 67: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==67);
163944 {pParse->constraintName = yymsp[0].minor.yy0;}
163945 break;
163946 case 33: /* ccons ::= DEFAULT scantok term */
163947 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
163948 break;
163949 case 34: /* ccons ::= DEFAULT LP expr RP */
163950 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
163951 break;
163952 case 35: /* ccons ::= DEFAULT PLUS scantok term */
163953 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
163954 break;
163955 case 36: /* ccons ::= DEFAULT MINUS scantok term */
163956 {
163957 Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy626, 0);
163958 sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
163959 }
163960 break;
163961 case 37: /* ccons ::= DEFAULT scantok ID|INDEXED */
163962 {
@@ -163967,308 +164005,308 @@
163967 }
163968 sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
163969 }
163970 break;
163971 case 38: /* ccons ::= NOT NULL onconf */
163972 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy64);}
163973 break;
163974 case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
163975 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy64,yymsp[0].minor.yy64,yymsp[-2].minor.yy64);}
163976 break;
163977 case 40: /* ccons ::= UNIQUE onconf */
163978 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy64,0,0,0,0,
163979 SQLITE_IDXTYPE_UNIQUE);}
163980 break;
163981 case 41: /* ccons ::= CHECK LP expr RP */
163982 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
163983 break;
163984 case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */
163985 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy562,yymsp[0].minor.yy64);}
163986 break;
163987 case 43: /* ccons ::= defer_subclause */
163988 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy64);}
163989 break;
163990 case 44: /* ccons ::= COLLATE ID|STRING */
163991 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
163992 break;
163993 case 45: /* generated ::= LP expr RP */
163994 {sqlite3AddGenerated(pParse,yymsp[-1].minor.yy626,0);}
163995 break;
163996 case 46: /* generated ::= LP expr RP ID */
163997 {sqlite3AddGenerated(pParse,yymsp[-2].minor.yy626,&yymsp[0].minor.yy0);}
163998 break;
163999 case 48: /* autoinc ::= AUTOINCR */
164000 {yymsp[0].minor.yy64 = 1;}
164001 break;
164002 case 49: /* refargs ::= */
164003 { yymsp[1].minor.yy64 = OE_None*0x0101; /* EV: R-19803-45884 */}
164004 break;
164005 case 50: /* refargs ::= refargs refarg */
164006 { yymsp[-1].minor.yy64 = (yymsp[-1].minor.yy64 & ~yymsp[0].minor.yy83.mask) | yymsp[0].minor.yy83.value; }
164007 break;
164008 case 51: /* refarg ::= MATCH nm */
164009 { yymsp[-1].minor.yy83.value = 0; yymsp[-1].minor.yy83.mask = 0x000000; }
164010 break;
164011 case 52: /* refarg ::= ON INSERT refact */
164012 { yymsp[-2].minor.yy83.value = 0; yymsp[-2].minor.yy83.mask = 0x000000; }
164013 break;
164014 case 53: /* refarg ::= ON DELETE refact */
164015 { yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64; yymsp[-2].minor.yy83.mask = 0x0000ff; }
164016 break;
164017 case 54: /* refarg ::= ON UPDATE refact */
164018 { yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64<<8; yymsp[-2].minor.yy83.mask = 0x00ff00; }
164019 break;
164020 case 55: /* refact ::= SET NULL */
164021 { yymsp[-1].minor.yy64 = OE_SetNull; /* EV: R-33326-45252 */}
164022 break;
164023 case 56: /* refact ::= SET DEFAULT */
164024 { yymsp[-1].minor.yy64 = OE_SetDflt; /* EV: R-33326-45252 */}
164025 break;
164026 case 57: /* refact ::= CASCADE */
164027 { yymsp[0].minor.yy64 = OE_Cascade; /* EV: R-33326-45252 */}
164028 break;
164029 case 58: /* refact ::= RESTRICT */
164030 { yymsp[0].minor.yy64 = OE_Restrict; /* EV: R-33326-45252 */}
164031 break;
164032 case 59: /* refact ::= NO ACTION */
164033 { yymsp[-1].minor.yy64 = OE_None; /* EV: R-33326-45252 */}
164034 break;
164035 case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
164036 {yymsp[-2].minor.yy64 = 0;}
164037 break;
164038 case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
164039 case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76);
164040 case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
164041 {yymsp[-1].minor.yy64 = yymsp[0].minor.yy64;}
164042 break;
164043 case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
164044 case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
164045 case 213: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==213);
164046 case 216: /* in_op ::= NOT IN */ yytestcase(yyruleno==216);
164047 case 242: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==242);
164048 {yymsp[-1].minor.yy64 = 1;}
164049 break;
164050 case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
164051 {yymsp[-1].minor.yy64 = 0;}
164052 break;
164053 case 66: /* tconscomma ::= COMMA */
164054 {pParse->constraintName.n = 0;}
164055 break;
164056 case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
164057 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy562,yymsp[0].minor.yy64,yymsp[-2].minor.yy64,0);}
164058 break;
164059 case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */
164060 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy562,yymsp[0].minor.yy64,0,0,0,0,
164061 SQLITE_IDXTYPE_UNIQUE);}
164062 break;
164063 case 70: /* tcons ::= CHECK LP expr RP onconf */
164064 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy626,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
164065 break;
164066 case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
164067 {
164068 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy562, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy562, yymsp[-1].minor.yy64);
164069 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy64);
164070 }
164071 break;
164072 case 73: /* onconf ::= */
164073 case 75: /* orconf ::= */ yytestcase(yyruleno==75);
164074 {yymsp[1].minor.yy64 = OE_Default;}
164075 break;
164076 case 74: /* onconf ::= ON CONFLICT resolvetype */
164077 {yymsp[-2].minor.yy64 = yymsp[0].minor.yy64;}
164078 break;
164079 case 77: /* resolvetype ::= IGNORE */
164080 {yymsp[0].minor.yy64 = OE_Ignore;}
164081 break;
164082 case 78: /* resolvetype ::= REPLACE */
164083 case 172: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==172);
164084 {yymsp[0].minor.yy64 = OE_Replace;}
164085 break;
164086 case 79: /* cmd ::= DROP TABLE ifexists fullname */
164087 {
164088 sqlite3DropTable(pParse, yymsp[0].minor.yy607, 0, yymsp[-1].minor.yy64);
164089 }
164090 break;
164091 case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
164092 {
164093 sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy562, yymsp[0].minor.yy303, yymsp[-7].minor.yy64, yymsp[-5].minor.yy64);
164094 }
164095 break;
164096 case 83: /* cmd ::= DROP VIEW ifexists fullname */
164097 {
164098 sqlite3DropTable(pParse, yymsp[0].minor.yy607, 1, yymsp[-1].minor.yy64);
164099 }
164100 break;
164101 case 84: /* cmd ::= select */
164102 {
164103 SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
164104 sqlite3Select(pParse, yymsp[0].minor.yy303, &dest);
164105 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
164106 }
164107 break;
164108 case 85: /* select ::= WITH wqlist selectnowith */
164109 {yymsp[-2].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
164110 break;
164111 case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */
164112 {yymsp[-3].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
164113 break;
164114 case 87: /* select ::= selectnowith */
164115 {
164116 Select *p = yymsp[0].minor.yy303;
164117 if( p ){
164118 parserDoubleLinkSelect(pParse, p);
164119 }
164120 yymsp[0].minor.yy303 = p; /*A-overwrites-X*/
164121 }
164122 break;
164123 case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */
164124 {
164125 Select *pRhs = yymsp[0].minor.yy303;
164126 Select *pLhs = yymsp[-2].minor.yy303;
164127 if( pRhs && pRhs->pPrior ){
164128 SrcList *pFrom;
164129 Token x;
164130 x.n = 0;
164131 parserDoubleLinkSelect(pParse, pRhs);
164132 pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
164133 pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
164134 }
164135 if( pRhs ){
164136 pRhs->op = (u8)yymsp[-1].minor.yy64;
164137 pRhs->pPrior = pLhs;
164138 if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
164139 pRhs->selFlags &= ~SF_MultiValue;
164140 if( yymsp[-1].minor.yy64!=TK_ALL ) pParse->hasCompound = 1;
164141 }else{
164142 sqlite3SelectDelete(pParse->db, pLhs);
164143 }
164144 yymsp[-2].minor.yy303 = pRhs;
164145 }
164146 break;
164147 case 89: /* multiselect_op ::= UNION */
164148 case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91);
164149 {yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-OP*/}
164150 break;
164151 case 90: /* multiselect_op ::= UNION ALL */
164152 {yymsp[-1].minor.yy64 = TK_ALL;}
164153 break;
164154 case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
164155 {
164156 yymsp[-8].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy562,yymsp[-5].minor.yy607,yymsp[-4].minor.yy626,yymsp[-3].minor.yy562,yymsp[-2].minor.yy626,yymsp[-1].minor.yy562,yymsp[-7].minor.yy64,yymsp[0].minor.yy626);
164157 }
164158 break;
164159 case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
164160 {
164161 yymsp[-9].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy562,yymsp[-6].minor.yy607,yymsp[-5].minor.yy626,yymsp[-4].minor.yy562,yymsp[-3].minor.yy626,yymsp[-1].minor.yy562,yymsp[-8].minor.yy64,yymsp[0].minor.yy626);
164162 if( yymsp[-9].minor.yy303 ){
164163 yymsp[-9].minor.yy303->pWinDefn = yymsp[-2].minor.yy375;
164164 }else{
164165 sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy375);
164166 }
164167 }
164168 break;
164169 case 94: /* values ::= VALUES LP nexprlist RP */
164170 {
164171 yymsp[-3].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values,0);
164172 }
164173 break;
164174 case 95: /* values ::= values COMMA LP nexprlist RP */
164175 {
164176 Select *pRight, *pLeft = yymsp[-4].minor.yy303;
164177 pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values|SF_MultiValue,0);
164178 if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
164179 if( pRight ){
164180 pRight->op = TK_ALL;
164181 pRight->pPrior = pLeft;
164182 yymsp[-4].minor.yy303 = pRight;
164183 }else{
164184 yymsp[-4].minor.yy303 = pLeft;
164185 }
164186 }
164187 break;
164188 case 96: /* distinct ::= DISTINCT */
164189 {yymsp[0].minor.yy64 = SF_Distinct;}
164190 break;
164191 case 97: /* distinct ::= ALL */
164192 {yymsp[0].minor.yy64 = SF_All;}
164193 break;
164194 case 99: /* sclp ::= */
164195 case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132);
164196 case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142);
164197 case 229: /* exprlist ::= */ yytestcase(yyruleno==229);
164198 case 232: /* paren_exprlist ::= */ yytestcase(yyruleno==232);
164199 case 237: /* eidlist_opt ::= */ yytestcase(yyruleno==237);
164200 {yymsp[1].minor.yy562 = 0;}
164201 break;
164202 case 100: /* selcollist ::= sclp scanpt expr scanpt as */
164203 {
164204 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
164205 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[0].minor.yy0, 1);
164206 sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy562,yymsp[-3].minor.yy600,yymsp[-1].minor.yy600);
164207 }
164208 break;
164209 case 101: /* selcollist ::= sclp scanpt STAR */
164210 {
164211 Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
164212 yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy562, p);
164213 }
164214 break;
164215 case 102: /* selcollist ::= sclp scanpt nm DOT STAR */
164216 {
164217 Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
164218 Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
164219 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
164220 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, pDot);
164221 }
164222 break;
164223 case 103: /* as ::= AS nm */
164224 case 114: /* dbnm ::= DOT nm */ yytestcase(yyruleno==114);
164225 case 253: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==253);
164226 case 254: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
164227 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
164228 break;
164229 case 105: /* from ::= */
164230 case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108);
164231 {yymsp[1].minor.yy607 = 0;}
164232 break;
164233 case 106: /* from ::= FROM seltablist */
164234 {
164235 yymsp[-1].minor.yy607 = yymsp[0].minor.yy607;
164236 sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy607);
164237 }
164238 break;
164239 case 107: /* stl_prefix ::= seltablist joinop */
164240 {
164241 if( ALWAYS(yymsp[-1].minor.yy607 && yymsp[-1].minor.yy607->nSrc>0) ) yymsp[-1].minor.yy607->a[yymsp[-1].minor.yy607->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy64;
164242 }
164243 break;
164244 case 109: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
164245 {
164246 yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164247 sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy607, &yymsp[-2].minor.yy0);
164248 }
164249 break;
164250 case 110: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
164251 {
164252 yymsp[-8].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy607,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164253 sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy607, yymsp[-4].minor.yy562);
164254 }
164255 break;
164256 case 111: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
164257 {
164258 yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy303,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164259 }
164260 break;
164261 case 112: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
164262 {
164263 if( yymsp[-6].minor.yy607==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy626==0 && yymsp[0].minor.yy240==0 ){
164264 yymsp[-6].minor.yy607 = yymsp[-4].minor.yy607;
164265 }else if( yymsp[-4].minor.yy607->nSrc==1 ){
164266 yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164267 if( yymsp[-6].minor.yy607 ){
164268 SrcItem *pNew = &yymsp[-6].minor.yy607->a[yymsp[-6].minor.yy607->nSrc-1];
164269 SrcItem *pOld = yymsp[-4].minor.yy607->a;
164270 pNew->zName = pOld->zName;
164271 pNew->zDatabase = pOld->zDatabase;
164272 pNew->pSelect = pOld->pSelect;
164273 if( pOld->fg.isTabFunc ){
164274 pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -164277,240 +164315,240 @@
164277 pNew->fg.isTabFunc = 1;
164278 }
164279 pOld->zName = pOld->zDatabase = 0;
164280 pOld->pSelect = 0;
164281 }
164282 sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy607);
164283 }else{
164284 Select *pSubquery;
164285 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy607);
164286 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy607,0,0,0,0,SF_NestedFrom,0);
164287 yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
164288 }
164289 }
164290 break;
164291 case 113: /* dbnm ::= */
164292 case 127: /* indexed_opt ::= */ yytestcase(yyruleno==127);
164293 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
164294 break;
164295 case 115: /* fullname ::= nm */
164296 {
164297 yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
164298 if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
164299 }
164300 yymsp[0].minor.yy607 = yylhsminor.yy607;
164301 break;
164302 case 116: /* fullname ::= nm DOT nm */
164303 {
164304 yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
164305 if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
164306 }
164307 yymsp[-2].minor.yy607 = yylhsminor.yy607;
164308 break;
164309 case 117: /* xfullname ::= nm */
164310 {yymsp[0].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
164311 break;
164312 case 118: /* xfullname ::= nm DOT nm */
164313 {yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
164314 break;
164315 case 119: /* xfullname ::= nm DOT nm AS nm */
164316 {
164317 yymsp[-4].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
164318 if( yymsp[-4].minor.yy607 ) yymsp[-4].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
164319 }
164320 break;
164321 case 120: /* xfullname ::= nm AS nm */
164322 {
164323 yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
164324 if( yymsp[-2].minor.yy607 ) yymsp[-2].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
164325 }
164326 break;
164327 case 121: /* joinop ::= COMMA|JOIN */
164328 { yymsp[0].minor.yy64 = JT_INNER; }
164329 break;
164330 case 122: /* joinop ::= JOIN_KW JOIN */
164331 {yymsp[-1].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
164332 break;
164333 case 123: /* joinop ::= JOIN_KW nm JOIN */
164334 {yymsp[-2].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
164335 break;
164336 case 124: /* joinop ::= JOIN_KW nm nm JOIN */
164337 {yymsp[-3].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
164338 break;
164339 case 125: /* on_opt ::= ON expr */
164340 case 145: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==145);
164341 case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
164342 case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
164343 case 225: /* case_else ::= ELSE expr */ yytestcase(yyruleno==225);
164344 case 246: /* vinto ::= INTO expr */ yytestcase(yyruleno==246);
164345 {yymsp[-1].minor.yy626 = yymsp[0].minor.yy626;}
164346 break;
164347 case 126: /* on_opt ::= */
164348 case 144: /* having_opt ::= */ yytestcase(yyruleno==144);
164349 case 146: /* limit_opt ::= */ yytestcase(yyruleno==146);
164350 case 151: /* where_opt ::= */ yytestcase(yyruleno==151);
164351 case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153);
164352 case 226: /* case_else ::= */ yytestcase(yyruleno==226);
164353 case 228: /* case_operand ::= */ yytestcase(yyruleno==228);
164354 case 247: /* vinto ::= */ yytestcase(yyruleno==247);
164355 {yymsp[1].minor.yy626 = 0;}
164356 break;
164357 case 128: /* indexed_opt ::= INDEXED BY nm */
164358 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
164359 break;
164360 case 129: /* indexed_opt ::= NOT INDEXED */
164361 {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
164362 break;
164363 case 130: /* using_opt ::= USING LP idlist RP */
164364 {yymsp[-3].minor.yy240 = yymsp[-1].minor.yy240;}
164365 break;
164366 case 131: /* using_opt ::= */
164367 case 173: /* idlist_opt ::= */ yytestcase(yyruleno==173);
164368 {yymsp[1].minor.yy240 = 0;}
164369 break;
164370 case 133: /* orderby_opt ::= ORDER BY sortlist */
164371 case 143: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==143);
164372 {yymsp[-2].minor.yy562 = yymsp[0].minor.yy562;}
164373 break;
164374 case 134: /* sortlist ::= sortlist COMMA expr sortorder nulls */
164375 {
164376 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562,yymsp[-2].minor.yy626);
164377 sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
164378 }
164379 break;
164380 case 135: /* sortlist ::= expr sortorder nulls */
164381 {
164382 yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy626); /*A-overwrites-Y*/
164383 sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
164384 }
164385 break;
164386 case 136: /* sortorder ::= ASC */
164387 {yymsp[0].minor.yy64 = SQLITE_SO_ASC;}
164388 break;
164389 case 137: /* sortorder ::= DESC */
164390 {yymsp[0].minor.yy64 = SQLITE_SO_DESC;}
164391 break;
164392 case 138: /* sortorder ::= */
164393 case 141: /* nulls ::= */ yytestcase(yyruleno==141);
164394 {yymsp[1].minor.yy64 = SQLITE_SO_UNDEFINED;}
164395 break;
164396 case 139: /* nulls ::= NULLS FIRST */
164397 {yymsp[-1].minor.yy64 = SQLITE_SO_ASC;}
164398 break;
164399 case 140: /* nulls ::= NULLS LAST */
164400 {yymsp[-1].minor.yy64 = SQLITE_SO_DESC;}
164401 break;
164402 case 147: /* limit_opt ::= LIMIT expr */
164403 {yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,0);}
164404 break;
164405 case 148: /* limit_opt ::= LIMIT expr OFFSET expr */
164406 {yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
164407 break;
164408 case 149: /* limit_opt ::= LIMIT expr COMMA expr */
164409 {yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,yymsp[-2].minor.yy626);}
164410 break;
164411 case 150: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
164412 {
164413 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy607, &yymsp[-1].minor.yy0);
164414 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy607,yymsp[0].minor.yy626,0,0);
164415 }
164416 break;
164417 case 155: /* where_opt_ret ::= RETURNING selcollist */
164418 {sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-1].minor.yy626 = 0;}
164419 break;
164420 case 156: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
164421 {sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-3].minor.yy626 = yymsp[-2].minor.yy626;}
164422 break;
164423 case 157: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
164424 {
164425 sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy607, &yymsp[-4].minor.yy0);
164426 sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy562,"set list");
164427 yymsp[-5].minor.yy607 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy607, yymsp[-1].minor.yy607);
164428 sqlite3Update(pParse,yymsp[-5].minor.yy607,yymsp[-2].minor.yy562,yymsp[0].minor.yy626,yymsp[-6].minor.yy64,0,0,0);
164429 }
164430 break;
164431 case 158: /* setlist ::= setlist COMMA nm EQ expr */
164432 {
164433 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
164434 sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, 1);
164435 }
164436 break;
164437 case 159: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
164438 {
164439 yymsp[-6].minor.yy562 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy562, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
164440 }
164441 break;
164442 case 160: /* setlist ::= nm EQ expr */
164443 {
164444 yylhsminor.yy562 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy626);
164445 sqlite3ExprListSetName(pParse, yylhsminor.yy562, &yymsp[-2].minor.yy0, 1);
164446 }
164447 yymsp[-2].minor.yy562 = yylhsminor.yy562;
164448 break;
164449 case 161: /* setlist ::= LP idlist RP EQ expr */
164450 {
164451 yymsp[-4].minor.yy562 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
164452 }
164453 break;
164454 case 162: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
164455 {
164456 sqlite3Insert(pParse, yymsp[-3].minor.yy607, yymsp[-1].minor.yy303, yymsp[-2].minor.yy240, yymsp[-5].minor.yy64, yymsp[0].minor.yy138);
164457 }
164458 break;
164459 case 163: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
164460 {
164461 sqlite3Insert(pParse, yymsp[-4].minor.yy607, 0, yymsp[-3].minor.yy240, yymsp[-6].minor.yy64, 0);
164462 }
164463 break;
164464 case 164: /* upsert ::= */
164465 { yymsp[1].minor.yy138 = 0; }
164466 break;
164467 case 165: /* upsert ::= RETURNING selcollist */
164468 { yymsp[-1].minor.yy138 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy562); }
164469 break;
164470 case 166: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
164471 { yymsp[-11].minor.yy138 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy562,yymsp[-6].minor.yy626,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626,yymsp[0].minor.yy138);}
164472 break;
164473 case 167: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
164474 { yymsp[-8].minor.yy138 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy562,yymsp[-3].minor.yy626,0,0,yymsp[0].minor.yy138); }
164475 break;
164476 case 168: /* upsert ::= ON CONFLICT DO NOTHING returning */
164477 { yymsp[-4].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
164478 break;
164479 case 169: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
164480 { yymsp[-7].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626,0);}
164481 break;
164482 case 170: /* returning ::= RETURNING selcollist */
164483 {sqlite3AddReturning(pParse,yymsp[0].minor.yy562);}
164484 break;
164485 case 174: /* idlist_opt ::= LP idlist RP */
164486 {yymsp[-2].minor.yy240 = yymsp[-1].minor.yy240;}
164487 break;
164488 case 175: /* idlist ::= idlist COMMA nm */
164489 {yymsp[-2].minor.yy240 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy240,&yymsp[0].minor.yy0);}
164490 break;
164491 case 176: /* idlist ::= nm */
164492 {yymsp[0].minor.yy240 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
164493 break;
164494 case 177: /* expr ::= LP expr RP */
164495 {yymsp[-2].minor.yy626 = yymsp[-1].minor.yy626;}
164496 break;
164497 case 178: /* expr ::= ID|INDEXED */
164498 case 179: /* expr ::= JOIN_KW */ yytestcase(yyruleno==179);
164499 {yymsp[0].minor.yy626=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
164500 break;
164501 case 180: /* expr ::= nm DOT nm */
164502 {
164503 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
164504 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
164505 if( IN_RENAME_OBJECT ){
164506 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
164507 sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
164508 }
164509 yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
164510 }
164511 yymsp[-2].minor.yy626 = yylhsminor.yy626;
164512 break;
164513 case 181: /* expr ::= nm DOT nm DOT nm */
164514 {
164515 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
164516 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
@@ -164518,768 +164556,776 @@
164518 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
164519 if( IN_RENAME_OBJECT ){
164520 sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
164521 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
164522 }
164523 yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
164524 }
164525 yymsp[-4].minor.yy626 = yylhsminor.yy626;
164526 break;
164527 case 182: /* term ::= NULL|FLOAT|BLOB */
164528 case 183: /* term ::= STRING */ yytestcase(yyruleno==183);
164529 {yymsp[0].minor.yy626=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
164530 break;
164531 case 184: /* term ::= INTEGER */
164532 {
164533 yylhsminor.yy626 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
164534 }
164535 yymsp[0].minor.yy626 = yylhsminor.yy626;
164536 break;
164537 case 185: /* expr ::= VARIABLE */
164538 {
164539 if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
164540 u32 n = yymsp[0].minor.yy0.n;
164541 yymsp[0].minor.yy626 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
164542 sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy626, n);
164543 }else{
164544 /* When doing a nested parse, one can include terms in an expression
164545 ** that look like this: #1 #2 ... These terms refer to registers
164546 ** in the virtual machine. #N is the N-th register. */
164547 Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
164548 assert( t.n>=2 );
164549 if( pParse->nested==0 ){
164550 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
164551 yymsp[0].minor.yy626 = 0;
164552 }else{
164553 yymsp[0].minor.yy626 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
164554 if( yymsp[0].minor.yy626 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy626->iTable);
164555 }
164556 }
164557 }
164558 break;
164559 case 186: /* expr ::= expr COLLATE ID|STRING */
164560 {
164561 yymsp[-2].minor.yy626 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy626, &yymsp[0].minor.yy0, 1);
164562 }
164563 break;
164564 case 187: /* expr ::= CAST LP expr AS typetoken RP */
164565 {
164566 yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
164567 sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy626, yymsp[-3].minor.yy626, 0);
164568 }
164569 break;
164570 case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP */
164571 {
164572 yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy64);
164573 }
164574 yymsp[-4].minor.yy626 = yylhsminor.yy626;
164575 break;
164576 case 189: /* expr ::= ID|INDEXED LP STAR RP */
164577 {
164578 yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
164579 }
164580 yymsp[-3].minor.yy626 = yylhsminor.yy626;
164581 break;
164582 case 190: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
164583 {
164584 yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy562, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy64);
164585 sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
164586 }
164587 yymsp[-5].minor.yy626 = yylhsminor.yy626;
164588 break;
164589 case 191: /* expr ::= ID|INDEXED LP STAR RP filter_over */
164590 {
164591 yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
164592 sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
164593 }
164594 yymsp[-4].minor.yy626 = yylhsminor.yy626;
164595 break;
164596 case 192: /* term ::= CTIME_KW */
164597 {
164598 yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
164599 }
164600 yymsp[0].minor.yy626 = yylhsminor.yy626;
164601 break;
164602 case 193: /* expr ::= LP nexprlist COMMA expr RP */
164603 {
164604 ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy562, yymsp[-1].minor.yy626);
164605 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
164606 if( yymsp[-4].minor.yy626 ){
164607 yymsp[-4].minor.yy626->x.pList = pList;
164608 if( ALWAYS(pList->nExpr) ){
164609 yymsp[-4].minor.yy626->flags |= pList->a[0].pExpr->flags & EP_Propagate;
164610 }
164611 }else{
164612 sqlite3ExprListDelete(pParse->db, pList);
164613 }
164614 }
164615 break;
164616 case 194: /* expr ::= expr AND expr */
164617 {yymsp[-2].minor.yy626=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
164618 break;
164619 case 195: /* expr ::= expr OR expr */
164620 case 196: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==196);
164621 case 197: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==197);
164622 case 198: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==198);
164623 case 199: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==199);
164624 case 200: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==200);
164625 case 201: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==201);
164626 {yymsp[-2].minor.yy626=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
164627 break;
164628 case 202: /* likeop ::= NOT LIKE_KW|MATCH */
164629 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
164630 break;
164631 case 203: /* expr ::= expr likeop expr */
164632 {
164633 ExprList *pList;
164634 int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
164635 yymsp[-1].minor.yy0.n &= 0x7fffffff;
164636 pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy626);
164637 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy626);
164638 yymsp[-2].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
164639 if( bNot ) yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy626, 0);
164640 if( yymsp[-2].minor.yy626 ) yymsp[-2].minor.yy626->flags |= EP_InfixFunc;
164641 }
164642 break;
164643 case 204: /* expr ::= expr likeop expr ESCAPE expr */
164644 {
164645 ExprList *pList;
164646 int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
164647 yymsp[-3].minor.yy0.n &= 0x7fffffff;
164648 pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
164649 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy626);
164650 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
164651 yymsp[-4].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
164652 if( bNot ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164653 if( yymsp[-4].minor.yy626 ) yymsp[-4].minor.yy626->flags |= EP_InfixFunc;
164654 }
164655 break;
164656 case 205: /* expr ::= expr ISNULL|NOTNULL */
164657 {yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy626,0);}
164658 break;
164659 case 206: /* expr ::= expr NOT NULL */
164660 {yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy626,0);}
164661 break;
164662 case 207: /* expr ::= expr IS expr */
164663 {
164664 yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);
164665 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-2].minor.yy626, TK_ISNULL);
164666 }
164667 break;
164668 case 208: /* expr ::= expr IS NOT expr */
164669 {
164670 yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy626,yymsp[0].minor.yy626);
164671 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-3].minor.yy626, TK_NOTNULL);
164672 }
164673 break;
164674 case 209: /* expr ::= NOT expr */
164675 case 210: /* expr ::= BITNOT expr */ yytestcase(yyruleno==210);
164676 {yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy626, 0);/*A-overwrites-B*/}
164677 break;
164678 case 211: /* expr ::= PLUS|MINUS expr */
164679 {
164680 yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy626, 0);
164681 /*A-overwrites-B*/
164682 }
164683 break;
164684 case 212: /* between_op ::= BETWEEN */
164685 case 215: /* in_op ::= IN */ yytestcase(yyruleno==215);
164686 {yymsp[0].minor.yy64 = 0;}
 
 
 
 
164687 break;
164688 case 214: /* expr ::= expr between_op expr AND expr */
 
 
 
 
164689 {
164690 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
164691 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
164692 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy626, 0);
164693 if( yymsp[-4].minor.yy626 ){
164694 yymsp[-4].minor.yy626->x.pList = pList;
164695 }else{
164696 sqlite3ExprListDelete(pParse->db, pList);
164697 }
164698 if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164699 }
164700 break;
164701 case 217: /* expr ::= expr in_op LP exprlist RP */
164702 {
164703 if( yymsp[-1].minor.yy562==0 ){
164704 /* Expressions of the form
164705 **
164706 ** expr1 IN ()
164707 ** expr1 NOT IN ()
164708 **
164709 ** simplify to constants 0 (false) and 1 (true), respectively,
164710 ** regardless of the value of expr1.
164711 */
164712 sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy626);
164713 yymsp[-4].minor.yy626 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy64 ? "1" : "0");
164714 }else{
164715 Expr *pRHS = yymsp[-1].minor.yy562->a[0].pExpr;
164716 if( yymsp[-1].minor.yy562->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy626->op!=TK_VECTOR ){
164717 yymsp[-1].minor.yy562->a[0].pExpr = 0;
164718 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
164719 pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
164720 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy626, pRHS);
164721 }else{
164722 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
164723 if( yymsp[-4].minor.yy626==0 ){
164724 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
164725 }else if( yymsp[-4].minor.yy626->pLeft->op==TK_VECTOR ){
164726 int nExpr = yymsp[-4].minor.yy626->pLeft->x.pList->nExpr;
164727 Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy562);
164728 if( pSelectRHS ){
164729 parserDoubleLinkSelect(pParse, pSelectRHS);
164730 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelectRHS);
164731 }
164732 }else{
164733 yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy562;
164734 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
164735 }
164736 }
164737 if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164738 }
164739 }
164740 break;
164741 case 218: /* expr ::= LP select RP */
164742 {
164743 yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
164744 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy626, yymsp[-1].minor.yy303);
164745 }
164746 break;
164747 case 219: /* expr ::= expr in_op LP select RP */
164748 {
164749 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
164750 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, yymsp[-1].minor.yy303);
164751 if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164752 }
164753 break;
164754 case 220: /* expr ::= expr in_op nm dbnm paren_exprlist */
164755 {
164756 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
164757 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
164758 if( yymsp[0].minor.yy562 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy562);
164759 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
164760 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelect);
164761 if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
164762 }
164763 break;
164764 case 221: /* expr ::= EXISTS LP select RP */
164765 {
164766 Expr *p;
164767 p = yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
164768 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy303);
164769 }
164770 break;
164771 case 222: /* expr ::= CASE case_operand case_exprlist case_else END */
164772 {
164773 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy626, 0);
164774 if( yymsp[-4].minor.yy626 ){
164775 yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy626 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626) : yymsp[-2].minor.yy562;
164776 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
164777 }else{
164778 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy562);
164779 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
164780 }
164781 }
164782 break;
164783 case 223: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
164784 {
164785 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
164786 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
164787 }
164788 break;
164789 case 224: /* case_exprlist ::= WHEN expr THEN expr */
164790 {
164791 yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
164792 yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy562, yymsp[0].minor.yy626);
164793 }
164794 break;
164795 case 227: /* case_operand ::= expr */
164796 {yymsp[0].minor.yy626 = yymsp[0].minor.yy626; /*A-overwrites-X*/}
164797 break;
164798 case 230: /* nexprlist ::= nexprlist COMMA expr */
164799 {yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[0].minor.yy626);}
164800 break;
164801 case 231: /* nexprlist ::= expr */
164802 {yymsp[0].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy626); /*A-overwrites-Y*/}
164803 break;
164804 case 233: /* paren_exprlist ::= LP exprlist RP */
164805 case 238: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==238);
164806 {yymsp[-2].minor.yy562 = yymsp[-1].minor.yy562;}
164807 break;
164808 case 234: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
164809 {
164810 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
164811 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy562, yymsp[-10].minor.yy64,
164812 &yymsp[-11].minor.yy0, yymsp[0].minor.yy626, SQLITE_SO_ASC, yymsp[-8].minor.yy64, SQLITE_IDXTYPE_APPDEF);
164813 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
164814 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
164815 }
164816 }
164817 break;
164818 case 235: /* uniqueflag ::= UNIQUE */
164819 case 277: /* raisetype ::= ABORT */ yytestcase(yyruleno==277);
164820 {yymsp[0].minor.yy64 = OE_Abort;}
164821 break;
164822 case 236: /* uniqueflag ::= */
164823 {yymsp[1].minor.yy64 = OE_None;}
164824 break;
164825 case 239: /* eidlist ::= eidlist COMMA nm collate sortorder */
164826 {
164827 yymsp[-4].minor.yy562 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64);
164828 }
164829 break;
164830 case 240: /* eidlist ::= nm collate sortorder */
164831 {
164832 yymsp[-2].minor.yy562 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64); /*A-overwrites-Y*/
164833 }
164834 break;
164835 case 243: /* cmd ::= DROP INDEX ifexists fullname */
164836 {sqlite3DropIndex(pParse, yymsp[0].minor.yy607, yymsp[-1].minor.yy64);}
164837 break;
164838 case 244: /* cmd ::= VACUUM vinto */
164839 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy626);}
164840 break;
164841 case 245: /* cmd ::= VACUUM nm vinto */
164842 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy626);}
164843 break;
164844 case 248: /* cmd ::= PRAGMA nm dbnm */
164845 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
164846 break;
164847 case 249: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
164848 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
164849 break;
164850 case 250: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
164851 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
164852 break;
164853 case 251: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
164854 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
164855 break;
164856 case 252: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
164857 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
164858 break;
164859 case 255: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
164860 {
164861 Token all;
164862 all.z = yymsp[-3].minor.yy0.z;
164863 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
164864 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy95, &all);
164865 }
164866 break;
164867 case 256: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
164868 {
164869 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy64, yymsp[-4].minor.yy570.a, yymsp[-4].minor.yy570.b, yymsp[-2].minor.yy607, yymsp[0].minor.yy626, yymsp[-10].minor.yy64, yymsp[-8].minor.yy64);
164870 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
164871 }
164872 break;
164873 case 257: /* trigger_time ::= BEFORE|AFTER */
164874 { yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/ }
164875 break;
164876 case 258: /* trigger_time ::= INSTEAD OF */
164877 { yymsp[-1].minor.yy64 = TK_INSTEAD;}
164878 break;
164879 case 259: /* trigger_time ::= */
164880 { yymsp[1].minor.yy64 = TK_BEFORE; }
164881 break;
164882 case 260: /* trigger_event ::= DELETE|INSERT */
164883 case 261: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==261);
164884 {yymsp[0].minor.yy570.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy570.b = 0;}
164885 break;
164886 case 262: /* trigger_event ::= UPDATE OF idlist */
164887 {yymsp[-2].minor.yy570.a = TK_UPDATE; yymsp[-2].minor.yy570.b = yymsp[0].minor.yy240;}
164888 break;
164889 case 263: /* when_clause ::= */
164890 case 282: /* key_opt ::= */ yytestcase(yyruleno==282);
164891 { yymsp[1].minor.yy626 = 0; }
164892 break;
164893 case 264: /* when_clause ::= WHEN expr */
164894 case 283: /* key_opt ::= KEY expr */ yytestcase(yyruleno==283);
164895 { yymsp[-1].minor.yy626 = yymsp[0].minor.yy626; }
164896 break;
164897 case 265: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
164898 {
164899 assert( yymsp[-2].minor.yy95!=0 );
164900 yymsp[-2].minor.yy95->pLast->pNext = yymsp[-1].minor.yy95;
164901 yymsp[-2].minor.yy95->pLast = yymsp[-1].minor.yy95;
164902 }
164903 break;
164904 case 266: /* trigger_cmd_list ::= trigger_cmd SEMI */
164905 {
164906 assert( yymsp[-1].minor.yy95!=0 );
164907 yymsp[-1].minor.yy95->pLast = yymsp[-1].minor.yy95;
164908 }
164909 break;
164910 case 267: /* trnm ::= nm DOT nm */
164911 {
164912 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
164913 sqlite3ErrorMsg(pParse,
164914 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
164915 "statements within triggers");
164916 }
164917 break;
164918 case 268: /* tridxby ::= INDEXED BY nm */
164919 {
164920 sqlite3ErrorMsg(pParse,
164921 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
164922 "within triggers");
164923 }
164924 break;
164925 case 269: /* tridxby ::= NOT INDEXED */
164926 {
164927 sqlite3ErrorMsg(pParse,
164928 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
164929 "within triggers");
164930 }
164931 break;
164932 case 270: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
164933 {yylhsminor.yy95 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy607, yymsp[-3].minor.yy562, yymsp[-1].minor.yy626, yymsp[-7].minor.yy64, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy600);}
164934 yymsp[-8].minor.yy95 = yylhsminor.yy95;
164935 break;
164936 case 271: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
164937 {
164938 yylhsminor.yy95 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy240,yymsp[-2].minor.yy303,yymsp[-6].minor.yy64,yymsp[-1].minor.yy138,yymsp[-7].minor.yy600,yymsp[0].minor.yy600);/*yylhsminor.yy95-overwrites-yymsp[-6].minor.yy64*/
164939 }
164940 yymsp[-7].minor.yy95 = yylhsminor.yy95;
164941 break;
164942 case 272: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
164943 {yylhsminor.yy95 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy626, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy600);}
164944 yymsp[-5].minor.yy95 = yylhsminor.yy95;
164945 break;
164946 case 273: /* trigger_cmd ::= scanpt select scanpt */
164947 {yylhsminor.yy95 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy303, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); /*yylhsminor.yy95-overwrites-yymsp[-1].minor.yy303*/}
164948 yymsp[-2].minor.yy95 = yylhsminor.yy95;
164949 break;
164950 case 274: /* expr ::= RAISE LP IGNORE RP */
164951 {
164952 yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
164953 if( yymsp[-3].minor.yy626 ){
164954 yymsp[-3].minor.yy626->affExpr = OE_Ignore;
164955 }
164956 }
164957 break;
164958 case 275: /* expr ::= RAISE LP raisetype COMMA nm RP */
164959 {
164960 yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
164961 if( yymsp[-5].minor.yy626 ) {
164962 yymsp[-5].minor.yy626->affExpr = (char)yymsp[-3].minor.yy64;
164963 }
164964 }
164965 break;
164966 case 276: /* raisetype ::= ROLLBACK */
164967 {yymsp[0].minor.yy64 = OE_Rollback;}
164968 break;
164969 case 278: /* raisetype ::= FAIL */
164970 {yymsp[0].minor.yy64 = OE_Fail;}
164971 break;
164972 case 279: /* cmd ::= DROP TRIGGER ifexists fullname */
164973 {
164974 sqlite3DropTrigger(pParse,yymsp[0].minor.yy607,yymsp[-1].minor.yy64);
164975 }
164976 break;
164977 case 280: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
164978 {
164979 sqlite3Attach(pParse, yymsp[-3].minor.yy626, yymsp[-1].minor.yy626, yymsp[0].minor.yy626);
164980 }
164981 break;
164982 case 281: /* cmd ::= DETACH database_kw_opt expr */
164983 {
164984 sqlite3Detach(pParse, yymsp[0].minor.yy626);
164985 }
164986 break;
164987 case 284: /* cmd ::= REINDEX */
164988 {sqlite3Reindex(pParse, 0, 0);}
164989 break;
164990 case 285: /* cmd ::= REINDEX nm dbnm */
164991 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
164992 break;
164993 case 286: /* cmd ::= ANALYZE */
164994 {sqlite3Analyze(pParse, 0, 0);}
164995 break;
164996 case 287: /* cmd ::= ANALYZE nm dbnm */
164997 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
164998 break;
164999 case 288: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
165000 {
165001 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy607,&yymsp[0].minor.yy0);
165002 }
165003 break;
165004 case 289: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
165005 {
165006 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
165007 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
165008 }
165009 break;
165010 case 290: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
165011 {
165012 sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy607, &yymsp[0].minor.yy0);
165013 }
165014 break;
165015 case 291: /* add_column_fullname ::= fullname */
165016 {
165017 disableLookaside(pParse);
165018 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy607);
165019 }
165020 break;
165021 case 292: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
165022 {
165023 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy607, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
165024 }
165025 break;
165026 case 293: /* cmd ::= create_vtab */
165027 {sqlite3VtabFinishParse(pParse,0);}
165028 break;
165029 case 294: /* cmd ::= create_vtab LP vtabarglist RP */
165030 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
165031 break;
165032 case 295: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
165033 {
165034 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy64);
165035 }
165036 break;
165037 case 296: /* vtabarg ::= */
165038 {sqlite3VtabArgInit(pParse);}
165039 break;
165040 case 297: /* vtabargtoken ::= ANY */
165041 case 298: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==298);
165042 case 299: /* lp ::= LP */ yytestcase(yyruleno==299);
165043 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
165044 break;
165045 case 300: /* with ::= WITH wqlist */
165046 case 301: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==301);
165047 { sqlite3WithPush(pParse, yymsp[0].minor.yy43, 1); }
165048 break;
165049 case 302: /* wqas ::= AS */
165050 {yymsp[0].minor.yy534 = M10d_Any;}
165051 break;
165052 case 303: /* wqas ::= AS MATERIALIZED */
165053 {yymsp[-1].minor.yy534 = M10d_Yes;}
165054 break;
165055 case 304: /* wqas ::= AS NOT MATERIALIZED */
165056 {yymsp[-2].minor.yy534 = M10d_No;}
165057 break;
165058 case 305: /* wqitem ::= nm eidlist_opt wqas LP select RP */
165059 {
165060 yymsp[-5].minor.yy255 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy562, yymsp[-1].minor.yy303, yymsp[-3].minor.yy534); /*A-overwrites-X*/
165061 }
165062 break;
165063 case 306: /* wqlist ::= wqitem */
165064 {
165065 yymsp[0].minor.yy43 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy255); /*A-overwrites-X*/
165066 }
165067 break;
165068 case 307: /* wqlist ::= wqlist COMMA wqitem */
165069 {
165070 yymsp[-2].minor.yy43 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy43, yymsp[0].minor.yy255);
165071 }
165072 break;
165073 case 308: /* windowdefn_list ::= windowdefn */
165074 { yylhsminor.yy375 = yymsp[0].minor.yy375; }
165075 yymsp[0].minor.yy375 = yylhsminor.yy375;
165076 break;
165077 case 309: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
165078 {
165079 assert( yymsp[0].minor.yy375!=0 );
165080 sqlite3WindowChain(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy375);
165081 yymsp[0].minor.yy375->pNextWin = yymsp[-2].minor.yy375;
165082 yylhsminor.yy375 = yymsp[0].minor.yy375;
165083 }
165084 yymsp[-2].minor.yy375 = yylhsminor.yy375;
165085 break;
165086 case 310: /* windowdefn ::= nm AS LP window RP */
165087 {
165088 if( ALWAYS(yymsp[-1].minor.yy375) ){
165089 yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
165090 }
165091 yylhsminor.yy375 = yymsp[-1].minor.yy375;
165092 }
165093 yymsp[-4].minor.yy375 = yylhsminor.yy375;
165094 break;
165095 case 311: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
165096 {
165097 yymsp[-4].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, 0);
165098 }
165099 break;
165100 case 312: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
165101 {
165102 yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, &yymsp[-5].minor.yy0);
165103 }
165104 yymsp[-5].minor.yy375 = yylhsminor.yy375;
165105 break;
165106 case 313: /* window ::= ORDER BY sortlist frame_opt */
165107 {
165108 yymsp[-3].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, 0);
165109 }
165110 break;
165111 case 314: /* window ::= nm ORDER BY sortlist frame_opt */
165112 {
165113 yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0);
165114 }
165115 yymsp[-4].minor.yy375 = yylhsminor.yy375;
165116 break;
165117 case 315: /* window ::= frame_opt */
165118 case 334: /* filter_over ::= over_clause */ yytestcase(yyruleno==334);
165119 {
165120 yylhsminor.yy375 = yymsp[0].minor.yy375;
165121 }
165122 yymsp[0].minor.yy375 = yylhsminor.yy375;
165123 break;
165124 case 316: /* window ::= nm frame_opt */
165125 {
165126 yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, 0, &yymsp[-1].minor.yy0);
165127 }
165128 yymsp[-1].minor.yy375 = yylhsminor.yy375;
165129 break;
165130 case 317: /* frame_opt ::= */
165131 {
165132 yymsp[1].minor.yy375 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
165133 }
165134 break;
165135 case 318: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
165136 {
165137 yylhsminor.yy375 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy64, yymsp[-1].minor.yy81.eType, yymsp[-1].minor.yy81.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy534);
165138 }
165139 yymsp[-2].minor.yy375 = yylhsminor.yy375;
165140 break;
165141 case 319: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
165142 {
165143 yylhsminor.yy375 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy64, yymsp[-3].minor.yy81.eType, yymsp[-3].minor.yy81.pExpr, yymsp[-1].minor.yy81.eType, yymsp[-1].minor.yy81.pExpr, yymsp[0].minor.yy534);
165144 }
165145 yymsp[-5].minor.yy375 = yylhsminor.yy375;
165146 break;
165147 case 321: /* frame_bound_s ::= frame_bound */
165148 case 323: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==323);
165149 {yylhsminor.yy81 = yymsp[0].minor.yy81;}
165150 yymsp[0].minor.yy81 = yylhsminor.yy81;
165151 break;
165152 case 322: /* frame_bound_s ::= UNBOUNDED PRECEDING */
165153 case 324: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==324);
165154 case 326: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==326);
165155 {yylhsminor.yy81.eType = yymsp[-1].major; yylhsminor.yy81.pExpr = 0;}
165156 yymsp[-1].minor.yy81 = yylhsminor.yy81;
165157 break;
165158 case 325: /* frame_bound ::= expr PRECEDING|FOLLOWING */
165159 {yylhsminor.yy81.eType = yymsp[0].major; yylhsminor.yy81.pExpr = yymsp[-1].minor.yy626;}
165160 yymsp[-1].minor.yy81 = yylhsminor.yy81;
165161 break;
165162 case 327: /* frame_exclude_opt ::= */
165163 {yymsp[1].minor.yy534 = 0;}
165164 break;
165165 case 328: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
165166 {yymsp[-1].minor.yy534 = yymsp[0].minor.yy534;}
165167 break;
165168 case 329: /* frame_exclude ::= NO OTHERS */
165169 case 330: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==330);
165170 {yymsp[-1].minor.yy534 = yymsp[-1].major; /*A-overwrites-X*/}
165171 break;
165172 case 331: /* frame_exclude ::= GROUP|TIES */
165173 {yymsp[0].minor.yy534 = yymsp[0].major; /*A-overwrites-X*/}
165174 break;
165175 case 332: /* window_clause ::= WINDOW windowdefn_list */
165176 { yymsp[-1].minor.yy375 = yymsp[0].minor.yy375; }
165177 break;
165178 case 333: /* filter_over ::= filter_clause over_clause */
165179 {
165180 if( yymsp[0].minor.yy375 ){
165181 yymsp[0].minor.yy375->pFilter = yymsp[-1].minor.yy626;
165182 }else{
165183 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
165184 }
165185 yylhsminor.yy375 = yymsp[0].minor.yy375;
165186 }
165187 yymsp[-1].minor.yy375 = yylhsminor.yy375;
165188 break;
165189 case 335: /* filter_over ::= filter_clause */
165190 {
165191 yylhsminor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
165192 if( yylhsminor.yy375 ){
165193 yylhsminor.yy375->eFrmType = TK_FILTER;
165194 yylhsminor.yy375->pFilter = yymsp[0].minor.yy626;
165195 }else{
165196 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy626);
165197 }
165198 }
165199 yymsp[0].minor.yy375 = yylhsminor.yy375;
165200 break;
165201 case 336: /* over_clause ::= OVER LP window RP */
165202 {
165203 yymsp[-3].minor.yy375 = yymsp[-1].minor.yy375;
165204 assert( yymsp[-3].minor.yy375!=0 );
165205 }
165206 break;
165207 case 337: /* over_clause ::= OVER nm */
165208 {
165209 yymsp[-1].minor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
165210 if( yymsp[-1].minor.yy375 ){
165211 yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
165212 }
165213 }
165214 break;
165215 case 338: /* filter_clause ::= FILTER LP WHERE expr RP */
165216 { yymsp[-4].minor.yy626 = yymsp[-1].minor.yy626; }
165217 break;
165218 default:
165219 /* (339) input ::= cmdlist */ yytestcase(yyruleno==339);
165220 /* (340) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==340);
165221 /* (341) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=341);
165222 /* (342) ecmd ::= SEMI */ yytestcase(yyruleno==342);
165223 /* (343) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==343);
165224 /* (344) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=344);
165225 /* (345) trans_opt ::= */ yytestcase(yyruleno==345);
165226 /* (346) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==346);
165227 /* (347) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==347);
165228 /* (348) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==348);
165229 /* (349) savepoint_opt ::= */ yytestcase(yyruleno==349);
165230 /* (350) cmd ::= create_table create_table_args */ yytestcase(yyruleno==350);
165231 /* (351) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=351);
165232 /* (352) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==352);
165233 /* (353) columnlist ::= columnname carglist */ yytestcase(yyruleno==353);
165234 /* (354) nm ::= ID|INDEXED */ yytestcase(yyruleno==354);
165235 /* (355) nm ::= STRING */ yytestcase(yyruleno==355);
165236 /* (356) nm ::= JOIN_KW */ yytestcase(yyruleno==356);
165237 /* (357) typetoken ::= typename */ yytestcase(yyruleno==357);
165238 /* (358) typename ::= ID|STRING */ yytestcase(yyruleno==358);
165239 /* (359) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=359);
165240 /* (360) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
165241 /* (361) carglist ::= carglist ccons */ yytestcase(yyruleno==361);
165242 /* (362) carglist ::= */ yytestcase(yyruleno==362);
165243 /* (363) ccons ::= NULL onconf */ yytestcase(yyruleno==363);
165244 /* (364) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==364);
165245 /* (365) ccons ::= AS generated */ yytestcase(yyruleno==365);
165246 /* (366) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==366);
165247 /* (367) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==367);
165248 /* (368) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=368);
165249 /* (369) tconscomma ::= */ yytestcase(yyruleno==369);
165250 /* (370) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=370);
165251 /* (371) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=371);
165252 /* (372) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=372);
165253 /* (373) oneselect ::= values */ yytestcase(yyruleno==373);
165254 /* (374) sclp ::= selcollist COMMA */ yytestcase(yyruleno==374);
165255 /* (375) as ::= ID|STRING */ yytestcase(yyruleno==375);
165256 /* (376) returning ::= */ yytestcase(yyruleno==376);
165257 /* (377) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=377);
165258 /* (378) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==378);
165259 /* (379) exprlist ::= nexprlist */ yytestcase(yyruleno==379);
165260 /* (380) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=380);
165261 /* (381) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=381);
165262 /* (382) nmnum ::= ON */ yytestcase(yyruleno==382);
165263 /* (383) nmnum ::= DELETE */ yytestcase(yyruleno==383);
165264 /* (384) nmnum ::= DEFAULT */ yytestcase(yyruleno==384);
165265 /* (385) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==385);
165266 /* (386) foreach_clause ::= */ yytestcase(yyruleno==386);
165267 /* (387) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==387);
165268 /* (388) trnm ::= nm */ yytestcase(yyruleno==388);
165269 /* (389) tridxby ::= */ yytestcase(yyruleno==389);
165270 /* (390) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==390);
165271 /* (391) database_kw_opt ::= */ yytestcase(yyruleno==391);
165272 /* (392) kwcolumn_opt ::= */ yytestcase(yyruleno==392);
165273 /* (393) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==393);
165274 /* (394) vtabarglist ::= vtabarg */ yytestcase(yyruleno==394);
165275 /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==395);
165276 /* (396) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==396);
165277 /* (397) anylist ::= */ yytestcase(yyruleno==397);
165278 /* (398) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==398);
165279 /* (399) anylist ::= anylist ANY */ yytestcase(yyruleno==399);
165280 /* (400) with ::= */ yytestcase(yyruleno==400);
165281 break;
165282 /********** End reduce actions ************************************************/
165283 };
165284 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
165285 yygoto = yyRuleInfoLhs[yyruleno];
@@ -166398,10 +166444,13 @@
166398 case CC_MINUS: {
166399 if( z[1]=='-' ){
166400 for(i=2; (c=z[i])!=0 && c!='\n'; i++){}
166401 *tokenType = TK_SPACE; /* IMP: R-22934-25134 */
166402 return i;
 
 
 
166403 }
166404 *tokenType = TK_MINUS;
166405 return 1;
166406 }
166407 case CC_LP: {
@@ -167394,13 +167443,10 @@
167394 SQLITE_PRIVATE int sqlite3Fts2Init(sqlite3*);
167395 #endif
167396 #ifdef SQLITE_ENABLE_FTS5
167397 SQLITE_PRIVATE int sqlite3Fts5Init(sqlite3*);
167398 #endif
167399 #ifdef SQLITE_ENABLE_JSON1
167400 SQLITE_PRIVATE int sqlite3Json1Init(sqlite3*);
167401 #endif
167402 #ifdef SQLITE_ENABLE_STMTVTAB
167403 SQLITE_PRIVATE int sqlite3StmtVtabInit(sqlite3*);
167404 #endif
167405
167406 /*
@@ -167431,12 +167477,12 @@
167431 #endif
167432 #ifdef SQLITE_ENABLE_DBSTAT_VTAB
167433 sqlite3DbstatRegister,
167434 #endif
167435 sqlite3TestExtInit,
167436 #ifdef SQLITE_ENABLE_JSON1
167437 sqlite3Json1Init,
167438 #endif
167439 #ifdef SQLITE_ENABLE_STMTVTAB
167440 sqlite3StmtVtabInit,
167441 #endif
167442 #ifdef SQLITE_ENABLE_BYTECODE_VTAB
@@ -192022,11 +192068,11 @@
192022 }
192023 #endif /* defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4) */
192024 #endif /* !defined(SQLITE_DISABLE_FTS3_UNICODE) */
192025
192026 /************** End of fts3_unicode2.c ***************************************/
192027 /************** Begin file json1.c *******************************************/
192028 /*
192029 ** 2015-08-12
192030 **
192031 ** The author disclaims copyright to this source code. In place of
192032 ** a legal notice, here is a blessing:
@@ -192035,72 +192081,23 @@
192035 ** May you find forgiveness for yourself and forgive others.
192036 ** May you share freely, never taking more than you give.
192037 **
192038 ******************************************************************************
192039 **
192040 ** This SQLite extension implements JSON functions. The interface is
192041 ** modeled after MySQL JSON functions:
192042 **
192043 ** https://dev.mysql.com/doc/refman/5.7/en/json.html
 
192044 **
192045 ** For the time being, all JSON is stored as pure text. (We might add
192046 ** a JSONB type in the future which stores a binary encoding of JSON in
192047 ** a BLOB, but there is no support for JSONB in the current implementation.
192048 ** This implementation parses JSON text at 250 MB/s, so it is hard to see
192049 ** how JSONB might improve on that.)
192050 */
192051 #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_JSON1)
192052 #if !defined(SQLITEINT_H)
192053 /* #include "sqlite3ext.h" */
192054 #endif
192055 SQLITE_EXTENSION_INIT1
192056
192057 /* If compiling this extension separately (why would anybody do that when
192058 ** it is built into the amalgamation?) we must set NDEBUG if SQLITE_DEBUG
192059 ** is not defined *before* including <assert.h>, in order to disable asserts().
192060 */
192061 #if !defined(SQLITE_AMALGAMATION) && !defined(SQLITE_DEBUG)
192062 # define NDEBUG 1
192063 #endif
192064
192065 /* #include <assert.h> */
192066 /* #include <string.h> */
192067 /* #include <stdlib.h> */
192068 /* #include <stdarg.h> */
192069
192070 /* Mark a function parameter as unused, to suppress nuisance compiler
192071 ** warnings. */
192072 #ifndef UNUSED_PARAM
192073 # define UNUSED_PARAM(X) (void)(X)
192074 #endif
192075
192076 #ifndef LARGEST_INT64
192077 # define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32))
192078 # define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64)
192079 #endif
192080
192081 #ifndef deliberate_fall_through
192082 # define deliberate_fall_through
192083 #endif
192084
192085 /*
192086 ** Versions of isspace(), isalnum() and isdigit() to which it is safe
192087 ** to pass signed char values.
192088 */
192089 #ifdef sqlite3Isdigit
192090 /* Use the SQLite core versions if this routine is part of the
192091 ** SQLite amalgamation */
192092 # define safe_isdigit(x) sqlite3Isdigit(x)
192093 # define safe_isalnum(x) sqlite3Isalnum(x)
192094 # define safe_isxdigit(x) sqlite3Isxdigit(x)
192095 #else
192096 /* Use the standard library for separate compilation */
192097 #include <ctype.h> /* amalgamator: keep */
192098 # define safe_isdigit(x) isdigit((unsigned char)(x))
192099 # define safe_isalnum(x) isalnum((unsigned char)(x))
192100 # define safe_isxdigit(x) isxdigit((unsigned char)(x))
192101 #endif
192102
192103 /*
192104 ** Growing our own isspace() routine this way is twice as fast as
192105 ** the library isspace() function, resulting in a 7% overall performance
192106 ** increase for the parser. (Ubuntu14.10 gcc 4.8.4 x64 with -Os).
@@ -192121,48 +192118,18 @@
192121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192125 };
192126 #define safe_isspace(x) (jsonIsSpace[(unsigned char)x])
192127
192128 #ifndef SQLITE_AMALGAMATION
192129 /* Unsigned integer types. These are already defined in the sqliteInt.h,
192130 ** but the definitions need to be repeated for separate compilation. */
192131 typedef sqlite3_uint64 u64;
192132 typedef unsigned int u32;
192133 typedef unsigned short int u16;
192134 typedef unsigned char u8;
192135 # if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_MUTATION_TEST)
192136 # define SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS 1
192137 # endif
192138 # if defined(SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS)
192139 # define ALWAYS(X) (1)
192140 # define NEVER(X) (0)
192141 # elif !defined(NDEBUG)
192142 # define ALWAYS(X) ((X)?1:(assert(0),0))
192143 # define NEVER(X) ((X)?(assert(0),1):0)
192144 # else
192145 # define ALWAYS(X) (X)
192146 # define NEVER(X) (X)
192147 # endif
192148 # define testcase(X)
192149 #endif
192150 #if !defined(SQLITE_DEBUG) && !defined(SQLITE_COVERAGE_TEST)
192151 # define VVA(X)
192152 #else
192153 # define VVA(X) X
192154 #endif
192155
192156 /*
192157 ** Some of the testcase() macros in this file are problematic for gcov
192158 ** in that they generate false-miss errors randomly. This is a gcov problem,
192159 ** not a problem in this case. But to work around it, we disable the
192160 ** problematic test cases for production builds.
192161 */
192162 #define json_testcase(X)
192163
192164 /* Objects */
192165 typedef struct JsonString JsonString;
192166 typedef struct JsonNode JsonNode;
192167 typedef struct JsonParse JsonParse;
192168
@@ -192616,14 +192583,14 @@
192616 /*
192617 ** Convert a 4-byte hex string into an integer
192618 */
192619 static u32 jsonHexToInt4(const char *z){
192620 u32 v;
192621 assert( safe_isxdigit(z[0]) );
192622 assert( safe_isxdigit(z[1]) );
192623 assert( safe_isxdigit(z[2]) );
192624 assert( safe_isxdigit(z[3]) );
192625 v = (jsonHexToInt(z[0])<<12)
192626 + (jsonHexToInt(z[1])<<8)
192627 + (jsonHexToInt(z[2])<<4)
192628 + jsonHexToInt(z[3]);
192629 return v;
@@ -192854,11 +192821,11 @@
192854 /*
192855 ** Return true if z[] begins with 4 (or more) hexadecimal digits
192856 */
192857 static int jsonIs4Hex(const char *z){
192858 int i;
192859 for(i=0; i<4; i++) if( !safe_isxdigit(z[i]) ) return 0;
192860 return 1;
192861 }
192862
192863 /*
192864 ** Parse a single JSON value which begins at pParse->zJson[i]. Return the
@@ -192873,17 +192840,17 @@
192873 u32 j;
192874 int iThis;
192875 int x;
192876 JsonNode *pNode;
192877 const char *z = pParse->zJson;
192878 while( safe_isspace(z[i]) ){ i++; }
192879 if( (c = z[i])=='{' ){
192880 /* Parse object */
192881 iThis = jsonParseAddNode(pParse, JSON_OBJECT, 0, 0);
192882 if( iThis<0 ) return -1;
192883 for(j=i+1;;j++){
192884 while( safe_isspace(z[j]) ){ j++; }
192885 if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1;
192886 x = jsonParseValue(pParse, j);
192887 if( x<0 ){
192888 pParse->iDepth--;
192889 if( x==(-2) && pParse->nNode==(u32)iThis+1 ) return j+1;
@@ -192892,18 +192859,18 @@
192892 if( pParse->oom ) return -1;
192893 pNode = &pParse->aNode[pParse->nNode-1];
192894 if( pNode->eType!=JSON_STRING ) return -1;
192895 pNode->jnFlags |= JNODE_LABEL;
192896 j = x;
192897 while( safe_isspace(z[j]) ){ j++; }
192898 if( z[j]!=':' ) return -1;
192899 j++;
192900 x = jsonParseValue(pParse, j);
192901 pParse->iDepth--;
192902 if( x<0 ) return -1;
192903 j = x;
192904 while( safe_isspace(z[j]) ){ j++; }
192905 c = z[j];
192906 if( c==',' ) continue;
192907 if( c!='}' ) return -1;
192908 break;
192909 }
@@ -192913,20 +192880,20 @@
192913 /* Parse array */
192914 iThis = jsonParseAddNode(pParse, JSON_ARRAY, 0, 0);
192915 if( iThis<0 ) return -1;
192916 memset(&pParse->aNode[iThis].u, 0, sizeof(pParse->aNode[iThis].u));
192917 for(j=i+1;;j++){
192918 while( safe_isspace(z[j]) ){ j++; }
192919 if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1;
192920 x = jsonParseValue(pParse, j);
192921 pParse->iDepth--;
192922 if( x<0 ){
192923 if( x==(-3) && pParse->nNode==(u32)iThis+1 ) return j+1;
192924 return -1;
192925 }
192926 j = x;
192927 while( safe_isspace(z[j]) ){ j++; }
192928 c = z[j];
192929 if( c==',' ) continue;
192930 if( c!=']' ) return -1;
192931 break;
192932 }
@@ -192959,21 +192926,21 @@
192959 jsonParseAddNode(pParse, JSON_STRING, j+1-i, &z[i]);
192960 if( !pParse->oom ) pParse->aNode[pParse->nNode-1].jnFlags = jnFlags;
192961 return j+1;
192962 }else if( c=='n'
192963 && strncmp(z+i,"null",4)==0
192964 && !safe_isalnum(z[i+4]) ){
192965 jsonParseAddNode(pParse, JSON_NULL, 0, 0);
192966 return i+4;
192967 }else if( c=='t'
192968 && strncmp(z+i,"true",4)==0
192969 && !safe_isalnum(z[i+4]) ){
192970 jsonParseAddNode(pParse, JSON_TRUE, 0, 0);
192971 return i+4;
192972 }else if( c=='f'
192973 && strncmp(z+i,"false",5)==0
192974 && !safe_isalnum(z[i+5]) ){
192975 jsonParseAddNode(pParse, JSON_FALSE, 0, 0);
192976 return i+5;
192977 }else if( c=='-' || (c>='0' && c<='9') ){
192978 /* Parse number */
192979 u8 seenDP = 0;
@@ -193040,11 +193007,11 @@
193040 pParse->zJson = zJson;
193041 i = jsonParseValue(pParse, 0);
193042 if( pParse->oom ) i = -1;
193043 if( i>0 ){
193044 assert( pParse->iDepth==0 );
193045 while( safe_isspace(zJson[i]) ) i++;
193046 if( zJson[i] ) i = -1;
193047 }
193048 if( i<=0 ){
193049 if( pCtx!=0 ){
193050 if( pParse->oom ){
@@ -193268,11 +193235,11 @@
193268 return pNode;
193269 }
193270 }else if( zPath[0]=='[' ){
193271 i = 0;
193272 j = 1;
193273 while( safe_isdigit(zPath[j]) ){
193274 i = i*10 + zPath[j] - '0';
193275 j++;
193276 }
193277 if( j<2 || zPath[j]!=']' ){
193278 if( zPath[1]=='#' ){
@@ -193289,17 +193256,17 @@
193289 iBase += pBase->u.iAppend;
193290 pBase = &pParse->aNode[iBase];
193291 j = 1;
193292 }
193293 j = 2;
193294 if( zPath[2]=='-' && safe_isdigit(zPath[3]) ){
193295 unsigned int x = 0;
193296 j = 3;
193297 do{
193298 x = x*10 + zPath[j] - '0';
193299 j++;
193300 }while( safe_isdigit(zPath[j]) );
193301 if( x>i ) return 0;
193302 i -= x;
193303 }
193304 if( zPath[j]!=']' ){
193305 *pzErr = zPath;
@@ -193514,11 +193481,11 @@
193514 static void jsonTest1Func(
193515 sqlite3_context *ctx,
193516 int argc,
193517 sqlite3_value **argv
193518 ){
193519 UNUSED_PARAM(argc);
193520 sqlite3_result_int(ctx, sqlite3_value_subtype(argv[0])==JSON_SUBTYPE);
193521 }
193522 #endif /* SQLITE_DEBUG */
193523
193524 /****************************************************************************
@@ -193535,11 +193502,11 @@
193535 sqlite3_context *ctx,
193536 int argc,
193537 sqlite3_value **argv
193538 ){
193539 JsonString jx;
193540 UNUSED_PARAM(argc);
193541
193542 jsonInit(&jx, ctx);
193543 jsonAppendValue(&jx, argv[0]);
193544 jsonResult(&jx);
193545 sqlite3_result_subtype(ctx, JSON_SUBTYPE);
@@ -193606,55 +193573,118 @@
193606 }
193607 }
193608 sqlite3_result_int64(ctx, n);
193609 }
193610
 
 
 
 
 
 
 
 
 
193611 /*
193612 ** json_extract(JSON, PATH, ...)
 
 
193613 **
193614 ** Return the element described by PATH. Return NULL if there is no
193615 ** PATH element. If there are multiple PATHs, then return a JSON array
193616 ** with the result from each path. Throw an error if the JSON or any PATH
193617 ** is malformed.
 
 
 
 
 
 
 
 
 
 
193618 */
193619 static void jsonExtractFunc(
193620 sqlite3_context *ctx,
193621 int argc,
193622 sqlite3_value **argv
193623 ){
193624 JsonParse *p; /* The parse */
193625 JsonNode *pNode;
193626 const char *zPath;
 
193627 JsonString jx;
193628 int i;
193629
193630 if( argc<2 ) return;
193631 p = jsonParseCached(ctx, argv, ctx);
193632 if( p==0 ) return;
193633 jsonInit(&jx, ctx);
193634 jsonAppendChar(&jx, '[');
193635 for(i=1; i<argc; i++){
193636 zPath = (const char*)sqlite3_value_text(argv[i]);
193637 pNode = jsonLookup(p, zPath, 0, ctx);
193638 if( p->nErr ) break;
193639 if( argc>2 ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193640 jsonAppendSeparator(&jx);
193641 if( pNode ){
193642 jsonRenderNode(pNode, &jx, 0);
193643 }else{
193644 jsonAppendRaw(&jx, "null", 4);
193645 }
193646 }else if( pNode ){
193647 jsonReturn(pNode, ctx, 0);
193648 }
193649 }
193650 if( argc>2 && i==argc ){
193651 jsonAppendChar(&jx, ']');
193652 jsonResult(&jx);
193653 sqlite3_result_subtype(ctx, JSON_SUBTYPE);
193654 }
193655 jsonReset(&jx);
193656 }
193657
193658 /* This is the RFC 7396 MergePatch algorithm.
193659 */
193660 static JsonNode *jsonMergePatch(
@@ -193746,11 +193776,11 @@
193746 ){
193747 JsonParse x; /* The JSON that is being patched */
193748 JsonParse y; /* The patch */
193749 JsonNode *pResult; /* The result of the merge */
193750
193751 UNUSED_PARAM(argc);
193752 if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return;
193753 if( jsonParse(&y, ctx, (const char*)sqlite3_value_text(argv[1])) ){
193754 jsonParseReset(&x);
193755 return;
193756 }
@@ -193867,11 +193897,11 @@
193867 zPath = (const char*)sqlite3_value_text(argv[i]);
193868 pNode = jsonLookup(&x, zPath, 0, ctx);
193869 if( x.nErr ) goto replace_err;
193870 if( pNode ){
193871 assert( pNode->eU==0 || pNode->eU==1 || pNode->eU==4 );
193872 json_testcase( pNode->eU!=0 && pNode->eU!=1 );
193873 pNode->jnFlags |= (u8)JNODE_REPLACE;
193874 VVA( pNode->eU = 4 );
193875 pNode->u.iReplace = i + 1;
193876 }
193877 }
@@ -193882,10 +193912,11 @@
193882 jsonReturnJson(x.aNode, ctx, argv);
193883 }
193884 replace_err:
193885 jsonParseReset(&x);
193886 }
 
193887
193888 /*
193889 ** json_set(JSON, PATH, VALUE, ...)
193890 **
193891 ** Set the value at PATH to VALUE. Create the PATH if it does not already
@@ -193905,11 +193936,11 @@
193905 JsonParse x; /* The parse */
193906 JsonNode *pNode;
193907 const char *zPath;
193908 u32 i;
193909 int bApnd;
193910 int bIsSet = *(int*)sqlite3_user_data(ctx);
193911
193912 if( argc<1 ) return;
193913 if( (argc&1)==0 ) {
193914 jsonWrongNumArgs(ctx, bIsSet ? "set" : "insert");
193915 return;
@@ -193924,11 +193955,11 @@
193924 sqlite3_result_error_nomem(ctx);
193925 goto jsonSetDone;
193926 }else if( x.nErr ){
193927 goto jsonSetDone;
193928 }else if( pNode && (bApnd || bIsSet) ){
193929 json_testcase( pNode->eU!=0 && pNode->eU!=1 && pNode->eU!=4 );
193930 assert( pNode->eU!=3 || pNode->eU!=5 );
193931 VVA( pNode->eU = 4 );
193932 pNode->jnFlags |= (u8)JNODE_REPLACE;
193933 pNode->u.iReplace = i + 1;
193934 }
@@ -193945,12 +193976,12 @@
193945
193946 /*
193947 ** json_type(JSON)
193948 ** json_type(JSON, PATH)
193949 **
193950 ** Return the top-level "type" of a JSON string. Throw an error if
193951 ** either the JSON or PATH inputs are not well-formed.
193952 */
193953 static void jsonTypeFunc(
193954 sqlite3_context *ctx,
193955 int argc,
193956 sqlite3_value **argv
@@ -193982,11 +194013,11 @@
193982 sqlite3_context *ctx,
193983 int argc,
193984 sqlite3_value **argv
193985 ){
193986 JsonParse *p; /* The parse */
193987 UNUSED_PARAM(argc);
193988 p = jsonParseCached(ctx, argv, 0);
193989 sqlite3_result_int(ctx, p!=0);
193990 }
193991
193992
@@ -194002,11 +194033,11 @@
194002 sqlite3_context *ctx,
194003 int argc,
194004 sqlite3_value **argv
194005 ){
194006 JsonString *pStr;
194007 UNUSED_PARAM(argc);
194008 pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr));
194009 if( pStr ){
194010 if( pStr->zBuf==0 ){
194011 jsonInit(pStr, ctx);
194012 jsonAppendChar(pStr, '[');
@@ -194062,12 +194093,12 @@
194062 int inStr = 0;
194063 int nNest = 0;
194064 char *z;
194065 char c;
194066 JsonString *pStr;
194067 UNUSED_PARAM(argc);
194068 UNUSED_PARAM(argv);
194069 pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
194070 #ifdef NEVER
194071 /* pStr is always non-NULL since jsonArrayStep() or jsonObjectStep() will
194072 ** always have been called to initalize it */
194073 if( NEVER(!pStr) ) return;
@@ -194107,11 +194138,11 @@
194107 sqlite3_value **argv
194108 ){
194109 JsonString *pStr;
194110 const char *z;
194111 u32 n;
194112 UNUSED_PARAM(argc);
194113 pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr));
194114 if( pStr ){
194115 if( pStr->zBuf==0 ){
194116 jsonInit(pStr, ctx);
194117 jsonAppendChar(pStr, '{');
@@ -194198,14 +194229,14 @@
194198 ** the last two columns in the table. Should this ever changes, be
194199 ** sure to update the xBestIndex method. */
194200 #define JEACH_JSON 8
194201 #define JEACH_ROOT 9
194202
194203 UNUSED_PARAM(pzErr);
194204 UNUSED_PARAM(argv);
194205 UNUSED_PARAM(argc);
194206 UNUSED_PARAM(pAux);
194207 rc = sqlite3_declare_vtab(db,
194208 "CREATE TABLE x(key,value,type,atom,id,parent,fullkey,path,"
194209 "json HIDDEN,root HIDDEN)");
194210 if( rc==SQLITE_OK ){
194211 pNew = *ppVtab = sqlite3_malloc( sizeof(*pNew) );
@@ -194224,11 +194255,11 @@
194224
194225 /* constructor for a JsonEachCursor object for json_each(). */
194226 static int jsonEachOpenEach(sqlite3_vtab *p, sqlite3_vtab_cursor **ppCursor){
194227 JsonEachCursor *pCur;
194228
194229 UNUSED_PARAM(p);
194230 pCur = sqlite3_malloc( sizeof(*pCur) );
194231 if( pCur==0 ) return SQLITE_NOMEM;
194232 memset(pCur, 0, sizeof(*pCur));
194233 *ppCursor = &pCur->base;
194234 return SQLITE_OK;
@@ -194284,11 +194315,11 @@
194284 u32 iUp = p->sParse.aUp[p->i];
194285 JsonNode *pUp = &p->sParse.aNode[iUp];
194286 p->eType = pUp->eType;
194287 if( pUp->eType==JSON_ARRAY ){
194288 assert( pUp->eU==0 || pUp->eU==3 );
194289 json_testcase( pUp->eU==3 );
194290 VVA( pUp->eU = 3 );
194291 if( iUp==p->i-1 ){
194292 pUp->u.iKey = 0;
194293 }else{
194294 pUp->u.iKey++;
@@ -194471,11 +194502,11 @@
194471 const struct sqlite3_index_constraint *pConstraint;
194472
194473 /* This implementation assumes that JSON and ROOT are the last two
194474 ** columns in the table */
194475 assert( JEACH_ROOT == JEACH_JSON+1 );
194476 UNUSED_PARAM(tab);
194477 aIdx[0] = aIdx[1] = -1;
194478 pConstraint = pIdxInfo->aConstraint;
194479 for(i=0; i<pIdxInfo->nConstraint; i++, pConstraint++){
194480 int iCol;
194481 int iMask;
@@ -194527,12 +194558,12 @@
194527 JsonEachCursor *p = (JsonEachCursor*)cur;
194528 const char *z;
194529 const char *zRoot = 0;
194530 sqlite3_int64 n;
194531
194532 UNUSED_PARAM(idxStr);
194533 UNUSED_PARAM(argc);
194534 jsonEachCursorReset(p);
194535 if( idxNum==0 ) return SQLITE_OK;
194536 z = (const char*)sqlite3_value_text(argv[0]);
194537 if( z==0 ) return SQLITE_OK;
194538 n = sqlite3_value_bytes(argv[0]);
@@ -194653,112 +194684,72 @@
194653 0, /* xRelease */
194654 0, /* xRollbackTo */
194655 0 /* xShadowName */
194656 };
194657 #endif /* SQLITE_OMIT_VIRTUALTABLE */
194658
194659 /****************************************************************************
194660 ** The following routines are the only publically visible identifiers in this
194661 ** file. Call the following routines in order to register the various SQL
194662 ** functions and the virtual table implemented by this file.
194663 ****************************************************************************/
194664
194665 SQLITE_PRIVATE int sqlite3Json1Init(sqlite3 *db){
194666 int rc = SQLITE_OK;
194667 unsigned int i;
194668 static const struct {
194669 const char *zName;
194670 int nArg;
194671 int flag;
194672 void (*xFunc)(sqlite3_context*,int,sqlite3_value**);
194673 } aFunc[] = {
194674 { "json", 1, 0, jsonRemoveFunc },
194675 { "json_array", -1, 0, jsonArrayFunc },
194676 { "json_array_length", 1, 0, jsonArrayLengthFunc },
194677 { "json_array_length", 2, 0, jsonArrayLengthFunc },
194678 { "json_extract", -1, 0, jsonExtractFunc },
194679 { "json_insert", -1, 0, jsonSetFunc },
194680 { "json_object", -1, 0, jsonObjectFunc },
194681 { "json_patch", 2, 0, jsonPatchFunc },
194682 { "json_quote", 1, 0, jsonQuoteFunc },
194683 { "json_remove", -1, 0, jsonRemoveFunc },
194684 { "json_replace", -1, 0, jsonReplaceFunc },
194685 { "json_set", -1, 1, jsonSetFunc },
194686 { "json_type", 1, 0, jsonTypeFunc },
194687 { "json_type", 2, 0, jsonTypeFunc },
194688 { "json_valid", 1, 0, jsonValidFunc },
194689
194690 #if SQLITE_DEBUG
194691 /* DEBUG and TESTING functions */
194692 { "json_parse", 1, 0, jsonParseFunc },
194693 { "json_test1", 1, 0, jsonTest1Func },
194694 #endif
194695 };
194696 static const struct {
194697 const char *zName;
194698 int nArg;
194699 void (*xStep)(sqlite3_context*,int,sqlite3_value**);
194700 void (*xFinal)(sqlite3_context*);
194701 void (*xValue)(sqlite3_context*);
194702 } aAgg[] = {
194703 { "json_group_array", 1,
194704 jsonArrayStep, jsonArrayFinal, jsonArrayValue },
194705 { "json_group_object", 2,
194706 jsonObjectStep, jsonObjectFinal, jsonObjectValue },
194707 };
194708 #ifndef SQLITE_OMIT_VIRTUALTABLE
194709 static const struct {
194710 const char *zName;
194711 sqlite3_module *pModule;
 
 
194712 } aMod[] = {
194713 { "json_each", &jsonEachModule },
194714 { "json_tree", &jsonTreeModule },
194715 };
194716 #endif
194717 static const int enc =
194718 SQLITE_UTF8 |
194719 SQLITE_DETERMINISTIC |
194720 SQLITE_INNOCUOUS;
194721 for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
194722 rc = sqlite3_create_function(db, aFunc[i].zName, aFunc[i].nArg, enc,
194723 (void*)&aFunc[i].flag,
194724 aFunc[i].xFunc, 0, 0);
194725 }
194726 #ifndef SQLITE_OMIT_WINDOWFUNC
194727 for(i=0; i<sizeof(aAgg)/sizeof(aAgg[0]) && rc==SQLITE_OK; i++){
194728 rc = sqlite3_create_window_function(db, aAgg[i].zName, aAgg[i].nArg,
194729 SQLITE_SUBTYPE | enc, 0,
194730 aAgg[i].xStep, aAgg[i].xFinal,
194731 aAgg[i].xValue, jsonGroupInverse, 0);
194732 }
194733 #endif
194734 #ifndef SQLITE_OMIT_VIRTUALTABLE
194735 for(i=0; i<sizeof(aMod)/sizeof(aMod[0]) && rc==SQLITE_OK; i++){
194736 rc = sqlite3_create_module(db, aMod[i].zName, aMod[i].pModule, 0);
194737 }
194738 #endif
194739 return rc;
194740 }
194741
194742
194743 #ifndef SQLITE_CORE
194744 #ifdef _WIN32
194745 __declspec(dllexport)
194746 #endif
194747 SQLITE_API int sqlite3_json_init(
194748 sqlite3 *db,
194749 char **pzErrMsg,
194750 const sqlite3_api_routines *pApi
194751 ){
194752 SQLITE_EXTENSION_INIT2(pApi);
194753 (void)pzErrMsg; /* Unused parameter */
194754 return sqlite3Json1Init(db);
194755 }
194756 #endif
194757 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_JSON1) */
194758
194759 /************** End of json1.c ***********************************************/
194760 /************** Begin file rtree.c *******************************************/
194761 /*
194762 ** 2001 September 15
194763 **
194764 ** The author disclaims copyright to this source code. In place of
@@ -199188,15 +199179,11 @@
199188 # define GEODEBUG(X) if(geo_debug)printf X
199189 #else
199190 # define GEODEBUG(X)
199191 #endif
199192
199193 #ifndef JSON_NULL /* The following stuff repeats things found in json1 */
199194 /*
199195 ** Versions of isspace(), isalnum() and isdigit() to which it is safe
199196 ** to pass signed char values.
199197 */
199198 #ifdef sqlite3Isdigit
199199 /* Use the SQLite core versions if this routine is part of the
199200 ** SQLite amalgamation */
199201 # define safe_isdigit(x) sqlite3Isdigit(x)
199202 # define safe_isalnum(x) sqlite3Isalnum(x)
@@ -199207,10 +199194,11 @@
199207 # define safe_isdigit(x) isdigit((unsigned char)(x))
199208 # define safe_isalnum(x) isalnum((unsigned char)(x))
199209 # define safe_isxdigit(x) isxdigit((unsigned char)(x))
199210 #endif
199211
 
199212 /*
199213 ** Growing our own isspace() routine this way is twice as fast as
199214 ** the library isspace() function.
199215 */
199216 static const char geopolyIsSpace[] = {
@@ -199229,11 +199217,11 @@
199229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199233 };
199234 #define safe_isspace(x) (geopolyIsSpace[(unsigned char)x])
199235 #endif /* JSON NULL - back to original code */
199236
199237 /* Compiler and version */
199238 #ifndef GCC_VERSION
199239 #if defined(__GNUC__) && !defined(SQLITE_DISABLE_INTRINSIC)
@@ -199318,11 +199306,11 @@
199318 a[2] = t;
199319 }
199320
199321 /* Skip whitespace. Return the next non-whitespace character. */
199322 static char geopolySkipSpace(GeoParse *p){
199323 while( safe_isspace(p->z[0]) ) p->z++;
199324 return p->z[0];
199325 }
199326
199327 /* Parse out a number. Write the value into *pVal if pVal!=0.
199328 ** return non-zero on success and zero if the next token is not a number.
@@ -233346,11 +233334,11 @@
233346 int nArg, /* Number of args */
233347 sqlite3_value **apUnused /* Function arguments */
233348 ){
233349 assert( nArg==0 );
233350 UNUSED_PARAM2(nArg, apUnused);
233351 sqlite3_result_text(pCtx, "fts5: 2022-01-06 17:13:56 2d6a16caa7d28ad5c766036b2eb6c2020683fcc9389b3c7df2013739929dd36f", -1, SQLITE_TRANSIENT);
233352 }
233353
233354 /*
233355 ** Return true if zName is the extension on one of the shadow tables used
233356 ** by this module.
233357
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -452,11 +452,11 @@
452 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453 ** [sqlite_version()] and [sqlite_source_id()].
454 */
455 #define SQLITE_VERSION "3.38.0"
456 #define SQLITE_VERSION_NUMBER 3038000
457 #define SQLITE_SOURCE_ID "2022-01-12 00:28:12 adebb9d7478d092f16fb0ef7d5246ce152b166479d6f949110b5878b89ea2cec"
458
459 /*
460 ** CAPI3REF: Run-Time Library Version Numbers
461 ** KEYWORDS: sqlite3_version sqlite3_sourceid
462 **
@@ -13593,14 +13593,14 @@
13593 #define TK_DETACH 40
13594 #define TK_EACH 41
13595 #define TK_FAIL 42
13596 #define TK_OR 43
13597 #define TK_AND 44
13598 #define TK_IS 45
13599 #define TK_MATCH 46
13600 #define TK_LIKE_KW 47
13601 #define TK_BETWEEN 48
13602 #define TK_IN 49
13603 #define TK_ISNULL 50
13604 #define TK_NOTNULL 51
13605 #define TK_NE 52
13606 #define TK_EQ 53
@@ -13660,82 +13660,83 @@
13660 #define TK_MINUS 107
13661 #define TK_STAR 108
13662 #define TK_SLASH 109
13663 #define TK_REM 110
13664 #define TK_CONCAT 111
13665 #define TK_PTR 112
13666 #define TK_COLLATE 113
13667 #define TK_BITNOT 114
13668 #define TK_ON 115
13669 #define TK_INDEXED 116
13670 #define TK_STRING 117
13671 #define TK_JOIN_KW 118
13672 #define TK_CONSTRAINT 119
13673 #define TK_DEFAULT 120
13674 #define TK_NULL 121
13675 #define TK_PRIMARY 122
13676 #define TK_UNIQUE 123
13677 #define TK_CHECK 124
13678 #define TK_REFERENCES 125
13679 #define TK_AUTOINCR 126
13680 #define TK_INSERT 127
13681 #define TK_DELETE 128
13682 #define TK_UPDATE 129
13683 #define TK_SET 130
13684 #define TK_DEFERRABLE 131
13685 #define TK_FOREIGN 132
13686 #define TK_DROP 133
13687 #define TK_UNION 134
13688 #define TK_ALL 135
13689 #define TK_EXCEPT 136
13690 #define TK_INTERSECT 137
13691 #define TK_SELECT 138
13692 #define TK_VALUES 139
13693 #define TK_DISTINCT 140
13694 #define TK_DOT 141
13695 #define TK_FROM 142
13696 #define TK_JOIN 143
13697 #define TK_USING 144
13698 #define TK_ORDER 145
13699 #define TK_GROUP 146
13700 #define TK_HAVING 147
13701 #define TK_LIMIT 148
13702 #define TK_WHERE 149
13703 #define TK_RETURNING 150
13704 #define TK_INTO 151
13705 #define TK_NOTHING 152
13706 #define TK_FLOAT 153
13707 #define TK_BLOB 154
13708 #define TK_INTEGER 155
13709 #define TK_VARIABLE 156
13710 #define TK_CASE 157
13711 #define TK_WHEN 158
13712 #define TK_THEN 159
13713 #define TK_ELSE 160
13714 #define TK_INDEX 161
13715 #define TK_ALTER 162
13716 #define TK_ADD 163
13717 #define TK_WINDOW 164
13718 #define TK_OVER 165
13719 #define TK_FILTER 166
13720 #define TK_COLUMN 167
13721 #define TK_AGG_FUNCTION 168
13722 #define TK_AGG_COLUMN 169
13723 #define TK_TRUEFALSE 170
13724 #define TK_ISNOT 171
13725 #define TK_FUNCTION 172
13726 #define TK_UMINUS 173
13727 #define TK_UPLUS 174
13728 #define TK_TRUTH 175
13729 #define TK_REGISTER 176
13730 #define TK_VECTOR 177
13731 #define TK_SELECT_COLUMN 178
13732 #define TK_IF_NULL_ROW 179
13733 #define TK_ASTERISK 180
13734 #define TK_SPAN 181
13735 #define TK_ERROR 182
13736 #define TK_SPACE 183
13737 #define TK_ILLEGAL 184
13738
13739 /************** End of parse.h ***********************************************/
13740 /************** Continuing where we left off in sqliteInt.h ******************/
13741 #include <stdio.h>
13742 #include <stdlib.h>
@@ -15342,15 +15343,15 @@
15343 #define OP_Multiply 108 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
15344 #define OP_Divide 109 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
15345 #define OP_Remainder 110 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
15346 #define OP_Concat 111 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
15347 #define OP_OpenWrite 112 /* synopsis: root=P2 iDb=P3 */
15348 #define OP_OpenDup 113
15349 #define OP_BitNot 114 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
15350 #define OP_OpenAutoindex 115 /* synopsis: nColumn=P2 */
15351 #define OP_OpenEphemeral 116 /* synopsis: nColumn=P2 */
15352 #define OP_String8 117 /* same as TK_STRING, synopsis: r[P2]='P4' */
15353 #define OP_SorterOpen 118
15354 #define OP_SequenceTest 119 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
15355 #define OP_OpenPseudo 120 /* synopsis: P3 columns in r[P2] */
15356 #define OP_Close 121
15357 #define OP_ColumnsUsed 122
@@ -15381,12 +15382,12 @@
15382 #define OP_SqlExec 147
15383 #define OP_ParseSchema 148
15384 #define OP_LoadAnalysis 149
15385 #define OP_DropTable 150
15386 #define OP_DropIndex 151
15387 #define OP_DropTrigger 152
15388 #define OP_Real 153 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15389 #define OP_IntegrityCk 154
15390 #define OP_RowSetAdd 155 /* synopsis: rowset(P1)=r[P2] */
15391 #define OP_Param 156
15392 #define OP_FkCounter 157 /* synopsis: fkctr[P1]+=P2 */
15393 #define OP_MemMax 158 /* synopsis: r[P1]=max(r[P1],r[P2]) */
@@ -15439,16 +15440,16 @@
15440 /* 72 */ 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00,\
15441 /* 80 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,\
15442 /* 88 */ 0x00, 0x00, 0x12, 0x1e, 0x20, 0x00, 0x00, 0x00,\
15443 /* 96 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x26, 0x26,\
15444 /* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
15445 /* 112 */ 0x00, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00,\
15446 /* 120 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00,\
15447 /* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\
15448 /* 136 */ 0x00, 0x04, 0x04, 0x00, 0x00, 0x10, 0x00, 0x10,\
15449 /* 144 */ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,\
15450 /* 152 */ 0x00, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x1a,\
15451 /* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15452 /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,\
15453 /* 176 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15454 }
15455
@@ -16928,11 +16929,11 @@
16929 ** Used to create an aggregate function definition implemented by
16930 ** the C functions xStep and xFinal. The first four parameters
16931 ** are interpreted in the same way as the first 4 parameters to
16932 ** FUNCTION().
16933 **
16934 ** WAGGREGATE(zName, nArg, iArg, xStep, xFinal, xValue, xInverse)
16935 ** Used to create an aggregate function definition implemented by
16936 ** the C functions xStep and xFinal. The first four parameters
16937 ** are interpreted in the same way as the first 4 parameters to
16938 ** FUNCTION().
16939 **
@@ -16955,10 +16956,14 @@
16956 {nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_DIRECTONLY|SQLITE_FUNC_UNSAFE, \
16957 SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
16958 #define MFUNCTION(zName, nArg, xPtr, xFunc) \
16959 {nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_CONSTANT|SQLITE_UTF8, \
16960 xPtr, 0, xFunc, 0, 0, 0, #zName, {0} }
16961 #define JFUNCTION(zName, nArg, iArg, xFunc) \
16962 {nArg, SQLITE_FUNC_BUILTIN|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS|\
16963 SQLITE_FUNC_CONSTANT|SQLITE_UTF8, \
16964 SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
16965 #define INLINE_FUNC(zName, nArg, iArg, mFlags) \
16966 {nArg, SQLITE_FUNC_BUILTIN|\
16967 SQLITE_UTF8|SQLITE_FUNC_INLINE|SQLITE_FUNC_CONSTANT|(mFlags), \
16968 SQLITE_INT_TO_PTR(iArg), 0, noopFunc, 0, 0, 0, #zName, {0} }
16969 #define TEST_FUNC(zName, nArg, iArg, mFlags) \
@@ -19679,11 +19684,15 @@
19684 SQLITE_PRIVATE void sqlite3InsertBuiltinFuncs(FuncDef*,int);
19685 SQLITE_PRIVATE FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,u8,u8);
19686 SQLITE_PRIVATE void sqlite3QuoteValue(StrAccum*,sqlite3_value*);
19687 SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void);
19688 SQLITE_PRIVATE void sqlite3RegisterDateTimeFunctions(void);
19689 SQLITE_PRIVATE void sqlite3RegisterJsonFunctions(void);
19690 SQLITE_PRIVATE void sqlite3RegisterPerConnectionBuiltinFunctions(sqlite3*);
19691 #if !defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_JSON)
19692 SQLITE_PRIVATE int sqlite3JsonTableFunctions(sqlite3*);
19693 #endif
19694 SQLITE_PRIVATE int sqlite3SafetyCheckOk(sqlite3*);
19695 SQLITE_PRIVATE int sqlite3SafetyCheckSickOrOk(sqlite3*);
19696 SQLITE_PRIVATE void sqlite3ChangeCookie(Parse*, int);
19697 SQLITE_PRIVATE With *sqlite3WithDup(sqlite3 *db, With *p);
19698
@@ -20691,10 +20700,13 @@
20700 #ifdef SQLITE_DISABLE_FTS4_DEFERRED
20701 "DISABLE_FTS4_DEFERRED",
20702 #endif
20703 #ifdef SQLITE_DISABLE_INTRINSIC
20704 "DISABLE_INTRINSIC",
20705 #endif
20706 #ifdef SQLITE_DISABLE_JSON
20707 "DISABLE_JSON",
20708 #endif
20709 #ifdef SQLITE_DISABLE_LFS
20710 "DISABLE_LFS",
20711 #endif
20712 #ifdef SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
@@ -20770,13 +20782,10 @@
20782 "ENABLE_ICU",
20783 #endif
20784 #ifdef SQLITE_ENABLE_IOTRACE
20785 "ENABLE_IOTRACE",
20786 #endif
 
 
 
20787 #ifdef SQLITE_ENABLE_LOAD_EXTENSION
20788 "ENABLE_LOAD_EXTENSION",
20789 #endif
20790 #ifdef SQLITE_ENABLE_LOCKING_STYLE
20791 "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
@@ -34265,15 +34274,15 @@
34274 /* 108 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
34275 /* 109 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
34276 /* 110 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
34277 /* 111 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
34278 /* 112 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
34279 /* 113 */ "OpenDup" OpHelp(""),
34280 /* 114 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
34281 /* 115 */ "OpenAutoindex" OpHelp("nColumn=P2"),
34282 /* 116 */ "OpenEphemeral" OpHelp("nColumn=P2"),
34283 /* 117 */ "String8" OpHelp("r[P2]='P4'"),
34284 /* 118 */ "SorterOpen" OpHelp(""),
34285 /* 119 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
34286 /* 120 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
34287 /* 121 */ "Close" OpHelp(""),
34288 /* 122 */ "ColumnsUsed" OpHelp(""),
@@ -34304,12 +34313,12 @@
34313 /* 147 */ "SqlExec" OpHelp(""),
34314 /* 148 */ "ParseSchema" OpHelp(""),
34315 /* 149 */ "LoadAnalysis" OpHelp(""),
34316 /* 150 */ "DropTable" OpHelp(""),
34317 /* 151 */ "DropIndex" OpHelp(""),
34318 /* 152 */ "DropTrigger" OpHelp(""),
34319 /* 153 */ "Real" OpHelp("r[P2]=P4"),
34320 /* 154 */ "IntegrityCk" OpHelp(""),
34321 /* 155 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
34322 /* 156 */ "Param" OpHelp(""),
34323 /* 157 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
34324 /* 158 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
@@ -58435,10 +58444,11 @@
58444 Pager *pPager, /* The pager open on the database file */
58445 Pgno pgno, /* Page number to fetch */
58446 DbPage **ppPage, /* Write a pointer to the page here */
58447 int flags /* PAGER_GET_XXX flags */
58448 ){
58449 /* printf("PAGE %u\n", pgno); fflush(stdout); */
58450 return pPager->xGet(pPager, pgno, ppPage, flags);
58451 }
58452
58453 /*
58454 ** Acquire a page if it is already in the in-memory cache. Do
@@ -72528,11 +72538,11 @@
72538 assert( sqlite3PagerIswriteable(pPage->pDbPage) );
72539 assert( sqlite3_mutex_held(pPage->pBt->mutex) );
72540 assert( pPage->nFree>=0 );
72541 data = pPage->aData;
72542 ptr = &pPage->aCellIdx[2*idx];
72543 assert( pPage->pBt->usableSize > (u32)(ptr-data) );
72544 pc = get2byte(ptr);
72545 hdr = pPage->hdrOffset;
72546 testcase( pc==(u32)get2byte(&data[hdr+5]) );
72547 testcase( pc+sz==pPage->pBt->usableSize );
72548 if( pc+sz > pPage->pBt->usableSize ){
@@ -113443,11 +113453,11 @@
113453 Returning *pReturning = pParse->u1.pReturning;
113454 int addrRewind;
113455 int i;
113456 int reg;
113457
113458 if( NEVER(pReturning->nRetCol==0) ){
113459 assert( CORRUPT_DB );
113460 }else{
113461 sqlite3VdbeAddOp0(v, OP_FkCheck);
113462 addrRewind =
113463 sqlite3VdbeAddOp1(v, OP_Rewind, pReturning->iRetCur);
@@ -113539,11 +113549,11 @@
113549 }
113550 }
113551
113552 if( pParse->bReturning ){
113553 Returning *pRet = pParse->u1.pReturning;
113554 if( NEVER(pRet->nRetCol==0) ){
113555 assert( CORRUPT_DB );
113556 }else{
113557 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol);
113558 }
113559 }
@@ -119261,11 +119271,10 @@
119271 for(i=0; i<nDef; i++){
119272 FuncDef *pOther;
119273 const char *zName = aDef[i].zName;
119274 int nName = sqlite3Strlen30(zName);
119275 int h = SQLITE_FUNC_HASH(zName[0], nName);
 
119276 assert( aDef[i].funcFlags & SQLITE_FUNC_BUILTIN );
119277 pOther = sqlite3FunctionSearch(h, zName);
119278 if( pOther ){
119279 assert( pOther!=&aDef[i] && pOther->pNext!=&aDef[i] );
119280 aDef[i].pNext = pOther->pNext;
@@ -120524,10 +120533,21 @@
120533 ** V. The returned value is one of SQLITE_INTEGER, SQLITE_FLOAT,
120534 ** SQLITE_TEXT, SQLITE_BLOB, or SQLITE_NULL. */
120535 sqlite3_result_text(context, azType[i], -1, SQLITE_STATIC);
120536 }
120537
120538 /* subtype(X)
120539 **
120540 ** Return the subtype of X
120541 */
120542 static void subtypeFunc(
120543 sqlite3_context *context,
120544 int argc,
120545 sqlite3_value **argv
120546 ){
120547 sqlite3_result_int(context, sqlite3_value_subtype(argv[0]));
120548 }
120549
120550 /*
120551 ** Implementation of the length() function
120552 */
120553 static void lengthFunc(
@@ -120685,11 +120705,11 @@
120705 sqlite3_result_error_nomem(context);
120706 goto endInstr;
120707 }
120708
120709 /*
120710 ** Implementation of the printf() (a.k.a. format()) SQL function.
120711 */
120712 static void printfFunc(
120713 sqlite3_context *context,
120714 int argc,
120715 sqlite3_value **argv
@@ -122673,13 +122693,15 @@
122693 FUNCTION(max, -1, 1, 1, minmaxFunc ),
122694 FUNCTION(max, 0, 1, 1, 0 ),
122695 WAGGREGATE(max, 1, 1, 1, minmaxStep, minMaxFinalize, minMaxValue, 0,
122696 SQLITE_FUNC_MINMAX|SQLITE_FUNC_ANYORDER ),
122697 FUNCTION2(typeof, 1, 0, 0, typeofFunc, SQLITE_FUNC_TYPEOF),
122698 FUNCTION2(subtype, 1, 0, 0, subtypeFunc, SQLITE_FUNC_TYPEOF),
122699 FUNCTION2(length, 1, 0, 0, lengthFunc, SQLITE_FUNC_LENGTH),
122700 FUNCTION(instr, 2, 0, 0, instrFunc ),
122701 FUNCTION(printf, -1, 0, 0, printfFunc ),
122702 FUNCTION(format, -1, 0, 0, printfFunc ),
122703 FUNCTION(unicode, 1, 0, 0, unicodeFunc ),
122704 FUNCTION(char, -1, 0, 0, charFunc ),
122705 FUNCTION(abs, 1, 0, 0, absFunc ),
122706 #ifndef SQLITE_OMIT_FLOATING_POINT
122707 FUNCTION(round, 1, 0, 0, roundFunc ),
@@ -122774,10 +122796,11 @@
122796 #ifndef SQLITE_OMIT_ALTERTABLE
122797 sqlite3AlterFunctions();
122798 #endif
122799 sqlite3WindowFunctions();
122800 sqlite3RegisterDateTimeFunctions();
122801 sqlite3RegisterJsonFunctions();
122802 sqlite3InsertBuiltinFuncs(aBuiltinFunc, ArraySize(aBuiltinFunc));
122803
122804 #if 0 /* Enable to print out how the built-in functions are hashed */
122805 {
122806 int i;
@@ -160516,14 +160539,14 @@
160539 #define TK_DETACH 40
160540 #define TK_EACH 41
160541 #define TK_FAIL 42
160542 #define TK_OR 43
160543 #define TK_AND 44
160544 #define TK_IS 45
160545 #define TK_MATCH 46
160546 #define TK_LIKE_KW 47
160547 #define TK_BETWEEN 48
160548 #define TK_IN 49
160549 #define TK_ISNULL 50
160550 #define TK_NOTNULL 51
160551 #define TK_NE 52
160552 #define TK_EQ 53
@@ -160583,82 +160606,83 @@
160606 #define TK_MINUS 107
160607 #define TK_STAR 108
160608 #define TK_SLASH 109
160609 #define TK_REM 110
160610 #define TK_CONCAT 111
160611 #define TK_PTR 112
160612 #define TK_COLLATE 113
160613 #define TK_BITNOT 114
160614 #define TK_ON 115
160615 #define TK_INDEXED 116
160616 #define TK_STRING 117
160617 #define TK_JOIN_KW 118
160618 #define TK_CONSTRAINT 119
160619 #define TK_DEFAULT 120
160620 #define TK_NULL 121
160621 #define TK_PRIMARY 122
160622 #define TK_UNIQUE 123
160623 #define TK_CHECK 124
160624 #define TK_REFERENCES 125
160625 #define TK_AUTOINCR 126
160626 #define TK_INSERT 127
160627 #define TK_DELETE 128
160628 #define TK_UPDATE 129
160629 #define TK_SET 130
160630 #define TK_DEFERRABLE 131
160631 #define TK_FOREIGN 132
160632 #define TK_DROP 133
160633 #define TK_UNION 134
160634 #define TK_ALL 135
160635 #define TK_EXCEPT 136
160636 #define TK_INTERSECT 137
160637 #define TK_SELECT 138
160638 #define TK_VALUES 139
160639 #define TK_DISTINCT 140
160640 #define TK_DOT 141
160641 #define TK_FROM 142
160642 #define TK_JOIN 143
160643 #define TK_USING 144
160644 #define TK_ORDER 145
160645 #define TK_GROUP 146
160646 #define TK_HAVING 147
160647 #define TK_LIMIT 148
160648 #define TK_WHERE 149
160649 #define TK_RETURNING 150
160650 #define TK_INTO 151
160651 #define TK_NOTHING 152
160652 #define TK_FLOAT 153
160653 #define TK_BLOB 154
160654 #define TK_INTEGER 155
160655 #define TK_VARIABLE 156
160656 #define TK_CASE 157
160657 #define TK_WHEN 158
160658 #define TK_THEN 159
160659 #define TK_ELSE 160
160660 #define TK_INDEX 161
160661 #define TK_ALTER 162
160662 #define TK_ADD 163
160663 #define TK_WINDOW 164
160664 #define TK_OVER 165
160665 #define TK_FILTER 166
160666 #define TK_COLUMN 167
160667 #define TK_AGG_FUNCTION 168
160668 #define TK_AGG_COLUMN 169
160669 #define TK_TRUEFALSE 170
160670 #define TK_ISNOT 171
160671 #define TK_FUNCTION 172
160672 #define TK_UMINUS 173
160673 #define TK_UPLUS 174
160674 #define TK_TRUTH 175
160675 #define TK_REGISTER 176
160676 #define TK_VECTOR 177
160677 #define TK_SELECT_COLUMN 178
160678 #define TK_IF_NULL_ROW 179
160679 #define TK_ASTERISK 180
160680 #define TK_SPAN 181
160681 #define TK_ERROR 182
160682 #define TK_SPACE 183
160683 #define TK_ILLEGAL 184
160684 #endif
160685 /**************** End token definitions ***************************************/
160686
160687 /* The next sections is a series of control #defines.
160688 ** various aspects of the generated parser.
@@ -160714,34 +160738,34 @@
160738 #ifndef INTERFACE
160739 # define INTERFACE 1
160740 #endif
160741 /************* Begin control #defines *****************************************/
160742 #define YYCODETYPE unsigned short int
160743 #define YYNOCODE 319
160744 #define YYACTIONTYPE unsigned short int
160745 #define YYWILDCARD 101
160746 #define sqlite3ParserTOKENTYPE Token
160747 typedef union {
160748 int yyinit;
160749 sqlite3ParserTOKENTYPE yy0;
160750 TriggerStep* yy33;
160751 Window* yy41;
160752 Select* yy47;
160753 SrcList* yy131;
160754 struct TrigEvent yy180;
160755 struct {int value; int mask;} yy231;
160756 IdList* yy254;
160757 u32 yy285;
160758 ExprList* yy322;
160759 Cte* yy385;
160760 int yy394;
160761 Upsert* yy444;
160762 u8 yy516;
160763 With* yy521;
160764 const char* yy522;
160765 Expr* yy528;
160766 struct FrameBound yy595;
160767 } YYMINORTYPE;
160768 #ifndef YYSTACKDEPTH
160769 #define YYSTACKDEPTH 100
160770 #endif
160771 #define sqlite3ParserARG_SDECL
@@ -160753,22 +160777,22 @@
160777 #define sqlite3ParserCTX_PDECL ,Parse *pParse
160778 #define sqlite3ParserCTX_PARAM ,pParse
160779 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
160780 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
160781 #define YYFALLBACK 1
160782 #define YYNSTATE 574
160783 #define YYNRULE 402
160784 #define YYNRULE_WITH_ACTION 340
160785 #define YYNTOKEN 185
160786 #define YY_MAX_SHIFT 573
160787 #define YY_MIN_SHIFTREDUCE 831
160788 #define YY_MAX_SHIFTREDUCE 1232
160789 #define YY_ERROR_ACTION 1233
160790 #define YY_ACCEPT_ACTION 1234
160791 #define YY_NO_ACTION 1235
160792 #define YY_MIN_REDUCE 1236
160793 #define YY_MAX_REDUCE 1637
160794 /************* End control #defines *******************************************/
160795 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
160796
160797 /* Define the yytestcase() macro to be a no-op if is not already defined
160798 ** otherwise.
@@ -160831,607 +160855,616 @@
160855 ** yy_reduce_ofst[] For each state, the offset into yy_action for
160856 ** shifting non-terminals after a reduce.
160857 ** yy_default[] Default action for each state.
160858 **
160859 *********** Begin parsing tables **********************************************/
160860 #define YY_ACTTAB_COUNT (2070)
160861 static const YYACTIONTYPE yy_action[] = {
160862 /* 0 */ 566, 1307, 566, 1286, 201, 201, 566, 116, 112, 222,
160863 /* 10 */ 566, 1307, 377, 566, 116, 112, 222, 397, 408, 409,
160864 /* 20 */ 1260, 378, 1269, 41, 41, 41, 41, 1412, 1517, 71,
160865 /* 30 */ 71, 967, 1258, 41, 41, 491, 71, 71, 272, 968,
160866 /* 40 */ 298, 476, 298, 123, 124, 114, 1210, 1210, 1044, 1047,
160867 /* 50 */ 1036, 1036, 121, 121, 122, 122, 122, 122, 543, 409,
160868 /* 60 */ 1234, 1, 1, 573, 2, 1238, 548, 116, 112, 222,
160869 /* 70 */ 309, 480, 142, 548, 1272, 524, 116, 112, 222, 1320,
160870 /* 80 */ 417, 523, 547, 123, 124, 114, 1210, 1210, 1044, 1047,
160871 /* 90 */ 1036, 1036, 121, 121, 122, 122, 122, 122, 424, 116,
160872 /* 100 */ 112, 222, 120, 120, 120, 120, 119, 119, 118, 118,
160873 /* 110 */ 118, 117, 113, 444, 277, 277, 277, 277, 560, 560,
160874 /* 120 */ 560, 1558, 376, 1560, 1186, 375, 1157, 563, 1157, 563,
160875 /* 130 */ 409, 1558, 537, 252, 219, 1553, 99, 141, 449, 6,
160876 /* 140 */ 365, 233, 120, 120, 120, 120, 119, 119, 118, 118,
160877 /* 150 */ 118, 117, 113, 444, 123, 124, 114, 1210, 1210, 1044,
160878 /* 160 */ 1047, 1036, 1036, 121, 121, 122, 122, 122, 122, 138,
160879 /* 170 */ 289, 1186, 1546, 448, 118, 118, 118, 117, 113, 444,
160880 /* 180 */ 125, 1186, 1187, 1188, 144, 465, 334, 566, 150, 127,
160881 /* 190 */ 444, 122, 122, 122, 122, 115, 120, 120, 120, 120,
160882 /* 200 */ 119, 119, 118, 118, 118, 117, 113, 444, 454, 419,
160883 /* 210 */ 13, 13, 215, 120, 120, 120, 120, 119, 119, 118,
160884 /* 220 */ 118, 118, 117, 113, 444, 422, 308, 557, 1186, 1187,
160885 /* 230 */ 1188, 441, 440, 409, 1271, 122, 122, 122, 122, 120,
160886 /* 240 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113,
160887 /* 250 */ 444, 1543, 98, 1033, 1033, 1045, 1048, 123, 124, 114,
160888 /* 260 */ 1210, 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122,
160889 /* 270 */ 122, 122, 566, 406, 405, 1186, 566, 409, 1217, 319,
160890 /* 280 */ 1217, 80, 81, 120, 120, 120, 120, 119, 119, 118,
160891 /* 290 */ 118, 118, 117, 113, 444, 70, 70, 1186, 1604, 71,
160892 /* 300 */ 71, 123, 124, 114, 1210, 1210, 1044, 1047, 1036, 1036,
160893 /* 310 */ 121, 121, 122, 122, 122, 122, 120, 120, 120, 120,
160894 /* 320 */ 119, 119, 118, 118, 118, 117, 113, 444, 1037, 210,
160895 /* 330 */ 1186, 365, 1186, 1187, 1188, 245, 548, 399, 504, 501,
160896 /* 340 */ 500, 108, 558, 138, 4, 516, 933, 433, 499, 217,
160897 /* 350 */ 514, 522, 352, 879, 1186, 1187, 1188, 383, 561, 566,
160898 /* 360 */ 120, 120, 120, 120, 119, 119, 118, 118, 118, 117,
160899 /* 370 */ 113, 444, 277, 277, 16, 16, 1598, 441, 440, 153,
160900 /* 380 */ 409, 445, 13, 13, 1279, 563, 1214, 1186, 1187, 1188,
160901 /* 390 */ 1003, 1216, 264, 555, 1574, 186, 566, 427, 138, 1215,
160902 /* 400 */ 308, 557, 472, 138, 123, 124, 114, 1210, 1210, 1044,
160903 /* 410 */ 1047, 1036, 1036, 121, 121, 122, 122, 122, 122, 55,
160904 /* 420 */ 55, 413, 1023, 507, 1217, 1186, 1217, 474, 106, 106,
160905 /* 430 */ 1312, 1312, 1186, 171, 566, 384, 107, 380, 445, 568,
160906 /* 440 */ 567, 430, 1543, 1013, 332, 549, 565, 263, 280, 360,
160907 /* 450 */ 510, 355, 509, 250, 491, 308, 557, 71, 71, 351,
160908 /* 460 */ 308, 557, 374, 120, 120, 120, 120, 119, 119, 118,
160909 /* 470 */ 118, 118, 117, 113, 444, 1013, 1013, 1015, 1016, 27,
160910 /* 480 */ 277, 277, 1186, 1187, 1188, 1152, 566, 528, 409, 1186,
160911 /* 490 */ 1187, 1188, 348, 563, 548, 1260, 533, 517, 1152, 1516,
160912 /* 500 */ 317, 1152, 285, 550, 485, 569, 566, 569, 482, 51,
160913 /* 510 */ 51, 207, 123, 124, 114, 1210, 1210, 1044, 1047, 1036,
160914 /* 520 */ 1036, 121, 121, 122, 122, 122, 122, 171, 1412, 13,
160915 /* 530 */ 13, 409, 277, 277, 1186, 505, 119, 119, 118, 118,
160916 /* 540 */ 118, 117, 113, 444, 429, 563, 518, 220, 515, 1552,
160917 /* 550 */ 365, 546, 1186, 6, 532, 123, 124, 114, 1210, 1210,
160918 /* 560 */ 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122, 122,
160919 /* 570 */ 145, 120, 120, 120, 120, 119, 119, 118, 118, 118,
160920 /* 580 */ 117, 113, 444, 245, 566, 474, 504, 501, 500, 566,
160921 /* 590 */ 1481, 1186, 1187, 1188, 1310, 1310, 499, 1186, 149, 425,
160922 /* 600 */ 1186, 480, 409, 274, 365, 952, 872, 56, 56, 1186,
160923 /* 610 */ 1187, 1188, 71, 71, 120, 120, 120, 120, 119, 119,
160924 /* 620 */ 118, 118, 118, 117, 113, 444, 123, 124, 114, 1210,
160925 /* 630 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160926 /* 640 */ 122, 409, 541, 1552, 83, 865, 98, 6, 928, 529,
160927 /* 650 */ 848, 543, 151, 927, 1186, 1187, 1188, 1186, 1187, 1188,
160928 /* 660 */ 290, 1543, 187, 1633, 395, 123, 124, 114, 1210, 1210,
160929 /* 670 */ 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122, 122,
160930 /* 680 */ 566, 954, 566, 453, 953, 120, 120, 120, 120, 119,
160931 /* 690 */ 119, 118, 118, 118, 117, 113, 444, 1152, 221, 1186,
160932 /* 700 */ 331, 453, 452, 13, 13, 13, 13, 1003, 365, 463,
160933 /* 710 */ 1152, 193, 409, 1152, 382, 1543, 1170, 32, 297, 474,
160934 /* 720 */ 195, 1527, 5, 952, 120, 120, 120, 120, 119, 119,
160935 /* 730 */ 118, 118, 118, 117, 113, 444, 123, 124, 114, 1210,
160936 /* 740 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160937 /* 750 */ 122, 409, 1067, 419, 1186, 1024, 1186, 1187, 1188, 1186,
160938 /* 760 */ 419, 332, 460, 320, 544, 1545, 442, 442, 442, 566,
160939 /* 770 */ 3, 117, 113, 444, 453, 123, 124, 114, 1210, 1210,
160940 /* 780 */ 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122, 122,
160941 /* 790 */ 1473, 566, 15, 15, 293, 120, 120, 120, 120, 119,
160942 /* 800 */ 119, 118, 118, 118, 117, 113, 444, 1186, 566, 1486,
160943 /* 810 */ 1412, 1186, 1187, 1188, 13, 13, 1186, 1187, 1188, 1544,
160944 /* 820 */ 271, 271, 409, 286, 308, 557, 1008, 1486, 1488, 196,
160945 /* 830 */ 288, 71, 71, 563, 120, 120, 120, 120, 119, 119,
160946 /* 840 */ 118, 118, 118, 117, 113, 444, 123, 124, 114, 1210,
160947 /* 850 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160948 /* 860 */ 122, 409, 201, 1087, 1186, 1187, 1188, 1324, 304, 1529,
160949 /* 870 */ 388, 278, 278, 450, 564, 402, 922, 922, 566, 563,
160950 /* 880 */ 566, 426, 491, 480, 563, 123, 124, 114, 1210, 1210,
160951 /* 890 */ 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122, 122,
160952 /* 900 */ 1486, 71, 71, 13, 13, 120, 120, 120, 120, 119,
160953 /* 910 */ 119, 118, 118, 118, 117, 113, 444, 566, 545, 566,
160954 /* 920 */ 1577, 573, 2, 1238, 1092, 1092, 488, 1480, 309, 1525,
160955 /* 930 */ 142, 324, 409, 836, 837, 838, 312, 1320, 305, 363,
160956 /* 940 */ 43, 43, 57, 57, 120, 120, 120, 120, 119, 119,
160957 /* 950 */ 118, 118, 118, 117, 113, 444, 123, 124, 114, 1210,
160958 /* 960 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160959 /* 970 */ 122, 12, 277, 277, 566, 1152, 409, 572, 428, 1238,
160960 /* 980 */ 465, 334, 296, 474, 309, 563, 142, 249, 1152, 308,
160961 /* 990 */ 557, 1152, 321, 1320, 323, 491, 455, 71, 71, 233,
160962 /* 1000 */ 283, 101, 114, 1210, 1210, 1044, 1047, 1036, 1036, 121,
160963 /* 1010 */ 121, 122, 122, 122, 122, 120, 120, 120, 120, 119,
160964 /* 1020 */ 119, 118, 118, 118, 117, 113, 444, 1108, 277, 277,
160965 /* 1030 */ 1412, 448, 394, 1230, 439, 277, 277, 248, 247, 246,
160966 /* 1040 */ 1319, 563, 1109, 313, 198, 294, 491, 1318, 563, 464,
160967 /* 1050 */ 566, 1427, 394, 1130, 1023, 233, 414, 1110, 295, 120,
160968 /* 1060 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113,
160969 /* 1070 */ 444, 1014, 104, 71, 71, 1013, 322, 496, 908, 566,
160970 /* 1080 */ 277, 277, 277, 277, 1108, 1261, 415, 448, 909, 361,
160971 /* 1090 */ 1571, 1315, 409, 563, 952, 563, 9, 202, 255, 1109,
160972 /* 1100 */ 316, 487, 44, 44, 249, 559, 415, 1013, 1013, 1015,
160973 /* 1110 */ 443, 1231, 409, 1603, 1110, 897, 123, 124, 114, 1210,
160974 /* 1120 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160975 /* 1130 */ 122, 1231, 409, 1207, 215, 554, 123, 124, 114, 1210,
160976 /* 1140 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160977 /* 1150 */ 122, 1131, 1631, 470, 1631, 255, 123, 111, 114, 1210,
160978 /* 1160 */ 1210, 1044, 1047, 1036, 1036, 121, 121, 122, 122, 122,
160979 /* 1170 */ 122, 1131, 1632, 414, 1632, 120, 120, 120, 120, 119,
160980 /* 1180 */ 119, 118, 118, 118, 117, 113, 444, 221, 209, 351,
160981 /* 1190 */ 1207, 1207, 147, 1426, 491, 120, 120, 120, 120, 119,
160982 /* 1200 */ 119, 118, 118, 118, 117, 113, 444, 1256, 539, 519,
160983 /* 1210 */ 888, 551, 952, 12, 566, 120, 120, 120, 120, 119,
160984 /* 1220 */ 119, 118, 118, 118, 117, 113, 444, 538, 566, 860,
160985 /* 1230 */ 1129, 361, 1571, 346, 1356, 409, 1163, 58, 58, 339,
160986 /* 1240 */ 1355, 508, 277, 277, 277, 277, 277, 277, 1207, 889,
160987 /* 1250 */ 1129, 59, 59, 459, 363, 563, 566, 563, 96, 563,
160988 /* 1260 */ 124, 114, 1210, 1210, 1044, 1047, 1036, 1036, 121, 121,
160989 /* 1270 */ 122, 122, 122, 122, 566, 1412, 566, 281, 1186, 60,
160990 /* 1280 */ 60, 110, 392, 392, 391, 266, 389, 860, 1163, 845,
160991 /* 1290 */ 566, 481, 566, 436, 341, 1152, 344, 61, 61, 62,
160992 /* 1300 */ 62, 967, 227, 1550, 315, 431, 540, 6, 1152, 968,
160993 /* 1310 */ 566, 1152, 314, 45, 45, 46, 46, 512, 120, 120,
160994 /* 1320 */ 120, 120, 119, 119, 118, 118, 118, 117, 113, 444,
160995 /* 1330 */ 416, 173, 1532, 47, 47, 1186, 1187, 1188, 108, 558,
160996 /* 1340 */ 325, 4, 229, 1551, 928, 566, 437, 6, 566, 927,
160997 /* 1350 */ 164, 566, 1290, 137, 1190, 561, 566, 1549, 566, 1089,
160998 /* 1360 */ 566, 6, 566, 1089, 531, 566, 868, 8, 49, 49,
160999 /* 1370 */ 228, 50, 50, 566, 63, 63, 566, 457, 445, 64,
161000 /* 1380 */ 64, 65, 65, 14, 14, 66, 66, 407, 129, 129,
161001 /* 1390 */ 555, 566, 458, 566, 1505, 486, 67, 67, 566, 52,
161002 /* 1400 */ 52, 546, 407, 467, 535, 410, 226, 1023, 566, 534,
161003 /* 1410 */ 308, 557, 1190, 407, 68, 68, 69, 69, 566, 1023,
161004 /* 1420 */ 566, 53, 53, 868, 1014, 106, 106, 525, 1013, 566,
161005 /* 1430 */ 1504, 159, 159, 107, 451, 445, 568, 567, 471, 307,
161006 /* 1440 */ 1013, 160, 160, 76, 76, 566, 1548, 466, 407, 407,
161007 /* 1450 */ 6, 1225, 54, 54, 478, 276, 219, 566, 887, 886,
161008 /* 1460 */ 1013, 1013, 1015, 84, 206, 1206, 230, 282, 72, 72,
161009 /* 1470 */ 329, 483, 1013, 1013, 1015, 1016, 27, 1576, 1174, 447,
161010 /* 1480 */ 130, 130, 281, 148, 105, 38, 103, 392, 392, 391,
161011 /* 1490 */ 266, 389, 566, 1126, 845, 396, 566, 108, 558, 566,
161012 /* 1500 */ 4, 311, 566, 30, 17, 566, 279, 227, 566, 315,
161013 /* 1510 */ 108, 558, 468, 4, 561, 73, 73, 314, 566, 157,
161014 /* 1520 */ 157, 566, 131, 131, 526, 132, 132, 561, 128, 128,
161015 /* 1530 */ 566, 158, 158, 566, 31, 291, 566, 445, 330, 521,
161016 /* 1540 */ 98, 152, 152, 420, 136, 136, 1005, 229, 254, 555,
161017 /* 1550 */ 445, 479, 336, 135, 135, 164, 133, 133, 137, 134,
161018 /* 1560 */ 134, 875, 555, 535, 566, 473, 566, 254, 536, 475,
161019 /* 1570 */ 335, 254, 98, 894, 895, 228, 535, 566, 1023, 566,
161020 /* 1580 */ 1074, 534, 210, 232, 106, 106, 1352, 75, 75, 77,
161021 /* 1590 */ 77, 1023, 107, 340, 445, 568, 567, 106, 106, 1013,
161022 /* 1600 */ 74, 74, 42, 42, 566, 107, 343, 445, 568, 567,
161023 /* 1610 */ 410, 497, 1013, 251, 359, 308, 557, 1135, 349, 875,
161024 /* 1620 */ 98, 1070, 345, 251, 358, 1591, 347, 48, 48, 1017,
161025 /* 1630 */ 1303, 1013, 1013, 1015, 1016, 27, 1289, 1287, 1074, 451,
161026 /* 1640 */ 961, 925, 254, 110, 1013, 1013, 1015, 1016, 27, 1174,
161027 /* 1650 */ 447, 970, 971, 281, 108, 558, 1288, 4, 392, 392,
161028 /* 1660 */ 391, 266, 389, 1343, 1086, 845, 1086, 1085, 858, 1085,
161029 /* 1670 */ 146, 561, 926, 354, 110, 303, 364, 553, 227, 1364,
161030 /* 1680 */ 315, 108, 558, 1411, 4, 1339, 492, 1017, 314, 1350,
161031 /* 1690 */ 1565, 552, 1417, 1268, 445, 204, 1259, 1247, 561, 1246,
161032 /* 1700 */ 1248, 1584, 269, 1336, 367, 369, 555, 371, 11, 212,
161033 /* 1710 */ 393, 225, 1393, 284, 1398, 456, 287, 327, 229, 328,
161034 /* 1720 */ 292, 445, 1386, 216, 333, 1403, 164, 477, 373, 137,
161035 /* 1730 */ 1402, 400, 502, 555, 1286, 1023, 357, 1477, 199, 1587,
161036 /* 1740 */ 211, 106, 106, 932, 1476, 1225, 228, 556, 175, 107,
161037 /* 1750 */ 200, 445, 568, 567, 258, 387, 1013, 1524, 1522, 223,
161038 /* 1760 */ 1222, 418, 1023, 83, 208, 79, 82, 184, 106, 106,
161039 /* 1770 */ 1482, 169, 177, 461, 179, 462, 107, 1399, 445, 568,
161040 /* 1780 */ 567, 410, 180, 1013, 495, 181, 308, 557, 1013, 1013,
161041 /* 1790 */ 1015, 1016, 27, 182, 35, 235, 100, 558, 398, 4,
161042 /* 1800 */ 96, 1405, 1404, 36, 484, 469, 1407, 188, 401, 1471,
161043 /* 1810 */ 451, 89, 1493, 561, 239, 1013, 1013, 1015, 1016, 27,
161044 /* 1820 */ 490, 338, 270, 241, 192, 342, 493, 242, 403, 1249,
161045 /* 1830 */ 243, 511, 432, 1297, 1306, 91, 445, 1305, 1304, 879,
161046 /* 1840 */ 217, 434, 435, 1570, 1276, 1602, 520, 1601, 555, 301,
161047 /* 1850 */ 527, 404, 1275, 302, 356, 1274, 1600, 95, 1347, 366,
161048 /* 1860 */ 1296, 362, 1348, 368, 256, 257, 1556, 1555, 438, 1346,
161049 /* 1870 */ 370, 126, 1345, 10, 1371, 546, 381, 1023, 102, 1457,
161050 /* 1880 */ 97, 530, 34, 106, 106, 570, 1180, 372, 265, 1329,
161051 /* 1890 */ 379, 107, 203, 445, 568, 567, 1328, 385, 1013, 1370,
161052 /* 1900 */ 386, 267, 268, 571, 1244, 161, 1239, 162, 1509, 1510,
161053 /* 1910 */ 1508, 143, 1507, 299, 832, 213, 214, 78, 446, 205,
161054 /* 1920 */ 310, 306, 163, 224, 1084, 140, 1082, 318, 165, 176,
161055 /* 1930 */ 1013, 1013, 1015, 1016, 27, 178, 1206, 231, 911, 234,
161056 /* 1940 */ 326, 1098, 183, 421, 166, 167, 411, 185, 85, 423,
161057 /* 1950 */ 412, 86, 174, 87, 168, 88, 1101, 236, 1097, 237,
161058 /* 1960 */ 154, 18, 238, 254, 337, 1219, 489, 1090, 240, 190,
161059 /* 1970 */ 37, 847, 189, 494, 358, 244, 350, 506, 191, 877,
161060 /* 1980 */ 90, 498, 19, 20, 503, 92, 353, 890, 300, 170,
161061 /* 1990 */ 155, 93, 513, 94, 1168, 156, 1050, 1137, 39, 218,
161062 /* 2000 */ 273, 275, 1136, 960, 194, 955, 110, 1154, 1158, 253,
161063 /* 2010 */ 7, 1162, 1156, 21, 22, 1161, 1142, 23, 24, 25,
161064 /* 2020 */ 33, 542, 26, 260, 197, 98, 1065, 1051, 1049, 1053,
161065 /* 2030 */ 1107, 1054, 1106, 259, 28, 40, 562, 1018, 859, 109,
161066 /* 2040 */ 29, 921, 390, 1176, 172, 139, 1175, 1235, 261, 1235,
161067 /* 2050 */ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 262, 1235, 1235,
161068 /* 2060 */ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1593, 1592,
161069 };
161070 static const YYCODETYPE yy_lookahead[] = {
161071 /* 0 */ 193, 223, 193, 225, 193, 193, 193, 274, 275, 276,
161072 /* 10 */ 193, 233, 219, 193, 274, 275, 276, 206, 206, 19,
161073 /* 20 */ 193, 219, 216, 216, 217, 216, 217, 193, 295, 216,
161074 /* 30 */ 217, 31, 205, 216, 217, 193, 216, 217, 213, 39,
161075 /* 40 */ 228, 193, 230, 43, 44, 45, 46, 47, 48, 49,
161076 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 193, 19,
161077 /* 60 */ 185, 186, 187, 188, 189, 190, 253, 274, 275, 276,
161078 /* 70 */ 195, 193, 197, 253, 216, 262, 274, 275, 276, 204,
161079 /* 80 */ 238, 204, 262, 43, 44, 45, 46, 47, 48, 49,
161080 /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 264, 274,
161081 /* 100 */ 275, 276, 102, 103, 104, 105, 106, 107, 108, 109,
161082 /* 110 */ 110, 111, 112, 113, 239, 240, 239, 240, 210, 211,
161083 /* 120 */ 212, 314, 315, 314, 59, 316, 86, 252, 88, 252,
161084 /* 130 */ 19, 314, 315, 256, 257, 309, 25, 72, 296, 313,
161085 /* 140 */ 193, 266, 102, 103, 104, 105, 106, 107, 108, 109,
161086 /* 150 */ 110, 111, 112, 113, 43, 44, 45, 46, 47, 48,
161087 /* 160 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 81,
161088 /* 170 */ 292, 59, 307, 298, 108, 109, 110, 111, 112, 113,
161089 /* 180 */ 69, 116, 117, 118, 72, 128, 129, 193, 241, 22,
161090 /* 190 */ 113, 54, 55, 56, 57, 58, 102, 103, 104, 105,
161091 /* 200 */ 106, 107, 108, 109, 110, 111, 112, 113, 120, 193,
161092 /* 210 */ 216, 217, 25, 102, 103, 104, 105, 106, 107, 108,
161093 /* 220 */ 109, 110, 111, 112, 113, 231, 138, 139, 116, 117,
161094 /* 230 */ 118, 106, 107, 19, 216, 54, 55, 56, 57, 102,
161095 /* 240 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161096 /* 250 */ 113, 304, 25, 46, 47, 48, 49, 43, 44, 45,
161097 /* 260 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
161098 /* 270 */ 56, 57, 193, 106, 107, 59, 193, 19, 153, 263,
161099 /* 280 */ 155, 67, 24, 102, 103, 104, 105, 106, 107, 108,
161100 /* 290 */ 109, 110, 111, 112, 113, 216, 217, 59, 230, 216,
161101 /* 300 */ 217, 43, 44, 45, 46, 47, 48, 49, 50, 51,
161102 /* 310 */ 52, 53, 54, 55, 56, 57, 102, 103, 104, 105,
161103 /* 320 */ 106, 107, 108, 109, 110, 111, 112, 113, 121, 142,
161104 /* 330 */ 59, 193, 116, 117, 118, 119, 253, 204, 122, 123,
161105 /* 340 */ 124, 19, 20, 81, 22, 262, 108, 19, 132, 165,
161106 /* 350 */ 166, 193, 24, 126, 116, 117, 118, 278, 36, 193,
161107 /* 360 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
161108 /* 370 */ 112, 113, 239, 240, 216, 217, 215, 106, 107, 241,
161109 /* 380 */ 19, 59, 216, 217, 223, 252, 115, 116, 117, 118,
161110 /* 390 */ 73, 120, 26, 71, 193, 22, 193, 231, 81, 128,
161111 /* 400 */ 138, 139, 269, 81, 43, 44, 45, 46, 47, 48,
161112 /* 410 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 216,
161113 /* 420 */ 217, 198, 100, 95, 153, 59, 155, 193, 106, 107,
161114 /* 430 */ 235, 236, 59, 193, 193, 249, 114, 251, 116, 117,
161115 /* 440 */ 118, 113, 304, 121, 127, 204, 193, 119, 120, 121,
161116 /* 450 */ 122, 123, 124, 125, 193, 138, 139, 216, 217, 131,
161117 /* 460 */ 138, 139, 193, 102, 103, 104, 105, 106, 107, 108,
161118 /* 470 */ 109, 110, 111, 112, 113, 153, 154, 155, 156, 157,
161119 /* 480 */ 239, 240, 116, 117, 118, 76, 193, 193, 19, 116,
161120 /* 490 */ 117, 118, 23, 252, 253, 193, 87, 204, 89, 238,
161121 /* 500 */ 193, 92, 268, 262, 281, 203, 193, 205, 285, 216,
161122 /* 510 */ 217, 150, 43, 44, 45, 46, 47, 48, 49, 50,
161123 /* 520 */ 51, 52, 53, 54, 55, 56, 57, 193, 193, 216,
161124 /* 530 */ 217, 19, 239, 240, 59, 23, 106, 107, 108, 109,
161125 /* 540 */ 110, 111, 112, 113, 231, 252, 253, 193, 308, 309,
161126 /* 550 */ 193, 145, 59, 313, 145, 43, 44, 45, 46, 47,
161127 /* 560 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
161128 /* 570 */ 164, 102, 103, 104, 105, 106, 107, 108, 109, 110,
161129 /* 580 */ 111, 112, 113, 119, 193, 193, 122, 123, 124, 193,
161130 /* 590 */ 283, 116, 117, 118, 235, 236, 132, 59, 241, 264,
161131 /* 600 */ 59, 193, 19, 23, 193, 25, 23, 216, 217, 116,
161132 /* 610 */ 117, 118, 216, 217, 102, 103, 104, 105, 106, 107,
161133 /* 620 */ 108, 109, 110, 111, 112, 113, 43, 44, 45, 46,
161134 /* 630 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161135 /* 640 */ 57, 19, 308, 309, 151, 23, 25, 313, 135, 253,
161136 /* 650 */ 21, 193, 241, 140, 116, 117, 118, 116, 117, 118,
161137 /* 660 */ 268, 304, 22, 301, 302, 43, 44, 45, 46, 47,
161138 /* 670 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
161139 /* 680 */ 193, 143, 193, 193, 143, 102, 103, 104, 105, 106,
161140 /* 690 */ 107, 108, 109, 110, 111, 112, 113, 76, 118, 59,
161141 /* 700 */ 292, 211, 212, 216, 217, 216, 217, 73, 193, 80,
161142 /* 710 */ 89, 25, 19, 92, 193, 304, 23, 22, 231, 193,
161143 /* 720 */ 231, 193, 22, 143, 102, 103, 104, 105, 106, 107,
161144 /* 730 */ 108, 109, 110, 111, 112, 113, 43, 44, 45, 46,
161145 /* 740 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161146 /* 750 */ 57, 19, 123, 193, 59, 23, 116, 117, 118, 59,
161147 /* 760 */ 193, 127, 128, 129, 306, 307, 210, 211, 212, 193,
161148 /* 770 */ 22, 111, 112, 113, 284, 43, 44, 45, 46, 47,
161149 /* 780 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
161150 /* 790 */ 161, 193, 216, 217, 268, 102, 103, 104, 105, 106,
161151 /* 800 */ 107, 108, 109, 110, 111, 112, 113, 59, 193, 193,
161152 /* 810 */ 193, 116, 117, 118, 216, 217, 116, 117, 118, 304,
161153 /* 820 */ 239, 240, 19, 263, 138, 139, 23, 211, 212, 231,
161154 /* 830 */ 263, 216, 217, 252, 102, 103, 104, 105, 106, 107,
161155 /* 840 */ 108, 109, 110, 111, 112, 113, 43, 44, 45, 46,
161156 /* 850 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161157 /* 860 */ 57, 19, 193, 11, 116, 117, 118, 240, 253, 193,
161158 /* 870 */ 201, 239, 240, 193, 134, 206, 136, 137, 193, 252,
161159 /* 880 */ 193, 264, 193, 193, 252, 43, 44, 45, 46, 47,
161160 /* 890 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
161161 /* 900 */ 284, 216, 217, 216, 217, 102, 103, 104, 105, 106,
161162 /* 910 */ 107, 108, 109, 110, 111, 112, 113, 193, 231, 193,
161163 /* 920 */ 187, 188, 189, 190, 127, 128, 129, 238, 195, 193,
161164 /* 930 */ 197, 16, 19, 7, 8, 9, 193, 204, 253, 193,
161165 /* 940 */ 216, 217, 216, 217, 102, 103, 104, 105, 106, 107,
161166 /* 950 */ 108, 109, 110, 111, 112, 113, 43, 44, 45, 46,
161167 /* 960 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161168 /* 970 */ 57, 213, 239, 240, 193, 76, 19, 188, 232, 190,
161169 /* 980 */ 128, 129, 292, 193, 195, 252, 197, 46, 89, 138,
161170 /* 990 */ 139, 92, 77, 204, 79, 193, 269, 216, 217, 266,
161171 /* 1000 */ 204, 159, 45, 46, 47, 48, 49, 50, 51, 52,
161172 /* 1010 */ 53, 54, 55, 56, 57, 102, 103, 104, 105, 106,
161173 /* 1020 */ 107, 108, 109, 110, 111, 112, 113, 12, 239, 240,
161174 /* 1030 */ 193, 298, 22, 23, 253, 239, 240, 127, 128, 129,
161175 /* 1040 */ 238, 252, 27, 193, 286, 204, 193, 204, 252, 291,
161176 /* 1050 */ 193, 273, 22, 23, 100, 266, 115, 42, 268, 102,
161177 /* 1060 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
161178 /* 1070 */ 113, 117, 159, 216, 217, 121, 161, 19, 63, 193,
161179 /* 1080 */ 239, 240, 239, 240, 12, 208, 209, 298, 73, 311,
161180 /* 1090 */ 312, 238, 19, 252, 25, 252, 22, 24, 24, 27,
161181 /* 1100 */ 193, 264, 216, 217, 46, 208, 209, 153, 154, 155,
161182 /* 1110 */ 253, 101, 19, 23, 42, 25, 43, 44, 45, 46,
161183 /* 1120 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161184 /* 1130 */ 57, 101, 19, 59, 25, 63, 43, 44, 45, 46,
161185 /* 1140 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161186 /* 1150 */ 57, 22, 23, 115, 25, 24, 43, 44, 45, 46,
161187 /* 1160 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
161188 /* 1170 */ 57, 22, 23, 115, 25, 102, 103, 104, 105, 106,
161189 /* 1180 */ 107, 108, 109, 110, 111, 112, 113, 118, 150, 131,
161190 /* 1190 */ 59, 117, 22, 273, 193, 102, 103, 104, 105, 106,
161191 /* 1200 */ 107, 108, 109, 110, 111, 112, 113, 204, 66, 204,
161192 /* 1210 */ 35, 204, 143, 213, 193, 102, 103, 104, 105, 106,
161193 /* 1220 */ 107, 108, 109, 110, 111, 112, 113, 85, 193, 59,
161194 /* 1230 */ 101, 311, 312, 16, 193, 19, 94, 216, 217, 238,
161195 /* 1240 */ 193, 66, 239, 240, 239, 240, 239, 240, 117, 74,
161196 /* 1250 */ 101, 216, 217, 193, 193, 252, 193, 252, 149, 252,
161197 /* 1260 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
161198 /* 1270 */ 54, 55, 56, 57, 193, 193, 193, 5, 59, 216,
161199 /* 1280 */ 217, 25, 10, 11, 12, 13, 14, 117, 146, 17,
161200 /* 1290 */ 193, 291, 193, 232, 77, 76, 79, 216, 217, 216,
161201 /* 1300 */ 217, 31, 30, 309, 32, 130, 87, 313, 89, 39,
161202 /* 1310 */ 193, 92, 40, 216, 217, 216, 217, 108, 102, 103,
161203 /* 1320 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
161204 /* 1330 */ 299, 300, 193, 216, 217, 116, 117, 118, 19, 20,
161205 /* 1340 */ 193, 22, 70, 309, 135, 193, 264, 313, 193, 140,
161206 /* 1350 */ 78, 193, 226, 81, 59, 36, 193, 309, 193, 29,
161207 /* 1360 */ 193, 313, 193, 33, 145, 193, 59, 48, 216, 217,
161208 /* 1370 */ 98, 216, 217, 193, 216, 217, 193, 244, 59, 216,
161209 /* 1380 */ 217, 216, 217, 216, 217, 216, 217, 254, 216, 217,
161210 /* 1390 */ 71, 193, 244, 193, 193, 65, 216, 217, 193, 216,
161211 /* 1400 */ 217, 145, 254, 244, 85, 133, 15, 100, 193, 90,
161212 /* 1410 */ 138, 139, 117, 254, 216, 217, 216, 217, 193, 100,
161213 /* 1420 */ 193, 216, 217, 116, 117, 106, 107, 19, 121, 193,
161214 /* 1430 */ 193, 216, 217, 114, 162, 116, 117, 118, 244, 244,
161215 /* 1440 */ 121, 216, 217, 216, 217, 193, 309, 129, 254, 254,
161216 /* 1450 */ 313, 60, 216, 217, 19, 256, 257, 193, 120, 121,
161217 /* 1460 */ 153, 154, 155, 149, 150, 25, 24, 99, 216, 217,
161218 /* 1470 */ 152, 193, 153, 154, 155, 156, 157, 0, 1, 2,
161219 /* 1480 */ 216, 217, 5, 22, 158, 24, 160, 10, 11, 12,
161220 /* 1490 */ 13, 14, 193, 23, 17, 25, 193, 19, 20, 193,
161221 /* 1500 */ 22, 133, 193, 22, 22, 193, 22, 30, 193, 32,
161222 /* 1510 */ 19, 20, 129, 22, 36, 216, 217, 40, 193, 216,
161223 /* 1520 */ 217, 193, 216, 217, 116, 216, 217, 36, 216, 217,
161224 /* 1530 */ 193, 216, 217, 193, 53, 152, 193, 59, 23, 19,
161225 /* 1540 */ 25, 216, 217, 61, 216, 217, 23, 70, 25, 71,
161226 /* 1550 */ 59, 116, 193, 216, 217, 78, 216, 217, 81, 216,
161227 /* 1560 */ 217, 59, 71, 85, 193, 23, 193, 25, 90, 23,
161228 /* 1570 */ 23, 25, 25, 7, 8, 98, 85, 193, 100, 193,
161229 /* 1580 */ 59, 90, 142, 141, 106, 107, 193, 216, 217, 216,
161230 /* 1590 */ 217, 100, 114, 193, 116, 117, 118, 106, 107, 121,
161231 /* 1600 */ 216, 217, 216, 217, 193, 114, 193, 116, 117, 118,
161232 /* 1610 */ 133, 23, 121, 25, 121, 138, 139, 97, 23, 117,
161233 /* 1620 */ 25, 23, 193, 25, 131, 141, 193, 216, 217, 59,
161234 /* 1630 */ 193, 153, 154, 155, 156, 157, 226, 193, 117, 162,
161235 /* 1640 */ 23, 23, 25, 25, 153, 154, 155, 156, 157, 1,
161236 /* 1650 */ 2, 83, 84, 5, 19, 20, 226, 22, 10, 11,
161237 /* 1660 */ 12, 13, 14, 258, 153, 17, 155, 153, 23, 155,
161238 /* 1670 */ 25, 36, 23, 193, 25, 255, 193, 236, 30, 193,
161239 /* 1680 */ 32, 19, 20, 193, 22, 193, 288, 117, 40, 193,
161240 /* 1690 */ 318, 193, 193, 193, 59, 242, 193, 193, 36, 193,
161241 /* 1700 */ 193, 193, 287, 255, 255, 255, 71, 255, 243, 214,
161242 /* 1710 */ 191, 297, 267, 245, 271, 259, 259, 293, 70, 246,
161243 /* 1720 */ 246, 59, 267, 229, 245, 271, 78, 293, 259, 81,
161244 /* 1730 */ 271, 271, 220, 71, 225, 100, 219, 219, 249, 196,
161245 /* 1740 */ 243, 106, 107, 108, 219, 60, 98, 280, 297, 114,
161246 /* 1750 */ 249, 116, 117, 118, 141, 245, 121, 200, 200, 297,
161247 /* 1760 */ 38, 200, 100, 151, 150, 294, 294, 22, 106, 107,
161248 /* 1770 */ 283, 43, 234, 18, 237, 200, 114, 272, 116, 117,
161249 /* 1780 */ 118, 133, 237, 121, 18, 237, 138, 139, 153, 154,
161250 /* 1790 */ 155, 156, 157, 237, 270, 199, 19, 20, 246, 22,
161251 /* 1800 */ 149, 272, 272, 270, 200, 246, 234, 234, 246, 246,
161252 /* 1810 */ 162, 158, 290, 36, 199, 153, 154, 155, 156, 157,
161253 /* 1820 */ 62, 289, 200, 199, 22, 200, 221, 199, 221, 200,
161254 /* 1830 */ 199, 115, 64, 227, 218, 22, 59, 218, 218, 126,
161255 /* 1840 */ 165, 24, 113, 312, 218, 224, 305, 224, 71, 282,
161256 /* 1850 */ 144, 221, 220, 282, 218, 218, 218, 115, 261, 260,
161257 /* 1860 */ 227, 221, 261, 260, 200, 91, 317, 317, 82, 261,
161258 /* 1870 */ 260, 148, 261, 22, 265, 145, 200, 100, 158, 277,
161259 /* 1880 */ 147, 146, 25, 106, 107, 202, 13, 260, 194, 250,
161260 /* 1890 */ 249, 114, 248, 116, 117, 118, 250, 247, 121, 265,
161261 /* 1900 */ 246, 194, 6, 192, 192, 207, 192, 207, 213, 213,
161262 /* 1910 */ 213, 222, 213, 222, 4, 214, 214, 213, 3, 22,
161263 /* 1920 */ 163, 279, 207, 15, 23, 16, 23, 139, 130, 151,
161264 /* 1930 */ 153, 154, 155, 156, 157, 142, 25, 24, 20, 144,
161265 /* 1940 */ 16, 1, 142, 61, 130, 130, 303, 151, 53, 37,
161266 /* 1950 */ 303, 53, 300, 53, 130, 53, 116, 34, 1, 141,
161267 /* 1960 */ 5, 22, 115, 25, 161, 75, 41, 68, 141, 115,
161268 /* 1970 */ 24, 20, 68, 19, 131, 125, 23, 96, 22, 59,
161269 /* 1980 */ 22, 67, 22, 22, 67, 22, 24, 28, 67, 37,
161270 /* 1990 */ 23, 149, 22, 25, 23, 23, 23, 23, 22, 141,
161271 /* 2000 */ 23, 23, 97, 116, 22, 143, 25, 88, 75, 34,
161272 /* 2010 */ 44, 75, 86, 34, 34, 93, 23, 34, 34, 34,
161273 /* 2020 */ 22, 24, 34, 22, 25, 25, 23, 23, 23, 23,
161274 /* 2030 */ 23, 11, 23, 25, 22, 22, 25, 23, 23, 22,
161275 /* 2040 */ 22, 135, 15, 1, 25, 23, 1, 319, 141, 319,
161276 /* 2050 */ 319, 319, 319, 319, 319, 319, 319, 141, 319, 319,
161277 /* 2060 */ 319, 319, 319, 319, 319, 319, 319, 319, 141, 141,
161278 /* 2070 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161279 /* 2080 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161280 /* 2090 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161281 /* 2100 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161282 /* 2110 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161283 /* 2120 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161284 /* 2130 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161285 /* 2140 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161286 /* 2150 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161287 /* 2160 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161288 /* 2170 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161289 /* 2180 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161290 /* 2190 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161291 /* 2200 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161292 /* 2210 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161293 /* 2220 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161294 /* 2230 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161295 /* 2240 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
161296 /* 2250 */ 319, 319, 319, 319, 319,
161297 };
161298 #define YY_SHIFT_COUNT (573)
161299 #define YY_SHIFT_MIN (0)
161300 #define YY_SHIFT_MAX (2045)
161301 static const unsigned short int yy_shift_ofst[] = {
161302 /* 0 */ 1648, 1477, 1272, 322, 322, 262, 1319, 1478, 1491, 1662,
161303 /* 10 */ 1662, 1662, 317, 0, 0, 214, 1093, 1662, 1662, 1662,
161304 /* 20 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
161305 /* 30 */ 271, 271, 1219, 1219, 216, 88, 262, 262, 262, 262,
161306 /* 40 */ 262, 40, 111, 258, 361, 469, 512, 583, 622, 693,
161307 /* 50 */ 732, 803, 842, 913, 1073, 1093, 1093, 1093, 1093, 1093,
161308 /* 60 */ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
161309 /* 70 */ 1093, 1093, 1093, 1113, 1093, 1216, 957, 957, 1635, 1662,
161310 /* 80 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
161311 /* 90 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
161312 /* 100 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
161313 /* 110 */ 1662, 1662, 1662, 1662, 1777, 1662, 1662, 1662, 1662, 1662,
161314 /* 120 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 137, 181,
161315 /* 130 */ 181, 181, 181, 181, 94, 430, 66, 65, 112, 366,
161316 /* 140 */ 475, 475, 629, 1058, 475, 475, 125, 125, 475, 686,
161317 /* 150 */ 686, 686, 660, 686, 57, 184, 184, 77, 77, 2070,
161318 /* 160 */ 2070, 328, 328, 328, 493, 373, 373, 373, 373, 1015,
161319 /* 170 */ 1015, 409, 366, 1129, 1149, 475, 475, 475, 475, 475,
161320 /* 180 */ 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
161321 /* 190 */ 475, 475, 475, 475, 475, 621, 621, 475, 852, 899,
161322 /* 200 */ 899, 1295, 1295, 406, 851, 2070, 2070, 2070, 2070, 2070,
161323 /* 210 */ 2070, 2070, 1307, 954, 954, 640, 464, 695, 238, 700,
161324 /* 220 */ 538, 541, 748, 475, 475, 475, 475, 475, 475, 475,
161325 /* 230 */ 475, 475, 475, 634, 475, 475, 475, 475, 475, 475,
161326 /* 240 */ 475, 475, 475, 475, 475, 475, 1175, 1175, 1175, 475,
161327 /* 250 */ 475, 475, 580, 475, 475, 475, 1074, 1142, 475, 475,
161328 /* 260 */ 1072, 475, 475, 475, 475, 475, 475, 475, 475, 797,
161329 /* 270 */ 1330, 740, 1131, 1131, 1131, 1131, 1069, 740, 740, 1209,
161330 /* 280 */ 167, 926, 1391, 1038, 1314, 187, 1408, 1314, 1408, 1435,
161331 /* 290 */ 1109, 1038, 1038, 1109, 1038, 187, 1435, 227, 1090, 941,
161332 /* 300 */ 1270, 1270, 1270, 1408, 1256, 1256, 1326, 1440, 513, 1461,
161333 /* 310 */ 1685, 1685, 1613, 1613, 1722, 1722, 1613, 1612, 1614, 1745,
161334 /* 320 */ 1728, 1755, 1755, 1755, 1755, 1613, 1766, 1651, 1614, 1614,
161335 /* 330 */ 1651, 1745, 1728, 1651, 1728, 1651, 1613, 1766, 1653, 1758,
161336 /* 340 */ 1613, 1766, 1802, 1613, 1766, 1613, 1766, 1802, 1716, 1716,
161337 /* 350 */ 1716, 1768, 1813, 1813, 1802, 1716, 1713, 1716, 1768, 1716,
161338 /* 360 */ 1716, 1675, 1817, 1729, 1729, 1802, 1706, 1742, 1706, 1742,
161339 /* 370 */ 1706, 1742, 1706, 1742, 1613, 1774, 1774, 1786, 1786, 1723,
161340 /* 380 */ 1730, 1851, 1613, 1720, 1723, 1733, 1735, 1651, 1857, 1873,
161341 /* 390 */ 1873, 1896, 1896, 1896, 2070, 2070, 2070, 2070, 2070, 2070,
161342 /* 400 */ 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 207,
161343 /* 410 */ 915, 1010, 1030, 1217, 910, 1170, 1470, 1368, 1481, 1442,
161344 /* 420 */ 1318, 1383, 1515, 1482, 1523, 1542, 1546, 1547, 1588, 1595,
161345 /* 430 */ 1502, 1338, 1566, 1493, 1520, 1521, 1598, 1617, 1568, 1618,
161346 /* 440 */ 1511, 1514, 1645, 1649, 1570, 1484, 1910, 1915, 1897, 1757,
161347 /* 450 */ 1908, 1909, 1901, 1903, 1788, 1778, 1798, 1911, 1911, 1913,
161348 /* 460 */ 1793, 1918, 1795, 1924, 1940, 1800, 1814, 1911, 1815, 1882,
161349 /* 470 */ 1912, 1911, 1796, 1895, 1898, 1900, 1902, 1824, 1840, 1923,
161350 /* 480 */ 1818, 1957, 1955, 1939, 1847, 1803, 1899, 1938, 1904, 1890,
161351 /* 490 */ 1925, 1827, 1854, 1946, 1951, 1954, 1843, 1850, 1956, 1914,
161352 /* 500 */ 1958, 1960, 1953, 1961, 1917, 1920, 1962, 1881, 1959, 1963,
161353 /* 510 */ 1921, 1952, 1967, 1842, 1970, 1971, 1972, 1973, 1968, 1974,
161354 /* 520 */ 1976, 1905, 1858, 1977, 1978, 1887, 1975, 1982, 1862, 1981,
161355 /* 530 */ 1979, 1980, 1983, 1984, 1919, 1933, 1926, 1966, 1936, 1922,
161356 /* 540 */ 1985, 1993, 1998, 1997, 1999, 2000, 1988, 2003, 1981, 2004,
161357 /* 550 */ 2005, 2006, 2007, 2008, 2009, 2001, 2020, 2012, 2013, 2014,
161358 /* 560 */ 2015, 2017, 2018, 2011, 1906, 1907, 1916, 1927, 1928, 2019,
161359 /* 570 */ 2022, 2027, 2042, 2045,
161360 };
161361 #define YY_REDUCE_COUNT (408)
161362 #define YY_REDUCE_MIN (-267)
161363 #define YY_REDUCE_MAX (1715)
161364 static const short yy_reduce_ofst[] = {
161365 /* 0 */ -125, 733, 789, 241, 293, -123, -193, -191, -183, -187,
161366 /* 10 */ -180, 83, 133, -207, -198, -267, -175, -6, 166, 313,
161367 /* 20 */ 487, 396, 489, 598, 615, 685, 687, 79, 781, 857,
161368 /* 30 */ 490, 616, 240, 334, -188, 796, 841, 843, 1003, 1005,
161369 /* 40 */ 1007, -260, -260, -260, -260, -260, -260, -260, -260, -260,
161370 /* 50 */ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
161371 /* 60 */ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
161372 /* 70 */ -260, -260, -260, -260, -260, -260, -260, -260, 158, 203,
161373 /* 80 */ 391, 576, 724, 726, 886, 1021, 1035, 1063, 1081, 1083,
161374 /* 90 */ 1097, 1099, 1117, 1152, 1155, 1158, 1163, 1165, 1167, 1169,
161375 /* 100 */ 1172, 1180, 1183, 1198, 1200, 1205, 1215, 1225, 1227, 1236,
161376 /* 110 */ 1252, 1264, 1299, 1303, 1306, 1309, 1312, 1315, 1325, 1328,
161377 /* 120 */ 1337, 1340, 1343, 1371, 1373, 1384, 1386, 1411, -260, -260,
161378 /* 130 */ -260, -260, -260, -260, -260, -260, -260, -53, 138, 302,
161379 /* 140 */ -158, 357, 223, -222, 411, 458, -92, 556, 669, 581,
161380 /* 150 */ 632, 581, -260, 632, 758, 778, 920, -260, -260, -260,
161381 /* 160 */ -260, 161, 161, 161, 307, 234, 392, 526, 790, 195,
161382 /* 170 */ 359, -174, -173, 362, 362, -189, 16, 560, 567, 261,
161383 /* 180 */ 689, 802, 853, -122, -166, 408, 335, 617, 690, 837,
161384 /* 190 */ 1001, 746, 1061, 515, 1082, 994, 1034, -135, 1000, 1048,
161385 /* 200 */ 1137, 877, 897, 186, 627, 1031, 1133, 1148, 1159, 1194,
161386 /* 210 */ 1199, 1195, -194, -142, 18, -152, 68, 201, 253, 269,
161387 /* 220 */ 294, 354, 521, 528, 676, 680, 736, 743, 850, 907,
161388 /* 230 */ 1041, 1047, 1060, 727, 1139, 1147, 1201, 1237, 1278, 1359,
161389 /* 240 */ 1393, 1400, 1413, 1429, 1433, 1437, 1126, 1410, 1430, 1444,
161390 /* 250 */ 1480, 1483, 1405, 1486, 1490, 1492, 1420, 1372, 1496, 1498,
161391 /* 260 */ 1441, 1499, 253, 1500, 1503, 1504, 1506, 1507, 1508, 1398,
161392 /* 270 */ 1415, 1453, 1448, 1449, 1450, 1452, 1405, 1453, 1453, 1465,
161393 /* 280 */ 1495, 1519, 1414, 1443, 1445, 1468, 1456, 1455, 1457, 1424,
161394 /* 290 */ 1473, 1454, 1459, 1474, 1460, 1479, 1434, 1512, 1494, 1509,
161395 /* 300 */ 1517, 1518, 1525, 1469, 1489, 1501, 1467, 1510, 1497, 1543,
161396 /* 310 */ 1451, 1462, 1557, 1558, 1471, 1472, 1561, 1487, 1505, 1524,
161397 /* 320 */ 1538, 1537, 1545, 1548, 1556, 1575, 1596, 1552, 1529, 1530,
161398 /* 330 */ 1559, 1533, 1572, 1562, 1573, 1563, 1604, 1615, 1522, 1532,
161399 /* 340 */ 1622, 1624, 1605, 1625, 1628, 1629, 1631, 1607, 1616, 1619,
161400 /* 350 */ 1620, 1606, 1621, 1623, 1630, 1626, 1632, 1636, 1633, 1637,
161401 /* 360 */ 1638, 1531, 1541, 1567, 1571, 1640, 1597, 1599, 1601, 1603,
161402 /* 370 */ 1608, 1610, 1611, 1627, 1664, 1549, 1550, 1609, 1634, 1639,
161403 /* 380 */ 1641, 1602, 1676, 1642, 1646, 1644, 1650, 1654, 1683, 1694,
161404 /* 390 */ 1707, 1711, 1712, 1714, 1643, 1647, 1652, 1698, 1695, 1696,
161405 /* 400 */ 1697, 1699, 1700, 1689, 1691, 1701, 1702, 1704, 1715,
161406 };
161407 static const YYACTIONTYPE yy_default[] = {
161408 /* 0 */ 1637, 1637, 1637, 1466, 1233, 1344, 1233, 1233, 1233, 1466,
161409 /* 10 */ 1466, 1466, 1233, 1374, 1374, 1519, 1266, 1233, 1233, 1233,
161410 /* 20 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1465, 1233, 1233,
161411 /* 30 */ 1233, 1233, 1554, 1554, 1233, 1233, 1233, 1233, 1233, 1233,
161412 /* 40 */ 1233, 1233, 1383, 1233, 1390, 1233, 1233, 1233, 1233, 1233,
161413 /* 50 */ 1467, 1468, 1233, 1233, 1233, 1518, 1520, 1483, 1397, 1396,
161414 /* 60 */ 1395, 1394, 1501, 1361, 1388, 1381, 1385, 1461, 1462, 1460,
161415 /* 70 */ 1464, 1468, 1467, 1233, 1384, 1431, 1445, 1430, 1233, 1233,
161416 /* 80 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161417 /* 90 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161418 /* 100 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161419 /* 110 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161420 /* 120 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1439, 1444,
161421 /* 130 */ 1451, 1443, 1440, 1433, 1432, 1434, 1435, 1233, 1233, 1257,
161422 /* 140 */ 1233, 1233, 1254, 1308, 1233, 1233, 1233, 1233, 1233, 1538,
161423 /* 150 */ 1537, 1233, 1436, 1233, 1266, 1425, 1424, 1448, 1437, 1447,
161424 /* 160 */ 1446, 1526, 1590, 1589, 1484, 1233, 1233, 1233, 1233, 1233,
161425 /* 170 */ 1233, 1554, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161426 /* 180 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161427 /* 190 */ 1233, 1233, 1233, 1233, 1233, 1554, 1554, 1233, 1266, 1554,
161428 /* 200 */ 1554, 1262, 1262, 1368, 1233, 1533, 1335, 1335, 1335, 1335,
161429 /* 210 */ 1344, 1335, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161430 /* 220 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1523, 1521, 1233,
161431 /* 230 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161432 /* 240 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161433 /* 250 */ 1233, 1233, 1233, 1233, 1233, 1233, 1340, 1233, 1233, 1233,
161434 /* 260 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1583, 1233,
161435 /* 270 */ 1496, 1322, 1340, 1340, 1340, 1340, 1342, 1323, 1321, 1334,
161436 /* 280 */ 1267, 1240, 1629, 1400, 1389, 1341, 1363, 1389, 1363, 1626,
161437 /* 290 */ 1387, 1400, 1400, 1387, 1400, 1341, 1626, 1283, 1606, 1278,
161438 /* 300 */ 1374, 1374, 1374, 1363, 1368, 1368, 1463, 1341, 1334, 1233,
161439 /* 310 */ 1629, 1629, 1349, 1349, 1628, 1628, 1349, 1484, 1613, 1409,
161440 /* 320 */ 1311, 1317, 1317, 1317, 1317, 1349, 1251, 1387, 1613, 1613,
161441 /* 330 */ 1387, 1409, 1311, 1387, 1311, 1387, 1349, 1251, 1500, 1623,
161442 /* 340 */ 1349, 1251, 1474, 1349, 1251, 1349, 1251, 1474, 1309, 1309,
161443 /* 350 */ 1309, 1298, 1233, 1233, 1474, 1309, 1283, 1309, 1298, 1309,
161444 /* 360 */ 1309, 1572, 1233, 1478, 1478, 1474, 1367, 1362, 1367, 1362,
161445 /* 370 */ 1367, 1362, 1367, 1362, 1349, 1564, 1564, 1377, 1377, 1382,
161446 /* 380 */ 1368, 1469, 1349, 1233, 1382, 1380, 1378, 1387, 1301, 1586,
161447 /* 390 */ 1586, 1582, 1582, 1582, 1634, 1634, 1533, 1599, 1266, 1266,
161448 /* 400 */ 1266, 1266, 1599, 1285, 1285, 1267, 1267, 1266, 1599, 1233,
161449 /* 410 */ 1233, 1233, 1233, 1233, 1233, 1594, 1233, 1528, 1485, 1353,
161450 /* 420 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161451 /* 430 */ 1233, 1233, 1233, 1233, 1539, 1233, 1233, 1233, 1233, 1233,
161452 /* 440 */ 1233, 1233, 1233, 1233, 1233, 1414, 1233, 1236, 1530, 1233,
161453 /* 450 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1391, 1392, 1354,
161454 /* 460 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1406, 1233, 1233,
161455 /* 470 */ 1233, 1401, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161456 /* 480 */ 1625, 1233, 1233, 1233, 1233, 1233, 1233, 1499, 1498, 1233,
161457 /* 490 */ 1233, 1351, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161458 /* 500 */ 1233, 1233, 1233, 1233, 1233, 1281, 1233, 1233, 1233, 1233,
161459 /* 510 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161460 /* 520 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1379,
161461 /* 530 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161462 /* 540 */ 1233, 1233, 1233, 1233, 1569, 1369, 1233, 1233, 1616, 1233,
161463 /* 550 */ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
161464 /* 560 */ 1233, 1233, 1233, 1610, 1325, 1416, 1233, 1415, 1419, 1255,
161465 /* 570 */ 1233, 1245, 1233, 1233,
161466 };
161467 /********** End of lemon-generated parsing tables *****************************/
161468
161469 /* The next table maps tokens (terminal symbols) into fallback tokens.
161470 ** If a construct like the following:
@@ -161492,14 +161525,14 @@
161525 59, /* DETACH => ID */
161526 59, /* EACH => ID */
161527 59, /* FAIL => ID */
161528 0, /* OR => nothing */
161529 0, /* AND => nothing */
161530 0, /* IS => nothing */
161531 59, /* MATCH => ID */
161532 59, /* LIKE_KW => ID */
161533 0, /* BETWEEN => nothing */
 
161534 0, /* IN => nothing */
161535 0, /* ISNULL => nothing */
161536 0, /* NOTNULL => nothing */
161537 0, /* NE => nothing */
161538 0, /* EQ => nothing */
@@ -161559,10 +161592,11 @@
161592 0, /* MINUS => nothing */
161593 0, /* STAR => nothing */
161594 0, /* SLASH => nothing */
161595 0, /* REM => nothing */
161596 0, /* CONCAT => nothing */
161597 0, /* PTR => nothing */
161598 0, /* COLLATE => nothing */
161599 0, /* BITNOT => nothing */
161600 0, /* ON => nothing */
161601 0, /* INDEXED => nothing */
161602 0, /* STRING => nothing */
@@ -161764,14 +161798,14 @@
161798 /* 40 */ "DETACH",
161799 /* 41 */ "EACH",
161800 /* 42 */ "FAIL",
161801 /* 43 */ "OR",
161802 /* 44 */ "AND",
161803 /* 45 */ "IS",
161804 /* 46 */ "MATCH",
161805 /* 47 */ "LIKE_KW",
161806 /* 48 */ "BETWEEN",
161807 /* 49 */ "IN",
161808 /* 50 */ "ISNULL",
161809 /* 51 */ "NOTNULL",
161810 /* 52 */ "NE",
161811 /* 53 */ "EQ",
@@ -161831,216 +161865,217 @@
161865 /* 107 */ "MINUS",
161866 /* 108 */ "STAR",
161867 /* 109 */ "SLASH",
161868 /* 110 */ "REM",
161869 /* 111 */ "CONCAT",
161870 /* 112 */ "PTR",
161871 /* 113 */ "COLLATE",
161872 /* 114 */ "BITNOT",
161873 /* 115 */ "ON",
161874 /* 116 */ "INDEXED",
161875 /* 117 */ "STRING",
161876 /* 118 */ "JOIN_KW",
161877 /* 119 */ "CONSTRAINT",
161878 /* 120 */ "DEFAULT",
161879 /* 121 */ "NULL",
161880 /* 122 */ "PRIMARY",
161881 /* 123 */ "UNIQUE",
161882 /* 124 */ "CHECK",
161883 /* 125 */ "REFERENCES",
161884 /* 126 */ "AUTOINCR",
161885 /* 127 */ "INSERT",
161886 /* 128 */ "DELETE",
161887 /* 129 */ "UPDATE",
161888 /* 130 */ "SET",
161889 /* 131 */ "DEFERRABLE",
161890 /* 132 */ "FOREIGN",
161891 /* 133 */ "DROP",
161892 /* 134 */ "UNION",
161893 /* 135 */ "ALL",
161894 /* 136 */ "EXCEPT",
161895 /* 137 */ "INTERSECT",
161896 /* 138 */ "SELECT",
161897 /* 139 */ "VALUES",
161898 /* 140 */ "DISTINCT",
161899 /* 141 */ "DOT",
161900 /* 142 */ "FROM",
161901 /* 143 */ "JOIN",
161902 /* 144 */ "USING",
161903 /* 145 */ "ORDER",
161904 /* 146 */ "GROUP",
161905 /* 147 */ "HAVING",
161906 /* 148 */ "LIMIT",
161907 /* 149 */ "WHERE",
161908 /* 150 */ "RETURNING",
161909 /* 151 */ "INTO",
161910 /* 152 */ "NOTHING",
161911 /* 153 */ "FLOAT",
161912 /* 154 */ "BLOB",
161913 /* 155 */ "INTEGER",
161914 /* 156 */ "VARIABLE",
161915 /* 157 */ "CASE",
161916 /* 158 */ "WHEN",
161917 /* 159 */ "THEN",
161918 /* 160 */ "ELSE",
161919 /* 161 */ "INDEX",
161920 /* 162 */ "ALTER",
161921 /* 163 */ "ADD",
161922 /* 164 */ "WINDOW",
161923 /* 165 */ "OVER",
161924 /* 166 */ "FILTER",
161925 /* 167 */ "COLUMN",
161926 /* 168 */ "AGG_FUNCTION",
161927 /* 169 */ "AGG_COLUMN",
161928 /* 170 */ "TRUEFALSE",
161929 /* 171 */ "ISNOT",
161930 /* 172 */ "FUNCTION",
161931 /* 173 */ "UMINUS",
161932 /* 174 */ "UPLUS",
161933 /* 175 */ "TRUTH",
161934 /* 176 */ "REGISTER",
161935 /* 177 */ "VECTOR",
161936 /* 178 */ "SELECT_COLUMN",
161937 /* 179 */ "IF_NULL_ROW",
161938 /* 180 */ "ASTERISK",
161939 /* 181 */ "SPAN",
161940 /* 182 */ "ERROR",
161941 /* 183 */ "SPACE",
161942 /* 184 */ "ILLEGAL",
161943 /* 185 */ "input",
161944 /* 186 */ "cmdlist",
161945 /* 187 */ "ecmd",
161946 /* 188 */ "cmdx",
161947 /* 189 */ "explain",
161948 /* 190 */ "cmd",
161949 /* 191 */ "transtype",
161950 /* 192 */ "trans_opt",
161951 /* 193 */ "nm",
161952 /* 194 */ "savepoint_opt",
161953 /* 195 */ "create_table",
161954 /* 196 */ "create_table_args",
161955 /* 197 */ "createkw",
161956 /* 198 */ "temp",
161957 /* 199 */ "ifnotexists",
161958 /* 200 */ "dbnm",
161959 /* 201 */ "columnlist",
161960 /* 202 */ "conslist_opt",
161961 /* 203 */ "table_option_set",
161962 /* 204 */ "select",
161963 /* 205 */ "table_option",
161964 /* 206 */ "columnname",
161965 /* 207 */ "carglist",
161966 /* 208 */ "typetoken",
161967 /* 209 */ "typename",
161968 /* 210 */ "signed",
161969 /* 211 */ "plus_num",
161970 /* 212 */ "minus_num",
161971 /* 213 */ "scanpt",
161972 /* 214 */ "scantok",
161973 /* 215 */ "ccons",
161974 /* 216 */ "term",
161975 /* 217 */ "expr",
161976 /* 218 */ "onconf",
161977 /* 219 */ "sortorder",
161978 /* 220 */ "autoinc",
161979 /* 221 */ "eidlist_opt",
161980 /* 222 */ "refargs",
161981 /* 223 */ "defer_subclause",
161982 /* 224 */ "generated",
161983 /* 225 */ "refarg",
161984 /* 226 */ "refact",
161985 /* 227 */ "init_deferred_pred_opt",
161986 /* 228 */ "conslist",
161987 /* 229 */ "tconscomma",
161988 /* 230 */ "tcons",
161989 /* 231 */ "sortlist",
161990 /* 232 */ "eidlist",
161991 /* 233 */ "defer_subclause_opt",
161992 /* 234 */ "orconf",
161993 /* 235 */ "resolvetype",
161994 /* 236 */ "raisetype",
161995 /* 237 */ "ifexists",
161996 /* 238 */ "fullname",
161997 /* 239 */ "selectnowith",
161998 /* 240 */ "oneselect",
161999 /* 241 */ "wqlist",
162000 /* 242 */ "multiselect_op",
162001 /* 243 */ "distinct",
162002 /* 244 */ "selcollist",
162003 /* 245 */ "from",
162004 /* 246 */ "where_opt",
162005 /* 247 */ "groupby_opt",
162006 /* 248 */ "having_opt",
162007 /* 249 */ "orderby_opt",
162008 /* 250 */ "limit_opt",
162009 /* 251 */ "window_clause",
162010 /* 252 */ "values",
162011 /* 253 */ "nexprlist",
162012 /* 254 */ "sclp",
162013 /* 255 */ "as",
162014 /* 256 */ "seltablist",
162015 /* 257 */ "stl_prefix",
162016 /* 258 */ "joinop",
162017 /* 259 */ "indexed_opt",
162018 /* 260 */ "on_opt",
162019 /* 261 */ "using_opt",
162020 /* 262 */ "exprlist",
162021 /* 263 */ "xfullname",
162022 /* 264 */ "idlist",
162023 /* 265 */ "nulls",
162024 /* 266 */ "with",
162025 /* 267 */ "where_opt_ret",
162026 /* 268 */ "setlist",
162027 /* 269 */ "insert_cmd",
162028 /* 270 */ "idlist_opt",
162029 /* 271 */ "upsert",
162030 /* 272 */ "returning",
162031 /* 273 */ "filter_over",
162032 /* 274 */ "likeop",
162033 /* 275 */ "between_op",
162034 /* 276 */ "in_op",
162035 /* 277 */ "paren_exprlist",
162036 /* 278 */ "case_operand",
162037 /* 279 */ "case_exprlist",
162038 /* 280 */ "case_else",
162039 /* 281 */ "uniqueflag",
162040 /* 282 */ "collate",
162041 /* 283 */ "vinto",
162042 /* 284 */ "nmnum",
162043 /* 285 */ "trigger_decl",
162044 /* 286 */ "trigger_cmd_list",
162045 /* 287 */ "trigger_time",
162046 /* 288 */ "trigger_event",
162047 /* 289 */ "foreach_clause",
162048 /* 290 */ "when_clause",
162049 /* 291 */ "trigger_cmd",
162050 /* 292 */ "trnm",
162051 /* 293 */ "tridxby",
162052 /* 294 */ "database_kw_opt",
162053 /* 295 */ "key_opt",
162054 /* 296 */ "add_column_fullname",
162055 /* 297 */ "kwcolumn_opt",
162056 /* 298 */ "create_vtab",
162057 /* 299 */ "vtabarglist",
162058 /* 300 */ "vtabarg",
162059 /* 301 */ "vtabargtoken",
162060 /* 302 */ "lp",
162061 /* 303 */ "anylist",
162062 /* 304 */ "wqitem",
162063 /* 305 */ "wqas",
162064 /* 306 */ "windowdefn_list",
162065 /* 307 */ "windowdefn",
162066 /* 308 */ "window",
162067 /* 309 */ "frame_opt",
162068 /* 310 */ "part_opt",
162069 /* 311 */ "filter_clause",
162070 /* 312 */ "over_clause",
162071 /* 313 */ "range_or_rows",
162072 /* 314 */ "frame_bound",
162073 /* 315 */ "frame_bound_s",
162074 /* 316 */ "frame_bound_e",
162075 /* 317 */ "frame_exclude_opt",
162076 /* 318 */ "frame_exclude",
162077 };
162078 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
162079
162080 #ifndef NDEBUG
162081 /* For tracing reduce actions, the names of all rules are required.
@@ -162256,199 +162291,200 @@
162291 /* 207 */ "expr ::= expr IS expr",
162292 /* 208 */ "expr ::= expr IS NOT expr",
162293 /* 209 */ "expr ::= NOT expr",
162294 /* 210 */ "expr ::= BITNOT expr",
162295 /* 211 */ "expr ::= PLUS|MINUS expr",
162296 /* 212 */ "expr ::= expr PTR expr",
162297 /* 213 */ "between_op ::= BETWEEN",
162298 /* 214 */ "between_op ::= NOT BETWEEN",
162299 /* 215 */ "expr ::= expr between_op expr AND expr",
162300 /* 216 */ "in_op ::= IN",
162301 /* 217 */ "in_op ::= NOT IN",
162302 /* 218 */ "expr ::= expr in_op LP exprlist RP",
162303 /* 219 */ "expr ::= LP select RP",
162304 /* 220 */ "expr ::= expr in_op LP select RP",
162305 /* 221 */ "expr ::= expr in_op nm dbnm paren_exprlist",
162306 /* 222 */ "expr ::= EXISTS LP select RP",
162307 /* 223 */ "expr ::= CASE case_operand case_exprlist case_else END",
162308 /* 224 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
162309 /* 225 */ "case_exprlist ::= WHEN expr THEN expr",
162310 /* 226 */ "case_else ::= ELSE expr",
162311 /* 227 */ "case_else ::=",
162312 /* 228 */ "case_operand ::= expr",
162313 /* 229 */ "case_operand ::=",
162314 /* 230 */ "exprlist ::=",
162315 /* 231 */ "nexprlist ::= nexprlist COMMA expr",
162316 /* 232 */ "nexprlist ::= expr",
162317 /* 233 */ "paren_exprlist ::=",
162318 /* 234 */ "paren_exprlist ::= LP exprlist RP",
162319 /* 235 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
162320 /* 236 */ "uniqueflag ::= UNIQUE",
162321 /* 237 */ "uniqueflag ::=",
162322 /* 238 */ "eidlist_opt ::=",
162323 /* 239 */ "eidlist_opt ::= LP eidlist RP",
162324 /* 240 */ "eidlist ::= eidlist COMMA nm collate sortorder",
162325 /* 241 */ "eidlist ::= nm collate sortorder",
162326 /* 242 */ "collate ::=",
162327 /* 243 */ "collate ::= COLLATE ID|STRING",
162328 /* 244 */ "cmd ::= DROP INDEX ifexists fullname",
162329 /* 245 */ "cmd ::= VACUUM vinto",
162330 /* 246 */ "cmd ::= VACUUM nm vinto",
162331 /* 247 */ "vinto ::= INTO expr",
162332 /* 248 */ "vinto ::=",
162333 /* 249 */ "cmd ::= PRAGMA nm dbnm",
162334 /* 250 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
162335 /* 251 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
162336 /* 252 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
162337 /* 253 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
162338 /* 254 */ "plus_num ::= PLUS INTEGER|FLOAT",
162339 /* 255 */ "minus_num ::= MINUS INTEGER|FLOAT",
162340 /* 256 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
162341 /* 257 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
162342 /* 258 */ "trigger_time ::= BEFORE|AFTER",
162343 /* 259 */ "trigger_time ::= INSTEAD OF",
162344 /* 260 */ "trigger_time ::=",
162345 /* 261 */ "trigger_event ::= DELETE|INSERT",
162346 /* 262 */ "trigger_event ::= UPDATE",
162347 /* 263 */ "trigger_event ::= UPDATE OF idlist",
162348 /* 264 */ "when_clause ::=",
162349 /* 265 */ "when_clause ::= WHEN expr",
162350 /* 266 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
162351 /* 267 */ "trigger_cmd_list ::= trigger_cmd SEMI",
162352 /* 268 */ "trnm ::= nm DOT nm",
162353 /* 269 */ "tridxby ::= INDEXED BY nm",
162354 /* 270 */ "tridxby ::= NOT INDEXED",
162355 /* 271 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
162356 /* 272 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
162357 /* 273 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
162358 /* 274 */ "trigger_cmd ::= scanpt select scanpt",
162359 /* 275 */ "expr ::= RAISE LP IGNORE RP",
162360 /* 276 */ "expr ::= RAISE LP raisetype COMMA nm RP",
162361 /* 277 */ "raisetype ::= ROLLBACK",
162362 /* 278 */ "raisetype ::= ABORT",
162363 /* 279 */ "raisetype ::= FAIL",
162364 /* 280 */ "cmd ::= DROP TRIGGER ifexists fullname",
162365 /* 281 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
162366 /* 282 */ "cmd ::= DETACH database_kw_opt expr",
162367 /* 283 */ "key_opt ::=",
162368 /* 284 */ "key_opt ::= KEY expr",
162369 /* 285 */ "cmd ::= REINDEX",
162370 /* 286 */ "cmd ::= REINDEX nm dbnm",
162371 /* 287 */ "cmd ::= ANALYZE",
162372 /* 288 */ "cmd ::= ANALYZE nm dbnm",
162373 /* 289 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
162374 /* 290 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
162375 /* 291 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
162376 /* 292 */ "add_column_fullname ::= fullname",
162377 /* 293 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
162378 /* 294 */ "cmd ::= create_vtab",
162379 /* 295 */ "cmd ::= create_vtab LP vtabarglist RP",
162380 /* 296 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
162381 /* 297 */ "vtabarg ::=",
162382 /* 298 */ "vtabargtoken ::= ANY",
162383 /* 299 */ "vtabargtoken ::= lp anylist RP",
162384 /* 300 */ "lp ::= LP",
162385 /* 301 */ "with ::= WITH wqlist",
162386 /* 302 */ "with ::= WITH RECURSIVE wqlist",
162387 /* 303 */ "wqas ::= AS",
162388 /* 304 */ "wqas ::= AS MATERIALIZED",
162389 /* 305 */ "wqas ::= AS NOT MATERIALIZED",
162390 /* 306 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
162391 /* 307 */ "wqlist ::= wqitem",
162392 /* 308 */ "wqlist ::= wqlist COMMA wqitem",
162393 /* 309 */ "windowdefn_list ::= windowdefn",
162394 /* 310 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
162395 /* 311 */ "windowdefn ::= nm AS LP window RP",
162396 /* 312 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
162397 /* 313 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
162398 /* 314 */ "window ::= ORDER BY sortlist frame_opt",
162399 /* 315 */ "window ::= nm ORDER BY sortlist frame_opt",
162400 /* 316 */ "window ::= frame_opt",
162401 /* 317 */ "window ::= nm frame_opt",
162402 /* 318 */ "frame_opt ::=",
162403 /* 319 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
162404 /* 320 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
162405 /* 321 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
162406 /* 322 */ "frame_bound_s ::= frame_bound",
162407 /* 323 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
162408 /* 324 */ "frame_bound_e ::= frame_bound",
162409 /* 325 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
162410 /* 326 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
162411 /* 327 */ "frame_bound ::= CURRENT ROW",
162412 /* 328 */ "frame_exclude_opt ::=",
162413 /* 329 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
162414 /* 330 */ "frame_exclude ::= NO OTHERS",
162415 /* 331 */ "frame_exclude ::= CURRENT ROW",
162416 /* 332 */ "frame_exclude ::= GROUP|TIES",
162417 /* 333 */ "window_clause ::= WINDOW windowdefn_list",
162418 /* 334 */ "filter_over ::= filter_clause over_clause",
162419 /* 335 */ "filter_over ::= over_clause",
162420 /* 336 */ "filter_over ::= filter_clause",
162421 /* 337 */ "over_clause ::= OVER LP window RP",
162422 /* 338 */ "over_clause ::= OVER nm",
162423 /* 339 */ "filter_clause ::= FILTER LP WHERE expr RP",
162424 /* 340 */ "input ::= cmdlist",
162425 /* 341 */ "cmdlist ::= cmdlist ecmd",
162426 /* 342 */ "cmdlist ::= ecmd",
162427 /* 343 */ "ecmd ::= SEMI",
162428 /* 344 */ "ecmd ::= cmdx SEMI",
162429 /* 345 */ "ecmd ::= explain cmdx SEMI",
162430 /* 346 */ "trans_opt ::=",
162431 /* 347 */ "trans_opt ::= TRANSACTION",
162432 /* 348 */ "trans_opt ::= TRANSACTION nm",
162433 /* 349 */ "savepoint_opt ::= SAVEPOINT",
162434 /* 350 */ "savepoint_opt ::=",
162435 /* 351 */ "cmd ::= create_table create_table_args",
162436 /* 352 */ "table_option_set ::= table_option",
162437 /* 353 */ "columnlist ::= columnlist COMMA columnname carglist",
162438 /* 354 */ "columnlist ::= columnname carglist",
162439 /* 355 */ "nm ::= ID|INDEXED",
162440 /* 356 */ "nm ::= STRING",
162441 /* 357 */ "nm ::= JOIN_KW",
162442 /* 358 */ "typetoken ::= typename",
162443 /* 359 */ "typename ::= ID|STRING",
162444 /* 360 */ "signed ::= plus_num",
162445 /* 361 */ "signed ::= minus_num",
162446 /* 362 */ "carglist ::= carglist ccons",
162447 /* 363 */ "carglist ::=",
162448 /* 364 */ "ccons ::= NULL onconf",
162449 /* 365 */ "ccons ::= GENERATED ALWAYS AS generated",
162450 /* 366 */ "ccons ::= AS generated",
162451 /* 367 */ "conslist_opt ::= COMMA conslist",
162452 /* 368 */ "conslist ::= conslist tconscomma tcons",
162453 /* 369 */ "conslist ::= tcons",
162454 /* 370 */ "tconscomma ::=",
162455 /* 371 */ "defer_subclause_opt ::= defer_subclause",
162456 /* 372 */ "resolvetype ::= raisetype",
162457 /* 373 */ "selectnowith ::= oneselect",
162458 /* 374 */ "oneselect ::= values",
162459 /* 375 */ "sclp ::= selcollist COMMA",
162460 /* 376 */ "as ::= ID|STRING",
162461 /* 377 */ "returning ::=",
162462 /* 378 */ "expr ::= term",
162463 /* 379 */ "likeop ::= LIKE_KW|MATCH",
162464 /* 380 */ "exprlist ::= nexprlist",
162465 /* 381 */ "nmnum ::= plus_num",
162466 /* 382 */ "nmnum ::= nm",
162467 /* 383 */ "nmnum ::= ON",
162468 /* 384 */ "nmnum ::= DELETE",
162469 /* 385 */ "nmnum ::= DEFAULT",
162470 /* 386 */ "plus_num ::= INTEGER|FLOAT",
162471 /* 387 */ "foreach_clause ::=",
162472 /* 388 */ "foreach_clause ::= FOR EACH ROW",
162473 /* 389 */ "trnm ::= nm",
162474 /* 390 */ "tridxby ::=",
162475 /* 391 */ "database_kw_opt ::= DATABASE",
162476 /* 392 */ "database_kw_opt ::=",
162477 /* 393 */ "kwcolumn_opt ::=",
162478 /* 394 */ "kwcolumn_opt ::= COLUMNKW",
162479 /* 395 */ "vtabarglist ::= vtabarg",
162480 /* 396 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
162481 /* 397 */ "vtabarg ::= vtabarg vtabargtoken",
162482 /* 398 */ "anylist ::=",
162483 /* 399 */ "anylist ::= anylist LP anylist RP",
162484 /* 400 */ "anylist ::= anylist ANY",
162485 /* 401 */ "with ::=",
162486 };
162487 #endif /* NDEBUG */
162488
162489
162490 #if YYSTACKDEPTH<=0
@@ -162570,103 +162606,103 @@
162606 ** Note: during a reduce, the only symbols destroyed are those
162607 ** which appear on the RHS of the rule, but which are *not* used
162608 ** inside the C code.
162609 */
162610 /********* Begin destructor definitions ***************************************/
162611 case 204: /* select */
162612 case 239: /* selectnowith */
162613 case 240: /* oneselect */
162614 case 252: /* values */
162615 {
162616 sqlite3SelectDelete(pParse->db, (yypminor->yy47));
162617 }
162618 break;
162619 case 216: /* term */
162620 case 217: /* expr */
162621 case 246: /* where_opt */
162622 case 248: /* having_opt */
162623 case 260: /* on_opt */
162624 case 267: /* where_opt_ret */
162625 case 278: /* case_operand */
162626 case 280: /* case_else */
162627 case 283: /* vinto */
162628 case 290: /* when_clause */
162629 case 295: /* key_opt */
162630 case 311: /* filter_clause */
162631 {
162632 sqlite3ExprDelete(pParse->db, (yypminor->yy528));
162633 }
162634 break;
162635 case 221: /* eidlist_opt */
162636 case 231: /* sortlist */
162637 case 232: /* eidlist */
162638 case 244: /* selcollist */
162639 case 247: /* groupby_opt */
162640 case 249: /* orderby_opt */
162641 case 253: /* nexprlist */
162642 case 254: /* sclp */
162643 case 262: /* exprlist */
162644 case 268: /* setlist */
162645 case 277: /* paren_exprlist */
162646 case 279: /* case_exprlist */
162647 case 310: /* part_opt */
162648 {
162649 sqlite3ExprListDelete(pParse->db, (yypminor->yy322));
162650 }
162651 break;
162652 case 238: /* fullname */
162653 case 245: /* from */
162654 case 256: /* seltablist */
162655 case 257: /* stl_prefix */
162656 case 263: /* xfullname */
162657 {
162658 sqlite3SrcListDelete(pParse->db, (yypminor->yy131));
162659 }
162660 break;
162661 case 241: /* wqlist */
162662 {
162663 sqlite3WithDelete(pParse->db, (yypminor->yy521));
162664 }
162665 break;
162666 case 251: /* window_clause */
162667 case 306: /* windowdefn_list */
162668 {
162669 sqlite3WindowListDelete(pParse->db, (yypminor->yy41));
162670 }
162671 break;
162672 case 261: /* using_opt */
162673 case 264: /* idlist */
162674 case 270: /* idlist_opt */
162675 {
162676 sqlite3IdListDelete(pParse->db, (yypminor->yy254));
162677 }
162678 break;
162679 case 273: /* filter_over */
162680 case 307: /* windowdefn */
162681 case 308: /* window */
162682 case 309: /* frame_opt */
162683 case 312: /* over_clause */
162684 {
162685 sqlite3WindowDelete(pParse->db, (yypminor->yy41));
162686 }
162687 break;
162688 case 286: /* trigger_cmd_list */
162689 case 291: /* trigger_cmd */
162690 {
162691 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy33));
162692 }
162693 break;
162694 case 288: /* trigger_event */
162695 {
162696 sqlite3IdListDelete(pParse->db, (yypminor->yy180).b);
162697 }
162698 break;
162699 case 314: /* frame_bound */
162700 case 315: /* frame_bound_s */
162701 case 316: /* frame_bound_e */
162702 {
162703 sqlite3ExprDelete(pParse->db, (yypminor->yy595).pExpr);
162704 }
162705 break;
162706 /********* End destructor definitions *****************************************/
162707 default: break; /* If no destructor action specified: do nothing */
162708 }
@@ -162953,411 +162989,412 @@
162989 }
162990
162991 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
162992 ** of that rule */
162993 static const YYCODETYPE yyRuleInfoLhs[] = {
162994 189, /* (0) explain ::= EXPLAIN */
162995 189, /* (1) explain ::= EXPLAIN QUERY PLAN */
162996 188, /* (2) cmdx ::= cmd */
162997 190, /* (3) cmd ::= BEGIN transtype trans_opt */
162998 191, /* (4) transtype ::= */
162999 191, /* (5) transtype ::= DEFERRED */
163000 191, /* (6) transtype ::= IMMEDIATE */
163001 191, /* (7) transtype ::= EXCLUSIVE */
163002 190, /* (8) cmd ::= COMMIT|END trans_opt */
163003 190, /* (9) cmd ::= ROLLBACK trans_opt */
163004 190, /* (10) cmd ::= SAVEPOINT nm */
163005 190, /* (11) cmd ::= RELEASE savepoint_opt nm */
163006 190, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
163007 195, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
163008 197, /* (14) createkw ::= CREATE */
163009 199, /* (15) ifnotexists ::= */
163010 199, /* (16) ifnotexists ::= IF NOT EXISTS */
163011 198, /* (17) temp ::= TEMP */
163012 198, /* (18) temp ::= */
163013 196, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
163014 196, /* (20) create_table_args ::= AS select */
163015 203, /* (21) table_option_set ::= */
163016 203, /* (22) table_option_set ::= table_option_set COMMA table_option */
163017 205, /* (23) table_option ::= WITHOUT nm */
163018 205, /* (24) table_option ::= nm */
163019 206, /* (25) columnname ::= nm typetoken */
163020 208, /* (26) typetoken ::= */
163021 208, /* (27) typetoken ::= typename LP signed RP */
163022 208, /* (28) typetoken ::= typename LP signed COMMA signed RP */
163023 209, /* (29) typename ::= typename ID|STRING */
163024 213, /* (30) scanpt ::= */
163025 214, /* (31) scantok ::= */
163026 215, /* (32) ccons ::= CONSTRAINT nm */
163027 215, /* (33) ccons ::= DEFAULT scantok term */
163028 215, /* (34) ccons ::= DEFAULT LP expr RP */
163029 215, /* (35) ccons ::= DEFAULT PLUS scantok term */
163030 215, /* (36) ccons ::= DEFAULT MINUS scantok term */
163031 215, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
163032 215, /* (38) ccons ::= NOT NULL onconf */
163033 215, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
163034 215, /* (40) ccons ::= UNIQUE onconf */
163035 215, /* (41) ccons ::= CHECK LP expr RP */
163036 215, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
163037 215, /* (43) ccons ::= defer_subclause */
163038 215, /* (44) ccons ::= COLLATE ID|STRING */
163039 224, /* (45) generated ::= LP expr RP */
163040 224, /* (46) generated ::= LP expr RP ID */
163041 220, /* (47) autoinc ::= */
163042 220, /* (48) autoinc ::= AUTOINCR */
163043 222, /* (49) refargs ::= */
163044 222, /* (50) refargs ::= refargs refarg */
163045 225, /* (51) refarg ::= MATCH nm */
163046 225, /* (52) refarg ::= ON INSERT refact */
163047 225, /* (53) refarg ::= ON DELETE refact */
163048 225, /* (54) refarg ::= ON UPDATE refact */
163049 226, /* (55) refact ::= SET NULL */
163050 226, /* (56) refact ::= SET DEFAULT */
163051 226, /* (57) refact ::= CASCADE */
163052 226, /* (58) refact ::= RESTRICT */
163053 226, /* (59) refact ::= NO ACTION */
163054 223, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
163055 223, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
163056 227, /* (62) init_deferred_pred_opt ::= */
163057 227, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
163058 227, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
163059 202, /* (65) conslist_opt ::= */
163060 229, /* (66) tconscomma ::= COMMA */
163061 230, /* (67) tcons ::= CONSTRAINT nm */
163062 230, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
163063 230, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
163064 230, /* (70) tcons ::= CHECK LP expr RP onconf */
163065 230, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
163066 233, /* (72) defer_subclause_opt ::= */
163067 218, /* (73) onconf ::= */
163068 218, /* (74) onconf ::= ON CONFLICT resolvetype */
163069 234, /* (75) orconf ::= */
163070 234, /* (76) orconf ::= OR resolvetype */
163071 235, /* (77) resolvetype ::= IGNORE */
163072 235, /* (78) resolvetype ::= REPLACE */
163073 190, /* (79) cmd ::= DROP TABLE ifexists fullname */
163074 237, /* (80) ifexists ::= IF EXISTS */
163075 237, /* (81) ifexists ::= */
163076 190, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
163077 190, /* (83) cmd ::= DROP VIEW ifexists fullname */
163078 190, /* (84) cmd ::= select */
163079 204, /* (85) select ::= WITH wqlist selectnowith */
163080 204, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
163081 204, /* (87) select ::= selectnowith */
163082 239, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
163083 242, /* (89) multiselect_op ::= UNION */
163084 242, /* (90) multiselect_op ::= UNION ALL */
163085 242, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
163086 240, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
163087 240, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
163088 252, /* (94) values ::= VALUES LP nexprlist RP */
163089 252, /* (95) values ::= values COMMA LP nexprlist RP */
163090 243, /* (96) distinct ::= DISTINCT */
163091 243, /* (97) distinct ::= ALL */
163092 243, /* (98) distinct ::= */
163093 254, /* (99) sclp ::= */
163094 244, /* (100) selcollist ::= sclp scanpt expr scanpt as */
163095 244, /* (101) selcollist ::= sclp scanpt STAR */
163096 244, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
163097 255, /* (103) as ::= AS nm */
163098 255, /* (104) as ::= */
163099 245, /* (105) from ::= */
163100 245, /* (106) from ::= FROM seltablist */
163101 257, /* (107) stl_prefix ::= seltablist joinop */
163102 257, /* (108) stl_prefix ::= */
163103 256, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
163104 256, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
163105 256, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
163106 256, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
163107 200, /* (113) dbnm ::= */
163108 200, /* (114) dbnm ::= DOT nm */
163109 238, /* (115) fullname ::= nm */
163110 238, /* (116) fullname ::= nm DOT nm */
163111 263, /* (117) xfullname ::= nm */
163112 263, /* (118) xfullname ::= nm DOT nm */
163113 263, /* (119) xfullname ::= nm DOT nm AS nm */
163114 263, /* (120) xfullname ::= nm AS nm */
163115 258, /* (121) joinop ::= COMMA|JOIN */
163116 258, /* (122) joinop ::= JOIN_KW JOIN */
163117 258, /* (123) joinop ::= JOIN_KW nm JOIN */
163118 258, /* (124) joinop ::= JOIN_KW nm nm JOIN */
163119 260, /* (125) on_opt ::= ON expr */
163120 260, /* (126) on_opt ::= */
163121 259, /* (127) indexed_opt ::= */
163122 259, /* (128) indexed_opt ::= INDEXED BY nm */
163123 259, /* (129) indexed_opt ::= NOT INDEXED */
163124 261, /* (130) using_opt ::= USING LP idlist RP */
163125 261, /* (131) using_opt ::= */
163126 249, /* (132) orderby_opt ::= */
163127 249, /* (133) orderby_opt ::= ORDER BY sortlist */
163128 231, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
163129 231, /* (135) sortlist ::= expr sortorder nulls */
163130 219, /* (136) sortorder ::= ASC */
163131 219, /* (137) sortorder ::= DESC */
163132 219, /* (138) sortorder ::= */
163133 265, /* (139) nulls ::= NULLS FIRST */
163134 265, /* (140) nulls ::= NULLS LAST */
163135 265, /* (141) nulls ::= */
163136 247, /* (142) groupby_opt ::= */
163137 247, /* (143) groupby_opt ::= GROUP BY nexprlist */
163138 248, /* (144) having_opt ::= */
163139 248, /* (145) having_opt ::= HAVING expr */
163140 250, /* (146) limit_opt ::= */
163141 250, /* (147) limit_opt ::= LIMIT expr */
163142 250, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
163143 250, /* (149) limit_opt ::= LIMIT expr COMMA expr */
163144 190, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
163145 246, /* (151) where_opt ::= */
163146 246, /* (152) where_opt ::= WHERE expr */
163147 267, /* (153) where_opt_ret ::= */
163148 267, /* (154) where_opt_ret ::= WHERE expr */
163149 267, /* (155) where_opt_ret ::= RETURNING selcollist */
163150 267, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
163151 190, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
163152 268, /* (158) setlist ::= setlist COMMA nm EQ expr */
163153 268, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
163154 268, /* (160) setlist ::= nm EQ expr */
163155 268, /* (161) setlist ::= LP idlist RP EQ expr */
163156 190, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
163157 190, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
163158 271, /* (164) upsert ::= */
163159 271, /* (165) upsert ::= RETURNING selcollist */
163160 271, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
163161 271, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
163162 271, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
163163 271, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
163164 272, /* (170) returning ::= RETURNING selcollist */
163165 269, /* (171) insert_cmd ::= INSERT orconf */
163166 269, /* (172) insert_cmd ::= REPLACE */
163167 270, /* (173) idlist_opt ::= */
163168 270, /* (174) idlist_opt ::= LP idlist RP */
163169 264, /* (175) idlist ::= idlist COMMA nm */
163170 264, /* (176) idlist ::= nm */
163171 217, /* (177) expr ::= LP expr RP */
163172 217, /* (178) expr ::= ID|INDEXED */
163173 217, /* (179) expr ::= JOIN_KW */
163174 217, /* (180) expr ::= nm DOT nm */
163175 217, /* (181) expr ::= nm DOT nm DOT nm */
163176 216, /* (182) term ::= NULL|FLOAT|BLOB */
163177 216, /* (183) term ::= STRING */
163178 216, /* (184) term ::= INTEGER */
163179 217, /* (185) expr ::= VARIABLE */
163180 217, /* (186) expr ::= expr COLLATE ID|STRING */
163181 217, /* (187) expr ::= CAST LP expr AS typetoken RP */
163182 217, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
163183 217, /* (189) expr ::= ID|INDEXED LP STAR RP */
163184 217, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
163185 217, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
163186 216, /* (192) term ::= CTIME_KW */
163187 217, /* (193) expr ::= LP nexprlist COMMA expr RP */
163188 217, /* (194) expr ::= expr AND expr */
163189 217, /* (195) expr ::= expr OR expr */
163190 217, /* (196) expr ::= expr LT|GT|GE|LE expr */
163191 217, /* (197) expr ::= expr EQ|NE expr */
163192 217, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
163193 217, /* (199) expr ::= expr PLUS|MINUS expr */
163194 217, /* (200) expr ::= expr STAR|SLASH|REM expr */
163195 217, /* (201) expr ::= expr CONCAT expr */
163196 274, /* (202) likeop ::= NOT LIKE_KW|MATCH */
163197 217, /* (203) expr ::= expr likeop expr */
163198 217, /* (204) expr ::= expr likeop expr ESCAPE expr */
163199 217, /* (205) expr ::= expr ISNULL|NOTNULL */
163200 217, /* (206) expr ::= expr NOT NULL */
163201 217, /* (207) expr ::= expr IS expr */
163202 217, /* (208) expr ::= expr IS NOT expr */
163203 217, /* (209) expr ::= NOT expr */
163204 217, /* (210) expr ::= BITNOT expr */
163205 217, /* (211) expr ::= PLUS|MINUS expr */
163206 217, /* (212) expr ::= expr PTR expr */
163207 275, /* (213) between_op ::= BETWEEN */
163208 275, /* (214) between_op ::= NOT BETWEEN */
163209 217, /* (215) expr ::= expr between_op expr AND expr */
163210 276, /* (216) in_op ::= IN */
163211 276, /* (217) in_op ::= NOT IN */
163212 217, /* (218) expr ::= expr in_op LP exprlist RP */
163213 217, /* (219) expr ::= LP select RP */
163214 217, /* (220) expr ::= expr in_op LP select RP */
163215 217, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */
163216 217, /* (222) expr ::= EXISTS LP select RP */
163217 217, /* (223) expr ::= CASE case_operand case_exprlist case_else END */
163218 279, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */
163219 279, /* (225) case_exprlist ::= WHEN expr THEN expr */
163220 280, /* (226) case_else ::= ELSE expr */
163221 280, /* (227) case_else ::= */
163222 278, /* (228) case_operand ::= expr */
163223 278, /* (229) case_operand ::= */
163224 262, /* (230) exprlist ::= */
163225 253, /* (231) nexprlist ::= nexprlist COMMA expr */
163226 253, /* (232) nexprlist ::= expr */
163227 277, /* (233) paren_exprlist ::= */
163228 277, /* (234) paren_exprlist ::= LP exprlist RP */
163229 190, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163230 281, /* (236) uniqueflag ::= UNIQUE */
163231 281, /* (237) uniqueflag ::= */
163232 221, /* (238) eidlist_opt ::= */
163233 221, /* (239) eidlist_opt ::= LP eidlist RP */
163234 232, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */
163235 232, /* (241) eidlist ::= nm collate sortorder */
163236 282, /* (242) collate ::= */
163237 282, /* (243) collate ::= COLLATE ID|STRING */
163238 190, /* (244) cmd ::= DROP INDEX ifexists fullname */
163239 190, /* (245) cmd ::= VACUUM vinto */
163240 190, /* (246) cmd ::= VACUUM nm vinto */
163241 283, /* (247) vinto ::= INTO expr */
163242 283, /* (248) vinto ::= */
163243 190, /* (249) cmd ::= PRAGMA nm dbnm */
163244 190, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */
163245 190, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */
163246 190, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */
163247 190, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */
163248 211, /* (254) plus_num ::= PLUS INTEGER|FLOAT */
163249 212, /* (255) minus_num ::= MINUS INTEGER|FLOAT */
163250 190, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163251 285, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163252 287, /* (258) trigger_time ::= BEFORE|AFTER */
163253 287, /* (259) trigger_time ::= INSTEAD OF */
163254 287, /* (260) trigger_time ::= */
163255 288, /* (261) trigger_event ::= DELETE|INSERT */
163256 288, /* (262) trigger_event ::= UPDATE */
163257 288, /* (263) trigger_event ::= UPDATE OF idlist */
163258 290, /* (264) when_clause ::= */
163259 290, /* (265) when_clause ::= WHEN expr */
163260 286, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163261 286, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */
163262 292, /* (268) trnm ::= nm DOT nm */
163263 293, /* (269) tridxby ::= INDEXED BY nm */
163264 293, /* (270) tridxby ::= NOT INDEXED */
163265 291, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163266 291, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163267 291, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163268 291, /* (274) trigger_cmd ::= scanpt select scanpt */
163269 217, /* (275) expr ::= RAISE LP IGNORE RP */
163270 217, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */
163271 236, /* (277) raisetype ::= ROLLBACK */
163272 236, /* (278) raisetype ::= ABORT */
163273 236, /* (279) raisetype ::= FAIL */
163274 190, /* (280) cmd ::= DROP TRIGGER ifexists fullname */
163275 190, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163276 190, /* (282) cmd ::= DETACH database_kw_opt expr */
163277 295, /* (283) key_opt ::= */
163278 295, /* (284) key_opt ::= KEY expr */
163279 190, /* (285) cmd ::= REINDEX */
163280 190, /* (286) cmd ::= REINDEX nm dbnm */
163281 190, /* (287) cmd ::= ANALYZE */
163282 190, /* (288) cmd ::= ANALYZE nm dbnm */
163283 190, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */
163284 190, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163285 190, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163286 296, /* (292) add_column_fullname ::= fullname */
163287 190, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163288 190, /* (294) cmd ::= create_vtab */
163289 190, /* (295) cmd ::= create_vtab LP vtabarglist RP */
163290 298, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163291 300, /* (297) vtabarg ::= */
163292 301, /* (298) vtabargtoken ::= ANY */
163293 301, /* (299) vtabargtoken ::= lp anylist RP */
163294 302, /* (300) lp ::= LP */
163295 266, /* (301) with ::= WITH wqlist */
163296 266, /* (302) with ::= WITH RECURSIVE wqlist */
163297 305, /* (303) wqas ::= AS */
163298 305, /* (304) wqas ::= AS MATERIALIZED */
163299 305, /* (305) wqas ::= AS NOT MATERIALIZED */
163300 304, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
163301 241, /* (307) wqlist ::= wqitem */
163302 241, /* (308) wqlist ::= wqlist COMMA wqitem */
163303 306, /* (309) windowdefn_list ::= windowdefn */
163304 306, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */
163305 307, /* (311) windowdefn ::= nm AS LP window RP */
163306 308, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163307 308, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163308 308, /* (314) window ::= ORDER BY sortlist frame_opt */
163309 308, /* (315) window ::= nm ORDER BY sortlist frame_opt */
163310 308, /* (316) window ::= frame_opt */
163311 308, /* (317) window ::= nm frame_opt */
163312 309, /* (318) frame_opt ::= */
163313 309, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163314 309, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163315 313, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
163316 315, /* (322) frame_bound_s ::= frame_bound */
163317 315, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
163318 316, /* (324) frame_bound_e ::= frame_bound */
163319 316, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
163320 314, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
163321 314, /* (327) frame_bound ::= CURRENT ROW */
163322 317, /* (328) frame_exclude_opt ::= */
163323 317, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
163324 318, /* (330) frame_exclude ::= NO OTHERS */
163325 318, /* (331) frame_exclude ::= CURRENT ROW */
163326 318, /* (332) frame_exclude ::= GROUP|TIES */
163327 251, /* (333) window_clause ::= WINDOW windowdefn_list */
163328 273, /* (334) filter_over ::= filter_clause over_clause */
163329 273, /* (335) filter_over ::= over_clause */
163330 273, /* (336) filter_over ::= filter_clause */
163331 312, /* (337) over_clause ::= OVER LP window RP */
163332 312, /* (338) over_clause ::= OVER nm */
163333 311, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
163334 185, /* (340) input ::= cmdlist */
163335 186, /* (341) cmdlist ::= cmdlist ecmd */
163336 186, /* (342) cmdlist ::= ecmd */
163337 187, /* (343) ecmd ::= SEMI */
163338 187, /* (344) ecmd ::= cmdx SEMI */
163339 187, /* (345) ecmd ::= explain cmdx SEMI */
163340 192, /* (346) trans_opt ::= */
163341 192, /* (347) trans_opt ::= TRANSACTION */
163342 192, /* (348) trans_opt ::= TRANSACTION nm */
163343 194, /* (349) savepoint_opt ::= SAVEPOINT */
163344 194, /* (350) savepoint_opt ::= */
163345 190, /* (351) cmd ::= create_table create_table_args */
163346 203, /* (352) table_option_set ::= table_option */
163347 201, /* (353) columnlist ::= columnlist COMMA columnname carglist */
163348 201, /* (354) columnlist ::= columnname carglist */
163349 193, /* (355) nm ::= ID|INDEXED */
163350 193, /* (356) nm ::= STRING */
163351 193, /* (357) nm ::= JOIN_KW */
163352 208, /* (358) typetoken ::= typename */
163353 209, /* (359) typename ::= ID|STRING */
163354 210, /* (360) signed ::= plus_num */
163355 210, /* (361) signed ::= minus_num */
163356 207, /* (362) carglist ::= carglist ccons */
163357 207, /* (363) carglist ::= */
163358 215, /* (364) ccons ::= NULL onconf */
163359 215, /* (365) ccons ::= GENERATED ALWAYS AS generated */
163360 215, /* (366) ccons ::= AS generated */
163361 202, /* (367) conslist_opt ::= COMMA conslist */
163362 228, /* (368) conslist ::= conslist tconscomma tcons */
163363 228, /* (369) conslist ::= tcons */
163364 229, /* (370) tconscomma ::= */
163365 233, /* (371) defer_subclause_opt ::= defer_subclause */
163366 235, /* (372) resolvetype ::= raisetype */
163367 239, /* (373) selectnowith ::= oneselect */
163368 240, /* (374) oneselect ::= values */
163369 254, /* (375) sclp ::= selcollist COMMA */
163370 255, /* (376) as ::= ID|STRING */
163371 272, /* (377) returning ::= */
163372 217, /* (378) expr ::= term */
163373 274, /* (379) likeop ::= LIKE_KW|MATCH */
163374 262, /* (380) exprlist ::= nexprlist */
163375 284, /* (381) nmnum ::= plus_num */
163376 284, /* (382) nmnum ::= nm */
163377 284, /* (383) nmnum ::= ON */
163378 284, /* (384) nmnum ::= DELETE */
163379 284, /* (385) nmnum ::= DEFAULT */
163380 211, /* (386) plus_num ::= INTEGER|FLOAT */
163381 289, /* (387) foreach_clause ::= */
163382 289, /* (388) foreach_clause ::= FOR EACH ROW */
163383 292, /* (389) trnm ::= nm */
163384 293, /* (390) tridxby ::= */
163385 294, /* (391) database_kw_opt ::= DATABASE */
163386 294, /* (392) database_kw_opt ::= */
163387 297, /* (393) kwcolumn_opt ::= */
163388 297, /* (394) kwcolumn_opt ::= COLUMNKW */
163389 299, /* (395) vtabarglist ::= vtabarg */
163390 299, /* (396) vtabarglist ::= vtabarglist COMMA vtabarg */
163391 300, /* (397) vtabarg ::= vtabarg vtabargtoken */
163392 303, /* (398) anylist ::= */
163393 303, /* (399) anylist ::= anylist LP anylist RP */
163394 303, /* (400) anylist ::= anylist ANY */
163395 266, /* (401) with ::= */
163396 };
163397
163398 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
163399 ** of symbols on the right-hand side of that rule. */
163400 static const signed char yyRuleInfoNRhs[] = {
@@ -163571,199 +163608,200 @@
163608 -3, /* (207) expr ::= expr IS expr */
163609 -4, /* (208) expr ::= expr IS NOT expr */
163610 -2, /* (209) expr ::= NOT expr */
163611 -2, /* (210) expr ::= BITNOT expr */
163612 -2, /* (211) expr ::= PLUS|MINUS expr */
163613 -3, /* (212) expr ::= expr PTR expr */
163614 -1, /* (213) between_op ::= BETWEEN */
163615 -2, /* (214) between_op ::= NOT BETWEEN */
163616 -5, /* (215) expr ::= expr between_op expr AND expr */
163617 -1, /* (216) in_op ::= IN */
163618 -2, /* (217) in_op ::= NOT IN */
163619 -5, /* (218) expr ::= expr in_op LP exprlist RP */
163620 -3, /* (219) expr ::= LP select RP */
163621 -5, /* (220) expr ::= expr in_op LP select RP */
163622 -5, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */
163623 -4, /* (222) expr ::= EXISTS LP select RP */
163624 -5, /* (223) expr ::= CASE case_operand case_exprlist case_else END */
163625 -5, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */
163626 -4, /* (225) case_exprlist ::= WHEN expr THEN expr */
163627 -2, /* (226) case_else ::= ELSE expr */
163628 0, /* (227) case_else ::= */
163629 -1, /* (228) case_operand ::= expr */
163630 0, /* (229) case_operand ::= */
163631 0, /* (230) exprlist ::= */
163632 -3, /* (231) nexprlist ::= nexprlist COMMA expr */
163633 -1, /* (232) nexprlist ::= expr */
163634 0, /* (233) paren_exprlist ::= */
163635 -3, /* (234) paren_exprlist ::= LP exprlist RP */
163636 -12, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163637 -1, /* (236) uniqueflag ::= UNIQUE */
163638 0, /* (237) uniqueflag ::= */
163639 0, /* (238) eidlist_opt ::= */
163640 -3, /* (239) eidlist_opt ::= LP eidlist RP */
163641 -5, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */
163642 -3, /* (241) eidlist ::= nm collate sortorder */
163643 0, /* (242) collate ::= */
163644 -2, /* (243) collate ::= COLLATE ID|STRING */
163645 -4, /* (244) cmd ::= DROP INDEX ifexists fullname */
163646 -2, /* (245) cmd ::= VACUUM vinto */
163647 -3, /* (246) cmd ::= VACUUM nm vinto */
163648 -2, /* (247) vinto ::= INTO expr */
163649 0, /* (248) vinto ::= */
163650 -3, /* (249) cmd ::= PRAGMA nm dbnm */
163651 -5, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */
163652 -6, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */
163653 -5, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */
163654 -6, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */
163655 -2, /* (254) plus_num ::= PLUS INTEGER|FLOAT */
163656 -2, /* (255) minus_num ::= MINUS INTEGER|FLOAT */
163657 -5, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163658 -11, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163659 -1, /* (258) trigger_time ::= BEFORE|AFTER */
163660 -2, /* (259) trigger_time ::= INSTEAD OF */
163661 0, /* (260) trigger_time ::= */
163662 -1, /* (261) trigger_event ::= DELETE|INSERT */
163663 -1, /* (262) trigger_event ::= UPDATE */
163664 -3, /* (263) trigger_event ::= UPDATE OF idlist */
163665 0, /* (264) when_clause ::= */
163666 -2, /* (265) when_clause ::= WHEN expr */
163667 -3, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163668 -2, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */
163669 -3, /* (268) trnm ::= nm DOT nm */
163670 -3, /* (269) tridxby ::= INDEXED BY nm */
163671 -2, /* (270) tridxby ::= NOT INDEXED */
163672 -9, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163673 -8, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163674 -6, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163675 -3, /* (274) trigger_cmd ::= scanpt select scanpt */
163676 -4, /* (275) expr ::= RAISE LP IGNORE RP */
163677 -6, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */
163678 -1, /* (277) raisetype ::= ROLLBACK */
163679 -1, /* (278) raisetype ::= ABORT */
163680 -1, /* (279) raisetype ::= FAIL */
163681 -4, /* (280) cmd ::= DROP TRIGGER ifexists fullname */
163682 -6, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163683 -3, /* (282) cmd ::= DETACH database_kw_opt expr */
163684 0, /* (283) key_opt ::= */
163685 -2, /* (284) key_opt ::= KEY expr */
163686 -1, /* (285) cmd ::= REINDEX */
163687 -3, /* (286) cmd ::= REINDEX nm dbnm */
163688 -1, /* (287) cmd ::= ANALYZE */
163689 -3, /* (288) cmd ::= ANALYZE nm dbnm */
163690 -6, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */
163691 -7, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163692 -6, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163693 -1, /* (292) add_column_fullname ::= fullname */
163694 -8, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163695 -1, /* (294) cmd ::= create_vtab */
163696 -4, /* (295) cmd ::= create_vtab LP vtabarglist RP */
163697 -8, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163698 0, /* (297) vtabarg ::= */
163699 -1, /* (298) vtabargtoken ::= ANY */
163700 -3, /* (299) vtabargtoken ::= lp anylist RP */
163701 -1, /* (300) lp ::= LP */
163702 -2, /* (301) with ::= WITH wqlist */
163703 -3, /* (302) with ::= WITH RECURSIVE wqlist */
163704 -1, /* (303) wqas ::= AS */
163705 -2, /* (304) wqas ::= AS MATERIALIZED */
163706 -3, /* (305) wqas ::= AS NOT MATERIALIZED */
163707 -6, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
163708 -1, /* (307) wqlist ::= wqitem */
163709 -3, /* (308) wqlist ::= wqlist COMMA wqitem */
163710 -1, /* (309) windowdefn_list ::= windowdefn */
163711 -3, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */
163712 -5, /* (311) windowdefn ::= nm AS LP window RP */
163713 -5, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163714 -6, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163715 -4, /* (314) window ::= ORDER BY sortlist frame_opt */
163716 -5, /* (315) window ::= nm ORDER BY sortlist frame_opt */
163717 -1, /* (316) window ::= frame_opt */
163718 -2, /* (317) window ::= nm frame_opt */
163719 0, /* (318) frame_opt ::= */
163720 -3, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163721 -6, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163722 -1, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
163723 -1, /* (322) frame_bound_s ::= frame_bound */
163724 -2, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
163725 -1, /* (324) frame_bound_e ::= frame_bound */
163726 -2, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
163727 -2, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
163728 -2, /* (327) frame_bound ::= CURRENT ROW */
163729 0, /* (328) frame_exclude_opt ::= */
163730 -2, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
163731 -2, /* (330) frame_exclude ::= NO OTHERS */
163732 -2, /* (331) frame_exclude ::= CURRENT ROW */
163733 -1, /* (332) frame_exclude ::= GROUP|TIES */
163734 -2, /* (333) window_clause ::= WINDOW windowdefn_list */
163735 -2, /* (334) filter_over ::= filter_clause over_clause */
163736 -1, /* (335) filter_over ::= over_clause */
163737 -1, /* (336) filter_over ::= filter_clause */
163738 -4, /* (337) over_clause ::= OVER LP window RP */
163739 -2, /* (338) over_clause ::= OVER nm */
163740 -5, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
163741 -1, /* (340) input ::= cmdlist */
163742 -2, /* (341) cmdlist ::= cmdlist ecmd */
163743 -1, /* (342) cmdlist ::= ecmd */
163744 -1, /* (343) ecmd ::= SEMI */
163745 -2, /* (344) ecmd ::= cmdx SEMI */
163746 -3, /* (345) ecmd ::= explain cmdx SEMI */
163747 0, /* (346) trans_opt ::= */
163748 -1, /* (347) trans_opt ::= TRANSACTION */
163749 -2, /* (348) trans_opt ::= TRANSACTION nm */
163750 -1, /* (349) savepoint_opt ::= SAVEPOINT */
163751 0, /* (350) savepoint_opt ::= */
163752 -2, /* (351) cmd ::= create_table create_table_args */
163753 -1, /* (352) table_option_set ::= table_option */
163754 -4, /* (353) columnlist ::= columnlist COMMA columnname carglist */
163755 -2, /* (354) columnlist ::= columnname carglist */
163756 -1, /* (355) nm ::= ID|INDEXED */
163757 -1, /* (356) nm ::= STRING */
163758 -1, /* (357) nm ::= JOIN_KW */
163759 -1, /* (358) typetoken ::= typename */
163760 -1, /* (359) typename ::= ID|STRING */
163761 -1, /* (360) signed ::= plus_num */
163762 -1, /* (361) signed ::= minus_num */
163763 -2, /* (362) carglist ::= carglist ccons */
163764 0, /* (363) carglist ::= */
163765 -2, /* (364) ccons ::= NULL onconf */
163766 -4, /* (365) ccons ::= GENERATED ALWAYS AS generated */
163767 -2, /* (366) ccons ::= AS generated */
163768 -2, /* (367) conslist_opt ::= COMMA conslist */
163769 -3, /* (368) conslist ::= conslist tconscomma tcons */
163770 -1, /* (369) conslist ::= tcons */
163771 0, /* (370) tconscomma ::= */
163772 -1, /* (371) defer_subclause_opt ::= defer_subclause */
163773 -1, /* (372) resolvetype ::= raisetype */
163774 -1, /* (373) selectnowith ::= oneselect */
163775 -1, /* (374) oneselect ::= values */
163776 -2, /* (375) sclp ::= selcollist COMMA */
163777 -1, /* (376) as ::= ID|STRING */
163778 0, /* (377) returning ::= */
163779 -1, /* (378) expr ::= term */
163780 -1, /* (379) likeop ::= LIKE_KW|MATCH */
163781 -1, /* (380) exprlist ::= nexprlist */
163782 -1, /* (381) nmnum ::= plus_num */
163783 -1, /* (382) nmnum ::= nm */
163784 -1, /* (383) nmnum ::= ON */
163785 -1, /* (384) nmnum ::= DELETE */
163786 -1, /* (385) nmnum ::= DEFAULT */
163787 -1, /* (386) plus_num ::= INTEGER|FLOAT */
163788 0, /* (387) foreach_clause ::= */
163789 -3, /* (388) foreach_clause ::= FOR EACH ROW */
163790 -1, /* (389) trnm ::= nm */
163791 0, /* (390) tridxby ::= */
163792 -1, /* (391) database_kw_opt ::= DATABASE */
163793 0, /* (392) database_kw_opt ::= */
163794 0, /* (393) kwcolumn_opt ::= */
163795 -1, /* (394) kwcolumn_opt ::= COLUMNKW */
163796 -1, /* (395) vtabarglist ::= vtabarg */
163797 -3, /* (396) vtabarglist ::= vtabarglist COMMA vtabarg */
163798 -2, /* (397) vtabarg ::= vtabarg vtabargtoken */
163799 0, /* (398) anylist ::= */
163800 -4, /* (399) anylist ::= anylist LP anylist RP */
163801 -2, /* (400) anylist ::= anylist ANY */
163802 0, /* (401) with ::= */
163803 };
163804
163805 static void yy_accept(yyParser*); /* Forward Declaration */
163806
163807 /*
@@ -163811,20 +163849,20 @@
163849 break;
163850 case 2: /* cmdx ::= cmd */
163851 { sqlite3FinishCoding(pParse); }
163852 break;
163853 case 3: /* cmd ::= BEGIN transtype trans_opt */
163854 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy394);}
163855 break;
163856 case 4: /* transtype ::= */
163857 {yymsp[1].minor.yy394 = TK_DEFERRED;}
163858 break;
163859 case 5: /* transtype ::= DEFERRED */
163860 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
163861 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
163862 case 321: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==321);
163863 {yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/}
163864 break;
163865 case 8: /* cmd ::= COMMIT|END trans_opt */
163866 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
163867 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
163868 break;
@@ -163843,11 +163881,11 @@
163881 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
163882 }
163883 break;
163884 case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
163885 {
163886 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy394,0,0,yymsp[-2].minor.yy394);
163887 }
163888 break;
163889 case 14: /* createkw ::= CREATE */
163890 {disableLookaside(pParse);}
163891 break;
@@ -163856,57 +163894,57 @@
163894 case 47: /* autoinc ::= */ yytestcase(yyruleno==47);
163895 case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
163896 case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72);
163897 case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
163898 case 98: /* distinct ::= */ yytestcase(yyruleno==98);
163899 case 242: /* collate ::= */ yytestcase(yyruleno==242);
163900 {yymsp[1].minor.yy394 = 0;}
163901 break;
163902 case 16: /* ifnotexists ::= IF NOT EXISTS */
163903 {yymsp[-2].minor.yy394 = 1;}
163904 break;
163905 case 17: /* temp ::= TEMP */
163906 {yymsp[0].minor.yy394 = pParse->db->init.busy==0;}
163907 break;
163908 case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */
163909 {
163910 sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy285,0);
163911 }
163912 break;
163913 case 20: /* create_table_args ::= AS select */
163914 {
163915 sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy47);
163916 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy47);
163917 }
163918 break;
163919 case 21: /* table_option_set ::= */
163920 {yymsp[1].minor.yy285 = 0;}
163921 break;
163922 case 22: /* table_option_set ::= table_option_set COMMA table_option */
163923 {yylhsminor.yy285 = yymsp[-2].minor.yy285|yymsp[0].minor.yy285;}
163924 yymsp[-2].minor.yy285 = yylhsminor.yy285;
163925 break;
163926 case 23: /* table_option ::= WITHOUT nm */
163927 {
163928 if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
163929 yymsp[-1].minor.yy285 = TF_WithoutRowid | TF_NoVisibleRowid;
163930 }else{
163931 yymsp[-1].minor.yy285 = 0;
163932 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
163933 }
163934 }
163935 break;
163936 case 24: /* table_option ::= nm */
163937 {
163938 if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict",6)==0 ){
163939 yylhsminor.yy285 = TF_Strict;
163940 }else{
163941 yylhsminor.yy285 = 0;
163942 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
163943 }
163944 }
163945 yymsp[0].minor.yy285 = yylhsminor.yy285;
163946 break;
163947 case 25: /* columnname ::= nm typetoken */
163948 {sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);}
163949 break;
163950 case 26: /* typetoken ::= */
@@ -163928,11 +163966,11 @@
163966 {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
163967 break;
163968 case 30: /* scanpt ::= */
163969 {
163970 assert( yyLookahead!=YYNOCODE );
163971 yymsp[1].minor.yy522 = yyLookaheadToken.z;
163972 }
163973 break;
163974 case 31: /* scantok ::= */
163975 {
163976 assert( yyLookahead!=YYNOCODE );
@@ -163942,21 +163980,21 @@
163980 case 32: /* ccons ::= CONSTRAINT nm */
163981 case 67: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==67);
163982 {pParse->constraintName = yymsp[0].minor.yy0;}
163983 break;
163984 case 33: /* ccons ::= DEFAULT scantok term */
163985 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy528,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
163986 break;
163987 case 34: /* ccons ::= DEFAULT LP expr RP */
163988 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy528,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
163989 break;
163990 case 35: /* ccons ::= DEFAULT PLUS scantok term */
163991 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy528,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
163992 break;
163993 case 36: /* ccons ::= DEFAULT MINUS scantok term */
163994 {
163995 Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy528, 0);
163996 sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
163997 }
163998 break;
163999 case 37: /* ccons ::= DEFAULT scantok ID|INDEXED */
164000 {
@@ -163967,308 +164005,308 @@
164005 }
164006 sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
164007 }
164008 break;
164009 case 38: /* ccons ::= NOT NULL onconf */
164010 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy394);}
164011 break;
164012 case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
164013 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy394,yymsp[0].minor.yy394,yymsp[-2].minor.yy394);}
164014 break;
164015 case 40: /* ccons ::= UNIQUE onconf */
164016 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy394,0,0,0,0,
164017 SQLITE_IDXTYPE_UNIQUE);}
164018 break;
164019 case 41: /* ccons ::= CHECK LP expr RP */
164020 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy528,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
164021 break;
164022 case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */
164023 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy322,yymsp[0].minor.yy394);}
164024 break;
164025 case 43: /* ccons ::= defer_subclause */
164026 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy394);}
164027 break;
164028 case 44: /* ccons ::= COLLATE ID|STRING */
164029 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
164030 break;
164031 case 45: /* generated ::= LP expr RP */
164032 {sqlite3AddGenerated(pParse,yymsp[-1].minor.yy528,0);}
164033 break;
164034 case 46: /* generated ::= LP expr RP ID */
164035 {sqlite3AddGenerated(pParse,yymsp[-2].minor.yy528,&yymsp[0].minor.yy0);}
164036 break;
164037 case 48: /* autoinc ::= AUTOINCR */
164038 {yymsp[0].minor.yy394 = 1;}
164039 break;
164040 case 49: /* refargs ::= */
164041 { yymsp[1].minor.yy394 = OE_None*0x0101; /* EV: R-19803-45884 */}
164042 break;
164043 case 50: /* refargs ::= refargs refarg */
164044 { yymsp[-1].minor.yy394 = (yymsp[-1].minor.yy394 & ~yymsp[0].minor.yy231.mask) | yymsp[0].minor.yy231.value; }
164045 break;
164046 case 51: /* refarg ::= MATCH nm */
164047 { yymsp[-1].minor.yy231.value = 0; yymsp[-1].minor.yy231.mask = 0x000000; }
164048 break;
164049 case 52: /* refarg ::= ON INSERT refact */
164050 { yymsp[-2].minor.yy231.value = 0; yymsp[-2].minor.yy231.mask = 0x000000; }
164051 break;
164052 case 53: /* refarg ::= ON DELETE refact */
164053 { yymsp[-2].minor.yy231.value = yymsp[0].minor.yy394; yymsp[-2].minor.yy231.mask = 0x0000ff; }
164054 break;
164055 case 54: /* refarg ::= ON UPDATE refact */
164056 { yymsp[-2].minor.yy231.value = yymsp[0].minor.yy394<<8; yymsp[-2].minor.yy231.mask = 0x00ff00; }
164057 break;
164058 case 55: /* refact ::= SET NULL */
164059 { yymsp[-1].minor.yy394 = OE_SetNull; /* EV: R-33326-45252 */}
164060 break;
164061 case 56: /* refact ::= SET DEFAULT */
164062 { yymsp[-1].minor.yy394 = OE_SetDflt; /* EV: R-33326-45252 */}
164063 break;
164064 case 57: /* refact ::= CASCADE */
164065 { yymsp[0].minor.yy394 = OE_Cascade; /* EV: R-33326-45252 */}
164066 break;
164067 case 58: /* refact ::= RESTRICT */
164068 { yymsp[0].minor.yy394 = OE_Restrict; /* EV: R-33326-45252 */}
164069 break;
164070 case 59: /* refact ::= NO ACTION */
164071 { yymsp[-1].minor.yy394 = OE_None; /* EV: R-33326-45252 */}
164072 break;
164073 case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
164074 {yymsp[-2].minor.yy394 = 0;}
164075 break;
164076 case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
164077 case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76);
164078 case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
164079 {yymsp[-1].minor.yy394 = yymsp[0].minor.yy394;}
164080 break;
164081 case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
164082 case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
164083 case 214: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==214);
164084 case 217: /* in_op ::= NOT IN */ yytestcase(yyruleno==217);
164085 case 243: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==243);
164086 {yymsp[-1].minor.yy394 = 1;}
164087 break;
164088 case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
164089 {yymsp[-1].minor.yy394 = 0;}
164090 break;
164091 case 66: /* tconscomma ::= COMMA */
164092 {pParse->constraintName.n = 0;}
164093 break;
164094 case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
164095 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy322,yymsp[0].minor.yy394,yymsp[-2].minor.yy394,0);}
164096 break;
164097 case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */
164098 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy322,yymsp[0].minor.yy394,0,0,0,0,
164099 SQLITE_IDXTYPE_UNIQUE);}
164100 break;
164101 case 70: /* tcons ::= CHECK LP expr RP onconf */
164102 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy528,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
164103 break;
164104 case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
164105 {
164106 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy322, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy322, yymsp[-1].minor.yy394);
164107 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy394);
164108 }
164109 break;
164110 case 73: /* onconf ::= */
164111 case 75: /* orconf ::= */ yytestcase(yyruleno==75);
164112 {yymsp[1].minor.yy394 = OE_Default;}
164113 break;
164114 case 74: /* onconf ::= ON CONFLICT resolvetype */
164115 {yymsp[-2].minor.yy394 = yymsp[0].minor.yy394;}
164116 break;
164117 case 77: /* resolvetype ::= IGNORE */
164118 {yymsp[0].minor.yy394 = OE_Ignore;}
164119 break;
164120 case 78: /* resolvetype ::= REPLACE */
164121 case 172: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==172);
164122 {yymsp[0].minor.yy394 = OE_Replace;}
164123 break;
164124 case 79: /* cmd ::= DROP TABLE ifexists fullname */
164125 {
164126 sqlite3DropTable(pParse, yymsp[0].minor.yy131, 0, yymsp[-1].minor.yy394);
164127 }
164128 break;
164129 case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
164130 {
164131 sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy322, yymsp[0].minor.yy47, yymsp[-7].minor.yy394, yymsp[-5].minor.yy394);
164132 }
164133 break;
164134 case 83: /* cmd ::= DROP VIEW ifexists fullname */
164135 {
164136 sqlite3DropTable(pParse, yymsp[0].minor.yy131, 1, yymsp[-1].minor.yy394);
164137 }
164138 break;
164139 case 84: /* cmd ::= select */
164140 {
164141 SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
164142 sqlite3Select(pParse, yymsp[0].minor.yy47, &dest);
164143 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy47);
164144 }
164145 break;
164146 case 85: /* select ::= WITH wqlist selectnowith */
164147 {yymsp[-2].minor.yy47 = attachWithToSelect(pParse,yymsp[0].minor.yy47,yymsp[-1].minor.yy521);}
164148 break;
164149 case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */
164150 {yymsp[-3].minor.yy47 = attachWithToSelect(pParse,yymsp[0].minor.yy47,yymsp[-1].minor.yy521);}
164151 break;
164152 case 87: /* select ::= selectnowith */
164153 {
164154 Select *p = yymsp[0].minor.yy47;
164155 if( p ){
164156 parserDoubleLinkSelect(pParse, p);
164157 }
164158 yymsp[0].minor.yy47 = p; /*A-overwrites-X*/
164159 }
164160 break;
164161 case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */
164162 {
164163 Select *pRhs = yymsp[0].minor.yy47;
164164 Select *pLhs = yymsp[-2].minor.yy47;
164165 if( pRhs && pRhs->pPrior ){
164166 SrcList *pFrom;
164167 Token x;
164168 x.n = 0;
164169 parserDoubleLinkSelect(pParse, pRhs);
164170 pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
164171 pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
164172 }
164173 if( pRhs ){
164174 pRhs->op = (u8)yymsp[-1].minor.yy394;
164175 pRhs->pPrior = pLhs;
164176 if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
164177 pRhs->selFlags &= ~SF_MultiValue;
164178 if( yymsp[-1].minor.yy394!=TK_ALL ) pParse->hasCompound = 1;
164179 }else{
164180 sqlite3SelectDelete(pParse->db, pLhs);
164181 }
164182 yymsp[-2].minor.yy47 = pRhs;
164183 }
164184 break;
164185 case 89: /* multiselect_op ::= UNION */
164186 case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91);
164187 {yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-OP*/}
164188 break;
164189 case 90: /* multiselect_op ::= UNION ALL */
164190 {yymsp[-1].minor.yy394 = TK_ALL;}
164191 break;
164192 case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
164193 {
164194 yymsp[-8].minor.yy47 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy322,yymsp[-5].minor.yy131,yymsp[-4].minor.yy528,yymsp[-3].minor.yy322,yymsp[-2].minor.yy528,yymsp[-1].minor.yy322,yymsp[-7].minor.yy394,yymsp[0].minor.yy528);
164195 }
164196 break;
164197 case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
164198 {
164199 yymsp[-9].minor.yy47 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy322,yymsp[-6].minor.yy131,yymsp[-5].minor.yy528,yymsp[-4].minor.yy322,yymsp[-3].minor.yy528,yymsp[-1].minor.yy322,yymsp[-8].minor.yy394,yymsp[0].minor.yy528);
164200 if( yymsp[-9].minor.yy47 ){
164201 yymsp[-9].minor.yy47->pWinDefn = yymsp[-2].minor.yy41;
164202 }else{
164203 sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy41);
164204 }
164205 }
164206 break;
164207 case 94: /* values ::= VALUES LP nexprlist RP */
164208 {
164209 yymsp[-3].minor.yy47 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values,0);
164210 }
164211 break;
164212 case 95: /* values ::= values COMMA LP nexprlist RP */
164213 {
164214 Select *pRight, *pLeft = yymsp[-4].minor.yy47;
164215 pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values|SF_MultiValue,0);
164216 if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
164217 if( pRight ){
164218 pRight->op = TK_ALL;
164219 pRight->pPrior = pLeft;
164220 yymsp[-4].minor.yy47 = pRight;
164221 }else{
164222 yymsp[-4].minor.yy47 = pLeft;
164223 }
164224 }
164225 break;
164226 case 96: /* distinct ::= DISTINCT */
164227 {yymsp[0].minor.yy394 = SF_Distinct;}
164228 break;
164229 case 97: /* distinct ::= ALL */
164230 {yymsp[0].minor.yy394 = SF_All;}
164231 break;
164232 case 99: /* sclp ::= */
164233 case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132);
164234 case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142);
164235 case 230: /* exprlist ::= */ yytestcase(yyruleno==230);
164236 case 233: /* paren_exprlist ::= */ yytestcase(yyruleno==233);
164237 case 238: /* eidlist_opt ::= */ yytestcase(yyruleno==238);
164238 {yymsp[1].minor.yy322 = 0;}
164239 break;
164240 case 100: /* selcollist ::= sclp scanpt expr scanpt as */
164241 {
164242 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
164243 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[0].minor.yy0, 1);
164244 sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy322,yymsp[-3].minor.yy522,yymsp[-1].minor.yy522);
164245 }
164246 break;
164247 case 101: /* selcollist ::= sclp scanpt STAR */
164248 {
164249 Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
164250 yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy322, p);
164251 }
164252 break;
164253 case 102: /* selcollist ::= sclp scanpt nm DOT STAR */
164254 {
164255 Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
164256 Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
164257 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
164258 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot);
164259 }
164260 break;
164261 case 103: /* as ::= AS nm */
164262 case 114: /* dbnm ::= DOT nm */ yytestcase(yyruleno==114);
164263 case 254: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
164264 case 255: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==255);
164265 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
164266 break;
164267 case 105: /* from ::= */
164268 case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108);
164269 {yymsp[1].minor.yy131 = 0;}
164270 break;
164271 case 106: /* from ::= FROM seltablist */
164272 {
164273 yymsp[-1].minor.yy131 = yymsp[0].minor.yy131;
164274 sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy131);
164275 }
164276 break;
164277 case 107: /* stl_prefix ::= seltablist joinop */
164278 {
164279 if( ALWAYS(yymsp[-1].minor.yy131 && yymsp[-1].minor.yy131->nSrc>0) ) yymsp[-1].minor.yy131->a[yymsp[-1].minor.yy131->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy394;
164280 }
164281 break;
164282 case 109: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
164283 {
164284 yymsp[-6].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy131,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164285 sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy131, &yymsp[-2].minor.yy0);
164286 }
164287 break;
164288 case 110: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
164289 {
164290 yymsp[-8].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy131,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164291 sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy131, yymsp[-4].minor.yy322);
164292 }
164293 break;
164294 case 111: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
164295 {
164296 yymsp[-6].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy131,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy47,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164297 }
164298 break;
164299 case 112: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
164300 {
164301 if( yymsp[-6].minor.yy131==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy528==0 && yymsp[0].minor.yy254==0 ){
164302 yymsp[-6].minor.yy131 = yymsp[-4].minor.yy131;
164303 }else if( yymsp[-4].minor.yy131->nSrc==1 ){
164304 yymsp[-6].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy131,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164305 if( yymsp[-6].minor.yy131 ){
164306 SrcItem *pNew = &yymsp[-6].minor.yy131->a[yymsp[-6].minor.yy131->nSrc-1];
164307 SrcItem *pOld = yymsp[-4].minor.yy131->a;
164308 pNew->zName = pOld->zName;
164309 pNew->zDatabase = pOld->zDatabase;
164310 pNew->pSelect = pOld->pSelect;
164311 if( pOld->fg.isTabFunc ){
164312 pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -164277,240 +164315,240 @@
164315 pNew->fg.isTabFunc = 1;
164316 }
164317 pOld->zName = pOld->zDatabase = 0;
164318 pOld->pSelect = 0;
164319 }
164320 sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy131);
164321 }else{
164322 Select *pSubquery;
164323 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy131);
164324 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy131,0,0,0,0,SF_NestedFrom,0);
164325 yymsp[-6].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy131,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy528,yymsp[0].minor.yy254);
164326 }
164327 }
164328 break;
164329 case 113: /* dbnm ::= */
164330 case 127: /* indexed_opt ::= */ yytestcase(yyruleno==127);
164331 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
164332 break;
164333 case 115: /* fullname ::= nm */
164334 {
164335 yylhsminor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
164336 if( IN_RENAME_OBJECT && yylhsminor.yy131 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy131->a[0].zName, &yymsp[0].minor.yy0);
164337 }
164338 yymsp[0].minor.yy131 = yylhsminor.yy131;
164339 break;
164340 case 116: /* fullname ::= nm DOT nm */
164341 {
164342 yylhsminor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
164343 if( IN_RENAME_OBJECT && yylhsminor.yy131 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy131->a[0].zName, &yymsp[0].minor.yy0);
164344 }
164345 yymsp[-2].minor.yy131 = yylhsminor.yy131;
164346 break;
164347 case 117: /* xfullname ::= nm */
164348 {yymsp[0].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
164349 break;
164350 case 118: /* xfullname ::= nm DOT nm */
164351 {yymsp[-2].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
164352 break;
164353 case 119: /* xfullname ::= nm DOT nm AS nm */
164354 {
164355 yymsp[-4].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
164356 if( yymsp[-4].minor.yy131 ) yymsp[-4].minor.yy131->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
164357 }
164358 break;
164359 case 120: /* xfullname ::= nm AS nm */
164360 {
164361 yymsp[-2].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
164362 if( yymsp[-2].minor.yy131 ) yymsp[-2].minor.yy131->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
164363 }
164364 break;
164365 case 121: /* joinop ::= COMMA|JOIN */
164366 { yymsp[0].minor.yy394 = JT_INNER; }
164367 break;
164368 case 122: /* joinop ::= JOIN_KW JOIN */
164369 {yymsp[-1].minor.yy394 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
164370 break;
164371 case 123: /* joinop ::= JOIN_KW nm JOIN */
164372 {yymsp[-2].minor.yy394 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
164373 break;
164374 case 124: /* joinop ::= JOIN_KW nm nm JOIN */
164375 {yymsp[-3].minor.yy394 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
164376 break;
164377 case 125: /* on_opt ::= ON expr */
164378 case 145: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==145);
164379 case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
164380 case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
164381 case 226: /* case_else ::= ELSE expr */ yytestcase(yyruleno==226);
164382 case 247: /* vinto ::= INTO expr */ yytestcase(yyruleno==247);
164383 {yymsp[-1].minor.yy528 = yymsp[0].minor.yy528;}
164384 break;
164385 case 126: /* on_opt ::= */
164386 case 144: /* having_opt ::= */ yytestcase(yyruleno==144);
164387 case 146: /* limit_opt ::= */ yytestcase(yyruleno==146);
164388 case 151: /* where_opt ::= */ yytestcase(yyruleno==151);
164389 case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153);
164390 case 227: /* case_else ::= */ yytestcase(yyruleno==227);
164391 case 229: /* case_operand ::= */ yytestcase(yyruleno==229);
164392 case 248: /* vinto ::= */ yytestcase(yyruleno==248);
164393 {yymsp[1].minor.yy528 = 0;}
164394 break;
164395 case 128: /* indexed_opt ::= INDEXED BY nm */
164396 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
164397 break;
164398 case 129: /* indexed_opt ::= NOT INDEXED */
164399 {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
164400 break;
164401 case 130: /* using_opt ::= USING LP idlist RP */
164402 {yymsp[-3].minor.yy254 = yymsp[-1].minor.yy254;}
164403 break;
164404 case 131: /* using_opt ::= */
164405 case 173: /* idlist_opt ::= */ yytestcase(yyruleno==173);
164406 {yymsp[1].minor.yy254 = 0;}
164407 break;
164408 case 133: /* orderby_opt ::= ORDER BY sortlist */
164409 case 143: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==143);
164410 {yymsp[-2].minor.yy322 = yymsp[0].minor.yy322;}
164411 break;
164412 case 134: /* sortlist ::= sortlist COMMA expr sortorder nulls */
164413 {
164414 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322,yymsp[-2].minor.yy528);
164415 sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy322,yymsp[-1].minor.yy394,yymsp[0].minor.yy394);
164416 }
164417 break;
164418 case 135: /* sortlist ::= expr sortorder nulls */
164419 {
164420 yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy528); /*A-overwrites-Y*/
164421 sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy322,yymsp[-1].minor.yy394,yymsp[0].minor.yy394);
164422 }
164423 break;
164424 case 136: /* sortorder ::= ASC */
164425 {yymsp[0].minor.yy394 = SQLITE_SO_ASC;}
164426 break;
164427 case 137: /* sortorder ::= DESC */
164428 {yymsp[0].minor.yy394 = SQLITE_SO_DESC;}
164429 break;
164430 case 138: /* sortorder ::= */
164431 case 141: /* nulls ::= */ yytestcase(yyruleno==141);
164432 {yymsp[1].minor.yy394 = SQLITE_SO_UNDEFINED;}
164433 break;
164434 case 139: /* nulls ::= NULLS FIRST */
164435 {yymsp[-1].minor.yy394 = SQLITE_SO_ASC;}
164436 break;
164437 case 140: /* nulls ::= NULLS LAST */
164438 {yymsp[-1].minor.yy394 = SQLITE_SO_DESC;}
164439 break;
164440 case 147: /* limit_opt ::= LIMIT expr */
164441 {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,0);}
164442 break;
164443 case 148: /* limit_opt ::= LIMIT expr OFFSET expr */
164444 {yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);}
164445 break;
164446 case 149: /* limit_opt ::= LIMIT expr COMMA expr */
164447 {yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,yymsp[-2].minor.yy528);}
164448 break;
164449 case 150: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
164450 {
164451 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy131, &yymsp[-1].minor.yy0);
164452 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy131,yymsp[0].minor.yy528,0,0);
164453 }
164454 break;
164455 case 155: /* where_opt_ret ::= RETURNING selcollist */
164456 {sqlite3AddReturning(pParse,yymsp[0].minor.yy322); yymsp[-1].minor.yy528 = 0;}
164457 break;
164458 case 156: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
164459 {sqlite3AddReturning(pParse,yymsp[0].minor.yy322); yymsp[-3].minor.yy528 = yymsp[-2].minor.yy528;}
164460 break;
164461 case 157: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
164462 {
164463 sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy131, &yymsp[-4].minor.yy0);
164464 sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy322,"set list");
164465 yymsp[-5].minor.yy131 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy131, yymsp[-1].minor.yy131);
164466 sqlite3Update(pParse,yymsp[-5].minor.yy131,yymsp[-2].minor.yy322,yymsp[0].minor.yy528,yymsp[-6].minor.yy394,0,0,0);
164467 }
164468 break;
164469 case 158: /* setlist ::= setlist COMMA nm EQ expr */
164470 {
164471 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[0].minor.yy528);
164472 sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, 1);
164473 }
164474 break;
164475 case 159: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
164476 {
164477 yymsp[-6].minor.yy322 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy322, yymsp[-3].minor.yy254, yymsp[0].minor.yy528);
164478 }
164479 break;
164480 case 160: /* setlist ::= nm EQ expr */
164481 {
164482 yylhsminor.yy322 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy528);
164483 sqlite3ExprListSetName(pParse, yylhsminor.yy322, &yymsp[-2].minor.yy0, 1);
164484 }
164485 yymsp[-2].minor.yy322 = yylhsminor.yy322;
164486 break;
164487 case 161: /* setlist ::= LP idlist RP EQ expr */
164488 {
164489 yymsp[-4].minor.yy322 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy254, yymsp[0].minor.yy528);
164490 }
164491 break;
164492 case 162: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
164493 {
164494 sqlite3Insert(pParse, yymsp[-3].minor.yy131, yymsp[-1].minor.yy47, yymsp[-2].minor.yy254, yymsp[-5].minor.yy394, yymsp[0].minor.yy444);
164495 }
164496 break;
164497 case 163: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
164498 {
164499 sqlite3Insert(pParse, yymsp[-4].minor.yy131, 0, yymsp[-3].minor.yy254, yymsp[-6].minor.yy394, 0);
164500 }
164501 break;
164502 case 164: /* upsert ::= */
164503 { yymsp[1].minor.yy444 = 0; }
164504 break;
164505 case 165: /* upsert ::= RETURNING selcollist */
164506 { yymsp[-1].minor.yy444 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy322); }
164507 break;
164508 case 166: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
164509 { yymsp[-11].minor.yy444 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy322,yymsp[-6].minor.yy528,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528,yymsp[0].minor.yy444);}
164510 break;
164511 case 167: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
164512 { yymsp[-8].minor.yy444 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy322,yymsp[-3].minor.yy528,0,0,yymsp[0].minor.yy444); }
164513 break;
164514 case 168: /* upsert ::= ON CONFLICT DO NOTHING returning */
164515 { yymsp[-4].minor.yy444 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
164516 break;
164517 case 169: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
164518 { yymsp[-7].minor.yy444 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528,0);}
164519 break;
164520 case 170: /* returning ::= RETURNING selcollist */
164521 {sqlite3AddReturning(pParse,yymsp[0].minor.yy322);}
164522 break;
164523 case 174: /* idlist_opt ::= LP idlist RP */
164524 {yymsp[-2].minor.yy254 = yymsp[-1].minor.yy254;}
164525 break;
164526 case 175: /* idlist ::= idlist COMMA nm */
164527 {yymsp[-2].minor.yy254 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);}
164528 break;
164529 case 176: /* idlist ::= nm */
164530 {yymsp[0].minor.yy254 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
164531 break;
164532 case 177: /* expr ::= LP expr RP */
164533 {yymsp[-2].minor.yy528 = yymsp[-1].minor.yy528;}
164534 break;
164535 case 178: /* expr ::= ID|INDEXED */
164536 case 179: /* expr ::= JOIN_KW */ yytestcase(yyruleno==179);
164537 {yymsp[0].minor.yy528=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
164538 break;
164539 case 180: /* expr ::= nm DOT nm */
164540 {
164541 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
164542 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
164543 if( IN_RENAME_OBJECT ){
164544 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
164545 sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
164546 }
164547 yylhsminor.yy528 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
164548 }
164549 yymsp[-2].minor.yy528 = yylhsminor.yy528;
164550 break;
164551 case 181: /* expr ::= nm DOT nm DOT nm */
164552 {
164553 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
164554 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
@@ -164518,768 +164556,776 @@
164556 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
164557 if( IN_RENAME_OBJECT ){
164558 sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
164559 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
164560 }
164561 yylhsminor.yy528 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
164562 }
164563 yymsp[-4].minor.yy528 = yylhsminor.yy528;
164564 break;
164565 case 182: /* term ::= NULL|FLOAT|BLOB */
164566 case 183: /* term ::= STRING */ yytestcase(yyruleno==183);
164567 {yymsp[0].minor.yy528=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
164568 break;
164569 case 184: /* term ::= INTEGER */
164570 {
164571 yylhsminor.yy528 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
164572 }
164573 yymsp[0].minor.yy528 = yylhsminor.yy528;
164574 break;
164575 case 185: /* expr ::= VARIABLE */
164576 {
164577 if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
164578 u32 n = yymsp[0].minor.yy0.n;
164579 yymsp[0].minor.yy528 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
164580 sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy528, n);
164581 }else{
164582 /* When doing a nested parse, one can include terms in an expression
164583 ** that look like this: #1 #2 ... These terms refer to registers
164584 ** in the virtual machine. #N is the N-th register. */
164585 Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
164586 assert( t.n>=2 );
164587 if( pParse->nested==0 ){
164588 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
164589 yymsp[0].minor.yy528 = 0;
164590 }else{
164591 yymsp[0].minor.yy528 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
164592 if( yymsp[0].minor.yy528 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy528->iTable);
164593 }
164594 }
164595 }
164596 break;
164597 case 186: /* expr ::= expr COLLATE ID|STRING */
164598 {
164599 yymsp[-2].minor.yy528 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy528, &yymsp[0].minor.yy0, 1);
164600 }
164601 break;
164602 case 187: /* expr ::= CAST LP expr AS typetoken RP */
164603 {
164604 yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
164605 sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy528, yymsp[-3].minor.yy528, 0);
164606 }
164607 break;
164608 case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP */
164609 {
164610 yylhsminor.yy528 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy394);
164611 }
164612 yymsp[-4].minor.yy528 = yylhsminor.yy528;
164613 break;
164614 case 189: /* expr ::= ID|INDEXED LP STAR RP */
164615 {
164616 yylhsminor.yy528 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
164617 }
164618 yymsp[-3].minor.yy528 = yylhsminor.yy528;
164619 break;
164620 case 190: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
164621 {
164622 yylhsminor.yy528 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy322, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy394);
164623 sqlite3WindowAttach(pParse, yylhsminor.yy528, yymsp[0].minor.yy41);
164624 }
164625 yymsp[-5].minor.yy528 = yylhsminor.yy528;
164626 break;
164627 case 191: /* expr ::= ID|INDEXED LP STAR RP filter_over */
164628 {
164629 yylhsminor.yy528 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
164630 sqlite3WindowAttach(pParse, yylhsminor.yy528, yymsp[0].minor.yy41);
164631 }
164632 yymsp[-4].minor.yy528 = yylhsminor.yy528;
164633 break;
164634 case 192: /* term ::= CTIME_KW */
164635 {
164636 yylhsminor.yy528 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
164637 }
164638 yymsp[0].minor.yy528 = yylhsminor.yy528;
164639 break;
164640 case 193: /* expr ::= LP nexprlist COMMA expr RP */
164641 {
164642 ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528);
164643 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
164644 if( yymsp[-4].minor.yy528 ){
164645 yymsp[-4].minor.yy528->x.pList = pList;
164646 if( ALWAYS(pList->nExpr) ){
164647 yymsp[-4].minor.yy528->flags |= pList->a[0].pExpr->flags & EP_Propagate;
164648 }
164649 }else{
164650 sqlite3ExprListDelete(pParse->db, pList);
164651 }
164652 }
164653 break;
164654 case 194: /* expr ::= expr AND expr */
164655 {yymsp[-2].minor.yy528=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);}
164656 break;
164657 case 195: /* expr ::= expr OR expr */
164658 case 196: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==196);
164659 case 197: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==197);
164660 case 198: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==198);
164661 case 199: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==199);
164662 case 200: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==200);
164663 case 201: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==201);
164664 {yymsp[-2].minor.yy528=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);}
164665 break;
164666 case 202: /* likeop ::= NOT LIKE_KW|MATCH */
164667 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
164668 break;
164669 case 203: /* expr ::= expr likeop expr */
164670 {
164671 ExprList *pList;
164672 int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
164673 yymsp[-1].minor.yy0.n &= 0x7fffffff;
164674 pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy528);
164675 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy528);
164676 yymsp[-2].minor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
164677 if( bNot ) yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy528, 0);
164678 if( yymsp[-2].minor.yy528 ) yymsp[-2].minor.yy528->flags |= EP_InfixFunc;
164679 }
164680 break;
164681 case 204: /* expr ::= expr likeop expr ESCAPE expr */
164682 {
164683 ExprList *pList;
164684 int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
164685 yymsp[-3].minor.yy0.n &= 0x7fffffff;
164686 pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
164687 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy528);
164688 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528);
164689 yymsp[-4].minor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
164690 if( bNot ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164691 if( yymsp[-4].minor.yy528 ) yymsp[-4].minor.yy528->flags |= EP_InfixFunc;
164692 }
164693 break;
164694 case 205: /* expr ::= expr ISNULL|NOTNULL */
164695 {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy528,0);}
164696 break;
164697 case 206: /* expr ::= expr NOT NULL */
164698 {yymsp[-2].minor.yy528 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy528,0);}
164699 break;
164700 case 207: /* expr ::= expr IS expr */
164701 {
164702 yymsp[-2].minor.yy528 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);
164703 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-2].minor.yy528, TK_ISNULL);
164704 }
164705 break;
164706 case 208: /* expr ::= expr IS NOT expr */
164707 {
164708 yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy528,yymsp[0].minor.yy528);
164709 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-3].minor.yy528, TK_NOTNULL);
164710 }
164711 break;
164712 case 209: /* expr ::= NOT expr */
164713 case 210: /* expr ::= BITNOT expr */ yytestcase(yyruleno==210);
164714 {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy528, 0);/*A-overwrites-B*/}
164715 break;
164716 case 211: /* expr ::= PLUS|MINUS expr */
164717 {
164718 yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy528, 0);
164719 /*A-overwrites-B*/
164720 }
164721 break;
164722 case 212: /* expr ::= expr PTR expr */
164723 {
164724 ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy528);
164725 pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy528);
164726 yylhsminor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
164727 }
164728 yymsp[-2].minor.yy528 = yylhsminor.yy528;
164729 break;
164730 case 213: /* between_op ::= BETWEEN */
164731 case 216: /* in_op ::= IN */ yytestcase(yyruleno==216);
164732 {yymsp[0].minor.yy394 = 0;}
164733 break;
164734 case 215: /* expr ::= expr between_op expr AND expr */
164735 {
164736 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
164737 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528);
164738 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy528, 0);
164739 if( yymsp[-4].minor.yy528 ){
164740 yymsp[-4].minor.yy528->x.pList = pList;
164741 }else{
164742 sqlite3ExprListDelete(pParse->db, pList);
164743 }
164744 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164745 }
164746 break;
164747 case 218: /* expr ::= expr in_op LP exprlist RP */
164748 {
164749 if( yymsp[-1].minor.yy322==0 ){
164750 /* Expressions of the form
164751 **
164752 ** expr1 IN ()
164753 ** expr1 NOT IN ()
164754 **
164755 ** simplify to constants 0 (false) and 1 (true), respectively,
164756 ** regardless of the value of expr1.
164757 */
164758 sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy528);
164759 yymsp[-4].minor.yy528 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy394 ? "1" : "0");
164760 }else{
164761 Expr *pRHS = yymsp[-1].minor.yy322->a[0].pExpr;
164762 if( yymsp[-1].minor.yy322->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy528->op!=TK_VECTOR ){
164763 yymsp[-1].minor.yy322->a[0].pExpr = 0;
164764 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322);
164765 pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
164766 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy528, pRHS);
164767 }else{
164768 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
164769 if( yymsp[-4].minor.yy528==0 ){
164770 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322);
164771 }else if( yymsp[-4].minor.yy528->pLeft->op==TK_VECTOR ){
164772 int nExpr = yymsp[-4].minor.yy528->pLeft->x.pList->nExpr;
164773 Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy322);
164774 if( pSelectRHS ){
164775 parserDoubleLinkSelect(pParse, pSelectRHS);
164776 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelectRHS);
164777 }
164778 }else{
164779 yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy322;
164780 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528);
164781 }
164782 }
164783 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164784 }
164785 }
164786 break;
164787 case 219: /* expr ::= LP select RP */
164788 {
164789 yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
164790 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy528, yymsp[-1].minor.yy47);
164791 }
164792 break;
164793 case 220: /* expr ::= expr in_op LP select RP */
164794 {
164795 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
164796 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, yymsp[-1].minor.yy47);
164797 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164798 }
164799 break;
164800 case 221: /* expr ::= expr in_op nm dbnm paren_exprlist */
164801 {
164802 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
164803 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
164804 if( yymsp[0].minor.yy322 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy322);
164805 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
164806 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelect);
164807 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
164808 }
164809 break;
164810 case 222: /* expr ::= EXISTS LP select RP */
164811 {
164812 Expr *p;
164813 p = yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
164814 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy47);
164815 }
164816 break;
164817 case 223: /* expr ::= CASE case_operand case_exprlist case_else END */
164818 {
164819 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy528, 0);
164820 if( yymsp[-4].minor.yy528 ){
164821 yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy528 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528) : yymsp[-2].minor.yy322;
164822 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528);
164823 }else{
164824 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy322);
164825 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
164826 }
164827 }
164828 break;
164829 case 224: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
164830 {
164831 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
164832 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[0].minor.yy528);
164833 }
164834 break;
164835 case 225: /* case_exprlist ::= WHEN expr THEN expr */
164836 {
164837 yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
164838 yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322, yymsp[0].minor.yy528);
164839 }
164840 break;
164841 case 228: /* case_operand ::= expr */
164842 {yymsp[0].minor.yy528 = yymsp[0].minor.yy528; /*A-overwrites-X*/}
164843 break;
164844 case 231: /* nexprlist ::= nexprlist COMMA expr */
164845 {yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[0].minor.yy528);}
164846 break;
164847 case 232: /* nexprlist ::= expr */
164848 {yymsp[0].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy528); /*A-overwrites-Y*/}
164849 break;
164850 case 234: /* paren_exprlist ::= LP exprlist RP */
164851 case 239: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==239);
164852 {yymsp[-2].minor.yy322 = yymsp[-1].minor.yy322;}
164853 break;
164854 case 235: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
164855 {
164856 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
164857 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy322, yymsp[-10].minor.yy394,
164858 &yymsp[-11].minor.yy0, yymsp[0].minor.yy528, SQLITE_SO_ASC, yymsp[-8].minor.yy394, SQLITE_IDXTYPE_APPDEF);
164859 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
164860 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
164861 }
164862 }
164863 break;
164864 case 236: /* uniqueflag ::= UNIQUE */
164865 case 278: /* raisetype ::= ABORT */ yytestcase(yyruleno==278);
164866 {yymsp[0].minor.yy394 = OE_Abort;}
164867 break;
164868 case 237: /* uniqueflag ::= */
164869 {yymsp[1].minor.yy394 = OE_None;}
164870 break;
164871 case 240: /* eidlist ::= eidlist COMMA nm collate sortorder */
164872 {
164873 yymsp[-4].minor.yy322 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394);
164874 }
164875 break;
164876 case 241: /* eidlist ::= nm collate sortorder */
164877 {
164878 yymsp[-2].minor.yy322 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394); /*A-overwrites-Y*/
164879 }
164880 break;
164881 case 244: /* cmd ::= DROP INDEX ifexists fullname */
164882 {sqlite3DropIndex(pParse, yymsp[0].minor.yy131, yymsp[-1].minor.yy394);}
164883 break;
164884 case 245: /* cmd ::= VACUUM vinto */
164885 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy528);}
164886 break;
164887 case 246: /* cmd ::= VACUUM nm vinto */
164888 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy528);}
164889 break;
164890 case 249: /* cmd ::= PRAGMA nm dbnm */
164891 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
164892 break;
164893 case 250: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
164894 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
164895 break;
164896 case 251: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
164897 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
164898 break;
164899 case 252: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
164900 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
164901 break;
164902 case 253: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
164903 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
164904 break;
164905 case 256: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
164906 {
164907 Token all;
164908 all.z = yymsp[-3].minor.yy0.z;
164909 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
164910 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy33, &all);
164911 }
164912 break;
164913 case 257: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
164914 {
164915 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy394, yymsp[-4].minor.yy180.a, yymsp[-4].minor.yy180.b, yymsp[-2].minor.yy131, yymsp[0].minor.yy528, yymsp[-10].minor.yy394, yymsp[-8].minor.yy394);
164916 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
164917 }
164918 break;
164919 case 258: /* trigger_time ::= BEFORE|AFTER */
164920 { yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/ }
164921 break;
164922 case 259: /* trigger_time ::= INSTEAD OF */
164923 { yymsp[-1].minor.yy394 = TK_INSTEAD;}
164924 break;
164925 case 260: /* trigger_time ::= */
164926 { yymsp[1].minor.yy394 = TK_BEFORE; }
164927 break;
164928 case 261: /* trigger_event ::= DELETE|INSERT */
164929 case 262: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==262);
164930 {yymsp[0].minor.yy180.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy180.b = 0;}
164931 break;
164932 case 263: /* trigger_event ::= UPDATE OF idlist */
164933 {yymsp[-2].minor.yy180.a = TK_UPDATE; yymsp[-2].minor.yy180.b = yymsp[0].minor.yy254;}
164934 break;
164935 case 264: /* when_clause ::= */
164936 case 283: /* key_opt ::= */ yytestcase(yyruleno==283);
164937 { yymsp[1].minor.yy528 = 0; }
164938 break;
164939 case 265: /* when_clause ::= WHEN expr */
164940 case 284: /* key_opt ::= KEY expr */ yytestcase(yyruleno==284);
164941 { yymsp[-1].minor.yy528 = yymsp[0].minor.yy528; }
164942 break;
164943 case 266: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
164944 {
164945 assert( yymsp[-2].minor.yy33!=0 );
164946 yymsp[-2].minor.yy33->pLast->pNext = yymsp[-1].minor.yy33;
164947 yymsp[-2].minor.yy33->pLast = yymsp[-1].minor.yy33;
164948 }
164949 break;
164950 case 267: /* trigger_cmd_list ::= trigger_cmd SEMI */
164951 {
164952 assert( yymsp[-1].minor.yy33!=0 );
164953 yymsp[-1].minor.yy33->pLast = yymsp[-1].minor.yy33;
164954 }
164955 break;
164956 case 268: /* trnm ::= nm DOT nm */
164957 {
164958 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
164959 sqlite3ErrorMsg(pParse,
164960 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
164961 "statements within triggers");
164962 }
164963 break;
164964 case 269: /* tridxby ::= INDEXED BY nm */
164965 {
164966 sqlite3ErrorMsg(pParse,
164967 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
164968 "within triggers");
164969 }
164970 break;
164971 case 270: /* tridxby ::= NOT INDEXED */
164972 {
164973 sqlite3ErrorMsg(pParse,
164974 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
164975 "within triggers");
164976 }
164977 break;
164978 case 271: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
164979 {yylhsminor.yy33 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy131, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528, yymsp[-7].minor.yy394, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy522);}
164980 yymsp[-8].minor.yy33 = yylhsminor.yy33;
164981 break;
164982 case 272: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
164983 {
164984 yylhsminor.yy33 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy254,yymsp[-2].minor.yy47,yymsp[-6].minor.yy394,yymsp[-1].minor.yy444,yymsp[-7].minor.yy522,yymsp[0].minor.yy522);/*yylhsminor.yy33-overwrites-yymsp[-6].minor.yy394*/
164985 }
164986 yymsp[-7].minor.yy33 = yylhsminor.yy33;
164987 break;
164988 case 273: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
164989 {yylhsminor.yy33 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy528, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy522);}
164990 yymsp[-5].minor.yy33 = yylhsminor.yy33;
164991 break;
164992 case 274: /* trigger_cmd ::= scanpt select scanpt */
164993 {yylhsminor.yy33 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy47, yymsp[-2].minor.yy522, yymsp[0].minor.yy522); /*yylhsminor.yy33-overwrites-yymsp[-1].minor.yy47*/}
164994 yymsp[-2].minor.yy33 = yylhsminor.yy33;
164995 break;
164996 case 275: /* expr ::= RAISE LP IGNORE RP */
164997 {
164998 yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
164999 if( yymsp[-3].minor.yy528 ){
165000 yymsp[-3].minor.yy528->affExpr = OE_Ignore;
165001 }
165002 }
165003 break;
165004 case 276: /* expr ::= RAISE LP raisetype COMMA nm RP */
165005 {
165006 yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
165007 if( yymsp[-5].minor.yy528 ) {
165008 yymsp[-5].minor.yy528->affExpr = (char)yymsp[-3].minor.yy394;
165009 }
165010 }
165011 break;
165012 case 277: /* raisetype ::= ROLLBACK */
165013 {yymsp[0].minor.yy394 = OE_Rollback;}
165014 break;
165015 case 279: /* raisetype ::= FAIL */
165016 {yymsp[0].minor.yy394 = OE_Fail;}
165017 break;
165018 case 280: /* cmd ::= DROP TRIGGER ifexists fullname */
165019 {
165020 sqlite3DropTrigger(pParse,yymsp[0].minor.yy131,yymsp[-1].minor.yy394);
165021 }
165022 break;
165023 case 281: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
165024 {
165025 sqlite3Attach(pParse, yymsp[-3].minor.yy528, yymsp[-1].minor.yy528, yymsp[0].minor.yy528);
165026 }
165027 break;
165028 case 282: /* cmd ::= DETACH database_kw_opt expr */
165029 {
165030 sqlite3Detach(pParse, yymsp[0].minor.yy528);
165031 }
165032 break;
165033 case 285: /* cmd ::= REINDEX */
165034 {sqlite3Reindex(pParse, 0, 0);}
165035 break;
165036 case 286: /* cmd ::= REINDEX nm dbnm */
165037 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
165038 break;
165039 case 287: /* cmd ::= ANALYZE */
165040 {sqlite3Analyze(pParse, 0, 0);}
165041 break;
165042 case 288: /* cmd ::= ANALYZE nm dbnm */
165043 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
165044 break;
165045 case 289: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
165046 {
165047 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy131,&yymsp[0].minor.yy0);
165048 }
165049 break;
165050 case 290: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
165051 {
165052 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
165053 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
165054 }
165055 break;
165056 case 291: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
165057 {
165058 sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy131, &yymsp[0].minor.yy0);
165059 }
165060 break;
165061 case 292: /* add_column_fullname ::= fullname */
165062 {
165063 disableLookaside(pParse);
165064 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy131);
165065 }
165066 break;
165067 case 293: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
165068 {
165069 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy131, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
165070 }
165071 break;
165072 case 294: /* cmd ::= create_vtab */
165073 {sqlite3VtabFinishParse(pParse,0);}
165074 break;
165075 case 295: /* cmd ::= create_vtab LP vtabarglist RP */
165076 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
165077 break;
165078 case 296: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
165079 {
165080 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy394);
165081 }
165082 break;
165083 case 297: /* vtabarg ::= */
165084 {sqlite3VtabArgInit(pParse);}
165085 break;
165086 case 298: /* vtabargtoken ::= ANY */
165087 case 299: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==299);
165088 case 300: /* lp ::= LP */ yytestcase(yyruleno==300);
165089 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
165090 break;
165091 case 301: /* with ::= WITH wqlist */
165092 case 302: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==302);
165093 { sqlite3WithPush(pParse, yymsp[0].minor.yy521, 1); }
165094 break;
165095 case 303: /* wqas ::= AS */
165096 {yymsp[0].minor.yy516 = M10d_Any;}
165097 break;
165098 case 304: /* wqas ::= AS MATERIALIZED */
165099 {yymsp[-1].minor.yy516 = M10d_Yes;}
165100 break;
165101 case 305: /* wqas ::= AS NOT MATERIALIZED */
165102 {yymsp[-2].minor.yy516 = M10d_No;}
165103 break;
165104 case 306: /* wqitem ::= nm eidlist_opt wqas LP select RP */
165105 {
165106 yymsp[-5].minor.yy385 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy47, yymsp[-3].minor.yy516); /*A-overwrites-X*/
165107 }
165108 break;
165109 case 307: /* wqlist ::= wqitem */
165110 {
165111 yymsp[0].minor.yy521 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy385); /*A-overwrites-X*/
165112 }
165113 break;
165114 case 308: /* wqlist ::= wqlist COMMA wqitem */
165115 {
165116 yymsp[-2].minor.yy521 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy521, yymsp[0].minor.yy385);
165117 }
165118 break;
165119 case 309: /* windowdefn_list ::= windowdefn */
165120 { yylhsminor.yy41 = yymsp[0].minor.yy41; }
165121 yymsp[0].minor.yy41 = yylhsminor.yy41;
165122 break;
165123 case 310: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
165124 {
165125 assert( yymsp[0].minor.yy41!=0 );
165126 sqlite3WindowChain(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy41);
165127 yymsp[0].minor.yy41->pNextWin = yymsp[-2].minor.yy41;
165128 yylhsminor.yy41 = yymsp[0].minor.yy41;
165129 }
165130 yymsp[-2].minor.yy41 = yylhsminor.yy41;
165131 break;
165132 case 311: /* windowdefn ::= nm AS LP window RP */
165133 {
165134 if( ALWAYS(yymsp[-1].minor.yy41) ){
165135 yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
165136 }
165137 yylhsminor.yy41 = yymsp[-1].minor.yy41;
165138 }
165139 yymsp[-4].minor.yy41 = yylhsminor.yy41;
165140 break;
165141 case 312: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
165142 {
165143 yymsp[-4].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, 0);
165144 }
165145 break;
165146 case 313: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
165147 {
165148 yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, &yymsp[-5].minor.yy0);
165149 }
165150 yymsp[-5].minor.yy41 = yylhsminor.yy41;
165151 break;
165152 case 314: /* window ::= ORDER BY sortlist frame_opt */
165153 {
165154 yymsp[-3].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, 0);
165155 }
165156 break;
165157 case 315: /* window ::= nm ORDER BY sortlist frame_opt */
165158 {
165159 yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0);
165160 }
165161 yymsp[-4].minor.yy41 = yylhsminor.yy41;
165162 break;
165163 case 316: /* window ::= frame_opt */
165164 case 335: /* filter_over ::= over_clause */ yytestcase(yyruleno==335);
165165 {
165166 yylhsminor.yy41 = yymsp[0].minor.yy41;
165167 }
165168 yymsp[0].minor.yy41 = yylhsminor.yy41;
165169 break;
165170 case 317: /* window ::= nm frame_opt */
165171 {
165172 yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, 0, &yymsp[-1].minor.yy0);
165173 }
165174 yymsp[-1].minor.yy41 = yylhsminor.yy41;
165175 break;
165176 case 318: /* frame_opt ::= */
165177 {
165178 yymsp[1].minor.yy41 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
165179 }
165180 break;
165181 case 319: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
165182 {
165183 yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy394, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy516);
165184 }
165185 yymsp[-2].minor.yy41 = yylhsminor.yy41;
165186 break;
165187 case 320: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
165188 {
165189 yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy394, yymsp[-3].minor.yy595.eType, yymsp[-3].minor.yy595.pExpr, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, yymsp[0].minor.yy516);
165190 }
165191 yymsp[-5].minor.yy41 = yylhsminor.yy41;
165192 break;
165193 case 322: /* frame_bound_s ::= frame_bound */
165194 case 324: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==324);
165195 {yylhsminor.yy595 = yymsp[0].minor.yy595;}
165196 yymsp[0].minor.yy595 = yylhsminor.yy595;
165197 break;
165198 case 323: /* frame_bound_s ::= UNBOUNDED PRECEDING */
165199 case 325: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==325);
165200 case 327: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==327);
165201 {yylhsminor.yy595.eType = yymsp[-1].major; yylhsminor.yy595.pExpr = 0;}
165202 yymsp[-1].minor.yy595 = yylhsminor.yy595;
165203 break;
165204 case 326: /* frame_bound ::= expr PRECEDING|FOLLOWING */
165205 {yylhsminor.yy595.eType = yymsp[0].major; yylhsminor.yy595.pExpr = yymsp[-1].minor.yy528;}
165206 yymsp[-1].minor.yy595 = yylhsminor.yy595;
165207 break;
165208 case 328: /* frame_exclude_opt ::= */
165209 {yymsp[1].minor.yy516 = 0;}
165210 break;
165211 case 329: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
165212 {yymsp[-1].minor.yy516 = yymsp[0].minor.yy516;}
165213 break;
165214 case 330: /* frame_exclude ::= NO OTHERS */
165215 case 331: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==331);
165216 {yymsp[-1].minor.yy516 = yymsp[-1].major; /*A-overwrites-X*/}
165217 break;
165218 case 332: /* frame_exclude ::= GROUP|TIES */
165219 {yymsp[0].minor.yy516 = yymsp[0].major; /*A-overwrites-X*/}
165220 break;
165221 case 333: /* window_clause ::= WINDOW windowdefn_list */
165222 { yymsp[-1].minor.yy41 = yymsp[0].minor.yy41; }
165223 break;
165224 case 334: /* filter_over ::= filter_clause over_clause */
165225 {
165226 if( yymsp[0].minor.yy41 ){
165227 yymsp[0].minor.yy41->pFilter = yymsp[-1].minor.yy528;
165228 }else{
165229 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
165230 }
165231 yylhsminor.yy41 = yymsp[0].minor.yy41;
165232 }
165233 yymsp[-1].minor.yy41 = yylhsminor.yy41;
165234 break;
165235 case 336: /* filter_over ::= filter_clause */
165236 {
165237 yylhsminor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
165238 if( yylhsminor.yy41 ){
165239 yylhsminor.yy41->eFrmType = TK_FILTER;
165240 yylhsminor.yy41->pFilter = yymsp[0].minor.yy528;
165241 }else{
165242 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy528);
165243 }
165244 }
165245 yymsp[0].minor.yy41 = yylhsminor.yy41;
165246 break;
165247 case 337: /* over_clause ::= OVER LP window RP */
165248 {
165249 yymsp[-3].minor.yy41 = yymsp[-1].minor.yy41;
165250 assert( yymsp[-3].minor.yy41!=0 );
165251 }
165252 break;
165253 case 338: /* over_clause ::= OVER nm */
165254 {
165255 yymsp[-1].minor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
165256 if( yymsp[-1].minor.yy41 ){
165257 yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
165258 }
165259 }
165260 break;
165261 case 339: /* filter_clause ::= FILTER LP WHERE expr RP */
165262 { yymsp[-4].minor.yy528 = yymsp[-1].minor.yy528; }
165263 break;
165264 default:
165265 /* (340) input ::= cmdlist */ yytestcase(yyruleno==340);
165266 /* (341) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==341);
165267 /* (342) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=342);
165268 /* (343) ecmd ::= SEMI */ yytestcase(yyruleno==343);
165269 /* (344) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==344);
165270 /* (345) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=345);
165271 /* (346) trans_opt ::= */ yytestcase(yyruleno==346);
165272 /* (347) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==347);
165273 /* (348) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==348);
165274 /* (349) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==349);
165275 /* (350) savepoint_opt ::= */ yytestcase(yyruleno==350);
165276 /* (351) cmd ::= create_table create_table_args */ yytestcase(yyruleno==351);
165277 /* (352) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=352);
165278 /* (353) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==353);
165279 /* (354) columnlist ::= columnname carglist */ yytestcase(yyruleno==354);
165280 /* (355) nm ::= ID|INDEXED */ yytestcase(yyruleno==355);
165281 /* (356) nm ::= STRING */ yytestcase(yyruleno==356);
165282 /* (357) nm ::= JOIN_KW */ yytestcase(yyruleno==357);
165283 /* (358) typetoken ::= typename */ yytestcase(yyruleno==358);
165284 /* (359) typename ::= ID|STRING */ yytestcase(yyruleno==359);
165285 /* (360) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
165286 /* (361) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=361);
165287 /* (362) carglist ::= carglist ccons */ yytestcase(yyruleno==362);
165288 /* (363) carglist ::= */ yytestcase(yyruleno==363);
165289 /* (364) ccons ::= NULL onconf */ yytestcase(yyruleno==364);
165290 /* (365) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==365);
165291 /* (366) ccons ::= AS generated */ yytestcase(yyruleno==366);
165292 /* (367) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==367);
165293 /* (368) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==368);
165294 /* (369) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=369);
165295 /* (370) tconscomma ::= */ yytestcase(yyruleno==370);
165296 /* (371) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=371);
165297 /* (372) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=372);
165298 /* (373) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=373);
165299 /* (374) oneselect ::= values */ yytestcase(yyruleno==374);
165300 /* (375) sclp ::= selcollist COMMA */ yytestcase(yyruleno==375);
165301 /* (376) as ::= ID|STRING */ yytestcase(yyruleno==376);
165302 /* (377) returning ::= */ yytestcase(yyruleno==377);
165303 /* (378) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=378);
165304 /* (379) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==379);
165305 /* (380) exprlist ::= nexprlist */ yytestcase(yyruleno==380);
165306 /* (381) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=381);
165307 /* (382) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=382);
165308 /* (383) nmnum ::= ON */ yytestcase(yyruleno==383);
165309 /* (384) nmnum ::= DELETE */ yytestcase(yyruleno==384);
165310 /* (385) nmnum ::= DEFAULT */ yytestcase(yyruleno==385);
165311 /* (386) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==386);
165312 /* (387) foreach_clause ::= */ yytestcase(yyruleno==387);
165313 /* (388) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==388);
165314 /* (389) trnm ::= nm */ yytestcase(yyruleno==389);
165315 /* (390) tridxby ::= */ yytestcase(yyruleno==390);
165316 /* (391) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==391);
165317 /* (392) database_kw_opt ::= */ yytestcase(yyruleno==392);
165318 /* (393) kwcolumn_opt ::= */ yytestcase(yyruleno==393);
165319 /* (394) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==394);
165320 /* (395) vtabarglist ::= vtabarg */ yytestcase(yyruleno==395);
165321 /* (396) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==396);
165322 /* (397) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==397);
165323 /* (398) anylist ::= */ yytestcase(yyruleno==398);
165324 /* (399) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==399);
165325 /* (400) anylist ::= anylist ANY */ yytestcase(yyruleno==400);
165326 /* (401) with ::= */ yytestcase(yyruleno==401);
165327 break;
165328 /********** End reduce actions ************************************************/
165329 };
165330 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
165331 yygoto = yyRuleInfoLhs[yyruleno];
@@ -166398,10 +166444,13 @@
166444 case CC_MINUS: {
166445 if( z[1]=='-' ){
166446 for(i=2; (c=z[i])!=0 && c!='\n'; i++){}
166447 *tokenType = TK_SPACE; /* IMP: R-22934-25134 */
166448 return i;
166449 }else if( z[1]=='>' ){
166450 *tokenType = TK_PTR;
166451 return 2 + (z[2]=='>');
166452 }
166453 *tokenType = TK_MINUS;
166454 return 1;
166455 }
166456 case CC_LP: {
@@ -167394,13 +167443,10 @@
167443 SQLITE_PRIVATE int sqlite3Fts2Init(sqlite3*);
167444 #endif
167445 #ifdef SQLITE_ENABLE_FTS5
167446 SQLITE_PRIVATE int sqlite3Fts5Init(sqlite3*);
167447 #endif
 
 
 
167448 #ifdef SQLITE_ENABLE_STMTVTAB
167449 SQLITE_PRIVATE int sqlite3StmtVtabInit(sqlite3*);
167450 #endif
167451
167452 /*
@@ -167431,12 +167477,12 @@
167477 #endif
167478 #ifdef SQLITE_ENABLE_DBSTAT_VTAB
167479 sqlite3DbstatRegister,
167480 #endif
167481 sqlite3TestExtInit,
167482 #if !defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_JSON)
167483 sqlite3JsonTableFunctions,
167484 #endif
167485 #ifdef SQLITE_ENABLE_STMTVTAB
167486 sqlite3StmtVtabInit,
167487 #endif
167488 #ifdef SQLITE_ENABLE_BYTECODE_VTAB
@@ -192022,11 +192068,11 @@
192068 }
192069 #endif /* defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4) */
192070 #endif /* !defined(SQLITE_DISABLE_FTS3_UNICODE) */
192071
192072 /************** End of fts3_unicode2.c ***************************************/
192073 /************** Begin file json.c ********************************************/
192074 /*
192075 ** 2015-08-12
192076 **
192077 ** The author disclaims copyright to this source code. In place of
192078 ** a legal notice, here is a blessing:
@@ -192035,72 +192081,23 @@
192081 ** May you find forgiveness for yourself and forgive others.
192082 ** May you share freely, never taking more than you give.
192083 **
192084 ******************************************************************************
192085 **
192086 ** This SQLite JSON functions.
 
192087 **
192088 ** This file began as an extension in ext/misc/json1.c in 2015. That
192089 ** extension proved so useful that it has now been moved into the core.
192090 **
192091 ** For the time being, all JSON is stored as pure text. (We might add
192092 ** a JSONB type in the future which stores a binary encoding of JSON in
192093 ** a BLOB, but there is no support for JSONB in the current implementation.
192094 ** This implementation parses JSON text at 250 MB/s, so it is hard to see
192095 ** how JSONB might improve on that.)
192096 */
192097 #ifndef SQLITE_OMIT_JSON
192098 /* #include "sqliteInt.h" */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192099
192100 /*
192101 ** Growing our own isspace() routine this way is twice as fast as
192102 ** the library isspace() function, resulting in a 7% overall performance
192103 ** increase for the parser. (Ubuntu14.10 gcc 4.8.4 x64 with -Os).
@@ -192121,48 +192118,18 @@
192118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192122 };
192123 #define fast_isspace(x) (jsonIsSpace[(unsigned char)x])
192124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192125 #if !defined(SQLITE_DEBUG) && !defined(SQLITE_COVERAGE_TEST)
192126 # define VVA(X)
192127 #else
192128 # define VVA(X) X
192129 #endif
192130
 
 
 
 
 
 
 
 
192131 /* Objects */
192132 typedef struct JsonString JsonString;
192133 typedef struct JsonNode JsonNode;
192134 typedef struct JsonParse JsonParse;
192135
@@ -192616,14 +192583,14 @@
192583 /*
192584 ** Convert a 4-byte hex string into an integer
192585 */
192586 static u32 jsonHexToInt4(const char *z){
192587 u32 v;
192588 assert( sqlite3Isxdigit(z[0]) );
192589 assert( sqlite3Isxdigit(z[1]) );
192590 assert( sqlite3Isxdigit(z[2]) );
192591 assert( sqlite3Isxdigit(z[3]) );
192592 v = (jsonHexToInt(z[0])<<12)
192593 + (jsonHexToInt(z[1])<<8)
192594 + (jsonHexToInt(z[2])<<4)
192595 + jsonHexToInt(z[3]);
192596 return v;
@@ -192854,11 +192821,11 @@
192821 /*
192822 ** Return true if z[] begins with 4 (or more) hexadecimal digits
192823 */
192824 static int jsonIs4Hex(const char *z){
192825 int i;
192826 for(i=0; i<4; i++) if( !sqlite3Isxdigit(z[i]) ) return 0;
192827 return 1;
192828 }
192829
192830 /*
192831 ** Parse a single JSON value which begins at pParse->zJson[i]. Return the
@@ -192873,17 +192840,17 @@
192840 u32 j;
192841 int iThis;
192842 int x;
192843 JsonNode *pNode;
192844 const char *z = pParse->zJson;
192845 while( fast_isspace(z[i]) ){ i++; }
192846 if( (c = z[i])=='{' ){
192847 /* Parse object */
192848 iThis = jsonParseAddNode(pParse, JSON_OBJECT, 0, 0);
192849 if( iThis<0 ) return -1;
192850 for(j=i+1;;j++){
192851 while( fast_isspace(z[j]) ){ j++; }
192852 if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1;
192853 x = jsonParseValue(pParse, j);
192854 if( x<0 ){
192855 pParse->iDepth--;
192856 if( x==(-2) && pParse->nNode==(u32)iThis+1 ) return j+1;
@@ -192892,18 +192859,18 @@
192859 if( pParse->oom ) return -1;
192860 pNode = &pParse->aNode[pParse->nNode-1];
192861 if( pNode->eType!=JSON_STRING ) return -1;
192862 pNode->jnFlags |= JNODE_LABEL;
192863 j = x;
192864 while( fast_isspace(z[j]) ){ j++; }
192865 if( z[j]!=':' ) return -1;
192866 j++;
192867 x = jsonParseValue(pParse, j);
192868 pParse->iDepth--;
192869 if( x<0 ) return -1;
192870 j = x;
192871 while( fast_isspace(z[j]) ){ j++; }
192872 c = z[j];
192873 if( c==',' ) continue;
192874 if( c!='}' ) return -1;
192875 break;
192876 }
@@ -192913,20 +192880,20 @@
192880 /* Parse array */
192881 iThis = jsonParseAddNode(pParse, JSON_ARRAY, 0, 0);
192882 if( iThis<0 ) return -1;
192883 memset(&pParse->aNode[iThis].u, 0, sizeof(pParse->aNode[iThis].u));
192884 for(j=i+1;;j++){
192885 while( fast_isspace(z[j]) ){ j++; }
192886 if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1;
192887 x = jsonParseValue(pParse, j);
192888 pParse->iDepth--;
192889 if( x<0 ){
192890 if( x==(-3) && pParse->nNode==(u32)iThis+1 ) return j+1;
192891 return -1;
192892 }
192893 j = x;
192894 while( fast_isspace(z[j]) ){ j++; }
192895 c = z[j];
192896 if( c==',' ) continue;
192897 if( c!=']' ) return -1;
192898 break;
192899 }
@@ -192959,21 +192926,21 @@
192926 jsonParseAddNode(pParse, JSON_STRING, j+1-i, &z[i]);
192927 if( !pParse->oom ) pParse->aNode[pParse->nNode-1].jnFlags = jnFlags;
192928 return j+1;
192929 }else if( c=='n'
192930 && strncmp(z+i,"null",4)==0
192931 && !sqlite3Isalnum(z[i+4]) ){
192932 jsonParseAddNode(pParse, JSON_NULL, 0, 0);
192933 return i+4;
192934 }else if( c=='t'
192935 && strncmp(z+i,"true",4)==0
192936 && !sqlite3Isalnum(z[i+4]) ){
192937 jsonParseAddNode(pParse, JSON_TRUE, 0, 0);
192938 return i+4;
192939 }else if( c=='f'
192940 && strncmp(z+i,"false",5)==0
192941 && !sqlite3Isalnum(z[i+5]) ){
192942 jsonParseAddNode(pParse, JSON_FALSE, 0, 0);
192943 return i+5;
192944 }else if( c=='-' || (c>='0' && c<='9') ){
192945 /* Parse number */
192946 u8 seenDP = 0;
@@ -193040,11 +193007,11 @@
193007 pParse->zJson = zJson;
193008 i = jsonParseValue(pParse, 0);
193009 if( pParse->oom ) i = -1;
193010 if( i>0 ){
193011 assert( pParse->iDepth==0 );
193012 while( fast_isspace(zJson[i]) ) i++;
193013 if( zJson[i] ) i = -1;
193014 }
193015 if( i<=0 ){
193016 if( pCtx!=0 ){
193017 if( pParse->oom ){
@@ -193268,11 +193235,11 @@
193235 return pNode;
193236 }
193237 }else if( zPath[0]=='[' ){
193238 i = 0;
193239 j = 1;
193240 while( sqlite3Isdigit(zPath[j]) ){
193241 i = i*10 + zPath[j] - '0';
193242 j++;
193243 }
193244 if( j<2 || zPath[j]!=']' ){
193245 if( zPath[1]=='#' ){
@@ -193289,17 +193256,17 @@
193256 iBase += pBase->u.iAppend;
193257 pBase = &pParse->aNode[iBase];
193258 j = 1;
193259 }
193260 j = 2;
193261 if( zPath[2]=='-' && sqlite3Isdigit(zPath[3]) ){
193262 unsigned int x = 0;
193263 j = 3;
193264 do{
193265 x = x*10 + zPath[j] - '0';
193266 j++;
193267 }while( sqlite3Isdigit(zPath[j]) );
193268 if( x>i ) return 0;
193269 i -= x;
193270 }
193271 if( zPath[j]!=']' ){
193272 *pzErr = zPath;
@@ -193514,11 +193481,11 @@
193481 static void jsonTest1Func(
193482 sqlite3_context *ctx,
193483 int argc,
193484 sqlite3_value **argv
193485 ){
193486 UNUSED_PARAMETER(argc);
193487 sqlite3_result_int(ctx, sqlite3_value_subtype(argv[0])==JSON_SUBTYPE);
193488 }
193489 #endif /* SQLITE_DEBUG */
193490
193491 /****************************************************************************
@@ -193535,11 +193502,11 @@
193502 sqlite3_context *ctx,
193503 int argc,
193504 sqlite3_value **argv
193505 ){
193506 JsonString jx;
193507 UNUSED_PARAMETER(argc);
193508
193509 jsonInit(&jx, ctx);
193510 jsonAppendValue(&jx, argv[0]);
193511 jsonResult(&jx);
193512 sqlite3_result_subtype(ctx, JSON_SUBTYPE);
@@ -193606,55 +193573,118 @@
193573 }
193574 }
193575 sqlite3_result_int64(ctx, n);
193576 }
193577
193578 /*
193579 ** Bit values for the flags passed into jsonExtractFunc() or
193580 ** jsonSetFunc() via the user-data value.
193581 */
193582 #define JSON_JSON 0x01 /* Result is always JSON */
193583 #define JSON_SQL 0x02 /* Result is always SQL */
193584 #define JSON_ABPATH 0x03 /* Allow abbreviated JSON path specs */
193585 #define JSON_ISSET 0x04 /* json_set(), not json_insert() */
193586
193587 /*
193588 ** json_extract(JSON, PATH, ...)
193589 ** "->"(JSON,PATH)
193590 ** "->>"(JSON,PATH)
193591 **
193592 ** Return the element described by PATH. Return NULL if that PATH element
193593 ** is not found.
193594 **
193595 ** If JSON_JSON is set or if more that one PATH argument is supplied then
193596 ** always return a JSON representation of the result. If JSON_SQL is set,
193597 ** then always return an SQL representation of the result. If neither flag
193598 ** is present and argc==2, then return JSON for objects and arrays and SQL
193599 ** for all other values.
193600 **
193601 ** When multiple PATH arguments are supplied, the result is a JSON array
193602 ** containing the result of each PATH.
193603 **
193604 ** Abbreviated JSON path expressions are allows if JSON_ABPATH, for
193605 ** compatibility with PG.
193606 */
193607 static void jsonExtractFunc(
193608 sqlite3_context *ctx,
193609 int argc,
193610 sqlite3_value **argv
193611 ){
193612 JsonParse *p; /* The parse */
193613 JsonNode *pNode;
193614 const char *zPath;
193615 int flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
193616 JsonString jx;
 
193617
193618 if( argc<2 ) return;
193619 p = jsonParseCached(ctx, argv, ctx);
193620 if( p==0 ) return;
193621 if( argc==2 ){
193622 /* With a single PATH argument */
193623 zPath = (const char*)sqlite3_value_text(argv[1]);
193624 if( zPath==0 ) return;
193625 if( flags & JSON_ABPATH ){
193626 if( zPath[0]!='$' ){
193627 /* The -> and ->> operators accept abbreviated PATH arguments. This
193628 ** is mostly for compatibility with PostgreSQL, but also for
193629 ** convenience.
193630 **
193631 ** NUMBER ==> $[NUMBER] // PG compatible
193632 ** LABEL ==> $.LABEL // PG compatible
193633 ** [NUMBER] ==> $[NUMBER] // Not PG. Purely for convenience
193634 */
193635 jsonInit(&jx, ctx);
193636 if( sqlite3Isdigit(zPath[0]) ){
193637 jsonAppendRaw(&jx, "$[", 2);
193638 jsonAppendRaw(&jx, zPath, (int)strlen(zPath));
193639 jsonAppendRaw(&jx, "]", 2);
193640 }else{
193641 jsonAppendRaw(&jx, "$.", 1 + (zPath[0]!='['));
193642 jsonAppendRaw(&jx, zPath, (int)strlen(zPath));
193643 jsonAppendChar(&jx, 0);
193644 }
193645 pNode = jx.bErr ? 0 : jsonLookup(p, jx.zBuf, 0, ctx);
193646 jsonReset(&jx);
193647 }else{
193648 pNode = jsonLookup(p, zPath, 0, ctx);
193649 }
193650 if( pNode ){
193651 if( flags & JSON_JSON ){
193652 jsonReturnJson(pNode, ctx, 0);
193653 }else{
193654 jsonReturn(pNode, ctx, 0);
193655 sqlite3_result_subtype(ctx, 0);
193656 }
193657 }
193658 }else{
193659 pNode = jsonLookup(p, zPath, 0, ctx);
193660 if( p->nErr==0 && pNode ) jsonReturn(pNode, ctx, 0);
193661 }
193662 }else{
193663 /* Two or more PATH arguments results in a JSON array with each
193664 ** element of the array being the value selected by one of the PATHs */
193665 int i;
193666 jsonInit(&jx, ctx);
193667 jsonAppendChar(&jx, '[');
193668 for(i=1; i<argc; i++){
193669 zPath = (const char*)sqlite3_value_text(argv[i]);
193670 pNode = jsonLookup(p, zPath, 0, ctx);
193671 if( p->nErr ) break;
193672 jsonAppendSeparator(&jx);
193673 if( pNode ){
193674 jsonRenderNode(pNode, &jx, 0);
193675 }else{
193676 jsonAppendRaw(&jx, "null", 4);
193677 }
193678 }
193679 if( i==argc ){
193680 jsonAppendChar(&jx, ']');
193681 jsonResult(&jx);
193682 sqlite3_result_subtype(ctx, JSON_SUBTYPE);
193683 }
193684 jsonReset(&jx);
193685 }
 
 
193686 }
193687
193688 /* This is the RFC 7396 MergePatch algorithm.
193689 */
193690 static JsonNode *jsonMergePatch(
@@ -193746,11 +193776,11 @@
193776 ){
193777 JsonParse x; /* The JSON that is being patched */
193778 JsonParse y; /* The patch */
193779 JsonNode *pResult; /* The result of the merge */
193780
193781 UNUSED_PARAMETER(argc);
193782 if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return;
193783 if( jsonParse(&y, ctx, (const char*)sqlite3_value_text(argv[1])) ){
193784 jsonParseReset(&x);
193785 return;
193786 }
@@ -193867,11 +193897,11 @@
193897 zPath = (const char*)sqlite3_value_text(argv[i]);
193898 pNode = jsonLookup(&x, zPath, 0, ctx);
193899 if( x.nErr ) goto replace_err;
193900 if( pNode ){
193901 assert( pNode->eU==0 || pNode->eU==1 || pNode->eU==4 );
193902 testcase( pNode->eU!=0 && pNode->eU!=1 );
193903 pNode->jnFlags |= (u8)JNODE_REPLACE;
193904 VVA( pNode->eU = 4 );
193905 pNode->u.iReplace = i + 1;
193906 }
193907 }
@@ -193882,10 +193912,11 @@
193912 jsonReturnJson(x.aNode, ctx, argv);
193913 }
193914 replace_err:
193915 jsonParseReset(&x);
193916 }
193917
193918
193919 /*
193920 ** json_set(JSON, PATH, VALUE, ...)
193921 **
193922 ** Set the value at PATH to VALUE. Create the PATH if it does not already
@@ -193905,11 +193936,11 @@
193936 JsonParse x; /* The parse */
193937 JsonNode *pNode;
193938 const char *zPath;
193939 u32 i;
193940 int bApnd;
193941 int bIsSet = sqlite3_user_data(ctx)!=0;
193942
193943 if( argc<1 ) return;
193944 if( (argc&1)==0 ) {
193945 jsonWrongNumArgs(ctx, bIsSet ? "set" : "insert");
193946 return;
@@ -193924,11 +193955,11 @@
193955 sqlite3_result_error_nomem(ctx);
193956 goto jsonSetDone;
193957 }else if( x.nErr ){
193958 goto jsonSetDone;
193959 }else if( pNode && (bApnd || bIsSet) ){
193960 testcase( pNode->eU!=0 && pNode->eU!=1 && pNode->eU!=4 );
193961 assert( pNode->eU!=3 || pNode->eU!=5 );
193962 VVA( pNode->eU = 4 );
193963 pNode->jnFlags |= (u8)JNODE_REPLACE;
193964 pNode->u.iReplace = i + 1;
193965 }
@@ -193945,12 +193976,12 @@
193976
193977 /*
193978 ** json_type(JSON)
193979 ** json_type(JSON, PATH)
193980 **
193981 ** Return the top-level "type" of a JSON string. json_type() raises an
193982 ** error if either the JSON or PATH inputs are not well-formed.
193983 */
193984 static void jsonTypeFunc(
193985 sqlite3_context *ctx,
193986 int argc,
193987 sqlite3_value **argv
@@ -193982,11 +194013,11 @@
194013 sqlite3_context *ctx,
194014 int argc,
194015 sqlite3_value **argv
194016 ){
194017 JsonParse *p; /* The parse */
194018 UNUSED_PARAMETER(argc);
194019 p = jsonParseCached(ctx, argv, 0);
194020 sqlite3_result_int(ctx, p!=0);
194021 }
194022
194023
@@ -194002,11 +194033,11 @@
194033 sqlite3_context *ctx,
194034 int argc,
194035 sqlite3_value **argv
194036 ){
194037 JsonString *pStr;
194038 UNUSED_PARAMETER(argc);
194039 pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr));
194040 if( pStr ){
194041 if( pStr->zBuf==0 ){
194042 jsonInit(pStr, ctx);
194043 jsonAppendChar(pStr, '[');
@@ -194062,12 +194093,12 @@
194093 int inStr = 0;
194094 int nNest = 0;
194095 char *z;
194096 char c;
194097 JsonString *pStr;
194098 UNUSED_PARAMETER(argc);
194099 UNUSED_PARAMETER(argv);
194100 pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
194101 #ifdef NEVER
194102 /* pStr is always non-NULL since jsonArrayStep() or jsonObjectStep() will
194103 ** always have been called to initalize it */
194104 if( NEVER(!pStr) ) return;
@@ -194107,11 +194138,11 @@
194138 sqlite3_value **argv
194139 ){
194140 JsonString *pStr;
194141 const char *z;
194142 u32 n;
194143 UNUSED_PARAMETER(argc);
194144 pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr));
194145 if( pStr ){
194146 if( pStr->zBuf==0 ){
194147 jsonInit(pStr, ctx);
194148 jsonAppendChar(pStr, '{');
@@ -194198,14 +194229,14 @@
194229 ** the last two columns in the table. Should this ever changes, be
194230 ** sure to update the xBestIndex method. */
194231 #define JEACH_JSON 8
194232 #define JEACH_ROOT 9
194233
194234 UNUSED_PARAMETER(pzErr);
194235 UNUSED_PARAMETER(argv);
194236 UNUSED_PARAMETER(argc);
194237 UNUSED_PARAMETER(pAux);
194238 rc = sqlite3_declare_vtab(db,
194239 "CREATE TABLE x(key,value,type,atom,id,parent,fullkey,path,"
194240 "json HIDDEN,root HIDDEN)");
194241 if( rc==SQLITE_OK ){
194242 pNew = *ppVtab = sqlite3_malloc( sizeof(*pNew) );
@@ -194224,11 +194255,11 @@
194255
194256 /* constructor for a JsonEachCursor object for json_each(). */
194257 static int jsonEachOpenEach(sqlite3_vtab *p, sqlite3_vtab_cursor **ppCursor){
194258 JsonEachCursor *pCur;
194259
194260 UNUSED_PARAMETER(p);
194261 pCur = sqlite3_malloc( sizeof(*pCur) );
194262 if( pCur==0 ) return SQLITE_NOMEM;
194263 memset(pCur, 0, sizeof(*pCur));
194264 *ppCursor = &pCur->base;
194265 return SQLITE_OK;
@@ -194284,11 +194315,11 @@
194315 u32 iUp = p->sParse.aUp[p->i];
194316 JsonNode *pUp = &p->sParse.aNode[iUp];
194317 p->eType = pUp->eType;
194318 if( pUp->eType==JSON_ARRAY ){
194319 assert( pUp->eU==0 || pUp->eU==3 );
194320 testcase( pUp->eU==3 );
194321 VVA( pUp->eU = 3 );
194322 if( iUp==p->i-1 ){
194323 pUp->u.iKey = 0;
194324 }else{
194325 pUp->u.iKey++;
@@ -194471,11 +194502,11 @@
194502 const struct sqlite3_index_constraint *pConstraint;
194503
194504 /* This implementation assumes that JSON and ROOT are the last two
194505 ** columns in the table */
194506 assert( JEACH_ROOT == JEACH_JSON+1 );
194507 UNUSED_PARAMETER(tab);
194508 aIdx[0] = aIdx[1] = -1;
194509 pConstraint = pIdxInfo->aConstraint;
194510 for(i=0; i<pIdxInfo->nConstraint; i++, pConstraint++){
194511 int iCol;
194512 int iMask;
@@ -194527,12 +194558,12 @@
194558 JsonEachCursor *p = (JsonEachCursor*)cur;
194559 const char *z;
194560 const char *zRoot = 0;
194561 sqlite3_int64 n;
194562
194563 UNUSED_PARAMETER(idxStr);
194564 UNUSED_PARAMETER(argc);
194565 jsonEachCursorReset(p);
194566 if( idxNum==0 ) return SQLITE_OK;
194567 z = (const char*)sqlite3_value_text(argv[0]);
194568 if( z==0 ) return SQLITE_OK;
194569 n = sqlite3_value_bytes(argv[0]);
@@ -194653,112 +194684,72 @@
194684 0, /* xRelease */
194685 0, /* xRollbackTo */
194686 0 /* xShadowName */
194687 };
194688 #endif /* SQLITE_OMIT_VIRTUALTABLE */
194689 #endif /* !defined(SQLITE_OMIT_JSON) */
194690
194691 /*
194692 ** Register JSON functions.
194693 */
194694 SQLITE_PRIVATE void sqlite3RegisterJsonFunctions(void){
194695 #ifndef SQLITE_OMIT_JSON
194696 static FuncDef aJsonFunc[] = {
194697 JFUNCTION(json, 1, 0, jsonRemoveFunc),
194698 JFUNCTION(json_array, -1, 0, jsonArrayFunc),
194699 JFUNCTION(json_array_length, 1, 0, jsonArrayLengthFunc),
194700 JFUNCTION(json_array_length, 2, 0, jsonArrayLengthFunc),
194701 JFUNCTION(json_extract, -1, 0, jsonExtractFunc),
194702 JFUNCTION(->, 2, JSON_JSON, jsonExtractFunc),
194703 JFUNCTION(->>, 2, JSON_SQL, jsonExtractFunc),
194704 JFUNCTION(json_insert, -1, 0, jsonSetFunc),
194705 JFUNCTION(json_object, -1, 0, jsonObjectFunc),
194706 JFUNCTION(json_patch, 2, 0, jsonPatchFunc),
194707 JFUNCTION(json_quote, 1, 0, jsonQuoteFunc),
194708 JFUNCTION(json_remove, -1, 0, jsonRemoveFunc),
194709 JFUNCTION(json_replace, -1, 0, jsonReplaceFunc),
194710 JFUNCTION(json_set, -1, JSON_ISSET, jsonSetFunc),
194711 JFUNCTION(json_type, 1, 0, jsonTypeFunc),
194712 JFUNCTION(json_type, 2, 0, jsonTypeFunc),
194713 JFUNCTION(json_valid, 1, 0, jsonValidFunc),
 
 
 
 
 
 
 
194714 #if SQLITE_DEBUG
194715 JFUNCTION(json_parse, 1, 0, jsonParseFunc),
194716 JFUNCTION(json_test1, 1, 0, jsonTest1Func),
194717 #endif
194718 WAGGREGATE(json_group_array, 1, 0, 0,
194719 jsonArrayStep, jsonArrayFinal, jsonArrayValue, jsonGroupInverse,
194720 SQLITE_SUBTYPE|SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS),
194721 WAGGREGATE(json_group_object, 2, 0, 0,
194722 jsonObjectStep, jsonObjectFinal, jsonObjectValue, jsonGroupInverse,
194723 SQLITE_SUBTYPE|SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS)
194724 };
194725 sqlite3InsertBuiltinFuncs(aJsonFunc, ArraySize(aJsonFunc));
194726 #endif
194727 }
194728
194729 #if !defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_JSON)
194730 /*
194731 ** Register the JSON table-valued functions
194732 */
194733 SQLITE_PRIVATE int sqlite3JsonTableFunctions(sqlite3 *db){
194734 int rc = SQLITE_OK;
194735 static const struct {
194736 const char *zName;
194737 sqlite3_module *pModule;
194738 } aMod[] = {
194739 { "json_each", &jsonEachModule },
194740 { "json_tree", &jsonTreeModule },
194741 };
194742 int i;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194743 for(i=0; i<sizeof(aMod)/sizeof(aMod[0]) && rc==SQLITE_OK; i++){
194744 rc = sqlite3_create_module(db, aMod[i].zName, aMod[i].pModule, 0);
194745 }
 
194746 return rc;
194747 }
194748 #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_JSON) */
194749
194750 /************** End of json.c ************************************************/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194751 /************** Begin file rtree.c *******************************************/
194752 /*
194753 ** 2001 September 15
194754 **
194755 ** The author disclaims copyright to this source code. In place of
@@ -199188,15 +199179,11 @@
199179 # define GEODEBUG(X) if(geo_debug)printf X
199180 #else
199181 # define GEODEBUG(X)
199182 #endif
199183
199184 /* Character class routines */
 
 
 
 
199185 #ifdef sqlite3Isdigit
199186 /* Use the SQLite core versions if this routine is part of the
199187 ** SQLite amalgamation */
199188 # define safe_isdigit(x) sqlite3Isdigit(x)
199189 # define safe_isalnum(x) sqlite3Isalnum(x)
@@ -199207,10 +199194,11 @@
199194 # define safe_isdigit(x) isdigit((unsigned char)(x))
199195 # define safe_isalnum(x) isalnum((unsigned char)(x))
199196 # define safe_isxdigit(x) isxdigit((unsigned char)(x))
199197 #endif
199198
199199 #ifndef JSON_NULL /* The following stuff repeats things found in json1 */
199200 /*
199201 ** Growing our own isspace() routine this way is twice as fast as
199202 ** the library isspace() function.
199203 */
199204 static const char geopolyIsSpace[] = {
@@ -199229,11 +199217,11 @@
199217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199221 };
199222 #define fast_isspace(x) (geopolyIsSpace[(unsigned char)x])
199223 #endif /* JSON NULL - back to original code */
199224
199225 /* Compiler and version */
199226 #ifndef GCC_VERSION
199227 #if defined(__GNUC__) && !defined(SQLITE_DISABLE_INTRINSIC)
@@ -199318,11 +199306,11 @@
199306 a[2] = t;
199307 }
199308
199309 /* Skip whitespace. Return the next non-whitespace character. */
199310 static char geopolySkipSpace(GeoParse *p){
199311 while( fast_isspace(p->z[0]) ) p->z++;
199312 return p->z[0];
199313 }
199314
199315 /* Parse out a number. Write the value into *pVal if pVal!=0.
199316 ** return non-zero on success and zero if the next token is not a number.
@@ -233346,11 +233334,11 @@
233334 int nArg, /* Number of args */
233335 sqlite3_value **apUnused /* Function arguments */
233336 ){
233337 assert( nArg==0 );
233338 UNUSED_PARAM2(nArg, apUnused);
233339 sqlite3_result_text(pCtx, "fts5: 2022-01-12 00:28:12 adebb9d7478d092f16fb0ef7d5246ce152b166479d6f949110b5878b89ea2cec", -1, SQLITE_TRANSIENT);
233340 }
233341
233342 /*
233343 ** Return true if zName is the extension on one of the shadow tables used
233344 ** by this module.
233345
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,11 +146,11 @@
146146
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147
** [sqlite_version()] and [sqlite_source_id()].
148148
*/
149149
#define SQLITE_VERSION "3.38.0"
150150
#define SQLITE_VERSION_NUMBER 3038000
151
-#define SQLITE_SOURCE_ID "2022-01-06 17:13:56 2d6a16caa7d28ad5c766036b2eb6c2020683fcc9389b3c7df2013739929dd36f"
151
+#define SQLITE_SOURCE_ID "2022-01-12 00:28:12 adebb9d7478d092f16fb0ef7d5246ce152b166479d6f949110b5878b89ea2cec"
152152
153153
/*
154154
** CAPI3REF: Run-Time Library Version Numbers
155155
** KEYWORDS: sqlite3_version sqlite3_sourceid
156156
**
157157
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,11 +146,11 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.38.0"
150 #define SQLITE_VERSION_NUMBER 3038000
151 #define SQLITE_SOURCE_ID "2022-01-06 17:13:56 2d6a16caa7d28ad5c766036b2eb6c2020683fcc9389b3c7df2013739929dd36f"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
157
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,11 +146,11 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.38.0"
150 #define SQLITE_VERSION_NUMBER 3038000
151 #define SQLITE_SOURCE_ID "2022-01-12 00:28:12 adebb9d7478d092f16fb0ef7d5246ce152b166479d6f949110b5878b89ea2cec"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
157

Keyboard Shortcuts

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