Fossil SCM

Update the built-in SQLite to the latest 3.37.0 alpha, for testing.

drh 2021-09-06 13:06 trunk
Commit 04b725d9bf814faa24b0a35255eebfc13d7f25c3220553c18f68f07a04928542
3 files changed +132 -2 +3771 -3445 +2 -1
+132 -2
--- src/shell.c
+++ src/shell.c
@@ -12062,10 +12062,12 @@
1206212062
u8 scanstatsOn; /* True to display scan stats before each finalize */
1206312063
u8 openMode; /* SHELL_OPEN_NORMAL, _APPENDVFS, or _ZIPFILE */
1206412064
u8 doXdgOpen; /* Invoke start/open/xdg-open in output_reset() */
1206512065
u8 nEqpLevel; /* Depth of the EQP output graph */
1206612066
u8 eTraceType; /* SHELL_TRACE_* value for type of trace */
12067
+ u8 bSafeMode; /* True to prohibit unsafe operations */
12068
+ u8 bSafeModePersist; /* The long-term value of bSafeMode */
1206712069
unsigned statsOn; /* True to display memory stats before each finalize */
1206812070
unsigned mEqpLines; /* Mask of veritical lines in the EQP output graph */
1206912071
int outCount; /* Revert to stdout when reaching zero */
1207012072
int cnt; /* Number of records displayed so far */
1207112073
int lineno; /* Line number of last line read from in */
@@ -12113,12 +12115,13 @@
1211312115
} aAuxDb[5], /* Array of all database connections */
1211412116
*pAuxDb; /* Currently active database connection */
1211512117
int *aiIndent; /* Array of indents used in MODE_Explain */
1211612118
int nIndent; /* Size of array aiIndent[] */
1211712119
int iIndent; /* Index of current op in aiIndent[] */
12120
+ char *zNonce; /* Nonce for temporary safe-mode excapes */
1211812121
EQPGraph sGraph; /* Information for the graphical EXPLAIN QUERY PLAN */
12119
- ExpertInfo expert; /* Valid if previous command was ".expert OPT..." */
12122
+ ExpertInfo expert; /* Valid if previous command was ".expert OPT..." */
1212012123
};
1212112124
1212212125
1212312126
/* Allowed values for ShellState.autoEQP
1212412127
*/
@@ -12249,10 +12252,31 @@
1224912252
ShellState *p = (ShellState*)sqlite3_user_data(pCtx);
1225012253
(void)nVal;
1225112254
utf8_printf(p->out, "%s\n", sqlite3_value_text(apVal[0]));
1225212255
sqlite3_result_value(pCtx, apVal[0]);
1225312256
}
12257
+
12258
+/*
12259
+** If in safe mode, print an error message described by the arguments
12260
+** and exit immediately.
12261
+*/
12262
+static void failIfSafeMode(
12263
+ ShellState *p,
12264
+ const char *zErrMsg,
12265
+ ...
12266
+){
12267
+ if( p->bSafeMode ){
12268
+ va_list ap;
12269
+ char *zMsg;
12270
+ va_start(ap, zErrMsg);
12271
+ zMsg = sqlite3_vmprintf(zErrMsg, ap);
12272
+ va_end(ap);
12273
+ raw_printf(stderr, "line %d: ", p->lineno);
12274
+ utf8_printf(stderr, "%s\n", zMsg);
12275
+ exit(1);
12276
+ }
12277
+}
1225412278
1225512279
/*
1225612280
** SQL function: edit(VALUE)
1225712281
** edit(VALUE,EDITOR)
1225812282
**
@@ -12727,10 +12751,53 @@
1272712751
return FALSE;
1272812752
}
1272912753
#endif
1273012754
1273112755
#ifndef SQLITE_OMIT_AUTHORIZATION
12756
+/*
12757
+** This authorizer runs in safe mode.
12758
+*/
12759
+static int safeModeAuth(
12760
+ void *pClientData,
12761
+ int op,
12762
+ const char *zA1,
12763
+ const char *zA2,
12764
+ const char *zA3,
12765
+ const char *zA4
12766
+){
12767
+ ShellState *p = (ShellState*)pClientData;
12768
+ static const char *azProhibitedFunctions[] = {
12769
+ "edit",
12770
+ "fts3_tokenizer",
12771
+ "load_extension",
12772
+ "readfile",
12773
+ "writefile",
12774
+ "zipfile",
12775
+ "zipfile_cds",
12776
+ };
12777
+ UNUSED_PARAMETER(zA2);
12778
+ UNUSED_PARAMETER(zA3);
12779
+ UNUSED_PARAMETER(zA4);
12780
+ switch( op ){
12781
+ case SQLITE_ATTACH: {
12782
+ failIfSafeMode(p, "cannot run ATTACH in safe mode");
12783
+ break;
12784
+ }
12785
+ case SQLITE_FUNCTION: {
12786
+ int i;
12787
+ for(i=0; i<ArraySize(azProhibitedFunctions); i++){
12788
+ if( sqlite3_stricmp(zA1, azProhibitedFunctions[i])==0 ){
12789
+ failIfSafeMode(p, "cannot use the %s() function in safe mode",
12790
+ azProhibitedFunctions[i]);
12791
+ }
12792
+ }
12793
+ break;
12794
+ }
12795
+ }
12796
+ return SQLITE_OK;
12797
+}
12798
+
1273212799
/*
1273312800
** When the ".auth ON" is set, the following authorizer callback is
1273412801
** invoked. It always returns SQLITE_OK.
1273512802
*/
1273612803
static int shellAuth(
@@ -12769,10 +12836,11 @@
1276912836
}else{
1277012837
raw_printf(p->out, "NULL");
1277112838
}
1277212839
}
1277312840
raw_printf(p->out, "\n");
12841
+ if( p->bSafeMode ) (void)safeModeAuth(pClientData, op, zA1, zA2, zA3, zA4);
1277412842
return SQLITE_OK;
1277512843
}
1277612844
#endif
1277712845
1277812846
/*
@@ -14942,10 +15010,11 @@
1494215010
" markdown Markdown table format",
1494315011
" quote Escape answers as for SQL",
1494415012
" table ASCII-art table",
1494515013
" tabs Tab-separated values",
1494615014
" tcl TCL list elements",
15015
+ ".nonce STRING Disable safe mode for one command if the nonce matches",
1494715016
".nullvalue STRING Use STRING in place of NULL values",
1494815017
".once ?OPTIONS? ?FILE? Output for the next SQL command only to FILE",
1494915018
" If FILE begins with '|' then open as a pipe",
1495015019
" --bom Put a UTF8 byte-order mark at the beginning",
1495115020
" -e Send output to the system text editor",
@@ -15656,10 +15725,13 @@
1565615725
sqlite3_file_control(p->db, "main", SQLITE_FCNTL_SIZE_LIMIT, &p->szMax);
1565715726
}
1565815727
}
1565915728
#endif
1566015729
}
15730
+ if( p->bSafeModePersist && p->db!=0 ){
15731
+ sqlite3_set_authorizer(p->db, safeModeAuth, p);
15732
+ }
1566115733
}
1566215734
1566315735
/*
1566415736
** Attempt to close the databaes connection. Report errors.
1566515737
*/
@@ -18419,19 +18491,22 @@
1841918491
goto meta_command_exit;
1842018492
}
1842118493
open_db(p, 0);
1842218494
if( booleanValue(azArg[1]) ){
1842318495
sqlite3_set_authorizer(p->db, shellAuth, p);
18496
+ }else if( p->bSafeModePersist ){
18497
+ sqlite3_set_authorizer(p->db, safeModeAuth, p);
1842418498
}else{
1842518499
sqlite3_set_authorizer(p->db, 0, 0);
1842618500
}
1842718501
}else
1842818502
#endif
1842918503
1843018504
#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
1843118505
if( c=='a' && strncmp(azArg[0], "archive", n)==0 ){
1843218506
open_db(p, 0);
18507
+ failIfSafeMode(p, "cannot run .archive in safe mode");
1843318508
rc = arDotCommand(p, 0, azArg, nArg);
1843418509
}else
1843518510
#endif
1843618511
1843718512
if( (c=='b' && n>=3 && strncmp(azArg[0], "backup", n)==0)
@@ -18442,10 +18517,11 @@
1844218517
sqlite3 *pDest;
1844318518
sqlite3_backup *pBackup;
1844418519
int j;
1844518520
int bAsync = 0;
1844618521
const char *zVfs = 0;
18522
+ failIfSafeMode(p, "cannot run .%s in safe mode", azArg[0]);
1844718523
for(j=1; j<nArg; j++){
1844818524
const char *z = azArg[j];
1844918525
if( z[0]=='-' ){
1845018526
if( z[1]=='-' ) z++;
1845118527
if( strcmp(z, "-append")==0 ){
@@ -18530,10 +18606,11 @@
1853018606
if( c=='b' && n>=3 && strncmp(azArg[0], "breakpoint", n)==0 ){
1853118607
test_breakpoint();
1853218608
}else
1853318609
1853418610
if( c=='c' && strcmp(azArg[0],"cd")==0 ){
18611
+ failIfSafeMode(p, "cannot run .cd in safe mode");
1853518612
if( nArg==2 ){
1853618613
#if defined(_WIN32) || defined(WIN32)
1853718614
wchar_t *z = sqlite3_win32_utf8_to_unicode(azArg[1]);
1853818615
rc = !SetCurrentDirectoryW(z);
1853918616
sqlite3_free(z);
@@ -18583,10 +18660,11 @@
1858318660
}
1858418661
sqlite3_free(zRes);
1858518662
}else
1858618663
1858718664
if( c=='c' && strncmp(azArg[0], "clone", n)==0 ){
18665
+ failIfSafeMode(p, "cannot run .clone in safe mode");
1858818666
if( nArg==2 ){
1858918667
tryToClone(p, azArg[1]);
1859018668
}else{
1859118669
raw_printf(stderr, "Usage: .clone FILENAME\n");
1859218670
rc = 1;
@@ -19144,10 +19222,11 @@
1914419222
char *(SQLITE_CDECL *xRead)(ImportCtx*); /* Func to read one value */
1914519223
int eVerbose = 0; /* Larger for more console output */
1914619224
int nSkip = 0; /* Initial lines to skip */
1914719225
int useOutputMode = 1; /* Use output mode to determine separators */
1914819226
19227
+ failIfSafeMode(p, "cannot run .import in safe mode");
1914919228
memset(&sCtx, 0, sizeof(sCtx));
1915019229
if( p->mode==MODE_Ascii ){
1915119230
xRead = ascii_read_one_field;
1915219231
}else{
1915319232
xRead = csv_read_one_field;
@@ -19595,10 +19674,11 @@
1959519674
1959619675
#ifndef SQLITE_OMIT_LOAD_EXTENSION
1959719676
if( c=='l' && strncmp(azArg[0], "load", n)==0 ){
1959819677
const char *zFile, *zProc;
1959919678
char *zErrMsg = 0;
19679
+ failIfSafeMode(p, "cannot run .load in safe mode");
1960019680
if( nArg<2 ){
1960119681
raw_printf(stderr, "Usage: .load FILE ?ENTRYPOINT?\n");
1960219682
rc = 1;
1960319683
goto meta_command_exit;
1960419684
}
@@ -19613,10 +19693,11 @@
1961319693
}
1961419694
}else
1961519695
#endif
1961619696
1961719697
if( c=='l' && strncmp(azArg[0], "log", n)==0 ){
19698
+ failIfSafeMode(p, "cannot run .log in safe mode");
1961819699
if( nArg!=2 ){
1961919700
raw_printf(stderr, "Usage: .log FILENAME\n");
1962019701
rc = 1;
1962119702
}else{
1962219703
const char *zFile = azArg[1];
@@ -19682,10 +19763,23 @@
1968219763
"quote table tabs tcl\n");
1968319764
rc = 1;
1968419765
}
1968519766
p->cMode = p->mode;
1968619767
}else
19768
+
19769
+ if( c=='n' && strcmp(azArg[0], "nonce")==0 ){
19770
+ if( nArg!=2 ){
19771
+ raw_printf(stderr, "Usage: .nonce NONCE\n");
19772
+ rc = 1;
19773
+ }else if( p->zNonce==0 || strcmp(azArg[1],p->zNonce)!=0 ){
19774
+ raw_printf(stderr, "line %d: incorrect nonce: \"%s\"\n", p->lineno, azArg[1]);
19775
+ exit(1);
19776
+ }
19777
+ p->bSafeMode = 0;
19778
+ return 0; /* Return immediately to bypass the safe mode reset
19779
+ ** at the end of this procedure */
19780
+ }else
1968719781
1968819782
if( c=='n' && strncmp(azArg[0], "nullvalue", n)==0 ){
1968919783
if( nArg==2 ){
1969019784
sqlite3_snprintf(sizeof(p->nullValue), p->nullValue,
1969119785
"%.*s", (int)ArraySize(p->nullValue)-1, azArg[1]);
@@ -19774,11 +19868,18 @@
1977419868
zNewFilename = sqlite3_mprintf("%s", z);
1977519869
}
1977619870
}
1977719871
/* If a filename is specified, try to open it first */
1977819872
if( zNewFilename || p->openMode==SHELL_OPEN_HEXDB ){
19779
- if( newFlag ) shellDeleteFile(zNewFilename);
19873
+ if( newFlag && !p->bSafeMode ) shellDeleteFile(zNewFilename);
19874
+ if( p->bSafeMode
19875
+ && p->openMode!=SHELL_OPEN_HEXDB
19876
+ && zNewFilename
19877
+ && strcmp(zNewFilename,":memory:")!=0
19878
+ ){
19879
+ failIfSafeMode(p, "cannot open disk-based database files in safe mode");
19880
+ }
1978019881
p->pAuxDb->zDbFilename = zNewFilename;
1978119882
open_db(p, OPEN_DB_KEEPALIVE);
1978219883
if( p->db==0 ){
1978319884
utf8_printf(stderr, "Error: cannot open '%s'\n", zNewFilename);
1978419885
sqlite3_free(zNewFilename);
@@ -19802,10 +19903,11 @@
1980219903
int i;
1980319904
int eMode = 0;
1980419905
int bBOM = 0;
1980519906
int bOnce = 0; /* 0: .output, 1: .once, 2: .excel */
1980619907
19908
+ failIfSafeMode(p, "cannot run .%s in safe mode", azArg[0]);
1980719909
if( c=='e' ){
1980819910
eMode = 'x';
1980919911
bOnce = 2;
1981019912
}else if( strncmp(azArg[0],"once",n)==0 ){
1981119913
bOnce = 1;
@@ -20074,10 +20176,11 @@
2007420176
}else
2007520177
2007620178
if( c=='r' && n>=3 && strncmp(azArg[0], "read", n)==0 ){
2007720179
FILE *inSaved = p->in;
2007820180
int savedLineno = p->lineno;
20181
+ failIfSafeMode(p, "cannot run .read in safe mode");
2007920182
if( nArg!=2 ){
2008020183
raw_printf(stderr, "Usage: .read FILE\n");
2008120184
rc = 1;
2008220185
goto meta_command_exit;
2008320186
}
@@ -20112,10 +20215,11 @@
2011220215
const char *zDb;
2011320216
sqlite3 *pSrc;
2011420217
sqlite3_backup *pBackup;
2011520218
int nTimeout = 0;
2011620219
20220
+ failIfSafeMode(p, "cannot run .restore in safe mode");
2011720221
if( nArg==2 ){
2011820222
zSrcFile = azArg[1];
2011920223
zDb = "main";
2012020224
}else if( nArg==3 ){
2012120225
zSrcFile = azArg[2];
@@ -20361,10 +20465,11 @@
2036120465
** .session patchset FILE
2036220466
** Write a changeset or patchset into a file. The file is overwritten.
2036320467
*/
2036420468
if( strcmp(azCmd[0],"changeset")==0 || strcmp(azCmd[0],"patchset")==0 ){
2036520469
FILE *out = 0;
20470
+ failIfSafeMode(p, "cannot run \".session %s\" in safe mode", azCmd[0]);
2036620471
if( nCmd!=2 ) goto session_syntax_error;
2036720472
if( pSession->p==0 ) goto session_not_open;
2036820473
out = fopen(azCmd[1], "wb");
2036920474
if( out==0 ){
2037020475
utf8_printf(stderr, "ERROR: cannot open \"%s\" for writing\n",
@@ -20775,10 +20880,11 @@
2077520880
if( c=='s'
2077620881
&& (strncmp(azArg[0], "shell", n)==0 || strncmp(azArg[0],"system",n)==0)
2077720882
){
2077820883
char *zCmd;
2077920884
int i, x;
20885
+ failIfSafeMode(p, "cannot run .%s in safe mode", azArg[0]);
2078020886
if( nArg<2 ){
2078120887
raw_printf(stderr, "Usage: .system COMMAND\n");
2078220888
rc = 1;
2078320889
goto meta_command_exit;
2078420890
}
@@ -21446,10 +21552,11 @@
2144621552
meta_command_exit:
2144721553
if( p->outCount ){
2144821554
p->outCount--;
2144921555
if( p->outCount==0 ) output_reset(p);
2145021556
}
21557
+ p->bSafeMode = p->bSafeModePersist;
2145121558
return rc;
2145221559
}
2145321560
2145421561
/*
2145521562
** Return TRUE if a semicolon occurs anywhere in the first N characters
@@ -21643,10 +21750,11 @@
2164321750
output_reset(p);
2164421751
p->outCount = 0;
2164521752
}else{
2164621753
clearTempFile(p);
2164721754
}
21755
+ p->bSafeMode = p->bSafeModePersist;
2164821756
}else if( nSql && _all_whitespace(zSql) ){
2164921757
if( ShellHasFlag(p, SHFLG_Echo) ) printf("%s\n", zSql);
2165021758
nSql = 0;
2165121759
}
2165221760
}
@@ -21809,14 +21917,16 @@
2180921917
#ifdef SQLITE_ENABLE_MULTIPLEX
2181021918
" -multiplex enable the multiplexor VFS\n"
2181121919
#endif
2181221920
" -newline SEP set output row separator. Default: '\\n'\n"
2181321921
" -nofollow refuse to open symbolic links to database files\n"
21922
+ " -nonce STRING set the safe-mode escape nonce\n"
2181421923
" -nullvalue TEXT set text string for NULL values. Default ''\n"
2181521924
" -pagecache SIZE N use N slots of SZ bytes each for page cache memory\n"
2181621925
" -quote set output mode to 'quote'\n"
2181721926
" -readonly open the database read-only\n"
21927
+ " -safe enable safe-mode\n"
2181821928
" -separator SEP set output column separator. Default: '|'\n"
2181921929
#ifdef SQLITE_ENABLE_SORTER_REFERENCES
2182021930
" -sorterref SIZE sorter references threshold size\n"
2182121931
#endif
2182221932
" -stats print memory stats before each finalize\n"
@@ -22098,10 +22208,18 @@
2209822208
if( sz<0 ) sz = 0;
2209922209
n = (int)integerValue(cmdline_option_value(argc,argv,++i));
2210022210
if( n<0 ) n = 0;
2210122211
sqlite3_config(SQLITE_CONFIG_LOOKASIDE, sz, n);
2210222212
if( sz*n==0 ) data.shellFlgs &= ~SHFLG_Lookaside;
22213
+ }else if( strcmp(z,"-threadsafe")==0 ){
22214
+ int n;
22215
+ n = (int)integerValue(cmdline_option_value(argc,argv,++i));
22216
+ switch( n ){
22217
+ case 0: sqlite3_config(SQLITE_CONFIG_SINGLETHREAD); break;
22218
+ case 2: sqlite3_config(SQLITE_CONFIG_MULTITHREAD); break;
22219
+ default: sqlite3_config(SQLITE_CONFIG_SERIALIZED); break;
22220
+ }
2210322221
#ifdef SQLITE_ENABLE_VFSTRACE
2210422222
}else if( strcmp(z,"-vfstrace")==0 ){
2210522223
extern int vfstrace_register(
2210622224
const char *zTraceName,
2210722225
const char *zOldVfsName,
@@ -22150,10 +22268,15 @@
2215022268
#endif
2215122269
}else if( strcmp(z, "-memtrace")==0 ){
2215222270
sqlite3MemTraceActivate(stderr);
2215322271
}else if( strcmp(z,"-bail")==0 ){
2215422272
bail_on_error = 1;
22273
+ }else if( strcmp(z,"-nonce")==0 ){
22274
+ free(data.zNonce);
22275
+ data.zNonce = strdup(argv[++i]);
22276
+ }else if( strcmp(z,"-safe")==0 ){
22277
+ /* no-op - catch this on the second pass */
2215522278
}
2215622279
}
2215722280
verify_uninitialized();
2215822281
2215922282
@@ -22310,10 +22433,14 @@
2231022433
i++;
2231122434
}else if( strcmp(z,"-pagecache")==0 ){
2231222435
i+=2;
2231322436
}else if( strcmp(z,"-lookaside")==0 ){
2231422437
i+=2;
22438
+ }else if( strcmp(z,"-threadsafe")==0 ){
22439
+ i+=2;
22440
+ }else if( strcmp(z,"-nonce")==0 ){
22441
+ i += 2;
2231522442
}else if( strcmp(z,"-mmap")==0 ){
2231622443
i++;
2231722444
}else if( strcmp(z,"-memtrace")==0 ){
2231822445
i++;
2231922446
#ifdef SQLITE_ENABLE_SORTER_REFERENCES
@@ -22368,10 +22495,12 @@
2236822495
arDotCommand(&data, 1, argv+i, argc-i);
2236922496
}
2237022497
readStdin = 0;
2237122498
break;
2237222499
#endif
22500
+ }else if( strcmp(z,"-safe")==0 ){
22501
+ data.bSafeMode = data.bSafeModePersist = 1;
2237322502
}else{
2237422503
utf8_printf(stderr,"%s: Error: unknown option: %s\n", Argv0, z);
2237522504
raw_printf(stderr,"Use -help for a list of options.\n");
2237622505
return 1;
2237722506
}
@@ -22470,10 +22599,11 @@
2247022599
#if !SQLITE_SHELL_IS_UTF8
2247122600
for(i=0; i<argcToFree; i++) free(argvToFree[i]);
2247222601
free(argvToFree);
2247322602
#endif
2247422603
free(data.colWidth);
22604
+ free(data.zNonce);
2247522605
/* Clear the global data structure so that valgrind will detect memory
2247622606
** leaks */
2247722607
memset(&data, 0, sizeof(data));
2247822608
return rc;
2247922609
}
2248022610
--- src/shell.c
+++ src/shell.c
@@ -12062,10 +12062,12 @@
12062 u8 scanstatsOn; /* True to display scan stats before each finalize */
12063 u8 openMode; /* SHELL_OPEN_NORMAL, _APPENDVFS, or _ZIPFILE */
12064 u8 doXdgOpen; /* Invoke start/open/xdg-open in output_reset() */
12065 u8 nEqpLevel; /* Depth of the EQP output graph */
12066 u8 eTraceType; /* SHELL_TRACE_* value for type of trace */
 
 
12067 unsigned statsOn; /* True to display memory stats before each finalize */
12068 unsigned mEqpLines; /* Mask of veritical lines in the EQP output graph */
12069 int outCount; /* Revert to stdout when reaching zero */
12070 int cnt; /* Number of records displayed so far */
12071 int lineno; /* Line number of last line read from in */
@@ -12113,12 +12115,13 @@
12113 } aAuxDb[5], /* Array of all database connections */
12114 *pAuxDb; /* Currently active database connection */
12115 int *aiIndent; /* Array of indents used in MODE_Explain */
12116 int nIndent; /* Size of array aiIndent[] */
12117 int iIndent; /* Index of current op in aiIndent[] */
 
12118 EQPGraph sGraph; /* Information for the graphical EXPLAIN QUERY PLAN */
12119 ExpertInfo expert; /* Valid if previous command was ".expert OPT..." */
12120 };
12121
12122
12123 /* Allowed values for ShellState.autoEQP
12124 */
@@ -12249,10 +12252,31 @@
12249 ShellState *p = (ShellState*)sqlite3_user_data(pCtx);
12250 (void)nVal;
12251 utf8_printf(p->out, "%s\n", sqlite3_value_text(apVal[0]));
12252 sqlite3_result_value(pCtx, apVal[0]);
12253 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12254
12255 /*
12256 ** SQL function: edit(VALUE)
12257 ** edit(VALUE,EDITOR)
12258 **
@@ -12727,10 +12751,53 @@
12727 return FALSE;
12728 }
12729 #endif
12730
12731 #ifndef SQLITE_OMIT_AUTHORIZATION
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12732 /*
12733 ** When the ".auth ON" is set, the following authorizer callback is
12734 ** invoked. It always returns SQLITE_OK.
12735 */
12736 static int shellAuth(
@@ -12769,10 +12836,11 @@
12769 }else{
12770 raw_printf(p->out, "NULL");
12771 }
12772 }
12773 raw_printf(p->out, "\n");
 
12774 return SQLITE_OK;
12775 }
12776 #endif
12777
12778 /*
@@ -14942,10 +15010,11 @@
14942 " markdown Markdown table format",
14943 " quote Escape answers as for SQL",
14944 " table ASCII-art table",
14945 " tabs Tab-separated values",
14946 " tcl TCL list elements",
 
14947 ".nullvalue STRING Use STRING in place of NULL values",
14948 ".once ?OPTIONS? ?FILE? Output for the next SQL command only to FILE",
14949 " If FILE begins with '|' then open as a pipe",
14950 " --bom Put a UTF8 byte-order mark at the beginning",
14951 " -e Send output to the system text editor",
@@ -15656,10 +15725,13 @@
15656 sqlite3_file_control(p->db, "main", SQLITE_FCNTL_SIZE_LIMIT, &p->szMax);
15657 }
15658 }
15659 #endif
15660 }
 
 
 
15661 }
15662
15663 /*
15664 ** Attempt to close the databaes connection. Report errors.
15665 */
@@ -18419,19 +18491,22 @@
18419 goto meta_command_exit;
18420 }
18421 open_db(p, 0);
18422 if( booleanValue(azArg[1]) ){
18423 sqlite3_set_authorizer(p->db, shellAuth, p);
 
 
18424 }else{
18425 sqlite3_set_authorizer(p->db, 0, 0);
18426 }
18427 }else
18428 #endif
18429
18430 #if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
18431 if( c=='a' && strncmp(azArg[0], "archive", n)==0 ){
18432 open_db(p, 0);
 
18433 rc = arDotCommand(p, 0, azArg, nArg);
18434 }else
18435 #endif
18436
18437 if( (c=='b' && n>=3 && strncmp(azArg[0], "backup", n)==0)
@@ -18442,10 +18517,11 @@
18442 sqlite3 *pDest;
18443 sqlite3_backup *pBackup;
18444 int j;
18445 int bAsync = 0;
18446 const char *zVfs = 0;
 
18447 for(j=1; j<nArg; j++){
18448 const char *z = azArg[j];
18449 if( z[0]=='-' ){
18450 if( z[1]=='-' ) z++;
18451 if( strcmp(z, "-append")==0 ){
@@ -18530,10 +18606,11 @@
18530 if( c=='b' && n>=3 && strncmp(azArg[0], "breakpoint", n)==0 ){
18531 test_breakpoint();
18532 }else
18533
18534 if( c=='c' && strcmp(azArg[0],"cd")==0 ){
 
18535 if( nArg==2 ){
18536 #if defined(_WIN32) || defined(WIN32)
18537 wchar_t *z = sqlite3_win32_utf8_to_unicode(azArg[1]);
18538 rc = !SetCurrentDirectoryW(z);
18539 sqlite3_free(z);
@@ -18583,10 +18660,11 @@
18583 }
18584 sqlite3_free(zRes);
18585 }else
18586
18587 if( c=='c' && strncmp(azArg[0], "clone", n)==0 ){
 
18588 if( nArg==2 ){
18589 tryToClone(p, azArg[1]);
18590 }else{
18591 raw_printf(stderr, "Usage: .clone FILENAME\n");
18592 rc = 1;
@@ -19144,10 +19222,11 @@
19144 char *(SQLITE_CDECL *xRead)(ImportCtx*); /* Func to read one value */
19145 int eVerbose = 0; /* Larger for more console output */
19146 int nSkip = 0; /* Initial lines to skip */
19147 int useOutputMode = 1; /* Use output mode to determine separators */
19148
 
19149 memset(&sCtx, 0, sizeof(sCtx));
19150 if( p->mode==MODE_Ascii ){
19151 xRead = ascii_read_one_field;
19152 }else{
19153 xRead = csv_read_one_field;
@@ -19595,10 +19674,11 @@
19595
19596 #ifndef SQLITE_OMIT_LOAD_EXTENSION
19597 if( c=='l' && strncmp(azArg[0], "load", n)==0 ){
19598 const char *zFile, *zProc;
19599 char *zErrMsg = 0;
 
19600 if( nArg<2 ){
19601 raw_printf(stderr, "Usage: .load FILE ?ENTRYPOINT?\n");
19602 rc = 1;
19603 goto meta_command_exit;
19604 }
@@ -19613,10 +19693,11 @@
19613 }
19614 }else
19615 #endif
19616
19617 if( c=='l' && strncmp(azArg[0], "log", n)==0 ){
 
19618 if( nArg!=2 ){
19619 raw_printf(stderr, "Usage: .log FILENAME\n");
19620 rc = 1;
19621 }else{
19622 const char *zFile = azArg[1];
@@ -19682,10 +19763,23 @@
19682 "quote table tabs tcl\n");
19683 rc = 1;
19684 }
19685 p->cMode = p->mode;
19686 }else
 
 
 
 
 
 
 
 
 
 
 
 
 
19687
19688 if( c=='n' && strncmp(azArg[0], "nullvalue", n)==0 ){
19689 if( nArg==2 ){
19690 sqlite3_snprintf(sizeof(p->nullValue), p->nullValue,
19691 "%.*s", (int)ArraySize(p->nullValue)-1, azArg[1]);
@@ -19774,11 +19868,18 @@
19774 zNewFilename = sqlite3_mprintf("%s", z);
19775 }
19776 }
19777 /* If a filename is specified, try to open it first */
19778 if( zNewFilename || p->openMode==SHELL_OPEN_HEXDB ){
19779 if( newFlag ) shellDeleteFile(zNewFilename);
 
 
 
 
 
 
 
19780 p->pAuxDb->zDbFilename = zNewFilename;
19781 open_db(p, OPEN_DB_KEEPALIVE);
19782 if( p->db==0 ){
19783 utf8_printf(stderr, "Error: cannot open '%s'\n", zNewFilename);
19784 sqlite3_free(zNewFilename);
@@ -19802,10 +19903,11 @@
19802 int i;
19803 int eMode = 0;
19804 int bBOM = 0;
19805 int bOnce = 0; /* 0: .output, 1: .once, 2: .excel */
19806
 
19807 if( c=='e' ){
19808 eMode = 'x';
19809 bOnce = 2;
19810 }else if( strncmp(azArg[0],"once",n)==0 ){
19811 bOnce = 1;
@@ -20074,10 +20176,11 @@
20074 }else
20075
20076 if( c=='r' && n>=3 && strncmp(azArg[0], "read", n)==0 ){
20077 FILE *inSaved = p->in;
20078 int savedLineno = p->lineno;
 
20079 if( nArg!=2 ){
20080 raw_printf(stderr, "Usage: .read FILE\n");
20081 rc = 1;
20082 goto meta_command_exit;
20083 }
@@ -20112,10 +20215,11 @@
20112 const char *zDb;
20113 sqlite3 *pSrc;
20114 sqlite3_backup *pBackup;
20115 int nTimeout = 0;
20116
 
20117 if( nArg==2 ){
20118 zSrcFile = azArg[1];
20119 zDb = "main";
20120 }else if( nArg==3 ){
20121 zSrcFile = azArg[2];
@@ -20361,10 +20465,11 @@
20361 ** .session patchset FILE
20362 ** Write a changeset or patchset into a file. The file is overwritten.
20363 */
20364 if( strcmp(azCmd[0],"changeset")==0 || strcmp(azCmd[0],"patchset")==0 ){
20365 FILE *out = 0;
 
20366 if( nCmd!=2 ) goto session_syntax_error;
20367 if( pSession->p==0 ) goto session_not_open;
20368 out = fopen(azCmd[1], "wb");
20369 if( out==0 ){
20370 utf8_printf(stderr, "ERROR: cannot open \"%s\" for writing\n",
@@ -20775,10 +20880,11 @@
20775 if( c=='s'
20776 && (strncmp(azArg[0], "shell", n)==0 || strncmp(azArg[0],"system",n)==0)
20777 ){
20778 char *zCmd;
20779 int i, x;
 
20780 if( nArg<2 ){
20781 raw_printf(stderr, "Usage: .system COMMAND\n");
20782 rc = 1;
20783 goto meta_command_exit;
20784 }
@@ -21446,10 +21552,11 @@
21446 meta_command_exit:
21447 if( p->outCount ){
21448 p->outCount--;
21449 if( p->outCount==0 ) output_reset(p);
21450 }
 
21451 return rc;
21452 }
21453
21454 /*
21455 ** Return TRUE if a semicolon occurs anywhere in the first N characters
@@ -21643,10 +21750,11 @@
21643 output_reset(p);
21644 p->outCount = 0;
21645 }else{
21646 clearTempFile(p);
21647 }
 
21648 }else if( nSql && _all_whitespace(zSql) ){
21649 if( ShellHasFlag(p, SHFLG_Echo) ) printf("%s\n", zSql);
21650 nSql = 0;
21651 }
21652 }
@@ -21809,14 +21917,16 @@
21809 #ifdef SQLITE_ENABLE_MULTIPLEX
21810 " -multiplex enable the multiplexor VFS\n"
21811 #endif
21812 " -newline SEP set output row separator. Default: '\\n'\n"
21813 " -nofollow refuse to open symbolic links to database files\n"
 
21814 " -nullvalue TEXT set text string for NULL values. Default ''\n"
21815 " -pagecache SIZE N use N slots of SZ bytes each for page cache memory\n"
21816 " -quote set output mode to 'quote'\n"
21817 " -readonly open the database read-only\n"
 
21818 " -separator SEP set output column separator. Default: '|'\n"
21819 #ifdef SQLITE_ENABLE_SORTER_REFERENCES
21820 " -sorterref SIZE sorter references threshold size\n"
21821 #endif
21822 " -stats print memory stats before each finalize\n"
@@ -22098,10 +22208,18 @@
22098 if( sz<0 ) sz = 0;
22099 n = (int)integerValue(cmdline_option_value(argc,argv,++i));
22100 if( n<0 ) n = 0;
22101 sqlite3_config(SQLITE_CONFIG_LOOKASIDE, sz, n);
22102 if( sz*n==0 ) data.shellFlgs &= ~SHFLG_Lookaside;
 
 
 
 
 
 
 
 
22103 #ifdef SQLITE_ENABLE_VFSTRACE
22104 }else if( strcmp(z,"-vfstrace")==0 ){
22105 extern int vfstrace_register(
22106 const char *zTraceName,
22107 const char *zOldVfsName,
@@ -22150,10 +22268,15 @@
22150 #endif
22151 }else if( strcmp(z, "-memtrace")==0 ){
22152 sqlite3MemTraceActivate(stderr);
22153 }else if( strcmp(z,"-bail")==0 ){
22154 bail_on_error = 1;
 
 
 
 
 
22155 }
22156 }
22157 verify_uninitialized();
22158
22159
@@ -22310,10 +22433,14 @@
22310 i++;
22311 }else if( strcmp(z,"-pagecache")==0 ){
22312 i+=2;
22313 }else if( strcmp(z,"-lookaside")==0 ){
22314 i+=2;
 
 
 
 
22315 }else if( strcmp(z,"-mmap")==0 ){
22316 i++;
22317 }else if( strcmp(z,"-memtrace")==0 ){
22318 i++;
22319 #ifdef SQLITE_ENABLE_SORTER_REFERENCES
@@ -22368,10 +22495,12 @@
22368 arDotCommand(&data, 1, argv+i, argc-i);
22369 }
22370 readStdin = 0;
22371 break;
22372 #endif
 
 
22373 }else{
22374 utf8_printf(stderr,"%s: Error: unknown option: %s\n", Argv0, z);
22375 raw_printf(stderr,"Use -help for a list of options.\n");
22376 return 1;
22377 }
@@ -22470,10 +22599,11 @@
22470 #if !SQLITE_SHELL_IS_UTF8
22471 for(i=0; i<argcToFree; i++) free(argvToFree[i]);
22472 free(argvToFree);
22473 #endif
22474 free(data.colWidth);
 
22475 /* Clear the global data structure so that valgrind will detect memory
22476 ** leaks */
22477 memset(&data, 0, sizeof(data));
22478 return rc;
22479 }
22480
--- src/shell.c
+++ src/shell.c
@@ -12062,10 +12062,12 @@
12062 u8 scanstatsOn; /* True to display scan stats before each finalize */
12063 u8 openMode; /* SHELL_OPEN_NORMAL, _APPENDVFS, or _ZIPFILE */
12064 u8 doXdgOpen; /* Invoke start/open/xdg-open in output_reset() */
12065 u8 nEqpLevel; /* Depth of the EQP output graph */
12066 u8 eTraceType; /* SHELL_TRACE_* value for type of trace */
12067 u8 bSafeMode; /* True to prohibit unsafe operations */
12068 u8 bSafeModePersist; /* The long-term value of bSafeMode */
12069 unsigned statsOn; /* True to display memory stats before each finalize */
12070 unsigned mEqpLines; /* Mask of veritical lines in the EQP output graph */
12071 int outCount; /* Revert to stdout when reaching zero */
12072 int cnt; /* Number of records displayed so far */
12073 int lineno; /* Line number of last line read from in */
@@ -12113,12 +12115,13 @@
12115 } aAuxDb[5], /* Array of all database connections */
12116 *pAuxDb; /* Currently active database connection */
12117 int *aiIndent; /* Array of indents used in MODE_Explain */
12118 int nIndent; /* Size of array aiIndent[] */
12119 int iIndent; /* Index of current op in aiIndent[] */
12120 char *zNonce; /* Nonce for temporary safe-mode excapes */
12121 EQPGraph sGraph; /* Information for the graphical EXPLAIN QUERY PLAN */
12122 ExpertInfo expert; /* Valid if previous command was ".expert OPT..." */
12123 };
12124
12125
12126 /* Allowed values for ShellState.autoEQP
12127 */
@@ -12249,10 +12252,31 @@
12252 ShellState *p = (ShellState*)sqlite3_user_data(pCtx);
12253 (void)nVal;
12254 utf8_printf(p->out, "%s\n", sqlite3_value_text(apVal[0]));
12255 sqlite3_result_value(pCtx, apVal[0]);
12256 }
12257
12258 /*
12259 ** If in safe mode, print an error message described by the arguments
12260 ** and exit immediately.
12261 */
12262 static void failIfSafeMode(
12263 ShellState *p,
12264 const char *zErrMsg,
12265 ...
12266 ){
12267 if( p->bSafeMode ){
12268 va_list ap;
12269 char *zMsg;
12270 va_start(ap, zErrMsg);
12271 zMsg = sqlite3_vmprintf(zErrMsg, ap);
12272 va_end(ap);
12273 raw_printf(stderr, "line %d: ", p->lineno);
12274 utf8_printf(stderr, "%s\n", zMsg);
12275 exit(1);
12276 }
12277 }
12278
12279 /*
12280 ** SQL function: edit(VALUE)
12281 ** edit(VALUE,EDITOR)
12282 **
@@ -12727,10 +12751,53 @@
12751 return FALSE;
12752 }
12753 #endif
12754
12755 #ifndef SQLITE_OMIT_AUTHORIZATION
12756 /*
12757 ** This authorizer runs in safe mode.
12758 */
12759 static int safeModeAuth(
12760 void *pClientData,
12761 int op,
12762 const char *zA1,
12763 const char *zA2,
12764 const char *zA3,
12765 const char *zA4
12766 ){
12767 ShellState *p = (ShellState*)pClientData;
12768 static const char *azProhibitedFunctions[] = {
12769 "edit",
12770 "fts3_tokenizer",
12771 "load_extension",
12772 "readfile",
12773 "writefile",
12774 "zipfile",
12775 "zipfile_cds",
12776 };
12777 UNUSED_PARAMETER(zA2);
12778 UNUSED_PARAMETER(zA3);
12779 UNUSED_PARAMETER(zA4);
12780 switch( op ){
12781 case SQLITE_ATTACH: {
12782 failIfSafeMode(p, "cannot run ATTACH in safe mode");
12783 break;
12784 }
12785 case SQLITE_FUNCTION: {
12786 int i;
12787 for(i=0; i<ArraySize(azProhibitedFunctions); i++){
12788 if( sqlite3_stricmp(zA1, azProhibitedFunctions[i])==0 ){
12789 failIfSafeMode(p, "cannot use the %s() function in safe mode",
12790 azProhibitedFunctions[i]);
12791 }
12792 }
12793 break;
12794 }
12795 }
12796 return SQLITE_OK;
12797 }
12798
12799 /*
12800 ** When the ".auth ON" is set, the following authorizer callback is
12801 ** invoked. It always returns SQLITE_OK.
12802 */
12803 static int shellAuth(
@@ -12769,10 +12836,11 @@
12836 }else{
12837 raw_printf(p->out, "NULL");
12838 }
12839 }
12840 raw_printf(p->out, "\n");
12841 if( p->bSafeMode ) (void)safeModeAuth(pClientData, op, zA1, zA2, zA3, zA4);
12842 return SQLITE_OK;
12843 }
12844 #endif
12845
12846 /*
@@ -14942,10 +15010,11 @@
15010 " markdown Markdown table format",
15011 " quote Escape answers as for SQL",
15012 " table ASCII-art table",
15013 " tabs Tab-separated values",
15014 " tcl TCL list elements",
15015 ".nonce STRING Disable safe mode for one command if the nonce matches",
15016 ".nullvalue STRING Use STRING in place of NULL values",
15017 ".once ?OPTIONS? ?FILE? Output for the next SQL command only to FILE",
15018 " If FILE begins with '|' then open as a pipe",
15019 " --bom Put a UTF8 byte-order mark at the beginning",
15020 " -e Send output to the system text editor",
@@ -15656,10 +15725,13 @@
15725 sqlite3_file_control(p->db, "main", SQLITE_FCNTL_SIZE_LIMIT, &p->szMax);
15726 }
15727 }
15728 #endif
15729 }
15730 if( p->bSafeModePersist && p->db!=0 ){
15731 sqlite3_set_authorizer(p->db, safeModeAuth, p);
15732 }
15733 }
15734
15735 /*
15736 ** Attempt to close the databaes connection. Report errors.
15737 */
@@ -18419,19 +18491,22 @@
18491 goto meta_command_exit;
18492 }
18493 open_db(p, 0);
18494 if( booleanValue(azArg[1]) ){
18495 sqlite3_set_authorizer(p->db, shellAuth, p);
18496 }else if( p->bSafeModePersist ){
18497 sqlite3_set_authorizer(p->db, safeModeAuth, p);
18498 }else{
18499 sqlite3_set_authorizer(p->db, 0, 0);
18500 }
18501 }else
18502 #endif
18503
18504 #if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
18505 if( c=='a' && strncmp(azArg[0], "archive", n)==0 ){
18506 open_db(p, 0);
18507 failIfSafeMode(p, "cannot run .archive in safe mode");
18508 rc = arDotCommand(p, 0, azArg, nArg);
18509 }else
18510 #endif
18511
18512 if( (c=='b' && n>=3 && strncmp(azArg[0], "backup", n)==0)
@@ -18442,10 +18517,11 @@
18517 sqlite3 *pDest;
18518 sqlite3_backup *pBackup;
18519 int j;
18520 int bAsync = 0;
18521 const char *zVfs = 0;
18522 failIfSafeMode(p, "cannot run .%s in safe mode", azArg[0]);
18523 for(j=1; j<nArg; j++){
18524 const char *z = azArg[j];
18525 if( z[0]=='-' ){
18526 if( z[1]=='-' ) z++;
18527 if( strcmp(z, "-append")==0 ){
@@ -18530,10 +18606,11 @@
18606 if( c=='b' && n>=3 && strncmp(azArg[0], "breakpoint", n)==0 ){
18607 test_breakpoint();
18608 }else
18609
18610 if( c=='c' && strcmp(azArg[0],"cd")==0 ){
18611 failIfSafeMode(p, "cannot run .cd in safe mode");
18612 if( nArg==2 ){
18613 #if defined(_WIN32) || defined(WIN32)
18614 wchar_t *z = sqlite3_win32_utf8_to_unicode(azArg[1]);
18615 rc = !SetCurrentDirectoryW(z);
18616 sqlite3_free(z);
@@ -18583,10 +18660,11 @@
18660 }
18661 sqlite3_free(zRes);
18662 }else
18663
18664 if( c=='c' && strncmp(azArg[0], "clone", n)==0 ){
18665 failIfSafeMode(p, "cannot run .clone in safe mode");
18666 if( nArg==2 ){
18667 tryToClone(p, azArg[1]);
18668 }else{
18669 raw_printf(stderr, "Usage: .clone FILENAME\n");
18670 rc = 1;
@@ -19144,10 +19222,11 @@
19222 char *(SQLITE_CDECL *xRead)(ImportCtx*); /* Func to read one value */
19223 int eVerbose = 0; /* Larger for more console output */
19224 int nSkip = 0; /* Initial lines to skip */
19225 int useOutputMode = 1; /* Use output mode to determine separators */
19226
19227 failIfSafeMode(p, "cannot run .import in safe mode");
19228 memset(&sCtx, 0, sizeof(sCtx));
19229 if( p->mode==MODE_Ascii ){
19230 xRead = ascii_read_one_field;
19231 }else{
19232 xRead = csv_read_one_field;
@@ -19595,10 +19674,11 @@
19674
19675 #ifndef SQLITE_OMIT_LOAD_EXTENSION
19676 if( c=='l' && strncmp(azArg[0], "load", n)==0 ){
19677 const char *zFile, *zProc;
19678 char *zErrMsg = 0;
19679 failIfSafeMode(p, "cannot run .load in safe mode");
19680 if( nArg<2 ){
19681 raw_printf(stderr, "Usage: .load FILE ?ENTRYPOINT?\n");
19682 rc = 1;
19683 goto meta_command_exit;
19684 }
@@ -19613,10 +19693,11 @@
19693 }
19694 }else
19695 #endif
19696
19697 if( c=='l' && strncmp(azArg[0], "log", n)==0 ){
19698 failIfSafeMode(p, "cannot run .log in safe mode");
19699 if( nArg!=2 ){
19700 raw_printf(stderr, "Usage: .log FILENAME\n");
19701 rc = 1;
19702 }else{
19703 const char *zFile = azArg[1];
@@ -19682,10 +19763,23 @@
19763 "quote table tabs tcl\n");
19764 rc = 1;
19765 }
19766 p->cMode = p->mode;
19767 }else
19768
19769 if( c=='n' && strcmp(azArg[0], "nonce")==0 ){
19770 if( nArg!=2 ){
19771 raw_printf(stderr, "Usage: .nonce NONCE\n");
19772 rc = 1;
19773 }else if( p->zNonce==0 || strcmp(azArg[1],p->zNonce)!=0 ){
19774 raw_printf(stderr, "line %d: incorrect nonce: \"%s\"\n", p->lineno, azArg[1]);
19775 exit(1);
19776 }
19777 p->bSafeMode = 0;
19778 return 0; /* Return immediately to bypass the safe mode reset
19779 ** at the end of this procedure */
19780 }else
19781
19782 if( c=='n' && strncmp(azArg[0], "nullvalue", n)==0 ){
19783 if( nArg==2 ){
19784 sqlite3_snprintf(sizeof(p->nullValue), p->nullValue,
19785 "%.*s", (int)ArraySize(p->nullValue)-1, azArg[1]);
@@ -19774,11 +19868,18 @@
19868 zNewFilename = sqlite3_mprintf("%s", z);
19869 }
19870 }
19871 /* If a filename is specified, try to open it first */
19872 if( zNewFilename || p->openMode==SHELL_OPEN_HEXDB ){
19873 if( newFlag && !p->bSafeMode ) shellDeleteFile(zNewFilename);
19874 if( p->bSafeMode
19875 && p->openMode!=SHELL_OPEN_HEXDB
19876 && zNewFilename
19877 && strcmp(zNewFilename,":memory:")!=0
19878 ){
19879 failIfSafeMode(p, "cannot open disk-based database files in safe mode");
19880 }
19881 p->pAuxDb->zDbFilename = zNewFilename;
19882 open_db(p, OPEN_DB_KEEPALIVE);
19883 if( p->db==0 ){
19884 utf8_printf(stderr, "Error: cannot open '%s'\n", zNewFilename);
19885 sqlite3_free(zNewFilename);
@@ -19802,10 +19903,11 @@
19903 int i;
19904 int eMode = 0;
19905 int bBOM = 0;
19906 int bOnce = 0; /* 0: .output, 1: .once, 2: .excel */
19907
19908 failIfSafeMode(p, "cannot run .%s in safe mode", azArg[0]);
19909 if( c=='e' ){
19910 eMode = 'x';
19911 bOnce = 2;
19912 }else if( strncmp(azArg[0],"once",n)==0 ){
19913 bOnce = 1;
@@ -20074,10 +20176,11 @@
20176 }else
20177
20178 if( c=='r' && n>=3 && strncmp(azArg[0], "read", n)==0 ){
20179 FILE *inSaved = p->in;
20180 int savedLineno = p->lineno;
20181 failIfSafeMode(p, "cannot run .read in safe mode");
20182 if( nArg!=2 ){
20183 raw_printf(stderr, "Usage: .read FILE\n");
20184 rc = 1;
20185 goto meta_command_exit;
20186 }
@@ -20112,10 +20215,11 @@
20215 const char *zDb;
20216 sqlite3 *pSrc;
20217 sqlite3_backup *pBackup;
20218 int nTimeout = 0;
20219
20220 failIfSafeMode(p, "cannot run .restore in safe mode");
20221 if( nArg==2 ){
20222 zSrcFile = azArg[1];
20223 zDb = "main";
20224 }else if( nArg==3 ){
20225 zSrcFile = azArg[2];
@@ -20361,10 +20465,11 @@
20465 ** .session patchset FILE
20466 ** Write a changeset or patchset into a file. The file is overwritten.
20467 */
20468 if( strcmp(azCmd[0],"changeset")==0 || strcmp(azCmd[0],"patchset")==0 ){
20469 FILE *out = 0;
20470 failIfSafeMode(p, "cannot run \".session %s\" in safe mode", azCmd[0]);
20471 if( nCmd!=2 ) goto session_syntax_error;
20472 if( pSession->p==0 ) goto session_not_open;
20473 out = fopen(azCmd[1], "wb");
20474 if( out==0 ){
20475 utf8_printf(stderr, "ERROR: cannot open \"%s\" for writing\n",
@@ -20775,10 +20880,11 @@
20880 if( c=='s'
20881 && (strncmp(azArg[0], "shell", n)==0 || strncmp(azArg[0],"system",n)==0)
20882 ){
20883 char *zCmd;
20884 int i, x;
20885 failIfSafeMode(p, "cannot run .%s in safe mode", azArg[0]);
20886 if( nArg<2 ){
20887 raw_printf(stderr, "Usage: .system COMMAND\n");
20888 rc = 1;
20889 goto meta_command_exit;
20890 }
@@ -21446,10 +21552,11 @@
21552 meta_command_exit:
21553 if( p->outCount ){
21554 p->outCount--;
21555 if( p->outCount==0 ) output_reset(p);
21556 }
21557 p->bSafeMode = p->bSafeModePersist;
21558 return rc;
21559 }
21560
21561 /*
21562 ** Return TRUE if a semicolon occurs anywhere in the first N characters
@@ -21643,10 +21750,11 @@
21750 output_reset(p);
21751 p->outCount = 0;
21752 }else{
21753 clearTempFile(p);
21754 }
21755 p->bSafeMode = p->bSafeModePersist;
21756 }else if( nSql && _all_whitespace(zSql) ){
21757 if( ShellHasFlag(p, SHFLG_Echo) ) printf("%s\n", zSql);
21758 nSql = 0;
21759 }
21760 }
@@ -21809,14 +21917,16 @@
21917 #ifdef SQLITE_ENABLE_MULTIPLEX
21918 " -multiplex enable the multiplexor VFS\n"
21919 #endif
21920 " -newline SEP set output row separator. Default: '\\n'\n"
21921 " -nofollow refuse to open symbolic links to database files\n"
21922 " -nonce STRING set the safe-mode escape nonce\n"
21923 " -nullvalue TEXT set text string for NULL values. Default ''\n"
21924 " -pagecache SIZE N use N slots of SZ bytes each for page cache memory\n"
21925 " -quote set output mode to 'quote'\n"
21926 " -readonly open the database read-only\n"
21927 " -safe enable safe-mode\n"
21928 " -separator SEP set output column separator. Default: '|'\n"
21929 #ifdef SQLITE_ENABLE_SORTER_REFERENCES
21930 " -sorterref SIZE sorter references threshold size\n"
21931 #endif
21932 " -stats print memory stats before each finalize\n"
@@ -22098,10 +22208,18 @@
22208 if( sz<0 ) sz = 0;
22209 n = (int)integerValue(cmdline_option_value(argc,argv,++i));
22210 if( n<0 ) n = 0;
22211 sqlite3_config(SQLITE_CONFIG_LOOKASIDE, sz, n);
22212 if( sz*n==0 ) data.shellFlgs &= ~SHFLG_Lookaside;
22213 }else if( strcmp(z,"-threadsafe")==0 ){
22214 int n;
22215 n = (int)integerValue(cmdline_option_value(argc,argv,++i));
22216 switch( n ){
22217 case 0: sqlite3_config(SQLITE_CONFIG_SINGLETHREAD); break;
22218 case 2: sqlite3_config(SQLITE_CONFIG_MULTITHREAD); break;
22219 default: sqlite3_config(SQLITE_CONFIG_SERIALIZED); break;
22220 }
22221 #ifdef SQLITE_ENABLE_VFSTRACE
22222 }else if( strcmp(z,"-vfstrace")==0 ){
22223 extern int vfstrace_register(
22224 const char *zTraceName,
22225 const char *zOldVfsName,
@@ -22150,10 +22268,15 @@
22268 #endif
22269 }else if( strcmp(z, "-memtrace")==0 ){
22270 sqlite3MemTraceActivate(stderr);
22271 }else if( strcmp(z,"-bail")==0 ){
22272 bail_on_error = 1;
22273 }else if( strcmp(z,"-nonce")==0 ){
22274 free(data.zNonce);
22275 data.zNonce = strdup(argv[++i]);
22276 }else if( strcmp(z,"-safe")==0 ){
22277 /* no-op - catch this on the second pass */
22278 }
22279 }
22280 verify_uninitialized();
22281
22282
@@ -22310,10 +22433,14 @@
22433 i++;
22434 }else if( strcmp(z,"-pagecache")==0 ){
22435 i+=2;
22436 }else if( strcmp(z,"-lookaside")==0 ){
22437 i+=2;
22438 }else if( strcmp(z,"-threadsafe")==0 ){
22439 i+=2;
22440 }else if( strcmp(z,"-nonce")==0 ){
22441 i += 2;
22442 }else if( strcmp(z,"-mmap")==0 ){
22443 i++;
22444 }else if( strcmp(z,"-memtrace")==0 ){
22445 i++;
22446 #ifdef SQLITE_ENABLE_SORTER_REFERENCES
@@ -22368,10 +22495,12 @@
22495 arDotCommand(&data, 1, argv+i, argc-i);
22496 }
22497 readStdin = 0;
22498 break;
22499 #endif
22500 }else if( strcmp(z,"-safe")==0 ){
22501 data.bSafeMode = data.bSafeModePersist = 1;
22502 }else{
22503 utf8_printf(stderr,"%s: Error: unknown option: %s\n", Argv0, z);
22504 raw_printf(stderr,"Use -help for a list of options.\n");
22505 return 1;
22506 }
@@ -22470,10 +22599,11 @@
22599 #if !SQLITE_SHELL_IS_UTF8
22600 for(i=0; i<argcToFree; i++) free(argvToFree[i]);
22601 free(argvToFree);
22602 #endif
22603 free(data.colWidth);
22604 free(data.zNonce);
22605 /* Clear the global data structure so that valgrind will detect memory
22606 ** leaks */
22607 memset(&data, 0, sizeof(data));
22608 return rc;
22609 }
22610
+3771 -3445
--- src/sqlite3.c
+++ src/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.37.0"
456456
#define SQLITE_VERSION_NUMBER 3037000
457
-#define SQLITE_SOURCE_ID "2021-08-06 20:17:39 087b8b41c6ed76b55c11315e7e95679d67590be20ae21108b593d00bb7d1c57a"
457
+#define SQLITE_SOURCE_ID "2021-09-06 11:44:19 b3cfe23bec0b95ca673802526704200e2396df715fdded72aa71addd7f47e0e1"
458458
459459
/*
460460
** CAPI3REF: Run-Time Library Version Numbers
461461
** KEYWORDS: sqlite3_version sqlite3_sourceid
462462
**
@@ -865,10 +865,11 @@
865865
#define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8))
866866
#define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8))
867867
#define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
868868
#define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8))
869869
#define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8))
870
+#define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
870871
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
871872
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
872873
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
873874
#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
874875
#define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
@@ -13446,12 +13447,12 @@
1344613447
#define TK_EXISTS 20
1344713448
#define TK_TEMP 21
1344813449
#define TK_LP 22
1344913450
#define TK_RP 23
1345013451
#define TK_AS 24
13451
-#define TK_WITHOUT 25
13452
-#define TK_COMMA 26
13452
+#define TK_COMMA 25
13453
+#define TK_WITHOUT 26
1345313454
#define TK_ABORT 27
1345413455
#define TK_ACTION 28
1345513456
#define TK_AFTER 29
1345613457
#define TK_ANALYZE 30
1345713458
#define TK_ASC 31
@@ -15109,91 +15110,91 @@
1510915110
#define OP_Jump 16 /* jump */
1511015111
#define OP_Once 17 /* jump */
1511115112
#define OP_If 18 /* jump */
1511215113
#define OP_Not 19 /* same as TK_NOT, synopsis: r[P2]= !r[P1] */
1511315114
#define OP_IfNot 20 /* jump */
15114
-#define OP_IfNullRow 21 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */
15115
-#define OP_SeekLT 22 /* jump, synopsis: key=r[P3@P4] */
15116
-#define OP_SeekLE 23 /* jump, synopsis: key=r[P3@P4] */
15117
-#define OP_SeekGE 24 /* jump, synopsis: key=r[P3@P4] */
15118
-#define OP_SeekGT 25 /* jump, synopsis: key=r[P3@P4] */
15119
-#define OP_IfNotOpen 26 /* jump, synopsis: if( !csr[P1] ) goto P2 */
15120
-#define OP_IfNoHope 27 /* jump, synopsis: key=r[P3@P4] */
15121
-#define OP_NoConflict 28 /* jump, synopsis: key=r[P3@P4] */
15122
-#define OP_NotFound 29 /* jump, synopsis: key=r[P3@P4] */
15123
-#define OP_Found 30 /* jump, synopsis: key=r[P3@P4] */
15124
-#define OP_SeekRowid 31 /* jump, synopsis: intkey=r[P3] */
15125
-#define OP_NotExists 32 /* jump, synopsis: intkey=r[P3] */
15126
-#define OP_Last 33 /* jump */
15127
-#define OP_IfSmaller 34 /* jump */
15128
-#define OP_SorterSort 35 /* jump */
15129
-#define OP_Sort 36 /* jump */
15130
-#define OP_Rewind 37 /* jump */
15131
-#define OP_IdxLE 38 /* jump, synopsis: key=r[P3@P4] */
15132
-#define OP_IdxGT 39 /* jump, synopsis: key=r[P3@P4] */
15133
-#define OP_IdxLT 40 /* jump, synopsis: key=r[P3@P4] */
15134
-#define OP_IdxGE 41 /* jump, synopsis: key=r[P3@P4] */
15135
-#define OP_RowSetRead 42 /* jump, synopsis: r[P3]=rowset(P1) */
15115
+#define OP_IsNullOrType 21 /* jump, synopsis: if typeof(r[P1]) IN (P3,5) goto P2 */
15116
+#define OP_IfNullRow 22 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */
15117
+#define OP_SeekLT 23 /* jump, synopsis: key=r[P3@P4] */
15118
+#define OP_SeekLE 24 /* jump, synopsis: key=r[P3@P4] */
15119
+#define OP_SeekGE 25 /* jump, synopsis: key=r[P3@P4] */
15120
+#define OP_SeekGT 26 /* jump, synopsis: key=r[P3@P4] */
15121
+#define OP_IfNotOpen 27 /* jump, synopsis: if( !csr[P1] ) goto P2 */
15122
+#define OP_IfNoHope 28 /* jump, synopsis: key=r[P3@P4] */
15123
+#define OP_NoConflict 29 /* jump, synopsis: key=r[P3@P4] */
15124
+#define OP_NotFound 30 /* jump, synopsis: key=r[P3@P4] */
15125
+#define OP_Found 31 /* jump, synopsis: key=r[P3@P4] */
15126
+#define OP_SeekRowid 32 /* jump, synopsis: intkey=r[P3] */
15127
+#define OP_NotExists 33 /* jump, synopsis: intkey=r[P3] */
15128
+#define OP_Last 34 /* jump */
15129
+#define OP_IfSmaller 35 /* jump */
15130
+#define OP_SorterSort 36 /* jump */
15131
+#define OP_Sort 37 /* jump */
15132
+#define OP_Rewind 38 /* jump */
15133
+#define OP_IdxLE 39 /* jump, synopsis: key=r[P3@P4] */
15134
+#define OP_IdxGT 40 /* jump, synopsis: key=r[P3@P4] */
15135
+#define OP_IdxLT 41 /* jump, synopsis: key=r[P3@P4] */
15136
+#define OP_IdxGE 42 /* jump, synopsis: key=r[P3@P4] */
1513615137
#define OP_Or 43 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */
1513715138
#define OP_And 44 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */
15138
-#define OP_RowSetTest 45 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
15139
-#define OP_Program 46 /* jump */
15140
-#define OP_FkIfZero 47 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
15141
-#define OP_IfPos 48 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
15142
-#define OP_IfNotZero 49 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
15139
+#define OP_RowSetRead 45 /* jump, synopsis: r[P3]=rowset(P1) */
15140
+#define OP_RowSetTest 46 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
15141
+#define OP_Program 47 /* jump */
15142
+#define OP_FkIfZero 48 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
15143
+#define OP_IfPos 49 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
1514315144
#define OP_IsNull 50 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
1514415145
#define OP_NotNull 51 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
1514515146
#define OP_Ne 52 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */
1514615147
#define OP_Eq 53 /* jump, same as TK_EQ, synopsis: IF r[P3]==r[P1] */
1514715148
#define OP_Gt 54 /* jump, same as TK_GT, synopsis: IF r[P3]>r[P1] */
1514815149
#define OP_Le 55 /* jump, same as TK_LE, synopsis: IF r[P3]<=r[P1] */
1514915150
#define OP_Lt 56 /* jump, same as TK_LT, synopsis: IF r[P3]<r[P1] */
1515015151
#define OP_Ge 57 /* jump, same as TK_GE, synopsis: IF r[P3]>=r[P1] */
1515115152
#define OP_ElseEq 58 /* jump, same as TK_ESCAPE */
15152
-#define OP_DecrJumpZero 59 /* jump, synopsis: if (--r[P1])==0 goto P2 */
15153
-#define OP_IncrVacuum 60 /* jump */
15154
-#define OP_VNext 61 /* jump */
15155
-#define OP_Init 62 /* jump, synopsis: Start at P2 */
15156
-#define OP_PureFunc 63 /* synopsis: r[P3]=func(r[P2@NP]) */
15157
-#define OP_Function 64 /* synopsis: r[P3]=func(r[P2@NP]) */
15158
-#define OP_Return 65
15159
-#define OP_EndCoroutine 66
15160
-#define OP_HaltIfNull 67 /* synopsis: if r[P3]=null halt */
15161
-#define OP_Halt 68
15162
-#define OP_Integer 69 /* synopsis: r[P2]=P1 */
15163
-#define OP_Int64 70 /* synopsis: r[P2]=P4 */
15164
-#define OP_String 71 /* synopsis: r[P2]='P4' (len=P1) */
15165
-#define OP_Null 72 /* synopsis: r[P2..P3]=NULL */
15166
-#define OP_SoftNull 73 /* synopsis: r[P1]=NULL */
15167
-#define OP_Blob 74 /* synopsis: r[P2]=P4 (len=P1) */
15168
-#define OP_Variable 75 /* synopsis: r[P2]=parameter(P1,P4) */
15169
-#define OP_Move 76 /* synopsis: r[P2@P3]=r[P1@P3] */
15170
-#define OP_Copy 77 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
15171
-#define OP_SCopy 78 /* synopsis: r[P2]=r[P1] */
15172
-#define OP_IntCopy 79 /* synopsis: r[P2]=r[P1] */
15173
-#define OP_ChngCntRow 80 /* synopsis: output=r[P1] */
15174
-#define OP_ResultRow 81 /* synopsis: output=r[P1@P2] */
15175
-#define OP_CollSeq 82
15176
-#define OP_AddImm 83 /* synopsis: r[P1]=r[P1]+P2 */
15177
-#define OP_RealAffinity 84
15178
-#define OP_Cast 85 /* synopsis: affinity(r[P1]) */
15179
-#define OP_Permutation 86
15180
-#define OP_Compare 87 /* synopsis: r[P1@P3] <-> r[P2@P3] */
15181
-#define OP_IsTrue 88 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
15182
-#define OP_ZeroOrNull 89 /* synopsis: r[P2] = 0 OR NULL */
15183
-#define OP_Offset 90 /* synopsis: r[P3] = sqlite_offset(P1) */
15184
-#define OP_Column 91 /* synopsis: r[P3]=PX */
15185
-#define OP_Affinity 92 /* synopsis: affinity(r[P1@P2]) */
15186
-#define OP_MakeRecord 93 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
15187
-#define OP_Count 94 /* synopsis: r[P2]=count() */
15188
-#define OP_ReadCookie 95
15189
-#define OP_SetCookie 96
15190
-#define OP_ReopenIdx 97 /* synopsis: root=P2 iDb=P3 */
15191
-#define OP_OpenRead 98 /* synopsis: root=P2 iDb=P3 */
15192
-#define OP_OpenWrite 99 /* synopsis: root=P2 iDb=P3 */
15193
-#define OP_OpenDup 100
15194
-#define OP_OpenAutoindex 101 /* synopsis: nColumn=P2 */
15153
+#define OP_IfNotZero 59 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
15154
+#define OP_DecrJumpZero 60 /* jump, synopsis: if (--r[P1])==0 goto P2 */
15155
+#define OP_IncrVacuum 61 /* jump */
15156
+#define OP_VNext 62 /* jump */
15157
+#define OP_Init 63 /* jump, synopsis: Start at P2 */
15158
+#define OP_PureFunc 64 /* synopsis: r[P3]=func(r[P2@NP]) */
15159
+#define OP_Function 65 /* synopsis: r[P3]=func(r[P2@NP]) */
15160
+#define OP_Return 66
15161
+#define OP_EndCoroutine 67
15162
+#define OP_HaltIfNull 68 /* synopsis: if r[P3]=null halt */
15163
+#define OP_Halt 69
15164
+#define OP_Integer 70 /* synopsis: r[P2]=P1 */
15165
+#define OP_Int64 71 /* synopsis: r[P2]=P4 */
15166
+#define OP_String 72 /* synopsis: r[P2]='P4' (len=P1) */
15167
+#define OP_Null 73 /* synopsis: r[P2..P3]=NULL */
15168
+#define OP_SoftNull 74 /* synopsis: r[P1]=NULL */
15169
+#define OP_Blob 75 /* synopsis: r[P2]=P4 (len=P1) */
15170
+#define OP_Variable 76 /* synopsis: r[P2]=parameter(P1,P4) */
15171
+#define OP_Move 77 /* synopsis: r[P2@P3]=r[P1@P3] */
15172
+#define OP_Copy 78 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
15173
+#define OP_SCopy 79 /* synopsis: r[P2]=r[P1] */
15174
+#define OP_IntCopy 80 /* synopsis: r[P2]=r[P1] */
15175
+#define OP_ChngCntRow 81 /* synopsis: output=r[P1] */
15176
+#define OP_ResultRow 82 /* synopsis: output=r[P1@P2] */
15177
+#define OP_CollSeq 83
15178
+#define OP_AddImm 84 /* synopsis: r[P1]=r[P1]+P2 */
15179
+#define OP_RealAffinity 85
15180
+#define OP_Cast 86 /* synopsis: affinity(r[P1]) */
15181
+#define OP_Permutation 87
15182
+#define OP_Compare 88 /* synopsis: r[P1@P3] <-> r[P2@P3] */
15183
+#define OP_IsTrue 89 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
15184
+#define OP_ZeroOrNull 90 /* synopsis: r[P2] = 0 OR NULL */
15185
+#define OP_Offset 91 /* synopsis: r[P3] = sqlite_offset(P1) */
15186
+#define OP_Column 92 /* synopsis: r[P3]=PX */
15187
+#define OP_TypeCheck 93 /* synopsis: typecheck(r[P1@P2]) */
15188
+#define OP_Affinity 94 /* synopsis: affinity(r[P1@P2]) */
15189
+#define OP_MakeRecord 95 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
15190
+#define OP_Count 96 /* synopsis: r[P2]=count() */
15191
+#define OP_ReadCookie 97
15192
+#define OP_SetCookie 98
15193
+#define OP_ReopenIdx 99 /* synopsis: root=P2 iDb=P3 */
15194
+#define OP_OpenRead 100 /* synopsis: root=P2 iDb=P3 */
15195
+#define OP_OpenWrite 101 /* synopsis: root=P2 iDb=P3 */
1519515196
#define OP_BitAnd 102 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
1519615197
#define OP_BitOr 103 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
1519715198
#define OP_ShiftLeft 104 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
1519815199
#define OP_ShiftRight 105 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
1519915200
#define OP_Add 106 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
@@ -15200,78 +15201,80 @@
1520015201
#define OP_Subtract 107 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
1520115202
#define OP_Multiply 108 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
1520215203
#define OP_Divide 109 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
1520315204
#define OP_Remainder 110 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
1520415205
#define OP_Concat 111 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
15205
-#define OP_OpenEphemeral 112 /* synopsis: nColumn=P2 */
15206
+#define OP_OpenDup 112
1520615207
#define OP_BitNot 113 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
15207
-#define OP_SorterOpen 114
15208
-#define OP_SequenceTest 115 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
15208
+#define OP_OpenAutoindex 114 /* synopsis: nColumn=P2 */
15209
+#define OP_OpenEphemeral 115 /* synopsis: nColumn=P2 */
1520915210
#define OP_String8 116 /* same as TK_STRING, synopsis: r[P2]='P4' */
15210
-#define OP_OpenPseudo 117 /* synopsis: P3 columns in r[P2] */
15211
-#define OP_Close 118
15212
-#define OP_ColumnsUsed 119
15213
-#define OP_SeekScan 120 /* synopsis: Scan-ahead up to P1 rows */
15214
-#define OP_SeekHit 121 /* synopsis: set P2<=seekHit<=P3 */
15215
-#define OP_Sequence 122 /* synopsis: r[P2]=cursor[P1].ctr++ */
15216
-#define OP_NewRowid 123 /* synopsis: r[P2]=rowid */
15217
-#define OP_Insert 124 /* synopsis: intkey=r[P3] data=r[P2] */
15218
-#define OP_RowCell 125
15219
-#define OP_Delete 126
15220
-#define OP_ResetCount 127
15221
-#define OP_SorterCompare 128 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
15222
-#define OP_SorterData 129 /* synopsis: r[P2]=data */
15223
-#define OP_RowData 130 /* synopsis: r[P2]=data */
15224
-#define OP_Rowid 131 /* synopsis: r[P2]=rowid */
15225
-#define OP_NullRow 132
15226
-#define OP_SeekEnd 133
15227
-#define OP_IdxInsert 134 /* synopsis: key=r[P2] */
15228
-#define OP_SorterInsert 135 /* synopsis: key=r[P2] */
15229
-#define OP_IdxDelete 136 /* synopsis: key=r[P2@P3] */
15230
-#define OP_DeferredSeek 137 /* synopsis: Move P3 to P1.rowid if needed */
15231
-#define OP_IdxRowid 138 /* synopsis: r[P2]=rowid */
15232
-#define OP_FinishSeek 139
15233
-#define OP_Destroy 140
15234
-#define OP_Clear 141
15235
-#define OP_ResetSorter 142
15236
-#define OP_CreateBtree 143 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
15237
-#define OP_SqlExec 144
15238
-#define OP_ParseSchema 145
15239
-#define OP_LoadAnalysis 146
15240
-#define OP_DropTable 147
15241
-#define OP_DropIndex 148
15242
-#define OP_DropTrigger 149
15243
-#define OP_IntegrityCk 150
15244
-#define OP_RowSetAdd 151 /* synopsis: rowset(P1)=r[P2] */
15211
+#define OP_SorterOpen 117
15212
+#define OP_SequenceTest 118 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
15213
+#define OP_OpenPseudo 119 /* synopsis: P3 columns in r[P2] */
15214
+#define OP_Close 120
15215
+#define OP_ColumnsUsed 121
15216
+#define OP_SeekScan 122 /* synopsis: Scan-ahead up to P1 rows */
15217
+#define OP_SeekHit 123 /* synopsis: set P2<=seekHit<=P3 */
15218
+#define OP_Sequence 124 /* synopsis: r[P2]=cursor[P1].ctr++ */
15219
+#define OP_NewRowid 125 /* synopsis: r[P2]=rowid */
15220
+#define OP_Insert 126 /* synopsis: intkey=r[P3] data=r[P2] */
15221
+#define OP_RowCell 127
15222
+#define OP_Delete 128
15223
+#define OP_ResetCount 129
15224
+#define OP_SorterCompare 130 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
15225
+#define OP_SorterData 131 /* synopsis: r[P2]=data */
15226
+#define OP_RowData 132 /* synopsis: r[P2]=data */
15227
+#define OP_Rowid 133 /* synopsis: r[P2]=rowid */
15228
+#define OP_NullRow 134
15229
+#define OP_SeekEnd 135
15230
+#define OP_IdxInsert 136 /* synopsis: key=r[P2] */
15231
+#define OP_SorterInsert 137 /* synopsis: key=r[P2] */
15232
+#define OP_IdxDelete 138 /* synopsis: key=r[P2@P3] */
15233
+#define OP_DeferredSeek 139 /* synopsis: Move P3 to P1.rowid if needed */
15234
+#define OP_IdxRowid 140 /* synopsis: r[P2]=rowid */
15235
+#define OP_FinishSeek 141
15236
+#define OP_Destroy 142
15237
+#define OP_Clear 143
15238
+#define OP_ResetSorter 144
15239
+#define OP_CreateBtree 145 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
15240
+#define OP_SqlExec 146
15241
+#define OP_ParseSchema 147
15242
+#define OP_LoadAnalysis 148
15243
+#define OP_DropTable 149
15244
+#define OP_DropIndex 150
15245
+#define OP_DropTrigger 151
1524515246
#define OP_Real 152 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15246
-#define OP_Param 153
15247
-#define OP_FkCounter 154 /* synopsis: fkctr[P1]+=P2 */
15248
-#define OP_MemMax 155 /* synopsis: r[P1]=max(r[P1],r[P2]) */
15249
-#define OP_OffsetLimit 156 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
15250
-#define OP_AggInverse 157 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
15251
-#define OP_AggStep 158 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15252
-#define OP_AggStep1 159 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15253
-#define OP_AggValue 160 /* synopsis: r[P3]=value N=P2 */
15254
-#define OP_AggFinal 161 /* synopsis: accum=r[P1] N=P2 */
15255
-#define OP_Expire 162
15256
-#define OP_CursorLock 163
15257
-#define OP_CursorUnlock 164
15258
-#define OP_TableLock 165 /* synopsis: iDb=P1 root=P2 write=P3 */
15259
-#define OP_VBegin 166
15260
-#define OP_VCreate 167
15261
-#define OP_VDestroy 168
15262
-#define OP_VOpen 169
15263
-#define OP_VColumn 170 /* synopsis: r[P3]=vcolumn(P2) */
15264
-#define OP_VRename 171
15265
-#define OP_Pagecount 172
15266
-#define OP_MaxPgcnt 173
15267
-#define OP_Trace 174
15268
-#define OP_CursorHint 175
15269
-#define OP_ReleaseReg 176 /* synopsis: release r[P1@P2] mask P3 */
15270
-#define OP_Noop 177
15271
-#define OP_Explain 178
15272
-#define OP_Abortable 179
15247
+#define OP_IntegrityCk 153
15248
+#define OP_RowSetAdd 154 /* synopsis: rowset(P1)=r[P2] */
15249
+#define OP_Param 155
15250
+#define OP_FkCounter 156 /* synopsis: fkctr[P1]+=P2 */
15251
+#define OP_MemMax 157 /* synopsis: r[P1]=max(r[P1],r[P2]) */
15252
+#define OP_OffsetLimit 158 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
15253
+#define OP_AggInverse 159 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
15254
+#define OP_AggStep 160 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15255
+#define OP_AggStep1 161 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15256
+#define OP_AggValue 162 /* synopsis: r[P3]=value N=P2 */
15257
+#define OP_AggFinal 163 /* synopsis: accum=r[P1] N=P2 */
15258
+#define OP_Expire 164
15259
+#define OP_CursorLock 165
15260
+#define OP_CursorUnlock 166
15261
+#define OP_TableLock 167 /* synopsis: iDb=P1 root=P2 write=P3 */
15262
+#define OP_VBegin 168
15263
+#define OP_VCreate 169
15264
+#define OP_VDestroy 170
15265
+#define OP_VOpen 171
15266
+#define OP_VColumn 172 /* synopsis: r[P3]=vcolumn(P2) */
15267
+#define OP_VRename 173
15268
+#define OP_Pagecount 174
15269
+#define OP_MaxPgcnt 175
15270
+#define OP_Trace 176
15271
+#define OP_CursorHint 177
15272
+#define OP_ReleaseReg 178 /* synopsis: release r[P1@P2] mask P3 */
15273
+#define OP_Noop 179
15274
+#define OP_Explain 180
15275
+#define OP_Abortable 181
1527315276
1527415277
/* Properties such as "out2" or "jump" that are specified in
1527515278
** comments following the "case" for each opcode in the vdbe.c
1527615279
** are encoded into bitvectors as follows:
1527715280
*/
@@ -15282,39 +15285,39 @@
1528215285
#define OPFLG_OUT2 0x10 /* out2: P2 is an output */
1528315286
#define OPFLG_OUT3 0x20 /* out3: P3 is an output */
1528415287
#define OPFLG_INITIALIZER {\
1528515288
/* 0 */ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x10,\
1528615289
/* 8 */ 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03,\
15287
-/* 16 */ 0x01, 0x01, 0x03, 0x12, 0x03, 0x01, 0x09, 0x09,\
15288
-/* 24 */ 0x09, 0x09, 0x01, 0x09, 0x09, 0x09, 0x09, 0x09,\
15289
-/* 32 */ 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\
15290
-/* 40 */ 0x01, 0x01, 0x23, 0x26, 0x26, 0x0b, 0x01, 0x01,\
15291
-/* 48 */ 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
15292
-/* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, 0x00,\
15293
-/* 64 */ 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10, 0x10,\
15294
-/* 72 */ 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10,\
15295
-/* 80 */ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00,\
15296
-/* 88 */ 0x12, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x10, 0x10,\
15297
-/* 96 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26,\
15290
+/* 16 */ 0x01, 0x01, 0x03, 0x12, 0x03, 0x03, 0x01, 0x09,\
15291
+/* 24 */ 0x09, 0x09, 0x09, 0x01, 0x09, 0x09, 0x09, 0x09,\
15292
+/* 32 */ 0x09, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\
15293
+/* 40 */ 0x01, 0x01, 0x01, 0x26, 0x26, 0x23, 0x0b, 0x01,\
15294
+/* 48 */ 0x01, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
15295
+/* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x01, 0x01, 0x01,\
15296
+/* 64 */ 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10,\
15297
+/* 72 */ 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,\
15298
+/* 80 */ 0x10, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00,\
15299
+/* 88 */ 0x00, 0x12, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x00,\
15300
+/* 96 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26,\
1529815301
/* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
1529915302
/* 112 */ 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\
15300
-/* 120 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,\
15301
-/* 128 */ 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x04, 0x04,\
15302
-/* 136 */ 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10,\
15303
-/* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,\
15304
-/* 152 */ 0x10, 0x10, 0x00, 0x04, 0x1a, 0x00, 0x00, 0x00,\
15303
+/* 120 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
15304
+/* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,\
15305
+/* 136 */ 0x04, 0x04, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00,\
15306
+/* 144 */ 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15307
+/* 152 */ 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x1a, 0x00,\
1530515308
/* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15306
-/* 168 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
15307
-/* 176 */ 0x00, 0x00, 0x00, 0x00,}
15309
+/* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10,\
15310
+/* 176 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}
1530815311
1530915312
/* The resolve3P2Values() routine is able to run faster if it knows
1531015313
** the value of the largest JUMP opcode. The smaller the maximum
1531115314
** JUMP opcode the better, so the mkopcodeh.tcl script that
1531215315
** generated this include file strives to group all JUMP opcodes
1531315316
** together near the beginning of the list.
1531415317
*/
15315
-#define SQLITE_MX_JUMP_OPCODE 62 /* Maximum JUMP opcode */
15318
+#define SQLITE_MX_JUMP_OPCODE 63 /* Maximum JUMP opcode */
1531615319
1531715320
/************** End of opcodes.h *********************************************/
1531815321
/************** Continuing where we left off in vdbe.h ***********************/
1531915322
1532015323
/*
@@ -16387,12 +16390,12 @@
1638716390
u8 vtabOnConflict; /* Value to return for s3_vtab_on_conflict() */
1638816391
u8 isTransactionSavepoint; /* True if the outermost savepoint is a TS */
1638916392
u8 mTrace; /* zero or more SQLITE_TRACE flags */
1639016393
u8 noSharedCache; /* True if no shared-cache backends */
1639116394
u8 nSqlExec; /* Number of pending OP_SqlExec opcodes */
16395
+ u8 eOpenState; /* Current condition of the connection */
1639216396
int nextPagesize; /* Pagesize after VACUUM if >0 */
16393
- u32 magic; /* Magic number for detect library misuse */
1639416397
i64 nChange; /* Value returned by sqlite3_changes() */
1639516398
i64 nTotalChange; /* Value returned by sqlite3_total_changes() */
1639616399
int aLimit[SQLITE_N_LIMIT]; /* Limits */
1639716400
int nMaxSorterMmap; /* Maximum size of regions mapped by sorter */
1639816401
struct sqlite3InitInfo { /* Information used during initialization */
@@ -16615,21 +16618,20 @@
1661516618
** Return true if it OK to factor constant expressions into the initialization
1661616619
** code. The argument is a Parse object for the code generator.
1661716620
*/
1661816621
#define ConstFactorOk(P) ((P)->okConstFactor)
1661916622
16620
-/*
16621
-** Possible values for the sqlite.magic field.
16622
-** The numbers are obtained at random and have no special meaning, other
16623
-** than being distinct from one another.
16623
+/* Possible values for the sqlite3.eOpenState field.
16624
+** The numbers are randomly selected such that a minimum of three bits must
16625
+** change to convert any number to another or to zero
1662416626
*/
16625
-#define SQLITE_MAGIC_OPEN 0xa029a697 /* Database is open */
16626
-#define SQLITE_MAGIC_CLOSED 0x9f3c2d33 /* Database is closed */
16627
-#define SQLITE_MAGIC_SICK 0x4b771290 /* Error and awaiting close */
16628
-#define SQLITE_MAGIC_BUSY 0xf03b7906 /* Database currently in use */
16629
-#define SQLITE_MAGIC_ERROR 0xb5357930 /* An SQLITE_MISUSE error occurred */
16630
-#define SQLITE_MAGIC_ZOMBIE 0x64cffc7f /* Close with last statement close */
16627
+#define SQLITE_STATE_OPEN 0x76 /* Database is open */
16628
+#define SQLITE_STATE_CLOSED 0xce /* Database is closed */
16629
+#define SQLITE_STATE_SICK 0xba /* Error and awaiting close */
16630
+#define SQLITE_STATE_BUSY 0x6d /* Database currently in use */
16631
+#define SQLITE_STATE_ERROR 0xd5 /* An SQLITE_MISUSE error occurred */
16632
+#define SQLITE_STATE_ZOMBIE 0xa7 /* Close with last statement close */
1663116633
1663216634
/*
1663316635
** Each SQL function is defined by an instance of the following
1663416636
** structure. For global built-in functions (ex: substr(), max(), count())
1663516637
** a pointer to this structure is held in the sqlite3BuiltinFunctions object.
@@ -16894,32 +16896,33 @@
1689416896
** set.
1689516897
*/
1689616898
struct Column {
1689716899
char *zCnName; /* Name of this column */
1689816900
unsigned notNull :4; /* An OE_ code for handling a NOT NULL constraint */
16899
- unsigned eType :4; /* One of the standard types */
16901
+ unsigned eCType :4; /* One of the standard types */
1690016902
char affinity; /* One of the SQLITE_AFF_... values */
1690116903
u8 szEst; /* Est size of value in this column. sizeof(INT)==1 */
1690216904
u8 hName; /* Column name hash for faster lookup */
1690316905
u16 iDflt; /* 1-based index of DEFAULT. 0 means "none" */
1690416906
u16 colFlags; /* Boolean properties. See COLFLAG_ defines below */
1690516907
};
1690616908
16907
-/* Allowed values for Column.eType.
16909
+/* Allowed values for Column.eCType.
1690816910
**
1690916911
** Values must match entries in the global constant arrays
1691016912
** sqlite3StdTypeLen[] and sqlite3StdType[]. Each value is one more
1691116913
** than the offset into these arrays for the corresponding name.
1691216914
** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
1691316915
*/
1691416916
#define COLTYPE_CUSTOM 0 /* Type appended to zName */
16915
-#define COLTYPE_BLOB 1
16916
-#define COLTYPE_INT 2
16917
-#define COLTYPE_INTEGER 3
16918
-#define COLTYPE_REAL 4
16919
-#define COLTYPE_TEXT 5
16920
-#define SQLITE_N_STDTYPE 5 /* Number of standard types */
16917
+#define COLTYPE_ANY 1
16918
+#define COLTYPE_BLOB 2
16919
+#define COLTYPE_INT 3
16920
+#define COLTYPE_INTEGER 4
16921
+#define COLTYPE_REAL 5
16922
+#define COLTYPE_TEXT 6
16923
+#define SQLITE_N_STDTYPE 6 /* Number of standard types */
1692116924
1692216925
/* Allowed values for Column.colFlags.
1692316926
**
1692416927
** Constraints:
1692516928
** TF_HasVirtual == COLFLAG_VIRTUAL
@@ -17139,10 +17142,11 @@
1713917142
#define TF_HasNotNull 0x00000800 /* Contains NOT NULL constraints */
1714017143
#define TF_Shadow 0x00001000 /* True for a shadow table */
1714117144
#define TF_HasStat4 0x00002000 /* STAT4 info available for this table */
1714217145
#define TF_Ephemeral 0x00004000 /* An ephemeral table */
1714317146
#define TF_Eponymous 0x00008000 /* An eponymous virtual table */
17147
+#define TF_Strict 0x00010000 /* STRICT mode */
1714417148
1714517149
/*
1714617150
** Allowed values for Table.eTabType
1714717151
*/
1714817152
#define TABTYP_NORM 0 /* Ordinary table */
@@ -19290,11 +19294,11 @@
1929019294
SQLITE_PRIVATE void sqlite3AddPrimaryKey(Parse*, ExprList*, int, int, int);
1929119295
SQLITE_PRIVATE void sqlite3AddCheckConstraint(Parse*, Expr*, const char*, const char*);
1929219296
SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,Expr*,const char*,const char*);
1929319297
SQLITE_PRIVATE void sqlite3AddCollateType(Parse*, Token*);
1929419298
SQLITE_PRIVATE void sqlite3AddGenerated(Parse*,Expr*,Token*);
19295
-SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u8,Select*);
19299
+SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u32,Select*);
1929619300
SQLITE_PRIVATE void sqlite3AddReturning(Parse*,ExprList*);
1929719301
SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*,
1929819302
sqlite3_vfs**,char**,char **);
1929919303
#define sqlite3CodecQueryParameters(A,B,C) 0
1930019304
SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3*,const char*);
@@ -19695,10 +19699,11 @@
1969519699
#ifndef SQLITE_AMALGAMATION
1969619700
SQLITE_PRIVATE const unsigned char sqlite3OpcodeProperty[];
1969719701
SQLITE_PRIVATE const char sqlite3StrBINARY[];
1969819702
SQLITE_PRIVATE const unsigned char sqlite3StdTypeLen[];
1969919703
SQLITE_PRIVATE const char sqlite3StdTypeAffinity[];
19704
+SQLITE_PRIVATE const char sqlite3StdTypeMap[];
1970019705
SQLITE_PRIVATE const char *sqlite3StdType[];
1970119706
SQLITE_PRIVATE const unsigned char sqlite3UpperToLower[];
1970219707
SQLITE_PRIVATE const unsigned char *sqlite3aLTb;
1970319708
SQLITE_PRIVATE const unsigned char *sqlite3aEQb;
1970419709
SQLITE_PRIVATE const unsigned char *sqlite3aGTb;
@@ -21464,20 +21469,42 @@
2146421469
SQLITE_PRIVATE const char sqlite3StrBINARY[] = "BINARY";
2146521470
2146621471
/*
2146721472
** Standard typenames. These names must match the COLTYPE_* definitions.
2146821473
** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
21474
+**
21475
+** sqlite3StdType[] The actual names of the datatypes.
21476
+**
21477
+** sqlite3StdTypeLen[] The length (in bytes) of each entry
21478
+** in sqlite3StdType[].
21479
+**
21480
+** sqlite3StdTypeAffinity[] The affinity associated with each entry
21481
+** in sqlite3StdType[].
21482
+**
21483
+** sqlite3StdTypeMap[] The type value (as returned from
21484
+** sqlite3_column_type() or sqlite3_value_type())
21485
+** for each entry in sqlite3StdType[].
2146921486
*/
21470
-SQLITE_PRIVATE const unsigned char sqlite3StdTypeLen[] = { 4, 3, 7, 4, 4 };
21487
+SQLITE_PRIVATE const unsigned char sqlite3StdTypeLen[] = { 3, 4, 3, 7, 4, 4 };
2147121488
SQLITE_PRIVATE const char sqlite3StdTypeAffinity[] = {
21489
+ SQLITE_AFF_NUMERIC,
2147221490
SQLITE_AFF_BLOB,
2147321491
SQLITE_AFF_INTEGER,
2147421492
SQLITE_AFF_INTEGER,
2147521493
SQLITE_AFF_REAL,
2147621494
SQLITE_AFF_TEXT
21495
+};
21496
+SQLITE_PRIVATE const char sqlite3StdTypeMap[] = {
21497
+ 0,
21498
+ SQLITE_BLOB,
21499
+ SQLITE_INTEGER,
21500
+ SQLITE_INTEGER,
21501
+ SQLITE_FLOAT,
21502
+ SQLITE_TEXT
2147721503
};
2147821504
SQLITE_PRIVATE const char *sqlite3StdType[] = {
21505
+ "ANY",
2147921506
"BLOB",
2148021507
"INT",
2148121508
"INTEGER",
2148221509
"REAL",
2148321510
"TEXT"
@@ -31896,15 +31923,25 @@
3189631923
#endif
3189731924
3189831925
#ifndef SQLITE_OMIT_FLOATING_POINT
3189931926
/*
3190031927
** Return true if the floating point value is Not a Number (NaN).
31928
+**
31929
+** Use the math library isnan() function if compiled with SQLITE_HAVE_ISNAN.
31930
+** Otherwise, we have our own implementation that works on most systems.
3190131931
*/
3190231932
SQLITE_PRIVATE int sqlite3IsNaN(double x){
31933
+ int rc; /* The value return */
31934
+#if !SQLITE_HAVE_ISNAN && !HAVE_ISNAN
3190331935
u64 y;
3190431936
memcpy(&y,&x,sizeof(y));
31905
- return IsNaN(y);
31937
+ rc = IsNaN(y);
31938
+#else
31939
+ rc = isnan(x);
31940
+#endif /* HAVE_ISNAN */
31941
+ testcase( rc );
31942
+ return rc;
3190631943
}
3190731944
#endif /* SQLITE_OMIT_FLOATING_POINT */
3190831945
3190931946
/*
3191031947
** Compute a string length that is limited to what can be stored in
@@ -31927,13 +31964,13 @@
3192731964
** the column name if and only if the COLFLAG_HASTYPE flag is set.
3192831965
*/
3192931966
SQLITE_PRIVATE char *sqlite3ColumnType(Column *pCol, char *zDflt){
3193031967
if( pCol->colFlags & COLFLAG_HASTYPE ){
3193131968
return pCol->zCnName + strlen(pCol->zCnName) + 1;
31932
- }else if( pCol->eType ){
31933
- assert( pCol->eType<=SQLITE_N_STDTYPE );
31934
- return (char*)sqlite3StdType[pCol->eType-1];
31969
+ }else if( pCol->eCType ){
31970
+ assert( pCol->eCType<=SQLITE_N_STDTYPE );
31971
+ return (char*)sqlite3StdType[pCol->eCType-1];
3193531972
}else{
3193631973
return zDflt;
3193731974
}
3193831975
}
3193931976
@@ -33235,17 +33272,17 @@
3323533272
** use. sqlite3SafetyCheckSickOrOk() allows a db pointer that failed to
3323633273
** open properly and is not fit for general use but which can be
3323733274
** used as an argument to sqlite3_errmsg() or sqlite3_close().
3323833275
*/
3323933276
SQLITE_PRIVATE int sqlite3SafetyCheckOk(sqlite3 *db){
33240
- u32 magic;
33277
+ u8 eOpenState;
3324133278
if( db==0 ){
3324233279
logBadConnection("NULL");
3324333280
return 0;
3324433281
}
33245
- magic = db->magic;
33246
- if( magic!=SQLITE_MAGIC_OPEN ){
33282
+ eOpenState = db->eOpenState;
33283
+ if( eOpenState!=SQLITE_STATE_OPEN ){
3324733284
if( sqlite3SafetyCheckSickOrOk(db) ){
3324833285
testcase( sqlite3GlobalConfig.xLog!=0 );
3324933286
logBadConnection("unopened");
3325033287
}
3325133288
return 0;
@@ -33252,15 +33289,15 @@
3325233289
}else{
3325333290
return 1;
3325433291
}
3325533292
}
3325633293
SQLITE_PRIVATE int sqlite3SafetyCheckSickOrOk(sqlite3 *db){
33257
- u32 magic;
33258
- magic = db->magic;
33259
- if( magic!=SQLITE_MAGIC_SICK &&
33260
- magic!=SQLITE_MAGIC_OPEN &&
33261
- magic!=SQLITE_MAGIC_BUSY ){
33294
+ u8 eOpenState;
33295
+ eOpenState = db->eOpenState;
33296
+ if( eOpenState!=SQLITE_STATE_SICK &&
33297
+ eOpenState!=SQLITE_STATE_OPEN &&
33298
+ eOpenState!=SQLITE_STATE_BUSY ){
3326233299
testcase( sqlite3GlobalConfig.xLog!=0 );
3326333300
logBadConnection("invalid");
3326433301
return 0;
3326533302
}else{
3326633303
return 1;
@@ -33875,91 +33912,91 @@
3387533912
/* 16 */ "Jump" OpHelp(""),
3387633913
/* 17 */ "Once" OpHelp(""),
3387733914
/* 18 */ "If" OpHelp(""),
3387833915
/* 19 */ "Not" OpHelp("r[P2]= !r[P1]"),
3387933916
/* 20 */ "IfNot" OpHelp(""),
33880
- /* 21 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"),
33881
- /* 22 */ "SeekLT" OpHelp("key=r[P3@P4]"),
33882
- /* 23 */ "SeekLE" OpHelp("key=r[P3@P4]"),
33883
- /* 24 */ "SeekGE" OpHelp("key=r[P3@P4]"),
33884
- /* 25 */ "SeekGT" OpHelp("key=r[P3@P4]"),
33885
- /* 26 */ "IfNotOpen" OpHelp("if( !csr[P1] ) goto P2"),
33886
- /* 27 */ "IfNoHope" OpHelp("key=r[P3@P4]"),
33887
- /* 28 */ "NoConflict" OpHelp("key=r[P3@P4]"),
33888
- /* 29 */ "NotFound" OpHelp("key=r[P3@P4]"),
33889
- /* 30 */ "Found" OpHelp("key=r[P3@P4]"),
33890
- /* 31 */ "SeekRowid" OpHelp("intkey=r[P3]"),
33891
- /* 32 */ "NotExists" OpHelp("intkey=r[P3]"),
33892
- /* 33 */ "Last" OpHelp(""),
33893
- /* 34 */ "IfSmaller" OpHelp(""),
33894
- /* 35 */ "SorterSort" OpHelp(""),
33895
- /* 36 */ "Sort" OpHelp(""),
33896
- /* 37 */ "Rewind" OpHelp(""),
33897
- /* 38 */ "IdxLE" OpHelp("key=r[P3@P4]"),
33898
- /* 39 */ "IdxGT" OpHelp("key=r[P3@P4]"),
33899
- /* 40 */ "IdxLT" OpHelp("key=r[P3@P4]"),
33900
- /* 41 */ "IdxGE" OpHelp("key=r[P3@P4]"),
33901
- /* 42 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
33917
+ /* 21 */ "IsNullOrType" OpHelp("if typeof(r[P1]) IN (P3,5) goto P2"),
33918
+ /* 22 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"),
33919
+ /* 23 */ "SeekLT" OpHelp("key=r[P3@P4]"),
33920
+ /* 24 */ "SeekLE" OpHelp("key=r[P3@P4]"),
33921
+ /* 25 */ "SeekGE" OpHelp("key=r[P3@P4]"),
33922
+ /* 26 */ "SeekGT" OpHelp("key=r[P3@P4]"),
33923
+ /* 27 */ "IfNotOpen" OpHelp("if( !csr[P1] ) goto P2"),
33924
+ /* 28 */ "IfNoHope" OpHelp("key=r[P3@P4]"),
33925
+ /* 29 */ "NoConflict" OpHelp("key=r[P3@P4]"),
33926
+ /* 30 */ "NotFound" OpHelp("key=r[P3@P4]"),
33927
+ /* 31 */ "Found" OpHelp("key=r[P3@P4]"),
33928
+ /* 32 */ "SeekRowid" OpHelp("intkey=r[P3]"),
33929
+ /* 33 */ "NotExists" OpHelp("intkey=r[P3]"),
33930
+ /* 34 */ "Last" OpHelp(""),
33931
+ /* 35 */ "IfSmaller" OpHelp(""),
33932
+ /* 36 */ "SorterSort" OpHelp(""),
33933
+ /* 37 */ "Sort" OpHelp(""),
33934
+ /* 38 */ "Rewind" OpHelp(""),
33935
+ /* 39 */ "IdxLE" OpHelp("key=r[P3@P4]"),
33936
+ /* 40 */ "IdxGT" OpHelp("key=r[P3@P4]"),
33937
+ /* 41 */ "IdxLT" OpHelp("key=r[P3@P4]"),
33938
+ /* 42 */ "IdxGE" OpHelp("key=r[P3@P4]"),
3390233939
/* 43 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
3390333940
/* 44 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
33904
- /* 45 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
33905
- /* 46 */ "Program" OpHelp(""),
33906
- /* 47 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
33907
- /* 48 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
33908
- /* 49 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
33941
+ /* 45 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
33942
+ /* 46 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
33943
+ /* 47 */ "Program" OpHelp(""),
33944
+ /* 48 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
33945
+ /* 49 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
3390933946
/* 50 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
3391033947
/* 51 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
3391133948
/* 52 */ "Ne" OpHelp("IF r[P3]!=r[P1]"),
3391233949
/* 53 */ "Eq" OpHelp("IF r[P3]==r[P1]"),
3391333950
/* 54 */ "Gt" OpHelp("IF r[P3]>r[P1]"),
3391433951
/* 55 */ "Le" OpHelp("IF r[P3]<=r[P1]"),
3391533952
/* 56 */ "Lt" OpHelp("IF r[P3]<r[P1]"),
3391633953
/* 57 */ "Ge" OpHelp("IF r[P3]>=r[P1]"),
3391733954
/* 58 */ "ElseEq" OpHelp(""),
33918
- /* 59 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
33919
- /* 60 */ "IncrVacuum" OpHelp(""),
33920
- /* 61 */ "VNext" OpHelp(""),
33921
- /* 62 */ "Init" OpHelp("Start at P2"),
33922
- /* 63 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
33923
- /* 64 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
33924
- /* 65 */ "Return" OpHelp(""),
33925
- /* 66 */ "EndCoroutine" OpHelp(""),
33926
- /* 67 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
33927
- /* 68 */ "Halt" OpHelp(""),
33928
- /* 69 */ "Integer" OpHelp("r[P2]=P1"),
33929
- /* 70 */ "Int64" OpHelp("r[P2]=P4"),
33930
- /* 71 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
33931
- /* 72 */ "Null" OpHelp("r[P2..P3]=NULL"),
33932
- /* 73 */ "SoftNull" OpHelp("r[P1]=NULL"),
33933
- /* 74 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
33934
- /* 75 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
33935
- /* 76 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
33936
- /* 77 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
33937
- /* 78 */ "SCopy" OpHelp("r[P2]=r[P1]"),
33938
- /* 79 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
33939
- /* 80 */ "ChngCntRow" OpHelp("output=r[P1]"),
33940
- /* 81 */ "ResultRow" OpHelp("output=r[P1@P2]"),
33941
- /* 82 */ "CollSeq" OpHelp(""),
33942
- /* 83 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
33943
- /* 84 */ "RealAffinity" OpHelp(""),
33944
- /* 85 */ "Cast" OpHelp("affinity(r[P1])"),
33945
- /* 86 */ "Permutation" OpHelp(""),
33946
- /* 87 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
33947
- /* 88 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
33948
- /* 89 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
33949
- /* 90 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
33950
- /* 91 */ "Column" OpHelp("r[P3]=PX"),
33951
- /* 92 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
33952
- /* 93 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
33953
- /* 94 */ "Count" OpHelp("r[P2]=count()"),
33954
- /* 95 */ "ReadCookie" OpHelp(""),
33955
- /* 96 */ "SetCookie" OpHelp(""),
33956
- /* 97 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
33957
- /* 98 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
33958
- /* 99 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
33959
- /* 100 */ "OpenDup" OpHelp(""),
33960
- /* 101 */ "OpenAutoindex" OpHelp("nColumn=P2"),
33955
+ /* 59 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
33956
+ /* 60 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
33957
+ /* 61 */ "IncrVacuum" OpHelp(""),
33958
+ /* 62 */ "VNext" OpHelp(""),
33959
+ /* 63 */ "Init" OpHelp("Start at P2"),
33960
+ /* 64 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
33961
+ /* 65 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
33962
+ /* 66 */ "Return" OpHelp(""),
33963
+ /* 67 */ "EndCoroutine" OpHelp(""),
33964
+ /* 68 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
33965
+ /* 69 */ "Halt" OpHelp(""),
33966
+ /* 70 */ "Integer" OpHelp("r[P2]=P1"),
33967
+ /* 71 */ "Int64" OpHelp("r[P2]=P4"),
33968
+ /* 72 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
33969
+ /* 73 */ "Null" OpHelp("r[P2..P3]=NULL"),
33970
+ /* 74 */ "SoftNull" OpHelp("r[P1]=NULL"),
33971
+ /* 75 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
33972
+ /* 76 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
33973
+ /* 77 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
33974
+ /* 78 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
33975
+ /* 79 */ "SCopy" OpHelp("r[P2]=r[P1]"),
33976
+ /* 80 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
33977
+ /* 81 */ "ChngCntRow" OpHelp("output=r[P1]"),
33978
+ /* 82 */ "ResultRow" OpHelp("output=r[P1@P2]"),
33979
+ /* 83 */ "CollSeq" OpHelp(""),
33980
+ /* 84 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
33981
+ /* 85 */ "RealAffinity" OpHelp(""),
33982
+ /* 86 */ "Cast" OpHelp("affinity(r[P1])"),
33983
+ /* 87 */ "Permutation" OpHelp(""),
33984
+ /* 88 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
33985
+ /* 89 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
33986
+ /* 90 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
33987
+ /* 91 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
33988
+ /* 92 */ "Column" OpHelp("r[P3]=PX"),
33989
+ /* 93 */ "TypeCheck" OpHelp("typecheck(r[P1@P2])"),
33990
+ /* 94 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
33991
+ /* 95 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
33992
+ /* 96 */ "Count" OpHelp("r[P2]=count()"),
33993
+ /* 97 */ "ReadCookie" OpHelp(""),
33994
+ /* 98 */ "SetCookie" OpHelp(""),
33995
+ /* 99 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
33996
+ /* 100 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
33997
+ /* 101 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
3396133998
/* 102 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
3396233999
/* 103 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
3396334000
/* 104 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
3396434001
/* 105 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
3396534002
/* 106 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -33966,78 +34003,80 @@
3396634003
/* 107 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
3396734004
/* 108 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
3396834005
/* 109 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
3396934006
/* 110 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
3397034007
/* 111 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
33971
- /* 112 */ "OpenEphemeral" OpHelp("nColumn=P2"),
34008
+ /* 112 */ "OpenDup" OpHelp(""),
3397234009
/* 113 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
33973
- /* 114 */ "SorterOpen" OpHelp(""),
33974
- /* 115 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
34010
+ /* 114 */ "OpenAutoindex" OpHelp("nColumn=P2"),
34011
+ /* 115 */ "OpenEphemeral" OpHelp("nColumn=P2"),
3397534012
/* 116 */ "String8" OpHelp("r[P2]='P4'"),
33976
- /* 117 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
33977
- /* 118 */ "Close" OpHelp(""),
33978
- /* 119 */ "ColumnsUsed" OpHelp(""),
33979
- /* 120 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
33980
- /* 121 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
33981
- /* 122 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
33982
- /* 123 */ "NewRowid" OpHelp("r[P2]=rowid"),
33983
- /* 124 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
33984
- /* 125 */ "RowCell" OpHelp(""),
33985
- /* 126 */ "Delete" OpHelp(""),
33986
- /* 127 */ "ResetCount" OpHelp(""),
33987
- /* 128 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
33988
- /* 129 */ "SorterData" OpHelp("r[P2]=data"),
33989
- /* 130 */ "RowData" OpHelp("r[P2]=data"),
33990
- /* 131 */ "Rowid" OpHelp("r[P2]=rowid"),
33991
- /* 132 */ "NullRow" OpHelp(""),
33992
- /* 133 */ "SeekEnd" OpHelp(""),
33993
- /* 134 */ "IdxInsert" OpHelp("key=r[P2]"),
33994
- /* 135 */ "SorterInsert" OpHelp("key=r[P2]"),
33995
- /* 136 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
33996
- /* 137 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
33997
- /* 138 */ "IdxRowid" OpHelp("r[P2]=rowid"),
33998
- /* 139 */ "FinishSeek" OpHelp(""),
33999
- /* 140 */ "Destroy" OpHelp(""),
34000
- /* 141 */ "Clear" OpHelp(""),
34001
- /* 142 */ "ResetSorter" OpHelp(""),
34002
- /* 143 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
34003
- /* 144 */ "SqlExec" OpHelp(""),
34004
- /* 145 */ "ParseSchema" OpHelp(""),
34005
- /* 146 */ "LoadAnalysis" OpHelp(""),
34006
- /* 147 */ "DropTable" OpHelp(""),
34007
- /* 148 */ "DropIndex" OpHelp(""),
34008
- /* 149 */ "DropTrigger" OpHelp(""),
34009
- /* 150 */ "IntegrityCk" OpHelp(""),
34010
- /* 151 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
34013
+ /* 117 */ "SorterOpen" OpHelp(""),
34014
+ /* 118 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
34015
+ /* 119 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
34016
+ /* 120 */ "Close" OpHelp(""),
34017
+ /* 121 */ "ColumnsUsed" OpHelp(""),
34018
+ /* 122 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
34019
+ /* 123 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
34020
+ /* 124 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
34021
+ /* 125 */ "NewRowid" OpHelp("r[P2]=rowid"),
34022
+ /* 126 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
34023
+ /* 127 */ "RowCell" OpHelp(""),
34024
+ /* 128 */ "Delete" OpHelp(""),
34025
+ /* 129 */ "ResetCount" OpHelp(""),
34026
+ /* 130 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
34027
+ /* 131 */ "SorterData" OpHelp("r[P2]=data"),
34028
+ /* 132 */ "RowData" OpHelp("r[P2]=data"),
34029
+ /* 133 */ "Rowid" OpHelp("r[P2]=rowid"),
34030
+ /* 134 */ "NullRow" OpHelp(""),
34031
+ /* 135 */ "SeekEnd" OpHelp(""),
34032
+ /* 136 */ "IdxInsert" OpHelp("key=r[P2]"),
34033
+ /* 137 */ "SorterInsert" OpHelp("key=r[P2]"),
34034
+ /* 138 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
34035
+ /* 139 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
34036
+ /* 140 */ "IdxRowid" OpHelp("r[P2]=rowid"),
34037
+ /* 141 */ "FinishSeek" OpHelp(""),
34038
+ /* 142 */ "Destroy" OpHelp(""),
34039
+ /* 143 */ "Clear" OpHelp(""),
34040
+ /* 144 */ "ResetSorter" OpHelp(""),
34041
+ /* 145 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
34042
+ /* 146 */ "SqlExec" OpHelp(""),
34043
+ /* 147 */ "ParseSchema" OpHelp(""),
34044
+ /* 148 */ "LoadAnalysis" OpHelp(""),
34045
+ /* 149 */ "DropTable" OpHelp(""),
34046
+ /* 150 */ "DropIndex" OpHelp(""),
34047
+ /* 151 */ "DropTrigger" OpHelp(""),
3401134048
/* 152 */ "Real" OpHelp("r[P2]=P4"),
34012
- /* 153 */ "Param" OpHelp(""),
34013
- /* 154 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
34014
- /* 155 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
34015
- /* 156 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
34016
- /* 157 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
34017
- /* 158 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
34018
- /* 159 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
34019
- /* 160 */ "AggValue" OpHelp("r[P3]=value N=P2"),
34020
- /* 161 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
34021
- /* 162 */ "Expire" OpHelp(""),
34022
- /* 163 */ "CursorLock" OpHelp(""),
34023
- /* 164 */ "CursorUnlock" OpHelp(""),
34024
- /* 165 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
34025
- /* 166 */ "VBegin" OpHelp(""),
34026
- /* 167 */ "VCreate" OpHelp(""),
34027
- /* 168 */ "VDestroy" OpHelp(""),
34028
- /* 169 */ "VOpen" OpHelp(""),
34029
- /* 170 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
34030
- /* 171 */ "VRename" OpHelp(""),
34031
- /* 172 */ "Pagecount" OpHelp(""),
34032
- /* 173 */ "MaxPgcnt" OpHelp(""),
34033
- /* 174 */ "Trace" OpHelp(""),
34034
- /* 175 */ "CursorHint" OpHelp(""),
34035
- /* 176 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
34036
- /* 177 */ "Noop" OpHelp(""),
34037
- /* 178 */ "Explain" OpHelp(""),
34038
- /* 179 */ "Abortable" OpHelp(""),
34049
+ /* 153 */ "IntegrityCk" OpHelp(""),
34050
+ /* 154 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
34051
+ /* 155 */ "Param" OpHelp(""),
34052
+ /* 156 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
34053
+ /* 157 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
34054
+ /* 158 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
34055
+ /* 159 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
34056
+ /* 160 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
34057
+ /* 161 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
34058
+ /* 162 */ "AggValue" OpHelp("r[P3]=value N=P2"),
34059
+ /* 163 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
34060
+ /* 164 */ "Expire" OpHelp(""),
34061
+ /* 165 */ "CursorLock" OpHelp(""),
34062
+ /* 166 */ "CursorUnlock" OpHelp(""),
34063
+ /* 167 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
34064
+ /* 168 */ "VBegin" OpHelp(""),
34065
+ /* 169 */ "VCreate" OpHelp(""),
34066
+ /* 170 */ "VDestroy" OpHelp(""),
34067
+ /* 171 */ "VOpen" OpHelp(""),
34068
+ /* 172 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
34069
+ /* 173 */ "VRename" OpHelp(""),
34070
+ /* 174 */ "Pagecount" OpHelp(""),
34071
+ /* 175 */ "MaxPgcnt" OpHelp(""),
34072
+ /* 176 */ "Trace" OpHelp(""),
34073
+ /* 177 */ "CursorHint" OpHelp(""),
34074
+ /* 178 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
34075
+ /* 179 */ "Noop" OpHelp(""),
34076
+ /* 180 */ "Explain" OpHelp(""),
34077
+ /* 181 */ "Abortable" OpHelp(""),
3403934078
};
3404034079
return azName[i];
3404134080
}
3404234081
#endif
3404334082
@@ -49846,15 +49885,18 @@
4984649885
if( p->szCache>=0 ){
4984749886
/* IMPLEMENTATION-OF: R-42059-47211 If the argument N is positive then the
4984849887
** suggested cache size is set to N. */
4984949888
return p->szCache;
4985049889
}else{
49890
+ i64 n;
4985149891
/* IMPLEMANTATION-OF: R-59858-46238 If the argument N is negative, then the
4985249892
** number of cache pages is adjusted to be a number of pages that would
4985349893
** use approximately abs(N*1024) bytes of memory based on the current
4985449894
** page size. */
49855
- return (int)((-1024*(i64)p->szCache)/(p->szPage+p->szExtra));
49895
+ n = ((-1024*(i64)p->szCache)/(p->szPage+p->szExtra));
49896
+ if( n>1000000000 ) n = 1000000000;
49897
+ return (int)n;
4985649898
}
4985749899
}
4985849900
4985949901
/*************************************************** General Interfaces ******
4986049902
**
@@ -51305,16 +51347,22 @@
5130551347
**
5130651348
** Configure the cache_size limit for a cache.
5130751349
*/
5130851350
static void pcache1Cachesize(sqlite3_pcache *p, int nMax){
5130951351
PCache1 *pCache = (PCache1 *)p;
51352
+ u32 n;
51353
+ assert( nMax>=0 );
5131051354
if( pCache->bPurgeable ){
5131151355
PGroup *pGroup = pCache->pGroup;
5131251356
pcache1EnterMutex(pGroup);
51313
- pGroup->nMaxPage += (nMax - pCache->nMax);
51357
+ n = (u32)nMax;
51358
+ if( n > 0x7fff0000 - pGroup->nMaxPage + pCache->nMax ){
51359
+ n = 0x7fff0000 - pGroup->nMaxPage + pCache->nMax;
51360
+ }
51361
+ pGroup->nMaxPage += (n - pCache->nMax);
5131451362
pGroup->mxPinned = pGroup->nMaxPage + 10 - pGroup->nMinPage;
51315
- pCache->nMax = nMax;
51363
+ pCache->nMax = n;
5131651364
pCache->n90pct = pCache->nMax*9/10;
5131751365
pcache1EnforceMaxPage(pCache);
5131851366
pcache1LeaveMutex(pGroup);
5131951367
}
5132051368
}
@@ -51326,11 +51374,11 @@
5132651374
*/
5132751375
static void pcache1Shrink(sqlite3_pcache *p){
5132851376
PCache1 *pCache = (PCache1*)p;
5132951377
if( pCache->bPurgeable ){
5133051378
PGroup *pGroup = pCache->pGroup;
51331
- int savedMaxPage;
51379
+ unsigned int savedMaxPage;
5133251380
pcache1EnterMutex(pGroup);
5133351381
savedMaxPage = pGroup->nMaxPage;
5133451382
pGroup->nMaxPage = 0;
5133551383
pcache1EnforceMaxPage(pCache);
5133651384
pGroup->nMaxPage = savedMaxPage;
@@ -68480,11 +68528,11 @@
6848068528
}
6848168529
if( page1[19]>2 ){
6848268530
goto page1_init_failed;
6848368531
}
6848468532
68485
- /* If the write version is set to 2, this database should be accessed
68533
+ /* If the read version is set to 2, this database should be accessed
6848668534
** in WAL mode. If the log is not already open, open it now. Then
6848768535
** return SQLITE_OK and return without populating BtShared.pPage1.
6848868536
** The caller detects this and calls this function again. This is
6848968537
** required as the version of page 1 currently in the page1 buffer
6849068538
** may not be the latest version - there may be a newer one in the log
@@ -81883,13 +81931,13 @@
8188381931
/*
8188481932
** This routine is called the when a VDBE tries to halt. If the VDBE
8188581933
** has made changes and is in autocommit mode, then commit those
8188681934
** changes. If a rollback is needed, then do the rollback.
8188781935
**
81888
-** This routine is the only way to move the state of a VM from
81889
-** SQLITE_MAGIC_RUN to SQLITE_MAGIC_HALT. It is harmless to
81890
-** call this on a VM that is in the SQLITE_MAGIC_HALT state.
81936
+** This routine is the only way to move the sqlite3eOpenState of a VM from
81937
+** SQLITE_STATE_RUN to SQLITE_STATE_HALT. It is harmless to
81938
+** call this on a VM that is in the SQLITE_STATE_HALT state.
8189181939
**
8189281940
** Return an error code. If the commit could not complete because of
8189381941
** lock contention, return SQLITE_BUSY. If SQLITE_BUSY is returned, it
8189481942
** means the close did not happen and needs to be repeated.
8189581943
*/
@@ -87051,10 +87099,23 @@
8705187099
pOut->flags = MEM_Int;
8705287100
return pOut;
8705387101
}
8705487102
}
8705587103
87104
+/*
87105
+** Return the symbolic name for the data type of a pMem
87106
+*/
87107
+static const char *vdbeMemTypeName(Mem *pMem){
87108
+ static const char *azTypes[] = {
87109
+ /* SQLITE_INTEGER */ "INT",
87110
+ /* SQLITE_FLOAT */ "REAL",
87111
+ /* SQLITE_TEXT */ "TEXT",
87112
+ /* SQLITE_BLOB */ "BLOB",
87113
+ /* SQLITE_NULL */ "NULL"
87114
+ };
87115
+ return azTypes[sqlite3_value_type(pMem)-1];
87116
+}
8705687117
8705787118
/*
8705887119
** Execute as much of a VDBE program as we can.
8705987120
** This is the core of sqlite3_step().
8706087121
*/
@@ -88881,10 +88942,26 @@
8888188942
if( (pIn1->flags & MEM_Null)!=0 ){
8888288943
goto jump_to_p2;
8888388944
}
8888488945
break;
8888588946
}
88947
+
88948
+/* Opcode: IsNullOrType P1 P2 P3 * *
88949
+** Synopsis: if typeof(r[P1]) IN (P3,5) goto P2
88950
+**
88951
+** Jump to P2 if the value in register P1 is NULL or has a datatype P3.
88952
+** P3 is an integer which should be one of SQLITE_INTEGER, SQLITE_FLOAT,
88953
+** SQLITE_BLOB, SQLITE_NULL, or SQLITE_TEXT.
88954
+*/
88955
+case OP_IsNullOrType: { /* jump, in1 */
88956
+ int doTheJump;
88957
+ pIn1 = &aMem[pOp->p1];
88958
+ doTheJump = (pIn1->flags & MEM_Null)!=0 || sqlite3_value_type(pIn1)==pOp->p3;
88959
+ VdbeBranchTaken( doTheJump, 2);
88960
+ if( doTheJump ) goto jump_to_p2;
88961
+ break;
88962
+}
8888688963
8888788964
/* Opcode: ZeroOrNull P1 P2 P3 * *
8888888965
** Synopsis: r[P2] = 0 OR NULL
8888988966
**
8889088967
** If all both registers P1 and P3 are NOT NULL, then store a zero in
@@ -89249,10 +89326,104 @@
8924989326
}else{
8925089327
rc = SQLITE_CORRUPT_BKPT;
8925189328
goto abort_due_to_error;
8925289329
}
8925389330
}
89331
+
89332
+/* Opcode: TypeCheck P1 P2 * P4 *
89333
+** Synopsis: typecheck(r[P1@P2])
89334
+**
89335
+** Apply affinities to the range of P2 registers beginning with P1.
89336
+** Take the affinities from the Table object in P4. If any value
89337
+** cannot be coerced into the correct type, then raise an error.
89338
+**
89339
+** This opcode is similar to OP_Affinity except that this opcode
89340
+** forces the register type to the Table column type. This is used
89341
+** to implement "strict affinity".
89342
+**
89343
+** Preconditions:
89344
+**
89345
+** <ul>
89346
+** <li> P2 should be the number of non-virtual columns in the
89347
+** table of P4.
89348
+** <li> Table P4 should be a STRICT table.
89349
+** </ul>
89350
+**
89351
+** If any precondition is false, an assertion fault occurs.
89352
+*/
89353
+case OP_TypeCheck: {
89354
+ Table *pTab;
89355
+ Column *aCol;
89356
+ int i;
89357
+
89358
+ assert( pOp->p4type==P4_TABLE );
89359
+ pTab = pOp->p4.pTab;
89360
+ assert( pTab->tabFlags & TF_Strict );
89361
+ assert( pTab->nNVCol==pOp->p2 );
89362
+ aCol = pTab->aCol;
89363
+ pIn1 = &aMem[pOp->p1];
89364
+ for(i=0; i<pTab->nCol; i++){
89365
+ if( aCol[i].colFlags & COLFLAG_VIRTUAL ) continue;
89366
+ assert( pIn1 < &aMem[pOp->p1+pOp->p2] );
89367
+ applyAffinity(pIn1, aCol[i].affinity, encoding);
89368
+ if( (pIn1->flags & MEM_Null)==0 ){
89369
+ switch( aCol[i].eCType ){
89370
+ case COLTYPE_BLOB: {
89371
+ if( (pIn1->flags & MEM_Blob)==0 ) goto vdbe_type_error;
89372
+ break;
89373
+ }
89374
+ case COLTYPE_INTEGER:
89375
+ case COLTYPE_INT: {
89376
+ if( (pIn1->flags & MEM_Int)==0 ) goto vdbe_type_error;
89377
+ break;
89378
+ }
89379
+ case COLTYPE_TEXT: {
89380
+ if( (pIn1->flags & MEM_Str)==0 ) goto vdbe_type_error;
89381
+ break;
89382
+ }
89383
+ case COLTYPE_REAL: {
89384
+ if( pIn1->flags & MEM_Int ){
89385
+ /* When applying REAL affinity, if the result is still an MEM_Int
89386
+ ** that will fit in 6 bytes, then change the type to MEM_IntReal
89387
+ ** so that we keep the high-resolution integer value but know that
89388
+ ** the type really wants to be REAL. */
89389
+ testcase( pIn1->u.i==140737488355328LL );
89390
+ testcase( pIn1->u.i==140737488355327LL );
89391
+ testcase( pIn1->u.i==-140737488355328LL );
89392
+ testcase( pIn1->u.i==-140737488355329LL );
89393
+ if( pIn1->u.i<=140737488355327LL && pIn1->u.i>=-140737488355328LL){
89394
+ pIn1->flags |= MEM_IntReal;
89395
+ pIn1->flags &= ~MEM_Int;
89396
+ }else{
89397
+ pIn1->u.r = (double)pIn1->u.i;
89398
+ pIn1->flags |= MEM_Real;
89399
+ pIn1->flags &= ~MEM_Int;
89400
+ }
89401
+ }else if( (pIn1->flags & MEM_Real)==0 ){
89402
+ goto vdbe_type_error;
89403
+ }
89404
+ break;
89405
+ }
89406
+ default: {
89407
+ /* COLTYPE_ANY. Accept anything. */
89408
+ break;
89409
+ }
89410
+ }
89411
+ }
89412
+ REGISTER_TRACE((int)(pIn1-aMem), pIn1);
89413
+ pIn1++;
89414
+ }
89415
+ assert( pIn1 == &aMem[pOp->p1+pOp->p2] );
89416
+ break;
89417
+
89418
+vdbe_type_error:
89419
+ sqlite3VdbeError(p, "cannot store %s value in %s column %s.%s",
89420
+ vdbeMemTypeName(pIn1), sqlite3StdType[aCol[i].eCType-1],
89421
+ pTab->zName, aCol[i].zCnName);
89422
+ rc = SQLITE_CONSTRAINT_DATATYPE;
89423
+ goto abort_due_to_error;
89424
+}
8925489425
8925589426
/* Opcode: Affinity P1 P2 * P4 *
8925689427
** Synopsis: affinity(r[P1@P2])
8925789428
**
8925889429
** Apply affinities to a range of P2 registers starting with P1.
@@ -92300,11 +92471,12 @@
9230092471
** If P5 is not zero, then raise an SQLITE_CORRUPT_INDEX error
9230192472
** if no matching index entry is found. This happens when running
9230292473
** an UPDATE or DELETE statement and the index entry to be updated
9230392474
** or deleted is not found. For some uses of IdxDelete
9230492475
** (example: the EXCEPT operator) it does not matter that no matching
92305
-** entry is found. For those cases, P5 is zero.
92476
+** entry is found. For those cases, P5 is zero. Also, do not raise
92477
+** this (self-correcting and non-critical) error if in writable_schema mode.
9230692478
*/
9230792479
case OP_IdxDelete: {
9230892480
VdbeCursor *pC;
9230992481
BtCursor *pCrsr;
9231092482
int res;
@@ -92326,11 +92498,11 @@
9232692498
rc = sqlite3BtreeIndexMoveto(pCrsr, &r, &res);
9232792499
if( rc ) goto abort_due_to_error;
9232892500
if( res==0 ){
9232992501
rc = sqlite3BtreeDelete(pCrsr, BTREE_AUXDELETE);
9233092502
if( rc ) goto abort_due_to_error;
92331
- }else if( pOp->p5 ){
92503
+ }else if( pOp->p5 && !sqlite3WritableSchema(db) ){
9233292504
rc = sqlite3ReportError(SQLITE_CORRUPT_INDEX, __LINE__, "index corruption");
9233392505
goto abort_due_to_error;
9233492506
}
9233592507
assert( pC->deferredMoveto==0 );
9233692508
pC->cacheStatus = CACHE_STALE;
@@ -113942,11 +114114,11 @@
113942114114
113943114115
if( sType.n==0 ){
113944114116
/* If there is no type specified, columns have the default affinity
113945114117
** 'BLOB' with a default size of 4 bytes. */
113946114118
pCol->affinity = affinity;
113947
- pCol->eType = eType;
114119
+ pCol->eCType = eType;
113948114120
pCol->szEst = szEst;
113949114121
#ifdef SQLITE_ENABLE_SORTER_REFERENCES
113950114122
if( affinity==SQLITE_AFF_BLOB ){
113951114123
if( 4>=sqlite3GlobalConfig.szSorterRef ){
113952114124
pCol->colFlags |= COLFLAG_SORTERREF;
@@ -114237,11 +114409,11 @@
114237114409
}
114238114410
}
114239114411
}
114240114412
if( nTerm==1
114241114413
&& pCol
114242
- && pCol->eType==COLTYPE_INTEGER
114414
+ && pCol->eCType==COLTYPE_INTEGER
114243114415
&& sortOrder!=SQLITE_SO_DESC
114244114416
){
114245114417
if( IN_RENAME_OBJECT && pList ){
114246114418
Expr *pCExpr = sqlite3ExprSkipCollate(pList->a[0].pExpr);
114247114419
sqlite3RenameTokenRemap(pParse, &pTab->iPKey, pCExpr);
@@ -114709,11 +114881,13 @@
114709114881
114710114882
/* Mark every PRIMARY KEY column as NOT NULL (except for imposter tables)
114711114883
*/
114712114884
if( !db->init.imposterTable ){
114713114885
for(i=0; i<pTab->nCol; i++){
114714
- if( (pTab->aCol[i].colFlags & COLFLAG_PRIMKEY)!=0 ){
114886
+ if( (pTab->aCol[i].colFlags & COLFLAG_PRIMKEY)!=0
114887
+ && (pTab->aCol[i].notNull==OE_None)
114888
+ ){
114715114889
pTab->aCol[i].notNull = OE_Abort;
114716114890
}
114717114891
}
114718114892
pTab->tabFlags |= TF_HasNotNull;
114719114893
}
@@ -114942,11 +115116,11 @@
114942115116
*/
114943115117
SQLITE_PRIVATE void sqlite3EndTable(
114944115118
Parse *pParse, /* Parse context */
114945115119
Token *pCons, /* The ',' token after the last column defn. */
114946115120
Token *pEnd, /* The ')' before options in the CREATE TABLE */
114947
- u8 tabOpts, /* Extra table options. Usually 0. */
115121
+ u32 tabOpts, /* Extra table options. Usually 0. */
114948115122
Select *pSelect /* Select from a "CREATE ... AS SELECT" */
114949115123
){
114950115124
Table *p; /* The new table */
114951115125
sqlite3 *db = pParse->db; /* The database connection */
114952115126
int iDb; /* Database in which the table lives */
@@ -114977,10 +115151,48 @@
114977115151
return;
114978115152
}
114979115153
p->tnum = db->init.newTnum;
114980115154
if( p->tnum==1 ) p->tabFlags |= TF_Readonly;
114981115155
}
115156
+
115157
+ /* Special processing for tables that include the STRICT keyword:
115158
+ **
115159
+ ** * Do not allow custom column datatypes. Every column must have
115160
+ ** a datatype that is one of INT, INTEGER, REAL, TEXT, or BLOB.
115161
+ **
115162
+ ** * If a PRIMARY KEY is defined, other than the INTEGER PRIMARY KEY,
115163
+ ** then all columns of the PRIMARY KEY must have a NOT NULL
115164
+ ** constraint.
115165
+ */
115166
+ if( tabOpts & TF_Strict ){
115167
+ int ii;
115168
+ p->tabFlags |= TF_Strict;
115169
+ for(ii=0; ii<p->nCol; ii++){
115170
+ Column *pCol = &p->aCol[ii];
115171
+ if( pCol->eCType==COLTYPE_CUSTOM ){
115172
+ if( pCol->colFlags & COLFLAG_HASTYPE ){
115173
+ sqlite3ErrorMsg(pParse,
115174
+ "unknown datatype for %s.%s: \"%s\"",
115175
+ p->zName, pCol->zCnName, sqlite3ColumnType(pCol, "")
115176
+ );
115177
+ }else{
115178
+ sqlite3ErrorMsg(pParse, "missing datatype for %s.%s",
115179
+ p->zName, pCol->zCnName);
115180
+ }
115181
+ return;
115182
+ }else if( pCol->eCType==COLTYPE_ANY ){
115183
+ pCol->affinity = SQLITE_AFF_BLOB;
115184
+ }
115185
+ if( (pCol->colFlags & COLFLAG_PRIMKEY)!=0
115186
+ && p->iPKey!=ii
115187
+ && pCol->notNull == OE_None
115188
+ ){
115189
+ pCol->notNull = OE_Abort;
115190
+ p->tabFlags |= TF_HasNotNull;
115191
+ }
115192
+ }
115193
+ }
114982115194
114983115195
assert( (p->tabFlags & TF_HasPrimaryKey)==0
114984115196
|| p->iPKey>=0 || sqlite3PrimaryKeyIndex(p)!=0 );
114985115197
assert( (p->tabFlags & TF_HasPrimaryKey)!=0
114986115198
|| (p->iPKey<0 && sqlite3PrimaryKeyIndex(p)==0) );
@@ -123286,32 +123498,72 @@
123286123498
123287123499
return pIdx->zColAff;
123288123500
}
123289123501
123290123502
/*
123503
+** Make changes to the evolving bytecode to do affinity transformations
123504
+** of values that are about to be gathered into a row for table pTab.
123505
+**
123506
+** For ordinary (legacy, non-strict) tables:
123507
+** -----------------------------------------
123508
+**
123291123509
** Compute the affinity string for table pTab, if it has not already been
123292123510
** computed. As an optimization, omit trailing SQLITE_AFF_BLOB affinities.
123293123511
**
123294
-** If the affinity exists (if it is not entirely SQLITE_AFF_BLOB values) and
123295
-** if iReg>0 then code an OP_Affinity opcode that will set the affinities
123296
-** for register iReg and following. Or if affinities exists and iReg==0,
123512
+** If the affinity string is empty (because it was all SQLITE_AFF_BLOB entries
123513
+** which were then optimized out) then this routine becomes a no-op.
123514
+**
123515
+** Otherwise if iReg>0 then code an OP_Affinity opcode that will set the
123516
+** affinities for register iReg and following. Or if iReg==0,
123297123517
** then just set the P4 operand of the previous opcode (which should be
123298123518
** an OP_MakeRecord) to the affinity string.
123299123519
**
123300123520
** A column affinity string has one character per column:
123301123521
**
123302
-** Character Column affinity
123303
-** ------------------------------
123304
-** 'A' BLOB
123305
-** 'B' TEXT
123306
-** 'C' NUMERIC
123307
-** 'D' INTEGER
123308
-** 'E' REAL
123522
+** Character Column affinity
123523
+** --------- ---------------
123524
+** 'A' BLOB
123525
+** 'B' TEXT
123526
+** 'C' NUMERIC
123527
+** 'D' INTEGER
123528
+** 'E' REAL
123529
+**
123530
+** For STRICT tables:
123531
+** ------------------
123532
+**
123533
+** Generate an appropropriate OP_TypeCheck opcode that will verify the
123534
+** datatypes against the column definitions in pTab. If iReg==0, that
123535
+** means an OP_MakeRecord opcode has already been generated and should be
123536
+** the last opcode generated. The new OP_TypeCheck needs to be inserted
123537
+** before the OP_MakeRecord. The new OP_TypeCheck should use the same
123538
+** register set as the OP_MakeRecord. If iReg>0 then register iReg is
123539
+** the first of a series of registers that will form the new record.
123540
+** Apply the type checking to that array of registers.
123309123541
*/
123310123542
SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
123311123543
int i, j;
123312
- char *zColAff = pTab->zColAff;
123544
+ char *zColAff;
123545
+ if( pTab->tabFlags & TF_Strict ){
123546
+ if( iReg==0 ){
123547
+ /* Move the previous opcode (which should be OP_MakeRecord) forward
123548
+ ** by one slot and insert a new OP_TypeCheck where the current
123549
+ ** OP_MakeRecord is found */
123550
+ VdbeOp *pPrev;
123551
+ sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
123552
+ pPrev = sqlite3VdbeGetOp(v, -1);
123553
+ assert( pPrev!=0 );
123554
+ assert( pPrev->opcode==OP_MakeRecord || sqlite3VdbeDb(v)->mallocFailed );
123555
+ pPrev->opcode = OP_TypeCheck;
123556
+ sqlite3VdbeAddOp3(v, OP_MakeRecord, pPrev->p1, pPrev->p2, pPrev->p3);
123557
+ }else{
123558
+ /* Insert an isolated OP_Typecheck */
123559
+ sqlite3VdbeAddOp2(v, OP_TypeCheck, iReg, pTab->nNVCol);
123560
+ sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
123561
+ }
123562
+ return;
123563
+ }
123564
+ zColAff = pTab->zColAff;
123313123565
if( zColAff==0 ){
123314123566
sqlite3 *db = sqlite3VdbeDb(v);
123315123567
zColAff = (char *)sqlite3DbMallocRaw(0, pTab->nCol+1);
123316123568
if( !zColAff ){
123317123569
sqlite3OomFault(db);
@@ -123333,10 +123585,12 @@
123333123585
i = sqlite3Strlen30NN(zColAff);
123334123586
if( i ){
123335123587
if( iReg ){
123336123588
sqlite3VdbeAddOp4(v, OP_Affinity, iReg, i, 0, zColAff, i);
123337123589
}else{
123590
+ assert( sqlite3VdbeGetOp(v, -1)->opcode==OP_MakeRecord
123591
+ || sqlite3VdbeDb(v)->mallocFailed );
123338123592
sqlite3VdbeChangeP4(v, -1, zColAff, i);
123339123593
}
123340123594
}
123341123595
}
123342123596
@@ -125970,10 +126224,13 @@
125970126224
if( pDest->nCol!=pSrc->nCol ){
125971126225
return 0; /* Number of columns must be the same in tab1 and tab2 */
125972126226
}
125973126227
if( pDest->iPKey!=pSrc->iPKey ){
125974126228
return 0; /* Both tables must have the same INTEGER PRIMARY KEY */
126229
+ }
126230
+ if( (pDest->tabFlags & TF_Strict)!=0 && (pSrc->tabFlags & TF_Strict)==0 ){
126231
+ return 0; /* Cannot feed from a non-strict into a strict table */
125975126232
}
125976126233
for(i=0; i<pDest->nCol; i++){
125977126234
Column *pDestCol = &pDest->aCol[i];
125978126235
Column *pSrcCol = &pSrc->aCol[i];
125979126236
#ifdef SQLITE_ENABLE_HIDDEN_COLUMNS
@@ -130237,10 +130494,11 @@
130237130494
Index *pIdx, *pPk;
130238130495
Index *pPrior = 0;
130239130496
int loopTop;
130240130497
int iDataCur, iIdxCur;
130241130498
int r1 = -1;
130499
+ int bStrict;
130242130500
130243130501
if( pTab->tnum<1 ) continue; /* Skip VIEWs or VIRTUAL TABLEs */
130244130502
if( pObjTab && pObjTab!=pTab ) continue;
130245130503
pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
130246130504
sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenRead, 0,
@@ -130258,27 +130516,50 @@
130258130516
loopTop = sqlite3VdbeAddOp2(v, OP_AddImm, 7, 1);
130259130517
if( !isQuick ){
130260130518
/* Sanity check on record header decoding */
130261130519
sqlite3VdbeAddOp3(v, OP_Column, iDataCur, pTab->nNVCol-1,3);
130262130520
sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
130521
+ VdbeComment((v, "(right-most column)"));
130263130522
}
130264
- /* Verify that all NOT NULL columns really are NOT NULL */
130523
+ /* Verify that all NOT NULL columns really are NOT NULL. At the
130524
+ ** same time verify the type of the content of STRICT tables */
130525
+ bStrict = (pTab->tabFlags & TF_Strict)!=0;
130265130526
for(j=0; j<pTab->nCol; j++){
130266130527
char *zErr;
130267
- int jmp2;
130528
+ Column *pCol = pTab->aCol + j;
130529
+ int doError, jmp2;
130268130530
if( j==pTab->iPKey ) continue;
130269
- if( pTab->aCol[j].notNull==0 ) continue;
130531
+ if( pCol->notNull==0 && !bStrict ) continue;
130532
+ doError = bStrict ? sqlite3VdbeMakeLabel(pParse) : 0;
130270130533
sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, j, 3);
130271130534
if( sqlite3VdbeGetOp(v,-1)->opcode==OP_Column ){
130272130535
sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
130273130536
}
130274
- jmp2 = sqlite3VdbeAddOp1(v, OP_NotNull, 3); VdbeCoverage(v);
130275
- zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName,
130276
- pTab->aCol[j].zCnName);
130277
- sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
130278
- integrityCheckResultRow(v);
130279
- sqlite3VdbeJumpHere(v, jmp2);
130537
+ if( pCol->notNull ){
130538
+ jmp2 = sqlite3VdbeAddOp1(v, OP_NotNull, 3); VdbeCoverage(v);
130539
+ zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName,
130540
+ pCol->zCnName);
130541
+ sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
130542
+ if( bStrict ){
130543
+ sqlite3VdbeGoto(v, doError);
130544
+ }else{
130545
+ integrityCheckResultRow(v);
130546
+ }
130547
+ sqlite3VdbeJumpHere(v, jmp2);
130548
+ }
130549
+ if( pTab->tabFlags & TF_Strict ){
130550
+ jmp2 = sqlite3VdbeAddOp3(v, OP_IsNullOrType, 3, 0,
130551
+ sqlite3StdTypeMap[pCol->eCType-1]);
130552
+ VdbeCoverage(v);
130553
+ zErr = sqlite3MPrintf(db, "non-%s value in %s.%s",
130554
+ sqlite3StdType[pCol->eCType-1],
130555
+ pTab->zName, pTab->aCol[j].zCnName);
130556
+ sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
130557
+ sqlite3VdbeResolveLabel(v, doError);
130558
+ integrityCheckResultRow(v);
130559
+ sqlite3VdbeJumpHere(v, jmp2);
130560
+ }
130280130561
}
130281130562
/* Verify CHECK constraints */
130282130563
if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
130283130564
ExprList *pCheck = sqlite3ExprListDup(db, pTab->pCheck, 0);
130284130565
if( db->mallocFailed==0 ){
@@ -134401,11 +134682,11 @@
134401134682
pCol->colFlags |= COLFLAG_HASTYPE;
134402134683
}
134403134684
}
134404134685
if( pCol->affinity<=SQLITE_AFF_NONE ) pCol->affinity = aff;
134405134686
pColl = sqlite3ExprCollSeq(pParse, p);
134406
- if( pColl && (pCol->colFlags & COLFLAG_HASCOLL)==0 ){
134687
+ if( pColl ){
134407134688
assert( pTab->pIndex==0 );
134408134689
sqlite3ColumnSetColl(db, pCol, pColl->zName);
134409134690
}
134410134691
}
134411134692
pTab->szTabRow = 1; /* Any non-zero value works */
@@ -135223,11 +135504,15 @@
135223135504
}
135224135505
135225135506
multi_select_end:
135226135507
pDest->iSdst = dest.iSdst;
135227135508
pDest->nSdst = dest.nSdst;
135228
- sqlite3SelectDelete(db, pDelete);
135509
+ if( pDelete ){
135510
+ sqlite3ParserAddCleanup(pParse,
135511
+ (void(*)(sqlite3*,void*))sqlite3SelectDelete,
135512
+ pDelete);
135513
+ }
135229135514
return rc;
135230135515
}
135231135516
#endif /* SQLITE_OMIT_COMPOUND_SELECT */
135232135517
135233135518
/*
@@ -138791,11 +139076,12 @@
138791139076
138792139077
/* Make copies of constant WHERE-clause terms in the outer query down
138793139078
** inside the subquery. This can help the subquery to run more efficiently.
138794139079
*/
138795139080
if( OptimizationEnabled(db, SQLITE_PushDown)
138796
- && (pItem->fg.isCte==0 || pItem->u2.pCteUse->eM10d!=M10d_Yes)
139081
+ && (pItem->fg.isCte==0
139082
+ || (pItem->u2.pCteUse->eM10d!=M10d_Yes && pItem->u2.pCteUse->nUse<2))
138797139083
&& pushDownWhereTerms(pParse, pSub, p->pWhere, pItem->iCursor,
138798139084
(pItem->fg.jointype & JT_OUTER)!=0)
138799139085
){
138800139086
#if SELECTTRACE_ENABLED
138801139087
if( sqlite3SelectTrace & 0x100 ){
@@ -138852,10 +139138,11 @@
138852139138
** holds the result of the materialization. */
138853139139
CteUse *pCteUse = pItem->u2.pCteUse;
138854139140
sqlite3VdbeAddOp2(v, OP_Gosub, pCteUse->regRtn, pCteUse->addrM9e);
138855139141
if( pItem->iCursor!=pCteUse->iCur ){
138856139142
sqlite3VdbeAddOp2(v, OP_OpenDup, pItem->iCursor, pCteUse->iCur);
139143
+ VdbeComment((v, "%!S", pItem));
138857139144
}
138858139145
pSub->nSelectRow = pCteUse->nRowEst;
138859139146
}else if( (pPrior = isSelfJoinView(pTabList, pItem))!=0 ){
138860139147
/* This view has already been materialized by a prior entry in
138861139148
** this same FROM clause. Reuse it. */
@@ -143567,11 +143854,12 @@
143567143854
SQLITE_PRIVATE void sqlite3VtabUnlock(VTable *pVTab){
143568143855
sqlite3 *db = pVTab->db;
143569143856
143570143857
assert( db );
143571143858
assert( pVTab->nRef>0 );
143572
- assert( db->magic==SQLITE_MAGIC_OPEN || db->magic==SQLITE_MAGIC_ZOMBIE );
143859
+ assert( db->eOpenState==SQLITE_STATE_OPEN
143860
+ || db->eOpenState==SQLITE_STATE_ZOMBIE );
143573143861
143574143862
pVTab->nRef--;
143575143863
if( pVTab->nRef==0 ){
143576143864
sqlite3_vtab *p = pVTab->pVtab;
143577143865
sqlite3VtabModuleUnref(pVTab->db, pVTab->pMod);
@@ -146799,13 +147087,10 @@
146799147087
if( iRowidReg!=iReleaseReg ) sqlite3ReleaseTempReg(pParse, iReleaseReg);
146800147088
addrNxt = pLevel->addrNxt;
146801147089
sqlite3VdbeAddOp3(v, OP_SeekRowid, iCur, addrNxt, iRowidReg);
146802147090
VdbeCoverage(v);
146803147091
pLevel->op = OP_Noop;
146804
- if( (pTerm->prereqAll & pLevel->notReady)==0 ){
146805
- pTerm->wtFlags |= TERM_CODED;
146806
- }
146807147092
}else if( (pLoop->wsFlags & WHERE_IPK)!=0
146808147093
&& (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0
146809147094
){
146810147095
/* Case 3: We have an inequality comparison against the ROWID field.
146811147096
*/
@@ -151458,11 +151743,12 @@
151458151743
}
151459151744
151460151745
/*
151461151746
** Return TRUE if all of the following are true:
151462151747
**
151463
-** (1) X has the same or lower cost that Y
151748
+** (1) X has the same or lower cost, or returns the same or fewer rows,
151749
+** than Y.
151464151750
** (2) X uses fewer WHERE clause terms than Y
151465151751
** (3) Every WHERE clause term used by X is also used by Y
151466151752
** (4) X skips at least as many columns as Y
151467151753
** (5) If X is a covering index, than Y is too
151468151754
**
@@ -151481,15 +151767,12 @@
151481151767
){
151482151768
int i, j;
151483151769
if( pX->nLTerm-pX->nSkip >= pY->nLTerm-pY->nSkip ){
151484151770
return 0; /* X is not a subset of Y */
151485151771
}
151772
+ if( pX->rRun>pY->rRun && pX->nOut>pY->nOut ) return 0;
151486151773
if( pY->nSkip > pX->nSkip ) return 0;
151487
- if( pX->rRun >= pY->rRun ){
151488
- if( pX->rRun > pY->rRun ) return 0; /* X costs more than Y */
151489
- if( pX->nOut > pY->nOut ) return 0; /* X costs more than Y */
151490
- }
151491151774
for(i=pX->nLTerm-1; i>=0; i--){
151492151775
if( pX->aLTerm[i]==0 ) continue;
151493151776
for(j=pY->nLTerm-1; j>=0; j--){
151494151777
if( pY->aLTerm[j]==pX->aLTerm[i] ) break;
151495151778
}
@@ -151501,12 +151784,12 @@
151501151784
}
151502151785
return 1; /* All conditions meet */
151503151786
}
151504151787
151505151788
/*
151506
-** Try to adjust the cost of WhereLoop pTemplate upwards or downwards so
151507
-** that:
151789
+** Try to adjust the cost and number of output rows of WhereLoop pTemplate
151790
+** upwards or downwards so that:
151508151791
**
151509151792
** (1) pTemplate costs less than any other WhereLoops that are a proper
151510151793
** subset of pTemplate
151511151794
**
151512151795
** (2) pTemplate costs more than any other WhereLoops for which pTemplate
@@ -151523,20 +151806,24 @@
151523151806
if( (p->wsFlags & WHERE_INDEXED)==0 ) continue;
151524151807
if( whereLoopCheaperProperSubset(p, pTemplate) ){
151525151808
/* Adjust pTemplate cost downward so that it is cheaper than its
151526151809
** subset p. */
151527151810
WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
151528
- pTemplate->rRun, pTemplate->nOut, p->rRun, p->nOut-1));
151529
- pTemplate->rRun = p->rRun;
151530
- pTemplate->nOut = p->nOut - 1;
151811
+ pTemplate->rRun, pTemplate->nOut,
151812
+ MIN(p->rRun, pTemplate->rRun),
151813
+ MIN(p->nOut - 1, pTemplate->nOut)));
151814
+ pTemplate->rRun = MIN(p->rRun, pTemplate->rRun);
151815
+ pTemplate->nOut = MIN(p->nOut - 1, pTemplate->nOut);
151531151816
}else if( whereLoopCheaperProperSubset(pTemplate, p) ){
151532151817
/* Adjust pTemplate cost upward so that it is costlier than p since
151533151818
** pTemplate is a proper subset of p */
151534151819
WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
151535
- pTemplate->rRun, pTemplate->nOut, p->rRun, p->nOut+1));
151536
- pTemplate->rRun = p->rRun;
151537
- pTemplate->nOut = p->nOut + 1;
151820
+ pTemplate->rRun, pTemplate->nOut,
151821
+ MAX(p->rRun, pTemplate->rRun),
151822
+ MAX(p->nOut + 1, pTemplate->nOut)));
151823
+ pTemplate->rRun = MAX(p->rRun, pTemplate->rRun);
151824
+ pTemplate->nOut = MAX(p->nOut + 1, pTemplate->nOut);
151538151825
}
151539151826
}
151540151827
}
151541151828
151542151829
/*
@@ -158474,12 +158761,12 @@
158474158761
#define TK_EXISTS 20
158475158762
#define TK_TEMP 21
158476158763
#define TK_LP 22
158477158764
#define TK_RP 23
158478158765
#define TK_AS 24
158479
-#define TK_WITHOUT 25
158480
-#define TK_COMMA 26
158766
+#define TK_COMMA 25
158767
+#define TK_WITHOUT 26
158481158768
#define TK_ABORT 27
158482158769
#define TK_ACTION 28
158483158770
#define TK_AFTER 29
158484158771
#define TK_ANALYZE 30
158485158772
#define TK_ASC 31
@@ -158692,33 +158979,34 @@
158692158979
#ifndef INTERFACE
158693158980
# define INTERFACE 1
158694158981
#endif
158695158982
/************* Begin control #defines *****************************************/
158696158983
#define YYCODETYPE unsigned short int
158697
-#define YYNOCODE 317
158984
+#define YYNOCODE 318
158698158985
#define YYACTIONTYPE unsigned short int
158699158986
#define YYWILDCARD 101
158700158987
#define sqlite3ParserTOKENTYPE Token
158701158988
typedef union {
158702158989
int yyinit;
158703158990
sqlite3ParserTOKENTYPE yy0;
158704
- Window* yy49;
158705
- ExprList* yy70;
158706
- Select* yy81;
158707
- With* yy103;
158708
- struct FrameBound yy117;
158709
- struct {int value; int mask;} yy139;
158710
- SrcList* yy153;
158711
- TriggerStep* yy157;
158712
- Upsert* yy190;
158713
- struct TrigEvent yy262;
158714
- Cte* yy329;
158715
- int yy376;
158716
- Expr* yy404;
158717
- IdList* yy436;
158718
- const char* yy504;
158719
- u8 yy552;
158991
+ With* yy43;
158992
+ u32 yy51;
158993
+ int yy64;
158994
+ struct FrameBound yy81;
158995
+ struct {int value; int mask;} yy83;
158996
+ TriggerStep* yy95;
158997
+ Upsert* yy138;
158998
+ IdList* yy240;
158999
+ Cte* yy255;
159000
+ Select* yy303;
159001
+ Window* yy375;
159002
+ u8 yy534;
159003
+ ExprList* yy562;
159004
+ struct TrigEvent yy570;
159005
+ const char* yy600;
159006
+ SrcList* yy607;
159007
+ Expr* yy626;
158720159008
} YYMINORTYPE;
158721159009
#ifndef YYSTACKDEPTH
158722159010
#define YYSTACKDEPTH 100
158723159011
#endif
158724159012
#define sqlite3ParserARG_SDECL
@@ -158730,22 +159018,22 @@
158730159018
#define sqlite3ParserCTX_PDECL ,Parse *pParse
158731159019
#define sqlite3ParserCTX_PARAM ,pParse
158732159020
#define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
158733159021
#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
158734159022
#define YYFALLBACK 1
158735
-#define YYNSTATE 570
158736
-#define YYNRULE 398
158737
-#define YYNRULE_WITH_ACTION 337
159023
+#define YYNSTATE 572
159024
+#define YYNRULE 401
159025
+#define YYNRULE_WITH_ACTION 339
158738159026
#define YYNTOKEN 184
158739
-#define YY_MAX_SHIFT 569
158740
-#define YY_MIN_SHIFTREDUCE 825
158741
-#define YY_MAX_SHIFTREDUCE 1222
158742
-#define YY_ERROR_ACTION 1223
158743
-#define YY_ACCEPT_ACTION 1224
158744
-#define YY_NO_ACTION 1225
158745
-#define YY_MIN_REDUCE 1226
158746
-#define YY_MAX_REDUCE 1623
159027
+#define YY_MAX_SHIFT 571
159028
+#define YY_MIN_SHIFTREDUCE 829
159029
+#define YY_MAX_SHIFTREDUCE 1229
159030
+#define YY_ERROR_ACTION 1230
159031
+#define YY_ACCEPT_ACTION 1231
159032
+#define YY_NO_ACTION 1232
159033
+#define YY_MIN_REDUCE 1233
159034
+#define YY_MAX_REDUCE 1633
158747159035
/************* End control #defines *******************************************/
158748159036
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
158749159037
158750159038
/* Define the yytestcase() macro to be a no-op if is not already defined
158751159039
** otherwise.
@@ -158808,605 +159096,610 @@
158808159096
** yy_reduce_ofst[] For each state, the offset into yy_action for
158809159097
** shifting non-terminals after a reduce.
158810159098
** yy_default[] Default action for each state.
158811159099
**
158812159100
*********** Begin parsing tables **********************************************/
158813
-#define YY_ACTTAB_COUNT (2023)
159101
+#define YY_ACTTAB_COUNT (2037)
158814159102
static const YYACTIONTYPE yy_action[] = {
158815
- /* 0 */ 563, 1295, 563, 1274, 168, 1257, 115, 112, 218, 373,
158816
- /* 10 */ 563, 1295, 374, 563, 488, 563, 115, 112, 218, 406,
158817
- /* 20 */ 1300, 1300, 41, 41, 41, 41, 514, 1504, 520, 1298,
158818
- /* 30 */ 1298, 959, 41, 41, 1260, 71, 71, 51, 51, 960,
158819
- /* 40 */ 557, 557, 557, 122, 123, 113, 1200, 1200, 1035, 1038,
158820
- /* 50 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 414, 406,
158821
- /* 60 */ 273, 273, 273, 273, 115, 112, 218, 115, 112, 218,
158822
- /* 70 */ 197, 268, 545, 560, 515, 560, 211, 563, 385, 248,
158823
- /* 80 */ 215, 521, 399, 122, 123, 113, 1200, 1200, 1035, 1038,
158824
- /* 90 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 540, 13,
158825
- /* 100 */ 13, 1259, 119, 119, 119, 119, 118, 118, 117, 117,
158826
- /* 110 */ 117, 116, 441, 1176, 419, 197, 446, 320, 512, 1539,
158827
- /* 120 */ 1545, 372, 1547, 6, 371, 1176, 1148, 394, 1148, 406,
158828
- /* 130 */ 1545, 534, 115, 112, 218, 1415, 99, 30, 121, 121,
159103
+ /* 0 */ 564, 115, 112, 220, 169, 199, 115, 112, 220, 564,
159104
+ /* 10 */ 375, 1266, 564, 376, 564, 270, 1309, 1309, 406, 407,
159105
+ /* 20 */ 1084, 199, 1513, 41, 41, 515, 489, 521, 558, 558,
159106
+ /* 30 */ 558, 965, 41, 41, 395, 41, 41, 51, 51, 966,
159107
+ /* 40 */ 296, 1269, 296, 122, 123, 113, 1207, 1207, 1041, 1044,
159108
+ /* 50 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 564, 407,
159109
+ /* 60 */ 275, 275, 275, 275, 1268, 115, 112, 220, 115, 112,
159110
+ /* 70 */ 220, 1512, 846, 561, 516, 561, 115, 112, 220, 250,
159111
+ /* 80 */ 217, 71, 71, 122, 123, 113, 1207, 1207, 1041, 1044,
159112
+ /* 90 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 440, 440,
159113
+ /* 100 */ 440, 1149, 119, 119, 119, 119, 118, 118, 117, 117,
159114
+ /* 110 */ 117, 116, 442, 1183, 1149, 116, 442, 1149, 546, 513,
159115
+ /* 120 */ 1548, 1554, 374, 442, 6, 1183, 1154, 522, 1154, 407,
159116
+ /* 130 */ 1556, 461, 373, 1554, 535, 99, 463, 332, 121, 121,
158829159117
/* 140 */ 121, 121, 119, 119, 119, 119, 118, 118, 117, 117,
158830
- /* 150 */ 117, 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038,
158831
- /* 160 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 31, 1176,
158832
- /* 170 */ 1177, 1178, 241, 357, 1558, 501, 498, 497, 317, 124,
158833
- /* 180 */ 319, 1176, 1177, 1178, 1176, 496, 119, 119, 119, 119,
158834
- /* 190 */ 118, 118, 117, 117, 117, 116, 441, 139, 96, 406,
158835
- /* 200 */ 121, 121, 121, 121, 114, 117, 117, 117, 116, 441,
158836
- /* 210 */ 541, 1532, 119, 119, 119, 119, 118, 118, 117, 117,
158837
- /* 220 */ 117, 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038,
158838
- /* 230 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 406, 441,
158839
- /* 240 */ 1176, 1177, 1178, 81, 439, 439, 439, 80, 119, 119,
158840
- /* 250 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 488,
158841
- /* 260 */ 1176, 318, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
158842
- /* 270 */ 1028, 120, 120, 121, 121, 121, 121, 493, 1025, 1025,
158843
- /* 280 */ 1036, 1039, 119, 119, 119, 119, 118, 118, 117, 117,
158844
- /* 290 */ 117, 116, 441, 1584, 995, 1224, 1, 1, 569, 2,
158845
- /* 300 */ 1228, 1267, 137, 1503, 245, 305, 473, 140, 406, 860,
158846
- /* 310 */ 561, 1176, 914, 914, 1308, 359, 1176, 1177, 1178, 462,
158847
- /* 320 */ 330, 119, 119, 119, 119, 118, 118, 117, 117, 117,
158848
- /* 330 */ 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
158849
- /* 340 */ 1028, 120, 120, 121, 121, 121, 121, 328, 273, 273,
158850
- /* 350 */ 1015, 83, 1029, 425, 1564, 569, 2, 1228, 304, 554,
158851
- /* 360 */ 925, 560, 305, 944, 140, 860, 1006, 1176, 1177, 1178,
158852
- /* 370 */ 1005, 1308, 411, 213, 511, 229, 119, 119, 119, 119,
158853
- /* 380 */ 118, 118, 117, 117, 117, 116, 441, 519, 347, 116,
158854
- /* 390 */ 441, 119, 119, 119, 119, 118, 118, 117, 117, 117,
158855
- /* 400 */ 116, 441, 1005, 1005, 1007, 273, 273, 445, 563, 16,
158856
- /* 410 */ 16, 1590, 563, 1540, 563, 406, 1176, 6, 560, 344,
158857
- /* 420 */ 182, 118, 118, 117, 117, 117, 116, 441, 416, 142,
158858
- /* 430 */ 71, 71, 229, 563, 71, 71, 55, 55, 203, 122,
158859
- /* 440 */ 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120,
158860
- /* 450 */ 121, 121, 121, 121, 217, 13, 13, 1176, 406, 568,
158861
- /* 460 */ 1400, 1228, 502, 137, 445, 168, 305, 545, 140, 1180,
158862
- /* 470 */ 424, 545, 1176, 1177, 1178, 1308, 544, 438, 437, 944,
158863
- /* 480 */ 513, 452, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
158864
- /* 490 */ 1028, 120, 120, 121, 121, 121, 121, 315, 119, 119,
158865
- /* 500 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 273,
158866
- /* 510 */ 273, 1143, 416, 1176, 1177, 1178, 543, 563, 1143, 304,
158867
- /* 520 */ 554, 1561, 560, 1207, 1143, 1207, 1180, 1143, 406, 530,
158868
- /* 530 */ 421, 1143, 864, 183, 1143, 143, 229, 562, 32, 71,
158869
- /* 540 */ 71, 119, 119, 119, 119, 118, 118, 117, 117, 117,
158870
- /* 550 */ 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
158871
- /* 560 */ 1028, 120, 120, 121, 121, 121, 121, 406, 445, 241,
158872
- /* 570 */ 1176, 857, 501, 498, 497, 1176, 526, 189, 245, 538,
158873
- /* 580 */ 1539, 282, 496, 370, 6, 563, 529, 477, 5, 279,
158874
- /* 590 */ 1015, 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028,
158875
- /* 600 */ 120, 120, 121, 121, 121, 121, 1006, 13, 13, 1414,
158876
- /* 610 */ 1005, 119, 119, 119, 119, 118, 118, 117, 117, 117,
158877
- /* 620 */ 116, 441, 426, 273, 273, 1176, 1176, 1177, 1178, 1619,
158878
- /* 630 */ 392, 1176, 1177, 1178, 1176, 342, 560, 406, 525, 361,
158879
- /* 640 */ 430, 1161, 1005, 1005, 1007, 348, 411, 357, 1558, 488,
159118
+ /* 150 */ 117, 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044,
159119
+ /* 160 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 1257, 1183,
159120
+ /* 170 */ 1184, 1185, 243, 1064, 564, 502, 499, 498, 567, 124,
159121
+ /* 180 */ 567, 1183, 1184, 1185, 474, 497, 119, 119, 119, 119,
159122
+ /* 190 */ 118, 118, 117, 117, 117, 116, 442, 70, 70, 407,
159123
+ /* 200 */ 121, 121, 121, 121, 114, 117, 117, 117, 116, 442,
159124
+ /* 210 */ 1409, 1469, 119, 119, 119, 119, 118, 118, 117, 117,
159125
+ /* 220 */ 117, 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044,
159126
+ /* 230 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 407, 1031,
159127
+ /* 240 */ 1031, 1042, 1045, 81, 382, 541, 378, 80, 119, 119,
159128
+ /* 250 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 381,
159129
+ /* 260 */ 463, 332, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
159130
+ /* 270 */ 1034, 120, 120, 121, 121, 121, 121, 262, 215, 512,
159131
+ /* 280 */ 1424, 422, 119, 119, 119, 119, 118, 118, 117, 117,
159132
+ /* 290 */ 117, 116, 442, 1231, 1, 1, 571, 2, 1235, 1573,
159133
+ /* 300 */ 571, 2, 1235, 307, 1149, 141, 1600, 307, 407, 141,
159134
+ /* 310 */ 1183, 361, 1317, 1035, 866, 531, 1317, 1149, 359, 1567,
159135
+ /* 320 */ 1149, 119, 119, 119, 119, 118, 118, 117, 117, 117,
159136
+ /* 330 */ 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
159137
+ /* 340 */ 1034, 120, 120, 121, 121, 121, 121, 275, 275, 1001,
159138
+ /* 350 */ 426, 275, 275, 1128, 1627, 1021, 1627, 137, 542, 1541,
159139
+ /* 360 */ 561, 272, 950, 950, 561, 1423, 1183, 1184, 1185, 1594,
159140
+ /* 370 */ 866, 1012, 530, 315, 231, 1011, 468, 1276, 231, 119,
159141
+ /* 380 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
159142
+ /* 390 */ 1570, 119, 119, 119, 119, 118, 118, 117, 117, 117,
159143
+ /* 400 */ 116, 442, 330, 359, 1567, 564, 446, 1011, 1011, 1013,
159144
+ /* 410 */ 446, 207, 564, 306, 555, 407, 363, 1021, 363, 346,
159145
+ /* 420 */ 184, 118, 118, 117, 117, 117, 116, 442, 71, 71,
159146
+ /* 430 */ 439, 438, 1126, 1012, 472, 71, 71, 1011, 205, 122,
159147
+ /* 440 */ 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120,
159148
+ /* 450 */ 121, 121, 121, 121, 219, 219, 472, 1183, 407, 570,
159149
+ /* 460 */ 1183, 1235, 503, 1477, 149, 546, 307, 489, 141, 1011,
159150
+ /* 470 */ 1011, 1013, 546, 140, 545, 1317, 1214, 191, 1214, 950,
159151
+ /* 480 */ 950, 514, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
159152
+ /* 490 */ 1034, 120, 120, 121, 121, 121, 121, 563, 119, 119,
159153
+ /* 500 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 283,
159154
+ /* 510 */ 275, 275, 415, 1183, 1184, 1185, 1183, 1184, 1185, 372,
159155
+ /* 520 */ 1183, 243, 344, 561, 502, 499, 498, 1539, 407, 1540,
159156
+ /* 530 */ 1183, 288, 870, 143, 497, 1549, 185, 231, 9, 6,
159157
+ /* 540 */ 253, 119, 119, 119, 119, 118, 118, 117, 117, 117,
159158
+ /* 550 */ 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
159159
+ /* 560 */ 1034, 120, 120, 121, 121, 121, 121, 407, 137, 446,
159160
+ /* 570 */ 447, 863, 169, 1183, 397, 1204, 1183, 1184, 1185, 931,
159161
+ /* 580 */ 526, 1001, 98, 339, 564, 342, 1183, 1184, 1185, 306,
159162
+ /* 590 */ 555, 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034,
159163
+ /* 600 */ 120, 120, 121, 121, 121, 121, 452, 71, 71, 275,
159164
+ /* 610 */ 275, 119, 119, 119, 119, 118, 118, 117, 117, 117,
159165
+ /* 620 */ 116, 442, 561, 417, 306, 555, 1183, 1307, 1307, 1183,
159166
+ /* 630 */ 1184, 1185, 1204, 1149, 330, 458, 318, 407, 363, 470,
159167
+ /* 640 */ 431, 1167, 32, 541, 527, 350, 1149, 1629, 393, 1149,
158880159168
/* 650 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
158881
- /* 660 */ 441, 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028,
158882
- /* 670 */ 120, 120, 121, 121, 121, 121, 406, 830, 831, 832,
158883
- /* 680 */ 1016, 1176, 1177, 1178, 396, 285, 148, 1312, 304, 554,
158884
- /* 690 */ 1176, 1177, 1178, 1467, 216, 3, 337, 137, 340, 560,
158885
- /* 700 */ 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120,
158886
- /* 710 */ 120, 121, 121, 121, 121, 563, 504, 946, 273, 273,
159169
+ /* 660 */ 442, 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034,
159170
+ /* 670 */ 120, 120, 121, 121, 121, 121, 407, 199, 472, 1183,
159171
+ /* 680 */ 1022, 472, 1183, 1184, 1185, 386, 151, 539, 1548, 277,
159172
+ /* 690 */ 400, 137, 6, 317, 5, 564, 562, 3, 920, 920,
159173
+ /* 700 */ 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120,
159174
+ /* 710 */ 120, 121, 121, 121, 121, 411, 505, 83, 71, 71,
158887159175
/* 720 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
158888
- /* 730 */ 441, 560, 1176, 427, 563, 451, 98, 13, 13, 259,
158889
- /* 740 */ 276, 356, 507, 351, 506, 246, 406, 361, 469, 1530,
158890
- /* 750 */ 1000, 347, 293, 304, 554, 1589, 71, 71, 889, 119,
158891
- /* 760 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 441,
158892
- /* 770 */ 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120,
158893
- /* 780 */ 120, 121, 121, 121, 121, 406, 1143, 1078, 1176, 1177,
158894
- /* 790 */ 1178, 416, 1080, 300, 150, 995, 1080, 361, 361, 1143,
158895
- /* 800 */ 361, 378, 1143, 477, 563, 244, 243, 242, 1278, 122,
158896
- /* 810 */ 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120,
158897
- /* 820 */ 121, 121, 121, 121, 563, 880, 13, 13, 483, 119,
158898
- /* 830 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 441,
158899
- /* 840 */ 1176, 191, 540, 563, 147, 149, 13, 13, 328, 457,
158900
- /* 850 */ 316, 1083, 1083, 485, 1537, 406, 505, 1530, 6, 1514,
158901
- /* 860 */ 284, 192, 1277, 145, 881, 71, 71, 488, 119, 119,
158902
- /* 870 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 122,
158903
- /* 880 */ 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120,
158904
- /* 890 */ 121, 121, 121, 121, 563, 471, 1176, 1177, 1178, 406,
158905
- /* 900 */ 852, 327, 301, 462, 330, 1516, 270, 1530, 1530, 944,
158906
- /* 910 */ 1531, 1307, 313, 9, 842, 251, 71, 71, 477, 428,
158907
- /* 920 */ 146, 488, 38, 945, 101, 113, 1200, 1200, 1035, 1038,
158908
- /* 930 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 119, 119,
158909
- /* 940 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 563,
158910
- /* 950 */ 1197, 1099, 563, 436, 563, 1533, 563, 852, 1122, 1617,
158911
- /* 960 */ 454, 290, 1617, 546, 251, 1303, 1100, 267, 267, 281,
158912
- /* 970 */ 404, 70, 70, 460, 71, 71, 71, 71, 13, 13,
158913
- /* 980 */ 560, 1101, 119, 119, 119, 119, 118, 118, 117, 117,
158914
- /* 990 */ 117, 116, 441, 542, 104, 273, 273, 273, 273, 1197,
158915
- /* 1000 */ 217, 1468, 900, 471, 450, 563, 1473, 1197, 560, 447,
158916
- /* 1010 */ 560, 545, 901, 440, 406, 1058, 292, 274, 274, 198,
158917
- /* 1020 */ 547, 450, 449, 1473, 1475, 944, 455, 56, 56, 410,
158918
- /* 1030 */ 560, 1122, 1618, 379, 406, 1618, 404, 1120, 122, 123,
158919
- /* 1040 */ 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120, 121,
158920
- /* 1050 */ 121, 121, 121, 1460, 406, 12, 1197, 1512, 122, 123,
158921
- /* 1060 */ 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120, 121,
158922
- /* 1070 */ 121, 121, 121, 308, 471, 126, 359, 286, 122, 111,
158923
- /* 1080 */ 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120, 121,
158924
- /* 1090 */ 121, 121, 121, 309, 450, 471, 1473, 119, 119, 119,
158925
- /* 1100 */ 119, 118, 118, 117, 117, 117, 116, 441, 1176, 563,
158926
- /* 1110 */ 1120, 482, 563, 312, 433, 479, 197, 119, 119, 119,
158927
- /* 1120 */ 119, 118, 118, 117, 117, 117, 116, 441, 405, 12,
158928
- /* 1130 */ 536, 15, 15, 478, 43, 43, 509, 119, 119, 119,
158929
- /* 1140 */ 119, 118, 118, 117, 117, 117, 116, 441, 289, 535,
158930
- /* 1150 */ 294, 563, 294, 391, 1220, 438, 437, 406, 1154, 403,
158931
- /* 1160 */ 402, 1400, 920, 1204, 1176, 1177, 1178, 919, 1206, 291,
158932
- /* 1170 */ 1306, 1249, 412, 57, 57, 488, 1205, 563, 556, 412,
158933
- /* 1180 */ 1176, 1344, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028,
158934
- /* 1190 */ 120, 120, 121, 121, 121, 121, 1400, 1143, 563, 44,
158935
- /* 1200 */ 44, 1207, 194, 1207, 273, 273, 1400, 461, 537, 1154,
158936
- /* 1210 */ 1143, 108, 555, 1143, 4, 391, 1121, 560, 1538, 335,
158937
- /* 1220 */ 58, 58, 6, 1246, 1099, 380, 1400, 376, 558, 1536,
158938
- /* 1230 */ 563, 422, 1221, 6, 304, 554, 1176, 1177, 1178, 1100,
159176
+ /* 730 */ 442, 1183, 218, 428, 1183, 1183, 1184, 1185, 363, 261,
159177
+ /* 740 */ 278, 358, 508, 353, 507, 248, 407, 306, 555, 1539,
159178
+ /* 750 */ 1006, 349, 363, 291, 489, 302, 293, 1542, 281, 119,
159179
+ /* 760 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
159180
+ /* 770 */ 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120,
159181
+ /* 780 */ 120, 121, 121, 121, 121, 407, 148, 1183, 1184, 1185,
159182
+ /* 790 */ 1183, 1184, 1185, 275, 275, 1304, 1257, 1283, 483, 1476,
159183
+ /* 800 */ 150, 489, 480, 564, 1187, 1304, 561, 1587, 1255, 122,
159184
+ /* 810 */ 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120,
159185
+ /* 820 */ 121, 121, 121, 121, 564, 886, 13, 13, 520, 119,
159186
+ /* 830 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
159187
+ /* 840 */ 1183, 420, 417, 564, 269, 269, 1316, 13, 13, 1539,
159188
+ /* 850 */ 1546, 16, 16, 322, 6, 407, 506, 561, 1089, 1089,
159189
+ /* 860 */ 486, 1187, 425, 1539, 887, 292, 71, 71, 119, 119,
159190
+ /* 870 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 122,
159191
+ /* 880 */ 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120,
159192
+ /* 890 */ 121, 121, 121, 121, 564, 12, 1183, 1184, 1185, 407,
159193
+ /* 900 */ 275, 275, 451, 303, 834, 835, 836, 417, 489, 276,
159194
+ /* 910 */ 276, 1547, 284, 561, 319, 6, 321, 71, 71, 429,
159195
+ /* 920 */ 451, 450, 561, 952, 101, 113, 1207, 1207, 1041, 1044,
159196
+ /* 930 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 119, 119,
159197
+ /* 940 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 1105,
159198
+ /* 950 */ 1183, 489, 564, 1312, 437, 455, 478, 564, 246, 245,
159199
+ /* 960 */ 244, 1409, 1545, 547, 1106, 405, 6, 1544, 196, 1258,
159200
+ /* 970 */ 413, 6, 105, 462, 103, 71, 71, 286, 564, 1107,
159201
+ /* 980 */ 13, 13, 119, 119, 119, 119, 118, 118, 117, 117,
159202
+ /* 990 */ 117, 116, 442, 451, 104, 427, 337, 320, 275, 275,
159203
+ /* 1000 */ 906, 13, 13, 564, 1482, 1105, 1183, 1184, 1185, 126,
159204
+ /* 1010 */ 907, 561, 546, 564, 407, 478, 295, 1321, 253, 200,
159205
+ /* 1020 */ 1106, 548, 1482, 1484, 280, 1409, 55, 55, 1287, 561,
159206
+ /* 1030 */ 478, 380, 423, 951, 407, 1107, 71, 71, 122, 123,
159207
+ /* 1040 */ 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120, 121,
159208
+ /* 1050 */ 121, 121, 121, 1204, 407, 287, 552, 309, 122, 123,
159209
+ /* 1060 */ 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120, 121,
159210
+ /* 1070 */ 121, 121, 121, 441, 1128, 1628, 146, 1628, 122, 111,
159211
+ /* 1080 */ 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120, 121,
159212
+ /* 1090 */ 121, 121, 121, 404, 403, 1482, 424, 119, 119, 119,
159213
+ /* 1100 */ 119, 118, 118, 117, 117, 117, 116, 442, 1183, 564,
159214
+ /* 1110 */ 1204, 544, 1086, 858, 329, 361, 1086, 119, 119, 119,
159215
+ /* 1120 */ 119, 118, 118, 117, 117, 117, 116, 442, 564, 294,
159216
+ /* 1130 */ 144, 523, 56, 56, 224, 564, 510, 119, 119, 119,
159217
+ /* 1140 */ 119, 118, 118, 117, 117, 117, 116, 442, 484, 1409,
159218
+ /* 1150 */ 537, 15, 15, 1126, 434, 439, 438, 407, 13, 13,
159219
+ /* 1160 */ 1523, 12, 926, 1211, 1183, 1184, 1185, 925, 1213, 536,
159220
+ /* 1170 */ 858, 557, 413, 193, 1525, 494, 1212, 448, 1160, 1222,
159221
+ /* 1180 */ 1183, 564, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034,
159222
+ /* 1190 */ 120, 120, 121, 121, 121, 121, 1521, 1149, 564, 965,
159223
+ /* 1200 */ 564, 1214, 247, 1214, 13, 13, 1409, 966, 538, 564,
159224
+ /* 1210 */ 1149, 108, 556, 1149, 4, 310, 392, 1227, 17, 194,
159225
+ /* 1220 */ 485, 43, 43, 57, 57, 306, 555, 524, 559, 1160,
159226
+ /* 1230 */ 464, 564, 44, 44, 392, 1127, 1183, 1184, 1185, 479,
158939159227
/* 1240 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
158940
- /* 1250 */ 441, 442, 59, 59, 1101, 516, 1535, 273, 273, 563,
158941
- /* 1260 */ 6, 563, 110, 552, 563, 528, 423, 413, 169, 548,
158942
- /* 1270 */ 560, 108, 555, 137, 4, 551, 484, 272, 215, 222,
158943
- /* 1280 */ 211, 60, 60, 61, 61, 98, 62, 62, 558, 273,
158944
- /* 1290 */ 273, 563, 1015, 467, 1221, 563, 434, 563, 106, 106,
158945
- /* 1300 */ 8, 920, 560, 273, 273, 107, 919, 442, 565, 564,
158946
- /* 1310 */ 563, 442, 1005, 45, 45, 464, 560, 46, 46, 47,
158947
- /* 1320 */ 47, 84, 202, 552, 1215, 404, 468, 563, 205, 304,
158948
- /* 1330 */ 554, 563, 49, 49, 563, 522, 404, 532, 563, 867,
158949
- /* 1340 */ 563, 105, 531, 103, 1005, 1005, 1007, 1008, 27, 50,
158950
- /* 1350 */ 50, 563, 1015, 63, 63, 475, 64, 64, 106, 106,
158951
- /* 1360 */ 65, 65, 14, 14, 17, 107, 563, 442, 565, 564,
158952
- /* 1370 */ 563, 303, 1005, 66, 66, 563, 226, 563, 959, 563,
158953
- /* 1380 */ 543, 404, 1196, 1343, 871, 278, 960, 456, 128, 128,
158954
- /* 1390 */ 563, 1065, 67, 67, 563, 206, 867, 52, 52, 68,
158955
- /* 1400 */ 68, 69, 69, 417, 1005, 1005, 1007, 1008, 27, 1563,
158956
- /* 1410 */ 1165, 444, 53, 53, 277, 1519, 156, 156, 307, 389,
158957
- /* 1420 */ 389, 388, 262, 386, 1165, 444, 839, 321, 277, 108,
158958
- /* 1430 */ 555, 523, 4, 389, 389, 388, 262, 386, 563, 223,
158959
- /* 1440 */ 839, 311, 326, 1492, 1117, 98, 558, 393, 1065, 310,
158960
- /* 1450 */ 563, 476, 563, 223, 563, 311, 879, 878, 1009, 277,
158961
- /* 1460 */ 157, 157, 463, 310, 389, 389, 388, 262, 386, 442,
158962
- /* 1470 */ 518, 839, 76, 76, 54, 54, 72, 72, 355, 225,
158963
- /* 1480 */ 563, 552, 275, 563, 223, 325, 311, 161, 354, 465,
158964
- /* 1490 */ 135, 563, 228, 225, 310, 532, 563, 206, 886, 887,
158965
- /* 1500 */ 533, 161, 129, 129, 135, 73, 73, 224, 962, 963,
158966
- /* 1510 */ 1015, 563, 287, 130, 130, 1009, 106, 106, 131, 131,
158967
- /* 1520 */ 563, 224, 563, 107, 225, 442, 565, 564, 997, 1276,
158968
- /* 1530 */ 1005, 250, 161, 127, 127, 135, 108, 555, 1077, 4,
158969
- /* 1540 */ 1077, 407, 155, 155, 154, 154, 304, 554, 1126, 563,
158970
- /* 1550 */ 1331, 563, 224, 558, 470, 407, 563, 250, 563, 1491,
158971
- /* 1560 */ 304, 554, 1005, 1005, 1007, 1008, 27, 563, 480, 332,
158972
- /* 1570 */ 448, 136, 136, 134, 134, 1340, 442, 336, 132, 132,
158973
- /* 1580 */ 133, 133, 563, 1076, 448, 1076, 407, 563, 552, 75,
158974
- /* 1590 */ 75, 304, 554, 339, 341, 343, 108, 555, 563, 4,
158975
- /* 1600 */ 1577, 299, 532, 563, 77, 77, 1291, 531, 472, 74,
158976
- /* 1610 */ 74, 250, 1275, 558, 350, 448, 331, 1015, 360, 98,
158977
- /* 1620 */ 42, 42, 1352, 106, 106, 48, 48, 1399, 494, 1327,
158978
- /* 1630 */ 107, 247, 442, 565, 564, 345, 442, 1005, 98, 1061,
158979
- /* 1640 */ 953, 917, 247, 250, 110, 1552, 550, 850, 552, 918,
158980
- /* 1650 */ 144, 1338, 110, 549, 1405, 1256, 1248, 1237, 1236, 1238,
158981
- /* 1660 */ 1571, 1324, 208, 390, 489, 265, 363, 200, 365, 1005,
158982
- /* 1670 */ 1005, 1007, 1008, 27, 11, 280, 221, 1015, 323, 474,
158983
- /* 1680 */ 1274, 367, 212, 106, 106, 924, 1386, 324, 288, 1381,
158984
- /* 1690 */ 107, 453, 442, 565, 564, 283, 329, 1005, 1391, 499,
158985
- /* 1700 */ 353, 1374, 1464, 108, 555, 1463, 4, 1574, 1390, 397,
158986
- /* 1710 */ 1215, 171, 254, 369, 383, 207, 195, 196, 1511, 553,
158987
- /* 1720 */ 558, 1509, 415, 1212, 100, 555, 83, 4, 204, 1005,
158988
- /* 1730 */ 1005, 1007, 1008, 27, 180, 166, 173, 219, 79, 82,
158989
- /* 1740 */ 458, 558, 175, 442, 35, 1387, 176, 459, 177, 178,
158990
- /* 1750 */ 492, 231, 96, 1469, 395, 552, 1393, 1392, 36, 466,
158991
- /* 1760 */ 1395, 184, 398, 481, 442, 1458, 235, 89, 1480, 487,
158992
- /* 1770 */ 266, 334, 237, 188, 490, 400, 552, 338, 238, 508,
158993
- /* 1780 */ 1239, 239, 1294, 1293, 1015, 1292, 1285, 429, 91, 871,
158994
- /* 1790 */ 106, 106, 1588, 213, 401, 1587, 431, 107, 1264, 442,
158995
- /* 1800 */ 565, 564, 1263, 352, 1005, 1015, 1262, 1586, 1557, 517,
158996
- /* 1810 */ 432, 106, 106, 1284, 297, 298, 358, 524, 107, 1335,
158997
- /* 1820 */ 442, 565, 564, 95, 1336, 1005, 252, 253, 435, 125,
158998
- /* 1830 */ 543, 1543, 10, 1444, 377, 1542, 1005, 1005, 1007, 1008,
158999
- /* 1840 */ 27, 97, 527, 375, 362, 102, 260, 364, 381, 1317,
159000
- /* 1850 */ 382, 1334, 366, 1245, 1333, 1316, 368, 1005, 1005, 1007,
159001
- /* 1860 */ 1008, 27, 1359, 1358, 34, 199, 1171, 566, 261, 263,
159002
- /* 1870 */ 264, 567, 1234, 158, 1229, 141, 295, 159, 1496, 302,
159003
- /* 1880 */ 1497, 1495, 1494, 160, 826, 209, 443, 201, 306, 210,
159004
- /* 1890 */ 78, 220, 1075, 138, 1073, 314, 162, 172, 1196, 227,
159005
- /* 1900 */ 174, 903, 322, 230, 1089, 179, 163, 164, 418, 408,
159006
- /* 1910 */ 409, 170, 181, 85, 86, 420, 87, 165, 1092, 88,
159007
- /* 1920 */ 233, 232, 1088, 151, 18, 234, 1081, 250, 333, 1209,
159008
- /* 1930 */ 185, 486, 236, 186, 37, 841, 491, 354, 240, 346,
159009
- /* 1940 */ 495, 187, 90, 869, 19, 20, 500, 503, 349, 92,
159010
- /* 1950 */ 167, 152, 296, 882, 93, 510, 94, 1159, 153, 1041,
159011
- /* 1960 */ 1128, 39, 214, 269, 1127, 271, 249, 952, 190, 947,
159012
- /* 1970 */ 110, 1149, 21, 7, 1153, 22, 1145, 23, 1147, 24,
159013
- /* 1980 */ 1133, 25, 1152, 33, 539, 193, 26, 1056, 98, 1042,
159014
- /* 1990 */ 1040, 1044, 1098, 1045, 1097, 256, 255, 28, 40, 257,
159015
- /* 2000 */ 1010, 851, 109, 29, 913, 559, 384, 387, 258, 1167,
159016
- /* 2010 */ 1166, 1225, 1225, 1225, 1579, 1225, 1225, 1225, 1225, 1225,
159017
- /* 2020 */ 1225, 1225, 1578,
159228
+ /* 1250 */ 442, 443, 564, 327, 13, 13, 564, 418, 1315, 414,
159229
+ /* 1260 */ 171, 564, 311, 553, 213, 529, 1253, 564, 517, 543,
159230
+ /* 1270 */ 412, 108, 556, 137, 4, 58, 58, 435, 314, 59,
159231
+ /* 1280 */ 59, 274, 217, 549, 60, 60, 349, 476, 559, 1353,
159232
+ /* 1290 */ 61, 61, 1021, 275, 275, 1228, 213, 564, 106, 106,
159233
+ /* 1300 */ 8, 275, 275, 275, 275, 107, 561, 443, 566, 565,
159234
+ /* 1310 */ 564, 443, 1011, 1228, 561, 564, 561, 564, 275, 275,
159235
+ /* 1320 */ 62, 62, 1352, 553, 247, 456, 564, 98, 110, 306,
159236
+ /* 1330 */ 555, 561, 564, 45, 45, 405, 1203, 533, 46, 46,
159237
+ /* 1340 */ 47, 47, 532, 465, 1011, 1011, 1013, 1014, 27, 49,
159238
+ /* 1350 */ 49, 564, 1021, 405, 469, 50, 50, 564, 106, 106,
159239
+ /* 1360 */ 305, 564, 84, 204, 405, 107, 564, 443, 566, 565,
159240
+ /* 1370 */ 405, 564, 1011, 564, 63, 63, 564, 1599, 564, 895,
159241
+ /* 1380 */ 64, 64, 457, 477, 65, 65, 147, 96, 38, 14,
159242
+ /* 1390 */ 14, 1528, 412, 564, 66, 66, 128, 128, 926, 67,
159243
+ /* 1400 */ 67, 52, 52, 925, 1011, 1011, 1013, 1014, 27, 1572,
159244
+ /* 1410 */ 1171, 445, 208, 1123, 279, 394, 68, 68, 228, 390,
159245
+ /* 1420 */ 390, 389, 264, 387, 1171, 445, 843, 877, 279, 108,
159246
+ /* 1430 */ 556, 453, 4, 390, 390, 389, 264, 387, 564, 225,
159247
+ /* 1440 */ 843, 313, 328, 1003, 98, 252, 559, 544, 471, 312,
159248
+ /* 1450 */ 252, 564, 208, 225, 564, 313, 473, 30, 252, 279,
159249
+ /* 1460 */ 466, 69, 69, 312, 390, 390, 389, 264, 387, 443,
159250
+ /* 1470 */ 333, 843, 98, 564, 53, 53, 323, 157, 157, 227,
159251
+ /* 1480 */ 495, 553, 249, 289, 225, 564, 313, 162, 31, 1501,
159252
+ /* 1490 */ 135, 564, 1500, 227, 312, 533, 158, 158, 885, 884,
159253
+ /* 1500 */ 534, 162, 873, 301, 135, 564, 481, 226, 76, 76,
159254
+ /* 1510 */ 1021, 347, 1071, 98, 54, 54, 106, 106, 1067, 564,
159255
+ /* 1520 */ 249, 226, 519, 107, 227, 443, 566, 565, 72, 72,
159256
+ /* 1530 */ 1011, 334, 162, 564, 230, 135, 108, 556, 959, 4,
159257
+ /* 1540 */ 252, 408, 129, 129, 564, 1349, 306, 555, 564, 923,
159258
+ /* 1550 */ 564, 110, 226, 559, 564, 408, 73, 73, 564, 873,
159259
+ /* 1560 */ 306, 555, 1011, 1011, 1013, 1014, 27, 130, 130, 1071,
159260
+ /* 1570 */ 449, 131, 131, 127, 127, 357, 443, 156, 156, 892,
159261
+ /* 1580 */ 893, 155, 155, 338, 449, 356, 408, 564, 553, 968,
159262
+ /* 1590 */ 969, 306, 555, 1015, 341, 564, 108, 556, 564, 4,
159263
+ /* 1600 */ 1132, 1286, 533, 564, 856, 343, 145, 532, 345, 1300,
159264
+ /* 1610 */ 136, 136, 1083, 559, 1083, 449, 564, 1021, 134, 134,
159265
+ /* 1620 */ 1284, 132, 132, 106, 106, 1285, 133, 133, 564, 352,
159266
+ /* 1630 */ 107, 564, 443, 566, 565, 1340, 443, 1011, 362, 75,
159267
+ /* 1640 */ 75, 1082, 564, 1082, 564, 924, 1561, 110, 553, 551,
159268
+ /* 1650 */ 1015, 77, 77, 1361, 74, 74, 1408, 1336, 1347, 550,
159269
+ /* 1660 */ 1414, 1265, 1256, 1244, 1243, 42, 42, 48, 48, 1011,
159270
+ /* 1670 */ 1011, 1013, 1014, 27, 1245, 1580, 490, 1021, 267, 202,
159271
+ /* 1680 */ 1333, 365, 11, 106, 106, 930, 367, 210, 369, 391,
159272
+ /* 1690 */ 107, 1395, 443, 566, 565, 223, 1390, 1011, 500, 454,
159273
+ /* 1700 */ 282, 1400, 285, 108, 556, 214, 4, 325, 1383, 1283,
159274
+ /* 1710 */ 475, 355, 1473, 1583, 1472, 1399, 371, 1222, 326, 398,
159275
+ /* 1720 */ 559, 290, 331, 197, 100, 556, 209, 4, 198, 1011,
159276
+ /* 1730 */ 1011, 1013, 1014, 27, 385, 256, 1520, 1518, 554, 1219,
159277
+ /* 1740 */ 416, 559, 83, 443, 173, 206, 182, 221, 459, 167,
159278
+ /* 1750 */ 177, 460, 175, 493, 233, 553, 79, 178, 1396, 179,
159279
+ /* 1760 */ 35, 180, 96, 1402, 443, 396, 36, 467, 1478, 1401,
159280
+ /* 1770 */ 482, 237, 1404, 399, 82, 186, 553, 1467, 89, 488,
159281
+ /* 1780 */ 190, 268, 239, 491, 1021, 340, 240, 401, 1246, 1489,
159282
+ /* 1790 */ 106, 106, 336, 509, 1294, 241, 1303, 107, 430, 443,
159283
+ /* 1800 */ 566, 565, 1302, 91, 1011, 1021, 1598, 1301, 1273, 215,
159284
+ /* 1810 */ 1597, 106, 106, 402, 877, 432, 354, 1272, 107, 1271,
159285
+ /* 1820 */ 443, 566, 565, 1596, 1566, 1011, 1293, 433, 518, 299,
159286
+ /* 1830 */ 300, 360, 95, 525, 1344, 364, 1011, 1011, 1013, 1014,
159287
+ /* 1840 */ 27, 254, 255, 1552, 436, 1551, 125, 544, 10, 379,
159288
+ /* 1850 */ 1326, 1453, 102, 97, 1345, 528, 304, 1011, 1011, 1013,
159289
+ /* 1860 */ 1014, 27, 366, 377, 1343, 1342, 368, 370, 1325, 384,
159290
+ /* 1870 */ 201, 383, 34, 1368, 1367, 568, 1177, 266, 263, 265,
159291
+ /* 1880 */ 1505, 159, 569, 1241, 1236, 1506, 160, 142, 1504, 1503,
159292
+ /* 1890 */ 297, 211, 830, 161, 212, 78, 444, 203, 308, 222,
159293
+ /* 1900 */ 1081, 139, 1079, 316, 174, 163, 1203, 229, 176, 909,
159294
+ /* 1910 */ 324, 232, 1095, 181, 409, 410, 172, 164, 165, 419,
159295
+ /* 1920 */ 183, 85, 86, 421, 166, 87, 88, 1098, 1094, 234,
159296
+ /* 1930 */ 235, 152, 18, 236, 335, 1087, 1216, 252, 187, 487,
159297
+ /* 1940 */ 238, 188, 37, 845, 492, 356, 242, 496, 351, 501,
159298
+ /* 1950 */ 189, 90, 19, 504, 348, 20, 875, 92, 298, 168,
159299
+ /* 1960 */ 888, 153, 93, 511, 94, 1165, 154, 1047, 1134, 39,
159300
+ /* 1970 */ 216, 1133, 271, 273, 958, 192, 953, 110, 1151, 1155,
159301
+ /* 1980 */ 251, 7, 21, 1159, 1139, 22, 1153, 33, 23, 24,
159302
+ /* 1990 */ 25, 540, 1158, 195, 98, 1062, 26, 1048, 1046, 1050,
159303
+ /* 2000 */ 1104, 1051, 1103, 257, 258, 28, 40, 1173, 1016, 857,
159304
+ /* 2010 */ 109, 29, 560, 388, 138, 1172, 259, 170, 260, 1232,
159305
+ /* 2020 */ 1232, 919, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
159306
+ /* 2030 */ 1232, 1232, 1589, 1232, 1232, 1232, 1588,
159018159307
};
159019159308
static const YYCODETYPE yy_lookahead[] = {
159020
- /* 0 */ 192, 221, 192, 223, 192, 214, 272, 273, 274, 217,
159021
- /* 10 */ 192, 231, 217, 192, 192, 192, 272, 273, 274, 19,
159022
- /* 20 */ 233, 234, 214, 215, 214, 215, 203, 293, 203, 233,
159023
- /* 30 */ 234, 31, 214, 215, 214, 214, 215, 214, 215, 39,
159024
- /* 40 */ 208, 209, 210, 43, 44, 45, 46, 47, 48, 49,
159025
- /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 236, 19,
159026
- /* 60 */ 237, 238, 237, 238, 272, 273, 274, 272, 273, 274,
159027
- /* 70 */ 192, 211, 251, 250, 251, 250, 26, 192, 200, 254,
159028
- /* 80 */ 255, 260, 204, 43, 44, 45, 46, 47, 48, 49,
159029
- /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 214,
159030
- /* 100 */ 215, 214, 102, 103, 104, 105, 106, 107, 108, 109,
159031
- /* 110 */ 110, 111, 112, 59, 229, 192, 294, 16, 306, 307,
159032
- /* 120 */ 312, 313, 312, 311, 314, 59, 86, 204, 88, 19,
159033
- /* 130 */ 312, 313, 272, 273, 274, 271, 26, 22, 54, 55,
159309
+ /* 0 */ 192, 273, 274, 275, 192, 192, 273, 274, 275, 192,
159310
+ /* 10 */ 218, 215, 192, 218, 192, 212, 234, 235, 205, 19,
159311
+ /* 20 */ 11, 192, 294, 215, 216, 203, 192, 203, 209, 210,
159312
+ /* 30 */ 211, 31, 215, 216, 205, 215, 216, 215, 216, 39,
159313
+ /* 40 */ 227, 215, 229, 43, 44, 45, 46, 47, 48, 49,
159314
+ /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 19,
159315
+ /* 60 */ 238, 239, 238, 239, 215, 273, 274, 275, 273, 274,
159316
+ /* 70 */ 275, 237, 21, 251, 252, 251, 273, 274, 275, 255,
159317
+ /* 80 */ 256, 215, 216, 43, 44, 45, 46, 47, 48, 49,
159318
+ /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 209, 210,
159319
+ /* 100 */ 211, 76, 102, 103, 104, 105, 106, 107, 108, 109,
159320
+ /* 110 */ 110, 111, 112, 59, 89, 111, 112, 92, 252, 307,
159321
+ /* 120 */ 308, 313, 314, 112, 312, 59, 86, 261, 88, 19,
159322
+ /* 130 */ 313, 80, 315, 313, 314, 25, 127, 128, 54, 55,
159034159323
/* 140 */ 56, 57, 102, 103, 104, 105, 106, 107, 108, 109,
159035159324
/* 150 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
159036
- /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 53, 115,
159037
- /* 170 */ 116, 117, 118, 309, 310, 121, 122, 123, 77, 69,
159038
- /* 180 */ 79, 115, 116, 117, 59, 131, 102, 103, 104, 105,
159039
- /* 190 */ 106, 107, 108, 109, 110, 111, 112, 72, 148, 19,
159325
+ /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 115,
159326
+ /* 170 */ 116, 117, 118, 122, 192, 121, 122, 123, 202, 69,
159327
+ /* 180 */ 204, 115, 116, 117, 192, 131, 102, 103, 104, 105,
159328
+ /* 190 */ 106, 107, 108, 109, 110, 111, 112, 215, 216, 19,
159040159329
/* 200 */ 54, 55, 56, 57, 58, 108, 109, 110, 111, 112,
159041
- /* 210 */ 304, 305, 102, 103, 104, 105, 106, 107, 108, 109,
159330
+ /* 210 */ 192, 160, 102, 103, 104, 105, 106, 107, 108, 109,
159042159331
/* 220 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
159043
- /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 112,
159044
- /* 240 */ 115, 116, 117, 24, 208, 209, 210, 67, 102, 103,
159045
- /* 250 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 192,
159046
- /* 260 */ 59, 160, 43, 44, 45, 46, 47, 48, 49, 50,
159047
- /* 270 */ 51, 52, 53, 54, 55, 56, 57, 19, 46, 47,
159048
- /* 280 */ 48, 49, 102, 103, 104, 105, 106, 107, 108, 109,
159049
- /* 290 */ 110, 111, 112, 213, 73, 184, 185, 186, 187, 188,
159050
- /* 300 */ 189, 221, 81, 236, 46, 194, 192, 196, 19, 59,
159051
- /* 310 */ 133, 59, 135, 136, 203, 192, 115, 116, 117, 127,
159052
- /* 320 */ 128, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159332
+ /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 46,
159333
+ /* 240 */ 47, 48, 49, 24, 248, 192, 250, 67, 102, 103,
159334
+ /* 250 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 277,
159335
+ /* 260 */ 127, 128, 43, 44, 45, 46, 47, 48, 49, 50,
159336
+ /* 270 */ 51, 52, 53, 54, 55, 56, 57, 26, 164, 165,
159337
+ /* 280 */ 272, 263, 102, 103, 104, 105, 106, 107, 108, 109,
159338
+ /* 290 */ 110, 111, 112, 184, 185, 186, 187, 188, 189, 186,
159339
+ /* 300 */ 187, 188, 189, 194, 76, 196, 229, 194, 19, 196,
159340
+ /* 310 */ 59, 192, 203, 120, 59, 87, 203, 89, 310, 311,
159341
+ /* 320 */ 92, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159053159342
/* 330 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
159054
- /* 340 */ 51, 52, 53, 54, 55, 56, 57, 126, 237, 238,
159055
- /* 350 */ 100, 150, 120, 230, 186, 187, 188, 189, 137, 138,
159056
- /* 360 */ 108, 250, 194, 26, 196, 115, 116, 115, 116, 117,
159057
- /* 370 */ 120, 203, 114, 164, 165, 264, 102, 103, 104, 105,
159058
- /* 380 */ 106, 107, 108, 109, 110, 111, 112, 192, 130, 111,
159059
- /* 390 */ 112, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159060
- /* 400 */ 111, 112, 152, 153, 154, 237, 238, 296, 192, 214,
159061
- /* 410 */ 215, 228, 192, 307, 192, 19, 59, 311, 250, 23,
159062
- /* 420 */ 22, 106, 107, 108, 109, 110, 111, 112, 192, 72,
159063
- /* 430 */ 214, 215, 264, 192, 214, 215, 214, 215, 149, 43,
159343
+ /* 340 */ 51, 52, 53, 54, 55, 56, 57, 238, 239, 73,
159344
+ /* 350 */ 231, 238, 239, 22, 23, 100, 25, 81, 305, 306,
159345
+ /* 360 */ 251, 23, 25, 25, 251, 272, 115, 116, 117, 214,
159346
+ /* 370 */ 115, 116, 144, 192, 265, 120, 114, 222, 265, 102,
159347
+ /* 380 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
159348
+ /* 390 */ 192, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159349
+ /* 400 */ 111, 112, 126, 310, 311, 192, 297, 152, 153, 154,
159350
+ /* 410 */ 297, 149, 192, 137, 138, 19, 192, 100, 192, 23,
159351
+ /* 420 */ 22, 106, 107, 108, 109, 110, 111, 112, 215, 216,
159352
+ /* 430 */ 106, 107, 101, 116, 192, 215, 216, 120, 149, 43,
159064159353
/* 440 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
159065
- /* 450 */ 54, 55, 56, 57, 117, 214, 215, 59, 19, 187,
159066
- /* 460 */ 192, 189, 23, 81, 296, 192, 194, 251, 196, 59,
159067
- /* 470 */ 229, 251, 115, 116, 117, 203, 260, 106, 107, 142,
159068
- /* 480 */ 260, 267, 43, 44, 45, 46, 47, 48, 49, 50,
159069
- /* 490 */ 51, 52, 53, 54, 55, 56, 57, 261, 102, 103,
159070
- /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 237,
159071
- /* 510 */ 238, 76, 192, 115, 116, 117, 144, 192, 76, 137,
159072
- /* 520 */ 138, 192, 250, 152, 89, 154, 116, 92, 19, 87,
159073
- /* 530 */ 262, 89, 23, 22, 92, 163, 264, 192, 22, 214,
159074
- /* 540 */ 215, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159354
+ /* 450 */ 54, 55, 56, 57, 117, 117, 192, 59, 19, 187,
159355
+ /* 460 */ 59, 189, 23, 282, 240, 252, 194, 192, 196, 152,
159356
+ /* 470 */ 153, 154, 252, 72, 261, 203, 152, 25, 154, 142,
159357
+ /* 480 */ 142, 261, 43, 44, 45, 46, 47, 48, 49, 50,
159358
+ /* 490 */ 51, 52, 53, 54, 55, 56, 57, 192, 102, 103,
159359
+ /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 267,
159360
+ /* 510 */ 238, 239, 237, 115, 116, 117, 115, 116, 117, 192,
159361
+ /* 520 */ 59, 118, 16, 251, 121, 122, 123, 303, 19, 303,
159362
+ /* 530 */ 59, 267, 23, 72, 131, 308, 22, 265, 22, 312,
159363
+ /* 540 */ 24, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159075159364
/* 550 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
159076
- /* 560 */ 51, 52, 53, 54, 55, 56, 57, 19, 296, 118,
159077
- /* 570 */ 59, 23, 121, 122, 123, 59, 251, 26, 46, 306,
159078
- /* 580 */ 307, 261, 131, 192, 311, 192, 144, 192, 22, 203,
159079
- /* 590 */ 100, 43, 44, 45, 46, 47, 48, 49, 50, 51,
159080
- /* 600 */ 52, 53, 54, 55, 56, 57, 116, 214, 215, 271,
159081
- /* 610 */ 120, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159082
- /* 620 */ 111, 112, 229, 237, 238, 59, 115, 116, 117, 299,
159083
- /* 630 */ 300, 115, 116, 117, 59, 16, 250, 19, 192, 192,
159084
- /* 640 */ 19, 23, 152, 153, 154, 24, 114, 309, 310, 192,
159365
+ /* 560 */ 51, 52, 53, 54, 55, 56, 57, 19, 81, 297,
159366
+ /* 570 */ 295, 23, 192, 59, 203, 59, 115, 116, 117, 108,
159367
+ /* 580 */ 192, 73, 25, 77, 192, 79, 115, 116, 117, 137,
159368
+ /* 590 */ 138, 43, 44, 45, 46, 47, 48, 49, 50, 51,
159369
+ /* 600 */ 52, 53, 54, 55, 56, 57, 119, 215, 216, 238,
159370
+ /* 610 */ 239, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159371
+ /* 620 */ 111, 112, 251, 192, 137, 138, 59, 234, 235, 115,
159372
+ /* 630 */ 116, 117, 116, 76, 126, 127, 128, 19, 192, 268,
159373
+ /* 640 */ 19, 23, 22, 192, 252, 24, 89, 300, 301, 92,
159085159374
/* 650 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
159086159375
/* 660 */ 112, 43, 44, 45, 46, 47, 48, 49, 50, 51,
159087
- /* 670 */ 52, 53, 54, 55, 56, 57, 19, 7, 8, 9,
159088
- /* 680 */ 23, 115, 116, 117, 203, 290, 239, 238, 137, 138,
159089
- /* 690 */ 115, 116, 117, 236, 192, 22, 77, 81, 79, 250,
159376
+ /* 670 */ 52, 53, 54, 55, 56, 57, 19, 192, 192, 59,
159377
+ /* 680 */ 23, 192, 115, 116, 117, 200, 240, 307, 308, 22,
159378
+ /* 690 */ 205, 81, 312, 262, 22, 192, 133, 22, 135, 136,
159090159379
/* 700 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
159091
- /* 710 */ 53, 54, 55, 56, 57, 192, 95, 142, 237, 238,
159380
+ /* 710 */ 53, 54, 55, 56, 57, 197, 95, 150, 215, 216,
159092159381
/* 720 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
159093
- /* 730 */ 112, 250, 59, 112, 192, 119, 26, 214, 215, 118,
159094
- /* 740 */ 119, 120, 121, 122, 123, 124, 19, 192, 267, 302,
159095
- /* 750 */ 23, 130, 229, 137, 138, 23, 214, 215, 26, 102,
159382
+ /* 730 */ 112, 59, 192, 112, 59, 115, 116, 117, 192, 118,
159383
+ /* 740 */ 119, 120, 121, 122, 123, 124, 19, 137, 138, 303,
159384
+ /* 750 */ 23, 130, 192, 267, 192, 252, 267, 306, 203, 102,
159096159385
/* 760 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
159097159386
/* 770 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
159098
- /* 780 */ 53, 54, 55, 56, 57, 19, 76, 11, 115, 116,
159099
- /* 790 */ 117, 192, 29, 251, 239, 73, 33, 192, 192, 89,
159100
- /* 800 */ 192, 192, 92, 192, 192, 126, 127, 128, 224, 43,
159387
+ /* 780 */ 53, 54, 55, 56, 57, 19, 240, 115, 116, 117,
159388
+ /* 790 */ 115, 116, 117, 238, 239, 222, 192, 224, 280, 237,
159389
+ /* 800 */ 240, 192, 284, 192, 59, 232, 251, 140, 204, 43,
159101159390
/* 810 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
159102
- /* 820 */ 54, 55, 56, 57, 192, 35, 214, 215, 65, 102,
159391
+ /* 820 */ 54, 55, 56, 57, 192, 35, 215, 216, 192, 102,
159103159392
/* 830 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
159104
- /* 840 */ 59, 229, 192, 192, 239, 239, 214, 215, 126, 127,
159105
- /* 850 */ 128, 126, 127, 128, 307, 19, 66, 302, 311, 192,
159106
- /* 860 */ 261, 229, 224, 22, 74, 214, 215, 192, 102, 103,
159393
+ /* 840 */ 59, 230, 192, 192, 238, 239, 237, 215, 216, 303,
159394
+ /* 850 */ 308, 215, 216, 16, 312, 19, 66, 251, 126, 127,
159395
+ /* 860 */ 128, 116, 230, 303, 74, 203, 215, 216, 102, 103,
159107159396
/* 870 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 43,
159108159397
/* 880 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
159109
- /* 890 */ 54, 55, 56, 57, 192, 192, 115, 116, 117, 19,
159110
- /* 900 */ 59, 290, 251, 127, 128, 192, 23, 302, 302, 26,
159111
- /* 910 */ 302, 236, 192, 22, 21, 24, 214, 215, 192, 129,
159112
- /* 920 */ 22, 192, 24, 142, 158, 45, 46, 47, 48, 49,
159398
+ /* 890 */ 54, 55, 56, 57, 192, 212, 115, 116, 117, 19,
159399
+ /* 900 */ 238, 239, 192, 252, 7, 8, 9, 192, 192, 238,
159400
+ /* 910 */ 239, 308, 262, 251, 77, 312, 79, 215, 216, 129,
159401
+ /* 920 */ 210, 211, 251, 142, 158, 45, 46, 47, 48, 49,
159113159402
/* 930 */ 50, 51, 52, 53, 54, 55, 56, 57, 102, 103,
159114
- /* 940 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 192,
159115
- /* 950 */ 59, 12, 192, 251, 192, 305, 192, 116, 22, 23,
159116
- /* 960 */ 242, 203, 26, 203, 24, 236, 27, 237, 238, 266,
159117
- /* 970 */ 252, 214, 215, 80, 214, 215, 214, 215, 214, 215,
159118
- /* 980 */ 250, 42, 102, 103, 104, 105, 106, 107, 108, 109,
159119
- /* 990 */ 110, 111, 112, 229, 158, 237, 238, 237, 238, 59,
159120
- /* 1000 */ 117, 281, 63, 192, 192, 192, 192, 116, 250, 192,
159121
- /* 1010 */ 250, 251, 73, 251, 19, 122, 290, 237, 238, 24,
159122
- /* 1020 */ 260, 209, 210, 209, 210, 142, 242, 214, 215, 197,
159123
- /* 1030 */ 250, 22, 23, 276, 19, 26, 252, 101, 43, 44,
159403
+ /* 940 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 12,
159404
+ /* 950 */ 59, 192, 192, 237, 252, 243, 192, 192, 126, 127,
159405
+ /* 960 */ 128, 192, 308, 203, 27, 253, 312, 308, 285, 207,
159406
+ /* 970 */ 208, 312, 157, 290, 159, 215, 216, 262, 192, 42,
159407
+ /* 980 */ 215, 216, 102, 103, 104, 105, 106, 107, 108, 109,
159408
+ /* 990 */ 110, 111, 112, 283, 158, 230, 237, 160, 238, 239,
159409
+ /* 1000 */ 63, 215, 216, 192, 192, 12, 115, 116, 117, 22,
159410
+ /* 1010 */ 73, 251, 252, 192, 19, 192, 230, 239, 24, 24,
159411
+ /* 1020 */ 27, 261, 210, 211, 99, 192, 215, 216, 225, 251,
159412
+ /* 1030 */ 192, 192, 263, 142, 19, 42, 215, 216, 43, 44,
159124159413
/* 1040 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
159125
- /* 1050 */ 55, 56, 57, 160, 19, 211, 116, 192, 43, 44,
159414
+ /* 1050 */ 55, 56, 57, 59, 19, 291, 63, 132, 43, 44,
159126159415
/* 1060 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
159127
- /* 1070 */ 55, 56, 57, 192, 192, 22, 192, 266, 43, 44,
159416
+ /* 1070 */ 55, 56, 57, 252, 22, 23, 22, 25, 43, 44,
159128159417
/* 1080 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
159129
- /* 1090 */ 55, 56, 57, 192, 282, 192, 282, 102, 103, 104,
159418
+ /* 1090 */ 55, 56, 57, 106, 107, 283, 263, 102, 103, 104,
159130159419
/* 1100 */ 105, 106, 107, 108, 109, 110, 111, 112, 59, 192,
159131
- /* 1110 */ 101, 279, 192, 192, 230, 283, 192, 102, 103, 104,
159132
- /* 1120 */ 105, 106, 107, 108, 109, 110, 111, 112, 204, 211,
159133
- /* 1130 */ 66, 214, 215, 289, 214, 215, 108, 102, 103, 104,
159134
- /* 1140 */ 105, 106, 107, 108, 109, 110, 111, 112, 266, 85,
159135
- /* 1150 */ 226, 192, 228, 22, 23, 106, 107, 19, 94, 106,
159136
- /* 1160 */ 107, 192, 134, 114, 115, 116, 117, 139, 119, 266,
159137
- /* 1170 */ 203, 206, 207, 214, 215, 192, 127, 192, 206, 207,
159420
+ /* 1110 */ 116, 144, 29, 59, 291, 192, 33, 102, 103, 104,
159421
+ /* 1120 */ 105, 106, 107, 108, 109, 110, 111, 112, 192, 291,
159422
+ /* 1130 */ 163, 19, 215, 216, 15, 192, 108, 102, 103, 104,
159423
+ /* 1140 */ 105, 106, 107, 108, 109, 110, 111, 112, 65, 192,
159424
+ /* 1150 */ 66, 215, 216, 101, 231, 106, 107, 19, 215, 216,
159425
+ /* 1160 */ 192, 212, 134, 114, 115, 116, 117, 139, 119, 85,
159426
+ /* 1170 */ 116, 207, 208, 230, 192, 19, 127, 192, 94, 60,
159138159427
/* 1180 */ 59, 192, 44, 45, 46, 47, 48, 49, 50, 51,
159139
- /* 1190 */ 52, 53, 54, 55, 56, 57, 192, 76, 192, 214,
159140
- /* 1200 */ 215, 152, 284, 154, 237, 238, 192, 289, 87, 145,
159141
- /* 1210 */ 89, 19, 20, 92, 22, 22, 23, 250, 307, 236,
159142
- /* 1220 */ 214, 215, 311, 203, 12, 247, 192, 249, 36, 307,
159143
- /* 1230 */ 192, 262, 101, 311, 137, 138, 115, 116, 117, 27,
159428
+ /* 1190 */ 52, 53, 54, 55, 56, 57, 192, 76, 192, 31,
159429
+ /* 1200 */ 192, 152, 46, 154, 215, 216, 192, 39, 87, 192,
159430
+ /* 1210 */ 89, 19, 20, 92, 22, 192, 22, 23, 22, 230,
159431
+ /* 1220 */ 263, 215, 216, 215, 216, 137, 138, 115, 36, 145,
159432
+ /* 1230 */ 128, 192, 215, 216, 22, 23, 115, 116, 117, 290,
159144159433
/* 1240 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
159145
- /* 1250 */ 112, 59, 214, 215, 42, 203, 307, 237, 238, 192,
159146
- /* 1260 */ 311, 192, 26, 71, 192, 144, 262, 297, 298, 203,
159147
- /* 1270 */ 250, 19, 20, 81, 22, 63, 262, 254, 255, 15,
159148
- /* 1280 */ 26, 214, 215, 214, 215, 26, 214, 215, 36, 237,
159149
- /* 1290 */ 238, 192, 100, 114, 101, 192, 262, 192, 106, 107,
159150
- /* 1300 */ 48, 134, 250, 237, 238, 113, 139, 115, 116, 117,
159151
- /* 1310 */ 192, 59, 120, 214, 215, 242, 250, 214, 215, 214,
159152
- /* 1320 */ 215, 148, 149, 71, 60, 252, 242, 192, 149, 137,
159153
- /* 1330 */ 138, 192, 214, 215, 192, 19, 252, 85, 192, 59,
159154
- /* 1340 */ 192, 157, 90, 159, 152, 153, 154, 155, 156, 214,
159155
- /* 1350 */ 215, 192, 100, 214, 215, 19, 214, 215, 106, 107,
159156
- /* 1360 */ 214, 215, 214, 215, 22, 113, 192, 115, 116, 117,
159157
- /* 1370 */ 192, 242, 120, 214, 215, 192, 24, 192, 31, 192,
159158
- /* 1380 */ 144, 252, 26, 192, 125, 99, 39, 192, 214, 215,
159159
- /* 1390 */ 192, 59, 214, 215, 192, 141, 116, 214, 215, 214,
159160
- /* 1400 */ 215, 214, 215, 61, 152, 153, 154, 155, 156, 0,
159161
- /* 1410 */ 1, 2, 214, 215, 5, 192, 214, 215, 132, 10,
159162
- /* 1420 */ 11, 12, 13, 14, 1, 2, 17, 192, 5, 19,
159163
- /* 1430 */ 20, 115, 22, 10, 11, 12, 13, 14, 192, 30,
159164
- /* 1440 */ 17, 32, 23, 192, 23, 26, 36, 26, 116, 40,
159165
- /* 1450 */ 192, 115, 192, 30, 192, 32, 119, 120, 59, 5,
159166
- /* 1460 */ 214, 215, 128, 40, 10, 11, 12, 13, 14, 59,
159167
- /* 1470 */ 19, 17, 214, 215, 214, 215, 214, 215, 120, 70,
159168
- /* 1480 */ 192, 71, 22, 192, 30, 151, 32, 78, 130, 128,
159169
- /* 1490 */ 81, 192, 140, 70, 40, 85, 192, 141, 7, 8,
159170
- /* 1500 */ 90, 78, 214, 215, 81, 214, 215, 98, 83, 84,
159171
- /* 1510 */ 100, 192, 151, 214, 215, 116, 106, 107, 214, 215,
159172
- /* 1520 */ 192, 98, 192, 113, 70, 115, 116, 117, 23, 224,
159173
- /* 1530 */ 120, 26, 78, 214, 215, 81, 19, 20, 152, 22,
159174
- /* 1540 */ 154, 132, 214, 215, 214, 215, 137, 138, 97, 192,
159175
- /* 1550 */ 256, 192, 98, 36, 23, 132, 192, 26, 192, 192,
159176
- /* 1560 */ 137, 138, 152, 153, 154, 155, 156, 192, 192, 192,
159177
- /* 1570 */ 161, 214, 215, 214, 215, 192, 59, 192, 214, 215,
159178
- /* 1580 */ 214, 215, 192, 152, 161, 154, 132, 192, 71, 214,
159179
- /* 1590 */ 215, 137, 138, 192, 192, 192, 19, 20, 192, 22,
159180
- /* 1600 */ 140, 253, 85, 192, 214, 215, 192, 90, 23, 214,
159181
- /* 1610 */ 215, 26, 192, 36, 192, 161, 23, 100, 192, 26,
159182
- /* 1620 */ 214, 215, 192, 106, 107, 214, 215, 192, 23, 192,
159183
- /* 1630 */ 113, 26, 115, 116, 117, 23, 59, 120, 26, 23,
159184
- /* 1640 */ 23, 23, 26, 26, 26, 316, 234, 23, 71, 23,
159185
- /* 1650 */ 26, 192, 26, 192, 192, 192, 192, 192, 192, 192,
159186
- /* 1660 */ 192, 253, 212, 190, 286, 285, 253, 240, 253, 152,
159187
- /* 1670 */ 153, 154, 155, 156, 241, 243, 295, 100, 291, 291,
159188
- /* 1680 */ 223, 253, 227, 106, 107, 108, 269, 244, 244, 265,
159189
- /* 1690 */ 113, 257, 115, 116, 117, 257, 243, 120, 269, 218,
159190
- /* 1700 */ 217, 265, 217, 19, 20, 217, 22, 195, 269, 269,
159191
- /* 1710 */ 60, 295, 140, 257, 243, 241, 247, 247, 199, 278,
159192
- /* 1720 */ 36, 199, 199, 38, 19, 20, 150, 22, 149, 152,
159193
- /* 1730 */ 153, 154, 155, 156, 22, 43, 232, 295, 292, 292,
159194
- /* 1740 */ 18, 36, 235, 59, 268, 270, 235, 199, 235, 235,
159195
- /* 1750 */ 18, 198, 148, 281, 244, 71, 270, 270, 268, 244,
159196
- /* 1760 */ 232, 232, 244, 199, 59, 244, 198, 157, 288, 62,
159197
- /* 1770 */ 199, 287, 198, 22, 219, 219, 71, 199, 198, 114,
159198
- /* 1780 */ 199, 198, 216, 216, 100, 216, 225, 64, 22, 125,
159199
- /* 1790 */ 106, 107, 222, 164, 219, 222, 24, 113, 216, 115,
159200
- /* 1800 */ 116, 117, 218, 216, 120, 100, 216, 216, 310, 303,
159201
- /* 1810 */ 112, 106, 107, 225, 280, 280, 219, 143, 113, 259,
159202
- /* 1820 */ 115, 116, 117, 114, 259, 120, 199, 91, 82, 147,
159203
- /* 1830 */ 144, 315, 22, 275, 199, 315, 152, 153, 154, 155,
159204
- /* 1840 */ 156, 146, 145, 247, 258, 157, 25, 258, 245, 248,
159205
- /* 1850 */ 244, 259, 258, 202, 259, 248, 258, 152, 153, 154,
159206
- /* 1860 */ 155, 156, 263, 263, 26, 246, 13, 201, 193, 193,
159207
- /* 1870 */ 6, 191, 191, 205, 191, 220, 220, 205, 211, 277,
159208
- /* 1880 */ 211, 211, 211, 205, 4, 212, 3, 22, 162, 212,
159209
- /* 1890 */ 211, 15, 23, 16, 23, 138, 129, 150, 26, 24,
159210
- /* 1900 */ 141, 20, 16, 143, 1, 141, 129, 129, 61, 301,
159211
- /* 1910 */ 301, 298, 150, 53, 53, 37, 53, 129, 115, 53,
159212
- /* 1920 */ 140, 34, 1, 5, 22, 114, 68, 26, 160, 75,
159213
- /* 1930 */ 68, 41, 140, 114, 24, 20, 19, 130, 124, 23,
159214
- /* 1940 */ 67, 22, 22, 59, 22, 22, 67, 96, 24, 22,
159215
- /* 1950 */ 37, 23, 67, 28, 148, 22, 26, 23, 23, 23,
159216
- /* 1960 */ 23, 22, 140, 23, 97, 23, 34, 115, 22, 142,
159217
- /* 1970 */ 26, 75, 34, 44, 75, 34, 88, 34, 86, 34,
159218
- /* 1980 */ 23, 34, 93, 22, 24, 26, 34, 23, 26, 23,
159219
- /* 1990 */ 23, 23, 23, 11, 23, 22, 26, 22, 22, 140,
159220
- /* 2000 */ 23, 23, 22, 22, 134, 26, 23, 15, 140, 1,
159221
- /* 2010 */ 1, 317, 317, 317, 140, 317, 317, 317, 317, 317,
159222
- /* 2020 */ 317, 317, 140, 317, 317, 317, 317, 317, 317, 317,
159223
- /* 2030 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159224
- /* 2040 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159225
- /* 2050 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159226
- /* 2060 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159227
- /* 2070 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159228
- /* 2080 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159229
- /* 2090 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159230
- /* 2100 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159231
- /* 2110 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159232
- /* 2120 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159233
- /* 2130 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159234
- /* 2140 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159235
- /* 2150 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159236
- /* 2160 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159237
- /* 2170 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159238
- /* 2180 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159239
- /* 2190 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159240
- /* 2200 */ 317, 317, 317, 317, 317, 317, 317,
159241
-};
159242
-#define YY_SHIFT_COUNT (569)
159434
+ /* 1250 */ 112, 59, 192, 151, 215, 216, 192, 61, 203, 298,
159435
+ /* 1260 */ 299, 192, 192, 71, 25, 144, 203, 192, 203, 230,
159436
+ /* 1270 */ 114, 19, 20, 81, 22, 215, 216, 263, 192, 215,
159437
+ /* 1280 */ 216, 255, 256, 203, 215, 216, 130, 19, 36, 192,
159438
+ /* 1290 */ 215, 216, 100, 238, 239, 101, 25, 192, 106, 107,
159439
+ /* 1300 */ 48, 238, 239, 238, 239, 113, 251, 115, 116, 117,
159440
+ /* 1310 */ 192, 59, 120, 101, 251, 192, 251, 192, 238, 239,
159441
+ /* 1320 */ 215, 216, 192, 71, 46, 243, 192, 25, 25, 137,
159442
+ /* 1330 */ 138, 251, 192, 215, 216, 253, 25, 85, 215, 216,
159443
+ /* 1340 */ 215, 216, 90, 243, 152, 153, 154, 155, 156, 215,
159444
+ /* 1350 */ 216, 192, 100, 253, 243, 215, 216, 192, 106, 107,
159445
+ /* 1360 */ 243, 192, 148, 149, 253, 113, 192, 115, 116, 117,
159446
+ /* 1370 */ 253, 192, 120, 192, 215, 216, 192, 23, 192, 25,
159447
+ /* 1380 */ 215, 216, 192, 115, 215, 216, 22, 148, 24, 215,
159448
+ /* 1390 */ 216, 192, 114, 192, 215, 216, 215, 216, 134, 215,
159449
+ /* 1400 */ 216, 215, 216, 139, 152, 153, 154, 155, 156, 0,
159450
+ /* 1410 */ 1, 2, 141, 23, 5, 25, 215, 216, 24, 10,
159451
+ /* 1420 */ 11, 12, 13, 14, 1, 2, 17, 125, 5, 19,
159452
+ /* 1430 */ 20, 268, 22, 10, 11, 12, 13, 14, 192, 30,
159453
+ /* 1440 */ 17, 32, 23, 23, 25, 25, 36, 144, 23, 40,
159454
+ /* 1450 */ 25, 192, 141, 30, 192, 32, 23, 22, 25, 5,
159455
+ /* 1460 */ 128, 215, 216, 40, 10, 11, 12, 13, 14, 59,
159456
+ /* 1470 */ 23, 17, 25, 192, 215, 216, 192, 215, 216, 70,
159457
+ /* 1480 */ 23, 71, 25, 151, 30, 192, 32, 78, 53, 192,
159458
+ /* 1490 */ 81, 192, 192, 70, 40, 85, 215, 216, 119, 120,
159459
+ /* 1500 */ 90, 78, 59, 254, 81, 192, 192, 98, 215, 216,
159460
+ /* 1510 */ 100, 23, 59, 25, 215, 216, 106, 107, 23, 192,
159461
+ /* 1520 */ 25, 98, 19, 113, 70, 115, 116, 117, 215, 216,
159462
+ /* 1530 */ 120, 192, 78, 192, 140, 81, 19, 20, 23, 22,
159463
+ /* 1540 */ 25, 132, 215, 216, 192, 192, 137, 138, 192, 23,
159464
+ /* 1550 */ 192, 25, 98, 36, 192, 132, 215, 216, 192, 116,
159465
+ /* 1560 */ 137, 138, 152, 153, 154, 155, 156, 215, 216, 116,
159466
+ /* 1570 */ 161, 215, 216, 215, 216, 120, 59, 215, 216, 7,
159467
+ /* 1580 */ 8, 215, 216, 192, 161, 130, 132, 192, 71, 83,
159468
+ /* 1590 */ 84, 137, 138, 59, 192, 192, 19, 20, 192, 22,
159469
+ /* 1600 */ 97, 225, 85, 192, 23, 192, 25, 90, 192, 192,
159470
+ /* 1610 */ 215, 216, 152, 36, 154, 161, 192, 100, 215, 216,
159471
+ /* 1620 */ 192, 215, 216, 106, 107, 225, 215, 216, 192, 192,
159472
+ /* 1630 */ 113, 192, 115, 116, 117, 257, 59, 120, 192, 215,
159473
+ /* 1640 */ 216, 152, 192, 154, 192, 23, 317, 25, 71, 235,
159474
+ /* 1650 */ 116, 215, 216, 192, 215, 216, 192, 192, 192, 192,
159475
+ /* 1660 */ 192, 192, 192, 192, 192, 215, 216, 215, 216, 152,
159476
+ /* 1670 */ 153, 154, 155, 156, 192, 192, 287, 100, 286, 241,
159477
+ /* 1680 */ 254, 254, 242, 106, 107, 108, 254, 213, 254, 190,
159478
+ /* 1690 */ 113, 270, 115, 116, 117, 296, 266, 120, 219, 258,
159479
+ /* 1700 */ 244, 270, 258, 19, 20, 228, 22, 292, 266, 224,
159480
+ /* 1710 */ 292, 218, 218, 195, 218, 270, 258, 60, 245, 270,
159481
+ /* 1720 */ 36, 245, 244, 248, 19, 20, 242, 22, 248, 152,
159482
+ /* 1730 */ 153, 154, 155, 156, 244, 140, 199, 199, 279, 38,
159483
+ /* 1740 */ 199, 36, 150, 59, 296, 149, 22, 296, 18, 43,
159484
+ /* 1750 */ 236, 199, 233, 18, 198, 71, 293, 236, 271, 236,
159485
+ /* 1760 */ 269, 236, 148, 271, 59, 245, 269, 245, 282, 271,
159486
+ /* 1770 */ 199, 198, 233, 245, 293, 233, 71, 245, 157, 62,
159487
+ /* 1780 */ 22, 199, 198, 220, 100, 199, 198, 220, 199, 289,
159488
+ /* 1790 */ 106, 107, 288, 114, 226, 198, 217, 113, 64, 115,
159489
+ /* 1800 */ 116, 117, 217, 22, 120, 100, 223, 217, 217, 164,
159490
+ /* 1810 */ 223, 106, 107, 220, 125, 24, 217, 219, 113, 217,
159491
+ /* 1820 */ 115, 116, 117, 217, 311, 120, 226, 112, 304, 281,
159492
+ /* 1830 */ 281, 220, 114, 143, 260, 259, 152, 153, 154, 155,
159493
+ /* 1840 */ 156, 199, 91, 316, 82, 316, 147, 144, 22, 199,
159494
+ /* 1850 */ 249, 276, 157, 146, 260, 145, 278, 152, 153, 154,
159495
+ /* 1860 */ 155, 156, 259, 248, 260, 260, 259, 259, 249, 245,
159496
+ /* 1870 */ 247, 246, 25, 264, 264, 201, 13, 6, 193, 193,
159497
+ /* 1880 */ 212, 206, 191, 191, 191, 212, 206, 221, 212, 212,
159498
+ /* 1890 */ 221, 213, 4, 206, 213, 212, 3, 22, 162, 15,
159499
+ /* 1900 */ 23, 16, 23, 138, 150, 129, 25, 24, 141, 20,
159500
+ /* 1910 */ 16, 143, 1, 141, 302, 302, 299, 129, 129, 61,
159501
+ /* 1920 */ 150, 53, 53, 37, 129, 53, 53, 115, 1, 34,
159502
+ /* 1930 */ 140, 5, 22, 114, 160, 68, 75, 25, 68, 41,
159503
+ /* 1940 */ 140, 114, 24, 20, 19, 130, 124, 67, 24, 67,
159504
+ /* 1950 */ 22, 22, 22, 96, 23, 22, 59, 22, 67, 37,
159505
+ /* 1960 */ 28, 23, 148, 22, 25, 23, 23, 23, 23, 22,
159506
+ /* 1970 */ 140, 97, 23, 23, 115, 22, 142, 25, 88, 75,
159507
+ /* 1980 */ 34, 44, 34, 75, 23, 34, 86, 22, 34, 34,
159508
+ /* 1990 */ 34, 24, 93, 25, 25, 23, 34, 23, 23, 23,
159509
+ /* 2000 */ 23, 11, 23, 25, 22, 22, 22, 1, 23, 23,
159510
+ /* 2010 */ 22, 22, 25, 15, 23, 1, 140, 25, 140, 318,
159511
+ /* 2020 */ 318, 134, 318, 318, 318, 318, 318, 318, 318, 318,
159512
+ /* 2030 */ 318, 318, 140, 318, 318, 318, 140, 318, 318, 318,
159513
+ /* 2040 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159514
+ /* 2050 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159515
+ /* 2060 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159516
+ /* 2070 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159517
+ /* 2080 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159518
+ /* 2090 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159519
+ /* 2100 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159520
+ /* 2110 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159521
+ /* 2120 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159522
+ /* 2130 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159523
+ /* 2140 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159524
+ /* 2150 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159525
+ /* 2160 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159526
+ /* 2170 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159527
+ /* 2180 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159528
+ /* 2190 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159529
+ /* 2200 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159530
+ /* 2210 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159531
+ /* 2220 */ 318,
159532
+};
159533
+#define YY_SHIFT_COUNT (571)
159243159534
#define YY_SHIFT_MIN (0)
159244
-#define YY_SHIFT_MAX (2009)
159535
+#define YY_SHIFT_MAX (2014)
159245159536
static const unsigned short int yy_shift_ofst[] = {
159246
- /* 0 */ 1423, 1409, 1454, 1192, 1192, 382, 1252, 1410, 1517, 1684,
159247
- /* 10 */ 1684, 1684, 221, 0, 0, 180, 1015, 1684, 1684, 1684,
159537
+ /* 0 */ 1423, 1409, 1454, 1192, 1192, 610, 1252, 1410, 1517, 1684,
159538
+ /* 10 */ 1684, 1684, 276, 0, 0, 180, 1015, 1684, 1684, 1684,
159248159539
/* 20 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159249
- /* 30 */ 1049, 1049, 1121, 1121, 54, 616, 382, 382, 382, 382,
159250
- /* 40 */ 382, 40, 110, 219, 289, 396, 439, 509, 548, 618,
159540
+ /* 30 */ 1049, 1049, 1121, 1121, 54, 487, 610, 610, 610, 610,
159541
+ /* 40 */ 610, 40, 110, 219, 289, 396, 439, 509, 548, 618,
159251159542
/* 50 */ 657, 727, 766, 836, 995, 1015, 1015, 1015, 1015, 1015,
159252159543
/* 60 */ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
159253159544
/* 70 */ 1015, 1015, 1015, 1035, 1015, 1138, 880, 880, 1577, 1684,
159254159545
/* 80 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159255159546
/* 90 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159256159547
/* 100 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159257159548
/* 110 */ 1684, 1684, 1684, 1705, 1684, 1684, 1684, 1684, 1684, 1684,
159258159549
/* 120 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 146, 84, 84,
159259
- /* 130 */ 84, 84, 84, 274, 315, 125, 97, 357, 66, 66,
159260
- /* 140 */ 893, 258, 66, 66, 371, 371, 66, 551, 551, 551,
159261
- /* 150 */ 551, 192, 209, 209, 278, 127, 2023, 2023, 621, 621,
159262
- /* 160 */ 621, 201, 398, 398, 398, 398, 939, 939, 442, 936,
159263
- /* 170 */ 1009, 66, 66, 66, 66, 66, 66, 66, 66, 66,
159550
+ /* 130 */ 84, 84, 84, 277, 315, 401, 97, 461, 251, 66,
159551
+ /* 140 */ 66, 51, 1156, 66, 66, 324, 324, 66, 452, 452,
159552
+ /* 150 */ 452, 452, 133, 114, 114, 4, 11, 2037, 2037, 621,
159553
+ /* 160 */ 621, 621, 567, 398, 398, 398, 398, 937, 937, 228,
159554
+ /* 170 */ 251, 331, 1052, 66, 66, 66, 66, 66, 66, 66,
159264159555
/* 180 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
159265
- /* 190 */ 66, 710, 710, 66, 776, 435, 435, 410, 410, 372,
159266
- /* 200 */ 1097, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 250, 490,
159267
- /* 210 */ 490, 511, 451, 516, 252, 566, 575, 781, 673, 66,
159268
- /* 220 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 722,
159269
- /* 230 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
159270
- /* 240 */ 66, 66, 790, 790, 790, 66, 66, 66, 883, 66,
159271
- /* 250 */ 66, 66, 891, 1064, 66, 66, 1212, 66, 66, 66,
159272
- /* 260 */ 66, 66, 66, 66, 66, 725, 763, 177, 940, 940,
159273
- /* 270 */ 940, 940, 337, 177, 177, 1028, 1053, 670, 1264, 1179,
159274
- /* 280 */ 1173, 1254, 1316, 1173, 1316, 1336, 50, 1179, 1179, 50,
159275
- /* 290 */ 1179, 1254, 1336, 1259, 732, 532, 1347, 1347, 1347, 1316,
159276
- /* 300 */ 1236, 1236, 1184, 1356, 1167, 898, 1650, 1650, 1572, 1572,
159277
- /* 310 */ 1685, 1685, 1572, 1576, 1579, 1712, 1692, 1722, 1722, 1722,
159278
- /* 320 */ 1722, 1572, 1732, 1604, 1579, 1579, 1604, 1712, 1692, 1604,
159279
- /* 330 */ 1692, 1604, 1572, 1732, 1610, 1707, 1572, 1732, 1751, 1572,
159280
- /* 340 */ 1732, 1572, 1732, 1751, 1665, 1665, 1665, 1723, 1766, 1766,
159281
- /* 350 */ 1751, 1665, 1664, 1665, 1723, 1665, 1665, 1629, 1772, 1698,
159282
- /* 360 */ 1698, 1751, 1674, 1709, 1674, 1709, 1674, 1709, 1674, 1709,
159283
- /* 370 */ 1572, 1736, 1736, 1746, 1746, 1682, 1686, 1810, 1572, 1688,
159284
- /* 380 */ 1682, 1695, 1697, 1604, 1821, 1838, 1853, 1853, 1864, 1864,
159285
- /* 390 */ 1864, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023,
159286
- /* 400 */ 2023, 2023, 2023, 2023, 2023, 2023, 232, 101, 1131, 1193,
159287
- /* 410 */ 619, 679, 841, 1421, 1286, 115, 1352, 1334, 1361, 1419,
159288
- /* 420 */ 1342, 1505, 1531, 1585, 1593, 1605, 1612, 1280, 1337, 1491,
159289
- /* 430 */ 1358, 1451, 1332, 1616, 1617, 1425, 1618, 1386, 1431, 1624,
159290
- /* 440 */ 1626, 1399, 1460, 1880, 1883, 1865, 1726, 1876, 1877, 1869,
159291
- /* 450 */ 1871, 1757, 1747, 1767, 1872, 1872, 1875, 1759, 1881, 1760,
159292
- /* 460 */ 1886, 1903, 1764, 1777, 1872, 1778, 1847, 1878, 1872, 1762,
159293
- /* 470 */ 1860, 1861, 1863, 1866, 1788, 1803, 1887, 1780, 1921, 1918,
159294
- /* 480 */ 1902, 1811, 1768, 1858, 1901, 1862, 1854, 1890, 1792, 1819,
159295
- /* 490 */ 1910, 1915, 1917, 1807, 1814, 1919, 1873, 1920, 1922, 1916,
159296
- /* 500 */ 1923, 1879, 1884, 1924, 1851, 1925, 1927, 1885, 1913, 1928,
159297
- /* 510 */ 1806, 1933, 1934, 1935, 1936, 1930, 1937, 1939, 1867, 1822,
159298
- /* 520 */ 1940, 1942, 1852, 1932, 1946, 1827, 1944, 1938, 1941, 1943,
159299
- /* 530 */ 1945, 1888, 1896, 1892, 1929, 1899, 1889, 1947, 1957, 1961,
159300
- /* 540 */ 1960, 1959, 1962, 1952, 1964, 1944, 1966, 1967, 1968, 1969,
159301
- /* 550 */ 1970, 1971, 1973, 1982, 1975, 1976, 1977, 1978, 1980, 1981,
159302
- /* 560 */ 1979, 1870, 1859, 1868, 1874, 1882, 1983, 1992, 2008, 2009,
159556
+ /* 190 */ 66, 66, 66, 557, 557, 66, 9, 25, 25, 745,
159557
+ /* 200 */ 745, 967, 1088, 2037, 2037, 2037, 2037, 2037, 2037, 2037,
159558
+ /* 210 */ 255, 317, 317, 514, 403, 620, 471, 672, 781, 891,
159559
+ /* 220 */ 675, 66, 66, 66, 66, 66, 66, 66, 66, 66,
159560
+ /* 230 */ 66, 508, 66, 66, 66, 66, 66, 66, 66, 66,
159561
+ /* 240 */ 66, 66, 66, 66, 790, 790, 790, 66, 66, 66,
159562
+ /* 250 */ 338, 66, 66, 66, 516, 1084, 66, 66, 993, 66,
159563
+ /* 260 */ 66, 66, 66, 66, 66, 66, 66, 732, 1083, 563,
159564
+ /* 270 */ 994, 994, 994, 994, 337, 563, 563, 1028, 987, 897,
159565
+ /* 280 */ 1119, 262, 1214, 1271, 1112, 1214, 1112, 1268, 1239, 262,
159566
+ /* 290 */ 262, 1239, 262, 1271, 1268, 1302, 1354, 1278, 1168, 1168,
159567
+ /* 300 */ 1168, 1112, 1303, 1303, 815, 1311, 1264, 1364, 1657, 1657,
159568
+ /* 310 */ 1595, 1595, 1701, 1701, 1595, 1592, 1596, 1724, 1706, 1730,
159569
+ /* 320 */ 1730, 1730, 1730, 1595, 1735, 1614, 1596, 1596, 1614, 1724,
159570
+ /* 330 */ 1706, 1614, 1706, 1614, 1595, 1735, 1621, 1717, 1595, 1735,
159571
+ /* 340 */ 1758, 1595, 1735, 1595, 1735, 1758, 1679, 1679, 1679, 1734,
159572
+ /* 350 */ 1781, 1781, 1758, 1679, 1689, 1679, 1734, 1679, 1679, 1645,
159573
+ /* 360 */ 1791, 1715, 1715, 1758, 1690, 1718, 1690, 1718, 1690, 1718,
159574
+ /* 370 */ 1690, 1718, 1595, 1751, 1751, 1762, 1762, 1699, 1703, 1826,
159575
+ /* 380 */ 1595, 1695, 1699, 1707, 1710, 1614, 1847, 1863, 1863, 1871,
159576
+ /* 390 */ 1871, 1871, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037,
159577
+ /* 400 */ 2037, 2037, 2037, 2037, 2037, 2037, 2037, 193, 837, 1194,
159578
+ /* 410 */ 1212, 506, 832, 1054, 1390, 925, 1435, 1394, 1102, 1332,
159579
+ /* 420 */ 1419, 1196, 1420, 1425, 1433, 1447, 1457, 1488, 1443, 1379,
159580
+ /* 430 */ 1572, 1455, 1503, 1453, 1495, 1515, 1506, 1526, 1460, 1489,
159581
+ /* 440 */ 1581, 1622, 1534, 667, 1888, 1893, 1875, 1736, 1884, 1885,
159582
+ /* 450 */ 1877, 1879, 1765, 1754, 1776, 1881, 1881, 1883, 1767, 1889,
159583
+ /* 460 */ 1768, 1894, 1911, 1772, 1788, 1881, 1789, 1858, 1886, 1881,
159584
+ /* 470 */ 1770, 1868, 1869, 1872, 1873, 1795, 1812, 1895, 1790, 1927,
159585
+ /* 480 */ 1926, 1910, 1819, 1774, 1867, 1912, 1870, 1861, 1898, 1800,
159586
+ /* 490 */ 1827, 1918, 1923, 1925, 1815, 1822, 1928, 1880, 1929, 1930,
159587
+ /* 500 */ 1931, 1933, 1882, 1897, 1924, 1857, 1932, 1935, 1891, 1922,
159588
+ /* 510 */ 1938, 1814, 1941, 1942, 1943, 1944, 1939, 1945, 1947, 1874,
159589
+ /* 520 */ 1830, 1949, 1950, 1859, 1946, 1953, 1834, 1952, 1948, 1951,
159590
+ /* 530 */ 1954, 1955, 1890, 1904, 1900, 1937, 1908, 1899, 1956, 1961,
159591
+ /* 540 */ 1965, 1967, 1968, 1969, 1962, 1972, 1952, 1974, 1975, 1976,
159592
+ /* 550 */ 1977, 1978, 1979, 1982, 1990, 1983, 1984, 1985, 1986, 1988,
159593
+ /* 560 */ 1989, 1987, 1887, 1876, 1878, 1892, 1896, 1992, 1991, 1998,
159594
+ /* 570 */ 2006, 2014,
159303159595
};
159304
-#define YY_REDUCE_COUNT (405)
159305
-#define YY_REDUCE_MIN (-266)
159306
-#define YY_REDUCE_MAX (1683)
159596
+#define YY_REDUCE_COUNT (406)
159597
+#define YY_REDUCE_MIN (-272)
159598
+#define YY_REDUCE_MAX (1693)
159307159599
static const short yy_reduce_ofst[] = {
159308
- /* 0 */ 111, 168, 272, 760, -177, -175, -192, -190, -182, -179,
159309
- /* 10 */ 216, 220, 481, -208, -205, -266, -140, -115, 241, 393,
159310
- /* 20 */ 523, 325, 612, 632, 542, 651, 764, 757, 702, 762,
159311
- /* 30 */ 812, 814, -188, 273, 924, 386, 758, 967, 1020, 1052,
159312
- /* 40 */ 1066, -256, -256, -256, -256, -256, -256, -256, -256, -256,
159313
- /* 50 */ -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
159314
- /* 60 */ -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
159315
- /* 70 */ -256, -256, -256, -256, -256, -256, -256, -256, 195, 222,
159316
- /* 80 */ 813, 917, 920, 959, 985, 1006, 1038, 1067, 1069, 1072,
159317
- /* 90 */ 1099, 1103, 1105, 1118, 1135, 1139, 1142, 1146, 1148, 1159,
159318
- /* 100 */ 1174, 1178, 1183, 1185, 1187, 1198, 1202, 1246, 1258, 1260,
159319
- /* 110 */ 1262, 1288, 1291, 1299, 1304, 1319, 1328, 1330, 1357, 1359,
159320
- /* 120 */ 1364, 1366, 1375, 1390, 1395, 1406, 1411, -256, -256, -256,
159321
- /* 130 */ -256, -256, -256, -256, -256, 447, -256, 555, -178, 605,
159322
- /* 140 */ 832, -220, 606, -94, -168, 36, -122, 730, 780, 730,
159323
- /* 150 */ 780, 918, -136, 338, -256, -256, -256, -256, 80, 80,
159324
- /* 160 */ 80, 720, 703, 811, 882, 903, -213, -204, 106, 330,
159325
- /* 170 */ 330, -77, 236, 320, 599, 67, 457, 675, 729, 395,
159326
- /* 180 */ 268, 611, 969, 1004, 726, 1014, 983, 123, 884, 608,
159327
- /* 190 */ 1034, 547, 911, 650, 844, 922, 949, 965, 972, 978,
159328
- /* 200 */ 449, 970, 718, 784, 1073, 1084, 1023, 1129, -209, -180,
159329
- /* 210 */ -113, 114, 183, 329, 345, 391, 446, 502, 609, 667,
159330
- /* 220 */ 713, 817, 865, 881, 901, 921, 989, 1191, 1195, 214,
159331
- /* 230 */ 1223, 1235, 1251, 1367, 1376, 1377, 1383, 1385, 1401, 1402,
159332
- /* 240 */ 1403, 1414, 584, 638, 1305, 1420, 1422, 1426, 1294, 1430,
159333
- /* 250 */ 1435, 1437, 1348, 1329, 1459, 1461, 1412, 1462, 345, 1463,
159334
- /* 260 */ 1464, 1465, 1466, 1467, 1468, 1378, 1380, 1427, 1408, 1413,
159335
- /* 270 */ 1415, 1428, 1294, 1427, 1427, 1433, 1450, 1473, 1381, 1417,
159336
- /* 280 */ 1424, 1432, 1434, 1436, 1438, 1387, 1443, 1429, 1439, 1444,
159337
- /* 290 */ 1440, 1453, 1388, 1481, 1455, 1457, 1483, 1485, 1488, 1456,
159338
- /* 300 */ 1469, 1470, 1441, 1471, 1474, 1512, 1416, 1442, 1519, 1522,
159339
- /* 310 */ 1446, 1447, 1523, 1472, 1475, 1476, 1504, 1507, 1511, 1513,
159340
- /* 320 */ 1514, 1548, 1553, 1510, 1486, 1487, 1515, 1490, 1528, 1518,
159341
- /* 330 */ 1529, 1521, 1564, 1568, 1480, 1484, 1571, 1574, 1555, 1578,
159342
- /* 340 */ 1580, 1581, 1583, 1556, 1566, 1567, 1569, 1561, 1570, 1573,
159343
- /* 350 */ 1575, 1582, 1584, 1587, 1588, 1590, 1591, 1498, 1506, 1534,
159344
- /* 360 */ 1535, 1597, 1560, 1586, 1565, 1589, 1592, 1594, 1595, 1598,
159345
- /* 370 */ 1627, 1516, 1520, 1599, 1600, 1601, 1596, 1558, 1635, 1602,
159346
- /* 380 */ 1607, 1619, 1603, 1606, 1651, 1666, 1675, 1676, 1680, 1681,
159347
- /* 390 */ 1683, 1608, 1609, 1613, 1668, 1667, 1669, 1670, 1671, 1672,
159348
- /* 400 */ 1655, 1656, 1673, 1677, 1679, 1678,
159600
+ /* 0 */ 109, 113, 272, 760, -178, -176, -192, -183, -180, -134,
159601
+ /* 10 */ 213, 220, 371, -208, -205, -272, -197, 611, 632, 765,
159602
+ /* 20 */ 786, 392, 943, 989, 503, 651, 1039, -18, 702, 821,
159603
+ /* 30 */ 710, 812, -188, 380, -187, 555, 662, 1055, 1063, 1065,
159604
+ /* 40 */ 1080, -267, -267, -267, -267, -267, -267, -267, -267, -267,
159605
+ /* 50 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
159606
+ /* 60 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
159607
+ /* 70 */ -267, -267, -267, -267, -267, -267, -267, -267, 636, 811,
159608
+ /* 80 */ 917, 936, 1006, 1008, 1017, 1060, 1064, 1069, 1075, 1105,
159609
+ /* 90 */ 1118, 1123, 1125, 1134, 1140, 1159, 1165, 1169, 1174, 1179,
159610
+ /* 100 */ 1181, 1184, 1186, 1201, 1246, 1259, 1262, 1281, 1293, 1299,
159611
+ /* 110 */ 1313, 1327, 1341, 1352, 1356, 1358, 1362, 1366, 1395, 1403,
159612
+ /* 120 */ 1406, 1411, 1424, 1436, 1439, 1450, 1452, -267, -267, -267,
159613
+ /* 130 */ -267, -267, -267, -267, -267, 224, -267, 446, -24, 275,
159614
+ /* 140 */ 546, 518, 573, 560, 53, -181, -111, 485, 606, 671,
159615
+ /* 150 */ 606, 671, 683, 8, 93, -267, -267, -267, -267, 155,
159616
+ /* 160 */ 155, 155, 181, 242, 264, 486, 489, -218, 393, 227,
159617
+ /* 170 */ 604, 347, 347, -171, 431, 650, 715, -166, 562, 609,
159618
+ /* 180 */ 716, 764, 18, 823, 769, 833, 838, 957, 759, 119,
159619
+ /* 190 */ 923, 226, 1014, 542, 603, 451, 949, 654, 659, 762,
159620
+ /* 200 */ 964, -4, 778, 961, 712, 1082, 1100, 1111, 1026, 1117,
159621
+ /* 210 */ -204, -174, -151, -8, 77, 198, 305, 327, 388, 540,
159622
+ /* 220 */ 839, 968, 982, 985, 1004, 1023, 1070, 1086, 1097, 1130,
159623
+ /* 230 */ 1190, 1163, 1199, 1284, 1297, 1300, 1314, 1339, 1353, 1391,
159624
+ /* 240 */ 1402, 1413, 1416, 1417, 803, 1376, 1400, 1428, 1437, 1446,
159625
+ /* 250 */ 1378, 1461, 1464, 1465, 1249, 1329, 1466, 1467, 1414, 1468,
159626
+ /* 260 */ 305, 1469, 1470, 1471, 1472, 1482, 1483, 1389, 1392, 1438,
159627
+ /* 270 */ 1426, 1427, 1432, 1434, 1378, 1438, 1438, 1440, 1474, 1499,
159628
+ /* 280 */ 1399, 1421, 1430, 1456, 1441, 1442, 1444, 1415, 1473, 1431,
159629
+ /* 290 */ 1445, 1476, 1449, 1478, 1418, 1479, 1477, 1485, 1493, 1494,
159630
+ /* 300 */ 1496, 1458, 1475, 1480, 1459, 1490, 1484, 1518, 1448, 1451,
159631
+ /* 310 */ 1537, 1538, 1463, 1481, 1541, 1486, 1487, 1491, 1519, 1514,
159632
+ /* 320 */ 1521, 1523, 1525, 1552, 1556, 1520, 1492, 1498, 1522, 1497,
159633
+ /* 330 */ 1539, 1528, 1542, 1532, 1571, 1573, 1500, 1504, 1582, 1584,
159634
+ /* 340 */ 1563, 1586, 1588, 1589, 1597, 1567, 1579, 1585, 1590, 1568,
159635
+ /* 350 */ 1583, 1587, 1593, 1591, 1598, 1599, 1600, 1602, 1606, 1513,
159636
+ /* 360 */ 1524, 1548, 1549, 1611, 1574, 1576, 1594, 1603, 1604, 1607,
159637
+ /* 370 */ 1605, 1608, 1642, 1527, 1529, 1609, 1610, 1601, 1615, 1575,
159638
+ /* 380 */ 1650, 1578, 1619, 1623, 1625, 1624, 1674, 1685, 1686, 1691,
159639
+ /* 390 */ 1692, 1693, 1612, 1613, 1617, 1675, 1668, 1673, 1676, 1677,
159640
+ /* 400 */ 1680, 1666, 1669, 1678, 1681, 1683, 1687,
159349159641
};
159350159642
static const YYACTIONTYPE yy_default[] = {
159351
- /* 0 */ 1623, 1623, 1623, 1453, 1223, 1332, 1223, 1223, 1223, 1453,
159352
- /* 10 */ 1453, 1453, 1223, 1362, 1362, 1506, 1254, 1223, 1223, 1223,
159353
- /* 20 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1452, 1223, 1223,
159354
- /* 30 */ 1223, 1223, 1541, 1541, 1223, 1223, 1223, 1223, 1223, 1223,
159355
- /* 40 */ 1223, 1223, 1371, 1223, 1378, 1223, 1223, 1223, 1223, 1223,
159356
- /* 50 */ 1454, 1455, 1223, 1223, 1223, 1505, 1507, 1470, 1385, 1384,
159357
- /* 60 */ 1383, 1382, 1488, 1349, 1376, 1369, 1373, 1448, 1449, 1447,
159358
- /* 70 */ 1451, 1455, 1454, 1223, 1372, 1419, 1433, 1418, 1223, 1223,
159359
- /* 80 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159360
- /* 90 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159361
- /* 100 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159362
- /* 110 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159363
- /* 120 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1427, 1432, 1438,
159364
- /* 130 */ 1431, 1428, 1421, 1420, 1422, 1223, 1423, 1223, 1223, 1223,
159365
- /* 140 */ 1244, 1296, 1223, 1223, 1223, 1223, 1223, 1525, 1524, 1223,
159366
- /* 150 */ 1223, 1254, 1413, 1412, 1424, 1425, 1435, 1434, 1513, 1576,
159367
- /* 160 */ 1575, 1471, 1223, 1223, 1223, 1223, 1223, 1223, 1541, 1223,
159368
- /* 170 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159369
- /* 180 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159370
- /* 190 */ 1223, 1541, 1541, 1223, 1254, 1541, 1541, 1250, 1250, 1356,
159371
- /* 200 */ 1223, 1520, 1323, 1323, 1323, 1323, 1332, 1323, 1223, 1223,
159372
- /* 210 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159373
- /* 220 */ 1223, 1223, 1223, 1510, 1508, 1223, 1223, 1223, 1223, 1223,
159374
- /* 230 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159375
- /* 240 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159376
- /* 250 */ 1223, 1223, 1328, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159377
- /* 260 */ 1223, 1223, 1223, 1223, 1570, 1223, 1483, 1310, 1328, 1328,
159378
- /* 270 */ 1328, 1328, 1330, 1311, 1309, 1322, 1255, 1230, 1615, 1388,
159379
- /* 280 */ 1377, 1329, 1351, 1377, 1351, 1612, 1375, 1388, 1388, 1375,
159380
- /* 290 */ 1388, 1329, 1612, 1271, 1592, 1266, 1362, 1362, 1362, 1351,
159381
- /* 300 */ 1356, 1356, 1450, 1329, 1322, 1223, 1615, 1615, 1337, 1337,
159382
- /* 310 */ 1614, 1614, 1337, 1471, 1599, 1397, 1299, 1305, 1305, 1305,
159383
- /* 320 */ 1305, 1337, 1241, 1375, 1599, 1599, 1375, 1397, 1299, 1375,
159384
- /* 330 */ 1299, 1375, 1337, 1241, 1487, 1609, 1337, 1241, 1461, 1337,
159385
- /* 340 */ 1241, 1337, 1241, 1461, 1297, 1297, 1297, 1286, 1223, 1223,
159386
- /* 350 */ 1461, 1297, 1271, 1297, 1286, 1297, 1297, 1559, 1223, 1465,
159387
- /* 360 */ 1465, 1461, 1355, 1350, 1355, 1350, 1355, 1350, 1355, 1350,
159388
- /* 370 */ 1337, 1551, 1551, 1365, 1365, 1370, 1356, 1456, 1337, 1223,
159389
- /* 380 */ 1370, 1368, 1366, 1375, 1247, 1289, 1573, 1573, 1569, 1569,
159390
- /* 390 */ 1569, 1620, 1620, 1520, 1585, 1254, 1254, 1254, 1254, 1585,
159391
- /* 400 */ 1273, 1273, 1255, 1255, 1254, 1585, 1223, 1223, 1223, 1223,
159392
- /* 410 */ 1223, 1223, 1580, 1223, 1515, 1472, 1341, 1223, 1223, 1223,
159393
- /* 420 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159394
- /* 430 */ 1223, 1526, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159395
- /* 440 */ 1223, 1223, 1402, 1223, 1226, 1517, 1223, 1223, 1223, 1223,
159396
- /* 450 */ 1223, 1223, 1223, 1223, 1379, 1380, 1342, 1223, 1223, 1223,
159397
- /* 460 */ 1223, 1223, 1223, 1223, 1394, 1223, 1223, 1223, 1389, 1223,
159398
- /* 470 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1611, 1223, 1223,
159399
- /* 480 */ 1223, 1223, 1223, 1223, 1486, 1485, 1223, 1223, 1339, 1223,
159400
- /* 490 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159401
- /* 500 */ 1223, 1223, 1269, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159402
- /* 510 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159403
- /* 520 */ 1223, 1223, 1223, 1223, 1223, 1223, 1367, 1223, 1223, 1223,
159404
- /* 530 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159405
- /* 540 */ 1223, 1556, 1357, 1223, 1223, 1602, 1223, 1223, 1223, 1223,
159406
- /* 550 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159407
- /* 560 */ 1596, 1313, 1404, 1223, 1403, 1407, 1223, 1235, 1223, 1223,
159643
+ /* 0 */ 1633, 1633, 1633, 1462, 1230, 1341, 1230, 1230, 1230, 1462,
159644
+ /* 10 */ 1462, 1462, 1230, 1371, 1371, 1515, 1263, 1230, 1230, 1230,
159645
+ /* 20 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1461, 1230, 1230,
159646
+ /* 30 */ 1230, 1230, 1550, 1550, 1230, 1230, 1230, 1230, 1230, 1230,
159647
+ /* 40 */ 1230, 1230, 1380, 1230, 1387, 1230, 1230, 1230, 1230, 1230,
159648
+ /* 50 */ 1463, 1464, 1230, 1230, 1230, 1514, 1516, 1479, 1394, 1393,
159649
+ /* 60 */ 1392, 1391, 1497, 1358, 1385, 1378, 1382, 1457, 1458, 1456,
159650
+ /* 70 */ 1460, 1464, 1463, 1230, 1381, 1428, 1442, 1427, 1230, 1230,
159651
+ /* 80 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159652
+ /* 90 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159653
+ /* 100 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159654
+ /* 110 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159655
+ /* 120 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1436, 1441, 1447,
159656
+ /* 130 */ 1440, 1437, 1430, 1429, 1431, 1230, 1432, 1230, 1254, 1230,
159657
+ /* 140 */ 1230, 1251, 1305, 1230, 1230, 1230, 1230, 1230, 1534, 1533,
159658
+ /* 150 */ 1230, 1230, 1263, 1422, 1421, 1433, 1434, 1444, 1443, 1522,
159659
+ /* 160 */ 1586, 1585, 1480, 1230, 1230, 1230, 1230, 1230, 1230, 1550,
159660
+ /* 170 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159661
+ /* 180 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159662
+ /* 190 */ 1230, 1230, 1230, 1550, 1550, 1230, 1263, 1550, 1550, 1259,
159663
+ /* 200 */ 1259, 1365, 1230, 1529, 1332, 1332, 1332, 1332, 1341, 1332,
159664
+ /* 210 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159665
+ /* 220 */ 1230, 1230, 1230, 1230, 1230, 1519, 1517, 1230, 1230, 1230,
159666
+ /* 230 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159667
+ /* 240 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159668
+ /* 250 */ 1230, 1230, 1230, 1230, 1337, 1230, 1230, 1230, 1230, 1230,
159669
+ /* 260 */ 1230, 1230, 1230, 1230, 1230, 1230, 1579, 1230, 1492, 1319,
159670
+ /* 270 */ 1337, 1337, 1337, 1337, 1339, 1320, 1318, 1331, 1264, 1237,
159671
+ /* 280 */ 1625, 1397, 1386, 1338, 1360, 1386, 1360, 1622, 1384, 1397,
159672
+ /* 290 */ 1397, 1384, 1397, 1338, 1622, 1280, 1602, 1275, 1371, 1371,
159673
+ /* 300 */ 1371, 1360, 1365, 1365, 1459, 1338, 1331, 1230, 1625, 1625,
159674
+ /* 310 */ 1346, 1346, 1624, 1624, 1346, 1480, 1609, 1406, 1308, 1314,
159675
+ /* 320 */ 1314, 1314, 1314, 1346, 1248, 1384, 1609, 1609, 1384, 1406,
159676
+ /* 330 */ 1308, 1384, 1308, 1384, 1346, 1248, 1496, 1619, 1346, 1248,
159677
+ /* 340 */ 1470, 1346, 1248, 1346, 1248, 1470, 1306, 1306, 1306, 1295,
159678
+ /* 350 */ 1230, 1230, 1470, 1306, 1280, 1306, 1295, 1306, 1306, 1568,
159679
+ /* 360 */ 1230, 1474, 1474, 1470, 1364, 1359, 1364, 1359, 1364, 1359,
159680
+ /* 370 */ 1364, 1359, 1346, 1560, 1560, 1374, 1374, 1379, 1365, 1465,
159681
+ /* 380 */ 1346, 1230, 1379, 1377, 1375, 1384, 1298, 1582, 1582, 1578,
159682
+ /* 390 */ 1578, 1578, 1630, 1630, 1529, 1595, 1263, 1263, 1263, 1263,
159683
+ /* 400 */ 1595, 1282, 1282, 1264, 1264, 1263, 1595, 1230, 1230, 1230,
159684
+ /* 410 */ 1230, 1230, 1230, 1590, 1230, 1524, 1481, 1350, 1230, 1230,
159685
+ /* 420 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159686
+ /* 430 */ 1230, 1230, 1535, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159687
+ /* 440 */ 1230, 1230, 1230, 1411, 1230, 1233, 1526, 1230, 1230, 1230,
159688
+ /* 450 */ 1230, 1230, 1230, 1230, 1230, 1388, 1389, 1351, 1230, 1230,
159689
+ /* 460 */ 1230, 1230, 1230, 1230, 1230, 1403, 1230, 1230, 1230, 1398,
159690
+ /* 470 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1621, 1230,
159691
+ /* 480 */ 1230, 1230, 1230, 1230, 1230, 1495, 1494, 1230, 1230, 1348,
159692
+ /* 490 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159693
+ /* 500 */ 1230, 1230, 1230, 1278, 1230, 1230, 1230, 1230, 1230, 1230,
159694
+ /* 510 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159695
+ /* 520 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1376, 1230, 1230,
159696
+ /* 530 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159697
+ /* 540 */ 1230, 1230, 1565, 1366, 1230, 1230, 1612, 1230, 1230, 1230,
159698
+ /* 550 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159699
+ /* 560 */ 1230, 1606, 1322, 1413, 1230, 1412, 1416, 1252, 1230, 1242,
159700
+ /* 570 */ 1230, 1230,
159408159701
};
159409159702
/********** End of lemon-generated parsing tables *****************************/
159410159703
159411159704
/* The next table maps tokens (terminal symbols) into fallback tokens.
159412159705
** If a construct like the following:
@@ -159447,12 +159740,12 @@
159447159740
0, /* EXISTS => nothing */
159448159741
59, /* TEMP => ID */
159449159742
0, /* LP => nothing */
159450159743
0, /* RP => nothing */
159451159744
0, /* AS => nothing */
159452
- 59, /* WITHOUT => ID */
159453159745
0, /* COMMA => nothing */
159746
+ 59, /* WITHOUT => ID */
159454159747
59, /* ABORT => ID */
159455159748
59, /* ACTION => ID */
159456159749
59, /* AFTER => ID */
159457159750
59, /* ANALYZE => ID */
159458159751
59, /* ASC => ID */
@@ -159719,12 +160012,12 @@
159719160012
/* 20 */ "EXISTS",
159720160013
/* 21 */ "TEMP",
159721160014
/* 22 */ "LP",
159722160015
/* 23 */ "RP",
159723160016
/* 24 */ "AS",
159724
- /* 25 */ "WITHOUT",
159725
- /* 26 */ "COMMA",
160017
+ /* 25 */ "COMMA",
160018
+ /* 26 */ "WITHOUT",
159726160019
/* 27 */ "ABORT",
159727160020
/* 28 */ "ACTION",
159728160021
/* 29 */ "AFTER",
159729160022
/* 30 */ "ANALYZE",
159730160023
/* 31 */ "ASC",
@@ -159896,125 +160189,126 @@
159896160189
/* 197 */ "temp",
159897160190
/* 198 */ "ifnotexists",
159898160191
/* 199 */ "dbnm",
159899160192
/* 200 */ "columnlist",
159900160193
/* 201 */ "conslist_opt",
159901
- /* 202 */ "table_options",
160194
+ /* 202 */ "table_option_set",
159902160195
/* 203 */ "select",
159903
- /* 204 */ "columnname",
159904
- /* 205 */ "carglist",
159905
- /* 206 */ "typetoken",
159906
- /* 207 */ "typename",
159907
- /* 208 */ "signed",
159908
- /* 209 */ "plus_num",
159909
- /* 210 */ "minus_num",
159910
- /* 211 */ "scanpt",
159911
- /* 212 */ "scantok",
159912
- /* 213 */ "ccons",
159913
- /* 214 */ "term",
159914
- /* 215 */ "expr",
159915
- /* 216 */ "onconf",
159916
- /* 217 */ "sortorder",
159917
- /* 218 */ "autoinc",
159918
- /* 219 */ "eidlist_opt",
159919
- /* 220 */ "refargs",
159920
- /* 221 */ "defer_subclause",
159921
- /* 222 */ "generated",
159922
- /* 223 */ "refarg",
159923
- /* 224 */ "refact",
159924
- /* 225 */ "init_deferred_pred_opt",
159925
- /* 226 */ "conslist",
159926
- /* 227 */ "tconscomma",
159927
- /* 228 */ "tcons",
159928
- /* 229 */ "sortlist",
159929
- /* 230 */ "eidlist",
159930
- /* 231 */ "defer_subclause_opt",
159931
- /* 232 */ "orconf",
159932
- /* 233 */ "resolvetype",
159933
- /* 234 */ "raisetype",
159934
- /* 235 */ "ifexists",
159935
- /* 236 */ "fullname",
159936
- /* 237 */ "selectnowith",
159937
- /* 238 */ "oneselect",
159938
- /* 239 */ "wqlist",
159939
- /* 240 */ "multiselect_op",
159940
- /* 241 */ "distinct",
159941
- /* 242 */ "selcollist",
159942
- /* 243 */ "from",
159943
- /* 244 */ "where_opt",
159944
- /* 245 */ "groupby_opt",
159945
- /* 246 */ "having_opt",
159946
- /* 247 */ "orderby_opt",
159947
- /* 248 */ "limit_opt",
159948
- /* 249 */ "window_clause",
159949
- /* 250 */ "values",
159950
- /* 251 */ "nexprlist",
159951
- /* 252 */ "sclp",
159952
- /* 253 */ "as",
159953
- /* 254 */ "seltablist",
159954
- /* 255 */ "stl_prefix",
159955
- /* 256 */ "joinop",
159956
- /* 257 */ "indexed_opt",
159957
- /* 258 */ "on_opt",
159958
- /* 259 */ "using_opt",
159959
- /* 260 */ "exprlist",
159960
- /* 261 */ "xfullname",
159961
- /* 262 */ "idlist",
159962
- /* 263 */ "nulls",
159963
- /* 264 */ "with",
159964
- /* 265 */ "where_opt_ret",
159965
- /* 266 */ "setlist",
159966
- /* 267 */ "insert_cmd",
159967
- /* 268 */ "idlist_opt",
159968
- /* 269 */ "upsert",
159969
- /* 270 */ "returning",
159970
- /* 271 */ "filter_over",
159971
- /* 272 */ "likeop",
159972
- /* 273 */ "between_op",
159973
- /* 274 */ "in_op",
159974
- /* 275 */ "paren_exprlist",
159975
- /* 276 */ "case_operand",
159976
- /* 277 */ "case_exprlist",
159977
- /* 278 */ "case_else",
159978
- /* 279 */ "uniqueflag",
159979
- /* 280 */ "collate",
159980
- /* 281 */ "vinto",
159981
- /* 282 */ "nmnum",
159982
- /* 283 */ "trigger_decl",
159983
- /* 284 */ "trigger_cmd_list",
159984
- /* 285 */ "trigger_time",
159985
- /* 286 */ "trigger_event",
159986
- /* 287 */ "foreach_clause",
159987
- /* 288 */ "when_clause",
159988
- /* 289 */ "trigger_cmd",
159989
- /* 290 */ "trnm",
159990
- /* 291 */ "tridxby",
159991
- /* 292 */ "database_kw_opt",
159992
- /* 293 */ "key_opt",
159993
- /* 294 */ "add_column_fullname",
159994
- /* 295 */ "kwcolumn_opt",
159995
- /* 296 */ "create_vtab",
159996
- /* 297 */ "vtabarglist",
159997
- /* 298 */ "vtabarg",
159998
- /* 299 */ "vtabargtoken",
159999
- /* 300 */ "lp",
160000
- /* 301 */ "anylist",
160001
- /* 302 */ "wqitem",
160002
- /* 303 */ "wqas",
160003
- /* 304 */ "windowdefn_list",
160004
- /* 305 */ "windowdefn",
160005
- /* 306 */ "window",
160006
- /* 307 */ "frame_opt",
160007
- /* 308 */ "part_opt",
160008
- /* 309 */ "filter_clause",
160009
- /* 310 */ "over_clause",
160010
- /* 311 */ "range_or_rows",
160011
- /* 312 */ "frame_bound",
160012
- /* 313 */ "frame_bound_s",
160013
- /* 314 */ "frame_bound_e",
160014
- /* 315 */ "frame_exclude_opt",
160015
- /* 316 */ "frame_exclude",
160196
+ /* 204 */ "table_option",
160197
+ /* 205 */ "columnname",
160198
+ /* 206 */ "carglist",
160199
+ /* 207 */ "typetoken",
160200
+ /* 208 */ "typename",
160201
+ /* 209 */ "signed",
160202
+ /* 210 */ "plus_num",
160203
+ /* 211 */ "minus_num",
160204
+ /* 212 */ "scanpt",
160205
+ /* 213 */ "scantok",
160206
+ /* 214 */ "ccons",
160207
+ /* 215 */ "term",
160208
+ /* 216 */ "expr",
160209
+ /* 217 */ "onconf",
160210
+ /* 218 */ "sortorder",
160211
+ /* 219 */ "autoinc",
160212
+ /* 220 */ "eidlist_opt",
160213
+ /* 221 */ "refargs",
160214
+ /* 222 */ "defer_subclause",
160215
+ /* 223 */ "generated",
160216
+ /* 224 */ "refarg",
160217
+ /* 225 */ "refact",
160218
+ /* 226 */ "init_deferred_pred_opt",
160219
+ /* 227 */ "conslist",
160220
+ /* 228 */ "tconscomma",
160221
+ /* 229 */ "tcons",
160222
+ /* 230 */ "sortlist",
160223
+ /* 231 */ "eidlist",
160224
+ /* 232 */ "defer_subclause_opt",
160225
+ /* 233 */ "orconf",
160226
+ /* 234 */ "resolvetype",
160227
+ /* 235 */ "raisetype",
160228
+ /* 236 */ "ifexists",
160229
+ /* 237 */ "fullname",
160230
+ /* 238 */ "selectnowith",
160231
+ /* 239 */ "oneselect",
160232
+ /* 240 */ "wqlist",
160233
+ /* 241 */ "multiselect_op",
160234
+ /* 242 */ "distinct",
160235
+ /* 243 */ "selcollist",
160236
+ /* 244 */ "from",
160237
+ /* 245 */ "where_opt",
160238
+ /* 246 */ "groupby_opt",
160239
+ /* 247 */ "having_opt",
160240
+ /* 248 */ "orderby_opt",
160241
+ /* 249 */ "limit_opt",
160242
+ /* 250 */ "window_clause",
160243
+ /* 251 */ "values",
160244
+ /* 252 */ "nexprlist",
160245
+ /* 253 */ "sclp",
160246
+ /* 254 */ "as",
160247
+ /* 255 */ "seltablist",
160248
+ /* 256 */ "stl_prefix",
160249
+ /* 257 */ "joinop",
160250
+ /* 258 */ "indexed_opt",
160251
+ /* 259 */ "on_opt",
160252
+ /* 260 */ "using_opt",
160253
+ /* 261 */ "exprlist",
160254
+ /* 262 */ "xfullname",
160255
+ /* 263 */ "idlist",
160256
+ /* 264 */ "nulls",
160257
+ /* 265 */ "with",
160258
+ /* 266 */ "where_opt_ret",
160259
+ /* 267 */ "setlist",
160260
+ /* 268 */ "insert_cmd",
160261
+ /* 269 */ "idlist_opt",
160262
+ /* 270 */ "upsert",
160263
+ /* 271 */ "returning",
160264
+ /* 272 */ "filter_over",
160265
+ /* 273 */ "likeop",
160266
+ /* 274 */ "between_op",
160267
+ /* 275 */ "in_op",
160268
+ /* 276 */ "paren_exprlist",
160269
+ /* 277 */ "case_operand",
160270
+ /* 278 */ "case_exprlist",
160271
+ /* 279 */ "case_else",
160272
+ /* 280 */ "uniqueflag",
160273
+ /* 281 */ "collate",
160274
+ /* 282 */ "vinto",
160275
+ /* 283 */ "nmnum",
160276
+ /* 284 */ "trigger_decl",
160277
+ /* 285 */ "trigger_cmd_list",
160278
+ /* 286 */ "trigger_time",
160279
+ /* 287 */ "trigger_event",
160280
+ /* 288 */ "foreach_clause",
160281
+ /* 289 */ "when_clause",
160282
+ /* 290 */ "trigger_cmd",
160283
+ /* 291 */ "trnm",
160284
+ /* 292 */ "tridxby",
160285
+ /* 293 */ "database_kw_opt",
160286
+ /* 294 */ "key_opt",
160287
+ /* 295 */ "add_column_fullname",
160288
+ /* 296 */ "kwcolumn_opt",
160289
+ /* 297 */ "create_vtab",
160290
+ /* 298 */ "vtabarglist",
160291
+ /* 299 */ "vtabarg",
160292
+ /* 300 */ "vtabargtoken",
160293
+ /* 301 */ "lp",
160294
+ /* 302 */ "anylist",
160295
+ /* 303 */ "wqitem",
160296
+ /* 304 */ "wqas",
160297
+ /* 305 */ "windowdefn_list",
160298
+ /* 306 */ "windowdefn",
160299
+ /* 307 */ "window",
160300
+ /* 308 */ "frame_opt",
160301
+ /* 309 */ "part_opt",
160302
+ /* 310 */ "filter_clause",
160303
+ /* 311 */ "over_clause",
160304
+ /* 312 */ "range_or_rows",
160305
+ /* 313 */ "frame_bound",
160306
+ /* 314 */ "frame_bound_s",
160307
+ /* 315 */ "frame_bound_e",
160308
+ /* 316 */ "frame_exclude_opt",
160309
+ /* 317 */ "frame_exclude",
160016160310
};
160017160311
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
160018160312
160019160313
#ifndef NDEBUG
160020160314
/* For tracing reduce actions, the names of all rules are required.
@@ -160037,389 +160331,392 @@
160037160331
/* 14 */ "createkw ::= CREATE",
160038160332
/* 15 */ "ifnotexists ::=",
160039160333
/* 16 */ "ifnotexists ::= IF NOT EXISTS",
160040160334
/* 17 */ "temp ::= TEMP",
160041160335
/* 18 */ "temp ::=",
160042
- /* 19 */ "create_table_args ::= LP columnlist conslist_opt RP table_options",
160336
+ /* 19 */ "create_table_args ::= LP columnlist conslist_opt RP table_option_set",
160043160337
/* 20 */ "create_table_args ::= AS select",
160044
- /* 21 */ "table_options ::=",
160045
- /* 22 */ "table_options ::= WITHOUT nm",
160046
- /* 23 */ "columnname ::= nm typetoken",
160047
- /* 24 */ "typetoken ::=",
160048
- /* 25 */ "typetoken ::= typename LP signed RP",
160049
- /* 26 */ "typetoken ::= typename LP signed COMMA signed RP",
160050
- /* 27 */ "typename ::= typename ID|STRING",
160051
- /* 28 */ "scanpt ::=",
160052
- /* 29 */ "scantok ::=",
160053
- /* 30 */ "ccons ::= CONSTRAINT nm",
160054
- /* 31 */ "ccons ::= DEFAULT scantok term",
160055
- /* 32 */ "ccons ::= DEFAULT LP expr RP",
160056
- /* 33 */ "ccons ::= DEFAULT PLUS scantok term",
160057
- /* 34 */ "ccons ::= DEFAULT MINUS scantok term",
160058
- /* 35 */ "ccons ::= DEFAULT scantok ID|INDEXED",
160059
- /* 36 */ "ccons ::= NOT NULL onconf",
160060
- /* 37 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
160061
- /* 38 */ "ccons ::= UNIQUE onconf",
160062
- /* 39 */ "ccons ::= CHECK LP expr RP",
160063
- /* 40 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
160064
- /* 41 */ "ccons ::= defer_subclause",
160065
- /* 42 */ "ccons ::= COLLATE ID|STRING",
160066
- /* 43 */ "generated ::= LP expr RP",
160067
- /* 44 */ "generated ::= LP expr RP ID",
160068
- /* 45 */ "autoinc ::=",
160069
- /* 46 */ "autoinc ::= AUTOINCR",
160070
- /* 47 */ "refargs ::=",
160071
- /* 48 */ "refargs ::= refargs refarg",
160072
- /* 49 */ "refarg ::= MATCH nm",
160073
- /* 50 */ "refarg ::= ON INSERT refact",
160074
- /* 51 */ "refarg ::= ON DELETE refact",
160075
- /* 52 */ "refarg ::= ON UPDATE refact",
160076
- /* 53 */ "refact ::= SET NULL",
160077
- /* 54 */ "refact ::= SET DEFAULT",
160078
- /* 55 */ "refact ::= CASCADE",
160079
- /* 56 */ "refact ::= RESTRICT",
160080
- /* 57 */ "refact ::= NO ACTION",
160081
- /* 58 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
160082
- /* 59 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
160083
- /* 60 */ "init_deferred_pred_opt ::=",
160084
- /* 61 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
160085
- /* 62 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
160086
- /* 63 */ "conslist_opt ::=",
160087
- /* 64 */ "tconscomma ::= COMMA",
160088
- /* 65 */ "tcons ::= CONSTRAINT nm",
160089
- /* 66 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
160090
- /* 67 */ "tcons ::= UNIQUE LP sortlist RP onconf",
160091
- /* 68 */ "tcons ::= CHECK LP expr RP onconf",
160092
- /* 69 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
160093
- /* 70 */ "defer_subclause_opt ::=",
160094
- /* 71 */ "onconf ::=",
160095
- /* 72 */ "onconf ::= ON CONFLICT resolvetype",
160096
- /* 73 */ "orconf ::=",
160097
- /* 74 */ "orconf ::= OR resolvetype",
160098
- /* 75 */ "resolvetype ::= IGNORE",
160099
- /* 76 */ "resolvetype ::= REPLACE",
160100
- /* 77 */ "cmd ::= DROP TABLE ifexists fullname",
160101
- /* 78 */ "ifexists ::= IF EXISTS",
160102
- /* 79 */ "ifexists ::=",
160103
- /* 80 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
160104
- /* 81 */ "cmd ::= DROP VIEW ifexists fullname",
160105
- /* 82 */ "cmd ::= select",
160106
- /* 83 */ "select ::= WITH wqlist selectnowith",
160107
- /* 84 */ "select ::= WITH RECURSIVE wqlist selectnowith",
160108
- /* 85 */ "select ::= selectnowith",
160109
- /* 86 */ "selectnowith ::= selectnowith multiselect_op oneselect",
160110
- /* 87 */ "multiselect_op ::= UNION",
160111
- /* 88 */ "multiselect_op ::= UNION ALL",
160112
- /* 89 */ "multiselect_op ::= EXCEPT|INTERSECT",
160113
- /* 90 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
160114
- /* 91 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
160115
- /* 92 */ "values ::= VALUES LP nexprlist RP",
160116
- /* 93 */ "values ::= values COMMA LP nexprlist RP",
160117
- /* 94 */ "distinct ::= DISTINCT",
160118
- /* 95 */ "distinct ::= ALL",
160119
- /* 96 */ "distinct ::=",
160120
- /* 97 */ "sclp ::=",
160121
- /* 98 */ "selcollist ::= sclp scanpt expr scanpt as",
160122
- /* 99 */ "selcollist ::= sclp scanpt STAR",
160123
- /* 100 */ "selcollist ::= sclp scanpt nm DOT STAR",
160124
- /* 101 */ "as ::= AS nm",
160125
- /* 102 */ "as ::=",
160126
- /* 103 */ "from ::=",
160127
- /* 104 */ "from ::= FROM seltablist",
160128
- /* 105 */ "stl_prefix ::= seltablist joinop",
160129
- /* 106 */ "stl_prefix ::=",
160130
- /* 107 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
160131
- /* 108 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
160132
- /* 109 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
160133
- /* 110 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
160134
- /* 111 */ "dbnm ::=",
160135
- /* 112 */ "dbnm ::= DOT nm",
160136
- /* 113 */ "fullname ::= nm",
160137
- /* 114 */ "fullname ::= nm DOT nm",
160138
- /* 115 */ "xfullname ::= nm",
160139
- /* 116 */ "xfullname ::= nm DOT nm",
160140
- /* 117 */ "xfullname ::= nm DOT nm AS nm",
160141
- /* 118 */ "xfullname ::= nm AS nm",
160142
- /* 119 */ "joinop ::= COMMA|JOIN",
160143
- /* 120 */ "joinop ::= JOIN_KW JOIN",
160144
- /* 121 */ "joinop ::= JOIN_KW nm JOIN",
160145
- /* 122 */ "joinop ::= JOIN_KW nm nm JOIN",
160146
- /* 123 */ "on_opt ::= ON expr",
160147
- /* 124 */ "on_opt ::=",
160148
- /* 125 */ "indexed_opt ::=",
160149
- /* 126 */ "indexed_opt ::= INDEXED BY nm",
160150
- /* 127 */ "indexed_opt ::= NOT INDEXED",
160151
- /* 128 */ "using_opt ::= USING LP idlist RP",
160152
- /* 129 */ "using_opt ::=",
160153
- /* 130 */ "orderby_opt ::=",
160154
- /* 131 */ "orderby_opt ::= ORDER BY sortlist",
160155
- /* 132 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
160156
- /* 133 */ "sortlist ::= expr sortorder nulls",
160157
- /* 134 */ "sortorder ::= ASC",
160158
- /* 135 */ "sortorder ::= DESC",
160159
- /* 136 */ "sortorder ::=",
160160
- /* 137 */ "nulls ::= NULLS FIRST",
160161
- /* 138 */ "nulls ::= NULLS LAST",
160162
- /* 139 */ "nulls ::=",
160163
- /* 140 */ "groupby_opt ::=",
160164
- /* 141 */ "groupby_opt ::= GROUP BY nexprlist",
160165
- /* 142 */ "having_opt ::=",
160166
- /* 143 */ "having_opt ::= HAVING expr",
160167
- /* 144 */ "limit_opt ::=",
160168
- /* 145 */ "limit_opt ::= LIMIT expr",
160169
- /* 146 */ "limit_opt ::= LIMIT expr OFFSET expr",
160170
- /* 147 */ "limit_opt ::= LIMIT expr COMMA expr",
160171
- /* 148 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret",
160172
- /* 149 */ "where_opt ::=",
160173
- /* 150 */ "where_opt ::= WHERE expr",
160174
- /* 151 */ "where_opt_ret ::=",
160175
- /* 152 */ "where_opt_ret ::= WHERE expr",
160176
- /* 153 */ "where_opt_ret ::= RETURNING selcollist",
160177
- /* 154 */ "where_opt_ret ::= WHERE expr RETURNING selcollist",
160178
- /* 155 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret",
160179
- /* 156 */ "setlist ::= setlist COMMA nm EQ expr",
160180
- /* 157 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
160181
- /* 158 */ "setlist ::= nm EQ expr",
160182
- /* 159 */ "setlist ::= LP idlist RP EQ expr",
160183
- /* 160 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
160184
- /* 161 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
160185
- /* 162 */ "upsert ::=",
160186
- /* 163 */ "upsert ::= RETURNING selcollist",
160187
- /* 164 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
160188
- /* 165 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
160189
- /* 166 */ "upsert ::= ON CONFLICT DO NOTHING returning",
160190
- /* 167 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
160191
- /* 168 */ "returning ::= RETURNING selcollist",
160192
- /* 169 */ "insert_cmd ::= INSERT orconf",
160193
- /* 170 */ "insert_cmd ::= REPLACE",
160194
- /* 171 */ "idlist_opt ::=",
160195
- /* 172 */ "idlist_opt ::= LP idlist RP",
160196
- /* 173 */ "idlist ::= idlist COMMA nm",
160197
- /* 174 */ "idlist ::= nm",
160198
- /* 175 */ "expr ::= LP expr RP",
160199
- /* 176 */ "expr ::= ID|INDEXED",
160200
- /* 177 */ "expr ::= JOIN_KW",
160201
- /* 178 */ "expr ::= nm DOT nm",
160202
- /* 179 */ "expr ::= nm DOT nm DOT nm",
160203
- /* 180 */ "term ::= NULL|FLOAT|BLOB",
160204
- /* 181 */ "term ::= STRING",
160205
- /* 182 */ "term ::= INTEGER",
160206
- /* 183 */ "expr ::= VARIABLE",
160207
- /* 184 */ "expr ::= expr COLLATE ID|STRING",
160208
- /* 185 */ "expr ::= CAST LP expr AS typetoken RP",
160209
- /* 186 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
160210
- /* 187 */ "expr ::= ID|INDEXED LP STAR RP",
160211
- /* 188 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
160212
- /* 189 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
160213
- /* 190 */ "term ::= CTIME_KW",
160214
- /* 191 */ "expr ::= LP nexprlist COMMA expr RP",
160215
- /* 192 */ "expr ::= expr AND expr",
160216
- /* 193 */ "expr ::= expr OR expr",
160217
- /* 194 */ "expr ::= expr LT|GT|GE|LE expr",
160218
- /* 195 */ "expr ::= expr EQ|NE expr",
160219
- /* 196 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
160220
- /* 197 */ "expr ::= expr PLUS|MINUS expr",
160221
- /* 198 */ "expr ::= expr STAR|SLASH|REM expr",
160222
- /* 199 */ "expr ::= expr CONCAT expr",
160223
- /* 200 */ "likeop ::= NOT LIKE_KW|MATCH",
160224
- /* 201 */ "expr ::= expr likeop expr",
160225
- /* 202 */ "expr ::= expr likeop expr ESCAPE expr",
160226
- /* 203 */ "expr ::= expr ISNULL|NOTNULL",
160227
- /* 204 */ "expr ::= expr NOT NULL",
160228
- /* 205 */ "expr ::= expr IS expr",
160229
- /* 206 */ "expr ::= expr IS NOT expr",
160230
- /* 207 */ "expr ::= NOT expr",
160231
- /* 208 */ "expr ::= BITNOT expr",
160232
- /* 209 */ "expr ::= PLUS|MINUS expr",
160233
- /* 210 */ "between_op ::= BETWEEN",
160234
- /* 211 */ "between_op ::= NOT BETWEEN",
160235
- /* 212 */ "expr ::= expr between_op expr AND expr",
160236
- /* 213 */ "in_op ::= IN",
160237
- /* 214 */ "in_op ::= NOT IN",
160238
- /* 215 */ "expr ::= expr in_op LP exprlist RP",
160239
- /* 216 */ "expr ::= LP select RP",
160240
- /* 217 */ "expr ::= expr in_op LP select RP",
160241
- /* 218 */ "expr ::= expr in_op nm dbnm paren_exprlist",
160242
- /* 219 */ "expr ::= EXISTS LP select RP",
160243
- /* 220 */ "expr ::= CASE case_operand case_exprlist case_else END",
160244
- /* 221 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
160245
- /* 222 */ "case_exprlist ::= WHEN expr THEN expr",
160246
- /* 223 */ "case_else ::= ELSE expr",
160247
- /* 224 */ "case_else ::=",
160248
- /* 225 */ "case_operand ::= expr",
160249
- /* 226 */ "case_operand ::=",
160250
- /* 227 */ "exprlist ::=",
160251
- /* 228 */ "nexprlist ::= nexprlist COMMA expr",
160252
- /* 229 */ "nexprlist ::= expr",
160253
- /* 230 */ "paren_exprlist ::=",
160254
- /* 231 */ "paren_exprlist ::= LP exprlist RP",
160255
- /* 232 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
160256
- /* 233 */ "uniqueflag ::= UNIQUE",
160257
- /* 234 */ "uniqueflag ::=",
160258
- /* 235 */ "eidlist_opt ::=",
160259
- /* 236 */ "eidlist_opt ::= LP eidlist RP",
160260
- /* 237 */ "eidlist ::= eidlist COMMA nm collate sortorder",
160261
- /* 238 */ "eidlist ::= nm collate sortorder",
160262
- /* 239 */ "collate ::=",
160263
- /* 240 */ "collate ::= COLLATE ID|STRING",
160264
- /* 241 */ "cmd ::= DROP INDEX ifexists fullname",
160265
- /* 242 */ "cmd ::= VACUUM vinto",
160266
- /* 243 */ "cmd ::= VACUUM nm vinto",
160267
- /* 244 */ "vinto ::= INTO expr",
160268
- /* 245 */ "vinto ::=",
160269
- /* 246 */ "cmd ::= PRAGMA nm dbnm",
160270
- /* 247 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
160271
- /* 248 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
160272
- /* 249 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
160273
- /* 250 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
160274
- /* 251 */ "plus_num ::= PLUS INTEGER|FLOAT",
160275
- /* 252 */ "minus_num ::= MINUS INTEGER|FLOAT",
160276
- /* 253 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
160277
- /* 254 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
160278
- /* 255 */ "trigger_time ::= BEFORE|AFTER",
160279
- /* 256 */ "trigger_time ::= INSTEAD OF",
160280
- /* 257 */ "trigger_time ::=",
160281
- /* 258 */ "trigger_event ::= DELETE|INSERT",
160282
- /* 259 */ "trigger_event ::= UPDATE",
160283
- /* 260 */ "trigger_event ::= UPDATE OF idlist",
160284
- /* 261 */ "when_clause ::=",
160285
- /* 262 */ "when_clause ::= WHEN expr",
160286
- /* 263 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
160287
- /* 264 */ "trigger_cmd_list ::= trigger_cmd SEMI",
160288
- /* 265 */ "trnm ::= nm DOT nm",
160289
- /* 266 */ "tridxby ::= INDEXED BY nm",
160290
- /* 267 */ "tridxby ::= NOT INDEXED",
160291
- /* 268 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
160292
- /* 269 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
160293
- /* 270 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
160294
- /* 271 */ "trigger_cmd ::= scanpt select scanpt",
160295
- /* 272 */ "expr ::= RAISE LP IGNORE RP",
160296
- /* 273 */ "expr ::= RAISE LP raisetype COMMA nm RP",
160297
- /* 274 */ "raisetype ::= ROLLBACK",
160298
- /* 275 */ "raisetype ::= ABORT",
160299
- /* 276 */ "raisetype ::= FAIL",
160300
- /* 277 */ "cmd ::= DROP TRIGGER ifexists fullname",
160301
- /* 278 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
160302
- /* 279 */ "cmd ::= DETACH database_kw_opt expr",
160303
- /* 280 */ "key_opt ::=",
160304
- /* 281 */ "key_opt ::= KEY expr",
160305
- /* 282 */ "cmd ::= REINDEX",
160306
- /* 283 */ "cmd ::= REINDEX nm dbnm",
160307
- /* 284 */ "cmd ::= ANALYZE",
160308
- /* 285 */ "cmd ::= ANALYZE nm dbnm",
160309
- /* 286 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
160310
- /* 287 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
160311
- /* 288 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
160312
- /* 289 */ "add_column_fullname ::= fullname",
160313
- /* 290 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
160314
- /* 291 */ "cmd ::= create_vtab",
160315
- /* 292 */ "cmd ::= create_vtab LP vtabarglist RP",
160316
- /* 293 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
160317
- /* 294 */ "vtabarg ::=",
160318
- /* 295 */ "vtabargtoken ::= ANY",
160319
- /* 296 */ "vtabargtoken ::= lp anylist RP",
160320
- /* 297 */ "lp ::= LP",
160321
- /* 298 */ "with ::= WITH wqlist",
160322
- /* 299 */ "with ::= WITH RECURSIVE wqlist",
160323
- /* 300 */ "wqas ::= AS",
160324
- /* 301 */ "wqas ::= AS MATERIALIZED",
160325
- /* 302 */ "wqas ::= AS NOT MATERIALIZED",
160326
- /* 303 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
160327
- /* 304 */ "wqlist ::= wqitem",
160328
- /* 305 */ "wqlist ::= wqlist COMMA wqitem",
160329
- /* 306 */ "windowdefn_list ::= windowdefn",
160330
- /* 307 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
160331
- /* 308 */ "windowdefn ::= nm AS LP window RP",
160332
- /* 309 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
160333
- /* 310 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
160334
- /* 311 */ "window ::= ORDER BY sortlist frame_opt",
160335
- /* 312 */ "window ::= nm ORDER BY sortlist frame_opt",
160336
- /* 313 */ "window ::= frame_opt",
160337
- /* 314 */ "window ::= nm frame_opt",
160338
- /* 315 */ "frame_opt ::=",
160339
- /* 316 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
160340
- /* 317 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
160341
- /* 318 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
160342
- /* 319 */ "frame_bound_s ::= frame_bound",
160343
- /* 320 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
160344
- /* 321 */ "frame_bound_e ::= frame_bound",
160345
- /* 322 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
160346
- /* 323 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
160347
- /* 324 */ "frame_bound ::= CURRENT ROW",
160348
- /* 325 */ "frame_exclude_opt ::=",
160349
- /* 326 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
160350
- /* 327 */ "frame_exclude ::= NO OTHERS",
160351
- /* 328 */ "frame_exclude ::= CURRENT ROW",
160352
- /* 329 */ "frame_exclude ::= GROUP|TIES",
160353
- /* 330 */ "window_clause ::= WINDOW windowdefn_list",
160354
- /* 331 */ "filter_over ::= filter_clause over_clause",
160355
- /* 332 */ "filter_over ::= over_clause",
160356
- /* 333 */ "filter_over ::= filter_clause",
160357
- /* 334 */ "over_clause ::= OVER LP window RP",
160358
- /* 335 */ "over_clause ::= OVER nm",
160359
- /* 336 */ "filter_clause ::= FILTER LP WHERE expr RP",
160360
- /* 337 */ "input ::= cmdlist",
160361
- /* 338 */ "cmdlist ::= cmdlist ecmd",
160362
- /* 339 */ "cmdlist ::= ecmd",
160363
- /* 340 */ "ecmd ::= SEMI",
160364
- /* 341 */ "ecmd ::= cmdx SEMI",
160365
- /* 342 */ "ecmd ::= explain cmdx SEMI",
160366
- /* 343 */ "trans_opt ::=",
160367
- /* 344 */ "trans_opt ::= TRANSACTION",
160368
- /* 345 */ "trans_opt ::= TRANSACTION nm",
160369
- /* 346 */ "savepoint_opt ::= SAVEPOINT",
160370
- /* 347 */ "savepoint_opt ::=",
160371
- /* 348 */ "cmd ::= create_table create_table_args",
160372
- /* 349 */ "columnlist ::= columnlist COMMA columnname carglist",
160373
- /* 350 */ "columnlist ::= columnname carglist",
160374
- /* 351 */ "nm ::= ID|INDEXED",
160375
- /* 352 */ "nm ::= STRING",
160376
- /* 353 */ "nm ::= JOIN_KW",
160377
- /* 354 */ "typetoken ::= typename",
160378
- /* 355 */ "typename ::= ID|STRING",
160379
- /* 356 */ "signed ::= plus_num",
160380
- /* 357 */ "signed ::= minus_num",
160381
- /* 358 */ "carglist ::= carglist ccons",
160382
- /* 359 */ "carglist ::=",
160383
- /* 360 */ "ccons ::= NULL onconf",
160384
- /* 361 */ "ccons ::= GENERATED ALWAYS AS generated",
160385
- /* 362 */ "ccons ::= AS generated",
160386
- /* 363 */ "conslist_opt ::= COMMA conslist",
160387
- /* 364 */ "conslist ::= conslist tconscomma tcons",
160388
- /* 365 */ "conslist ::= tcons",
160389
- /* 366 */ "tconscomma ::=",
160390
- /* 367 */ "defer_subclause_opt ::= defer_subclause",
160391
- /* 368 */ "resolvetype ::= raisetype",
160392
- /* 369 */ "selectnowith ::= oneselect",
160393
- /* 370 */ "oneselect ::= values",
160394
- /* 371 */ "sclp ::= selcollist COMMA",
160395
- /* 372 */ "as ::= ID|STRING",
160396
- /* 373 */ "returning ::=",
160397
- /* 374 */ "expr ::= term",
160398
- /* 375 */ "likeop ::= LIKE_KW|MATCH",
160399
- /* 376 */ "exprlist ::= nexprlist",
160400
- /* 377 */ "nmnum ::= plus_num",
160401
- /* 378 */ "nmnum ::= nm",
160402
- /* 379 */ "nmnum ::= ON",
160403
- /* 380 */ "nmnum ::= DELETE",
160404
- /* 381 */ "nmnum ::= DEFAULT",
160405
- /* 382 */ "plus_num ::= INTEGER|FLOAT",
160406
- /* 383 */ "foreach_clause ::=",
160407
- /* 384 */ "foreach_clause ::= FOR EACH ROW",
160408
- /* 385 */ "trnm ::= nm",
160409
- /* 386 */ "tridxby ::=",
160410
- /* 387 */ "database_kw_opt ::= DATABASE",
160411
- /* 388 */ "database_kw_opt ::=",
160412
- /* 389 */ "kwcolumn_opt ::=",
160413
- /* 390 */ "kwcolumn_opt ::= COLUMNKW",
160414
- /* 391 */ "vtabarglist ::= vtabarg",
160415
- /* 392 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
160416
- /* 393 */ "vtabarg ::= vtabarg vtabargtoken",
160417
- /* 394 */ "anylist ::=",
160418
- /* 395 */ "anylist ::= anylist LP anylist RP",
160419
- /* 396 */ "anylist ::= anylist ANY",
160420
- /* 397 */ "with ::=",
160338
+ /* 21 */ "table_option_set ::=",
160339
+ /* 22 */ "table_option_set ::= table_option_set COMMA table_option",
160340
+ /* 23 */ "table_option ::= WITHOUT nm",
160341
+ /* 24 */ "table_option ::= nm",
160342
+ /* 25 */ "columnname ::= nm typetoken",
160343
+ /* 26 */ "typetoken ::=",
160344
+ /* 27 */ "typetoken ::= typename LP signed RP",
160345
+ /* 28 */ "typetoken ::= typename LP signed COMMA signed RP",
160346
+ /* 29 */ "typename ::= typename ID|STRING",
160347
+ /* 30 */ "scanpt ::=",
160348
+ /* 31 */ "scantok ::=",
160349
+ /* 32 */ "ccons ::= CONSTRAINT nm",
160350
+ /* 33 */ "ccons ::= DEFAULT scantok term",
160351
+ /* 34 */ "ccons ::= DEFAULT LP expr RP",
160352
+ /* 35 */ "ccons ::= DEFAULT PLUS scantok term",
160353
+ /* 36 */ "ccons ::= DEFAULT MINUS scantok term",
160354
+ /* 37 */ "ccons ::= DEFAULT scantok ID|INDEXED",
160355
+ /* 38 */ "ccons ::= NOT NULL onconf",
160356
+ /* 39 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
160357
+ /* 40 */ "ccons ::= UNIQUE onconf",
160358
+ /* 41 */ "ccons ::= CHECK LP expr RP",
160359
+ /* 42 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
160360
+ /* 43 */ "ccons ::= defer_subclause",
160361
+ /* 44 */ "ccons ::= COLLATE ID|STRING",
160362
+ /* 45 */ "generated ::= LP expr RP",
160363
+ /* 46 */ "generated ::= LP expr RP ID",
160364
+ /* 47 */ "autoinc ::=",
160365
+ /* 48 */ "autoinc ::= AUTOINCR",
160366
+ /* 49 */ "refargs ::=",
160367
+ /* 50 */ "refargs ::= refargs refarg",
160368
+ /* 51 */ "refarg ::= MATCH nm",
160369
+ /* 52 */ "refarg ::= ON INSERT refact",
160370
+ /* 53 */ "refarg ::= ON DELETE refact",
160371
+ /* 54 */ "refarg ::= ON UPDATE refact",
160372
+ /* 55 */ "refact ::= SET NULL",
160373
+ /* 56 */ "refact ::= SET DEFAULT",
160374
+ /* 57 */ "refact ::= CASCADE",
160375
+ /* 58 */ "refact ::= RESTRICT",
160376
+ /* 59 */ "refact ::= NO ACTION",
160377
+ /* 60 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
160378
+ /* 61 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
160379
+ /* 62 */ "init_deferred_pred_opt ::=",
160380
+ /* 63 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
160381
+ /* 64 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
160382
+ /* 65 */ "conslist_opt ::=",
160383
+ /* 66 */ "tconscomma ::= COMMA",
160384
+ /* 67 */ "tcons ::= CONSTRAINT nm",
160385
+ /* 68 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
160386
+ /* 69 */ "tcons ::= UNIQUE LP sortlist RP onconf",
160387
+ /* 70 */ "tcons ::= CHECK LP expr RP onconf",
160388
+ /* 71 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
160389
+ /* 72 */ "defer_subclause_opt ::=",
160390
+ /* 73 */ "onconf ::=",
160391
+ /* 74 */ "onconf ::= ON CONFLICT resolvetype",
160392
+ /* 75 */ "orconf ::=",
160393
+ /* 76 */ "orconf ::= OR resolvetype",
160394
+ /* 77 */ "resolvetype ::= IGNORE",
160395
+ /* 78 */ "resolvetype ::= REPLACE",
160396
+ /* 79 */ "cmd ::= DROP TABLE ifexists fullname",
160397
+ /* 80 */ "ifexists ::= IF EXISTS",
160398
+ /* 81 */ "ifexists ::=",
160399
+ /* 82 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
160400
+ /* 83 */ "cmd ::= DROP VIEW ifexists fullname",
160401
+ /* 84 */ "cmd ::= select",
160402
+ /* 85 */ "select ::= WITH wqlist selectnowith",
160403
+ /* 86 */ "select ::= WITH RECURSIVE wqlist selectnowith",
160404
+ /* 87 */ "select ::= selectnowith",
160405
+ /* 88 */ "selectnowith ::= selectnowith multiselect_op oneselect",
160406
+ /* 89 */ "multiselect_op ::= UNION",
160407
+ /* 90 */ "multiselect_op ::= UNION ALL",
160408
+ /* 91 */ "multiselect_op ::= EXCEPT|INTERSECT",
160409
+ /* 92 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
160410
+ /* 93 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
160411
+ /* 94 */ "values ::= VALUES LP nexprlist RP",
160412
+ /* 95 */ "values ::= values COMMA LP nexprlist RP",
160413
+ /* 96 */ "distinct ::= DISTINCT",
160414
+ /* 97 */ "distinct ::= ALL",
160415
+ /* 98 */ "distinct ::=",
160416
+ /* 99 */ "sclp ::=",
160417
+ /* 100 */ "selcollist ::= sclp scanpt expr scanpt as",
160418
+ /* 101 */ "selcollist ::= sclp scanpt STAR",
160419
+ /* 102 */ "selcollist ::= sclp scanpt nm DOT STAR",
160420
+ /* 103 */ "as ::= AS nm",
160421
+ /* 104 */ "as ::=",
160422
+ /* 105 */ "from ::=",
160423
+ /* 106 */ "from ::= FROM seltablist",
160424
+ /* 107 */ "stl_prefix ::= seltablist joinop",
160425
+ /* 108 */ "stl_prefix ::=",
160426
+ /* 109 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
160427
+ /* 110 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
160428
+ /* 111 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
160429
+ /* 112 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
160430
+ /* 113 */ "dbnm ::=",
160431
+ /* 114 */ "dbnm ::= DOT nm",
160432
+ /* 115 */ "fullname ::= nm",
160433
+ /* 116 */ "fullname ::= nm DOT nm",
160434
+ /* 117 */ "xfullname ::= nm",
160435
+ /* 118 */ "xfullname ::= nm DOT nm",
160436
+ /* 119 */ "xfullname ::= nm DOT nm AS nm",
160437
+ /* 120 */ "xfullname ::= nm AS nm",
160438
+ /* 121 */ "joinop ::= COMMA|JOIN",
160439
+ /* 122 */ "joinop ::= JOIN_KW JOIN",
160440
+ /* 123 */ "joinop ::= JOIN_KW nm JOIN",
160441
+ /* 124 */ "joinop ::= JOIN_KW nm nm JOIN",
160442
+ /* 125 */ "on_opt ::= ON expr",
160443
+ /* 126 */ "on_opt ::=",
160444
+ /* 127 */ "indexed_opt ::=",
160445
+ /* 128 */ "indexed_opt ::= INDEXED BY nm",
160446
+ /* 129 */ "indexed_opt ::= NOT INDEXED",
160447
+ /* 130 */ "using_opt ::= USING LP idlist RP",
160448
+ /* 131 */ "using_opt ::=",
160449
+ /* 132 */ "orderby_opt ::=",
160450
+ /* 133 */ "orderby_opt ::= ORDER BY sortlist",
160451
+ /* 134 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
160452
+ /* 135 */ "sortlist ::= expr sortorder nulls",
160453
+ /* 136 */ "sortorder ::= ASC",
160454
+ /* 137 */ "sortorder ::= DESC",
160455
+ /* 138 */ "sortorder ::=",
160456
+ /* 139 */ "nulls ::= NULLS FIRST",
160457
+ /* 140 */ "nulls ::= NULLS LAST",
160458
+ /* 141 */ "nulls ::=",
160459
+ /* 142 */ "groupby_opt ::=",
160460
+ /* 143 */ "groupby_opt ::= GROUP BY nexprlist",
160461
+ /* 144 */ "having_opt ::=",
160462
+ /* 145 */ "having_opt ::= HAVING expr",
160463
+ /* 146 */ "limit_opt ::=",
160464
+ /* 147 */ "limit_opt ::= LIMIT expr",
160465
+ /* 148 */ "limit_opt ::= LIMIT expr OFFSET expr",
160466
+ /* 149 */ "limit_opt ::= LIMIT expr COMMA expr",
160467
+ /* 150 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret",
160468
+ /* 151 */ "where_opt ::=",
160469
+ /* 152 */ "where_opt ::= WHERE expr",
160470
+ /* 153 */ "where_opt_ret ::=",
160471
+ /* 154 */ "where_opt_ret ::= WHERE expr",
160472
+ /* 155 */ "where_opt_ret ::= RETURNING selcollist",
160473
+ /* 156 */ "where_opt_ret ::= WHERE expr RETURNING selcollist",
160474
+ /* 157 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret",
160475
+ /* 158 */ "setlist ::= setlist COMMA nm EQ expr",
160476
+ /* 159 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
160477
+ /* 160 */ "setlist ::= nm EQ expr",
160478
+ /* 161 */ "setlist ::= LP idlist RP EQ expr",
160479
+ /* 162 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
160480
+ /* 163 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
160481
+ /* 164 */ "upsert ::=",
160482
+ /* 165 */ "upsert ::= RETURNING selcollist",
160483
+ /* 166 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
160484
+ /* 167 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
160485
+ /* 168 */ "upsert ::= ON CONFLICT DO NOTHING returning",
160486
+ /* 169 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
160487
+ /* 170 */ "returning ::= RETURNING selcollist",
160488
+ /* 171 */ "insert_cmd ::= INSERT orconf",
160489
+ /* 172 */ "insert_cmd ::= REPLACE",
160490
+ /* 173 */ "idlist_opt ::=",
160491
+ /* 174 */ "idlist_opt ::= LP idlist RP",
160492
+ /* 175 */ "idlist ::= idlist COMMA nm",
160493
+ /* 176 */ "idlist ::= nm",
160494
+ /* 177 */ "expr ::= LP expr RP",
160495
+ /* 178 */ "expr ::= ID|INDEXED",
160496
+ /* 179 */ "expr ::= JOIN_KW",
160497
+ /* 180 */ "expr ::= nm DOT nm",
160498
+ /* 181 */ "expr ::= nm DOT nm DOT nm",
160499
+ /* 182 */ "term ::= NULL|FLOAT|BLOB",
160500
+ /* 183 */ "term ::= STRING",
160501
+ /* 184 */ "term ::= INTEGER",
160502
+ /* 185 */ "expr ::= VARIABLE",
160503
+ /* 186 */ "expr ::= expr COLLATE ID|STRING",
160504
+ /* 187 */ "expr ::= CAST LP expr AS typetoken RP",
160505
+ /* 188 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
160506
+ /* 189 */ "expr ::= ID|INDEXED LP STAR RP",
160507
+ /* 190 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
160508
+ /* 191 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
160509
+ /* 192 */ "term ::= CTIME_KW",
160510
+ /* 193 */ "expr ::= LP nexprlist COMMA expr RP",
160511
+ /* 194 */ "expr ::= expr AND expr",
160512
+ /* 195 */ "expr ::= expr OR expr",
160513
+ /* 196 */ "expr ::= expr LT|GT|GE|LE expr",
160514
+ /* 197 */ "expr ::= expr EQ|NE expr",
160515
+ /* 198 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
160516
+ /* 199 */ "expr ::= expr PLUS|MINUS expr",
160517
+ /* 200 */ "expr ::= expr STAR|SLASH|REM expr",
160518
+ /* 201 */ "expr ::= expr CONCAT expr",
160519
+ /* 202 */ "likeop ::= NOT LIKE_KW|MATCH",
160520
+ /* 203 */ "expr ::= expr likeop expr",
160521
+ /* 204 */ "expr ::= expr likeop expr ESCAPE expr",
160522
+ /* 205 */ "expr ::= expr ISNULL|NOTNULL",
160523
+ /* 206 */ "expr ::= expr NOT NULL",
160524
+ /* 207 */ "expr ::= expr IS expr",
160525
+ /* 208 */ "expr ::= expr IS NOT expr",
160526
+ /* 209 */ "expr ::= NOT expr",
160527
+ /* 210 */ "expr ::= BITNOT expr",
160528
+ /* 211 */ "expr ::= PLUS|MINUS expr",
160529
+ /* 212 */ "between_op ::= BETWEEN",
160530
+ /* 213 */ "between_op ::= NOT BETWEEN",
160531
+ /* 214 */ "expr ::= expr between_op expr AND expr",
160532
+ /* 215 */ "in_op ::= IN",
160533
+ /* 216 */ "in_op ::= NOT IN",
160534
+ /* 217 */ "expr ::= expr in_op LP exprlist RP",
160535
+ /* 218 */ "expr ::= LP select RP",
160536
+ /* 219 */ "expr ::= expr in_op LP select RP",
160537
+ /* 220 */ "expr ::= expr in_op nm dbnm paren_exprlist",
160538
+ /* 221 */ "expr ::= EXISTS LP select RP",
160539
+ /* 222 */ "expr ::= CASE case_operand case_exprlist case_else END",
160540
+ /* 223 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
160541
+ /* 224 */ "case_exprlist ::= WHEN expr THEN expr",
160542
+ /* 225 */ "case_else ::= ELSE expr",
160543
+ /* 226 */ "case_else ::=",
160544
+ /* 227 */ "case_operand ::= expr",
160545
+ /* 228 */ "case_operand ::=",
160546
+ /* 229 */ "exprlist ::=",
160547
+ /* 230 */ "nexprlist ::= nexprlist COMMA expr",
160548
+ /* 231 */ "nexprlist ::= expr",
160549
+ /* 232 */ "paren_exprlist ::=",
160550
+ /* 233 */ "paren_exprlist ::= LP exprlist RP",
160551
+ /* 234 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
160552
+ /* 235 */ "uniqueflag ::= UNIQUE",
160553
+ /* 236 */ "uniqueflag ::=",
160554
+ /* 237 */ "eidlist_opt ::=",
160555
+ /* 238 */ "eidlist_opt ::= LP eidlist RP",
160556
+ /* 239 */ "eidlist ::= eidlist COMMA nm collate sortorder",
160557
+ /* 240 */ "eidlist ::= nm collate sortorder",
160558
+ /* 241 */ "collate ::=",
160559
+ /* 242 */ "collate ::= COLLATE ID|STRING",
160560
+ /* 243 */ "cmd ::= DROP INDEX ifexists fullname",
160561
+ /* 244 */ "cmd ::= VACUUM vinto",
160562
+ /* 245 */ "cmd ::= VACUUM nm vinto",
160563
+ /* 246 */ "vinto ::= INTO expr",
160564
+ /* 247 */ "vinto ::=",
160565
+ /* 248 */ "cmd ::= PRAGMA nm dbnm",
160566
+ /* 249 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
160567
+ /* 250 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
160568
+ /* 251 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
160569
+ /* 252 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
160570
+ /* 253 */ "plus_num ::= PLUS INTEGER|FLOAT",
160571
+ /* 254 */ "minus_num ::= MINUS INTEGER|FLOAT",
160572
+ /* 255 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
160573
+ /* 256 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
160574
+ /* 257 */ "trigger_time ::= BEFORE|AFTER",
160575
+ /* 258 */ "trigger_time ::= INSTEAD OF",
160576
+ /* 259 */ "trigger_time ::=",
160577
+ /* 260 */ "trigger_event ::= DELETE|INSERT",
160578
+ /* 261 */ "trigger_event ::= UPDATE",
160579
+ /* 262 */ "trigger_event ::= UPDATE OF idlist",
160580
+ /* 263 */ "when_clause ::=",
160581
+ /* 264 */ "when_clause ::= WHEN expr",
160582
+ /* 265 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
160583
+ /* 266 */ "trigger_cmd_list ::= trigger_cmd SEMI",
160584
+ /* 267 */ "trnm ::= nm DOT nm",
160585
+ /* 268 */ "tridxby ::= INDEXED BY nm",
160586
+ /* 269 */ "tridxby ::= NOT INDEXED",
160587
+ /* 270 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
160588
+ /* 271 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
160589
+ /* 272 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
160590
+ /* 273 */ "trigger_cmd ::= scanpt select scanpt",
160591
+ /* 274 */ "expr ::= RAISE LP IGNORE RP",
160592
+ /* 275 */ "expr ::= RAISE LP raisetype COMMA nm RP",
160593
+ /* 276 */ "raisetype ::= ROLLBACK",
160594
+ /* 277 */ "raisetype ::= ABORT",
160595
+ /* 278 */ "raisetype ::= FAIL",
160596
+ /* 279 */ "cmd ::= DROP TRIGGER ifexists fullname",
160597
+ /* 280 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
160598
+ /* 281 */ "cmd ::= DETACH database_kw_opt expr",
160599
+ /* 282 */ "key_opt ::=",
160600
+ /* 283 */ "key_opt ::= KEY expr",
160601
+ /* 284 */ "cmd ::= REINDEX",
160602
+ /* 285 */ "cmd ::= REINDEX nm dbnm",
160603
+ /* 286 */ "cmd ::= ANALYZE",
160604
+ /* 287 */ "cmd ::= ANALYZE nm dbnm",
160605
+ /* 288 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
160606
+ /* 289 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
160607
+ /* 290 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
160608
+ /* 291 */ "add_column_fullname ::= fullname",
160609
+ /* 292 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
160610
+ /* 293 */ "cmd ::= create_vtab",
160611
+ /* 294 */ "cmd ::= create_vtab LP vtabarglist RP",
160612
+ /* 295 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
160613
+ /* 296 */ "vtabarg ::=",
160614
+ /* 297 */ "vtabargtoken ::= ANY",
160615
+ /* 298 */ "vtabargtoken ::= lp anylist RP",
160616
+ /* 299 */ "lp ::= LP",
160617
+ /* 300 */ "with ::= WITH wqlist",
160618
+ /* 301 */ "with ::= WITH RECURSIVE wqlist",
160619
+ /* 302 */ "wqas ::= AS",
160620
+ /* 303 */ "wqas ::= AS MATERIALIZED",
160621
+ /* 304 */ "wqas ::= AS NOT MATERIALIZED",
160622
+ /* 305 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
160623
+ /* 306 */ "wqlist ::= wqitem",
160624
+ /* 307 */ "wqlist ::= wqlist COMMA wqitem",
160625
+ /* 308 */ "windowdefn_list ::= windowdefn",
160626
+ /* 309 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
160627
+ /* 310 */ "windowdefn ::= nm AS LP window RP",
160628
+ /* 311 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
160629
+ /* 312 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
160630
+ /* 313 */ "window ::= ORDER BY sortlist frame_opt",
160631
+ /* 314 */ "window ::= nm ORDER BY sortlist frame_opt",
160632
+ /* 315 */ "window ::= frame_opt",
160633
+ /* 316 */ "window ::= nm frame_opt",
160634
+ /* 317 */ "frame_opt ::=",
160635
+ /* 318 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
160636
+ /* 319 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
160637
+ /* 320 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
160638
+ /* 321 */ "frame_bound_s ::= frame_bound",
160639
+ /* 322 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
160640
+ /* 323 */ "frame_bound_e ::= frame_bound",
160641
+ /* 324 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
160642
+ /* 325 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
160643
+ /* 326 */ "frame_bound ::= CURRENT ROW",
160644
+ /* 327 */ "frame_exclude_opt ::=",
160645
+ /* 328 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
160646
+ /* 329 */ "frame_exclude ::= NO OTHERS",
160647
+ /* 330 */ "frame_exclude ::= CURRENT ROW",
160648
+ /* 331 */ "frame_exclude ::= GROUP|TIES",
160649
+ /* 332 */ "window_clause ::= WINDOW windowdefn_list",
160650
+ /* 333 */ "filter_over ::= filter_clause over_clause",
160651
+ /* 334 */ "filter_over ::= over_clause",
160652
+ /* 335 */ "filter_over ::= filter_clause",
160653
+ /* 336 */ "over_clause ::= OVER LP window RP",
160654
+ /* 337 */ "over_clause ::= OVER nm",
160655
+ /* 338 */ "filter_clause ::= FILTER LP WHERE expr RP",
160656
+ /* 339 */ "input ::= cmdlist",
160657
+ /* 340 */ "cmdlist ::= cmdlist ecmd",
160658
+ /* 341 */ "cmdlist ::= ecmd",
160659
+ /* 342 */ "ecmd ::= SEMI",
160660
+ /* 343 */ "ecmd ::= cmdx SEMI",
160661
+ /* 344 */ "ecmd ::= explain cmdx SEMI",
160662
+ /* 345 */ "trans_opt ::=",
160663
+ /* 346 */ "trans_opt ::= TRANSACTION",
160664
+ /* 347 */ "trans_opt ::= TRANSACTION nm",
160665
+ /* 348 */ "savepoint_opt ::= SAVEPOINT",
160666
+ /* 349 */ "savepoint_opt ::=",
160667
+ /* 350 */ "cmd ::= create_table create_table_args",
160668
+ /* 351 */ "table_option_set ::= table_option",
160669
+ /* 352 */ "columnlist ::= columnlist COMMA columnname carglist",
160670
+ /* 353 */ "columnlist ::= columnname carglist",
160671
+ /* 354 */ "nm ::= ID|INDEXED",
160672
+ /* 355 */ "nm ::= STRING",
160673
+ /* 356 */ "nm ::= JOIN_KW",
160674
+ /* 357 */ "typetoken ::= typename",
160675
+ /* 358 */ "typename ::= ID|STRING",
160676
+ /* 359 */ "signed ::= plus_num",
160677
+ /* 360 */ "signed ::= minus_num",
160678
+ /* 361 */ "carglist ::= carglist ccons",
160679
+ /* 362 */ "carglist ::=",
160680
+ /* 363 */ "ccons ::= NULL onconf",
160681
+ /* 364 */ "ccons ::= GENERATED ALWAYS AS generated",
160682
+ /* 365 */ "ccons ::= AS generated",
160683
+ /* 366 */ "conslist_opt ::= COMMA conslist",
160684
+ /* 367 */ "conslist ::= conslist tconscomma tcons",
160685
+ /* 368 */ "conslist ::= tcons",
160686
+ /* 369 */ "tconscomma ::=",
160687
+ /* 370 */ "defer_subclause_opt ::= defer_subclause",
160688
+ /* 371 */ "resolvetype ::= raisetype",
160689
+ /* 372 */ "selectnowith ::= oneselect",
160690
+ /* 373 */ "oneselect ::= values",
160691
+ /* 374 */ "sclp ::= selcollist COMMA",
160692
+ /* 375 */ "as ::= ID|STRING",
160693
+ /* 376 */ "returning ::=",
160694
+ /* 377 */ "expr ::= term",
160695
+ /* 378 */ "likeop ::= LIKE_KW|MATCH",
160696
+ /* 379 */ "exprlist ::= nexprlist",
160697
+ /* 380 */ "nmnum ::= plus_num",
160698
+ /* 381 */ "nmnum ::= nm",
160699
+ /* 382 */ "nmnum ::= ON",
160700
+ /* 383 */ "nmnum ::= DELETE",
160701
+ /* 384 */ "nmnum ::= DEFAULT",
160702
+ /* 385 */ "plus_num ::= INTEGER|FLOAT",
160703
+ /* 386 */ "foreach_clause ::=",
160704
+ /* 387 */ "foreach_clause ::= FOR EACH ROW",
160705
+ /* 388 */ "trnm ::= nm",
160706
+ /* 389 */ "tridxby ::=",
160707
+ /* 390 */ "database_kw_opt ::= DATABASE",
160708
+ /* 391 */ "database_kw_opt ::=",
160709
+ /* 392 */ "kwcolumn_opt ::=",
160710
+ /* 393 */ "kwcolumn_opt ::= COLUMNKW",
160711
+ /* 394 */ "vtabarglist ::= vtabarg",
160712
+ /* 395 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
160713
+ /* 396 */ "vtabarg ::= vtabarg vtabargtoken",
160714
+ /* 397 */ "anylist ::=",
160715
+ /* 398 */ "anylist ::= anylist LP anylist RP",
160716
+ /* 399 */ "anylist ::= anylist ANY",
160717
+ /* 400 */ "with ::=",
160421160718
};
160422160719
#endif /* NDEBUG */
160423160720
160424160721
160425160722
#if YYSTACKDEPTH<=0
@@ -160542,102 +160839,102 @@
160542160839
** which appear on the RHS of the rule, but which are *not* used
160543160840
** inside the C code.
160544160841
*/
160545160842
/********* Begin destructor definitions ***************************************/
160546160843
case 203: /* select */
160547
- case 237: /* selectnowith */
160548
- case 238: /* oneselect */
160549
- case 250: /* values */
160550
-{
160551
-sqlite3SelectDelete(pParse->db, (yypminor->yy81));
160552
-}
160553
- break;
160554
- case 214: /* term */
160555
- case 215: /* expr */
160556
- case 244: /* where_opt */
160557
- case 246: /* having_opt */
160558
- case 258: /* on_opt */
160559
- case 265: /* where_opt_ret */
160560
- case 276: /* case_operand */
160561
- case 278: /* case_else */
160562
- case 281: /* vinto */
160563
- case 288: /* when_clause */
160564
- case 293: /* key_opt */
160565
- case 309: /* filter_clause */
160566
-{
160567
-sqlite3ExprDelete(pParse->db, (yypminor->yy404));
160568
-}
160569
- break;
160570
- case 219: /* eidlist_opt */
160571
- case 229: /* sortlist */
160572
- case 230: /* eidlist */
160573
- case 242: /* selcollist */
160574
- case 245: /* groupby_opt */
160575
- case 247: /* orderby_opt */
160576
- case 251: /* nexprlist */
160577
- case 252: /* sclp */
160578
- case 260: /* exprlist */
160579
- case 266: /* setlist */
160580
- case 275: /* paren_exprlist */
160581
- case 277: /* case_exprlist */
160582
- case 308: /* part_opt */
160583
-{
160584
-sqlite3ExprListDelete(pParse->db, (yypminor->yy70));
160585
-}
160586
- break;
160587
- case 236: /* fullname */
160588
- case 243: /* from */
160589
- case 254: /* seltablist */
160590
- case 255: /* stl_prefix */
160591
- case 261: /* xfullname */
160592
-{
160593
-sqlite3SrcListDelete(pParse->db, (yypminor->yy153));
160594
-}
160595
- break;
160596
- case 239: /* wqlist */
160597
-{
160598
-sqlite3WithDelete(pParse->db, (yypminor->yy103));
160599
-}
160600
- break;
160601
- case 249: /* window_clause */
160602
- case 304: /* windowdefn_list */
160603
-{
160604
-sqlite3WindowListDelete(pParse->db, (yypminor->yy49));
160605
-}
160606
- break;
160607
- case 259: /* using_opt */
160608
- case 262: /* idlist */
160609
- case 268: /* idlist_opt */
160610
-{
160611
-sqlite3IdListDelete(pParse->db, (yypminor->yy436));
160612
-}
160613
- break;
160614
- case 271: /* filter_over */
160615
- case 305: /* windowdefn */
160616
- case 306: /* window */
160617
- case 307: /* frame_opt */
160618
- case 310: /* over_clause */
160619
-{
160620
-sqlite3WindowDelete(pParse->db, (yypminor->yy49));
160621
-}
160622
- break;
160623
- case 284: /* trigger_cmd_list */
160624
- case 289: /* trigger_cmd */
160625
-{
160626
-sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy157));
160627
-}
160628
- break;
160629
- case 286: /* trigger_event */
160630
-{
160631
-sqlite3IdListDelete(pParse->db, (yypminor->yy262).b);
160632
-}
160633
- break;
160634
- case 312: /* frame_bound */
160635
- case 313: /* frame_bound_s */
160636
- case 314: /* frame_bound_e */
160637
-{
160638
-sqlite3ExprDelete(pParse->db, (yypminor->yy117).pExpr);
160844
+ case 238: /* selectnowith */
160845
+ case 239: /* oneselect */
160846
+ case 251: /* values */
160847
+{
160848
+sqlite3SelectDelete(pParse->db, (yypminor->yy303));
160849
+}
160850
+ break;
160851
+ case 215: /* term */
160852
+ case 216: /* expr */
160853
+ case 245: /* where_opt */
160854
+ case 247: /* having_opt */
160855
+ case 259: /* on_opt */
160856
+ case 266: /* where_opt_ret */
160857
+ case 277: /* case_operand */
160858
+ case 279: /* case_else */
160859
+ case 282: /* vinto */
160860
+ case 289: /* when_clause */
160861
+ case 294: /* key_opt */
160862
+ case 310: /* filter_clause */
160863
+{
160864
+sqlite3ExprDelete(pParse->db, (yypminor->yy626));
160865
+}
160866
+ break;
160867
+ case 220: /* eidlist_opt */
160868
+ case 230: /* sortlist */
160869
+ case 231: /* eidlist */
160870
+ case 243: /* selcollist */
160871
+ case 246: /* groupby_opt */
160872
+ case 248: /* orderby_opt */
160873
+ case 252: /* nexprlist */
160874
+ case 253: /* sclp */
160875
+ case 261: /* exprlist */
160876
+ case 267: /* setlist */
160877
+ case 276: /* paren_exprlist */
160878
+ case 278: /* case_exprlist */
160879
+ case 309: /* part_opt */
160880
+{
160881
+sqlite3ExprListDelete(pParse->db, (yypminor->yy562));
160882
+}
160883
+ break;
160884
+ case 237: /* fullname */
160885
+ case 244: /* from */
160886
+ case 255: /* seltablist */
160887
+ case 256: /* stl_prefix */
160888
+ case 262: /* xfullname */
160889
+{
160890
+sqlite3SrcListDelete(pParse->db, (yypminor->yy607));
160891
+}
160892
+ break;
160893
+ case 240: /* wqlist */
160894
+{
160895
+sqlite3WithDelete(pParse->db, (yypminor->yy43));
160896
+}
160897
+ break;
160898
+ case 250: /* window_clause */
160899
+ case 305: /* windowdefn_list */
160900
+{
160901
+sqlite3WindowListDelete(pParse->db, (yypminor->yy375));
160902
+}
160903
+ break;
160904
+ case 260: /* using_opt */
160905
+ case 263: /* idlist */
160906
+ case 269: /* idlist_opt */
160907
+{
160908
+sqlite3IdListDelete(pParse->db, (yypminor->yy240));
160909
+}
160910
+ break;
160911
+ case 272: /* filter_over */
160912
+ case 306: /* windowdefn */
160913
+ case 307: /* window */
160914
+ case 308: /* frame_opt */
160915
+ case 311: /* over_clause */
160916
+{
160917
+sqlite3WindowDelete(pParse->db, (yypminor->yy375));
160918
+}
160919
+ break;
160920
+ case 285: /* trigger_cmd_list */
160921
+ case 290: /* trigger_cmd */
160922
+{
160923
+sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy95));
160924
+}
160925
+ break;
160926
+ case 287: /* trigger_event */
160927
+{
160928
+sqlite3IdListDelete(pParse->db, (yypminor->yy570).b);
160929
+}
160930
+ break;
160931
+ case 313: /* frame_bound */
160932
+ case 314: /* frame_bound_s */
160933
+ case 315: /* frame_bound_e */
160934
+{
160935
+sqlite3ExprDelete(pParse->db, (yypminor->yy81).pExpr);
160639160936
}
160640160937
break;
160641160938
/********* End destructor definitions *****************************************/
160642160939
default: break; /* If no destructor action specified: do nothing */
160643160940
}
@@ -160943,389 +161240,392 @@
160943161240
196, /* (14) createkw ::= CREATE */
160944161241
198, /* (15) ifnotexists ::= */
160945161242
198, /* (16) ifnotexists ::= IF NOT EXISTS */
160946161243
197, /* (17) temp ::= TEMP */
160947161244
197, /* (18) temp ::= */
160948
- 195, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
161245
+ 195, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
160949161246
195, /* (20) create_table_args ::= AS select */
160950
- 202, /* (21) table_options ::= */
160951
- 202, /* (22) table_options ::= WITHOUT nm */
160952
- 204, /* (23) columnname ::= nm typetoken */
160953
- 206, /* (24) typetoken ::= */
160954
- 206, /* (25) typetoken ::= typename LP signed RP */
160955
- 206, /* (26) typetoken ::= typename LP signed COMMA signed RP */
160956
- 207, /* (27) typename ::= typename ID|STRING */
160957
- 211, /* (28) scanpt ::= */
160958
- 212, /* (29) scantok ::= */
160959
- 213, /* (30) ccons ::= CONSTRAINT nm */
160960
- 213, /* (31) ccons ::= DEFAULT scantok term */
160961
- 213, /* (32) ccons ::= DEFAULT LP expr RP */
160962
- 213, /* (33) ccons ::= DEFAULT PLUS scantok term */
160963
- 213, /* (34) ccons ::= DEFAULT MINUS scantok term */
160964
- 213, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
160965
- 213, /* (36) ccons ::= NOT NULL onconf */
160966
- 213, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
160967
- 213, /* (38) ccons ::= UNIQUE onconf */
160968
- 213, /* (39) ccons ::= CHECK LP expr RP */
160969
- 213, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
160970
- 213, /* (41) ccons ::= defer_subclause */
160971
- 213, /* (42) ccons ::= COLLATE ID|STRING */
160972
- 222, /* (43) generated ::= LP expr RP */
160973
- 222, /* (44) generated ::= LP expr RP ID */
160974
- 218, /* (45) autoinc ::= */
160975
- 218, /* (46) autoinc ::= AUTOINCR */
160976
- 220, /* (47) refargs ::= */
160977
- 220, /* (48) refargs ::= refargs refarg */
160978
- 223, /* (49) refarg ::= MATCH nm */
160979
- 223, /* (50) refarg ::= ON INSERT refact */
160980
- 223, /* (51) refarg ::= ON DELETE refact */
160981
- 223, /* (52) refarg ::= ON UPDATE refact */
160982
- 224, /* (53) refact ::= SET NULL */
160983
- 224, /* (54) refact ::= SET DEFAULT */
160984
- 224, /* (55) refact ::= CASCADE */
160985
- 224, /* (56) refact ::= RESTRICT */
160986
- 224, /* (57) refact ::= NO ACTION */
160987
- 221, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
160988
- 221, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
160989
- 225, /* (60) init_deferred_pred_opt ::= */
160990
- 225, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
160991
- 225, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
160992
- 201, /* (63) conslist_opt ::= */
160993
- 227, /* (64) tconscomma ::= COMMA */
160994
- 228, /* (65) tcons ::= CONSTRAINT nm */
160995
- 228, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
160996
- 228, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
160997
- 228, /* (68) tcons ::= CHECK LP expr RP onconf */
160998
- 228, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
160999
- 231, /* (70) defer_subclause_opt ::= */
161000
- 216, /* (71) onconf ::= */
161001
- 216, /* (72) onconf ::= ON CONFLICT resolvetype */
161002
- 232, /* (73) orconf ::= */
161003
- 232, /* (74) orconf ::= OR resolvetype */
161004
- 233, /* (75) resolvetype ::= IGNORE */
161005
- 233, /* (76) resolvetype ::= REPLACE */
161006
- 189, /* (77) cmd ::= DROP TABLE ifexists fullname */
161007
- 235, /* (78) ifexists ::= IF EXISTS */
161008
- 235, /* (79) ifexists ::= */
161009
- 189, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
161010
- 189, /* (81) cmd ::= DROP VIEW ifexists fullname */
161011
- 189, /* (82) cmd ::= select */
161012
- 203, /* (83) select ::= WITH wqlist selectnowith */
161013
- 203, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
161014
- 203, /* (85) select ::= selectnowith */
161015
- 237, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
161016
- 240, /* (87) multiselect_op ::= UNION */
161017
- 240, /* (88) multiselect_op ::= UNION ALL */
161018
- 240, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
161019
- 238, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
161020
- 238, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
161021
- 250, /* (92) values ::= VALUES LP nexprlist RP */
161022
- 250, /* (93) values ::= values COMMA LP nexprlist RP */
161023
- 241, /* (94) distinct ::= DISTINCT */
161024
- 241, /* (95) distinct ::= ALL */
161025
- 241, /* (96) distinct ::= */
161026
- 252, /* (97) sclp ::= */
161027
- 242, /* (98) selcollist ::= sclp scanpt expr scanpt as */
161028
- 242, /* (99) selcollist ::= sclp scanpt STAR */
161029
- 242, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
161030
- 253, /* (101) as ::= AS nm */
161031
- 253, /* (102) as ::= */
161032
- 243, /* (103) from ::= */
161033
- 243, /* (104) from ::= FROM seltablist */
161034
- 255, /* (105) stl_prefix ::= seltablist joinop */
161035
- 255, /* (106) stl_prefix ::= */
161036
- 254, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
161037
- 254, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
161038
- 254, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
161039
- 254, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
161040
- 199, /* (111) dbnm ::= */
161041
- 199, /* (112) dbnm ::= DOT nm */
161042
- 236, /* (113) fullname ::= nm */
161043
- 236, /* (114) fullname ::= nm DOT nm */
161044
- 261, /* (115) xfullname ::= nm */
161045
- 261, /* (116) xfullname ::= nm DOT nm */
161046
- 261, /* (117) xfullname ::= nm DOT nm AS nm */
161047
- 261, /* (118) xfullname ::= nm AS nm */
161048
- 256, /* (119) joinop ::= COMMA|JOIN */
161049
- 256, /* (120) joinop ::= JOIN_KW JOIN */
161050
- 256, /* (121) joinop ::= JOIN_KW nm JOIN */
161051
- 256, /* (122) joinop ::= JOIN_KW nm nm JOIN */
161052
- 258, /* (123) on_opt ::= ON expr */
161053
- 258, /* (124) on_opt ::= */
161054
- 257, /* (125) indexed_opt ::= */
161055
- 257, /* (126) indexed_opt ::= INDEXED BY nm */
161056
- 257, /* (127) indexed_opt ::= NOT INDEXED */
161057
- 259, /* (128) using_opt ::= USING LP idlist RP */
161058
- 259, /* (129) using_opt ::= */
161059
- 247, /* (130) orderby_opt ::= */
161060
- 247, /* (131) orderby_opt ::= ORDER BY sortlist */
161061
- 229, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
161062
- 229, /* (133) sortlist ::= expr sortorder nulls */
161063
- 217, /* (134) sortorder ::= ASC */
161064
- 217, /* (135) sortorder ::= DESC */
161065
- 217, /* (136) sortorder ::= */
161066
- 263, /* (137) nulls ::= NULLS FIRST */
161067
- 263, /* (138) nulls ::= NULLS LAST */
161068
- 263, /* (139) nulls ::= */
161069
- 245, /* (140) groupby_opt ::= */
161070
- 245, /* (141) groupby_opt ::= GROUP BY nexprlist */
161071
- 246, /* (142) having_opt ::= */
161072
- 246, /* (143) having_opt ::= HAVING expr */
161073
- 248, /* (144) limit_opt ::= */
161074
- 248, /* (145) limit_opt ::= LIMIT expr */
161075
- 248, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
161076
- 248, /* (147) limit_opt ::= LIMIT expr COMMA expr */
161077
- 189, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
161078
- 244, /* (149) where_opt ::= */
161079
- 244, /* (150) where_opt ::= WHERE expr */
161080
- 265, /* (151) where_opt_ret ::= */
161081
- 265, /* (152) where_opt_ret ::= WHERE expr */
161082
- 265, /* (153) where_opt_ret ::= RETURNING selcollist */
161083
- 265, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
161084
- 189, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
161085
- 266, /* (156) setlist ::= setlist COMMA nm EQ expr */
161086
- 266, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
161087
- 266, /* (158) setlist ::= nm EQ expr */
161088
- 266, /* (159) setlist ::= LP idlist RP EQ expr */
161089
- 189, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
161090
- 189, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
161091
- 269, /* (162) upsert ::= */
161092
- 269, /* (163) upsert ::= RETURNING selcollist */
161093
- 269, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
161094
- 269, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
161095
- 269, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
161096
- 269, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
161097
- 270, /* (168) returning ::= RETURNING selcollist */
161098
- 267, /* (169) insert_cmd ::= INSERT orconf */
161099
- 267, /* (170) insert_cmd ::= REPLACE */
161100
- 268, /* (171) idlist_opt ::= */
161101
- 268, /* (172) idlist_opt ::= LP idlist RP */
161102
- 262, /* (173) idlist ::= idlist COMMA nm */
161103
- 262, /* (174) idlist ::= nm */
161104
- 215, /* (175) expr ::= LP expr RP */
161105
- 215, /* (176) expr ::= ID|INDEXED */
161106
- 215, /* (177) expr ::= JOIN_KW */
161107
- 215, /* (178) expr ::= nm DOT nm */
161108
- 215, /* (179) expr ::= nm DOT nm DOT nm */
161109
- 214, /* (180) term ::= NULL|FLOAT|BLOB */
161110
- 214, /* (181) term ::= STRING */
161111
- 214, /* (182) term ::= INTEGER */
161112
- 215, /* (183) expr ::= VARIABLE */
161113
- 215, /* (184) expr ::= expr COLLATE ID|STRING */
161114
- 215, /* (185) expr ::= CAST LP expr AS typetoken RP */
161115
- 215, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
161116
- 215, /* (187) expr ::= ID|INDEXED LP STAR RP */
161117
- 215, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
161118
- 215, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
161119
- 214, /* (190) term ::= CTIME_KW */
161120
- 215, /* (191) expr ::= LP nexprlist COMMA expr RP */
161121
- 215, /* (192) expr ::= expr AND expr */
161122
- 215, /* (193) expr ::= expr OR expr */
161123
- 215, /* (194) expr ::= expr LT|GT|GE|LE expr */
161124
- 215, /* (195) expr ::= expr EQ|NE expr */
161125
- 215, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
161126
- 215, /* (197) expr ::= expr PLUS|MINUS expr */
161127
- 215, /* (198) expr ::= expr STAR|SLASH|REM expr */
161128
- 215, /* (199) expr ::= expr CONCAT expr */
161129
- 272, /* (200) likeop ::= NOT LIKE_KW|MATCH */
161130
- 215, /* (201) expr ::= expr likeop expr */
161131
- 215, /* (202) expr ::= expr likeop expr ESCAPE expr */
161132
- 215, /* (203) expr ::= expr ISNULL|NOTNULL */
161133
- 215, /* (204) expr ::= expr NOT NULL */
161134
- 215, /* (205) expr ::= expr IS expr */
161135
- 215, /* (206) expr ::= expr IS NOT expr */
161136
- 215, /* (207) expr ::= NOT expr */
161137
- 215, /* (208) expr ::= BITNOT expr */
161138
- 215, /* (209) expr ::= PLUS|MINUS expr */
161139
- 273, /* (210) between_op ::= BETWEEN */
161140
- 273, /* (211) between_op ::= NOT BETWEEN */
161141
- 215, /* (212) expr ::= expr between_op expr AND expr */
161142
- 274, /* (213) in_op ::= IN */
161143
- 274, /* (214) in_op ::= NOT IN */
161144
- 215, /* (215) expr ::= expr in_op LP exprlist RP */
161145
- 215, /* (216) expr ::= LP select RP */
161146
- 215, /* (217) expr ::= expr in_op LP select RP */
161147
- 215, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
161148
- 215, /* (219) expr ::= EXISTS LP select RP */
161149
- 215, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
161150
- 277, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
161151
- 277, /* (222) case_exprlist ::= WHEN expr THEN expr */
161152
- 278, /* (223) case_else ::= ELSE expr */
161153
- 278, /* (224) case_else ::= */
161154
- 276, /* (225) case_operand ::= expr */
161155
- 276, /* (226) case_operand ::= */
161156
- 260, /* (227) exprlist ::= */
161157
- 251, /* (228) nexprlist ::= nexprlist COMMA expr */
161158
- 251, /* (229) nexprlist ::= expr */
161159
- 275, /* (230) paren_exprlist ::= */
161160
- 275, /* (231) paren_exprlist ::= LP exprlist RP */
161161
- 189, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
161162
- 279, /* (233) uniqueflag ::= UNIQUE */
161163
- 279, /* (234) uniqueflag ::= */
161164
- 219, /* (235) eidlist_opt ::= */
161165
- 219, /* (236) eidlist_opt ::= LP eidlist RP */
161166
- 230, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
161167
- 230, /* (238) eidlist ::= nm collate sortorder */
161168
- 280, /* (239) collate ::= */
161169
- 280, /* (240) collate ::= COLLATE ID|STRING */
161170
- 189, /* (241) cmd ::= DROP INDEX ifexists fullname */
161171
- 189, /* (242) cmd ::= VACUUM vinto */
161172
- 189, /* (243) cmd ::= VACUUM nm vinto */
161173
- 281, /* (244) vinto ::= INTO expr */
161174
- 281, /* (245) vinto ::= */
161175
- 189, /* (246) cmd ::= PRAGMA nm dbnm */
161176
- 189, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
161177
- 189, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
161178
- 189, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
161179
- 189, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
161180
- 209, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
161181
- 210, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
161182
- 189, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
161183
- 283, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
161184
- 285, /* (255) trigger_time ::= BEFORE|AFTER */
161185
- 285, /* (256) trigger_time ::= INSTEAD OF */
161186
- 285, /* (257) trigger_time ::= */
161187
- 286, /* (258) trigger_event ::= DELETE|INSERT */
161188
- 286, /* (259) trigger_event ::= UPDATE */
161189
- 286, /* (260) trigger_event ::= UPDATE OF idlist */
161190
- 288, /* (261) when_clause ::= */
161191
- 288, /* (262) when_clause ::= WHEN expr */
161192
- 284, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
161193
- 284, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
161194
- 290, /* (265) trnm ::= nm DOT nm */
161195
- 291, /* (266) tridxby ::= INDEXED BY nm */
161196
- 291, /* (267) tridxby ::= NOT INDEXED */
161197
- 289, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
161198
- 289, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
161199
- 289, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
161200
- 289, /* (271) trigger_cmd ::= scanpt select scanpt */
161201
- 215, /* (272) expr ::= RAISE LP IGNORE RP */
161202
- 215, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
161203
- 234, /* (274) raisetype ::= ROLLBACK */
161204
- 234, /* (275) raisetype ::= ABORT */
161205
- 234, /* (276) raisetype ::= FAIL */
161206
- 189, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
161207
- 189, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
161208
- 189, /* (279) cmd ::= DETACH database_kw_opt expr */
161209
- 293, /* (280) key_opt ::= */
161210
- 293, /* (281) key_opt ::= KEY expr */
161211
- 189, /* (282) cmd ::= REINDEX */
161212
- 189, /* (283) cmd ::= REINDEX nm dbnm */
161213
- 189, /* (284) cmd ::= ANALYZE */
161214
- 189, /* (285) cmd ::= ANALYZE nm dbnm */
161215
- 189, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
161216
- 189, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
161217
- 189, /* (288) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
161218
- 294, /* (289) add_column_fullname ::= fullname */
161219
- 189, /* (290) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
161220
- 189, /* (291) cmd ::= create_vtab */
161221
- 189, /* (292) cmd ::= create_vtab LP vtabarglist RP */
161222
- 296, /* (293) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
161223
- 298, /* (294) vtabarg ::= */
161224
- 299, /* (295) vtabargtoken ::= ANY */
161225
- 299, /* (296) vtabargtoken ::= lp anylist RP */
161226
- 300, /* (297) lp ::= LP */
161227
- 264, /* (298) with ::= WITH wqlist */
161228
- 264, /* (299) with ::= WITH RECURSIVE wqlist */
161229
- 303, /* (300) wqas ::= AS */
161230
- 303, /* (301) wqas ::= AS MATERIALIZED */
161231
- 303, /* (302) wqas ::= AS NOT MATERIALIZED */
161232
- 302, /* (303) wqitem ::= nm eidlist_opt wqas LP select RP */
161233
- 239, /* (304) wqlist ::= wqitem */
161234
- 239, /* (305) wqlist ::= wqlist COMMA wqitem */
161235
- 304, /* (306) windowdefn_list ::= windowdefn */
161236
- 304, /* (307) windowdefn_list ::= windowdefn_list COMMA windowdefn */
161237
- 305, /* (308) windowdefn ::= nm AS LP window RP */
161238
- 306, /* (309) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
161239
- 306, /* (310) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
161240
- 306, /* (311) window ::= ORDER BY sortlist frame_opt */
161241
- 306, /* (312) window ::= nm ORDER BY sortlist frame_opt */
161242
- 306, /* (313) window ::= frame_opt */
161243
- 306, /* (314) window ::= nm frame_opt */
161244
- 307, /* (315) frame_opt ::= */
161245
- 307, /* (316) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161246
- 307, /* (317) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161247
- 311, /* (318) range_or_rows ::= RANGE|ROWS|GROUPS */
161248
- 313, /* (319) frame_bound_s ::= frame_bound */
161249
- 313, /* (320) frame_bound_s ::= UNBOUNDED PRECEDING */
161250
- 314, /* (321) frame_bound_e ::= frame_bound */
161251
- 314, /* (322) frame_bound_e ::= UNBOUNDED FOLLOWING */
161252
- 312, /* (323) frame_bound ::= expr PRECEDING|FOLLOWING */
161253
- 312, /* (324) frame_bound ::= CURRENT ROW */
161254
- 315, /* (325) frame_exclude_opt ::= */
161255
- 315, /* (326) frame_exclude_opt ::= EXCLUDE frame_exclude */
161256
- 316, /* (327) frame_exclude ::= NO OTHERS */
161257
- 316, /* (328) frame_exclude ::= CURRENT ROW */
161258
- 316, /* (329) frame_exclude ::= GROUP|TIES */
161259
- 249, /* (330) window_clause ::= WINDOW windowdefn_list */
161260
- 271, /* (331) filter_over ::= filter_clause over_clause */
161261
- 271, /* (332) filter_over ::= over_clause */
161262
- 271, /* (333) filter_over ::= filter_clause */
161263
- 310, /* (334) over_clause ::= OVER LP window RP */
161264
- 310, /* (335) over_clause ::= OVER nm */
161265
- 309, /* (336) filter_clause ::= FILTER LP WHERE expr RP */
161266
- 184, /* (337) input ::= cmdlist */
161267
- 185, /* (338) cmdlist ::= cmdlist ecmd */
161268
- 185, /* (339) cmdlist ::= ecmd */
161269
- 186, /* (340) ecmd ::= SEMI */
161270
- 186, /* (341) ecmd ::= cmdx SEMI */
161271
- 186, /* (342) ecmd ::= explain cmdx SEMI */
161272
- 191, /* (343) trans_opt ::= */
161273
- 191, /* (344) trans_opt ::= TRANSACTION */
161274
- 191, /* (345) trans_opt ::= TRANSACTION nm */
161275
- 193, /* (346) savepoint_opt ::= SAVEPOINT */
161276
- 193, /* (347) savepoint_opt ::= */
161277
- 189, /* (348) cmd ::= create_table create_table_args */
161278
- 200, /* (349) columnlist ::= columnlist COMMA columnname carglist */
161279
- 200, /* (350) columnlist ::= columnname carglist */
161280
- 192, /* (351) nm ::= ID|INDEXED */
161281
- 192, /* (352) nm ::= STRING */
161282
- 192, /* (353) nm ::= JOIN_KW */
161283
- 206, /* (354) typetoken ::= typename */
161284
- 207, /* (355) typename ::= ID|STRING */
161285
- 208, /* (356) signed ::= plus_num */
161286
- 208, /* (357) signed ::= minus_num */
161287
- 205, /* (358) carglist ::= carglist ccons */
161288
- 205, /* (359) carglist ::= */
161289
- 213, /* (360) ccons ::= NULL onconf */
161290
- 213, /* (361) ccons ::= GENERATED ALWAYS AS generated */
161291
- 213, /* (362) ccons ::= AS generated */
161292
- 201, /* (363) conslist_opt ::= COMMA conslist */
161293
- 226, /* (364) conslist ::= conslist tconscomma tcons */
161294
- 226, /* (365) conslist ::= tcons */
161295
- 227, /* (366) tconscomma ::= */
161296
- 231, /* (367) defer_subclause_opt ::= defer_subclause */
161297
- 233, /* (368) resolvetype ::= raisetype */
161298
- 237, /* (369) selectnowith ::= oneselect */
161299
- 238, /* (370) oneselect ::= values */
161300
- 252, /* (371) sclp ::= selcollist COMMA */
161301
- 253, /* (372) as ::= ID|STRING */
161302
- 270, /* (373) returning ::= */
161303
- 215, /* (374) expr ::= term */
161304
- 272, /* (375) likeop ::= LIKE_KW|MATCH */
161305
- 260, /* (376) exprlist ::= nexprlist */
161306
- 282, /* (377) nmnum ::= plus_num */
161307
- 282, /* (378) nmnum ::= nm */
161308
- 282, /* (379) nmnum ::= ON */
161309
- 282, /* (380) nmnum ::= DELETE */
161310
- 282, /* (381) nmnum ::= DEFAULT */
161311
- 209, /* (382) plus_num ::= INTEGER|FLOAT */
161312
- 287, /* (383) foreach_clause ::= */
161313
- 287, /* (384) foreach_clause ::= FOR EACH ROW */
161314
- 290, /* (385) trnm ::= nm */
161315
- 291, /* (386) tridxby ::= */
161316
- 292, /* (387) database_kw_opt ::= DATABASE */
161317
- 292, /* (388) database_kw_opt ::= */
161318
- 295, /* (389) kwcolumn_opt ::= */
161319
- 295, /* (390) kwcolumn_opt ::= COLUMNKW */
161320
- 297, /* (391) vtabarglist ::= vtabarg */
161321
- 297, /* (392) vtabarglist ::= vtabarglist COMMA vtabarg */
161322
- 298, /* (393) vtabarg ::= vtabarg vtabargtoken */
161323
- 301, /* (394) anylist ::= */
161324
- 301, /* (395) anylist ::= anylist LP anylist RP */
161325
- 301, /* (396) anylist ::= anylist ANY */
161326
- 264, /* (397) with ::= */
161247
+ 202, /* (21) table_option_set ::= */
161248
+ 202, /* (22) table_option_set ::= table_option_set COMMA table_option */
161249
+ 204, /* (23) table_option ::= WITHOUT nm */
161250
+ 204, /* (24) table_option ::= nm */
161251
+ 205, /* (25) columnname ::= nm typetoken */
161252
+ 207, /* (26) typetoken ::= */
161253
+ 207, /* (27) typetoken ::= typename LP signed RP */
161254
+ 207, /* (28) typetoken ::= typename LP signed COMMA signed RP */
161255
+ 208, /* (29) typename ::= typename ID|STRING */
161256
+ 212, /* (30) scanpt ::= */
161257
+ 213, /* (31) scantok ::= */
161258
+ 214, /* (32) ccons ::= CONSTRAINT nm */
161259
+ 214, /* (33) ccons ::= DEFAULT scantok term */
161260
+ 214, /* (34) ccons ::= DEFAULT LP expr RP */
161261
+ 214, /* (35) ccons ::= DEFAULT PLUS scantok term */
161262
+ 214, /* (36) ccons ::= DEFAULT MINUS scantok term */
161263
+ 214, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
161264
+ 214, /* (38) ccons ::= NOT NULL onconf */
161265
+ 214, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
161266
+ 214, /* (40) ccons ::= UNIQUE onconf */
161267
+ 214, /* (41) ccons ::= CHECK LP expr RP */
161268
+ 214, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
161269
+ 214, /* (43) ccons ::= defer_subclause */
161270
+ 214, /* (44) ccons ::= COLLATE ID|STRING */
161271
+ 223, /* (45) generated ::= LP expr RP */
161272
+ 223, /* (46) generated ::= LP expr RP ID */
161273
+ 219, /* (47) autoinc ::= */
161274
+ 219, /* (48) autoinc ::= AUTOINCR */
161275
+ 221, /* (49) refargs ::= */
161276
+ 221, /* (50) refargs ::= refargs refarg */
161277
+ 224, /* (51) refarg ::= MATCH nm */
161278
+ 224, /* (52) refarg ::= ON INSERT refact */
161279
+ 224, /* (53) refarg ::= ON DELETE refact */
161280
+ 224, /* (54) refarg ::= ON UPDATE refact */
161281
+ 225, /* (55) refact ::= SET NULL */
161282
+ 225, /* (56) refact ::= SET DEFAULT */
161283
+ 225, /* (57) refact ::= CASCADE */
161284
+ 225, /* (58) refact ::= RESTRICT */
161285
+ 225, /* (59) refact ::= NO ACTION */
161286
+ 222, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
161287
+ 222, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
161288
+ 226, /* (62) init_deferred_pred_opt ::= */
161289
+ 226, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
161290
+ 226, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
161291
+ 201, /* (65) conslist_opt ::= */
161292
+ 228, /* (66) tconscomma ::= COMMA */
161293
+ 229, /* (67) tcons ::= CONSTRAINT nm */
161294
+ 229, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
161295
+ 229, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
161296
+ 229, /* (70) tcons ::= CHECK LP expr RP onconf */
161297
+ 229, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
161298
+ 232, /* (72) defer_subclause_opt ::= */
161299
+ 217, /* (73) onconf ::= */
161300
+ 217, /* (74) onconf ::= ON CONFLICT resolvetype */
161301
+ 233, /* (75) orconf ::= */
161302
+ 233, /* (76) orconf ::= OR resolvetype */
161303
+ 234, /* (77) resolvetype ::= IGNORE */
161304
+ 234, /* (78) resolvetype ::= REPLACE */
161305
+ 189, /* (79) cmd ::= DROP TABLE ifexists fullname */
161306
+ 236, /* (80) ifexists ::= IF EXISTS */
161307
+ 236, /* (81) ifexists ::= */
161308
+ 189, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
161309
+ 189, /* (83) cmd ::= DROP VIEW ifexists fullname */
161310
+ 189, /* (84) cmd ::= select */
161311
+ 203, /* (85) select ::= WITH wqlist selectnowith */
161312
+ 203, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
161313
+ 203, /* (87) select ::= selectnowith */
161314
+ 238, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
161315
+ 241, /* (89) multiselect_op ::= UNION */
161316
+ 241, /* (90) multiselect_op ::= UNION ALL */
161317
+ 241, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
161318
+ 239, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
161319
+ 239, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
161320
+ 251, /* (94) values ::= VALUES LP nexprlist RP */
161321
+ 251, /* (95) values ::= values COMMA LP nexprlist RP */
161322
+ 242, /* (96) distinct ::= DISTINCT */
161323
+ 242, /* (97) distinct ::= ALL */
161324
+ 242, /* (98) distinct ::= */
161325
+ 253, /* (99) sclp ::= */
161326
+ 243, /* (100) selcollist ::= sclp scanpt expr scanpt as */
161327
+ 243, /* (101) selcollist ::= sclp scanpt STAR */
161328
+ 243, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
161329
+ 254, /* (103) as ::= AS nm */
161330
+ 254, /* (104) as ::= */
161331
+ 244, /* (105) from ::= */
161332
+ 244, /* (106) from ::= FROM seltablist */
161333
+ 256, /* (107) stl_prefix ::= seltablist joinop */
161334
+ 256, /* (108) stl_prefix ::= */
161335
+ 255, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
161336
+ 255, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
161337
+ 255, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
161338
+ 255, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
161339
+ 199, /* (113) dbnm ::= */
161340
+ 199, /* (114) dbnm ::= DOT nm */
161341
+ 237, /* (115) fullname ::= nm */
161342
+ 237, /* (116) fullname ::= nm DOT nm */
161343
+ 262, /* (117) xfullname ::= nm */
161344
+ 262, /* (118) xfullname ::= nm DOT nm */
161345
+ 262, /* (119) xfullname ::= nm DOT nm AS nm */
161346
+ 262, /* (120) xfullname ::= nm AS nm */
161347
+ 257, /* (121) joinop ::= COMMA|JOIN */
161348
+ 257, /* (122) joinop ::= JOIN_KW JOIN */
161349
+ 257, /* (123) joinop ::= JOIN_KW nm JOIN */
161350
+ 257, /* (124) joinop ::= JOIN_KW nm nm JOIN */
161351
+ 259, /* (125) on_opt ::= ON expr */
161352
+ 259, /* (126) on_opt ::= */
161353
+ 258, /* (127) indexed_opt ::= */
161354
+ 258, /* (128) indexed_opt ::= INDEXED BY nm */
161355
+ 258, /* (129) indexed_opt ::= NOT INDEXED */
161356
+ 260, /* (130) using_opt ::= USING LP idlist RP */
161357
+ 260, /* (131) using_opt ::= */
161358
+ 248, /* (132) orderby_opt ::= */
161359
+ 248, /* (133) orderby_opt ::= ORDER BY sortlist */
161360
+ 230, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
161361
+ 230, /* (135) sortlist ::= expr sortorder nulls */
161362
+ 218, /* (136) sortorder ::= ASC */
161363
+ 218, /* (137) sortorder ::= DESC */
161364
+ 218, /* (138) sortorder ::= */
161365
+ 264, /* (139) nulls ::= NULLS FIRST */
161366
+ 264, /* (140) nulls ::= NULLS LAST */
161367
+ 264, /* (141) nulls ::= */
161368
+ 246, /* (142) groupby_opt ::= */
161369
+ 246, /* (143) groupby_opt ::= GROUP BY nexprlist */
161370
+ 247, /* (144) having_opt ::= */
161371
+ 247, /* (145) having_opt ::= HAVING expr */
161372
+ 249, /* (146) limit_opt ::= */
161373
+ 249, /* (147) limit_opt ::= LIMIT expr */
161374
+ 249, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
161375
+ 249, /* (149) limit_opt ::= LIMIT expr COMMA expr */
161376
+ 189, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
161377
+ 245, /* (151) where_opt ::= */
161378
+ 245, /* (152) where_opt ::= WHERE expr */
161379
+ 266, /* (153) where_opt_ret ::= */
161380
+ 266, /* (154) where_opt_ret ::= WHERE expr */
161381
+ 266, /* (155) where_opt_ret ::= RETURNING selcollist */
161382
+ 266, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
161383
+ 189, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
161384
+ 267, /* (158) setlist ::= setlist COMMA nm EQ expr */
161385
+ 267, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
161386
+ 267, /* (160) setlist ::= nm EQ expr */
161387
+ 267, /* (161) setlist ::= LP idlist RP EQ expr */
161388
+ 189, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
161389
+ 189, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
161390
+ 270, /* (164) upsert ::= */
161391
+ 270, /* (165) upsert ::= RETURNING selcollist */
161392
+ 270, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
161393
+ 270, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
161394
+ 270, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
161395
+ 270, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
161396
+ 271, /* (170) returning ::= RETURNING selcollist */
161397
+ 268, /* (171) insert_cmd ::= INSERT orconf */
161398
+ 268, /* (172) insert_cmd ::= REPLACE */
161399
+ 269, /* (173) idlist_opt ::= */
161400
+ 269, /* (174) idlist_opt ::= LP idlist RP */
161401
+ 263, /* (175) idlist ::= idlist COMMA nm */
161402
+ 263, /* (176) idlist ::= nm */
161403
+ 216, /* (177) expr ::= LP expr RP */
161404
+ 216, /* (178) expr ::= ID|INDEXED */
161405
+ 216, /* (179) expr ::= JOIN_KW */
161406
+ 216, /* (180) expr ::= nm DOT nm */
161407
+ 216, /* (181) expr ::= nm DOT nm DOT nm */
161408
+ 215, /* (182) term ::= NULL|FLOAT|BLOB */
161409
+ 215, /* (183) term ::= STRING */
161410
+ 215, /* (184) term ::= INTEGER */
161411
+ 216, /* (185) expr ::= VARIABLE */
161412
+ 216, /* (186) expr ::= expr COLLATE ID|STRING */
161413
+ 216, /* (187) expr ::= CAST LP expr AS typetoken RP */
161414
+ 216, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
161415
+ 216, /* (189) expr ::= ID|INDEXED LP STAR RP */
161416
+ 216, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
161417
+ 216, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
161418
+ 215, /* (192) term ::= CTIME_KW */
161419
+ 216, /* (193) expr ::= LP nexprlist COMMA expr RP */
161420
+ 216, /* (194) expr ::= expr AND expr */
161421
+ 216, /* (195) expr ::= expr OR expr */
161422
+ 216, /* (196) expr ::= expr LT|GT|GE|LE expr */
161423
+ 216, /* (197) expr ::= expr EQ|NE expr */
161424
+ 216, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
161425
+ 216, /* (199) expr ::= expr PLUS|MINUS expr */
161426
+ 216, /* (200) expr ::= expr STAR|SLASH|REM expr */
161427
+ 216, /* (201) expr ::= expr CONCAT expr */
161428
+ 273, /* (202) likeop ::= NOT LIKE_KW|MATCH */
161429
+ 216, /* (203) expr ::= expr likeop expr */
161430
+ 216, /* (204) expr ::= expr likeop expr ESCAPE expr */
161431
+ 216, /* (205) expr ::= expr ISNULL|NOTNULL */
161432
+ 216, /* (206) expr ::= expr NOT NULL */
161433
+ 216, /* (207) expr ::= expr IS expr */
161434
+ 216, /* (208) expr ::= expr IS NOT expr */
161435
+ 216, /* (209) expr ::= NOT expr */
161436
+ 216, /* (210) expr ::= BITNOT expr */
161437
+ 216, /* (211) expr ::= PLUS|MINUS expr */
161438
+ 274, /* (212) between_op ::= BETWEEN */
161439
+ 274, /* (213) between_op ::= NOT BETWEEN */
161440
+ 216, /* (214) expr ::= expr between_op expr AND expr */
161441
+ 275, /* (215) in_op ::= IN */
161442
+ 275, /* (216) in_op ::= NOT IN */
161443
+ 216, /* (217) expr ::= expr in_op LP exprlist RP */
161444
+ 216, /* (218) expr ::= LP select RP */
161445
+ 216, /* (219) expr ::= expr in_op LP select RP */
161446
+ 216, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
161447
+ 216, /* (221) expr ::= EXISTS LP select RP */
161448
+ 216, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
161449
+ 278, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
161450
+ 278, /* (224) case_exprlist ::= WHEN expr THEN expr */
161451
+ 279, /* (225) case_else ::= ELSE expr */
161452
+ 279, /* (226) case_else ::= */
161453
+ 277, /* (227) case_operand ::= expr */
161454
+ 277, /* (228) case_operand ::= */
161455
+ 261, /* (229) exprlist ::= */
161456
+ 252, /* (230) nexprlist ::= nexprlist COMMA expr */
161457
+ 252, /* (231) nexprlist ::= expr */
161458
+ 276, /* (232) paren_exprlist ::= */
161459
+ 276, /* (233) paren_exprlist ::= LP exprlist RP */
161460
+ 189, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
161461
+ 280, /* (235) uniqueflag ::= UNIQUE */
161462
+ 280, /* (236) uniqueflag ::= */
161463
+ 220, /* (237) eidlist_opt ::= */
161464
+ 220, /* (238) eidlist_opt ::= LP eidlist RP */
161465
+ 231, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
161466
+ 231, /* (240) eidlist ::= nm collate sortorder */
161467
+ 281, /* (241) collate ::= */
161468
+ 281, /* (242) collate ::= COLLATE ID|STRING */
161469
+ 189, /* (243) cmd ::= DROP INDEX ifexists fullname */
161470
+ 189, /* (244) cmd ::= VACUUM vinto */
161471
+ 189, /* (245) cmd ::= VACUUM nm vinto */
161472
+ 282, /* (246) vinto ::= INTO expr */
161473
+ 282, /* (247) vinto ::= */
161474
+ 189, /* (248) cmd ::= PRAGMA nm dbnm */
161475
+ 189, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
161476
+ 189, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
161477
+ 189, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
161478
+ 189, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
161479
+ 210, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
161480
+ 211, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
161481
+ 189, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
161482
+ 284, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
161483
+ 286, /* (257) trigger_time ::= BEFORE|AFTER */
161484
+ 286, /* (258) trigger_time ::= INSTEAD OF */
161485
+ 286, /* (259) trigger_time ::= */
161486
+ 287, /* (260) trigger_event ::= DELETE|INSERT */
161487
+ 287, /* (261) trigger_event ::= UPDATE */
161488
+ 287, /* (262) trigger_event ::= UPDATE OF idlist */
161489
+ 289, /* (263) when_clause ::= */
161490
+ 289, /* (264) when_clause ::= WHEN expr */
161491
+ 285, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
161492
+ 285, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
161493
+ 291, /* (267) trnm ::= nm DOT nm */
161494
+ 292, /* (268) tridxby ::= INDEXED BY nm */
161495
+ 292, /* (269) tridxby ::= NOT INDEXED */
161496
+ 290, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
161497
+ 290, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
161498
+ 290, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
161499
+ 290, /* (273) trigger_cmd ::= scanpt select scanpt */
161500
+ 216, /* (274) expr ::= RAISE LP IGNORE RP */
161501
+ 216, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
161502
+ 235, /* (276) raisetype ::= ROLLBACK */
161503
+ 235, /* (277) raisetype ::= ABORT */
161504
+ 235, /* (278) raisetype ::= FAIL */
161505
+ 189, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
161506
+ 189, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
161507
+ 189, /* (281) cmd ::= DETACH database_kw_opt expr */
161508
+ 294, /* (282) key_opt ::= */
161509
+ 294, /* (283) key_opt ::= KEY expr */
161510
+ 189, /* (284) cmd ::= REINDEX */
161511
+ 189, /* (285) cmd ::= REINDEX nm dbnm */
161512
+ 189, /* (286) cmd ::= ANALYZE */
161513
+ 189, /* (287) cmd ::= ANALYZE nm dbnm */
161514
+ 189, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
161515
+ 189, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
161516
+ 189, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
161517
+ 295, /* (291) add_column_fullname ::= fullname */
161518
+ 189, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
161519
+ 189, /* (293) cmd ::= create_vtab */
161520
+ 189, /* (294) cmd ::= create_vtab LP vtabarglist RP */
161521
+ 297, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
161522
+ 299, /* (296) vtabarg ::= */
161523
+ 300, /* (297) vtabargtoken ::= ANY */
161524
+ 300, /* (298) vtabargtoken ::= lp anylist RP */
161525
+ 301, /* (299) lp ::= LP */
161526
+ 265, /* (300) with ::= WITH wqlist */
161527
+ 265, /* (301) with ::= WITH RECURSIVE wqlist */
161528
+ 304, /* (302) wqas ::= AS */
161529
+ 304, /* (303) wqas ::= AS MATERIALIZED */
161530
+ 304, /* (304) wqas ::= AS NOT MATERIALIZED */
161531
+ 303, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
161532
+ 240, /* (306) wqlist ::= wqitem */
161533
+ 240, /* (307) wqlist ::= wqlist COMMA wqitem */
161534
+ 305, /* (308) windowdefn_list ::= windowdefn */
161535
+ 305, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
161536
+ 306, /* (310) windowdefn ::= nm AS LP window RP */
161537
+ 307, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
161538
+ 307, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
161539
+ 307, /* (313) window ::= ORDER BY sortlist frame_opt */
161540
+ 307, /* (314) window ::= nm ORDER BY sortlist frame_opt */
161541
+ 307, /* (315) window ::= frame_opt */
161542
+ 307, /* (316) window ::= nm frame_opt */
161543
+ 308, /* (317) frame_opt ::= */
161544
+ 308, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161545
+ 308, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161546
+ 312, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
161547
+ 314, /* (321) frame_bound_s ::= frame_bound */
161548
+ 314, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
161549
+ 315, /* (323) frame_bound_e ::= frame_bound */
161550
+ 315, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
161551
+ 313, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
161552
+ 313, /* (326) frame_bound ::= CURRENT ROW */
161553
+ 316, /* (327) frame_exclude_opt ::= */
161554
+ 316, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
161555
+ 317, /* (329) frame_exclude ::= NO OTHERS */
161556
+ 317, /* (330) frame_exclude ::= CURRENT ROW */
161557
+ 317, /* (331) frame_exclude ::= GROUP|TIES */
161558
+ 250, /* (332) window_clause ::= WINDOW windowdefn_list */
161559
+ 272, /* (333) filter_over ::= filter_clause over_clause */
161560
+ 272, /* (334) filter_over ::= over_clause */
161561
+ 272, /* (335) filter_over ::= filter_clause */
161562
+ 311, /* (336) over_clause ::= OVER LP window RP */
161563
+ 311, /* (337) over_clause ::= OVER nm */
161564
+ 310, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
161565
+ 184, /* (339) input ::= cmdlist */
161566
+ 185, /* (340) cmdlist ::= cmdlist ecmd */
161567
+ 185, /* (341) cmdlist ::= ecmd */
161568
+ 186, /* (342) ecmd ::= SEMI */
161569
+ 186, /* (343) ecmd ::= cmdx SEMI */
161570
+ 186, /* (344) ecmd ::= explain cmdx SEMI */
161571
+ 191, /* (345) trans_opt ::= */
161572
+ 191, /* (346) trans_opt ::= TRANSACTION */
161573
+ 191, /* (347) trans_opt ::= TRANSACTION nm */
161574
+ 193, /* (348) savepoint_opt ::= SAVEPOINT */
161575
+ 193, /* (349) savepoint_opt ::= */
161576
+ 189, /* (350) cmd ::= create_table create_table_args */
161577
+ 202, /* (351) table_option_set ::= table_option */
161578
+ 200, /* (352) columnlist ::= columnlist COMMA columnname carglist */
161579
+ 200, /* (353) columnlist ::= columnname carglist */
161580
+ 192, /* (354) nm ::= ID|INDEXED */
161581
+ 192, /* (355) nm ::= STRING */
161582
+ 192, /* (356) nm ::= JOIN_KW */
161583
+ 207, /* (357) typetoken ::= typename */
161584
+ 208, /* (358) typename ::= ID|STRING */
161585
+ 209, /* (359) signed ::= plus_num */
161586
+ 209, /* (360) signed ::= minus_num */
161587
+ 206, /* (361) carglist ::= carglist ccons */
161588
+ 206, /* (362) carglist ::= */
161589
+ 214, /* (363) ccons ::= NULL onconf */
161590
+ 214, /* (364) ccons ::= GENERATED ALWAYS AS generated */
161591
+ 214, /* (365) ccons ::= AS generated */
161592
+ 201, /* (366) conslist_opt ::= COMMA conslist */
161593
+ 227, /* (367) conslist ::= conslist tconscomma tcons */
161594
+ 227, /* (368) conslist ::= tcons */
161595
+ 228, /* (369) tconscomma ::= */
161596
+ 232, /* (370) defer_subclause_opt ::= defer_subclause */
161597
+ 234, /* (371) resolvetype ::= raisetype */
161598
+ 238, /* (372) selectnowith ::= oneselect */
161599
+ 239, /* (373) oneselect ::= values */
161600
+ 253, /* (374) sclp ::= selcollist COMMA */
161601
+ 254, /* (375) as ::= ID|STRING */
161602
+ 271, /* (376) returning ::= */
161603
+ 216, /* (377) expr ::= term */
161604
+ 273, /* (378) likeop ::= LIKE_KW|MATCH */
161605
+ 261, /* (379) exprlist ::= nexprlist */
161606
+ 283, /* (380) nmnum ::= plus_num */
161607
+ 283, /* (381) nmnum ::= nm */
161608
+ 283, /* (382) nmnum ::= ON */
161609
+ 283, /* (383) nmnum ::= DELETE */
161610
+ 283, /* (384) nmnum ::= DEFAULT */
161611
+ 210, /* (385) plus_num ::= INTEGER|FLOAT */
161612
+ 288, /* (386) foreach_clause ::= */
161613
+ 288, /* (387) foreach_clause ::= FOR EACH ROW */
161614
+ 291, /* (388) trnm ::= nm */
161615
+ 292, /* (389) tridxby ::= */
161616
+ 293, /* (390) database_kw_opt ::= DATABASE */
161617
+ 293, /* (391) database_kw_opt ::= */
161618
+ 296, /* (392) kwcolumn_opt ::= */
161619
+ 296, /* (393) kwcolumn_opt ::= COLUMNKW */
161620
+ 298, /* (394) vtabarglist ::= vtabarg */
161621
+ 298, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
161622
+ 299, /* (396) vtabarg ::= vtabarg vtabargtoken */
161623
+ 302, /* (397) anylist ::= */
161624
+ 302, /* (398) anylist ::= anylist LP anylist RP */
161625
+ 302, /* (399) anylist ::= anylist ANY */
161626
+ 265, /* (400) with ::= */
161327161627
};
161328161628
161329161629
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
161330161630
** of symbols on the right-hand side of that rule. */
161331161631
static const signed char yyRuleInfoNRhs[] = {
@@ -161346,389 +161646,392 @@
161346161646
-1, /* (14) createkw ::= CREATE */
161347161647
0, /* (15) ifnotexists ::= */
161348161648
-3, /* (16) ifnotexists ::= IF NOT EXISTS */
161349161649
-1, /* (17) temp ::= TEMP */
161350161650
0, /* (18) temp ::= */
161351
- -5, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
161651
+ -5, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
161352161652
-2, /* (20) create_table_args ::= AS select */
161353
- 0, /* (21) table_options ::= */
161354
- -2, /* (22) table_options ::= WITHOUT nm */
161355
- -2, /* (23) columnname ::= nm typetoken */
161356
- 0, /* (24) typetoken ::= */
161357
- -4, /* (25) typetoken ::= typename LP signed RP */
161358
- -6, /* (26) typetoken ::= typename LP signed COMMA signed RP */
161359
- -2, /* (27) typename ::= typename ID|STRING */
161360
- 0, /* (28) scanpt ::= */
161361
- 0, /* (29) scantok ::= */
161362
- -2, /* (30) ccons ::= CONSTRAINT nm */
161363
- -3, /* (31) ccons ::= DEFAULT scantok term */
161364
- -4, /* (32) ccons ::= DEFAULT LP expr RP */
161365
- -4, /* (33) ccons ::= DEFAULT PLUS scantok term */
161366
- -4, /* (34) ccons ::= DEFAULT MINUS scantok term */
161367
- -3, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
161368
- -3, /* (36) ccons ::= NOT NULL onconf */
161369
- -5, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
161370
- -2, /* (38) ccons ::= UNIQUE onconf */
161371
- -4, /* (39) ccons ::= CHECK LP expr RP */
161372
- -4, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
161373
- -1, /* (41) ccons ::= defer_subclause */
161374
- -2, /* (42) ccons ::= COLLATE ID|STRING */
161375
- -3, /* (43) generated ::= LP expr RP */
161376
- -4, /* (44) generated ::= LP expr RP ID */
161377
- 0, /* (45) autoinc ::= */
161378
- -1, /* (46) autoinc ::= AUTOINCR */
161379
- 0, /* (47) refargs ::= */
161380
- -2, /* (48) refargs ::= refargs refarg */
161381
- -2, /* (49) refarg ::= MATCH nm */
161382
- -3, /* (50) refarg ::= ON INSERT refact */
161383
- -3, /* (51) refarg ::= ON DELETE refact */
161384
- -3, /* (52) refarg ::= ON UPDATE refact */
161385
- -2, /* (53) refact ::= SET NULL */
161386
- -2, /* (54) refact ::= SET DEFAULT */
161387
- -1, /* (55) refact ::= CASCADE */
161388
- -1, /* (56) refact ::= RESTRICT */
161389
- -2, /* (57) refact ::= NO ACTION */
161390
- -3, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
161391
- -2, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
161392
- 0, /* (60) init_deferred_pred_opt ::= */
161393
- -2, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
161394
- -2, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
161395
- 0, /* (63) conslist_opt ::= */
161396
- -1, /* (64) tconscomma ::= COMMA */
161397
- -2, /* (65) tcons ::= CONSTRAINT nm */
161398
- -7, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
161399
- -5, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
161400
- -5, /* (68) tcons ::= CHECK LP expr RP onconf */
161401
- -10, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
161402
- 0, /* (70) defer_subclause_opt ::= */
161403
- 0, /* (71) onconf ::= */
161404
- -3, /* (72) onconf ::= ON CONFLICT resolvetype */
161405
- 0, /* (73) orconf ::= */
161406
- -2, /* (74) orconf ::= OR resolvetype */
161407
- -1, /* (75) resolvetype ::= IGNORE */
161408
- -1, /* (76) resolvetype ::= REPLACE */
161409
- -4, /* (77) cmd ::= DROP TABLE ifexists fullname */
161410
- -2, /* (78) ifexists ::= IF EXISTS */
161411
- 0, /* (79) ifexists ::= */
161412
- -9, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
161413
- -4, /* (81) cmd ::= DROP VIEW ifexists fullname */
161414
- -1, /* (82) cmd ::= select */
161415
- -3, /* (83) select ::= WITH wqlist selectnowith */
161416
- -4, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
161417
- -1, /* (85) select ::= selectnowith */
161418
- -3, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
161419
- -1, /* (87) multiselect_op ::= UNION */
161420
- -2, /* (88) multiselect_op ::= UNION ALL */
161421
- -1, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
161422
- -9, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
161423
- -10, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
161424
- -4, /* (92) values ::= VALUES LP nexprlist RP */
161425
- -5, /* (93) values ::= values COMMA LP nexprlist RP */
161426
- -1, /* (94) distinct ::= DISTINCT */
161427
- -1, /* (95) distinct ::= ALL */
161428
- 0, /* (96) distinct ::= */
161429
- 0, /* (97) sclp ::= */
161430
- -5, /* (98) selcollist ::= sclp scanpt expr scanpt as */
161431
- -3, /* (99) selcollist ::= sclp scanpt STAR */
161432
- -5, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
161433
- -2, /* (101) as ::= AS nm */
161434
- 0, /* (102) as ::= */
161435
- 0, /* (103) from ::= */
161436
- -2, /* (104) from ::= FROM seltablist */
161437
- -2, /* (105) stl_prefix ::= seltablist joinop */
161438
- 0, /* (106) stl_prefix ::= */
161439
- -7, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
161440
- -9, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
161441
- -7, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
161442
- -7, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
161443
- 0, /* (111) dbnm ::= */
161444
- -2, /* (112) dbnm ::= DOT nm */
161445
- -1, /* (113) fullname ::= nm */
161446
- -3, /* (114) fullname ::= nm DOT nm */
161447
- -1, /* (115) xfullname ::= nm */
161448
- -3, /* (116) xfullname ::= nm DOT nm */
161449
- -5, /* (117) xfullname ::= nm DOT nm AS nm */
161450
- -3, /* (118) xfullname ::= nm AS nm */
161451
- -1, /* (119) joinop ::= COMMA|JOIN */
161452
- -2, /* (120) joinop ::= JOIN_KW JOIN */
161453
- -3, /* (121) joinop ::= JOIN_KW nm JOIN */
161454
- -4, /* (122) joinop ::= JOIN_KW nm nm JOIN */
161455
- -2, /* (123) on_opt ::= ON expr */
161456
- 0, /* (124) on_opt ::= */
161457
- 0, /* (125) indexed_opt ::= */
161458
- -3, /* (126) indexed_opt ::= INDEXED BY nm */
161459
- -2, /* (127) indexed_opt ::= NOT INDEXED */
161460
- -4, /* (128) using_opt ::= USING LP idlist RP */
161461
- 0, /* (129) using_opt ::= */
161462
- 0, /* (130) orderby_opt ::= */
161463
- -3, /* (131) orderby_opt ::= ORDER BY sortlist */
161464
- -5, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
161465
- -3, /* (133) sortlist ::= expr sortorder nulls */
161466
- -1, /* (134) sortorder ::= ASC */
161467
- -1, /* (135) sortorder ::= DESC */
161468
- 0, /* (136) sortorder ::= */
161469
- -2, /* (137) nulls ::= NULLS FIRST */
161470
- -2, /* (138) nulls ::= NULLS LAST */
161471
- 0, /* (139) nulls ::= */
161472
- 0, /* (140) groupby_opt ::= */
161473
- -3, /* (141) groupby_opt ::= GROUP BY nexprlist */
161474
- 0, /* (142) having_opt ::= */
161475
- -2, /* (143) having_opt ::= HAVING expr */
161476
- 0, /* (144) limit_opt ::= */
161477
- -2, /* (145) limit_opt ::= LIMIT expr */
161478
- -4, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
161479
- -4, /* (147) limit_opt ::= LIMIT expr COMMA expr */
161480
- -6, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
161481
- 0, /* (149) where_opt ::= */
161482
- -2, /* (150) where_opt ::= WHERE expr */
161483
- 0, /* (151) where_opt_ret ::= */
161484
- -2, /* (152) where_opt_ret ::= WHERE expr */
161485
- -2, /* (153) where_opt_ret ::= RETURNING selcollist */
161486
- -4, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
161487
- -9, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
161488
- -5, /* (156) setlist ::= setlist COMMA nm EQ expr */
161489
- -7, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
161490
- -3, /* (158) setlist ::= nm EQ expr */
161491
- -5, /* (159) setlist ::= LP idlist RP EQ expr */
161492
- -7, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
161493
- -8, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
161494
- 0, /* (162) upsert ::= */
161495
- -2, /* (163) upsert ::= RETURNING selcollist */
161496
- -12, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
161497
- -9, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
161498
- -5, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
161499
- -8, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
161500
- -2, /* (168) returning ::= RETURNING selcollist */
161501
- -2, /* (169) insert_cmd ::= INSERT orconf */
161502
- -1, /* (170) insert_cmd ::= REPLACE */
161503
- 0, /* (171) idlist_opt ::= */
161504
- -3, /* (172) idlist_opt ::= LP idlist RP */
161505
- -3, /* (173) idlist ::= idlist COMMA nm */
161506
- -1, /* (174) idlist ::= nm */
161507
- -3, /* (175) expr ::= LP expr RP */
161508
- -1, /* (176) expr ::= ID|INDEXED */
161509
- -1, /* (177) expr ::= JOIN_KW */
161510
- -3, /* (178) expr ::= nm DOT nm */
161511
- -5, /* (179) expr ::= nm DOT nm DOT nm */
161512
- -1, /* (180) term ::= NULL|FLOAT|BLOB */
161513
- -1, /* (181) term ::= STRING */
161514
- -1, /* (182) term ::= INTEGER */
161515
- -1, /* (183) expr ::= VARIABLE */
161516
- -3, /* (184) expr ::= expr COLLATE ID|STRING */
161517
- -6, /* (185) expr ::= CAST LP expr AS typetoken RP */
161518
- -5, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
161519
- -4, /* (187) expr ::= ID|INDEXED LP STAR RP */
161520
- -6, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
161521
- -5, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
161522
- -1, /* (190) term ::= CTIME_KW */
161523
- -5, /* (191) expr ::= LP nexprlist COMMA expr RP */
161524
- -3, /* (192) expr ::= expr AND expr */
161525
- -3, /* (193) expr ::= expr OR expr */
161526
- -3, /* (194) expr ::= expr LT|GT|GE|LE expr */
161527
- -3, /* (195) expr ::= expr EQ|NE expr */
161528
- -3, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
161529
- -3, /* (197) expr ::= expr PLUS|MINUS expr */
161530
- -3, /* (198) expr ::= expr STAR|SLASH|REM expr */
161531
- -3, /* (199) expr ::= expr CONCAT expr */
161532
- -2, /* (200) likeop ::= NOT LIKE_KW|MATCH */
161533
- -3, /* (201) expr ::= expr likeop expr */
161534
- -5, /* (202) expr ::= expr likeop expr ESCAPE expr */
161535
- -2, /* (203) expr ::= expr ISNULL|NOTNULL */
161536
- -3, /* (204) expr ::= expr NOT NULL */
161537
- -3, /* (205) expr ::= expr IS expr */
161538
- -4, /* (206) expr ::= expr IS NOT expr */
161539
- -2, /* (207) expr ::= NOT expr */
161540
- -2, /* (208) expr ::= BITNOT expr */
161541
- -2, /* (209) expr ::= PLUS|MINUS expr */
161542
- -1, /* (210) between_op ::= BETWEEN */
161543
- -2, /* (211) between_op ::= NOT BETWEEN */
161544
- -5, /* (212) expr ::= expr between_op expr AND expr */
161545
- -1, /* (213) in_op ::= IN */
161546
- -2, /* (214) in_op ::= NOT IN */
161547
- -5, /* (215) expr ::= expr in_op LP exprlist RP */
161548
- -3, /* (216) expr ::= LP select RP */
161549
- -5, /* (217) expr ::= expr in_op LP select RP */
161550
- -5, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
161551
- -4, /* (219) expr ::= EXISTS LP select RP */
161552
- -5, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
161553
- -5, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
161554
- -4, /* (222) case_exprlist ::= WHEN expr THEN expr */
161555
- -2, /* (223) case_else ::= ELSE expr */
161556
- 0, /* (224) case_else ::= */
161557
- -1, /* (225) case_operand ::= expr */
161558
- 0, /* (226) case_operand ::= */
161559
- 0, /* (227) exprlist ::= */
161560
- -3, /* (228) nexprlist ::= nexprlist COMMA expr */
161561
- -1, /* (229) nexprlist ::= expr */
161562
- 0, /* (230) paren_exprlist ::= */
161563
- -3, /* (231) paren_exprlist ::= LP exprlist RP */
161564
- -12, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
161565
- -1, /* (233) uniqueflag ::= UNIQUE */
161566
- 0, /* (234) uniqueflag ::= */
161567
- 0, /* (235) eidlist_opt ::= */
161568
- -3, /* (236) eidlist_opt ::= LP eidlist RP */
161569
- -5, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
161570
- -3, /* (238) eidlist ::= nm collate sortorder */
161571
- 0, /* (239) collate ::= */
161572
- -2, /* (240) collate ::= COLLATE ID|STRING */
161573
- -4, /* (241) cmd ::= DROP INDEX ifexists fullname */
161574
- -2, /* (242) cmd ::= VACUUM vinto */
161575
- -3, /* (243) cmd ::= VACUUM nm vinto */
161576
- -2, /* (244) vinto ::= INTO expr */
161577
- 0, /* (245) vinto ::= */
161578
- -3, /* (246) cmd ::= PRAGMA nm dbnm */
161579
- -5, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
161580
- -6, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
161581
- -5, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
161582
- -6, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
161583
- -2, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
161584
- -2, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
161585
- -5, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
161586
- -11, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
161587
- -1, /* (255) trigger_time ::= BEFORE|AFTER */
161588
- -2, /* (256) trigger_time ::= INSTEAD OF */
161589
- 0, /* (257) trigger_time ::= */
161590
- -1, /* (258) trigger_event ::= DELETE|INSERT */
161591
- -1, /* (259) trigger_event ::= UPDATE */
161592
- -3, /* (260) trigger_event ::= UPDATE OF idlist */
161593
- 0, /* (261) when_clause ::= */
161594
- -2, /* (262) when_clause ::= WHEN expr */
161595
- -3, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
161596
- -2, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
161597
- -3, /* (265) trnm ::= nm DOT nm */
161598
- -3, /* (266) tridxby ::= INDEXED BY nm */
161599
- -2, /* (267) tridxby ::= NOT INDEXED */
161600
- -9, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
161601
- -8, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
161602
- -6, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
161603
- -3, /* (271) trigger_cmd ::= scanpt select scanpt */
161604
- -4, /* (272) expr ::= RAISE LP IGNORE RP */
161605
- -6, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
161606
- -1, /* (274) raisetype ::= ROLLBACK */
161607
- -1, /* (275) raisetype ::= ABORT */
161608
- -1, /* (276) raisetype ::= FAIL */
161609
- -4, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
161610
- -6, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
161611
- -3, /* (279) cmd ::= DETACH database_kw_opt expr */
161612
- 0, /* (280) key_opt ::= */
161613
- -2, /* (281) key_opt ::= KEY expr */
161614
- -1, /* (282) cmd ::= REINDEX */
161615
- -3, /* (283) cmd ::= REINDEX nm dbnm */
161616
- -1, /* (284) cmd ::= ANALYZE */
161617
- -3, /* (285) cmd ::= ANALYZE nm dbnm */
161618
- -6, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
161619
- -7, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
161620
- -6, /* (288) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
161621
- -1, /* (289) add_column_fullname ::= fullname */
161622
- -8, /* (290) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
161623
- -1, /* (291) cmd ::= create_vtab */
161624
- -4, /* (292) cmd ::= create_vtab LP vtabarglist RP */
161625
- -8, /* (293) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
161626
- 0, /* (294) vtabarg ::= */
161627
- -1, /* (295) vtabargtoken ::= ANY */
161628
- -3, /* (296) vtabargtoken ::= lp anylist RP */
161629
- -1, /* (297) lp ::= LP */
161630
- -2, /* (298) with ::= WITH wqlist */
161631
- -3, /* (299) with ::= WITH RECURSIVE wqlist */
161632
- -1, /* (300) wqas ::= AS */
161633
- -2, /* (301) wqas ::= AS MATERIALIZED */
161634
- -3, /* (302) wqas ::= AS NOT MATERIALIZED */
161635
- -6, /* (303) wqitem ::= nm eidlist_opt wqas LP select RP */
161636
- -1, /* (304) wqlist ::= wqitem */
161637
- -3, /* (305) wqlist ::= wqlist COMMA wqitem */
161638
- -1, /* (306) windowdefn_list ::= windowdefn */
161639
- -3, /* (307) windowdefn_list ::= windowdefn_list COMMA windowdefn */
161640
- -5, /* (308) windowdefn ::= nm AS LP window RP */
161641
- -5, /* (309) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
161642
- -6, /* (310) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
161643
- -4, /* (311) window ::= ORDER BY sortlist frame_opt */
161644
- -5, /* (312) window ::= nm ORDER BY sortlist frame_opt */
161645
- -1, /* (313) window ::= frame_opt */
161646
- -2, /* (314) window ::= nm frame_opt */
161647
- 0, /* (315) frame_opt ::= */
161648
- -3, /* (316) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161649
- -6, /* (317) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161650
- -1, /* (318) range_or_rows ::= RANGE|ROWS|GROUPS */
161651
- -1, /* (319) frame_bound_s ::= frame_bound */
161652
- -2, /* (320) frame_bound_s ::= UNBOUNDED PRECEDING */
161653
- -1, /* (321) frame_bound_e ::= frame_bound */
161654
- -2, /* (322) frame_bound_e ::= UNBOUNDED FOLLOWING */
161655
- -2, /* (323) frame_bound ::= expr PRECEDING|FOLLOWING */
161656
- -2, /* (324) frame_bound ::= CURRENT ROW */
161657
- 0, /* (325) frame_exclude_opt ::= */
161658
- -2, /* (326) frame_exclude_opt ::= EXCLUDE frame_exclude */
161659
- -2, /* (327) frame_exclude ::= NO OTHERS */
161660
- -2, /* (328) frame_exclude ::= CURRENT ROW */
161661
- -1, /* (329) frame_exclude ::= GROUP|TIES */
161662
- -2, /* (330) window_clause ::= WINDOW windowdefn_list */
161663
- -2, /* (331) filter_over ::= filter_clause over_clause */
161664
- -1, /* (332) filter_over ::= over_clause */
161665
- -1, /* (333) filter_over ::= filter_clause */
161666
- -4, /* (334) over_clause ::= OVER LP window RP */
161667
- -2, /* (335) over_clause ::= OVER nm */
161668
- -5, /* (336) filter_clause ::= FILTER LP WHERE expr RP */
161669
- -1, /* (337) input ::= cmdlist */
161670
- -2, /* (338) cmdlist ::= cmdlist ecmd */
161671
- -1, /* (339) cmdlist ::= ecmd */
161672
- -1, /* (340) ecmd ::= SEMI */
161673
- -2, /* (341) ecmd ::= cmdx SEMI */
161674
- -3, /* (342) ecmd ::= explain cmdx SEMI */
161675
- 0, /* (343) trans_opt ::= */
161676
- -1, /* (344) trans_opt ::= TRANSACTION */
161677
- -2, /* (345) trans_opt ::= TRANSACTION nm */
161678
- -1, /* (346) savepoint_opt ::= SAVEPOINT */
161679
- 0, /* (347) savepoint_opt ::= */
161680
- -2, /* (348) cmd ::= create_table create_table_args */
161681
- -4, /* (349) columnlist ::= columnlist COMMA columnname carglist */
161682
- -2, /* (350) columnlist ::= columnname carglist */
161683
- -1, /* (351) nm ::= ID|INDEXED */
161684
- -1, /* (352) nm ::= STRING */
161685
- -1, /* (353) nm ::= JOIN_KW */
161686
- -1, /* (354) typetoken ::= typename */
161687
- -1, /* (355) typename ::= ID|STRING */
161688
- -1, /* (356) signed ::= plus_num */
161689
- -1, /* (357) signed ::= minus_num */
161690
- -2, /* (358) carglist ::= carglist ccons */
161691
- 0, /* (359) carglist ::= */
161692
- -2, /* (360) ccons ::= NULL onconf */
161693
- -4, /* (361) ccons ::= GENERATED ALWAYS AS generated */
161694
- -2, /* (362) ccons ::= AS generated */
161695
- -2, /* (363) conslist_opt ::= COMMA conslist */
161696
- -3, /* (364) conslist ::= conslist tconscomma tcons */
161697
- -1, /* (365) conslist ::= tcons */
161698
- 0, /* (366) tconscomma ::= */
161699
- -1, /* (367) defer_subclause_opt ::= defer_subclause */
161700
- -1, /* (368) resolvetype ::= raisetype */
161701
- -1, /* (369) selectnowith ::= oneselect */
161702
- -1, /* (370) oneselect ::= values */
161703
- -2, /* (371) sclp ::= selcollist COMMA */
161704
- -1, /* (372) as ::= ID|STRING */
161705
- 0, /* (373) returning ::= */
161706
- -1, /* (374) expr ::= term */
161707
- -1, /* (375) likeop ::= LIKE_KW|MATCH */
161708
- -1, /* (376) exprlist ::= nexprlist */
161709
- -1, /* (377) nmnum ::= plus_num */
161710
- -1, /* (378) nmnum ::= nm */
161711
- -1, /* (379) nmnum ::= ON */
161712
- -1, /* (380) nmnum ::= DELETE */
161713
- -1, /* (381) nmnum ::= DEFAULT */
161714
- -1, /* (382) plus_num ::= INTEGER|FLOAT */
161715
- 0, /* (383) foreach_clause ::= */
161716
- -3, /* (384) foreach_clause ::= FOR EACH ROW */
161717
- -1, /* (385) trnm ::= nm */
161718
- 0, /* (386) tridxby ::= */
161719
- -1, /* (387) database_kw_opt ::= DATABASE */
161720
- 0, /* (388) database_kw_opt ::= */
161721
- 0, /* (389) kwcolumn_opt ::= */
161722
- -1, /* (390) kwcolumn_opt ::= COLUMNKW */
161723
- -1, /* (391) vtabarglist ::= vtabarg */
161724
- -3, /* (392) vtabarglist ::= vtabarglist COMMA vtabarg */
161725
- -2, /* (393) vtabarg ::= vtabarg vtabargtoken */
161726
- 0, /* (394) anylist ::= */
161727
- -4, /* (395) anylist ::= anylist LP anylist RP */
161728
- -2, /* (396) anylist ::= anylist ANY */
161729
- 0, /* (397) with ::= */
161653
+ 0, /* (21) table_option_set ::= */
161654
+ -3, /* (22) table_option_set ::= table_option_set COMMA table_option */
161655
+ -2, /* (23) table_option ::= WITHOUT nm */
161656
+ -1, /* (24) table_option ::= nm */
161657
+ -2, /* (25) columnname ::= nm typetoken */
161658
+ 0, /* (26) typetoken ::= */
161659
+ -4, /* (27) typetoken ::= typename LP signed RP */
161660
+ -6, /* (28) typetoken ::= typename LP signed COMMA signed RP */
161661
+ -2, /* (29) typename ::= typename ID|STRING */
161662
+ 0, /* (30) scanpt ::= */
161663
+ 0, /* (31) scantok ::= */
161664
+ -2, /* (32) ccons ::= CONSTRAINT nm */
161665
+ -3, /* (33) ccons ::= DEFAULT scantok term */
161666
+ -4, /* (34) ccons ::= DEFAULT LP expr RP */
161667
+ -4, /* (35) ccons ::= DEFAULT PLUS scantok term */
161668
+ -4, /* (36) ccons ::= DEFAULT MINUS scantok term */
161669
+ -3, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
161670
+ -3, /* (38) ccons ::= NOT NULL onconf */
161671
+ -5, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
161672
+ -2, /* (40) ccons ::= UNIQUE onconf */
161673
+ -4, /* (41) ccons ::= CHECK LP expr RP */
161674
+ -4, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
161675
+ -1, /* (43) ccons ::= defer_subclause */
161676
+ -2, /* (44) ccons ::= COLLATE ID|STRING */
161677
+ -3, /* (45) generated ::= LP expr RP */
161678
+ -4, /* (46) generated ::= LP expr RP ID */
161679
+ 0, /* (47) autoinc ::= */
161680
+ -1, /* (48) autoinc ::= AUTOINCR */
161681
+ 0, /* (49) refargs ::= */
161682
+ -2, /* (50) refargs ::= refargs refarg */
161683
+ -2, /* (51) refarg ::= MATCH nm */
161684
+ -3, /* (52) refarg ::= ON INSERT refact */
161685
+ -3, /* (53) refarg ::= ON DELETE refact */
161686
+ -3, /* (54) refarg ::= ON UPDATE refact */
161687
+ -2, /* (55) refact ::= SET NULL */
161688
+ -2, /* (56) refact ::= SET DEFAULT */
161689
+ -1, /* (57) refact ::= CASCADE */
161690
+ -1, /* (58) refact ::= RESTRICT */
161691
+ -2, /* (59) refact ::= NO ACTION */
161692
+ -3, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
161693
+ -2, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
161694
+ 0, /* (62) init_deferred_pred_opt ::= */
161695
+ -2, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
161696
+ -2, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
161697
+ 0, /* (65) conslist_opt ::= */
161698
+ -1, /* (66) tconscomma ::= COMMA */
161699
+ -2, /* (67) tcons ::= CONSTRAINT nm */
161700
+ -7, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
161701
+ -5, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
161702
+ -5, /* (70) tcons ::= CHECK LP expr RP onconf */
161703
+ -10, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
161704
+ 0, /* (72) defer_subclause_opt ::= */
161705
+ 0, /* (73) onconf ::= */
161706
+ -3, /* (74) onconf ::= ON CONFLICT resolvetype */
161707
+ 0, /* (75) orconf ::= */
161708
+ -2, /* (76) orconf ::= OR resolvetype */
161709
+ -1, /* (77) resolvetype ::= IGNORE */
161710
+ -1, /* (78) resolvetype ::= REPLACE */
161711
+ -4, /* (79) cmd ::= DROP TABLE ifexists fullname */
161712
+ -2, /* (80) ifexists ::= IF EXISTS */
161713
+ 0, /* (81) ifexists ::= */
161714
+ -9, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
161715
+ -4, /* (83) cmd ::= DROP VIEW ifexists fullname */
161716
+ -1, /* (84) cmd ::= select */
161717
+ -3, /* (85) select ::= WITH wqlist selectnowith */
161718
+ -4, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
161719
+ -1, /* (87) select ::= selectnowith */
161720
+ -3, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
161721
+ -1, /* (89) multiselect_op ::= UNION */
161722
+ -2, /* (90) multiselect_op ::= UNION ALL */
161723
+ -1, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
161724
+ -9, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
161725
+ -10, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
161726
+ -4, /* (94) values ::= VALUES LP nexprlist RP */
161727
+ -5, /* (95) values ::= values COMMA LP nexprlist RP */
161728
+ -1, /* (96) distinct ::= DISTINCT */
161729
+ -1, /* (97) distinct ::= ALL */
161730
+ 0, /* (98) distinct ::= */
161731
+ 0, /* (99) sclp ::= */
161732
+ -5, /* (100) selcollist ::= sclp scanpt expr scanpt as */
161733
+ -3, /* (101) selcollist ::= sclp scanpt STAR */
161734
+ -5, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
161735
+ -2, /* (103) as ::= AS nm */
161736
+ 0, /* (104) as ::= */
161737
+ 0, /* (105) from ::= */
161738
+ -2, /* (106) from ::= FROM seltablist */
161739
+ -2, /* (107) stl_prefix ::= seltablist joinop */
161740
+ 0, /* (108) stl_prefix ::= */
161741
+ -7, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
161742
+ -9, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
161743
+ -7, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
161744
+ -7, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
161745
+ 0, /* (113) dbnm ::= */
161746
+ -2, /* (114) dbnm ::= DOT nm */
161747
+ -1, /* (115) fullname ::= nm */
161748
+ -3, /* (116) fullname ::= nm DOT nm */
161749
+ -1, /* (117) xfullname ::= nm */
161750
+ -3, /* (118) xfullname ::= nm DOT nm */
161751
+ -5, /* (119) xfullname ::= nm DOT nm AS nm */
161752
+ -3, /* (120) xfullname ::= nm AS nm */
161753
+ -1, /* (121) joinop ::= COMMA|JOIN */
161754
+ -2, /* (122) joinop ::= JOIN_KW JOIN */
161755
+ -3, /* (123) joinop ::= JOIN_KW nm JOIN */
161756
+ -4, /* (124) joinop ::= JOIN_KW nm nm JOIN */
161757
+ -2, /* (125) on_opt ::= ON expr */
161758
+ 0, /* (126) on_opt ::= */
161759
+ 0, /* (127) indexed_opt ::= */
161760
+ -3, /* (128) indexed_opt ::= INDEXED BY nm */
161761
+ -2, /* (129) indexed_opt ::= NOT INDEXED */
161762
+ -4, /* (130) using_opt ::= USING LP idlist RP */
161763
+ 0, /* (131) using_opt ::= */
161764
+ 0, /* (132) orderby_opt ::= */
161765
+ -3, /* (133) orderby_opt ::= ORDER BY sortlist */
161766
+ -5, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
161767
+ -3, /* (135) sortlist ::= expr sortorder nulls */
161768
+ -1, /* (136) sortorder ::= ASC */
161769
+ -1, /* (137) sortorder ::= DESC */
161770
+ 0, /* (138) sortorder ::= */
161771
+ -2, /* (139) nulls ::= NULLS FIRST */
161772
+ -2, /* (140) nulls ::= NULLS LAST */
161773
+ 0, /* (141) nulls ::= */
161774
+ 0, /* (142) groupby_opt ::= */
161775
+ -3, /* (143) groupby_opt ::= GROUP BY nexprlist */
161776
+ 0, /* (144) having_opt ::= */
161777
+ -2, /* (145) having_opt ::= HAVING expr */
161778
+ 0, /* (146) limit_opt ::= */
161779
+ -2, /* (147) limit_opt ::= LIMIT expr */
161780
+ -4, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
161781
+ -4, /* (149) limit_opt ::= LIMIT expr COMMA expr */
161782
+ -6, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
161783
+ 0, /* (151) where_opt ::= */
161784
+ -2, /* (152) where_opt ::= WHERE expr */
161785
+ 0, /* (153) where_opt_ret ::= */
161786
+ -2, /* (154) where_opt_ret ::= WHERE expr */
161787
+ -2, /* (155) where_opt_ret ::= RETURNING selcollist */
161788
+ -4, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
161789
+ -9, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
161790
+ -5, /* (158) setlist ::= setlist COMMA nm EQ expr */
161791
+ -7, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
161792
+ -3, /* (160) setlist ::= nm EQ expr */
161793
+ -5, /* (161) setlist ::= LP idlist RP EQ expr */
161794
+ -7, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
161795
+ -8, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
161796
+ 0, /* (164) upsert ::= */
161797
+ -2, /* (165) upsert ::= RETURNING selcollist */
161798
+ -12, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
161799
+ -9, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
161800
+ -5, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
161801
+ -8, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
161802
+ -2, /* (170) returning ::= RETURNING selcollist */
161803
+ -2, /* (171) insert_cmd ::= INSERT orconf */
161804
+ -1, /* (172) insert_cmd ::= REPLACE */
161805
+ 0, /* (173) idlist_opt ::= */
161806
+ -3, /* (174) idlist_opt ::= LP idlist RP */
161807
+ -3, /* (175) idlist ::= idlist COMMA nm */
161808
+ -1, /* (176) idlist ::= nm */
161809
+ -3, /* (177) expr ::= LP expr RP */
161810
+ -1, /* (178) expr ::= ID|INDEXED */
161811
+ -1, /* (179) expr ::= JOIN_KW */
161812
+ -3, /* (180) expr ::= nm DOT nm */
161813
+ -5, /* (181) expr ::= nm DOT nm DOT nm */
161814
+ -1, /* (182) term ::= NULL|FLOAT|BLOB */
161815
+ -1, /* (183) term ::= STRING */
161816
+ -1, /* (184) term ::= INTEGER */
161817
+ -1, /* (185) expr ::= VARIABLE */
161818
+ -3, /* (186) expr ::= expr COLLATE ID|STRING */
161819
+ -6, /* (187) expr ::= CAST LP expr AS typetoken RP */
161820
+ -5, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
161821
+ -4, /* (189) expr ::= ID|INDEXED LP STAR RP */
161822
+ -6, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
161823
+ -5, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
161824
+ -1, /* (192) term ::= CTIME_KW */
161825
+ -5, /* (193) expr ::= LP nexprlist COMMA expr RP */
161826
+ -3, /* (194) expr ::= expr AND expr */
161827
+ -3, /* (195) expr ::= expr OR expr */
161828
+ -3, /* (196) expr ::= expr LT|GT|GE|LE expr */
161829
+ -3, /* (197) expr ::= expr EQ|NE expr */
161830
+ -3, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
161831
+ -3, /* (199) expr ::= expr PLUS|MINUS expr */
161832
+ -3, /* (200) expr ::= expr STAR|SLASH|REM expr */
161833
+ -3, /* (201) expr ::= expr CONCAT expr */
161834
+ -2, /* (202) likeop ::= NOT LIKE_KW|MATCH */
161835
+ -3, /* (203) expr ::= expr likeop expr */
161836
+ -5, /* (204) expr ::= expr likeop expr ESCAPE expr */
161837
+ -2, /* (205) expr ::= expr ISNULL|NOTNULL */
161838
+ -3, /* (206) expr ::= expr NOT NULL */
161839
+ -3, /* (207) expr ::= expr IS expr */
161840
+ -4, /* (208) expr ::= expr IS NOT expr */
161841
+ -2, /* (209) expr ::= NOT expr */
161842
+ -2, /* (210) expr ::= BITNOT expr */
161843
+ -2, /* (211) expr ::= PLUS|MINUS expr */
161844
+ -1, /* (212) between_op ::= BETWEEN */
161845
+ -2, /* (213) between_op ::= NOT BETWEEN */
161846
+ -5, /* (214) expr ::= expr between_op expr AND expr */
161847
+ -1, /* (215) in_op ::= IN */
161848
+ -2, /* (216) in_op ::= NOT IN */
161849
+ -5, /* (217) expr ::= expr in_op LP exprlist RP */
161850
+ -3, /* (218) expr ::= LP select RP */
161851
+ -5, /* (219) expr ::= expr in_op LP select RP */
161852
+ -5, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
161853
+ -4, /* (221) expr ::= EXISTS LP select RP */
161854
+ -5, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
161855
+ -5, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
161856
+ -4, /* (224) case_exprlist ::= WHEN expr THEN expr */
161857
+ -2, /* (225) case_else ::= ELSE expr */
161858
+ 0, /* (226) case_else ::= */
161859
+ -1, /* (227) case_operand ::= expr */
161860
+ 0, /* (228) case_operand ::= */
161861
+ 0, /* (229) exprlist ::= */
161862
+ -3, /* (230) nexprlist ::= nexprlist COMMA expr */
161863
+ -1, /* (231) nexprlist ::= expr */
161864
+ 0, /* (232) paren_exprlist ::= */
161865
+ -3, /* (233) paren_exprlist ::= LP exprlist RP */
161866
+ -12, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
161867
+ -1, /* (235) uniqueflag ::= UNIQUE */
161868
+ 0, /* (236) uniqueflag ::= */
161869
+ 0, /* (237) eidlist_opt ::= */
161870
+ -3, /* (238) eidlist_opt ::= LP eidlist RP */
161871
+ -5, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
161872
+ -3, /* (240) eidlist ::= nm collate sortorder */
161873
+ 0, /* (241) collate ::= */
161874
+ -2, /* (242) collate ::= COLLATE ID|STRING */
161875
+ -4, /* (243) cmd ::= DROP INDEX ifexists fullname */
161876
+ -2, /* (244) cmd ::= VACUUM vinto */
161877
+ -3, /* (245) cmd ::= VACUUM nm vinto */
161878
+ -2, /* (246) vinto ::= INTO expr */
161879
+ 0, /* (247) vinto ::= */
161880
+ -3, /* (248) cmd ::= PRAGMA nm dbnm */
161881
+ -5, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
161882
+ -6, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
161883
+ -5, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
161884
+ -6, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
161885
+ -2, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
161886
+ -2, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
161887
+ -5, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
161888
+ -11, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
161889
+ -1, /* (257) trigger_time ::= BEFORE|AFTER */
161890
+ -2, /* (258) trigger_time ::= INSTEAD OF */
161891
+ 0, /* (259) trigger_time ::= */
161892
+ -1, /* (260) trigger_event ::= DELETE|INSERT */
161893
+ -1, /* (261) trigger_event ::= UPDATE */
161894
+ -3, /* (262) trigger_event ::= UPDATE OF idlist */
161895
+ 0, /* (263) when_clause ::= */
161896
+ -2, /* (264) when_clause ::= WHEN expr */
161897
+ -3, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
161898
+ -2, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
161899
+ -3, /* (267) trnm ::= nm DOT nm */
161900
+ -3, /* (268) tridxby ::= INDEXED BY nm */
161901
+ -2, /* (269) tridxby ::= NOT INDEXED */
161902
+ -9, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
161903
+ -8, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
161904
+ -6, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
161905
+ -3, /* (273) trigger_cmd ::= scanpt select scanpt */
161906
+ -4, /* (274) expr ::= RAISE LP IGNORE RP */
161907
+ -6, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
161908
+ -1, /* (276) raisetype ::= ROLLBACK */
161909
+ -1, /* (277) raisetype ::= ABORT */
161910
+ -1, /* (278) raisetype ::= FAIL */
161911
+ -4, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
161912
+ -6, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
161913
+ -3, /* (281) cmd ::= DETACH database_kw_opt expr */
161914
+ 0, /* (282) key_opt ::= */
161915
+ -2, /* (283) key_opt ::= KEY expr */
161916
+ -1, /* (284) cmd ::= REINDEX */
161917
+ -3, /* (285) cmd ::= REINDEX nm dbnm */
161918
+ -1, /* (286) cmd ::= ANALYZE */
161919
+ -3, /* (287) cmd ::= ANALYZE nm dbnm */
161920
+ -6, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
161921
+ -7, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
161922
+ -6, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
161923
+ -1, /* (291) add_column_fullname ::= fullname */
161924
+ -8, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
161925
+ -1, /* (293) cmd ::= create_vtab */
161926
+ -4, /* (294) cmd ::= create_vtab LP vtabarglist RP */
161927
+ -8, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
161928
+ 0, /* (296) vtabarg ::= */
161929
+ -1, /* (297) vtabargtoken ::= ANY */
161930
+ -3, /* (298) vtabargtoken ::= lp anylist RP */
161931
+ -1, /* (299) lp ::= LP */
161932
+ -2, /* (300) with ::= WITH wqlist */
161933
+ -3, /* (301) with ::= WITH RECURSIVE wqlist */
161934
+ -1, /* (302) wqas ::= AS */
161935
+ -2, /* (303) wqas ::= AS MATERIALIZED */
161936
+ -3, /* (304) wqas ::= AS NOT MATERIALIZED */
161937
+ -6, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
161938
+ -1, /* (306) wqlist ::= wqitem */
161939
+ -3, /* (307) wqlist ::= wqlist COMMA wqitem */
161940
+ -1, /* (308) windowdefn_list ::= windowdefn */
161941
+ -3, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
161942
+ -5, /* (310) windowdefn ::= nm AS LP window RP */
161943
+ -5, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
161944
+ -6, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
161945
+ -4, /* (313) window ::= ORDER BY sortlist frame_opt */
161946
+ -5, /* (314) window ::= nm ORDER BY sortlist frame_opt */
161947
+ -1, /* (315) window ::= frame_opt */
161948
+ -2, /* (316) window ::= nm frame_opt */
161949
+ 0, /* (317) frame_opt ::= */
161950
+ -3, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161951
+ -6, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161952
+ -1, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
161953
+ -1, /* (321) frame_bound_s ::= frame_bound */
161954
+ -2, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
161955
+ -1, /* (323) frame_bound_e ::= frame_bound */
161956
+ -2, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
161957
+ -2, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
161958
+ -2, /* (326) frame_bound ::= CURRENT ROW */
161959
+ 0, /* (327) frame_exclude_opt ::= */
161960
+ -2, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
161961
+ -2, /* (329) frame_exclude ::= NO OTHERS */
161962
+ -2, /* (330) frame_exclude ::= CURRENT ROW */
161963
+ -1, /* (331) frame_exclude ::= GROUP|TIES */
161964
+ -2, /* (332) window_clause ::= WINDOW windowdefn_list */
161965
+ -2, /* (333) filter_over ::= filter_clause over_clause */
161966
+ -1, /* (334) filter_over ::= over_clause */
161967
+ -1, /* (335) filter_over ::= filter_clause */
161968
+ -4, /* (336) over_clause ::= OVER LP window RP */
161969
+ -2, /* (337) over_clause ::= OVER nm */
161970
+ -5, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
161971
+ -1, /* (339) input ::= cmdlist */
161972
+ -2, /* (340) cmdlist ::= cmdlist ecmd */
161973
+ -1, /* (341) cmdlist ::= ecmd */
161974
+ -1, /* (342) ecmd ::= SEMI */
161975
+ -2, /* (343) ecmd ::= cmdx SEMI */
161976
+ -3, /* (344) ecmd ::= explain cmdx SEMI */
161977
+ 0, /* (345) trans_opt ::= */
161978
+ -1, /* (346) trans_opt ::= TRANSACTION */
161979
+ -2, /* (347) trans_opt ::= TRANSACTION nm */
161980
+ -1, /* (348) savepoint_opt ::= SAVEPOINT */
161981
+ 0, /* (349) savepoint_opt ::= */
161982
+ -2, /* (350) cmd ::= create_table create_table_args */
161983
+ -1, /* (351) table_option_set ::= table_option */
161984
+ -4, /* (352) columnlist ::= columnlist COMMA columnname carglist */
161985
+ -2, /* (353) columnlist ::= columnname carglist */
161986
+ -1, /* (354) nm ::= ID|INDEXED */
161987
+ -1, /* (355) nm ::= STRING */
161988
+ -1, /* (356) nm ::= JOIN_KW */
161989
+ -1, /* (357) typetoken ::= typename */
161990
+ -1, /* (358) typename ::= ID|STRING */
161991
+ -1, /* (359) signed ::= plus_num */
161992
+ -1, /* (360) signed ::= minus_num */
161993
+ -2, /* (361) carglist ::= carglist ccons */
161994
+ 0, /* (362) carglist ::= */
161995
+ -2, /* (363) ccons ::= NULL onconf */
161996
+ -4, /* (364) ccons ::= GENERATED ALWAYS AS generated */
161997
+ -2, /* (365) ccons ::= AS generated */
161998
+ -2, /* (366) conslist_opt ::= COMMA conslist */
161999
+ -3, /* (367) conslist ::= conslist tconscomma tcons */
162000
+ -1, /* (368) conslist ::= tcons */
162001
+ 0, /* (369) tconscomma ::= */
162002
+ -1, /* (370) defer_subclause_opt ::= defer_subclause */
162003
+ -1, /* (371) resolvetype ::= raisetype */
162004
+ -1, /* (372) selectnowith ::= oneselect */
162005
+ -1, /* (373) oneselect ::= values */
162006
+ -2, /* (374) sclp ::= selcollist COMMA */
162007
+ -1, /* (375) as ::= ID|STRING */
162008
+ 0, /* (376) returning ::= */
162009
+ -1, /* (377) expr ::= term */
162010
+ -1, /* (378) likeop ::= LIKE_KW|MATCH */
162011
+ -1, /* (379) exprlist ::= nexprlist */
162012
+ -1, /* (380) nmnum ::= plus_num */
162013
+ -1, /* (381) nmnum ::= nm */
162014
+ -1, /* (382) nmnum ::= ON */
162015
+ -1, /* (383) nmnum ::= DELETE */
162016
+ -1, /* (384) nmnum ::= DEFAULT */
162017
+ -1, /* (385) plus_num ::= INTEGER|FLOAT */
162018
+ 0, /* (386) foreach_clause ::= */
162019
+ -3, /* (387) foreach_clause ::= FOR EACH ROW */
162020
+ -1, /* (388) trnm ::= nm */
162021
+ 0, /* (389) tridxby ::= */
162022
+ -1, /* (390) database_kw_opt ::= DATABASE */
162023
+ 0, /* (391) database_kw_opt ::= */
162024
+ 0, /* (392) kwcolumn_opt ::= */
162025
+ -1, /* (393) kwcolumn_opt ::= COLUMNKW */
162026
+ -1, /* (394) vtabarglist ::= vtabarg */
162027
+ -3, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
162028
+ -2, /* (396) vtabarg ::= vtabarg vtabargtoken */
162029
+ 0, /* (397) anylist ::= */
162030
+ -4, /* (398) anylist ::= anylist LP anylist RP */
162031
+ -2, /* (399) anylist ::= anylist ANY */
162032
+ 0, /* (400) with ::= */
161730162033
};
161731162034
161732162035
static void yy_accept(yyParser*); /* Forward Declaration */
161733162036
161734162037
/*
@@ -161776,20 +162079,20 @@
161776162079
break;
161777162080
case 2: /* cmdx ::= cmd */
161778162081
{ sqlite3FinishCoding(pParse); }
161779162082
break;
161780162083
case 3: /* cmd ::= BEGIN transtype trans_opt */
161781
-{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy376);}
162084
+{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy64);}
161782162085
break;
161783162086
case 4: /* transtype ::= */
161784
-{yymsp[1].minor.yy376 = TK_DEFERRED;}
162087
+{yymsp[1].minor.yy64 = TK_DEFERRED;}
161785162088
break;
161786162089
case 5: /* transtype ::= DEFERRED */
161787162090
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
161788162091
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
161789
- case 318: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==318);
161790
-{yymsp[0].minor.yy376 = yymsp[0].major; /*A-overwrites-X*/}
162092
+ case 320: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==320);
162093
+{yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/}
161791162094
break;
161792162095
case 8: /* cmd ::= COMMIT|END trans_opt */
161793162096
case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
161794162097
{sqlite3EndTransaction(pParse,yymsp[-1].major);}
161795162098
break;
@@ -161808,415 +162111,432 @@
161808162111
sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
161809162112
}
161810162113
break;
161811162114
case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
161812162115
{
161813
- sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy376,0,0,yymsp[-2].minor.yy376);
162116
+ sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy64,0,0,yymsp[-2].minor.yy64);
161814162117
}
161815162118
break;
161816162119
case 14: /* createkw ::= CREATE */
161817162120
{disableLookaside(pParse);}
161818162121
break;
161819162122
case 15: /* ifnotexists ::= */
161820162123
case 18: /* temp ::= */ yytestcase(yyruleno==18);
161821
- case 21: /* table_options ::= */ yytestcase(yyruleno==21);
161822
- case 45: /* autoinc ::= */ yytestcase(yyruleno==45);
161823
- case 60: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==60);
161824
- case 70: /* defer_subclause_opt ::= */ yytestcase(yyruleno==70);
161825
- case 79: /* ifexists ::= */ yytestcase(yyruleno==79);
161826
- case 96: /* distinct ::= */ yytestcase(yyruleno==96);
161827
- case 239: /* collate ::= */ yytestcase(yyruleno==239);
161828
-{yymsp[1].minor.yy376 = 0;}
162124
+ case 47: /* autoinc ::= */ yytestcase(yyruleno==47);
162125
+ case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
162126
+ case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72);
162127
+ case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
162128
+ case 98: /* distinct ::= */ yytestcase(yyruleno==98);
162129
+ case 241: /* collate ::= */ yytestcase(yyruleno==241);
162130
+{yymsp[1].minor.yy64 = 0;}
161829162131
break;
161830162132
case 16: /* ifnotexists ::= IF NOT EXISTS */
161831
-{yymsp[-2].minor.yy376 = 1;}
162133
+{yymsp[-2].minor.yy64 = 1;}
161832162134
break;
161833162135
case 17: /* temp ::= TEMP */
161834
-{yymsp[0].minor.yy376 = pParse->db->init.busy==0;}
162136
+{yymsp[0].minor.yy64 = pParse->db->init.busy==0;}
161835162137
break;
161836
- case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
162138
+ case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */
161837162139
{
161838
- sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy376,0);
162140
+ sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy51,0);
161839162141
}
161840162142
break;
161841162143
case 20: /* create_table_args ::= AS select */
161842162144
{
161843
- sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy81);
161844
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy81);
162145
+ sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy303);
162146
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
161845162147
}
161846162148
break;
161847
- case 22: /* table_options ::= WITHOUT nm */
162149
+ case 21: /* table_option_set ::= */
162150
+{yymsp[1].minor.yy51 = 0;}
162151
+ break;
162152
+ case 22: /* table_option_set ::= table_option_set COMMA table_option */
162153
+{yylhsminor.yy51 = yymsp[-2].minor.yy51|yymsp[0].minor.yy51;}
162154
+ yymsp[-2].minor.yy51 = yylhsminor.yy51;
162155
+ break;
162156
+ case 23: /* table_option ::= WITHOUT nm */
161848162157
{
161849162158
if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
161850
- yymsp[-1].minor.yy376 = TF_WithoutRowid | TF_NoVisibleRowid;
162159
+ yymsp[-1].minor.yy51 = TF_WithoutRowid | TF_NoVisibleRowid;
161851162160
}else{
161852
- yymsp[-1].minor.yy376 = 0;
162161
+ yymsp[-1].minor.yy51 = 0;
162162
+ sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
162163
+ }
162164
+}
162165
+ break;
162166
+ case 24: /* table_option ::= nm */
162167
+{
162168
+ if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict",6)==0 ){
162169
+ yylhsminor.yy51 = TF_Strict;
162170
+ }else{
162171
+ yylhsminor.yy51 = 0;
161853162172
sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
161854162173
}
161855162174
}
162175
+ yymsp[0].minor.yy51 = yylhsminor.yy51;
161856162176
break;
161857
- case 23: /* columnname ::= nm typetoken */
162177
+ case 25: /* columnname ::= nm typetoken */
161858162178
{sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);}
161859162179
break;
161860
- case 24: /* typetoken ::= */
161861
- case 63: /* conslist_opt ::= */ yytestcase(yyruleno==63);
161862
- case 102: /* as ::= */ yytestcase(yyruleno==102);
162180
+ case 26: /* typetoken ::= */
162181
+ case 65: /* conslist_opt ::= */ yytestcase(yyruleno==65);
162182
+ case 104: /* as ::= */ yytestcase(yyruleno==104);
161863162183
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;}
161864162184
break;
161865
- case 25: /* typetoken ::= typename LP signed RP */
162185
+ case 27: /* typetoken ::= typename LP signed RP */
161866162186
{
161867162187
yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z);
161868162188
}
161869162189
break;
161870
- case 26: /* typetoken ::= typename LP signed COMMA signed RP */
162190
+ case 28: /* typetoken ::= typename LP signed COMMA signed RP */
161871162191
{
161872162192
yymsp[-5].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy0.z);
161873162193
}
161874162194
break;
161875
- case 27: /* typename ::= typename ID|STRING */
162195
+ case 29: /* typename ::= typename ID|STRING */
161876162196
{yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
161877162197
break;
161878
- case 28: /* scanpt ::= */
162198
+ case 30: /* scanpt ::= */
161879162199
{
161880162200
assert( yyLookahead!=YYNOCODE );
161881
- yymsp[1].minor.yy504 = yyLookaheadToken.z;
162201
+ yymsp[1].minor.yy600 = yyLookaheadToken.z;
161882162202
}
161883162203
break;
161884
- case 29: /* scantok ::= */
162204
+ case 31: /* scantok ::= */
161885162205
{
161886162206
assert( yyLookahead!=YYNOCODE );
161887162207
yymsp[1].minor.yy0 = yyLookaheadToken;
161888162208
}
161889162209
break;
161890
- case 30: /* ccons ::= CONSTRAINT nm */
161891
- case 65: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==65);
162210
+ case 32: /* ccons ::= CONSTRAINT nm */
162211
+ case 67: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==67);
161892162212
{pParse->constraintName = yymsp[0].minor.yy0;}
161893162213
break;
161894
- case 31: /* ccons ::= DEFAULT scantok term */
161895
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy404,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
161896
- break;
161897
- case 32: /* ccons ::= DEFAULT LP expr RP */
161898
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy404,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
161899
- break;
161900
- case 33: /* ccons ::= DEFAULT PLUS scantok term */
161901
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy404,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
161902
- break;
161903
- case 34: /* ccons ::= DEFAULT MINUS scantok term */
161904
-{
161905
- Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy404, 0);
162214
+ case 33: /* ccons ::= DEFAULT scantok term */
162215
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
162216
+ break;
162217
+ case 34: /* ccons ::= DEFAULT LP expr RP */
162218
+{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
162219
+ break;
162220
+ case 35: /* ccons ::= DEFAULT PLUS scantok term */
162221
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
162222
+ break;
162223
+ case 36: /* ccons ::= DEFAULT MINUS scantok term */
162224
+{
162225
+ Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy626, 0);
161906162226
sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
161907162227
}
161908162228
break;
161909
- case 35: /* ccons ::= DEFAULT scantok ID|INDEXED */
162229
+ case 37: /* ccons ::= DEFAULT scantok ID|INDEXED */
161910162230
{
161911162231
Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0);
161912162232
if( p ){
161913162233
sqlite3ExprIdToTrueFalse(p);
161914162234
testcase( p->op==TK_TRUEFALSE && sqlite3ExprTruthValue(p) );
161915162235
}
161916162236
sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
161917162237
}
161918162238
break;
161919
- case 36: /* ccons ::= NOT NULL onconf */
161920
-{sqlite3AddNotNull(pParse, yymsp[0].minor.yy376);}
161921
- break;
161922
- case 37: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
161923
-{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy376,yymsp[0].minor.yy376,yymsp[-2].minor.yy376);}
161924
- break;
161925
- case 38: /* ccons ::= UNIQUE onconf */
161926
-{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy376,0,0,0,0,
162239
+ case 38: /* ccons ::= NOT NULL onconf */
162240
+{sqlite3AddNotNull(pParse, yymsp[0].minor.yy64);}
162241
+ break;
162242
+ case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
162243
+{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy64,yymsp[0].minor.yy64,yymsp[-2].minor.yy64);}
162244
+ break;
162245
+ case 40: /* ccons ::= UNIQUE onconf */
162246
+{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy64,0,0,0,0,
161927162247
SQLITE_IDXTYPE_UNIQUE);}
161928162248
break;
161929
- case 39: /* ccons ::= CHECK LP expr RP */
161930
-{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy404,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
161931
- break;
161932
- case 40: /* ccons ::= REFERENCES nm eidlist_opt refargs */
161933
-{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy70,yymsp[0].minor.yy376);}
161934
- break;
161935
- case 41: /* ccons ::= defer_subclause */
161936
-{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy376);}
161937
- break;
161938
- case 42: /* ccons ::= COLLATE ID|STRING */
162249
+ case 41: /* ccons ::= CHECK LP expr RP */
162250
+{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
162251
+ break;
162252
+ case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */
162253
+{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy562,yymsp[0].minor.yy64);}
162254
+ break;
162255
+ case 43: /* ccons ::= defer_subclause */
162256
+{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy64);}
162257
+ break;
162258
+ case 44: /* ccons ::= COLLATE ID|STRING */
161939162259
{sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
161940162260
break;
161941
- case 43: /* generated ::= LP expr RP */
161942
-{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy404,0);}
161943
- break;
161944
- case 44: /* generated ::= LP expr RP ID */
161945
-{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy404,&yymsp[0].minor.yy0);}
161946
- break;
161947
- case 46: /* autoinc ::= AUTOINCR */
161948
-{yymsp[0].minor.yy376 = 1;}
161949
- break;
161950
- case 47: /* refargs ::= */
161951
-{ yymsp[1].minor.yy376 = OE_None*0x0101; /* EV: R-19803-45884 */}
161952
- break;
161953
- case 48: /* refargs ::= refargs refarg */
161954
-{ yymsp[-1].minor.yy376 = (yymsp[-1].minor.yy376 & ~yymsp[0].minor.yy139.mask) | yymsp[0].minor.yy139.value; }
161955
- break;
161956
- case 49: /* refarg ::= MATCH nm */
161957
-{ yymsp[-1].minor.yy139.value = 0; yymsp[-1].minor.yy139.mask = 0x000000; }
161958
- break;
161959
- case 50: /* refarg ::= ON INSERT refact */
161960
-{ yymsp[-2].minor.yy139.value = 0; yymsp[-2].minor.yy139.mask = 0x000000; }
161961
- break;
161962
- case 51: /* refarg ::= ON DELETE refact */
161963
-{ yymsp[-2].minor.yy139.value = yymsp[0].minor.yy376; yymsp[-2].minor.yy139.mask = 0x0000ff; }
161964
- break;
161965
- case 52: /* refarg ::= ON UPDATE refact */
161966
-{ yymsp[-2].minor.yy139.value = yymsp[0].minor.yy376<<8; yymsp[-2].minor.yy139.mask = 0x00ff00; }
161967
- break;
161968
- case 53: /* refact ::= SET NULL */
161969
-{ yymsp[-1].minor.yy376 = OE_SetNull; /* EV: R-33326-45252 */}
161970
- break;
161971
- case 54: /* refact ::= SET DEFAULT */
161972
-{ yymsp[-1].minor.yy376 = OE_SetDflt; /* EV: R-33326-45252 */}
161973
- break;
161974
- case 55: /* refact ::= CASCADE */
161975
-{ yymsp[0].minor.yy376 = OE_Cascade; /* EV: R-33326-45252 */}
161976
- break;
161977
- case 56: /* refact ::= RESTRICT */
161978
-{ yymsp[0].minor.yy376 = OE_Restrict; /* EV: R-33326-45252 */}
161979
- break;
161980
- case 57: /* refact ::= NO ACTION */
161981
-{ yymsp[-1].minor.yy376 = OE_None; /* EV: R-33326-45252 */}
161982
- break;
161983
- case 58: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
161984
-{yymsp[-2].minor.yy376 = 0;}
161985
- break;
161986
- case 59: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
161987
- case 74: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==74);
161988
- case 169: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==169);
161989
-{yymsp[-1].minor.yy376 = yymsp[0].minor.yy376;}
161990
- break;
161991
- case 61: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
161992
- case 78: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==78);
161993
- case 211: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==211);
161994
- case 214: /* in_op ::= NOT IN */ yytestcase(yyruleno==214);
161995
- case 240: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==240);
161996
-{yymsp[-1].minor.yy376 = 1;}
161997
- break;
161998
- case 62: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
161999
-{yymsp[-1].minor.yy376 = 0;}
162000
- break;
162001
- case 64: /* tconscomma ::= COMMA */
162261
+ case 45: /* generated ::= LP expr RP */
162262
+{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy626,0);}
162263
+ break;
162264
+ case 46: /* generated ::= LP expr RP ID */
162265
+{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy626,&yymsp[0].minor.yy0);}
162266
+ break;
162267
+ case 48: /* autoinc ::= AUTOINCR */
162268
+{yymsp[0].minor.yy64 = 1;}
162269
+ break;
162270
+ case 49: /* refargs ::= */
162271
+{ yymsp[1].minor.yy64 = OE_None*0x0101; /* EV: R-19803-45884 */}
162272
+ break;
162273
+ case 50: /* refargs ::= refargs refarg */
162274
+{ yymsp[-1].minor.yy64 = (yymsp[-1].minor.yy64 & ~yymsp[0].minor.yy83.mask) | yymsp[0].minor.yy83.value; }
162275
+ break;
162276
+ case 51: /* refarg ::= MATCH nm */
162277
+{ yymsp[-1].minor.yy83.value = 0; yymsp[-1].minor.yy83.mask = 0x000000; }
162278
+ break;
162279
+ case 52: /* refarg ::= ON INSERT refact */
162280
+{ yymsp[-2].minor.yy83.value = 0; yymsp[-2].minor.yy83.mask = 0x000000; }
162281
+ break;
162282
+ case 53: /* refarg ::= ON DELETE refact */
162283
+{ yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64; yymsp[-2].minor.yy83.mask = 0x0000ff; }
162284
+ break;
162285
+ case 54: /* refarg ::= ON UPDATE refact */
162286
+{ yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64<<8; yymsp[-2].minor.yy83.mask = 0x00ff00; }
162287
+ break;
162288
+ case 55: /* refact ::= SET NULL */
162289
+{ yymsp[-1].minor.yy64 = OE_SetNull; /* EV: R-33326-45252 */}
162290
+ break;
162291
+ case 56: /* refact ::= SET DEFAULT */
162292
+{ yymsp[-1].minor.yy64 = OE_SetDflt; /* EV: R-33326-45252 */}
162293
+ break;
162294
+ case 57: /* refact ::= CASCADE */
162295
+{ yymsp[0].minor.yy64 = OE_Cascade; /* EV: R-33326-45252 */}
162296
+ break;
162297
+ case 58: /* refact ::= RESTRICT */
162298
+{ yymsp[0].minor.yy64 = OE_Restrict; /* EV: R-33326-45252 */}
162299
+ break;
162300
+ case 59: /* refact ::= NO ACTION */
162301
+{ yymsp[-1].minor.yy64 = OE_None; /* EV: R-33326-45252 */}
162302
+ break;
162303
+ case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
162304
+{yymsp[-2].minor.yy64 = 0;}
162305
+ break;
162306
+ case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
162307
+ case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76);
162308
+ case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
162309
+{yymsp[-1].minor.yy64 = yymsp[0].minor.yy64;}
162310
+ break;
162311
+ case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
162312
+ case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
162313
+ case 213: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==213);
162314
+ case 216: /* in_op ::= NOT IN */ yytestcase(yyruleno==216);
162315
+ case 242: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==242);
162316
+{yymsp[-1].minor.yy64 = 1;}
162317
+ break;
162318
+ case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
162319
+{yymsp[-1].minor.yy64 = 0;}
162320
+ break;
162321
+ case 66: /* tconscomma ::= COMMA */
162002162322
{pParse->constraintName.n = 0;}
162003162323
break;
162004
- case 66: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
162005
-{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy70,yymsp[0].minor.yy376,yymsp[-2].minor.yy376,0);}
162324
+ case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
162325
+{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy562,yymsp[0].minor.yy64,yymsp[-2].minor.yy64,0);}
162006162326
break;
162007
- case 67: /* tcons ::= UNIQUE LP sortlist RP onconf */
162008
-{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy70,yymsp[0].minor.yy376,0,0,0,0,
162327
+ case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */
162328
+{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy562,yymsp[0].minor.yy64,0,0,0,0,
162009162329
SQLITE_IDXTYPE_UNIQUE);}
162010162330
break;
162011
- case 68: /* tcons ::= CHECK LP expr RP onconf */
162012
-{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy404,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
162013
- break;
162014
- case 69: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
162015
-{
162016
- sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy70, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy70, yymsp[-1].minor.yy376);
162017
- sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy376);
162018
-}
162019
- break;
162020
- case 71: /* onconf ::= */
162021
- case 73: /* orconf ::= */ yytestcase(yyruleno==73);
162022
-{yymsp[1].minor.yy376 = OE_Default;}
162023
- break;
162024
- case 72: /* onconf ::= ON CONFLICT resolvetype */
162025
-{yymsp[-2].minor.yy376 = yymsp[0].minor.yy376;}
162026
- break;
162027
- case 75: /* resolvetype ::= IGNORE */
162028
-{yymsp[0].minor.yy376 = OE_Ignore;}
162029
- break;
162030
- case 76: /* resolvetype ::= REPLACE */
162031
- case 170: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==170);
162032
-{yymsp[0].minor.yy376 = OE_Replace;}
162033
- break;
162034
- case 77: /* cmd ::= DROP TABLE ifexists fullname */
162035
-{
162036
- sqlite3DropTable(pParse, yymsp[0].minor.yy153, 0, yymsp[-1].minor.yy376);
162037
-}
162038
- break;
162039
- case 80: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
162040
-{
162041
- sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy70, yymsp[0].minor.yy81, yymsp[-7].minor.yy376, yymsp[-5].minor.yy376);
162042
-}
162043
- break;
162044
- case 81: /* cmd ::= DROP VIEW ifexists fullname */
162045
-{
162046
- sqlite3DropTable(pParse, yymsp[0].minor.yy153, 1, yymsp[-1].minor.yy376);
162047
-}
162048
- break;
162049
- case 82: /* cmd ::= select */
162331
+ case 70: /* tcons ::= CHECK LP expr RP onconf */
162332
+{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy626,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
162333
+ break;
162334
+ case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
162335
+{
162336
+ sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy562, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy562, yymsp[-1].minor.yy64);
162337
+ sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy64);
162338
+}
162339
+ break;
162340
+ case 73: /* onconf ::= */
162341
+ case 75: /* orconf ::= */ yytestcase(yyruleno==75);
162342
+{yymsp[1].minor.yy64 = OE_Default;}
162343
+ break;
162344
+ case 74: /* onconf ::= ON CONFLICT resolvetype */
162345
+{yymsp[-2].minor.yy64 = yymsp[0].minor.yy64;}
162346
+ break;
162347
+ case 77: /* resolvetype ::= IGNORE */
162348
+{yymsp[0].minor.yy64 = OE_Ignore;}
162349
+ break;
162350
+ case 78: /* resolvetype ::= REPLACE */
162351
+ case 172: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==172);
162352
+{yymsp[0].minor.yy64 = OE_Replace;}
162353
+ break;
162354
+ case 79: /* cmd ::= DROP TABLE ifexists fullname */
162355
+{
162356
+ sqlite3DropTable(pParse, yymsp[0].minor.yy607, 0, yymsp[-1].minor.yy64);
162357
+}
162358
+ break;
162359
+ case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
162360
+{
162361
+ 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);
162362
+}
162363
+ break;
162364
+ case 83: /* cmd ::= DROP VIEW ifexists fullname */
162365
+{
162366
+ sqlite3DropTable(pParse, yymsp[0].minor.yy607, 1, yymsp[-1].minor.yy64);
162367
+}
162368
+ break;
162369
+ case 84: /* cmd ::= select */
162050162370
{
162051162371
SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
162052
- sqlite3Select(pParse, yymsp[0].minor.yy81, &dest);
162053
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy81);
162372
+ sqlite3Select(pParse, yymsp[0].minor.yy303, &dest);
162373
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
162054162374
}
162055162375
break;
162056
- case 83: /* select ::= WITH wqlist selectnowith */
162057
-{yymsp[-2].minor.yy81 = attachWithToSelect(pParse,yymsp[0].minor.yy81,yymsp[-1].minor.yy103);}
162058
- break;
162059
- case 84: /* select ::= WITH RECURSIVE wqlist selectnowith */
162060
-{yymsp[-3].minor.yy81 = attachWithToSelect(pParse,yymsp[0].minor.yy81,yymsp[-1].minor.yy103);}
162061
- break;
162062
- case 85: /* select ::= selectnowith */
162063
-{
162064
- Select *p = yymsp[0].minor.yy81;
162376
+ case 85: /* select ::= WITH wqlist selectnowith */
162377
+{yymsp[-2].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
162378
+ break;
162379
+ case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */
162380
+{yymsp[-3].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
162381
+ break;
162382
+ case 87: /* select ::= selectnowith */
162383
+{
162384
+ Select *p = yymsp[0].minor.yy303;
162065162385
if( p ){
162066162386
parserDoubleLinkSelect(pParse, p);
162067162387
}
162068
- yymsp[0].minor.yy81 = p; /*A-overwrites-X*/
162388
+ yymsp[0].minor.yy303 = p; /*A-overwrites-X*/
162069162389
}
162070162390
break;
162071
- case 86: /* selectnowith ::= selectnowith multiselect_op oneselect */
162391
+ case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */
162072162392
{
162073
- Select *pRhs = yymsp[0].minor.yy81;
162074
- Select *pLhs = yymsp[-2].minor.yy81;
162393
+ Select *pRhs = yymsp[0].minor.yy303;
162394
+ Select *pLhs = yymsp[-2].minor.yy303;
162075162395
if( pRhs && pRhs->pPrior ){
162076162396
SrcList *pFrom;
162077162397
Token x;
162078162398
x.n = 0;
162079162399
parserDoubleLinkSelect(pParse, pRhs);
162080162400
pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
162081162401
pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
162082162402
}
162083162403
if( pRhs ){
162084
- pRhs->op = (u8)yymsp[-1].minor.yy376;
162404
+ pRhs->op = (u8)yymsp[-1].minor.yy64;
162085162405
pRhs->pPrior = pLhs;
162086162406
if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
162087162407
pRhs->selFlags &= ~SF_MultiValue;
162088
- if( yymsp[-1].minor.yy376!=TK_ALL ) pParse->hasCompound = 1;
162408
+ if( yymsp[-1].minor.yy64!=TK_ALL ) pParse->hasCompound = 1;
162089162409
}else{
162090162410
sqlite3SelectDelete(pParse->db, pLhs);
162091162411
}
162092
- yymsp[-2].minor.yy81 = pRhs;
162093
-}
162094
- break;
162095
- case 87: /* multiselect_op ::= UNION */
162096
- case 89: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==89);
162097
-{yymsp[0].minor.yy376 = yymsp[0].major; /*A-overwrites-OP*/}
162098
- break;
162099
- case 88: /* multiselect_op ::= UNION ALL */
162100
-{yymsp[-1].minor.yy376 = TK_ALL;}
162101
- break;
162102
- case 90: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
162103
-{
162104
- yymsp[-8].minor.yy81 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy70,yymsp[-5].minor.yy153,yymsp[-4].minor.yy404,yymsp[-3].minor.yy70,yymsp[-2].minor.yy404,yymsp[-1].minor.yy70,yymsp[-7].minor.yy376,yymsp[0].minor.yy404);
162105
-}
162106
- break;
162107
- case 91: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
162108
-{
162109
- yymsp[-9].minor.yy81 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy70,yymsp[-6].minor.yy153,yymsp[-5].minor.yy404,yymsp[-4].minor.yy70,yymsp[-3].minor.yy404,yymsp[-1].minor.yy70,yymsp[-8].minor.yy376,yymsp[0].minor.yy404);
162110
- if( yymsp[-9].minor.yy81 ){
162111
- yymsp[-9].minor.yy81->pWinDefn = yymsp[-2].minor.yy49;
162112
- }else{
162113
- sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy49);
162114
- }
162115
-}
162116
- break;
162117
- case 92: /* values ::= VALUES LP nexprlist RP */
162118
-{
162119
- yymsp[-3].minor.yy81 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy70,0,0,0,0,0,SF_Values,0);
162120
-}
162121
- break;
162122
- case 93: /* values ::= values COMMA LP nexprlist RP */
162123
-{
162124
- Select *pRight, *pLeft = yymsp[-4].minor.yy81;
162125
- pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy70,0,0,0,0,0,SF_Values|SF_MultiValue,0);
162412
+ yymsp[-2].minor.yy303 = pRhs;
162413
+}
162414
+ break;
162415
+ case 89: /* multiselect_op ::= UNION */
162416
+ case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91);
162417
+{yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-OP*/}
162418
+ break;
162419
+ case 90: /* multiselect_op ::= UNION ALL */
162420
+{yymsp[-1].minor.yy64 = TK_ALL;}
162421
+ break;
162422
+ case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
162423
+{
162424
+ 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);
162425
+}
162426
+ break;
162427
+ case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
162428
+{
162429
+ 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);
162430
+ if( yymsp[-9].minor.yy303 ){
162431
+ yymsp[-9].minor.yy303->pWinDefn = yymsp[-2].minor.yy375;
162432
+ }else{
162433
+ sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy375);
162434
+ }
162435
+}
162436
+ break;
162437
+ case 94: /* values ::= VALUES LP nexprlist RP */
162438
+{
162439
+ yymsp[-3].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values,0);
162440
+}
162441
+ break;
162442
+ case 95: /* values ::= values COMMA LP nexprlist RP */
162443
+{
162444
+ Select *pRight, *pLeft = yymsp[-4].minor.yy303;
162445
+ pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values|SF_MultiValue,0);
162126162446
if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
162127162447
if( pRight ){
162128162448
pRight->op = TK_ALL;
162129162449
pRight->pPrior = pLeft;
162130
- yymsp[-4].minor.yy81 = pRight;
162131
- }else{
162132
- yymsp[-4].minor.yy81 = pLeft;
162133
- }
162134
-}
162135
- break;
162136
- case 94: /* distinct ::= DISTINCT */
162137
-{yymsp[0].minor.yy376 = SF_Distinct;}
162138
- break;
162139
- case 95: /* distinct ::= ALL */
162140
-{yymsp[0].minor.yy376 = SF_All;}
162141
- break;
162142
- case 97: /* sclp ::= */
162143
- case 130: /* orderby_opt ::= */ yytestcase(yyruleno==130);
162144
- case 140: /* groupby_opt ::= */ yytestcase(yyruleno==140);
162145
- case 227: /* exprlist ::= */ yytestcase(yyruleno==227);
162146
- case 230: /* paren_exprlist ::= */ yytestcase(yyruleno==230);
162147
- case 235: /* eidlist_opt ::= */ yytestcase(yyruleno==235);
162148
-{yymsp[1].minor.yy70 = 0;}
162149
- break;
162150
- case 98: /* selcollist ::= sclp scanpt expr scanpt as */
162151
-{
162152
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy70, yymsp[-2].minor.yy404);
162153
- if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy70, &yymsp[0].minor.yy0, 1);
162154
- sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy70,yymsp[-3].minor.yy504,yymsp[-1].minor.yy504);
162155
-}
162156
- break;
162157
- case 99: /* selcollist ::= sclp scanpt STAR */
162450
+ yymsp[-4].minor.yy303 = pRight;
162451
+ }else{
162452
+ yymsp[-4].minor.yy303 = pLeft;
162453
+ }
162454
+}
162455
+ break;
162456
+ case 96: /* distinct ::= DISTINCT */
162457
+{yymsp[0].minor.yy64 = SF_Distinct;}
162458
+ break;
162459
+ case 97: /* distinct ::= ALL */
162460
+{yymsp[0].minor.yy64 = SF_All;}
162461
+ break;
162462
+ case 99: /* sclp ::= */
162463
+ case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132);
162464
+ case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142);
162465
+ case 229: /* exprlist ::= */ yytestcase(yyruleno==229);
162466
+ case 232: /* paren_exprlist ::= */ yytestcase(yyruleno==232);
162467
+ case 237: /* eidlist_opt ::= */ yytestcase(yyruleno==237);
162468
+{yymsp[1].minor.yy562 = 0;}
162469
+ break;
162470
+ case 100: /* selcollist ::= sclp scanpt expr scanpt as */
162471
+{
162472
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
162473
+ if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[0].minor.yy0, 1);
162474
+ sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy562,yymsp[-3].minor.yy600,yymsp[-1].minor.yy600);
162475
+}
162476
+ break;
162477
+ case 101: /* selcollist ::= sclp scanpt STAR */
162158162478
{
162159162479
Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
162160
- yymsp[-2].minor.yy70 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy70, p);
162480
+ yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy562, p);
162161162481
}
162162162482
break;
162163
- case 100: /* selcollist ::= sclp scanpt nm DOT STAR */
162483
+ case 102: /* selcollist ::= sclp scanpt nm DOT STAR */
162164162484
{
162165162485
Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
162166162486
Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
162167162487
Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
162168
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70, pDot);
162488
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, pDot);
162169162489
}
162170162490
break;
162171
- case 101: /* as ::= AS nm */
162172
- case 112: /* dbnm ::= DOT nm */ yytestcase(yyruleno==112);
162173
- case 251: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==251);
162174
- case 252: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==252);
162491
+ case 103: /* as ::= AS nm */
162492
+ case 114: /* dbnm ::= DOT nm */ yytestcase(yyruleno==114);
162493
+ case 253: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==253);
162494
+ case 254: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
162175162495
{yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
162176162496
break;
162177
- case 103: /* from ::= */
162178
- case 106: /* stl_prefix ::= */ yytestcase(yyruleno==106);
162179
-{yymsp[1].minor.yy153 = 0;}
162180
- break;
162181
- case 104: /* from ::= FROM seltablist */
162182
-{
162183
- yymsp[-1].minor.yy153 = yymsp[0].minor.yy153;
162184
- sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy153);
162185
-}
162186
- break;
162187
- case 105: /* stl_prefix ::= seltablist joinop */
162188
-{
162189
- if( ALWAYS(yymsp[-1].minor.yy153 && yymsp[-1].minor.yy153->nSrc>0) ) yymsp[-1].minor.yy153->a[yymsp[-1].minor.yy153->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy376;
162190
-}
162191
- break;
162192
- case 107: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
162193
-{
162194
- yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162195
- sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy153, &yymsp[-2].minor.yy0);
162196
-}
162197
- break;
162198
- case 108: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
162199
-{
162200
- yymsp[-8].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy153,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162201
- sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy153, yymsp[-4].minor.yy70);
162202
-}
162203
- break;
162204
- case 109: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
162205
-{
162206
- yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy81,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162207
- }
162208
- break;
162209
- case 110: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
162210
-{
162211
- if( yymsp[-6].minor.yy153==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy404==0 && yymsp[0].minor.yy436==0 ){
162212
- yymsp[-6].minor.yy153 = yymsp[-4].minor.yy153;
162213
- }else if( yymsp[-4].minor.yy153->nSrc==1 ){
162214
- yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162215
- if( yymsp[-6].minor.yy153 ){
162216
- SrcItem *pNew = &yymsp[-6].minor.yy153->a[yymsp[-6].minor.yy153->nSrc-1];
162217
- SrcItem *pOld = yymsp[-4].minor.yy153->a;
162497
+ case 105: /* from ::= */
162498
+ case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108);
162499
+{yymsp[1].minor.yy607 = 0;}
162500
+ break;
162501
+ case 106: /* from ::= FROM seltablist */
162502
+{
162503
+ yymsp[-1].minor.yy607 = yymsp[0].minor.yy607;
162504
+ sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy607);
162505
+}
162506
+ break;
162507
+ case 107: /* stl_prefix ::= seltablist joinop */
162508
+{
162509
+ 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;
162510
+}
162511
+ break;
162512
+ case 109: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
162513
+{
162514
+ 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);
162515
+ sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy607, &yymsp[-2].minor.yy0);
162516
+}
162517
+ break;
162518
+ case 110: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
162519
+{
162520
+ 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);
162521
+ sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy607, yymsp[-4].minor.yy562);
162522
+}
162523
+ break;
162524
+ case 111: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
162525
+{
162526
+ 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);
162527
+ }
162528
+ break;
162529
+ case 112: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
162530
+{
162531
+ if( yymsp[-6].minor.yy607==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy626==0 && yymsp[0].minor.yy240==0 ){
162532
+ yymsp[-6].minor.yy607 = yymsp[-4].minor.yy607;
162533
+ }else if( yymsp[-4].minor.yy607->nSrc==1 ){
162534
+ 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);
162535
+ if( yymsp[-6].minor.yy607 ){
162536
+ SrcItem *pNew = &yymsp[-6].minor.yy607->a[yymsp[-6].minor.yy607->nSrc-1];
162537
+ SrcItem *pOld = yymsp[-4].minor.yy607->a;
162218162538
pNew->zName = pOld->zName;
162219162539
pNew->zDatabase = pOld->zDatabase;
162220162540
pNew->pSelect = pOld->pSelect;
162221162541
if( pOld->fg.isTabFunc ){
162222162542
pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -162225,1008 +162545,1009 @@
162225162545
pNew->fg.isTabFunc = 1;
162226162546
}
162227162547
pOld->zName = pOld->zDatabase = 0;
162228162548
pOld->pSelect = 0;
162229162549
}
162230
- sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy153);
162550
+ sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy607);
162231162551
}else{
162232162552
Select *pSubquery;
162233
- sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy153);
162234
- pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy153,0,0,0,0,SF_NestedFrom,0);
162235
- yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162553
+ sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy607);
162554
+ pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy607,0,0,0,0,SF_NestedFrom,0);
162555
+ 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);
162236162556
}
162237162557
}
162238162558
break;
162239
- case 111: /* dbnm ::= */
162240
- case 125: /* indexed_opt ::= */ yytestcase(yyruleno==125);
162559
+ case 113: /* dbnm ::= */
162560
+ case 127: /* indexed_opt ::= */ yytestcase(yyruleno==127);
162241162561
{yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
162242162562
break;
162243
- case 113: /* fullname ::= nm */
162244
-{
162245
- yylhsminor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
162246
- if( IN_RENAME_OBJECT && yylhsminor.yy153 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy153->a[0].zName, &yymsp[0].minor.yy0);
162247
-}
162248
- yymsp[0].minor.yy153 = yylhsminor.yy153;
162249
- break;
162250
- case 114: /* fullname ::= nm DOT nm */
162251
-{
162252
- yylhsminor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
162253
- if( IN_RENAME_OBJECT && yylhsminor.yy153 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy153->a[0].zName, &yymsp[0].minor.yy0);
162254
-}
162255
- yymsp[-2].minor.yy153 = yylhsminor.yy153;
162256
- break;
162257
- case 115: /* xfullname ::= nm */
162258
-{yymsp[0].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
162259
- break;
162260
- case 116: /* xfullname ::= nm DOT nm */
162261
-{yymsp[-2].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
162262
- break;
162263
- case 117: /* xfullname ::= nm DOT nm AS nm */
162264
-{
162265
- yymsp[-4].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
162266
- if( yymsp[-4].minor.yy153 ) yymsp[-4].minor.yy153->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
162267
-}
162268
- break;
162269
- case 118: /* xfullname ::= nm AS nm */
162270
-{
162271
- yymsp[-2].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
162272
- if( yymsp[-2].minor.yy153 ) yymsp[-2].minor.yy153->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
162273
-}
162274
- break;
162275
- case 119: /* joinop ::= COMMA|JOIN */
162276
-{ yymsp[0].minor.yy376 = JT_INNER; }
162277
- break;
162278
- case 120: /* joinop ::= JOIN_KW JOIN */
162279
-{yymsp[-1].minor.yy376 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
162280
- break;
162281
- case 121: /* joinop ::= JOIN_KW nm JOIN */
162282
-{yymsp[-2].minor.yy376 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
162283
- break;
162284
- case 122: /* joinop ::= JOIN_KW nm nm JOIN */
162285
-{yymsp[-3].minor.yy376 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
162286
- break;
162287
- case 123: /* on_opt ::= ON expr */
162288
- case 143: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==143);
162289
- case 150: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==150);
162290
- case 152: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==152);
162291
- case 223: /* case_else ::= ELSE expr */ yytestcase(yyruleno==223);
162292
- case 244: /* vinto ::= INTO expr */ yytestcase(yyruleno==244);
162293
-{yymsp[-1].minor.yy404 = yymsp[0].minor.yy404;}
162294
- break;
162295
- case 124: /* on_opt ::= */
162296
- case 142: /* having_opt ::= */ yytestcase(yyruleno==142);
162297
- case 144: /* limit_opt ::= */ yytestcase(yyruleno==144);
162298
- case 149: /* where_opt ::= */ yytestcase(yyruleno==149);
162299
- case 151: /* where_opt_ret ::= */ yytestcase(yyruleno==151);
162300
- case 224: /* case_else ::= */ yytestcase(yyruleno==224);
162301
- case 226: /* case_operand ::= */ yytestcase(yyruleno==226);
162302
- case 245: /* vinto ::= */ yytestcase(yyruleno==245);
162303
-{yymsp[1].minor.yy404 = 0;}
162304
- break;
162305
- case 126: /* indexed_opt ::= INDEXED BY nm */
162563
+ case 115: /* fullname ::= nm */
162564
+{
162565
+ yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
162566
+ if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
162567
+}
162568
+ yymsp[0].minor.yy607 = yylhsminor.yy607;
162569
+ break;
162570
+ case 116: /* fullname ::= nm DOT nm */
162571
+{
162572
+ yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
162573
+ if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
162574
+}
162575
+ yymsp[-2].minor.yy607 = yylhsminor.yy607;
162576
+ break;
162577
+ case 117: /* xfullname ::= nm */
162578
+{yymsp[0].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
162579
+ break;
162580
+ case 118: /* xfullname ::= nm DOT nm */
162581
+{yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
162582
+ break;
162583
+ case 119: /* xfullname ::= nm DOT nm AS nm */
162584
+{
162585
+ yymsp[-4].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
162586
+ if( yymsp[-4].minor.yy607 ) yymsp[-4].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
162587
+}
162588
+ break;
162589
+ case 120: /* xfullname ::= nm AS nm */
162590
+{
162591
+ yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
162592
+ if( yymsp[-2].minor.yy607 ) yymsp[-2].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
162593
+}
162594
+ break;
162595
+ case 121: /* joinop ::= COMMA|JOIN */
162596
+{ yymsp[0].minor.yy64 = JT_INNER; }
162597
+ break;
162598
+ case 122: /* joinop ::= JOIN_KW JOIN */
162599
+{yymsp[-1].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
162600
+ break;
162601
+ case 123: /* joinop ::= JOIN_KW nm JOIN */
162602
+{yymsp[-2].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
162603
+ break;
162604
+ case 124: /* joinop ::= JOIN_KW nm nm JOIN */
162605
+{yymsp[-3].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
162606
+ break;
162607
+ case 125: /* on_opt ::= ON expr */
162608
+ case 145: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==145);
162609
+ case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
162610
+ case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
162611
+ case 225: /* case_else ::= ELSE expr */ yytestcase(yyruleno==225);
162612
+ case 246: /* vinto ::= INTO expr */ yytestcase(yyruleno==246);
162613
+{yymsp[-1].minor.yy626 = yymsp[0].minor.yy626;}
162614
+ break;
162615
+ case 126: /* on_opt ::= */
162616
+ case 144: /* having_opt ::= */ yytestcase(yyruleno==144);
162617
+ case 146: /* limit_opt ::= */ yytestcase(yyruleno==146);
162618
+ case 151: /* where_opt ::= */ yytestcase(yyruleno==151);
162619
+ case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153);
162620
+ case 226: /* case_else ::= */ yytestcase(yyruleno==226);
162621
+ case 228: /* case_operand ::= */ yytestcase(yyruleno==228);
162622
+ case 247: /* vinto ::= */ yytestcase(yyruleno==247);
162623
+{yymsp[1].minor.yy626 = 0;}
162624
+ break;
162625
+ case 128: /* indexed_opt ::= INDEXED BY nm */
162306162626
{yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
162307162627
break;
162308
- case 127: /* indexed_opt ::= NOT INDEXED */
162628
+ case 129: /* indexed_opt ::= NOT INDEXED */
162309162629
{yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
162310162630
break;
162311
- case 128: /* using_opt ::= USING LP idlist RP */
162312
-{yymsp[-3].minor.yy436 = yymsp[-1].minor.yy436;}
162313
- break;
162314
- case 129: /* using_opt ::= */
162315
- case 171: /* idlist_opt ::= */ yytestcase(yyruleno==171);
162316
-{yymsp[1].minor.yy436 = 0;}
162317
- break;
162318
- case 131: /* orderby_opt ::= ORDER BY sortlist */
162319
- case 141: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==141);
162320
-{yymsp[-2].minor.yy70 = yymsp[0].minor.yy70;}
162321
- break;
162322
- case 132: /* sortlist ::= sortlist COMMA expr sortorder nulls */
162323
-{
162324
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70,yymsp[-2].minor.yy404);
162325
- sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy70,yymsp[-1].minor.yy376,yymsp[0].minor.yy376);
162326
-}
162327
- break;
162328
- case 133: /* sortlist ::= expr sortorder nulls */
162329
-{
162330
- yymsp[-2].minor.yy70 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy404); /*A-overwrites-Y*/
162331
- sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy70,yymsp[-1].minor.yy376,yymsp[0].minor.yy376);
162332
-}
162333
- break;
162334
- case 134: /* sortorder ::= ASC */
162335
-{yymsp[0].minor.yy376 = SQLITE_SO_ASC;}
162336
- break;
162337
- case 135: /* sortorder ::= DESC */
162338
-{yymsp[0].minor.yy376 = SQLITE_SO_DESC;}
162339
- break;
162340
- case 136: /* sortorder ::= */
162341
- case 139: /* nulls ::= */ yytestcase(yyruleno==139);
162342
-{yymsp[1].minor.yy376 = SQLITE_SO_UNDEFINED;}
162343
- break;
162344
- case 137: /* nulls ::= NULLS FIRST */
162345
-{yymsp[-1].minor.yy376 = SQLITE_SO_ASC;}
162346
- break;
162347
- case 138: /* nulls ::= NULLS LAST */
162348
-{yymsp[-1].minor.yy376 = SQLITE_SO_DESC;}
162349
- break;
162350
- case 145: /* limit_opt ::= LIMIT expr */
162351
-{yymsp[-1].minor.yy404 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy404,0);}
162352
- break;
162353
- case 146: /* limit_opt ::= LIMIT expr OFFSET expr */
162354
-{yymsp[-3].minor.yy404 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);}
162355
- break;
162356
- case 147: /* limit_opt ::= LIMIT expr COMMA expr */
162357
-{yymsp[-3].minor.yy404 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy404,yymsp[-2].minor.yy404);}
162358
- break;
162359
- case 148: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
162360
-{
162361
- sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy153, &yymsp[-1].minor.yy0);
162362
- sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy153,yymsp[0].minor.yy404,0,0);
162363
-}
162364
- break;
162365
- case 153: /* where_opt_ret ::= RETURNING selcollist */
162366
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy70); yymsp[-1].minor.yy404 = 0;}
162367
- break;
162368
- case 154: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
162369
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy70); yymsp[-3].minor.yy404 = yymsp[-2].minor.yy404;}
162370
- break;
162371
- case 155: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
162372
-{
162373
- sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy153, &yymsp[-4].minor.yy0);
162374
- sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy70,"set list");
162375
- yymsp[-5].minor.yy153 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy153, yymsp[-1].minor.yy153);
162376
- sqlite3Update(pParse,yymsp[-5].minor.yy153,yymsp[-2].minor.yy70,yymsp[0].minor.yy404,yymsp[-6].minor.yy376,0,0,0);
162377
-}
162378
- break;
162379
- case 156: /* setlist ::= setlist COMMA nm EQ expr */
162380
-{
162381
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy70, yymsp[0].minor.yy404);
162382
- sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy70, &yymsp[-2].minor.yy0, 1);
162383
-}
162384
- break;
162385
- case 157: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
162386
-{
162387
- yymsp[-6].minor.yy70 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy70, yymsp[-3].minor.yy436, yymsp[0].minor.yy404);
162388
-}
162389
- break;
162390
- case 158: /* setlist ::= nm EQ expr */
162391
-{
162392
- yylhsminor.yy70 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy404);
162393
- sqlite3ExprListSetName(pParse, yylhsminor.yy70, &yymsp[-2].minor.yy0, 1);
162394
-}
162395
- yymsp[-2].minor.yy70 = yylhsminor.yy70;
162396
- break;
162397
- case 159: /* setlist ::= LP idlist RP EQ expr */
162398
-{
162399
- yymsp[-4].minor.yy70 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy436, yymsp[0].minor.yy404);
162400
-}
162401
- break;
162402
- case 160: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
162403
-{
162404
- sqlite3Insert(pParse, yymsp[-3].minor.yy153, yymsp[-1].minor.yy81, yymsp[-2].minor.yy436, yymsp[-5].minor.yy376, yymsp[0].minor.yy190);
162405
-}
162406
- break;
162407
- case 161: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
162408
-{
162409
- sqlite3Insert(pParse, yymsp[-4].minor.yy153, 0, yymsp[-3].minor.yy436, yymsp[-6].minor.yy376, 0);
162410
-}
162411
- break;
162412
- case 162: /* upsert ::= */
162413
-{ yymsp[1].minor.yy190 = 0; }
162414
- break;
162415
- case 163: /* upsert ::= RETURNING selcollist */
162416
-{ yymsp[-1].minor.yy190 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy70); }
162417
- break;
162418
- case 164: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
162419
-{ yymsp[-11].minor.yy190 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy70,yymsp[-6].minor.yy404,yymsp[-2].minor.yy70,yymsp[-1].minor.yy404,yymsp[0].minor.yy190);}
162420
- break;
162421
- case 165: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
162422
-{ yymsp[-8].minor.yy190 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy70,yymsp[-3].minor.yy404,0,0,yymsp[0].minor.yy190); }
162423
- break;
162424
- case 166: /* upsert ::= ON CONFLICT DO NOTHING returning */
162425
-{ yymsp[-4].minor.yy190 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
162426
- break;
162427
- case 167: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
162428
-{ yymsp[-7].minor.yy190 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy70,yymsp[-1].minor.yy404,0);}
162429
- break;
162430
- case 168: /* returning ::= RETURNING selcollist */
162431
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy70);}
162432
- break;
162433
- case 172: /* idlist_opt ::= LP idlist RP */
162434
-{yymsp[-2].minor.yy436 = yymsp[-1].minor.yy436;}
162435
- break;
162436
- case 173: /* idlist ::= idlist COMMA nm */
162437
-{yymsp[-2].minor.yy436 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy436,&yymsp[0].minor.yy0);}
162438
- break;
162439
- case 174: /* idlist ::= nm */
162440
-{yymsp[0].minor.yy436 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
162441
- break;
162442
- case 175: /* expr ::= LP expr RP */
162443
-{yymsp[-2].minor.yy404 = yymsp[-1].minor.yy404;}
162444
- break;
162445
- case 176: /* expr ::= ID|INDEXED */
162446
- case 177: /* expr ::= JOIN_KW */ yytestcase(yyruleno==177);
162447
-{yymsp[0].minor.yy404=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
162448
- break;
162449
- case 178: /* expr ::= nm DOT nm */
162631
+ case 130: /* using_opt ::= USING LP idlist RP */
162632
+{yymsp[-3].minor.yy240 = yymsp[-1].minor.yy240;}
162633
+ break;
162634
+ case 131: /* using_opt ::= */
162635
+ case 173: /* idlist_opt ::= */ yytestcase(yyruleno==173);
162636
+{yymsp[1].minor.yy240 = 0;}
162637
+ break;
162638
+ case 133: /* orderby_opt ::= ORDER BY sortlist */
162639
+ case 143: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==143);
162640
+{yymsp[-2].minor.yy562 = yymsp[0].minor.yy562;}
162641
+ break;
162642
+ case 134: /* sortlist ::= sortlist COMMA expr sortorder nulls */
162643
+{
162644
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562,yymsp[-2].minor.yy626);
162645
+ sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
162646
+}
162647
+ break;
162648
+ case 135: /* sortlist ::= expr sortorder nulls */
162649
+{
162650
+ yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy626); /*A-overwrites-Y*/
162651
+ sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
162652
+}
162653
+ break;
162654
+ case 136: /* sortorder ::= ASC */
162655
+{yymsp[0].minor.yy64 = SQLITE_SO_ASC;}
162656
+ break;
162657
+ case 137: /* sortorder ::= DESC */
162658
+{yymsp[0].minor.yy64 = SQLITE_SO_DESC;}
162659
+ break;
162660
+ case 138: /* sortorder ::= */
162661
+ case 141: /* nulls ::= */ yytestcase(yyruleno==141);
162662
+{yymsp[1].minor.yy64 = SQLITE_SO_UNDEFINED;}
162663
+ break;
162664
+ case 139: /* nulls ::= NULLS FIRST */
162665
+{yymsp[-1].minor.yy64 = SQLITE_SO_ASC;}
162666
+ break;
162667
+ case 140: /* nulls ::= NULLS LAST */
162668
+{yymsp[-1].minor.yy64 = SQLITE_SO_DESC;}
162669
+ break;
162670
+ case 147: /* limit_opt ::= LIMIT expr */
162671
+{yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,0);}
162672
+ break;
162673
+ case 148: /* limit_opt ::= LIMIT expr OFFSET expr */
162674
+{yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
162675
+ break;
162676
+ case 149: /* limit_opt ::= LIMIT expr COMMA expr */
162677
+{yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,yymsp[-2].minor.yy626);}
162678
+ break;
162679
+ case 150: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
162680
+{
162681
+ sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy607, &yymsp[-1].minor.yy0);
162682
+ sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy607,yymsp[0].minor.yy626,0,0);
162683
+}
162684
+ break;
162685
+ case 155: /* where_opt_ret ::= RETURNING selcollist */
162686
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-1].minor.yy626 = 0;}
162687
+ break;
162688
+ case 156: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
162689
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-3].minor.yy626 = yymsp[-2].minor.yy626;}
162690
+ break;
162691
+ case 157: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
162692
+{
162693
+ sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy607, &yymsp[-4].minor.yy0);
162694
+ sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy562,"set list");
162695
+ yymsp[-5].minor.yy607 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy607, yymsp[-1].minor.yy607);
162696
+ sqlite3Update(pParse,yymsp[-5].minor.yy607,yymsp[-2].minor.yy562,yymsp[0].minor.yy626,yymsp[-6].minor.yy64,0,0,0);
162697
+}
162698
+ break;
162699
+ case 158: /* setlist ::= setlist COMMA nm EQ expr */
162700
+{
162701
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
162702
+ sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, 1);
162703
+}
162704
+ break;
162705
+ case 159: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
162706
+{
162707
+ yymsp[-6].minor.yy562 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy562, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
162708
+}
162709
+ break;
162710
+ case 160: /* setlist ::= nm EQ expr */
162711
+{
162712
+ yylhsminor.yy562 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy626);
162713
+ sqlite3ExprListSetName(pParse, yylhsminor.yy562, &yymsp[-2].minor.yy0, 1);
162714
+}
162715
+ yymsp[-2].minor.yy562 = yylhsminor.yy562;
162716
+ break;
162717
+ case 161: /* setlist ::= LP idlist RP EQ expr */
162718
+{
162719
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
162720
+}
162721
+ break;
162722
+ case 162: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
162723
+{
162724
+ sqlite3Insert(pParse, yymsp[-3].minor.yy607, yymsp[-1].minor.yy303, yymsp[-2].minor.yy240, yymsp[-5].minor.yy64, yymsp[0].minor.yy138);
162725
+}
162726
+ break;
162727
+ case 163: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
162728
+{
162729
+ sqlite3Insert(pParse, yymsp[-4].minor.yy607, 0, yymsp[-3].minor.yy240, yymsp[-6].minor.yy64, 0);
162730
+}
162731
+ break;
162732
+ case 164: /* upsert ::= */
162733
+{ yymsp[1].minor.yy138 = 0; }
162734
+ break;
162735
+ case 165: /* upsert ::= RETURNING selcollist */
162736
+{ yymsp[-1].minor.yy138 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy562); }
162737
+ break;
162738
+ case 166: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
162739
+{ 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);}
162740
+ break;
162741
+ case 167: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
162742
+{ yymsp[-8].minor.yy138 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy562,yymsp[-3].minor.yy626,0,0,yymsp[0].minor.yy138); }
162743
+ break;
162744
+ case 168: /* upsert ::= ON CONFLICT DO NOTHING returning */
162745
+{ yymsp[-4].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
162746
+ break;
162747
+ case 169: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
162748
+{ yymsp[-7].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626,0);}
162749
+ break;
162750
+ case 170: /* returning ::= RETURNING selcollist */
162751
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy562);}
162752
+ break;
162753
+ case 174: /* idlist_opt ::= LP idlist RP */
162754
+{yymsp[-2].minor.yy240 = yymsp[-1].minor.yy240;}
162755
+ break;
162756
+ case 175: /* idlist ::= idlist COMMA nm */
162757
+{yymsp[-2].minor.yy240 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy240,&yymsp[0].minor.yy0);}
162758
+ break;
162759
+ case 176: /* idlist ::= nm */
162760
+{yymsp[0].minor.yy240 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
162761
+ break;
162762
+ case 177: /* expr ::= LP expr RP */
162763
+{yymsp[-2].minor.yy626 = yymsp[-1].minor.yy626;}
162764
+ break;
162765
+ case 178: /* expr ::= ID|INDEXED */
162766
+ case 179: /* expr ::= JOIN_KW */ yytestcase(yyruleno==179);
162767
+{yymsp[0].minor.yy626=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
162768
+ break;
162769
+ case 180: /* expr ::= nm DOT nm */
162450162770
{
162451162771
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
162452162772
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
162453162773
if( IN_RENAME_OBJECT ){
162454162774
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
162455162775
sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
162456162776
}
162457
- yylhsminor.yy404 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
162777
+ yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
162458162778
}
162459
- yymsp[-2].minor.yy404 = yylhsminor.yy404;
162779
+ yymsp[-2].minor.yy626 = yylhsminor.yy626;
162460162780
break;
162461
- case 179: /* expr ::= nm DOT nm DOT nm */
162781
+ case 181: /* expr ::= nm DOT nm DOT nm */
162462162782
{
162463162783
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
162464162784
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
162465162785
Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
162466162786
Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
162467162787
if( IN_RENAME_OBJECT ){
162468162788
sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
162469162789
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
162470162790
}
162471
- yylhsminor.yy404 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
162472
-}
162473
- yymsp[-4].minor.yy404 = yylhsminor.yy404;
162474
- break;
162475
- case 180: /* term ::= NULL|FLOAT|BLOB */
162476
- case 181: /* term ::= STRING */ yytestcase(yyruleno==181);
162477
-{yymsp[0].minor.yy404=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
162478
- break;
162479
- case 182: /* term ::= INTEGER */
162480
-{
162481
- yylhsminor.yy404 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
162482
-}
162483
- yymsp[0].minor.yy404 = yylhsminor.yy404;
162484
- break;
162485
- case 183: /* expr ::= VARIABLE */
162791
+ yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
162792
+}
162793
+ yymsp[-4].minor.yy626 = yylhsminor.yy626;
162794
+ break;
162795
+ case 182: /* term ::= NULL|FLOAT|BLOB */
162796
+ case 183: /* term ::= STRING */ yytestcase(yyruleno==183);
162797
+{yymsp[0].minor.yy626=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
162798
+ break;
162799
+ case 184: /* term ::= INTEGER */
162800
+{
162801
+ yylhsminor.yy626 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
162802
+}
162803
+ yymsp[0].minor.yy626 = yylhsminor.yy626;
162804
+ break;
162805
+ case 185: /* expr ::= VARIABLE */
162486162806
{
162487162807
if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
162488162808
u32 n = yymsp[0].minor.yy0.n;
162489
- yymsp[0].minor.yy404 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
162490
- sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy404, n);
162809
+ yymsp[0].minor.yy626 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
162810
+ sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy626, n);
162491162811
}else{
162492162812
/* When doing a nested parse, one can include terms in an expression
162493162813
** that look like this: #1 #2 ... These terms refer to registers
162494162814
** in the virtual machine. #N is the N-th register. */
162495162815
Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
162496162816
assert( t.n>=2 );
162497162817
if( pParse->nested==0 ){
162498162818
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
162499
- yymsp[0].minor.yy404 = 0;
162500
- }else{
162501
- yymsp[0].minor.yy404 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
162502
- if( yymsp[0].minor.yy404 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy404->iTable);
162503
- }
162504
- }
162505
-}
162506
- break;
162507
- case 184: /* expr ::= expr COLLATE ID|STRING */
162508
-{
162509
- yymsp[-2].minor.yy404 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy404, &yymsp[0].minor.yy0, 1);
162510
-}
162511
- break;
162512
- case 185: /* expr ::= CAST LP expr AS typetoken RP */
162513
-{
162514
- yymsp[-5].minor.yy404 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
162515
- sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy404, yymsp[-3].minor.yy404, 0);
162516
-}
162517
- break;
162518
- case 186: /* expr ::= ID|INDEXED LP distinct exprlist RP */
162519
-{
162520
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy70, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy376);
162521
-}
162522
- yymsp[-4].minor.yy404 = yylhsminor.yy404;
162523
- break;
162524
- case 187: /* expr ::= ID|INDEXED LP STAR RP */
162525
-{
162526
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
162527
-}
162528
- yymsp[-3].minor.yy404 = yylhsminor.yy404;
162529
- break;
162530
- case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
162531
-{
162532
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy70, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy376);
162533
- sqlite3WindowAttach(pParse, yylhsminor.yy404, yymsp[0].minor.yy49);
162534
-}
162535
- yymsp[-5].minor.yy404 = yylhsminor.yy404;
162536
- break;
162537
- case 189: /* expr ::= ID|INDEXED LP STAR RP filter_over */
162538
-{
162539
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
162540
- sqlite3WindowAttach(pParse, yylhsminor.yy404, yymsp[0].minor.yy49);
162541
-}
162542
- yymsp[-4].minor.yy404 = yylhsminor.yy404;
162543
- break;
162544
- case 190: /* term ::= CTIME_KW */
162545
-{
162546
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
162547
-}
162548
- yymsp[0].minor.yy404 = yylhsminor.yy404;
162549
- break;
162550
- case 191: /* expr ::= LP nexprlist COMMA expr RP */
162551
-{
162552
- ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy70, yymsp[-1].minor.yy404);
162553
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
162554
- if( yymsp[-4].minor.yy404 ){
162555
- yymsp[-4].minor.yy404->x.pList = pList;
162819
+ yymsp[0].minor.yy626 = 0;
162820
+ }else{
162821
+ yymsp[0].minor.yy626 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
162822
+ if( yymsp[0].minor.yy626 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy626->iTable);
162823
+ }
162824
+ }
162825
+}
162826
+ break;
162827
+ case 186: /* expr ::= expr COLLATE ID|STRING */
162828
+{
162829
+ yymsp[-2].minor.yy626 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy626, &yymsp[0].minor.yy0, 1);
162830
+}
162831
+ break;
162832
+ case 187: /* expr ::= CAST LP expr AS typetoken RP */
162833
+{
162834
+ yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
162835
+ sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy626, yymsp[-3].minor.yy626, 0);
162836
+}
162837
+ break;
162838
+ case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP */
162839
+{
162840
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy64);
162841
+}
162842
+ yymsp[-4].minor.yy626 = yylhsminor.yy626;
162843
+ break;
162844
+ case 189: /* expr ::= ID|INDEXED LP STAR RP */
162845
+{
162846
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
162847
+}
162848
+ yymsp[-3].minor.yy626 = yylhsminor.yy626;
162849
+ break;
162850
+ case 190: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
162851
+{
162852
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy562, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy64);
162853
+ sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
162854
+}
162855
+ yymsp[-5].minor.yy626 = yylhsminor.yy626;
162856
+ break;
162857
+ case 191: /* expr ::= ID|INDEXED LP STAR RP filter_over */
162858
+{
162859
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
162860
+ sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
162861
+}
162862
+ yymsp[-4].minor.yy626 = yylhsminor.yy626;
162863
+ break;
162864
+ case 192: /* term ::= CTIME_KW */
162865
+{
162866
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
162867
+}
162868
+ yymsp[0].minor.yy626 = yylhsminor.yy626;
162869
+ break;
162870
+ case 193: /* expr ::= LP nexprlist COMMA expr RP */
162871
+{
162872
+ ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy562, yymsp[-1].minor.yy626);
162873
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
162874
+ if( yymsp[-4].minor.yy626 ){
162875
+ yymsp[-4].minor.yy626->x.pList = pList;
162556162876
if( ALWAYS(pList->nExpr) ){
162557
- yymsp[-4].minor.yy404->flags |= pList->a[0].pExpr->flags & EP_Propagate;
162877
+ yymsp[-4].minor.yy626->flags |= pList->a[0].pExpr->flags & EP_Propagate;
162558162878
}
162559162879
}else{
162560162880
sqlite3ExprListDelete(pParse->db, pList);
162561162881
}
162562162882
}
162563162883
break;
162564
- case 192: /* expr ::= expr AND expr */
162565
-{yymsp[-2].minor.yy404=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);}
162566
- break;
162567
- case 193: /* expr ::= expr OR expr */
162568
- case 194: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==194);
162569
- case 195: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==195);
162570
- case 196: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==196);
162571
- case 197: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==197);
162572
- case 198: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==198);
162573
- case 199: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==199);
162574
-{yymsp[-2].minor.yy404=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);}
162575
- break;
162576
- case 200: /* likeop ::= NOT LIKE_KW|MATCH */
162884
+ case 194: /* expr ::= expr AND expr */
162885
+{yymsp[-2].minor.yy626=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
162886
+ break;
162887
+ case 195: /* expr ::= expr OR expr */
162888
+ case 196: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==196);
162889
+ case 197: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==197);
162890
+ case 198: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==198);
162891
+ case 199: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==199);
162892
+ case 200: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==200);
162893
+ case 201: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==201);
162894
+{yymsp[-2].minor.yy626=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
162895
+ break;
162896
+ case 202: /* likeop ::= NOT LIKE_KW|MATCH */
162577162897
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
162578162898
break;
162579
- case 201: /* expr ::= expr likeop expr */
162899
+ case 203: /* expr ::= expr likeop expr */
162580162900
{
162581162901
ExprList *pList;
162582162902
int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
162583162903
yymsp[-1].minor.yy0.n &= 0x7fffffff;
162584
- pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy404);
162585
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy404);
162586
- yymsp[-2].minor.yy404 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
162587
- if( bNot ) yymsp[-2].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy404, 0);
162588
- if( yymsp[-2].minor.yy404 ) yymsp[-2].minor.yy404->flags |= EP_InfixFunc;
162904
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy626);
162905
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy626);
162906
+ yymsp[-2].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
162907
+ if( bNot ) yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy626, 0);
162908
+ if( yymsp[-2].minor.yy626 ) yymsp[-2].minor.yy626->flags |= EP_InfixFunc;
162589162909
}
162590162910
break;
162591
- case 202: /* expr ::= expr likeop expr ESCAPE expr */
162911
+ case 204: /* expr ::= expr likeop expr ESCAPE expr */
162592162912
{
162593162913
ExprList *pList;
162594162914
int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
162595162915
yymsp[-3].minor.yy0.n &= 0x7fffffff;
162596
- pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy404);
162597
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy404);
162598
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy404);
162599
- yymsp[-4].minor.yy404 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
162600
- if( bNot ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
162601
- if( yymsp[-4].minor.yy404 ) yymsp[-4].minor.yy404->flags |= EP_InfixFunc;
162602
-}
162603
- break;
162604
- case 203: /* expr ::= expr ISNULL|NOTNULL */
162605
-{yymsp[-1].minor.yy404 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy404,0);}
162606
- break;
162607
- case 204: /* expr ::= expr NOT NULL */
162608
-{yymsp[-2].minor.yy404 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy404,0);}
162609
- break;
162610
- case 205: /* expr ::= expr IS expr */
162611
-{
162612
- yymsp[-2].minor.yy404 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);
162613
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy404, yymsp[-2].minor.yy404, TK_ISNULL);
162614
-}
162615
- break;
162616
- case 206: /* expr ::= expr IS NOT expr */
162617
-{
162618
- yymsp[-3].minor.yy404 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy404,yymsp[0].minor.yy404);
162619
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy404, yymsp[-3].minor.yy404, TK_NOTNULL);
162620
-}
162621
- break;
162622
- case 207: /* expr ::= NOT expr */
162623
- case 208: /* expr ::= BITNOT expr */ yytestcase(yyruleno==208);
162624
-{yymsp[-1].minor.yy404 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy404, 0);/*A-overwrites-B*/}
162625
- break;
162626
- case 209: /* expr ::= PLUS|MINUS expr */
162627
-{
162628
- yymsp[-1].minor.yy404 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy404, 0);
162916
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
162917
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy626);
162918
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
162919
+ yymsp[-4].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
162920
+ if( bNot ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
162921
+ if( yymsp[-4].minor.yy626 ) yymsp[-4].minor.yy626->flags |= EP_InfixFunc;
162922
+}
162923
+ break;
162924
+ case 205: /* expr ::= expr ISNULL|NOTNULL */
162925
+{yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy626,0);}
162926
+ break;
162927
+ case 206: /* expr ::= expr NOT NULL */
162928
+{yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy626,0);}
162929
+ break;
162930
+ case 207: /* expr ::= expr IS expr */
162931
+{
162932
+ yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);
162933
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-2].minor.yy626, TK_ISNULL);
162934
+}
162935
+ break;
162936
+ case 208: /* expr ::= expr IS NOT expr */
162937
+{
162938
+ yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy626,yymsp[0].minor.yy626);
162939
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-3].minor.yy626, TK_NOTNULL);
162940
+}
162941
+ break;
162942
+ case 209: /* expr ::= NOT expr */
162943
+ case 210: /* expr ::= BITNOT expr */ yytestcase(yyruleno==210);
162944
+{yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy626, 0);/*A-overwrites-B*/}
162945
+ break;
162946
+ case 211: /* expr ::= PLUS|MINUS expr */
162947
+{
162948
+ yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy626, 0);
162629162949
/*A-overwrites-B*/
162630162950
}
162631162951
break;
162632
- case 210: /* between_op ::= BETWEEN */
162633
- case 213: /* in_op ::= IN */ yytestcase(yyruleno==213);
162634
-{yymsp[0].minor.yy376 = 0;}
162952
+ case 212: /* between_op ::= BETWEEN */
162953
+ case 215: /* in_op ::= IN */ yytestcase(yyruleno==215);
162954
+{yymsp[0].minor.yy64 = 0;}
162635162955
break;
162636
- case 212: /* expr ::= expr between_op expr AND expr */
162956
+ case 214: /* expr ::= expr between_op expr AND expr */
162637162957
{
162638
- ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy404);
162639
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy404);
162640
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy404, 0);
162641
- if( yymsp[-4].minor.yy404 ){
162642
- yymsp[-4].minor.yy404->x.pList = pList;
162958
+ ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
162959
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
162960
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy626, 0);
162961
+ if( yymsp[-4].minor.yy626 ){
162962
+ yymsp[-4].minor.yy626->x.pList = pList;
162643162963
}else{
162644162964
sqlite3ExprListDelete(pParse->db, pList);
162645162965
}
162646
- if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
162966
+ if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
162647162967
}
162648162968
break;
162649
- case 215: /* expr ::= expr in_op LP exprlist RP */
162969
+ case 217: /* expr ::= expr in_op LP exprlist RP */
162650162970
{
162651
- if( yymsp[-1].minor.yy70==0 ){
162971
+ if( yymsp[-1].minor.yy562==0 ){
162652162972
/* Expressions of the form
162653162973
**
162654162974
** expr1 IN ()
162655162975
** expr1 NOT IN ()
162656162976
**
162657162977
** simplify to constants 0 (false) and 1 (true), respectively,
162658162978
** regardless of the value of expr1.
162659162979
*/
162660
- sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy404);
162661
- yymsp[-4].minor.yy404 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy376 ? "1" : "0");
162980
+ sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy626);
162981
+ yymsp[-4].minor.yy626 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy64 ? "1" : "0");
162662162982
}else{
162663
- Expr *pRHS = yymsp[-1].minor.yy70->a[0].pExpr;
162664
- if( yymsp[-1].minor.yy70->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy404->op!=TK_VECTOR ){
162665
- yymsp[-1].minor.yy70->a[0].pExpr = 0;
162666
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy70);
162983
+ Expr *pRHS = yymsp[-1].minor.yy562->a[0].pExpr;
162984
+ if( yymsp[-1].minor.yy562->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy626->op!=TK_VECTOR ){
162985
+ yymsp[-1].minor.yy562->a[0].pExpr = 0;
162986
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
162667162987
pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
162668
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy404, pRHS);
162988
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy626, pRHS);
162669162989
}else{
162670
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy404, 0);
162671
- if( yymsp[-4].minor.yy404==0 ){
162672
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy70);
162673
- }else if( yymsp[-4].minor.yy404->pLeft->op==TK_VECTOR ){
162674
- int nExpr = yymsp[-4].minor.yy404->pLeft->x.pList->nExpr;
162675
- Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy70);
162990
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
162991
+ if( yymsp[-4].minor.yy626==0 ){
162992
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
162993
+ }else if( yymsp[-4].minor.yy626->pLeft->op==TK_VECTOR ){
162994
+ int nExpr = yymsp[-4].minor.yy626->pLeft->x.pList->nExpr;
162995
+ Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy562);
162676162996
if( pSelectRHS ){
162677162997
parserDoubleLinkSelect(pParse, pSelectRHS);
162678
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy404, pSelectRHS);
162679
- }
162680
- }else{
162681
- yymsp[-4].minor.yy404->x.pList = yymsp[-1].minor.yy70;
162682
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy404);
162683
- }
162684
- }
162685
- if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
162686
- }
162687
- }
162688
- break;
162689
- case 216: /* expr ::= LP select RP */
162690
-{
162691
- yymsp[-2].minor.yy404 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
162692
- sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy404, yymsp[-1].minor.yy81);
162693
- }
162694
- break;
162695
- case 217: /* expr ::= expr in_op LP select RP */
162696
-{
162697
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy404, 0);
162698
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy404, yymsp[-1].minor.yy81);
162699
- if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
162700
- }
162701
- break;
162702
- case 218: /* expr ::= expr in_op nm dbnm paren_exprlist */
162998
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelectRHS);
162999
+ }
163000
+ }else{
163001
+ yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy562;
163002
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
163003
+ }
163004
+ }
163005
+ if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
163006
+ }
163007
+ }
163008
+ break;
163009
+ case 218: /* expr ::= LP select RP */
163010
+{
163011
+ yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
163012
+ sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy626, yymsp[-1].minor.yy303);
163013
+ }
163014
+ break;
163015
+ case 219: /* expr ::= expr in_op LP select RP */
163016
+{
163017
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
163018
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, yymsp[-1].minor.yy303);
163019
+ if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
163020
+ }
163021
+ break;
163022
+ case 220: /* expr ::= expr in_op nm dbnm paren_exprlist */
162703163023
{
162704163024
SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
162705163025
Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
162706
- if( yymsp[0].minor.yy70 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy70);
162707
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy404, 0);
162708
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy404, pSelect);
162709
- if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
163026
+ if( yymsp[0].minor.yy562 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy562);
163027
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
163028
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelect);
163029
+ if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
162710163030
}
162711163031
break;
162712
- case 219: /* expr ::= EXISTS LP select RP */
163032
+ case 221: /* expr ::= EXISTS LP select RP */
162713163033
{
162714163034
Expr *p;
162715
- p = yymsp[-3].minor.yy404 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
162716
- sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy81);
162717
- }
162718
- break;
162719
- case 220: /* expr ::= CASE case_operand case_exprlist case_else END */
162720
-{
162721
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy404, 0);
162722
- if( yymsp[-4].minor.yy404 ){
162723
- yymsp[-4].minor.yy404->x.pList = yymsp[-1].minor.yy404 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy70,yymsp[-1].minor.yy404) : yymsp[-2].minor.yy70;
162724
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy404);
162725
- }else{
162726
- sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy70);
162727
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy404);
162728
- }
162729
-}
162730
- break;
162731
- case 221: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
162732
-{
162733
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70, yymsp[-2].minor.yy404);
162734
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70, yymsp[0].minor.yy404);
162735
-}
162736
- break;
162737
- case 222: /* case_exprlist ::= WHEN expr THEN expr */
162738
-{
162739
- yymsp[-3].minor.yy70 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy404);
162740
- yymsp[-3].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy70, yymsp[0].minor.yy404);
162741
-}
162742
- break;
162743
- case 225: /* case_operand ::= expr */
162744
-{yymsp[0].minor.yy404 = yymsp[0].minor.yy404; /*A-overwrites-X*/}
162745
- break;
162746
- case 228: /* nexprlist ::= nexprlist COMMA expr */
162747
-{yymsp[-2].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy70,yymsp[0].minor.yy404);}
162748
- break;
162749
- case 229: /* nexprlist ::= expr */
162750
-{yymsp[0].minor.yy70 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy404); /*A-overwrites-Y*/}
162751
- break;
162752
- case 231: /* paren_exprlist ::= LP exprlist RP */
162753
- case 236: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==236);
162754
-{yymsp[-2].minor.yy70 = yymsp[-1].minor.yy70;}
162755
- break;
162756
- case 232: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163035
+ p = yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
163036
+ sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy303);
163037
+ }
163038
+ break;
163039
+ case 222: /* expr ::= CASE case_operand case_exprlist case_else END */
163040
+{
163041
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy626, 0);
163042
+ if( yymsp[-4].minor.yy626 ){
163043
+ yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy626 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626) : yymsp[-2].minor.yy562;
163044
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
163045
+ }else{
163046
+ sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy562);
163047
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
163048
+ }
163049
+}
163050
+ break;
163051
+ case 223: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
163052
+{
163053
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
163054
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
163055
+}
163056
+ break;
163057
+ case 224: /* case_exprlist ::= WHEN expr THEN expr */
163058
+{
163059
+ yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
163060
+ yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy562, yymsp[0].minor.yy626);
163061
+}
163062
+ break;
163063
+ case 227: /* case_operand ::= expr */
163064
+{yymsp[0].minor.yy626 = yymsp[0].minor.yy626; /*A-overwrites-X*/}
163065
+ break;
163066
+ case 230: /* nexprlist ::= nexprlist COMMA expr */
163067
+{yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[0].minor.yy626);}
163068
+ break;
163069
+ case 231: /* nexprlist ::= expr */
163070
+{yymsp[0].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy626); /*A-overwrites-Y*/}
163071
+ break;
163072
+ case 233: /* paren_exprlist ::= LP exprlist RP */
163073
+ case 238: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==238);
163074
+{yymsp[-2].minor.yy562 = yymsp[-1].minor.yy562;}
163075
+ break;
163076
+ case 234: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
162757163077
{
162758163078
sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
162759
- sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy70, yymsp[-10].minor.yy376,
162760
- &yymsp[-11].minor.yy0, yymsp[0].minor.yy404, SQLITE_SO_ASC, yymsp[-8].minor.yy376, SQLITE_IDXTYPE_APPDEF);
163079
+ sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy562, yymsp[-10].minor.yy64,
163080
+ &yymsp[-11].minor.yy0, yymsp[0].minor.yy626, SQLITE_SO_ASC, yymsp[-8].minor.yy64, SQLITE_IDXTYPE_APPDEF);
162761163081
if( IN_RENAME_OBJECT && pParse->pNewIndex ){
162762163082
sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
162763163083
}
162764163084
}
162765163085
break;
162766
- case 233: /* uniqueflag ::= UNIQUE */
162767
- case 275: /* raisetype ::= ABORT */ yytestcase(yyruleno==275);
162768
-{yymsp[0].minor.yy376 = OE_Abort;}
162769
- break;
162770
- case 234: /* uniqueflag ::= */
162771
-{yymsp[1].minor.yy376 = OE_None;}
162772
- break;
162773
- case 237: /* eidlist ::= eidlist COMMA nm collate sortorder */
162774
-{
162775
- yymsp[-4].minor.yy70 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy70, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy376, yymsp[0].minor.yy376);
162776
-}
162777
- break;
162778
- case 238: /* eidlist ::= nm collate sortorder */
162779
-{
162780
- yymsp[-2].minor.yy70 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy376, yymsp[0].minor.yy376); /*A-overwrites-Y*/
162781
-}
162782
- break;
162783
- case 241: /* cmd ::= DROP INDEX ifexists fullname */
162784
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy153, yymsp[-1].minor.yy376);}
162785
- break;
162786
- case 242: /* cmd ::= VACUUM vinto */
162787
-{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy404);}
162788
- break;
162789
- case 243: /* cmd ::= VACUUM nm vinto */
162790
-{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy404);}
162791
- break;
162792
- case 246: /* cmd ::= PRAGMA nm dbnm */
163086
+ case 235: /* uniqueflag ::= UNIQUE */
163087
+ case 277: /* raisetype ::= ABORT */ yytestcase(yyruleno==277);
163088
+{yymsp[0].minor.yy64 = OE_Abort;}
163089
+ break;
163090
+ case 236: /* uniqueflag ::= */
163091
+{yymsp[1].minor.yy64 = OE_None;}
163092
+ break;
163093
+ case 239: /* eidlist ::= eidlist COMMA nm collate sortorder */
163094
+{
163095
+ yymsp[-4].minor.yy562 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64);
163096
+}
163097
+ break;
163098
+ case 240: /* eidlist ::= nm collate sortorder */
163099
+{
163100
+ yymsp[-2].minor.yy562 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64); /*A-overwrites-Y*/
163101
+}
163102
+ break;
163103
+ case 243: /* cmd ::= DROP INDEX ifexists fullname */
163104
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy607, yymsp[-1].minor.yy64);}
163105
+ break;
163106
+ case 244: /* cmd ::= VACUUM vinto */
163107
+{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy626);}
163108
+ break;
163109
+ case 245: /* cmd ::= VACUUM nm vinto */
163110
+{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy626);}
163111
+ break;
163112
+ case 248: /* cmd ::= PRAGMA nm dbnm */
162793163113
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
162794163114
break;
162795
- case 247: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
163115
+ case 249: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
162796163116
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
162797163117
break;
162798
- case 248: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
163118
+ case 250: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
162799163119
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
162800163120
break;
162801
- case 249: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
163121
+ case 251: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
162802163122
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
162803163123
break;
162804
- case 250: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
163124
+ case 252: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
162805163125
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
162806163126
break;
162807
- case 253: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163127
+ case 255: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
162808163128
{
162809163129
Token all;
162810163130
all.z = yymsp[-3].minor.yy0.z;
162811163131
all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
162812
- sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy157, &all);
163132
+ sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy95, &all);
162813163133
}
162814163134
break;
162815
- case 254: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163135
+ case 256: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
162816163136
{
162817
- sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy376, yymsp[-4].minor.yy262.a, yymsp[-4].minor.yy262.b, yymsp[-2].minor.yy153, yymsp[0].minor.yy404, yymsp[-10].minor.yy376, yymsp[-8].minor.yy376);
163137
+ 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);
162818163138
yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
162819163139
}
162820163140
break;
162821
- case 255: /* trigger_time ::= BEFORE|AFTER */
162822
-{ yymsp[0].minor.yy376 = yymsp[0].major; /*A-overwrites-X*/ }
162823
- break;
162824
- case 256: /* trigger_time ::= INSTEAD OF */
162825
-{ yymsp[-1].minor.yy376 = TK_INSTEAD;}
162826
- break;
162827
- case 257: /* trigger_time ::= */
162828
-{ yymsp[1].minor.yy376 = TK_BEFORE; }
162829
- break;
162830
- case 258: /* trigger_event ::= DELETE|INSERT */
162831
- case 259: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==259);
162832
-{yymsp[0].minor.yy262.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy262.b = 0;}
162833
- break;
162834
- case 260: /* trigger_event ::= UPDATE OF idlist */
162835
-{yymsp[-2].minor.yy262.a = TK_UPDATE; yymsp[-2].minor.yy262.b = yymsp[0].minor.yy436;}
162836
- break;
162837
- case 261: /* when_clause ::= */
162838
- case 280: /* key_opt ::= */ yytestcase(yyruleno==280);
162839
-{ yymsp[1].minor.yy404 = 0; }
162840
- break;
162841
- case 262: /* when_clause ::= WHEN expr */
162842
- case 281: /* key_opt ::= KEY expr */ yytestcase(yyruleno==281);
162843
-{ yymsp[-1].minor.yy404 = yymsp[0].minor.yy404; }
162844
- break;
162845
- case 263: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
162846
-{
162847
- assert( yymsp[-2].minor.yy157!=0 );
162848
- yymsp[-2].minor.yy157->pLast->pNext = yymsp[-1].minor.yy157;
162849
- yymsp[-2].minor.yy157->pLast = yymsp[-1].minor.yy157;
162850
-}
162851
- break;
162852
- case 264: /* trigger_cmd_list ::= trigger_cmd SEMI */
162853
-{
162854
- assert( yymsp[-1].minor.yy157!=0 );
162855
- yymsp[-1].minor.yy157->pLast = yymsp[-1].minor.yy157;
162856
-}
162857
- break;
162858
- case 265: /* trnm ::= nm DOT nm */
163141
+ case 257: /* trigger_time ::= BEFORE|AFTER */
163142
+{ yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/ }
163143
+ break;
163144
+ case 258: /* trigger_time ::= INSTEAD OF */
163145
+{ yymsp[-1].minor.yy64 = TK_INSTEAD;}
163146
+ break;
163147
+ case 259: /* trigger_time ::= */
163148
+{ yymsp[1].minor.yy64 = TK_BEFORE; }
163149
+ break;
163150
+ case 260: /* trigger_event ::= DELETE|INSERT */
163151
+ case 261: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==261);
163152
+{yymsp[0].minor.yy570.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy570.b = 0;}
163153
+ break;
163154
+ case 262: /* trigger_event ::= UPDATE OF idlist */
163155
+{yymsp[-2].minor.yy570.a = TK_UPDATE; yymsp[-2].minor.yy570.b = yymsp[0].minor.yy240;}
163156
+ break;
163157
+ case 263: /* when_clause ::= */
163158
+ case 282: /* key_opt ::= */ yytestcase(yyruleno==282);
163159
+{ yymsp[1].minor.yy626 = 0; }
163160
+ break;
163161
+ case 264: /* when_clause ::= WHEN expr */
163162
+ case 283: /* key_opt ::= KEY expr */ yytestcase(yyruleno==283);
163163
+{ yymsp[-1].minor.yy626 = yymsp[0].minor.yy626; }
163164
+ break;
163165
+ case 265: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163166
+{
163167
+ assert( yymsp[-2].minor.yy95!=0 );
163168
+ yymsp[-2].minor.yy95->pLast->pNext = yymsp[-1].minor.yy95;
163169
+ yymsp[-2].minor.yy95->pLast = yymsp[-1].minor.yy95;
163170
+}
163171
+ break;
163172
+ case 266: /* trigger_cmd_list ::= trigger_cmd SEMI */
163173
+{
163174
+ assert( yymsp[-1].minor.yy95!=0 );
163175
+ yymsp[-1].minor.yy95->pLast = yymsp[-1].minor.yy95;
163176
+}
163177
+ break;
163178
+ case 267: /* trnm ::= nm DOT nm */
162859163179
{
162860163180
yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
162861163181
sqlite3ErrorMsg(pParse,
162862163182
"qualified table names are not allowed on INSERT, UPDATE, and DELETE "
162863163183
"statements within triggers");
162864163184
}
162865163185
break;
162866
- case 266: /* tridxby ::= INDEXED BY nm */
163186
+ case 268: /* tridxby ::= INDEXED BY nm */
162867163187
{
162868163188
sqlite3ErrorMsg(pParse,
162869163189
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
162870163190
"within triggers");
162871163191
}
162872163192
break;
162873
- case 267: /* tridxby ::= NOT INDEXED */
163193
+ case 269: /* tridxby ::= NOT INDEXED */
162874163194
{
162875163195
sqlite3ErrorMsg(pParse,
162876163196
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
162877163197
"within triggers");
162878163198
}
162879163199
break;
162880
- case 268: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
162881
-{yylhsminor.yy157 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy153, yymsp[-3].minor.yy70, yymsp[-1].minor.yy404, yymsp[-7].minor.yy376, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy504);}
162882
- yymsp[-8].minor.yy157 = yylhsminor.yy157;
162883
- break;
162884
- case 269: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
162885
-{
162886
- yylhsminor.yy157 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy436,yymsp[-2].minor.yy81,yymsp[-6].minor.yy376,yymsp[-1].minor.yy190,yymsp[-7].minor.yy504,yymsp[0].minor.yy504);/*yylhsminor.yy157-overwrites-yymsp[-6].minor.yy376*/
162887
-}
162888
- yymsp[-7].minor.yy157 = yylhsminor.yy157;
162889
- break;
162890
- case 270: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
162891
-{yylhsminor.yy157 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy404, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy504);}
162892
- yymsp[-5].minor.yy157 = yylhsminor.yy157;
162893
- break;
162894
- case 271: /* trigger_cmd ::= scanpt select scanpt */
162895
-{yylhsminor.yy157 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy81, yymsp[-2].minor.yy504, yymsp[0].minor.yy504); /*yylhsminor.yy157-overwrites-yymsp[-1].minor.yy81*/}
162896
- yymsp[-2].minor.yy157 = yylhsminor.yy157;
162897
- break;
162898
- case 272: /* expr ::= RAISE LP IGNORE RP */
162899
-{
162900
- yymsp[-3].minor.yy404 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
162901
- if( yymsp[-3].minor.yy404 ){
162902
- yymsp[-3].minor.yy404->affExpr = OE_Ignore;
162903
- }
162904
-}
162905
- break;
162906
- case 273: /* expr ::= RAISE LP raisetype COMMA nm RP */
162907
-{
162908
- yymsp[-5].minor.yy404 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
162909
- if( yymsp[-5].minor.yy404 ) {
162910
- yymsp[-5].minor.yy404->affExpr = (char)yymsp[-3].minor.yy376;
162911
- }
162912
-}
162913
- break;
162914
- case 274: /* raisetype ::= ROLLBACK */
162915
-{yymsp[0].minor.yy376 = OE_Rollback;}
162916
- break;
162917
- case 276: /* raisetype ::= FAIL */
162918
-{yymsp[0].minor.yy376 = OE_Fail;}
162919
- break;
162920
- case 277: /* cmd ::= DROP TRIGGER ifexists fullname */
162921
-{
162922
- sqlite3DropTrigger(pParse,yymsp[0].minor.yy153,yymsp[-1].minor.yy376);
162923
-}
162924
- break;
162925
- case 278: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
162926
-{
162927
- sqlite3Attach(pParse, yymsp[-3].minor.yy404, yymsp[-1].minor.yy404, yymsp[0].minor.yy404);
162928
-}
162929
- break;
162930
- case 279: /* cmd ::= DETACH database_kw_opt expr */
162931
-{
162932
- sqlite3Detach(pParse, yymsp[0].minor.yy404);
162933
-}
162934
- break;
162935
- case 282: /* cmd ::= REINDEX */
163200
+ case 270: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163201
+{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);}
163202
+ yymsp[-8].minor.yy95 = yylhsminor.yy95;
163203
+ break;
163204
+ case 271: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163205
+{
163206
+ 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*/
163207
+}
163208
+ yymsp[-7].minor.yy95 = yylhsminor.yy95;
163209
+ break;
163210
+ case 272: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163211
+{yylhsminor.yy95 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy626, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy600);}
163212
+ yymsp[-5].minor.yy95 = yylhsminor.yy95;
163213
+ break;
163214
+ case 273: /* trigger_cmd ::= scanpt select scanpt */
163215
+{yylhsminor.yy95 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy303, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); /*yylhsminor.yy95-overwrites-yymsp[-1].minor.yy303*/}
163216
+ yymsp[-2].minor.yy95 = yylhsminor.yy95;
163217
+ break;
163218
+ case 274: /* expr ::= RAISE LP IGNORE RP */
163219
+{
163220
+ yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
163221
+ if( yymsp[-3].minor.yy626 ){
163222
+ yymsp[-3].minor.yy626->affExpr = OE_Ignore;
163223
+ }
163224
+}
163225
+ break;
163226
+ case 275: /* expr ::= RAISE LP raisetype COMMA nm RP */
163227
+{
163228
+ yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
163229
+ if( yymsp[-5].minor.yy626 ) {
163230
+ yymsp[-5].minor.yy626->affExpr = (char)yymsp[-3].minor.yy64;
163231
+ }
163232
+}
163233
+ break;
163234
+ case 276: /* raisetype ::= ROLLBACK */
163235
+{yymsp[0].minor.yy64 = OE_Rollback;}
163236
+ break;
163237
+ case 278: /* raisetype ::= FAIL */
163238
+{yymsp[0].minor.yy64 = OE_Fail;}
163239
+ break;
163240
+ case 279: /* cmd ::= DROP TRIGGER ifexists fullname */
163241
+{
163242
+ sqlite3DropTrigger(pParse,yymsp[0].minor.yy607,yymsp[-1].minor.yy64);
163243
+}
163244
+ break;
163245
+ case 280: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163246
+{
163247
+ sqlite3Attach(pParse, yymsp[-3].minor.yy626, yymsp[-1].minor.yy626, yymsp[0].minor.yy626);
163248
+}
163249
+ break;
163250
+ case 281: /* cmd ::= DETACH database_kw_opt expr */
163251
+{
163252
+ sqlite3Detach(pParse, yymsp[0].minor.yy626);
163253
+}
163254
+ break;
163255
+ case 284: /* cmd ::= REINDEX */
162936163256
{sqlite3Reindex(pParse, 0, 0);}
162937163257
break;
162938
- case 283: /* cmd ::= REINDEX nm dbnm */
163258
+ case 285: /* cmd ::= REINDEX nm dbnm */
162939163259
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
162940163260
break;
162941
- case 284: /* cmd ::= ANALYZE */
163261
+ case 286: /* cmd ::= ANALYZE */
162942163262
{sqlite3Analyze(pParse, 0, 0);}
162943163263
break;
162944
- case 285: /* cmd ::= ANALYZE nm dbnm */
163264
+ case 287: /* cmd ::= ANALYZE nm dbnm */
162945163265
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
162946163266
break;
162947
- case 286: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
163267
+ case 288: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
162948163268
{
162949
- sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy153,&yymsp[0].minor.yy0);
163269
+ sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy607,&yymsp[0].minor.yy0);
162950163270
}
162951163271
break;
162952
- case 287: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163272
+ case 289: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
162953163273
{
162954163274
yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
162955163275
sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
162956163276
}
162957163277
break;
162958
- case 288: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163278
+ case 290: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
162959163279
{
162960
- sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy153, &yymsp[0].minor.yy0);
163280
+ sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy607, &yymsp[0].minor.yy0);
162961163281
}
162962163282
break;
162963
- case 289: /* add_column_fullname ::= fullname */
163283
+ case 291: /* add_column_fullname ::= fullname */
162964163284
{
162965163285
disableLookaside(pParse);
162966
- sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy153);
162967
-}
162968
- break;
162969
- case 290: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
162970
-{
162971
- sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy153, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
162972
-}
162973
- break;
162974
- case 291: /* cmd ::= create_vtab */
163286
+ sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy607);
163287
+}
163288
+ break;
163289
+ case 292: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163290
+{
163291
+ sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy607, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
163292
+}
163293
+ break;
163294
+ case 293: /* cmd ::= create_vtab */
162975163295
{sqlite3VtabFinishParse(pParse,0);}
162976163296
break;
162977
- case 292: /* cmd ::= create_vtab LP vtabarglist RP */
163297
+ case 294: /* cmd ::= create_vtab LP vtabarglist RP */
162978163298
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
162979163299
break;
162980
- case 293: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163300
+ case 295: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
162981163301
{
162982
- sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy376);
163302
+ sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy64);
162983163303
}
162984163304
break;
162985
- case 294: /* vtabarg ::= */
163305
+ case 296: /* vtabarg ::= */
162986163306
{sqlite3VtabArgInit(pParse);}
162987163307
break;
162988
- case 295: /* vtabargtoken ::= ANY */
162989
- case 296: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==296);
162990
- case 297: /* lp ::= LP */ yytestcase(yyruleno==297);
163308
+ case 297: /* vtabargtoken ::= ANY */
163309
+ case 298: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==298);
163310
+ case 299: /* lp ::= LP */ yytestcase(yyruleno==299);
162991163311
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
162992163312
break;
162993
- case 298: /* with ::= WITH wqlist */
162994
- case 299: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==299);
162995
-{ sqlite3WithPush(pParse, yymsp[0].minor.yy103, 1); }
162996
- break;
162997
- case 300: /* wqas ::= AS */
162998
-{yymsp[0].minor.yy552 = M10d_Any;}
162999
- break;
163000
- case 301: /* wqas ::= AS MATERIALIZED */
163001
-{yymsp[-1].minor.yy552 = M10d_Yes;}
163002
- break;
163003
- case 302: /* wqas ::= AS NOT MATERIALIZED */
163004
-{yymsp[-2].minor.yy552 = M10d_No;}
163005
- break;
163006
- case 303: /* wqitem ::= nm eidlist_opt wqas LP select RP */
163007
-{
163008
- yymsp[-5].minor.yy329 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy70, yymsp[-1].minor.yy81, yymsp[-3].minor.yy552); /*A-overwrites-X*/
163009
-}
163010
- break;
163011
- case 304: /* wqlist ::= wqitem */
163012
-{
163013
- yymsp[0].minor.yy103 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy329); /*A-overwrites-X*/
163014
-}
163015
- break;
163016
- case 305: /* wqlist ::= wqlist COMMA wqitem */
163017
-{
163018
- yymsp[-2].minor.yy103 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy103, yymsp[0].minor.yy329);
163019
-}
163020
- break;
163021
- case 306: /* windowdefn_list ::= windowdefn */
163022
-{ yylhsminor.yy49 = yymsp[0].minor.yy49; }
163023
- yymsp[0].minor.yy49 = yylhsminor.yy49;
163024
- break;
163025
- case 307: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
163026
-{
163027
- assert( yymsp[0].minor.yy49!=0 );
163028
- sqlite3WindowChain(pParse, yymsp[0].minor.yy49, yymsp[-2].minor.yy49);
163029
- yymsp[0].minor.yy49->pNextWin = yymsp[-2].minor.yy49;
163030
- yylhsminor.yy49 = yymsp[0].minor.yy49;
163031
-}
163032
- yymsp[-2].minor.yy49 = yylhsminor.yy49;
163033
- break;
163034
- case 308: /* windowdefn ::= nm AS LP window RP */
163035
-{
163036
- if( ALWAYS(yymsp[-1].minor.yy49) ){
163037
- yymsp[-1].minor.yy49->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
163038
- }
163039
- yylhsminor.yy49 = yymsp[-1].minor.yy49;
163040
-}
163041
- yymsp[-4].minor.yy49 = yylhsminor.yy49;
163042
- break;
163043
- case 309: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163044
-{
163045
- yymsp[-4].minor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, yymsp[-2].minor.yy70, yymsp[-1].minor.yy70, 0);
163046
-}
163047
- break;
163048
- case 310: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163049
-{
163050
- yylhsminor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, yymsp[-2].minor.yy70, yymsp[-1].minor.yy70, &yymsp[-5].minor.yy0);
163051
-}
163052
- yymsp[-5].minor.yy49 = yylhsminor.yy49;
163053
- break;
163054
- case 311: /* window ::= ORDER BY sortlist frame_opt */
163055
-{
163056
- yymsp[-3].minor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, 0, yymsp[-1].minor.yy70, 0);
163057
-}
163058
- break;
163059
- case 312: /* window ::= nm ORDER BY sortlist frame_opt */
163060
-{
163061
- yylhsminor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, 0, yymsp[-1].minor.yy70, &yymsp[-4].minor.yy0);
163062
-}
163063
- yymsp[-4].minor.yy49 = yylhsminor.yy49;
163064
- break;
163065
- case 313: /* window ::= frame_opt */
163066
- case 332: /* filter_over ::= over_clause */ yytestcase(yyruleno==332);
163067
-{
163068
- yylhsminor.yy49 = yymsp[0].minor.yy49;
163069
-}
163070
- yymsp[0].minor.yy49 = yylhsminor.yy49;
163071
- break;
163072
- case 314: /* window ::= nm frame_opt */
163073
-{
163074
- yylhsminor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, 0, 0, &yymsp[-1].minor.yy0);
163075
-}
163076
- yymsp[-1].minor.yy49 = yylhsminor.yy49;
163077
- break;
163078
- case 315: /* frame_opt ::= */
163079
-{
163080
- yymsp[1].minor.yy49 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
163081
-}
163082
- break;
163083
- case 316: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163084
-{
163085
- yylhsminor.yy49 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy376, yymsp[-1].minor.yy117.eType, yymsp[-1].minor.yy117.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy552);
163086
-}
163087
- yymsp[-2].minor.yy49 = yylhsminor.yy49;
163088
- break;
163089
- case 317: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163090
-{
163091
- yylhsminor.yy49 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy376, yymsp[-3].minor.yy117.eType, yymsp[-3].minor.yy117.pExpr, yymsp[-1].minor.yy117.eType, yymsp[-1].minor.yy117.pExpr, yymsp[0].minor.yy552);
163092
-}
163093
- yymsp[-5].minor.yy49 = yylhsminor.yy49;
163094
- break;
163095
- case 319: /* frame_bound_s ::= frame_bound */
163096
- case 321: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==321);
163097
-{yylhsminor.yy117 = yymsp[0].minor.yy117;}
163098
- yymsp[0].minor.yy117 = yylhsminor.yy117;
163099
- break;
163100
- case 320: /* frame_bound_s ::= UNBOUNDED PRECEDING */
163101
- case 322: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==322);
163102
- case 324: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==324);
163103
-{yylhsminor.yy117.eType = yymsp[-1].major; yylhsminor.yy117.pExpr = 0;}
163104
- yymsp[-1].minor.yy117 = yylhsminor.yy117;
163105
- break;
163106
- case 323: /* frame_bound ::= expr PRECEDING|FOLLOWING */
163107
-{yylhsminor.yy117.eType = yymsp[0].major; yylhsminor.yy117.pExpr = yymsp[-1].minor.yy404;}
163108
- yymsp[-1].minor.yy117 = yylhsminor.yy117;
163109
- break;
163110
- case 325: /* frame_exclude_opt ::= */
163111
-{yymsp[1].minor.yy552 = 0;}
163112
- break;
163113
- case 326: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
163114
-{yymsp[-1].minor.yy552 = yymsp[0].minor.yy552;}
163115
- break;
163116
- case 327: /* frame_exclude ::= NO OTHERS */
163117
- case 328: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==328);
163118
-{yymsp[-1].minor.yy552 = yymsp[-1].major; /*A-overwrites-X*/}
163119
- break;
163120
- case 329: /* frame_exclude ::= GROUP|TIES */
163121
-{yymsp[0].minor.yy552 = yymsp[0].major; /*A-overwrites-X*/}
163122
- break;
163123
- case 330: /* window_clause ::= WINDOW windowdefn_list */
163124
-{ yymsp[-1].minor.yy49 = yymsp[0].minor.yy49; }
163125
- break;
163126
- case 331: /* filter_over ::= filter_clause over_clause */
163127
-{
163128
- if( yymsp[0].minor.yy49 ){
163129
- yymsp[0].minor.yy49->pFilter = yymsp[-1].minor.yy404;
163130
- }else{
163131
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy404);
163132
- }
163133
- yylhsminor.yy49 = yymsp[0].minor.yy49;
163134
-}
163135
- yymsp[-1].minor.yy49 = yylhsminor.yy49;
163136
- break;
163137
- case 333: /* filter_over ::= filter_clause */
163138
-{
163139
- yylhsminor.yy49 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
163140
- if( yylhsminor.yy49 ){
163141
- yylhsminor.yy49->eFrmType = TK_FILTER;
163142
- yylhsminor.yy49->pFilter = yymsp[0].minor.yy404;
163143
- }else{
163144
- sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy404);
163145
- }
163146
-}
163147
- yymsp[0].minor.yy49 = yylhsminor.yy49;
163148
- break;
163149
- case 334: /* over_clause ::= OVER LP window RP */
163150
-{
163151
- yymsp[-3].minor.yy49 = yymsp[-1].minor.yy49;
163152
- assert( yymsp[-3].minor.yy49!=0 );
163153
-}
163154
- break;
163155
- case 335: /* over_clause ::= OVER nm */
163156
-{
163157
- yymsp[-1].minor.yy49 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
163158
- if( yymsp[-1].minor.yy49 ){
163159
- yymsp[-1].minor.yy49->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
163160
- }
163161
-}
163162
- break;
163163
- case 336: /* filter_clause ::= FILTER LP WHERE expr RP */
163164
-{ yymsp[-4].minor.yy404 = yymsp[-1].minor.yy404; }
163313
+ case 300: /* with ::= WITH wqlist */
163314
+ case 301: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==301);
163315
+{ sqlite3WithPush(pParse, yymsp[0].minor.yy43, 1); }
163316
+ break;
163317
+ case 302: /* wqas ::= AS */
163318
+{yymsp[0].minor.yy534 = M10d_Any;}
163319
+ break;
163320
+ case 303: /* wqas ::= AS MATERIALIZED */
163321
+{yymsp[-1].minor.yy534 = M10d_Yes;}
163322
+ break;
163323
+ case 304: /* wqas ::= AS NOT MATERIALIZED */
163324
+{yymsp[-2].minor.yy534 = M10d_No;}
163325
+ break;
163326
+ case 305: /* wqitem ::= nm eidlist_opt wqas LP select RP */
163327
+{
163328
+ 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*/
163329
+}
163330
+ break;
163331
+ case 306: /* wqlist ::= wqitem */
163332
+{
163333
+ yymsp[0].minor.yy43 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy255); /*A-overwrites-X*/
163334
+}
163335
+ break;
163336
+ case 307: /* wqlist ::= wqlist COMMA wqitem */
163337
+{
163338
+ yymsp[-2].minor.yy43 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy43, yymsp[0].minor.yy255);
163339
+}
163340
+ break;
163341
+ case 308: /* windowdefn_list ::= windowdefn */
163342
+{ yylhsminor.yy375 = yymsp[0].minor.yy375; }
163343
+ yymsp[0].minor.yy375 = yylhsminor.yy375;
163344
+ break;
163345
+ case 309: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
163346
+{
163347
+ assert( yymsp[0].minor.yy375!=0 );
163348
+ sqlite3WindowChain(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy375);
163349
+ yymsp[0].minor.yy375->pNextWin = yymsp[-2].minor.yy375;
163350
+ yylhsminor.yy375 = yymsp[0].minor.yy375;
163351
+}
163352
+ yymsp[-2].minor.yy375 = yylhsminor.yy375;
163353
+ break;
163354
+ case 310: /* windowdefn ::= nm AS LP window RP */
163355
+{
163356
+ if( ALWAYS(yymsp[-1].minor.yy375) ){
163357
+ yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
163358
+ }
163359
+ yylhsminor.yy375 = yymsp[-1].minor.yy375;
163360
+}
163361
+ yymsp[-4].minor.yy375 = yylhsminor.yy375;
163362
+ break;
163363
+ case 311: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163364
+{
163365
+ yymsp[-4].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, 0);
163366
+}
163367
+ break;
163368
+ case 312: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163369
+{
163370
+ yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, &yymsp[-5].minor.yy0);
163371
+}
163372
+ yymsp[-5].minor.yy375 = yylhsminor.yy375;
163373
+ break;
163374
+ case 313: /* window ::= ORDER BY sortlist frame_opt */
163375
+{
163376
+ yymsp[-3].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, 0);
163377
+}
163378
+ break;
163379
+ case 314: /* window ::= nm ORDER BY sortlist frame_opt */
163380
+{
163381
+ yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0);
163382
+}
163383
+ yymsp[-4].minor.yy375 = yylhsminor.yy375;
163384
+ break;
163385
+ case 315: /* window ::= frame_opt */
163386
+ case 334: /* filter_over ::= over_clause */ yytestcase(yyruleno==334);
163387
+{
163388
+ yylhsminor.yy375 = yymsp[0].minor.yy375;
163389
+}
163390
+ yymsp[0].minor.yy375 = yylhsminor.yy375;
163391
+ break;
163392
+ case 316: /* window ::= nm frame_opt */
163393
+{
163394
+ yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, 0, &yymsp[-1].minor.yy0);
163395
+}
163396
+ yymsp[-1].minor.yy375 = yylhsminor.yy375;
163397
+ break;
163398
+ case 317: /* frame_opt ::= */
163399
+{
163400
+ yymsp[1].minor.yy375 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
163401
+}
163402
+ break;
163403
+ case 318: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163404
+{
163405
+ 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);
163406
+}
163407
+ yymsp[-2].minor.yy375 = yylhsminor.yy375;
163408
+ break;
163409
+ case 319: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163410
+{
163411
+ 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);
163412
+}
163413
+ yymsp[-5].minor.yy375 = yylhsminor.yy375;
163414
+ break;
163415
+ case 321: /* frame_bound_s ::= frame_bound */
163416
+ case 323: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==323);
163417
+{yylhsminor.yy81 = yymsp[0].minor.yy81;}
163418
+ yymsp[0].minor.yy81 = yylhsminor.yy81;
163419
+ break;
163420
+ case 322: /* frame_bound_s ::= UNBOUNDED PRECEDING */
163421
+ case 324: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==324);
163422
+ case 326: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==326);
163423
+{yylhsminor.yy81.eType = yymsp[-1].major; yylhsminor.yy81.pExpr = 0;}
163424
+ yymsp[-1].minor.yy81 = yylhsminor.yy81;
163425
+ break;
163426
+ case 325: /* frame_bound ::= expr PRECEDING|FOLLOWING */
163427
+{yylhsminor.yy81.eType = yymsp[0].major; yylhsminor.yy81.pExpr = yymsp[-1].minor.yy626;}
163428
+ yymsp[-1].minor.yy81 = yylhsminor.yy81;
163429
+ break;
163430
+ case 327: /* frame_exclude_opt ::= */
163431
+{yymsp[1].minor.yy534 = 0;}
163432
+ break;
163433
+ case 328: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
163434
+{yymsp[-1].minor.yy534 = yymsp[0].minor.yy534;}
163435
+ break;
163436
+ case 329: /* frame_exclude ::= NO OTHERS */
163437
+ case 330: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==330);
163438
+{yymsp[-1].minor.yy534 = yymsp[-1].major; /*A-overwrites-X*/}
163439
+ break;
163440
+ case 331: /* frame_exclude ::= GROUP|TIES */
163441
+{yymsp[0].minor.yy534 = yymsp[0].major; /*A-overwrites-X*/}
163442
+ break;
163443
+ case 332: /* window_clause ::= WINDOW windowdefn_list */
163444
+{ yymsp[-1].minor.yy375 = yymsp[0].minor.yy375; }
163445
+ break;
163446
+ case 333: /* filter_over ::= filter_clause over_clause */
163447
+{
163448
+ if( yymsp[0].minor.yy375 ){
163449
+ yymsp[0].minor.yy375->pFilter = yymsp[-1].minor.yy626;
163450
+ }else{
163451
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
163452
+ }
163453
+ yylhsminor.yy375 = yymsp[0].minor.yy375;
163454
+}
163455
+ yymsp[-1].minor.yy375 = yylhsminor.yy375;
163456
+ break;
163457
+ case 335: /* filter_over ::= filter_clause */
163458
+{
163459
+ yylhsminor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
163460
+ if( yylhsminor.yy375 ){
163461
+ yylhsminor.yy375->eFrmType = TK_FILTER;
163462
+ yylhsminor.yy375->pFilter = yymsp[0].minor.yy626;
163463
+ }else{
163464
+ sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy626);
163465
+ }
163466
+}
163467
+ yymsp[0].minor.yy375 = yylhsminor.yy375;
163468
+ break;
163469
+ case 336: /* over_clause ::= OVER LP window RP */
163470
+{
163471
+ yymsp[-3].minor.yy375 = yymsp[-1].minor.yy375;
163472
+ assert( yymsp[-3].minor.yy375!=0 );
163473
+}
163474
+ break;
163475
+ case 337: /* over_clause ::= OVER nm */
163476
+{
163477
+ yymsp[-1].minor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
163478
+ if( yymsp[-1].minor.yy375 ){
163479
+ yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
163480
+ }
163481
+}
163482
+ break;
163483
+ case 338: /* filter_clause ::= FILTER LP WHERE expr RP */
163484
+{ yymsp[-4].minor.yy626 = yymsp[-1].minor.yy626; }
163165163485
break;
163166163486
default:
163167
- /* (337) input ::= cmdlist */ yytestcase(yyruleno==337);
163168
- /* (338) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==338);
163169
- /* (339) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=339);
163170
- /* (340) ecmd ::= SEMI */ yytestcase(yyruleno==340);
163171
- /* (341) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==341);
163172
- /* (342) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=342);
163173
- /* (343) trans_opt ::= */ yytestcase(yyruleno==343);
163174
- /* (344) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==344);
163175
- /* (345) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==345);
163176
- /* (346) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==346);
163177
- /* (347) savepoint_opt ::= */ yytestcase(yyruleno==347);
163178
- /* (348) cmd ::= create_table create_table_args */ yytestcase(yyruleno==348);
163179
- /* (349) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==349);
163180
- /* (350) columnlist ::= columnname carglist */ yytestcase(yyruleno==350);
163181
- /* (351) nm ::= ID|INDEXED */ yytestcase(yyruleno==351);
163182
- /* (352) nm ::= STRING */ yytestcase(yyruleno==352);
163183
- /* (353) nm ::= JOIN_KW */ yytestcase(yyruleno==353);
163184
- /* (354) typetoken ::= typename */ yytestcase(yyruleno==354);
163185
- /* (355) typename ::= ID|STRING */ yytestcase(yyruleno==355);
163186
- /* (356) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=356);
163187
- /* (357) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=357);
163188
- /* (358) carglist ::= carglist ccons */ yytestcase(yyruleno==358);
163189
- /* (359) carglist ::= */ yytestcase(yyruleno==359);
163190
- /* (360) ccons ::= NULL onconf */ yytestcase(yyruleno==360);
163191
- /* (361) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==361);
163192
- /* (362) ccons ::= AS generated */ yytestcase(yyruleno==362);
163193
- /* (363) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==363);
163194
- /* (364) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==364);
163195
- /* (365) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=365);
163196
- /* (366) tconscomma ::= */ yytestcase(yyruleno==366);
163197
- /* (367) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=367);
163198
- /* (368) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=368);
163199
- /* (369) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=369);
163200
- /* (370) oneselect ::= values */ yytestcase(yyruleno==370);
163201
- /* (371) sclp ::= selcollist COMMA */ yytestcase(yyruleno==371);
163202
- /* (372) as ::= ID|STRING */ yytestcase(yyruleno==372);
163203
- /* (373) returning ::= */ yytestcase(yyruleno==373);
163204
- /* (374) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=374);
163205
- /* (375) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==375);
163206
- /* (376) exprlist ::= nexprlist */ yytestcase(yyruleno==376);
163207
- /* (377) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=377);
163208
- /* (378) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=378);
163209
- /* (379) nmnum ::= ON */ yytestcase(yyruleno==379);
163210
- /* (380) nmnum ::= DELETE */ yytestcase(yyruleno==380);
163211
- /* (381) nmnum ::= DEFAULT */ yytestcase(yyruleno==381);
163212
- /* (382) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==382);
163213
- /* (383) foreach_clause ::= */ yytestcase(yyruleno==383);
163214
- /* (384) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==384);
163215
- /* (385) trnm ::= nm */ yytestcase(yyruleno==385);
163216
- /* (386) tridxby ::= */ yytestcase(yyruleno==386);
163217
- /* (387) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==387);
163218
- /* (388) database_kw_opt ::= */ yytestcase(yyruleno==388);
163219
- /* (389) kwcolumn_opt ::= */ yytestcase(yyruleno==389);
163220
- /* (390) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==390);
163221
- /* (391) vtabarglist ::= vtabarg */ yytestcase(yyruleno==391);
163222
- /* (392) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==392);
163223
- /* (393) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==393);
163224
- /* (394) anylist ::= */ yytestcase(yyruleno==394);
163225
- /* (395) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==395);
163226
- /* (396) anylist ::= anylist ANY */ yytestcase(yyruleno==396);
163227
- /* (397) with ::= */ yytestcase(yyruleno==397);
163487
+ /* (339) input ::= cmdlist */ yytestcase(yyruleno==339);
163488
+ /* (340) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==340);
163489
+ /* (341) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=341);
163490
+ /* (342) ecmd ::= SEMI */ yytestcase(yyruleno==342);
163491
+ /* (343) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==343);
163492
+ /* (344) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=344);
163493
+ /* (345) trans_opt ::= */ yytestcase(yyruleno==345);
163494
+ /* (346) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==346);
163495
+ /* (347) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==347);
163496
+ /* (348) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==348);
163497
+ /* (349) savepoint_opt ::= */ yytestcase(yyruleno==349);
163498
+ /* (350) cmd ::= create_table create_table_args */ yytestcase(yyruleno==350);
163499
+ /* (351) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=351);
163500
+ /* (352) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==352);
163501
+ /* (353) columnlist ::= columnname carglist */ yytestcase(yyruleno==353);
163502
+ /* (354) nm ::= ID|INDEXED */ yytestcase(yyruleno==354);
163503
+ /* (355) nm ::= STRING */ yytestcase(yyruleno==355);
163504
+ /* (356) nm ::= JOIN_KW */ yytestcase(yyruleno==356);
163505
+ /* (357) typetoken ::= typename */ yytestcase(yyruleno==357);
163506
+ /* (358) typename ::= ID|STRING */ yytestcase(yyruleno==358);
163507
+ /* (359) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=359);
163508
+ /* (360) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
163509
+ /* (361) carglist ::= carglist ccons */ yytestcase(yyruleno==361);
163510
+ /* (362) carglist ::= */ yytestcase(yyruleno==362);
163511
+ /* (363) ccons ::= NULL onconf */ yytestcase(yyruleno==363);
163512
+ /* (364) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==364);
163513
+ /* (365) ccons ::= AS generated */ yytestcase(yyruleno==365);
163514
+ /* (366) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==366);
163515
+ /* (367) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==367);
163516
+ /* (368) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=368);
163517
+ /* (369) tconscomma ::= */ yytestcase(yyruleno==369);
163518
+ /* (370) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=370);
163519
+ /* (371) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=371);
163520
+ /* (372) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=372);
163521
+ /* (373) oneselect ::= values */ yytestcase(yyruleno==373);
163522
+ /* (374) sclp ::= selcollist COMMA */ yytestcase(yyruleno==374);
163523
+ /* (375) as ::= ID|STRING */ yytestcase(yyruleno==375);
163524
+ /* (376) returning ::= */ yytestcase(yyruleno==376);
163525
+ /* (377) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=377);
163526
+ /* (378) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==378);
163527
+ /* (379) exprlist ::= nexprlist */ yytestcase(yyruleno==379);
163528
+ /* (380) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=380);
163529
+ /* (381) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=381);
163530
+ /* (382) nmnum ::= ON */ yytestcase(yyruleno==382);
163531
+ /* (383) nmnum ::= DELETE */ yytestcase(yyruleno==383);
163532
+ /* (384) nmnum ::= DEFAULT */ yytestcase(yyruleno==384);
163533
+ /* (385) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==385);
163534
+ /* (386) foreach_clause ::= */ yytestcase(yyruleno==386);
163535
+ /* (387) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==387);
163536
+ /* (388) trnm ::= nm */ yytestcase(yyruleno==388);
163537
+ /* (389) tridxby ::= */ yytestcase(yyruleno==389);
163538
+ /* (390) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==390);
163539
+ /* (391) database_kw_opt ::= */ yytestcase(yyruleno==391);
163540
+ /* (392) kwcolumn_opt ::= */ yytestcase(yyruleno==392);
163541
+ /* (393) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==393);
163542
+ /* (394) vtabarglist ::= vtabarg */ yytestcase(yyruleno==394);
163543
+ /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==395);
163544
+ /* (396) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==396);
163545
+ /* (397) anylist ::= */ yytestcase(yyruleno==397);
163546
+ /* (398) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==398);
163547
+ /* (399) anylist ::= anylist ANY */ yytestcase(yyruleno==399);
163548
+ /* (400) with ::= */ yytestcase(yyruleno==400);
163228163549
break;
163229163550
/********** End reduce actions ************************************************/
163230163551
};
163231163552
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
163232163553
yygoto = yyRuleInfoLhs[yyruleno];
@@ -163479,18 +163800,17 @@
163479163800
}
163480163801
#endif
163481163802
yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
163482163803
yymajor = YYNOCODE;
163483163804
}else{
163484
- while( yypParser->yytos >= yypParser->yystack
163485
- && (yyact = yy_find_reduce_action(
163486
- yypParser->yytos->stateno,
163487
- YYERRORSYMBOL)) > YY_MAX_SHIFTREDUCE
163488
- ){
163805
+ while( yypParser->yytos > yypParser->yystack ){
163806
+ yyact = yy_find_reduce_action(yypParser->yytos->stateno,
163807
+ YYERRORSYMBOL);
163808
+ if( yyact<=YY_MAX_SHIFTREDUCE ) break;
163489163809
yy_pop_parser_stack(yypParser);
163490163810
}
163491
- if( yypParser->yytos < yypParser->yystack || yymajor==0 ){
163811
+ if( yypParser->yytos <= yypParser->yystack || yymajor==0 ){
163492163812
yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
163493163813
yy_parse_failed(yypParser);
163494163814
#ifndef YYNOERRORRECOVERY
163495163815
yypParser->yyerrcnt = -1;
163496163816
#endif
@@ -166553,11 +166873,11 @@
166553166873
}
166554166874
#endif
166555166875
166556166876
/* Convert the connection into a zombie and then close it.
166557166877
*/
166558
- db->magic = SQLITE_MAGIC_ZOMBIE;
166878
+ db->eOpenState = SQLITE_STATE_ZOMBIE;
166559166879
sqlite3LeaveMutexAndCloseZombie(db);
166560166880
return SQLITE_OK;
166561166881
}
166562166882
166563166883
/*
@@ -166617,11 +166937,11 @@
166617166937
166618166938
/* If there are outstanding sqlite3_stmt or sqlite3_backup objects
166619166939
** or if the connection has not yet been closed by sqlite3_close_v2(),
166620166940
** then just leave the mutex and return.
166621166941
*/
166622
- if( db->magic!=SQLITE_MAGIC_ZOMBIE || connectionIsBusy(db) ){
166942
+ if( db->eOpenState!=SQLITE_STATE_ZOMBIE || connectionIsBusy(db) ){
166623166943
sqlite3_mutex_leave(db->mutex);
166624166944
return;
166625166945
}
166626166946
166627166947
/* If we reach this point, it means that the database connection has
@@ -166703,21 +167023,21 @@
166703167023
#if SQLITE_USER_AUTHENTICATION
166704167024
sqlite3_free(db->auth.zAuthUser);
166705167025
sqlite3_free(db->auth.zAuthPW);
166706167026
#endif
166707167027
166708
- db->magic = SQLITE_MAGIC_ERROR;
167028
+ db->eOpenState = SQLITE_STATE_ERROR;
166709167029
166710167030
/* The temp-database schema is allocated differently from the other schema
166711167031
** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()).
166712167032
** So it needs to be freed here. Todo: Why not roll the temp schema into
166713167033
** the same sqliteMalloc() as the one that allocates the database
166714167034
** structure?
166715167035
*/
166716167036
sqlite3DbFree(db, db->aDb[1].pSchema);
166717167037
sqlite3_mutex_leave(db->mutex);
166718
- db->magic = SQLITE_MAGIC_CLOSED;
167038
+ db->eOpenState = SQLITE_STATE_CLOSED;
166719167039
sqlite3_mutex_free(db->mutex);
166720167040
assert( sqlite3LookasideUsed(db,0)==0 );
166721167041
if( db->lookaside.bMalloced ){
166722167042
sqlite3_free(db->lookaside.pStart);
166723167043
}
@@ -167101,11 +167421,11 @@
167101167421
/*
167102167422
** Cause any pending operation to stop at its earliest opportunity.
167103167423
*/
167104167424
SQLITE_API void sqlite3_interrupt(sqlite3 *db){
167105167425
#ifdef SQLITE_ENABLE_API_ARMOR
167106
- if( !sqlite3SafetyCheckOk(db) && (db==0 || db->magic!=SQLITE_MAGIC_ZOMBIE) ){
167426
+ if( !sqlite3SafetyCheckOk(db) && (db==0 || db->eOpenState!=SQLITE_STATE_ZOMBIE) ){
167107167427
(void)SQLITE_MISUSE_BKPT;
167108167428
return;
167109167429
}
167110167430
#endif
167111167431
AtomicStore(&db->u1.isInterrupted, 1);
@@ -168504,11 +168824,11 @@
168504168824
}
168505168825
}
168506168826
sqlite3_mutex_enter(db->mutex);
168507168827
db->errMask = 0xff;
168508168828
db->nDb = 2;
168509
- db->magic = SQLITE_MAGIC_BUSY;
168829
+ db->eOpenState = SQLITE_STATE_BUSY;
168510168830
db->aDb = db->aDbStatic;
168511168831
db->lookaside.bDisable = 1;
168512168832
db->lookaside.sz = 0;
168513168833
168514168834
assert( sizeof(db->aLimit)==sizeof(aHardLimit) );
@@ -168516,11 +168836,18 @@
168516168836
db->aLimit[SQLITE_LIMIT_WORKER_THREADS] = SQLITE_DEFAULT_WORKER_THREADS;
168517168837
db->autoCommit = 1;
168518168838
db->nextAutovac = -1;
168519168839
db->szMmap = sqlite3GlobalConfig.szMmap;
168520168840
db->nextPagesize = 0;
168841
+#ifdef SQLITE_ENABLE_SORTER_MMAP
168842
+ /* Beginning with version 3.37.0, using the VFS xFetch() API to memory-map
168843
+ ** the temporary files used to do external sorts (see code in vdbesort.c)
168844
+ ** is disabled. It can still be used either by defining
168845
+ ** SQLITE_ENABLE_SORTER_MMAP at compile time or by using the
168846
+ ** SQLITE_TESTCTRL_SORTER_MMAP test-control at runtime. */
168521168847
db->nMaxSorterMmap = 0x7FFFFFFF;
168848
+#endif
168522168849
db->flags |= SQLITE_ShortColNames
168523168850
| SQLITE_EnableTrigger
168524168851
| SQLITE_EnableView
168525168852
| SQLITE_CacheSpill
168526168853
#if !defined(SQLITE_TRUSTED_SCHEMA) || SQLITE_TRUSTED_SCHEMA+0!=0
@@ -168664,11 +168991,11 @@
168664168991
db->aDb[0].zDbSName = "main";
168665168992
db->aDb[0].safety_level = SQLITE_DEFAULT_SYNCHRONOUS+1;
168666168993
db->aDb[1].zDbSName = "temp";
168667168994
db->aDb[1].safety_level = PAGER_SYNCHRONOUS_OFF;
168668168995
168669
- db->magic = SQLITE_MAGIC_OPEN;
168996
+ db->eOpenState = SQLITE_STATE_OPEN;
168670168997
if( db->mallocFailed ){
168671168998
goto opendb_out;
168672168999
}
168673169000
168674169001
/* Register all built-in functions, but do not attempt to read the
@@ -168731,11 +169058,11 @@
168731169058
assert( db!=0 || rc==SQLITE_NOMEM );
168732169059
if( rc==SQLITE_NOMEM ){
168733169060
sqlite3_close(db);
168734169061
db = 0;
168735169062
}else if( rc!=SQLITE_OK ){
168736
- db->magic = SQLITE_MAGIC_SICK;
169063
+ db->eOpenState = SQLITE_STATE_SICK;
168737169064
}
168738169065
*ppDb = db;
168739169066
#ifdef SQLITE_ENABLE_SQLLOG
168740169067
if( sqlite3GlobalConfig.xSqllog ){
168741169068
/* Opening a db handle. Fourth parameter is passed 0. */
@@ -215510,18 +215837,17 @@
215510215837
}
215511215838
#endif
215512215839
fts5yy_destructor(fts5yypParser, (fts5YYCODETYPE)fts5yymajor, &fts5yyminorunion);
215513215840
fts5yymajor = fts5YYNOCODE;
215514215841
}else{
215515
- while( fts5yypParser->fts5yytos >= fts5yypParser->fts5yystack
215516
- && (fts5yyact = fts5yy_find_reduce_action(
215517
- fts5yypParser->fts5yytos->stateno,
215518
- fts5YYERRORSYMBOL)) > fts5YY_MAX_SHIFTREDUCE
215519
- ){
215842
+ while( fts5yypParser->fts5yytos > fts5yypParser->fts5yystack ){
215843
+ fts5yyact = fts5yy_find_reduce_action(fts5yypParser->fts5yytos->stateno,
215844
+ fts5YYERRORSYMBOL);
215845
+ if( fts5yyact<=fts5YY_MAX_SHIFTREDUCE ) break;
215520215846
fts5yy_pop_parser_stack(fts5yypParser);
215521215847
}
215522
- if( fts5yypParser->fts5yytos < fts5yypParser->fts5yystack || fts5yymajor==0 ){
215848
+ if( fts5yypParser->fts5yytos <= fts5yypParser->fts5yystack || fts5yymajor==0 ){
215523215849
fts5yy_destructor(fts5yypParser,(fts5YYCODETYPE)fts5yymajor,&fts5yyminorunion);
215524215850
fts5yy_parse_failed(fts5yypParser);
215525215851
#ifndef fts5YYNOERRORRECOVERY
215526215852
fts5yypParser->fts5yyerrcnt = -1;
215527215853
#endif
@@ -230849,11 +231175,11 @@
230849231175
int nArg, /* Number of args */
230850231176
sqlite3_value **apUnused /* Function arguments */
230851231177
){
230852231178
assert( nArg==0 );
230853231179
UNUSED_PARAM2(nArg, apUnused);
230854
- sqlite3_result_text(pCtx, "fts5: 2021-08-06 20:17:39 087b8b41c6ed76b55c11315e7e95679d67590be20ae21108b593d00bb7d1c57a", -1, SQLITE_TRANSIENT);
231180
+ sqlite3_result_text(pCtx, "fts5: 2021-09-06 11:44:19 b3cfe23bec0b95ca673802526704200e2396df715fdded72aa71addd7f47e0e1", -1, SQLITE_TRANSIENT);
230855231181
}
230856231182
230857231183
/*
230858231184
** Return true if zName is the extension on one of the shadow tables used
230859231185
** by this module.
230860231186
--- src/sqlite3.c
+++ src/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.37.0"
456 #define SQLITE_VERSION_NUMBER 3037000
457 #define SQLITE_SOURCE_ID "2021-08-06 20:17:39 087b8b41c6ed76b55c11315e7e95679d67590be20ae21108b593d00bb7d1c57a"
458
459 /*
460 ** CAPI3REF: Run-Time Library Version Numbers
461 ** KEYWORDS: sqlite3_version sqlite3_sourceid
462 **
@@ -865,10 +865,11 @@
865 #define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8))
866 #define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8))
867 #define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
868 #define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8))
869 #define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8))
 
870 #define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
871 #define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
872 #define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
873 #define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
874 #define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
@@ -13446,12 +13447,12 @@
13446 #define TK_EXISTS 20
13447 #define TK_TEMP 21
13448 #define TK_LP 22
13449 #define TK_RP 23
13450 #define TK_AS 24
13451 #define TK_WITHOUT 25
13452 #define TK_COMMA 26
13453 #define TK_ABORT 27
13454 #define TK_ACTION 28
13455 #define TK_AFTER 29
13456 #define TK_ANALYZE 30
13457 #define TK_ASC 31
@@ -15109,91 +15110,91 @@
15109 #define OP_Jump 16 /* jump */
15110 #define OP_Once 17 /* jump */
15111 #define OP_If 18 /* jump */
15112 #define OP_Not 19 /* same as TK_NOT, synopsis: r[P2]= !r[P1] */
15113 #define OP_IfNot 20 /* jump */
15114 #define OP_IfNullRow 21 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */
15115 #define OP_SeekLT 22 /* jump, synopsis: key=r[P3@P4] */
15116 #define OP_SeekLE 23 /* jump, synopsis: key=r[P3@P4] */
15117 #define OP_SeekGE 24 /* jump, synopsis: key=r[P3@P4] */
15118 #define OP_SeekGT 25 /* jump, synopsis: key=r[P3@P4] */
15119 #define OP_IfNotOpen 26 /* jump, synopsis: if( !csr[P1] ) goto P2 */
15120 #define OP_IfNoHope 27 /* jump, synopsis: key=r[P3@P4] */
15121 #define OP_NoConflict 28 /* jump, synopsis: key=r[P3@P4] */
15122 #define OP_NotFound 29 /* jump, synopsis: key=r[P3@P4] */
15123 #define OP_Found 30 /* jump, synopsis: key=r[P3@P4] */
15124 #define OP_SeekRowid 31 /* jump, synopsis: intkey=r[P3] */
15125 #define OP_NotExists 32 /* jump, synopsis: intkey=r[P3] */
15126 #define OP_Last 33 /* jump */
15127 #define OP_IfSmaller 34 /* jump */
15128 #define OP_SorterSort 35 /* jump */
15129 #define OP_Sort 36 /* jump */
15130 #define OP_Rewind 37 /* jump */
15131 #define OP_IdxLE 38 /* jump, synopsis: key=r[P3@P4] */
15132 #define OP_IdxGT 39 /* jump, synopsis: key=r[P3@P4] */
15133 #define OP_IdxLT 40 /* jump, synopsis: key=r[P3@P4] */
15134 #define OP_IdxGE 41 /* jump, synopsis: key=r[P3@P4] */
15135 #define OP_RowSetRead 42 /* jump, synopsis: r[P3]=rowset(P1) */
15136 #define OP_Or 43 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */
15137 #define OP_And 44 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */
15138 #define OP_RowSetTest 45 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
15139 #define OP_Program 46 /* jump */
15140 #define OP_FkIfZero 47 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
15141 #define OP_IfPos 48 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
15142 #define OP_IfNotZero 49 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
15143 #define OP_IsNull 50 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
15144 #define OP_NotNull 51 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
15145 #define OP_Ne 52 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */
15146 #define OP_Eq 53 /* jump, same as TK_EQ, synopsis: IF r[P3]==r[P1] */
15147 #define OP_Gt 54 /* jump, same as TK_GT, synopsis: IF r[P3]>r[P1] */
15148 #define OP_Le 55 /* jump, same as TK_LE, synopsis: IF r[P3]<=r[P1] */
15149 #define OP_Lt 56 /* jump, same as TK_LT, synopsis: IF r[P3]<r[P1] */
15150 #define OP_Ge 57 /* jump, same as TK_GE, synopsis: IF r[P3]>=r[P1] */
15151 #define OP_ElseEq 58 /* jump, same as TK_ESCAPE */
15152 #define OP_DecrJumpZero 59 /* jump, synopsis: if (--r[P1])==0 goto P2 */
15153 #define OP_IncrVacuum 60 /* jump */
15154 #define OP_VNext 61 /* jump */
15155 #define OP_Init 62 /* jump, synopsis: Start at P2 */
15156 #define OP_PureFunc 63 /* synopsis: r[P3]=func(r[P2@NP]) */
15157 #define OP_Function 64 /* synopsis: r[P3]=func(r[P2@NP]) */
15158 #define OP_Return 65
15159 #define OP_EndCoroutine 66
15160 #define OP_HaltIfNull 67 /* synopsis: if r[P3]=null halt */
15161 #define OP_Halt 68
15162 #define OP_Integer 69 /* synopsis: r[P2]=P1 */
15163 #define OP_Int64 70 /* synopsis: r[P2]=P4 */
15164 #define OP_String 71 /* synopsis: r[P2]='P4' (len=P1) */
15165 #define OP_Null 72 /* synopsis: r[P2..P3]=NULL */
15166 #define OP_SoftNull 73 /* synopsis: r[P1]=NULL */
15167 #define OP_Blob 74 /* synopsis: r[P2]=P4 (len=P1) */
15168 #define OP_Variable 75 /* synopsis: r[P2]=parameter(P1,P4) */
15169 #define OP_Move 76 /* synopsis: r[P2@P3]=r[P1@P3] */
15170 #define OP_Copy 77 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
15171 #define OP_SCopy 78 /* synopsis: r[P2]=r[P1] */
15172 #define OP_IntCopy 79 /* synopsis: r[P2]=r[P1] */
15173 #define OP_ChngCntRow 80 /* synopsis: output=r[P1] */
15174 #define OP_ResultRow 81 /* synopsis: output=r[P1@P2] */
15175 #define OP_CollSeq 82
15176 #define OP_AddImm 83 /* synopsis: r[P1]=r[P1]+P2 */
15177 #define OP_RealAffinity 84
15178 #define OP_Cast 85 /* synopsis: affinity(r[P1]) */
15179 #define OP_Permutation 86
15180 #define OP_Compare 87 /* synopsis: r[P1@P3] <-> r[P2@P3] */
15181 #define OP_IsTrue 88 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
15182 #define OP_ZeroOrNull 89 /* synopsis: r[P2] = 0 OR NULL */
15183 #define OP_Offset 90 /* synopsis: r[P3] = sqlite_offset(P1) */
15184 #define OP_Column 91 /* synopsis: r[P3]=PX */
15185 #define OP_Affinity 92 /* synopsis: affinity(r[P1@P2]) */
15186 #define OP_MakeRecord 93 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
15187 #define OP_Count 94 /* synopsis: r[P2]=count() */
15188 #define OP_ReadCookie 95
15189 #define OP_SetCookie 96
15190 #define OP_ReopenIdx 97 /* synopsis: root=P2 iDb=P3 */
15191 #define OP_OpenRead 98 /* synopsis: root=P2 iDb=P3 */
15192 #define OP_OpenWrite 99 /* synopsis: root=P2 iDb=P3 */
15193 #define OP_OpenDup 100
15194 #define OP_OpenAutoindex 101 /* synopsis: nColumn=P2 */
15195 #define OP_BitAnd 102 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
15196 #define OP_BitOr 103 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
15197 #define OP_ShiftLeft 104 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
15198 #define OP_ShiftRight 105 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
15199 #define OP_Add 106 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
@@ -15200,78 +15201,80 @@
15200 #define OP_Subtract 107 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
15201 #define OP_Multiply 108 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
15202 #define OP_Divide 109 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
15203 #define OP_Remainder 110 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
15204 #define OP_Concat 111 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
15205 #define OP_OpenEphemeral 112 /* synopsis: nColumn=P2 */
15206 #define OP_BitNot 113 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
15207 #define OP_SorterOpen 114
15208 #define OP_SequenceTest 115 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
15209 #define OP_String8 116 /* same as TK_STRING, synopsis: r[P2]='P4' */
15210 #define OP_OpenPseudo 117 /* synopsis: P3 columns in r[P2] */
15211 #define OP_Close 118
15212 #define OP_ColumnsUsed 119
15213 #define OP_SeekScan 120 /* synopsis: Scan-ahead up to P1 rows */
15214 #define OP_SeekHit 121 /* synopsis: set P2<=seekHit<=P3 */
15215 #define OP_Sequence 122 /* synopsis: r[P2]=cursor[P1].ctr++ */
15216 #define OP_NewRowid 123 /* synopsis: r[P2]=rowid */
15217 #define OP_Insert 124 /* synopsis: intkey=r[P3] data=r[P2] */
15218 #define OP_RowCell 125
15219 #define OP_Delete 126
15220 #define OP_ResetCount 127
15221 #define OP_SorterCompare 128 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
15222 #define OP_SorterData 129 /* synopsis: r[P2]=data */
15223 #define OP_RowData 130 /* synopsis: r[P2]=data */
15224 #define OP_Rowid 131 /* synopsis: r[P2]=rowid */
15225 #define OP_NullRow 132
15226 #define OP_SeekEnd 133
15227 #define OP_IdxInsert 134 /* synopsis: key=r[P2] */
15228 #define OP_SorterInsert 135 /* synopsis: key=r[P2] */
15229 #define OP_IdxDelete 136 /* synopsis: key=r[P2@P3] */
15230 #define OP_DeferredSeek 137 /* synopsis: Move P3 to P1.rowid if needed */
15231 #define OP_IdxRowid 138 /* synopsis: r[P2]=rowid */
15232 #define OP_FinishSeek 139
15233 #define OP_Destroy 140
15234 #define OP_Clear 141
15235 #define OP_ResetSorter 142
15236 #define OP_CreateBtree 143 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
15237 #define OP_SqlExec 144
15238 #define OP_ParseSchema 145
15239 #define OP_LoadAnalysis 146
15240 #define OP_DropTable 147
15241 #define OP_DropIndex 148
15242 #define OP_DropTrigger 149
15243 #define OP_IntegrityCk 150
15244 #define OP_RowSetAdd 151 /* synopsis: rowset(P1)=r[P2] */
15245 #define OP_Real 152 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15246 #define OP_Param 153
15247 #define OP_FkCounter 154 /* synopsis: fkctr[P1]+=P2 */
15248 #define OP_MemMax 155 /* synopsis: r[P1]=max(r[P1],r[P2]) */
15249 #define OP_OffsetLimit 156 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
15250 #define OP_AggInverse 157 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
15251 #define OP_AggStep 158 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15252 #define OP_AggStep1 159 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15253 #define OP_AggValue 160 /* synopsis: r[P3]=value N=P2 */
15254 #define OP_AggFinal 161 /* synopsis: accum=r[P1] N=P2 */
15255 #define OP_Expire 162
15256 #define OP_CursorLock 163
15257 #define OP_CursorUnlock 164
15258 #define OP_TableLock 165 /* synopsis: iDb=P1 root=P2 write=P3 */
15259 #define OP_VBegin 166
15260 #define OP_VCreate 167
15261 #define OP_VDestroy 168
15262 #define OP_VOpen 169
15263 #define OP_VColumn 170 /* synopsis: r[P3]=vcolumn(P2) */
15264 #define OP_VRename 171
15265 #define OP_Pagecount 172
15266 #define OP_MaxPgcnt 173
15267 #define OP_Trace 174
15268 #define OP_CursorHint 175
15269 #define OP_ReleaseReg 176 /* synopsis: release r[P1@P2] mask P3 */
15270 #define OP_Noop 177
15271 #define OP_Explain 178
15272 #define OP_Abortable 179
 
 
15273
15274 /* Properties such as "out2" or "jump" that are specified in
15275 ** comments following the "case" for each opcode in the vdbe.c
15276 ** are encoded into bitvectors as follows:
15277 */
@@ -15282,39 +15285,39 @@
15282 #define OPFLG_OUT2 0x10 /* out2: P2 is an output */
15283 #define OPFLG_OUT3 0x20 /* out3: P3 is an output */
15284 #define OPFLG_INITIALIZER {\
15285 /* 0 */ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x10,\
15286 /* 8 */ 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03,\
15287 /* 16 */ 0x01, 0x01, 0x03, 0x12, 0x03, 0x01, 0x09, 0x09,\
15288 /* 24 */ 0x09, 0x09, 0x01, 0x09, 0x09, 0x09, 0x09, 0x09,\
15289 /* 32 */ 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\
15290 /* 40 */ 0x01, 0x01, 0x23, 0x26, 0x26, 0x0b, 0x01, 0x01,\
15291 /* 48 */ 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
15292 /* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, 0x00,\
15293 /* 64 */ 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10, 0x10,\
15294 /* 72 */ 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10,\
15295 /* 80 */ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00,\
15296 /* 88 */ 0x12, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x10, 0x10,\
15297 /* 96 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26,\
15298 /* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
15299 /* 112 */ 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\
15300 /* 120 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,\
15301 /* 128 */ 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x04, 0x04,\
15302 /* 136 */ 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10,\
15303 /* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,\
15304 /* 152 */ 0x10, 0x10, 0x00, 0x04, 0x1a, 0x00, 0x00, 0x00,\
15305 /* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15306 /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
15307 /* 176 */ 0x00, 0x00, 0x00, 0x00,}
15308
15309 /* The resolve3P2Values() routine is able to run faster if it knows
15310 ** the value of the largest JUMP opcode. The smaller the maximum
15311 ** JUMP opcode the better, so the mkopcodeh.tcl script that
15312 ** generated this include file strives to group all JUMP opcodes
15313 ** together near the beginning of the list.
15314 */
15315 #define SQLITE_MX_JUMP_OPCODE 62 /* Maximum JUMP opcode */
15316
15317 /************** End of opcodes.h *********************************************/
15318 /************** Continuing where we left off in vdbe.h ***********************/
15319
15320 /*
@@ -16387,12 +16390,12 @@
16387 u8 vtabOnConflict; /* Value to return for s3_vtab_on_conflict() */
16388 u8 isTransactionSavepoint; /* True if the outermost savepoint is a TS */
16389 u8 mTrace; /* zero or more SQLITE_TRACE flags */
16390 u8 noSharedCache; /* True if no shared-cache backends */
16391 u8 nSqlExec; /* Number of pending OP_SqlExec opcodes */
 
16392 int nextPagesize; /* Pagesize after VACUUM if >0 */
16393 u32 magic; /* Magic number for detect library misuse */
16394 i64 nChange; /* Value returned by sqlite3_changes() */
16395 i64 nTotalChange; /* Value returned by sqlite3_total_changes() */
16396 int aLimit[SQLITE_N_LIMIT]; /* Limits */
16397 int nMaxSorterMmap; /* Maximum size of regions mapped by sorter */
16398 struct sqlite3InitInfo { /* Information used during initialization */
@@ -16615,21 +16618,20 @@
16615 ** Return true if it OK to factor constant expressions into the initialization
16616 ** code. The argument is a Parse object for the code generator.
16617 */
16618 #define ConstFactorOk(P) ((P)->okConstFactor)
16619
16620 /*
16621 ** Possible values for the sqlite.magic field.
16622 ** The numbers are obtained at random and have no special meaning, other
16623 ** than being distinct from one another.
16624 */
16625 #define SQLITE_MAGIC_OPEN 0xa029a697 /* Database is open */
16626 #define SQLITE_MAGIC_CLOSED 0x9f3c2d33 /* Database is closed */
16627 #define SQLITE_MAGIC_SICK 0x4b771290 /* Error and awaiting close */
16628 #define SQLITE_MAGIC_BUSY 0xf03b7906 /* Database currently in use */
16629 #define SQLITE_MAGIC_ERROR 0xb5357930 /* An SQLITE_MISUSE error occurred */
16630 #define SQLITE_MAGIC_ZOMBIE 0x64cffc7f /* Close with last statement close */
16631
16632 /*
16633 ** Each SQL function is defined by an instance of the following
16634 ** structure. For global built-in functions (ex: substr(), max(), count())
16635 ** a pointer to this structure is held in the sqlite3BuiltinFunctions object.
@@ -16894,32 +16896,33 @@
16894 ** set.
16895 */
16896 struct Column {
16897 char *zCnName; /* Name of this column */
16898 unsigned notNull :4; /* An OE_ code for handling a NOT NULL constraint */
16899 unsigned eType :4; /* One of the standard types */
16900 char affinity; /* One of the SQLITE_AFF_... values */
16901 u8 szEst; /* Est size of value in this column. sizeof(INT)==1 */
16902 u8 hName; /* Column name hash for faster lookup */
16903 u16 iDflt; /* 1-based index of DEFAULT. 0 means "none" */
16904 u16 colFlags; /* Boolean properties. See COLFLAG_ defines below */
16905 };
16906
16907 /* Allowed values for Column.eType.
16908 **
16909 ** Values must match entries in the global constant arrays
16910 ** sqlite3StdTypeLen[] and sqlite3StdType[]. Each value is one more
16911 ** than the offset into these arrays for the corresponding name.
16912 ** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
16913 */
16914 #define COLTYPE_CUSTOM 0 /* Type appended to zName */
16915 #define COLTYPE_BLOB 1
16916 #define COLTYPE_INT 2
16917 #define COLTYPE_INTEGER 3
16918 #define COLTYPE_REAL 4
16919 #define COLTYPE_TEXT 5
16920 #define SQLITE_N_STDTYPE 5 /* Number of standard types */
 
16921
16922 /* Allowed values for Column.colFlags.
16923 **
16924 ** Constraints:
16925 ** TF_HasVirtual == COLFLAG_VIRTUAL
@@ -17139,10 +17142,11 @@
17139 #define TF_HasNotNull 0x00000800 /* Contains NOT NULL constraints */
17140 #define TF_Shadow 0x00001000 /* True for a shadow table */
17141 #define TF_HasStat4 0x00002000 /* STAT4 info available for this table */
17142 #define TF_Ephemeral 0x00004000 /* An ephemeral table */
17143 #define TF_Eponymous 0x00008000 /* An eponymous virtual table */
 
17144
17145 /*
17146 ** Allowed values for Table.eTabType
17147 */
17148 #define TABTYP_NORM 0 /* Ordinary table */
@@ -19290,11 +19294,11 @@
19290 SQLITE_PRIVATE void sqlite3AddPrimaryKey(Parse*, ExprList*, int, int, int);
19291 SQLITE_PRIVATE void sqlite3AddCheckConstraint(Parse*, Expr*, const char*, const char*);
19292 SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,Expr*,const char*,const char*);
19293 SQLITE_PRIVATE void sqlite3AddCollateType(Parse*, Token*);
19294 SQLITE_PRIVATE void sqlite3AddGenerated(Parse*,Expr*,Token*);
19295 SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u8,Select*);
19296 SQLITE_PRIVATE void sqlite3AddReturning(Parse*,ExprList*);
19297 SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*,
19298 sqlite3_vfs**,char**,char **);
19299 #define sqlite3CodecQueryParameters(A,B,C) 0
19300 SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3*,const char*);
@@ -19695,10 +19699,11 @@
19695 #ifndef SQLITE_AMALGAMATION
19696 SQLITE_PRIVATE const unsigned char sqlite3OpcodeProperty[];
19697 SQLITE_PRIVATE const char sqlite3StrBINARY[];
19698 SQLITE_PRIVATE const unsigned char sqlite3StdTypeLen[];
19699 SQLITE_PRIVATE const char sqlite3StdTypeAffinity[];
 
19700 SQLITE_PRIVATE const char *sqlite3StdType[];
19701 SQLITE_PRIVATE const unsigned char sqlite3UpperToLower[];
19702 SQLITE_PRIVATE const unsigned char *sqlite3aLTb;
19703 SQLITE_PRIVATE const unsigned char *sqlite3aEQb;
19704 SQLITE_PRIVATE const unsigned char *sqlite3aGTb;
@@ -21464,20 +21469,42 @@
21464 SQLITE_PRIVATE const char sqlite3StrBINARY[] = "BINARY";
21465
21466 /*
21467 ** Standard typenames. These names must match the COLTYPE_* definitions.
21468 ** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
 
 
 
 
 
 
 
 
 
 
 
 
21469 */
21470 SQLITE_PRIVATE const unsigned char sqlite3StdTypeLen[] = { 4, 3, 7, 4, 4 };
21471 SQLITE_PRIVATE const char sqlite3StdTypeAffinity[] = {
 
21472 SQLITE_AFF_BLOB,
21473 SQLITE_AFF_INTEGER,
21474 SQLITE_AFF_INTEGER,
21475 SQLITE_AFF_REAL,
21476 SQLITE_AFF_TEXT
 
 
 
 
 
 
 
 
21477 };
21478 SQLITE_PRIVATE const char *sqlite3StdType[] = {
 
21479 "BLOB",
21480 "INT",
21481 "INTEGER",
21482 "REAL",
21483 "TEXT"
@@ -31896,15 +31923,25 @@
31896 #endif
31897
31898 #ifndef SQLITE_OMIT_FLOATING_POINT
31899 /*
31900 ** Return true if the floating point value is Not a Number (NaN).
 
 
 
31901 */
31902 SQLITE_PRIVATE int sqlite3IsNaN(double x){
 
 
31903 u64 y;
31904 memcpy(&y,&x,sizeof(y));
31905 return IsNaN(y);
 
 
 
 
 
31906 }
31907 #endif /* SQLITE_OMIT_FLOATING_POINT */
31908
31909 /*
31910 ** Compute a string length that is limited to what can be stored in
@@ -31927,13 +31964,13 @@
31927 ** the column name if and only if the COLFLAG_HASTYPE flag is set.
31928 */
31929 SQLITE_PRIVATE char *sqlite3ColumnType(Column *pCol, char *zDflt){
31930 if( pCol->colFlags & COLFLAG_HASTYPE ){
31931 return pCol->zCnName + strlen(pCol->zCnName) + 1;
31932 }else if( pCol->eType ){
31933 assert( pCol->eType<=SQLITE_N_STDTYPE );
31934 return (char*)sqlite3StdType[pCol->eType-1];
31935 }else{
31936 return zDflt;
31937 }
31938 }
31939
@@ -33235,17 +33272,17 @@
33235 ** use. sqlite3SafetyCheckSickOrOk() allows a db pointer that failed to
33236 ** open properly and is not fit for general use but which can be
33237 ** used as an argument to sqlite3_errmsg() or sqlite3_close().
33238 */
33239 SQLITE_PRIVATE int sqlite3SafetyCheckOk(sqlite3 *db){
33240 u32 magic;
33241 if( db==0 ){
33242 logBadConnection("NULL");
33243 return 0;
33244 }
33245 magic = db->magic;
33246 if( magic!=SQLITE_MAGIC_OPEN ){
33247 if( sqlite3SafetyCheckSickOrOk(db) ){
33248 testcase( sqlite3GlobalConfig.xLog!=0 );
33249 logBadConnection("unopened");
33250 }
33251 return 0;
@@ -33252,15 +33289,15 @@
33252 }else{
33253 return 1;
33254 }
33255 }
33256 SQLITE_PRIVATE int sqlite3SafetyCheckSickOrOk(sqlite3 *db){
33257 u32 magic;
33258 magic = db->magic;
33259 if( magic!=SQLITE_MAGIC_SICK &&
33260 magic!=SQLITE_MAGIC_OPEN &&
33261 magic!=SQLITE_MAGIC_BUSY ){
33262 testcase( sqlite3GlobalConfig.xLog!=0 );
33263 logBadConnection("invalid");
33264 return 0;
33265 }else{
33266 return 1;
@@ -33875,91 +33912,91 @@
33875 /* 16 */ "Jump" OpHelp(""),
33876 /* 17 */ "Once" OpHelp(""),
33877 /* 18 */ "If" OpHelp(""),
33878 /* 19 */ "Not" OpHelp("r[P2]= !r[P1]"),
33879 /* 20 */ "IfNot" OpHelp(""),
33880 /* 21 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"),
33881 /* 22 */ "SeekLT" OpHelp("key=r[P3@P4]"),
33882 /* 23 */ "SeekLE" OpHelp("key=r[P3@P4]"),
33883 /* 24 */ "SeekGE" OpHelp("key=r[P3@P4]"),
33884 /* 25 */ "SeekGT" OpHelp("key=r[P3@P4]"),
33885 /* 26 */ "IfNotOpen" OpHelp("if( !csr[P1] ) goto P2"),
33886 /* 27 */ "IfNoHope" OpHelp("key=r[P3@P4]"),
33887 /* 28 */ "NoConflict" OpHelp("key=r[P3@P4]"),
33888 /* 29 */ "NotFound" OpHelp("key=r[P3@P4]"),
33889 /* 30 */ "Found" OpHelp("key=r[P3@P4]"),
33890 /* 31 */ "SeekRowid" OpHelp("intkey=r[P3]"),
33891 /* 32 */ "NotExists" OpHelp("intkey=r[P3]"),
33892 /* 33 */ "Last" OpHelp(""),
33893 /* 34 */ "IfSmaller" OpHelp(""),
33894 /* 35 */ "SorterSort" OpHelp(""),
33895 /* 36 */ "Sort" OpHelp(""),
33896 /* 37 */ "Rewind" OpHelp(""),
33897 /* 38 */ "IdxLE" OpHelp("key=r[P3@P4]"),
33898 /* 39 */ "IdxGT" OpHelp("key=r[P3@P4]"),
33899 /* 40 */ "IdxLT" OpHelp("key=r[P3@P4]"),
33900 /* 41 */ "IdxGE" OpHelp("key=r[P3@P4]"),
33901 /* 42 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
33902 /* 43 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
33903 /* 44 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
33904 /* 45 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
33905 /* 46 */ "Program" OpHelp(""),
33906 /* 47 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
33907 /* 48 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
33908 /* 49 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
33909 /* 50 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
33910 /* 51 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
33911 /* 52 */ "Ne" OpHelp("IF r[P3]!=r[P1]"),
33912 /* 53 */ "Eq" OpHelp("IF r[P3]==r[P1]"),
33913 /* 54 */ "Gt" OpHelp("IF r[P3]>r[P1]"),
33914 /* 55 */ "Le" OpHelp("IF r[P3]<=r[P1]"),
33915 /* 56 */ "Lt" OpHelp("IF r[P3]<r[P1]"),
33916 /* 57 */ "Ge" OpHelp("IF r[P3]>=r[P1]"),
33917 /* 58 */ "ElseEq" OpHelp(""),
33918 /* 59 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
33919 /* 60 */ "IncrVacuum" OpHelp(""),
33920 /* 61 */ "VNext" OpHelp(""),
33921 /* 62 */ "Init" OpHelp("Start at P2"),
33922 /* 63 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
33923 /* 64 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
33924 /* 65 */ "Return" OpHelp(""),
33925 /* 66 */ "EndCoroutine" OpHelp(""),
33926 /* 67 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
33927 /* 68 */ "Halt" OpHelp(""),
33928 /* 69 */ "Integer" OpHelp("r[P2]=P1"),
33929 /* 70 */ "Int64" OpHelp("r[P2]=P4"),
33930 /* 71 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
33931 /* 72 */ "Null" OpHelp("r[P2..P3]=NULL"),
33932 /* 73 */ "SoftNull" OpHelp("r[P1]=NULL"),
33933 /* 74 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
33934 /* 75 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
33935 /* 76 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
33936 /* 77 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
33937 /* 78 */ "SCopy" OpHelp("r[P2]=r[P1]"),
33938 /* 79 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
33939 /* 80 */ "ChngCntRow" OpHelp("output=r[P1]"),
33940 /* 81 */ "ResultRow" OpHelp("output=r[P1@P2]"),
33941 /* 82 */ "CollSeq" OpHelp(""),
33942 /* 83 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
33943 /* 84 */ "RealAffinity" OpHelp(""),
33944 /* 85 */ "Cast" OpHelp("affinity(r[P1])"),
33945 /* 86 */ "Permutation" OpHelp(""),
33946 /* 87 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
33947 /* 88 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
33948 /* 89 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
33949 /* 90 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
33950 /* 91 */ "Column" OpHelp("r[P3]=PX"),
33951 /* 92 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
33952 /* 93 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
33953 /* 94 */ "Count" OpHelp("r[P2]=count()"),
33954 /* 95 */ "ReadCookie" OpHelp(""),
33955 /* 96 */ "SetCookie" OpHelp(""),
33956 /* 97 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
33957 /* 98 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
33958 /* 99 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
33959 /* 100 */ "OpenDup" OpHelp(""),
33960 /* 101 */ "OpenAutoindex" OpHelp("nColumn=P2"),
33961 /* 102 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
33962 /* 103 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
33963 /* 104 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
33964 /* 105 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
33965 /* 106 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -33966,78 +34003,80 @@
33966 /* 107 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
33967 /* 108 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
33968 /* 109 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
33969 /* 110 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
33970 /* 111 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
33971 /* 112 */ "OpenEphemeral" OpHelp("nColumn=P2"),
33972 /* 113 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
33973 /* 114 */ "SorterOpen" OpHelp(""),
33974 /* 115 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
33975 /* 116 */ "String8" OpHelp("r[P2]='P4'"),
33976 /* 117 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
33977 /* 118 */ "Close" OpHelp(""),
33978 /* 119 */ "ColumnsUsed" OpHelp(""),
33979 /* 120 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
33980 /* 121 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
33981 /* 122 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
33982 /* 123 */ "NewRowid" OpHelp("r[P2]=rowid"),
33983 /* 124 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
33984 /* 125 */ "RowCell" OpHelp(""),
33985 /* 126 */ "Delete" OpHelp(""),
33986 /* 127 */ "ResetCount" OpHelp(""),
33987 /* 128 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
33988 /* 129 */ "SorterData" OpHelp("r[P2]=data"),
33989 /* 130 */ "RowData" OpHelp("r[P2]=data"),
33990 /* 131 */ "Rowid" OpHelp("r[P2]=rowid"),
33991 /* 132 */ "NullRow" OpHelp(""),
33992 /* 133 */ "SeekEnd" OpHelp(""),
33993 /* 134 */ "IdxInsert" OpHelp("key=r[P2]"),
33994 /* 135 */ "SorterInsert" OpHelp("key=r[P2]"),
33995 /* 136 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
33996 /* 137 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
33997 /* 138 */ "IdxRowid" OpHelp("r[P2]=rowid"),
33998 /* 139 */ "FinishSeek" OpHelp(""),
33999 /* 140 */ "Destroy" OpHelp(""),
34000 /* 141 */ "Clear" OpHelp(""),
34001 /* 142 */ "ResetSorter" OpHelp(""),
34002 /* 143 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
34003 /* 144 */ "SqlExec" OpHelp(""),
34004 /* 145 */ "ParseSchema" OpHelp(""),
34005 /* 146 */ "LoadAnalysis" OpHelp(""),
34006 /* 147 */ "DropTable" OpHelp(""),
34007 /* 148 */ "DropIndex" OpHelp(""),
34008 /* 149 */ "DropTrigger" OpHelp(""),
34009 /* 150 */ "IntegrityCk" OpHelp(""),
34010 /* 151 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
34011 /* 152 */ "Real" OpHelp("r[P2]=P4"),
34012 /* 153 */ "Param" OpHelp(""),
34013 /* 154 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
34014 /* 155 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
34015 /* 156 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
34016 /* 157 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
34017 /* 158 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
34018 /* 159 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
34019 /* 160 */ "AggValue" OpHelp("r[P3]=value N=P2"),
34020 /* 161 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
34021 /* 162 */ "Expire" OpHelp(""),
34022 /* 163 */ "CursorLock" OpHelp(""),
34023 /* 164 */ "CursorUnlock" OpHelp(""),
34024 /* 165 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
34025 /* 166 */ "VBegin" OpHelp(""),
34026 /* 167 */ "VCreate" OpHelp(""),
34027 /* 168 */ "VDestroy" OpHelp(""),
34028 /* 169 */ "VOpen" OpHelp(""),
34029 /* 170 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
34030 /* 171 */ "VRename" OpHelp(""),
34031 /* 172 */ "Pagecount" OpHelp(""),
34032 /* 173 */ "MaxPgcnt" OpHelp(""),
34033 /* 174 */ "Trace" OpHelp(""),
34034 /* 175 */ "CursorHint" OpHelp(""),
34035 /* 176 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
34036 /* 177 */ "Noop" OpHelp(""),
34037 /* 178 */ "Explain" OpHelp(""),
34038 /* 179 */ "Abortable" OpHelp(""),
 
 
34039 };
34040 return azName[i];
34041 }
34042 #endif
34043
@@ -49846,15 +49885,18 @@
49846 if( p->szCache>=0 ){
49847 /* IMPLEMENTATION-OF: R-42059-47211 If the argument N is positive then the
49848 ** suggested cache size is set to N. */
49849 return p->szCache;
49850 }else{
 
49851 /* IMPLEMANTATION-OF: R-59858-46238 If the argument N is negative, then the
49852 ** number of cache pages is adjusted to be a number of pages that would
49853 ** use approximately abs(N*1024) bytes of memory based on the current
49854 ** page size. */
49855 return (int)((-1024*(i64)p->szCache)/(p->szPage+p->szExtra));
 
 
49856 }
49857 }
49858
49859 /*************************************************** General Interfaces ******
49860 **
@@ -51305,16 +51347,22 @@
51305 **
51306 ** Configure the cache_size limit for a cache.
51307 */
51308 static void pcache1Cachesize(sqlite3_pcache *p, int nMax){
51309 PCache1 *pCache = (PCache1 *)p;
 
 
51310 if( pCache->bPurgeable ){
51311 PGroup *pGroup = pCache->pGroup;
51312 pcache1EnterMutex(pGroup);
51313 pGroup->nMaxPage += (nMax - pCache->nMax);
 
 
 
 
51314 pGroup->mxPinned = pGroup->nMaxPage + 10 - pGroup->nMinPage;
51315 pCache->nMax = nMax;
51316 pCache->n90pct = pCache->nMax*9/10;
51317 pcache1EnforceMaxPage(pCache);
51318 pcache1LeaveMutex(pGroup);
51319 }
51320 }
@@ -51326,11 +51374,11 @@
51326 */
51327 static void pcache1Shrink(sqlite3_pcache *p){
51328 PCache1 *pCache = (PCache1*)p;
51329 if( pCache->bPurgeable ){
51330 PGroup *pGroup = pCache->pGroup;
51331 int savedMaxPage;
51332 pcache1EnterMutex(pGroup);
51333 savedMaxPage = pGroup->nMaxPage;
51334 pGroup->nMaxPage = 0;
51335 pcache1EnforceMaxPage(pCache);
51336 pGroup->nMaxPage = savedMaxPage;
@@ -68480,11 +68528,11 @@
68480 }
68481 if( page1[19]>2 ){
68482 goto page1_init_failed;
68483 }
68484
68485 /* If the write version is set to 2, this database should be accessed
68486 ** in WAL mode. If the log is not already open, open it now. Then
68487 ** return SQLITE_OK and return without populating BtShared.pPage1.
68488 ** The caller detects this and calls this function again. This is
68489 ** required as the version of page 1 currently in the page1 buffer
68490 ** may not be the latest version - there may be a newer one in the log
@@ -81883,13 +81931,13 @@
81883 /*
81884 ** This routine is called the when a VDBE tries to halt. If the VDBE
81885 ** has made changes and is in autocommit mode, then commit those
81886 ** changes. If a rollback is needed, then do the rollback.
81887 **
81888 ** This routine is the only way to move the state of a VM from
81889 ** SQLITE_MAGIC_RUN to SQLITE_MAGIC_HALT. It is harmless to
81890 ** call this on a VM that is in the SQLITE_MAGIC_HALT state.
81891 **
81892 ** Return an error code. If the commit could not complete because of
81893 ** lock contention, return SQLITE_BUSY. If SQLITE_BUSY is returned, it
81894 ** means the close did not happen and needs to be repeated.
81895 */
@@ -87051,10 +87099,23 @@
87051 pOut->flags = MEM_Int;
87052 return pOut;
87053 }
87054 }
87055
 
 
 
 
 
 
 
 
 
 
 
 
 
87056
87057 /*
87058 ** Execute as much of a VDBE program as we can.
87059 ** This is the core of sqlite3_step().
87060 */
@@ -88881,10 +88942,26 @@
88881 if( (pIn1->flags & MEM_Null)!=0 ){
88882 goto jump_to_p2;
88883 }
88884 break;
88885 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88886
88887 /* Opcode: ZeroOrNull P1 P2 P3 * *
88888 ** Synopsis: r[P2] = 0 OR NULL
88889 **
88890 ** If all both registers P1 and P3 are NOT NULL, then store a zero in
@@ -89249,10 +89326,104 @@
89249 }else{
89250 rc = SQLITE_CORRUPT_BKPT;
89251 goto abort_due_to_error;
89252 }
89253 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89254
89255 /* Opcode: Affinity P1 P2 * P4 *
89256 ** Synopsis: affinity(r[P1@P2])
89257 **
89258 ** Apply affinities to a range of P2 registers starting with P1.
@@ -92300,11 +92471,12 @@
92300 ** If P5 is not zero, then raise an SQLITE_CORRUPT_INDEX error
92301 ** if no matching index entry is found. This happens when running
92302 ** an UPDATE or DELETE statement and the index entry to be updated
92303 ** or deleted is not found. For some uses of IdxDelete
92304 ** (example: the EXCEPT operator) it does not matter that no matching
92305 ** entry is found. For those cases, P5 is zero.
 
92306 */
92307 case OP_IdxDelete: {
92308 VdbeCursor *pC;
92309 BtCursor *pCrsr;
92310 int res;
@@ -92326,11 +92498,11 @@
92326 rc = sqlite3BtreeIndexMoveto(pCrsr, &r, &res);
92327 if( rc ) goto abort_due_to_error;
92328 if( res==0 ){
92329 rc = sqlite3BtreeDelete(pCrsr, BTREE_AUXDELETE);
92330 if( rc ) goto abort_due_to_error;
92331 }else if( pOp->p5 ){
92332 rc = sqlite3ReportError(SQLITE_CORRUPT_INDEX, __LINE__, "index corruption");
92333 goto abort_due_to_error;
92334 }
92335 assert( pC->deferredMoveto==0 );
92336 pC->cacheStatus = CACHE_STALE;
@@ -113942,11 +114114,11 @@
113942
113943 if( sType.n==0 ){
113944 /* If there is no type specified, columns have the default affinity
113945 ** 'BLOB' with a default size of 4 bytes. */
113946 pCol->affinity = affinity;
113947 pCol->eType = eType;
113948 pCol->szEst = szEst;
113949 #ifdef SQLITE_ENABLE_SORTER_REFERENCES
113950 if( affinity==SQLITE_AFF_BLOB ){
113951 if( 4>=sqlite3GlobalConfig.szSorterRef ){
113952 pCol->colFlags |= COLFLAG_SORTERREF;
@@ -114237,11 +114409,11 @@
114237 }
114238 }
114239 }
114240 if( nTerm==1
114241 && pCol
114242 && pCol->eType==COLTYPE_INTEGER
114243 && sortOrder!=SQLITE_SO_DESC
114244 ){
114245 if( IN_RENAME_OBJECT && pList ){
114246 Expr *pCExpr = sqlite3ExprSkipCollate(pList->a[0].pExpr);
114247 sqlite3RenameTokenRemap(pParse, &pTab->iPKey, pCExpr);
@@ -114709,11 +114881,13 @@
114709
114710 /* Mark every PRIMARY KEY column as NOT NULL (except for imposter tables)
114711 */
114712 if( !db->init.imposterTable ){
114713 for(i=0; i<pTab->nCol; i++){
114714 if( (pTab->aCol[i].colFlags & COLFLAG_PRIMKEY)!=0 ){
 
 
114715 pTab->aCol[i].notNull = OE_Abort;
114716 }
114717 }
114718 pTab->tabFlags |= TF_HasNotNull;
114719 }
@@ -114942,11 +115116,11 @@
114942 */
114943 SQLITE_PRIVATE void sqlite3EndTable(
114944 Parse *pParse, /* Parse context */
114945 Token *pCons, /* The ',' token after the last column defn. */
114946 Token *pEnd, /* The ')' before options in the CREATE TABLE */
114947 u8 tabOpts, /* Extra table options. Usually 0. */
114948 Select *pSelect /* Select from a "CREATE ... AS SELECT" */
114949 ){
114950 Table *p; /* The new table */
114951 sqlite3 *db = pParse->db; /* The database connection */
114952 int iDb; /* Database in which the table lives */
@@ -114977,10 +115151,48 @@
114977 return;
114978 }
114979 p->tnum = db->init.newTnum;
114980 if( p->tnum==1 ) p->tabFlags |= TF_Readonly;
114981 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114982
114983 assert( (p->tabFlags & TF_HasPrimaryKey)==0
114984 || p->iPKey>=0 || sqlite3PrimaryKeyIndex(p)!=0 );
114985 assert( (p->tabFlags & TF_HasPrimaryKey)!=0
114986 || (p->iPKey<0 && sqlite3PrimaryKeyIndex(p)==0) );
@@ -123286,32 +123498,72 @@
123286
123287 return pIdx->zColAff;
123288 }
123289
123290 /*
 
 
 
 
 
 
123291 ** Compute the affinity string for table pTab, if it has not already been
123292 ** computed. As an optimization, omit trailing SQLITE_AFF_BLOB affinities.
123293 **
123294 ** If the affinity exists (if it is not entirely SQLITE_AFF_BLOB values) and
123295 ** if iReg>0 then code an OP_Affinity opcode that will set the affinities
123296 ** for register iReg and following. Or if affinities exists and iReg==0,
 
 
123297 ** then just set the P4 operand of the previous opcode (which should be
123298 ** an OP_MakeRecord) to the affinity string.
123299 **
123300 ** A column affinity string has one character per column:
123301 **
123302 ** Character Column affinity
123303 ** ------------------------------
123304 ** 'A' BLOB
123305 ** 'B' TEXT
123306 ** 'C' NUMERIC
123307 ** 'D' INTEGER
123308 ** 'E' REAL
 
 
 
 
 
 
 
 
 
 
 
 
123309 */
123310 SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
123311 int i, j;
123312 char *zColAff = pTab->zColAff;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123313 if( zColAff==0 ){
123314 sqlite3 *db = sqlite3VdbeDb(v);
123315 zColAff = (char *)sqlite3DbMallocRaw(0, pTab->nCol+1);
123316 if( !zColAff ){
123317 sqlite3OomFault(db);
@@ -123333,10 +123585,12 @@
123333 i = sqlite3Strlen30NN(zColAff);
123334 if( i ){
123335 if( iReg ){
123336 sqlite3VdbeAddOp4(v, OP_Affinity, iReg, i, 0, zColAff, i);
123337 }else{
 
 
123338 sqlite3VdbeChangeP4(v, -1, zColAff, i);
123339 }
123340 }
123341 }
123342
@@ -125970,10 +126224,13 @@
125970 if( pDest->nCol!=pSrc->nCol ){
125971 return 0; /* Number of columns must be the same in tab1 and tab2 */
125972 }
125973 if( pDest->iPKey!=pSrc->iPKey ){
125974 return 0; /* Both tables must have the same INTEGER PRIMARY KEY */
 
 
 
125975 }
125976 for(i=0; i<pDest->nCol; i++){
125977 Column *pDestCol = &pDest->aCol[i];
125978 Column *pSrcCol = &pSrc->aCol[i];
125979 #ifdef SQLITE_ENABLE_HIDDEN_COLUMNS
@@ -130237,10 +130494,11 @@
130237 Index *pIdx, *pPk;
130238 Index *pPrior = 0;
130239 int loopTop;
130240 int iDataCur, iIdxCur;
130241 int r1 = -1;
 
130242
130243 if( pTab->tnum<1 ) continue; /* Skip VIEWs or VIRTUAL TABLEs */
130244 if( pObjTab && pObjTab!=pTab ) continue;
130245 pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
130246 sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenRead, 0,
@@ -130258,27 +130516,50 @@
130258 loopTop = sqlite3VdbeAddOp2(v, OP_AddImm, 7, 1);
130259 if( !isQuick ){
130260 /* Sanity check on record header decoding */
130261 sqlite3VdbeAddOp3(v, OP_Column, iDataCur, pTab->nNVCol-1,3);
130262 sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
 
130263 }
130264 /* Verify that all NOT NULL columns really are NOT NULL */
 
 
130265 for(j=0; j<pTab->nCol; j++){
130266 char *zErr;
130267 int jmp2;
 
130268 if( j==pTab->iPKey ) continue;
130269 if( pTab->aCol[j].notNull==0 ) continue;
 
130270 sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, j, 3);
130271 if( sqlite3VdbeGetOp(v,-1)->opcode==OP_Column ){
130272 sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
130273 }
130274 jmp2 = sqlite3VdbeAddOp1(v, OP_NotNull, 3); VdbeCoverage(v);
130275 zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName,
130276 pTab->aCol[j].zCnName);
130277 sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
130278 integrityCheckResultRow(v);
130279 sqlite3VdbeJumpHere(v, jmp2);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130280 }
130281 /* Verify CHECK constraints */
130282 if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
130283 ExprList *pCheck = sqlite3ExprListDup(db, pTab->pCheck, 0);
130284 if( db->mallocFailed==0 ){
@@ -134401,11 +134682,11 @@
134401 pCol->colFlags |= COLFLAG_HASTYPE;
134402 }
134403 }
134404 if( pCol->affinity<=SQLITE_AFF_NONE ) pCol->affinity = aff;
134405 pColl = sqlite3ExprCollSeq(pParse, p);
134406 if( pColl && (pCol->colFlags & COLFLAG_HASCOLL)==0 ){
134407 assert( pTab->pIndex==0 );
134408 sqlite3ColumnSetColl(db, pCol, pColl->zName);
134409 }
134410 }
134411 pTab->szTabRow = 1; /* Any non-zero value works */
@@ -135223,11 +135504,15 @@
135223 }
135224
135225 multi_select_end:
135226 pDest->iSdst = dest.iSdst;
135227 pDest->nSdst = dest.nSdst;
135228 sqlite3SelectDelete(db, pDelete);
 
 
 
 
135229 return rc;
135230 }
135231 #endif /* SQLITE_OMIT_COMPOUND_SELECT */
135232
135233 /*
@@ -138791,11 +139076,12 @@
138791
138792 /* Make copies of constant WHERE-clause terms in the outer query down
138793 ** inside the subquery. This can help the subquery to run more efficiently.
138794 */
138795 if( OptimizationEnabled(db, SQLITE_PushDown)
138796 && (pItem->fg.isCte==0 || pItem->u2.pCteUse->eM10d!=M10d_Yes)
 
138797 && pushDownWhereTerms(pParse, pSub, p->pWhere, pItem->iCursor,
138798 (pItem->fg.jointype & JT_OUTER)!=0)
138799 ){
138800 #if SELECTTRACE_ENABLED
138801 if( sqlite3SelectTrace & 0x100 ){
@@ -138852,10 +139138,11 @@
138852 ** holds the result of the materialization. */
138853 CteUse *pCteUse = pItem->u2.pCteUse;
138854 sqlite3VdbeAddOp2(v, OP_Gosub, pCteUse->regRtn, pCteUse->addrM9e);
138855 if( pItem->iCursor!=pCteUse->iCur ){
138856 sqlite3VdbeAddOp2(v, OP_OpenDup, pItem->iCursor, pCteUse->iCur);
 
138857 }
138858 pSub->nSelectRow = pCteUse->nRowEst;
138859 }else if( (pPrior = isSelfJoinView(pTabList, pItem))!=0 ){
138860 /* This view has already been materialized by a prior entry in
138861 ** this same FROM clause. Reuse it. */
@@ -143567,11 +143854,12 @@
143567 SQLITE_PRIVATE void sqlite3VtabUnlock(VTable *pVTab){
143568 sqlite3 *db = pVTab->db;
143569
143570 assert( db );
143571 assert( pVTab->nRef>0 );
143572 assert( db->magic==SQLITE_MAGIC_OPEN || db->magic==SQLITE_MAGIC_ZOMBIE );
 
143573
143574 pVTab->nRef--;
143575 if( pVTab->nRef==0 ){
143576 sqlite3_vtab *p = pVTab->pVtab;
143577 sqlite3VtabModuleUnref(pVTab->db, pVTab->pMod);
@@ -146799,13 +147087,10 @@
146799 if( iRowidReg!=iReleaseReg ) sqlite3ReleaseTempReg(pParse, iReleaseReg);
146800 addrNxt = pLevel->addrNxt;
146801 sqlite3VdbeAddOp3(v, OP_SeekRowid, iCur, addrNxt, iRowidReg);
146802 VdbeCoverage(v);
146803 pLevel->op = OP_Noop;
146804 if( (pTerm->prereqAll & pLevel->notReady)==0 ){
146805 pTerm->wtFlags |= TERM_CODED;
146806 }
146807 }else if( (pLoop->wsFlags & WHERE_IPK)!=0
146808 && (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0
146809 ){
146810 /* Case 3: We have an inequality comparison against the ROWID field.
146811 */
@@ -151458,11 +151743,12 @@
151458 }
151459
151460 /*
151461 ** Return TRUE if all of the following are true:
151462 **
151463 ** (1) X has the same or lower cost that Y
 
151464 ** (2) X uses fewer WHERE clause terms than Y
151465 ** (3) Every WHERE clause term used by X is also used by Y
151466 ** (4) X skips at least as many columns as Y
151467 ** (5) If X is a covering index, than Y is too
151468 **
@@ -151481,15 +151767,12 @@
151481 ){
151482 int i, j;
151483 if( pX->nLTerm-pX->nSkip >= pY->nLTerm-pY->nSkip ){
151484 return 0; /* X is not a subset of Y */
151485 }
 
151486 if( pY->nSkip > pX->nSkip ) return 0;
151487 if( pX->rRun >= pY->rRun ){
151488 if( pX->rRun > pY->rRun ) return 0; /* X costs more than Y */
151489 if( pX->nOut > pY->nOut ) return 0; /* X costs more than Y */
151490 }
151491 for(i=pX->nLTerm-1; i>=0; i--){
151492 if( pX->aLTerm[i]==0 ) continue;
151493 for(j=pY->nLTerm-1; j>=0; j--){
151494 if( pY->aLTerm[j]==pX->aLTerm[i] ) break;
151495 }
@@ -151501,12 +151784,12 @@
151501 }
151502 return 1; /* All conditions meet */
151503 }
151504
151505 /*
151506 ** Try to adjust the cost of WhereLoop pTemplate upwards or downwards so
151507 ** that:
151508 **
151509 ** (1) pTemplate costs less than any other WhereLoops that are a proper
151510 ** subset of pTemplate
151511 **
151512 ** (2) pTemplate costs more than any other WhereLoops for which pTemplate
@@ -151523,20 +151806,24 @@
151523 if( (p->wsFlags & WHERE_INDEXED)==0 ) continue;
151524 if( whereLoopCheaperProperSubset(p, pTemplate) ){
151525 /* Adjust pTemplate cost downward so that it is cheaper than its
151526 ** subset p. */
151527 WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
151528 pTemplate->rRun, pTemplate->nOut, p->rRun, p->nOut-1));
151529 pTemplate->rRun = p->rRun;
151530 pTemplate->nOut = p->nOut - 1;
 
 
151531 }else if( whereLoopCheaperProperSubset(pTemplate, p) ){
151532 /* Adjust pTemplate cost upward so that it is costlier than p since
151533 ** pTemplate is a proper subset of p */
151534 WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
151535 pTemplate->rRun, pTemplate->nOut, p->rRun, p->nOut+1));
151536 pTemplate->rRun = p->rRun;
151537 pTemplate->nOut = p->nOut + 1;
 
 
151538 }
151539 }
151540 }
151541
151542 /*
@@ -158474,12 +158761,12 @@
158474 #define TK_EXISTS 20
158475 #define TK_TEMP 21
158476 #define TK_LP 22
158477 #define TK_RP 23
158478 #define TK_AS 24
158479 #define TK_WITHOUT 25
158480 #define TK_COMMA 26
158481 #define TK_ABORT 27
158482 #define TK_ACTION 28
158483 #define TK_AFTER 29
158484 #define TK_ANALYZE 30
158485 #define TK_ASC 31
@@ -158692,33 +158979,34 @@
158692 #ifndef INTERFACE
158693 # define INTERFACE 1
158694 #endif
158695 /************* Begin control #defines *****************************************/
158696 #define YYCODETYPE unsigned short int
158697 #define YYNOCODE 317
158698 #define YYACTIONTYPE unsigned short int
158699 #define YYWILDCARD 101
158700 #define sqlite3ParserTOKENTYPE Token
158701 typedef union {
158702 int yyinit;
158703 sqlite3ParserTOKENTYPE yy0;
158704 Window* yy49;
158705 ExprList* yy70;
158706 Select* yy81;
158707 With* yy103;
158708 struct FrameBound yy117;
158709 struct {int value; int mask;} yy139;
158710 SrcList* yy153;
158711 TriggerStep* yy157;
158712 Upsert* yy190;
158713 struct TrigEvent yy262;
158714 Cte* yy329;
158715 int yy376;
158716 Expr* yy404;
158717 IdList* yy436;
158718 const char* yy504;
158719 u8 yy552;
 
158720 } YYMINORTYPE;
158721 #ifndef YYSTACKDEPTH
158722 #define YYSTACKDEPTH 100
158723 #endif
158724 #define sqlite3ParserARG_SDECL
@@ -158730,22 +159018,22 @@
158730 #define sqlite3ParserCTX_PDECL ,Parse *pParse
158731 #define sqlite3ParserCTX_PARAM ,pParse
158732 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
158733 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
158734 #define YYFALLBACK 1
158735 #define YYNSTATE 570
158736 #define YYNRULE 398
158737 #define YYNRULE_WITH_ACTION 337
158738 #define YYNTOKEN 184
158739 #define YY_MAX_SHIFT 569
158740 #define YY_MIN_SHIFTREDUCE 825
158741 #define YY_MAX_SHIFTREDUCE 1222
158742 #define YY_ERROR_ACTION 1223
158743 #define YY_ACCEPT_ACTION 1224
158744 #define YY_NO_ACTION 1225
158745 #define YY_MIN_REDUCE 1226
158746 #define YY_MAX_REDUCE 1623
158747 /************* End control #defines *******************************************/
158748 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
158749
158750 /* Define the yytestcase() macro to be a no-op if is not already defined
158751 ** otherwise.
@@ -158808,605 +159096,610 @@
158808 ** yy_reduce_ofst[] For each state, the offset into yy_action for
158809 ** shifting non-terminals after a reduce.
158810 ** yy_default[] Default action for each state.
158811 **
158812 *********** Begin parsing tables **********************************************/
158813 #define YY_ACTTAB_COUNT (2023)
158814 static const YYACTIONTYPE yy_action[] = {
158815 /* 0 */ 563, 1295, 563, 1274, 168, 1257, 115, 112, 218, 373,
158816 /* 10 */ 563, 1295, 374, 563, 488, 563, 115, 112, 218, 406,
158817 /* 20 */ 1300, 1300, 41, 41, 41, 41, 514, 1504, 520, 1298,
158818 /* 30 */ 1298, 959, 41, 41, 1260, 71, 71, 51, 51, 960,
158819 /* 40 */ 557, 557, 557, 122, 123, 113, 1200, 1200, 1035, 1038,
158820 /* 50 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 414, 406,
158821 /* 60 */ 273, 273, 273, 273, 115, 112, 218, 115, 112, 218,
158822 /* 70 */ 197, 268, 545, 560, 515, 560, 211, 563, 385, 248,
158823 /* 80 */ 215, 521, 399, 122, 123, 113, 1200, 1200, 1035, 1038,
158824 /* 90 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 540, 13,
158825 /* 100 */ 13, 1259, 119, 119, 119, 119, 118, 118, 117, 117,
158826 /* 110 */ 117, 116, 441, 1176, 419, 197, 446, 320, 512, 1539,
158827 /* 120 */ 1545, 372, 1547, 6, 371, 1176, 1148, 394, 1148, 406,
158828 /* 130 */ 1545, 534, 115, 112, 218, 1415, 99, 30, 121, 121,
158829 /* 140 */ 121, 121, 119, 119, 119, 119, 118, 118, 117, 117,
158830 /* 150 */ 117, 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038,
158831 /* 160 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 31, 1176,
158832 /* 170 */ 1177, 1178, 241, 357, 1558, 501, 498, 497, 317, 124,
158833 /* 180 */ 319, 1176, 1177, 1178, 1176, 496, 119, 119, 119, 119,
158834 /* 190 */ 118, 118, 117, 117, 117, 116, 441, 139, 96, 406,
158835 /* 200 */ 121, 121, 121, 121, 114, 117, 117, 117, 116, 441,
158836 /* 210 */ 541, 1532, 119, 119, 119, 119, 118, 118, 117, 117,
158837 /* 220 */ 117, 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038,
158838 /* 230 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 406, 441,
158839 /* 240 */ 1176, 1177, 1178, 81, 439, 439, 439, 80, 119, 119,
158840 /* 250 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 488,
158841 /* 260 */ 1176, 318, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
158842 /* 270 */ 1028, 120, 120, 121, 121, 121, 121, 493, 1025, 1025,
158843 /* 280 */ 1036, 1039, 119, 119, 119, 119, 118, 118, 117, 117,
158844 /* 290 */ 117, 116, 441, 1584, 995, 1224, 1, 1, 569, 2,
158845 /* 300 */ 1228, 1267, 137, 1503, 245, 305, 473, 140, 406, 860,
158846 /* 310 */ 561, 1176, 914, 914, 1308, 359, 1176, 1177, 1178, 462,
158847 /* 320 */ 330, 119, 119, 119, 119, 118, 118, 117, 117, 117,
158848 /* 330 */ 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
158849 /* 340 */ 1028, 120, 120, 121, 121, 121, 121, 328, 273, 273,
158850 /* 350 */ 1015, 83, 1029, 425, 1564, 569, 2, 1228, 304, 554,
158851 /* 360 */ 925, 560, 305, 944, 140, 860, 1006, 1176, 1177, 1178,
158852 /* 370 */ 1005, 1308, 411, 213, 511, 229, 119, 119, 119, 119,
158853 /* 380 */ 118, 118, 117, 117, 117, 116, 441, 519, 347, 116,
158854 /* 390 */ 441, 119, 119, 119, 119, 118, 118, 117, 117, 117,
158855 /* 400 */ 116, 441, 1005, 1005, 1007, 273, 273, 445, 563, 16,
158856 /* 410 */ 16, 1590, 563, 1540, 563, 406, 1176, 6, 560, 344,
158857 /* 420 */ 182, 118, 118, 117, 117, 117, 116, 441, 416, 142,
158858 /* 430 */ 71, 71, 229, 563, 71, 71, 55, 55, 203, 122,
158859 /* 440 */ 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120,
158860 /* 450 */ 121, 121, 121, 121, 217, 13, 13, 1176, 406, 568,
158861 /* 460 */ 1400, 1228, 502, 137, 445, 168, 305, 545, 140, 1180,
158862 /* 470 */ 424, 545, 1176, 1177, 1178, 1308, 544, 438, 437, 944,
158863 /* 480 */ 513, 452, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
158864 /* 490 */ 1028, 120, 120, 121, 121, 121, 121, 315, 119, 119,
158865 /* 500 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 273,
158866 /* 510 */ 273, 1143, 416, 1176, 1177, 1178, 543, 563, 1143, 304,
158867 /* 520 */ 554, 1561, 560, 1207, 1143, 1207, 1180, 1143, 406, 530,
158868 /* 530 */ 421, 1143, 864, 183, 1143, 143, 229, 562, 32, 71,
158869 /* 540 */ 71, 119, 119, 119, 119, 118, 118, 117, 117, 117,
158870 /* 550 */ 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
158871 /* 560 */ 1028, 120, 120, 121, 121, 121, 121, 406, 445, 241,
158872 /* 570 */ 1176, 857, 501, 498, 497, 1176, 526, 189, 245, 538,
158873 /* 580 */ 1539, 282, 496, 370, 6, 563, 529, 477, 5, 279,
158874 /* 590 */ 1015, 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028,
158875 /* 600 */ 120, 120, 121, 121, 121, 121, 1006, 13, 13, 1414,
158876 /* 610 */ 1005, 119, 119, 119, 119, 118, 118, 117, 117, 117,
158877 /* 620 */ 116, 441, 426, 273, 273, 1176, 1176, 1177, 1178, 1619,
158878 /* 630 */ 392, 1176, 1177, 1178, 1176, 342, 560, 406, 525, 361,
158879 /* 640 */ 430, 1161, 1005, 1005, 1007, 348, 411, 357, 1558, 488,
158880 /* 650 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
158881 /* 660 */ 441, 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028,
158882 /* 670 */ 120, 120, 121, 121, 121, 121, 406, 830, 831, 832,
158883 /* 680 */ 1016, 1176, 1177, 1178, 396, 285, 148, 1312, 304, 554,
158884 /* 690 */ 1176, 1177, 1178, 1467, 216, 3, 337, 137, 340, 560,
158885 /* 700 */ 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120,
158886 /* 710 */ 120, 121, 121, 121, 121, 563, 504, 946, 273, 273,
158887 /* 720 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
158888 /* 730 */ 441, 560, 1176, 427, 563, 451, 98, 13, 13, 259,
158889 /* 740 */ 276, 356, 507, 351, 506, 246, 406, 361, 469, 1530,
158890 /* 750 */ 1000, 347, 293, 304, 554, 1589, 71, 71, 889, 119,
158891 /* 760 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 441,
158892 /* 770 */ 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120,
158893 /* 780 */ 120, 121, 121, 121, 121, 406, 1143, 1078, 1176, 1177,
158894 /* 790 */ 1178, 416, 1080, 300, 150, 995, 1080, 361, 361, 1143,
158895 /* 800 */ 361, 378, 1143, 477, 563, 244, 243, 242, 1278, 122,
158896 /* 810 */ 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120,
158897 /* 820 */ 121, 121, 121, 121, 563, 880, 13, 13, 483, 119,
158898 /* 830 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 441,
158899 /* 840 */ 1176, 191, 540, 563, 147, 149, 13, 13, 328, 457,
158900 /* 850 */ 316, 1083, 1083, 485, 1537, 406, 505, 1530, 6, 1514,
158901 /* 860 */ 284, 192, 1277, 145, 881, 71, 71, 488, 119, 119,
158902 /* 870 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 122,
158903 /* 880 */ 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120,
158904 /* 890 */ 121, 121, 121, 121, 563, 471, 1176, 1177, 1178, 406,
158905 /* 900 */ 852, 327, 301, 462, 330, 1516, 270, 1530, 1530, 944,
158906 /* 910 */ 1531, 1307, 313, 9, 842, 251, 71, 71, 477, 428,
158907 /* 920 */ 146, 488, 38, 945, 101, 113, 1200, 1200, 1035, 1038,
158908 /* 930 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 119, 119,
158909 /* 940 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 563,
158910 /* 950 */ 1197, 1099, 563, 436, 563, 1533, 563, 852, 1122, 1617,
158911 /* 960 */ 454, 290, 1617, 546, 251, 1303, 1100, 267, 267, 281,
158912 /* 970 */ 404, 70, 70, 460, 71, 71, 71, 71, 13, 13,
158913 /* 980 */ 560, 1101, 119, 119, 119, 119, 118, 118, 117, 117,
158914 /* 990 */ 117, 116, 441, 542, 104, 273, 273, 273, 273, 1197,
158915 /* 1000 */ 217, 1468, 900, 471, 450, 563, 1473, 1197, 560, 447,
158916 /* 1010 */ 560, 545, 901, 440, 406, 1058, 292, 274, 274, 198,
158917 /* 1020 */ 547, 450, 449, 1473, 1475, 944, 455, 56, 56, 410,
158918 /* 1030 */ 560, 1122, 1618, 379, 406, 1618, 404, 1120, 122, 123,
158919 /* 1040 */ 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120, 121,
158920 /* 1050 */ 121, 121, 121, 1460, 406, 12, 1197, 1512, 122, 123,
158921 /* 1060 */ 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120, 121,
158922 /* 1070 */ 121, 121, 121, 308, 471, 126, 359, 286, 122, 111,
158923 /* 1080 */ 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120, 121,
158924 /* 1090 */ 121, 121, 121, 309, 450, 471, 1473, 119, 119, 119,
158925 /* 1100 */ 119, 118, 118, 117, 117, 117, 116, 441, 1176, 563,
158926 /* 1110 */ 1120, 482, 563, 312, 433, 479, 197, 119, 119, 119,
158927 /* 1120 */ 119, 118, 118, 117, 117, 117, 116, 441, 405, 12,
158928 /* 1130 */ 536, 15, 15, 478, 43, 43, 509, 119, 119, 119,
158929 /* 1140 */ 119, 118, 118, 117, 117, 117, 116, 441, 289, 535,
158930 /* 1150 */ 294, 563, 294, 391, 1220, 438, 437, 406, 1154, 403,
158931 /* 1160 */ 402, 1400, 920, 1204, 1176, 1177, 1178, 919, 1206, 291,
158932 /* 1170 */ 1306, 1249, 412, 57, 57, 488, 1205, 563, 556, 412,
158933 /* 1180 */ 1176, 1344, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028,
158934 /* 1190 */ 120, 120, 121, 121, 121, 121, 1400, 1143, 563, 44,
158935 /* 1200 */ 44, 1207, 194, 1207, 273, 273, 1400, 461, 537, 1154,
158936 /* 1210 */ 1143, 108, 555, 1143, 4, 391, 1121, 560, 1538, 335,
158937 /* 1220 */ 58, 58, 6, 1246, 1099, 380, 1400, 376, 558, 1536,
158938 /* 1230 */ 563, 422, 1221, 6, 304, 554, 1176, 1177, 1178, 1100,
158939 /* 1240 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
158940 /* 1250 */ 441, 442, 59, 59, 1101, 516, 1535, 273, 273, 563,
158941 /* 1260 */ 6, 563, 110, 552, 563, 528, 423, 413, 169, 548,
158942 /* 1270 */ 560, 108, 555, 137, 4, 551, 484, 272, 215, 222,
158943 /* 1280 */ 211, 60, 60, 61, 61, 98, 62, 62, 558, 273,
158944 /* 1290 */ 273, 563, 1015, 467, 1221, 563, 434, 563, 106, 106,
158945 /* 1300 */ 8, 920, 560, 273, 273, 107, 919, 442, 565, 564,
158946 /* 1310 */ 563, 442, 1005, 45, 45, 464, 560, 46, 46, 47,
158947 /* 1320 */ 47, 84, 202, 552, 1215, 404, 468, 563, 205, 304,
158948 /* 1330 */ 554, 563, 49, 49, 563, 522, 404, 532, 563, 867,
158949 /* 1340 */ 563, 105, 531, 103, 1005, 1005, 1007, 1008, 27, 50,
158950 /* 1350 */ 50, 563, 1015, 63, 63, 475, 64, 64, 106, 106,
158951 /* 1360 */ 65, 65, 14, 14, 17, 107, 563, 442, 565, 564,
158952 /* 1370 */ 563, 303, 1005, 66, 66, 563, 226, 563, 959, 563,
158953 /* 1380 */ 543, 404, 1196, 1343, 871, 278, 960, 456, 128, 128,
158954 /* 1390 */ 563, 1065, 67, 67, 563, 206, 867, 52, 52, 68,
158955 /* 1400 */ 68, 69, 69, 417, 1005, 1005, 1007, 1008, 27, 1563,
158956 /* 1410 */ 1165, 444, 53, 53, 277, 1519, 156, 156, 307, 389,
158957 /* 1420 */ 389, 388, 262, 386, 1165, 444, 839, 321, 277, 108,
158958 /* 1430 */ 555, 523, 4, 389, 389, 388, 262, 386, 563, 223,
158959 /* 1440 */ 839, 311, 326, 1492, 1117, 98, 558, 393, 1065, 310,
158960 /* 1450 */ 563, 476, 563, 223, 563, 311, 879, 878, 1009, 277,
158961 /* 1460 */ 157, 157, 463, 310, 389, 389, 388, 262, 386, 442,
158962 /* 1470 */ 518, 839, 76, 76, 54, 54, 72, 72, 355, 225,
158963 /* 1480 */ 563, 552, 275, 563, 223, 325, 311, 161, 354, 465,
158964 /* 1490 */ 135, 563, 228, 225, 310, 532, 563, 206, 886, 887,
158965 /* 1500 */ 533, 161, 129, 129, 135, 73, 73, 224, 962, 963,
158966 /* 1510 */ 1015, 563, 287, 130, 130, 1009, 106, 106, 131, 131,
158967 /* 1520 */ 563, 224, 563, 107, 225, 442, 565, 564, 997, 1276,
158968 /* 1530 */ 1005, 250, 161, 127, 127, 135, 108, 555, 1077, 4,
158969 /* 1540 */ 1077, 407, 155, 155, 154, 154, 304, 554, 1126, 563,
158970 /* 1550 */ 1331, 563, 224, 558, 470, 407, 563, 250, 563, 1491,
158971 /* 1560 */ 304, 554, 1005, 1005, 1007, 1008, 27, 563, 480, 332,
158972 /* 1570 */ 448, 136, 136, 134, 134, 1340, 442, 336, 132, 132,
158973 /* 1580 */ 133, 133, 563, 1076, 448, 1076, 407, 563, 552, 75,
158974 /* 1590 */ 75, 304, 554, 339, 341, 343, 108, 555, 563, 4,
158975 /* 1600 */ 1577, 299, 532, 563, 77, 77, 1291, 531, 472, 74,
158976 /* 1610 */ 74, 250, 1275, 558, 350, 448, 331, 1015, 360, 98,
158977 /* 1620 */ 42, 42, 1352, 106, 106, 48, 48, 1399, 494, 1327,
158978 /* 1630 */ 107, 247, 442, 565, 564, 345, 442, 1005, 98, 1061,
158979 /* 1640 */ 953, 917, 247, 250, 110, 1552, 550, 850, 552, 918,
158980 /* 1650 */ 144, 1338, 110, 549, 1405, 1256, 1248, 1237, 1236, 1238,
158981 /* 1660 */ 1571, 1324, 208, 390, 489, 265, 363, 200, 365, 1005,
158982 /* 1670 */ 1005, 1007, 1008, 27, 11, 280, 221, 1015, 323, 474,
158983 /* 1680 */ 1274, 367, 212, 106, 106, 924, 1386, 324, 288, 1381,
158984 /* 1690 */ 107, 453, 442, 565, 564, 283, 329, 1005, 1391, 499,
158985 /* 1700 */ 353, 1374, 1464, 108, 555, 1463, 4, 1574, 1390, 397,
158986 /* 1710 */ 1215, 171, 254, 369, 383, 207, 195, 196, 1511, 553,
158987 /* 1720 */ 558, 1509, 415, 1212, 100, 555, 83, 4, 204, 1005,
158988 /* 1730 */ 1005, 1007, 1008, 27, 180, 166, 173, 219, 79, 82,
158989 /* 1740 */ 458, 558, 175, 442, 35, 1387, 176, 459, 177, 178,
158990 /* 1750 */ 492, 231, 96, 1469, 395, 552, 1393, 1392, 36, 466,
158991 /* 1760 */ 1395, 184, 398, 481, 442, 1458, 235, 89, 1480, 487,
158992 /* 1770 */ 266, 334, 237, 188, 490, 400, 552, 338, 238, 508,
158993 /* 1780 */ 1239, 239, 1294, 1293, 1015, 1292, 1285, 429, 91, 871,
158994 /* 1790 */ 106, 106, 1588, 213, 401, 1587, 431, 107, 1264, 442,
158995 /* 1800 */ 565, 564, 1263, 352, 1005, 1015, 1262, 1586, 1557, 517,
158996 /* 1810 */ 432, 106, 106, 1284, 297, 298, 358, 524, 107, 1335,
158997 /* 1820 */ 442, 565, 564, 95, 1336, 1005, 252, 253, 435, 125,
158998 /* 1830 */ 543, 1543, 10, 1444, 377, 1542, 1005, 1005, 1007, 1008,
158999 /* 1840 */ 27, 97, 527, 375, 362, 102, 260, 364, 381, 1317,
159000 /* 1850 */ 382, 1334, 366, 1245, 1333, 1316, 368, 1005, 1005, 1007,
159001 /* 1860 */ 1008, 27, 1359, 1358, 34, 199, 1171, 566, 261, 263,
159002 /* 1870 */ 264, 567, 1234, 158, 1229, 141, 295, 159, 1496, 302,
159003 /* 1880 */ 1497, 1495, 1494, 160, 826, 209, 443, 201, 306, 210,
159004 /* 1890 */ 78, 220, 1075, 138, 1073, 314, 162, 172, 1196, 227,
159005 /* 1900 */ 174, 903, 322, 230, 1089, 179, 163, 164, 418, 408,
159006 /* 1910 */ 409, 170, 181, 85, 86, 420, 87, 165, 1092, 88,
159007 /* 1920 */ 233, 232, 1088, 151, 18, 234, 1081, 250, 333, 1209,
159008 /* 1930 */ 185, 486, 236, 186, 37, 841, 491, 354, 240, 346,
159009 /* 1940 */ 495, 187, 90, 869, 19, 20, 500, 503, 349, 92,
159010 /* 1950 */ 167, 152, 296, 882, 93, 510, 94, 1159, 153, 1041,
159011 /* 1960 */ 1128, 39, 214, 269, 1127, 271, 249, 952, 190, 947,
159012 /* 1970 */ 110, 1149, 21, 7, 1153, 22, 1145, 23, 1147, 24,
159013 /* 1980 */ 1133, 25, 1152, 33, 539, 193, 26, 1056, 98, 1042,
159014 /* 1990 */ 1040, 1044, 1098, 1045, 1097, 256, 255, 28, 40, 257,
159015 /* 2000 */ 1010, 851, 109, 29, 913, 559, 384, 387, 258, 1167,
159016 /* 2010 */ 1166, 1225, 1225, 1225, 1579, 1225, 1225, 1225, 1225, 1225,
159017 /* 2020 */ 1225, 1225, 1578,
 
159018 };
159019 static const YYCODETYPE yy_lookahead[] = {
159020 /* 0 */ 192, 221, 192, 223, 192, 214, 272, 273, 274, 217,
159021 /* 10 */ 192, 231, 217, 192, 192, 192, 272, 273, 274, 19,
159022 /* 20 */ 233, 234, 214, 215, 214, 215, 203, 293, 203, 233,
159023 /* 30 */ 234, 31, 214, 215, 214, 214, 215, 214, 215, 39,
159024 /* 40 */ 208, 209, 210, 43, 44, 45, 46, 47, 48, 49,
159025 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 236, 19,
159026 /* 60 */ 237, 238, 237, 238, 272, 273, 274, 272, 273, 274,
159027 /* 70 */ 192, 211, 251, 250, 251, 250, 26, 192, 200, 254,
159028 /* 80 */ 255, 260, 204, 43, 44, 45, 46, 47, 48, 49,
159029 /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 214,
159030 /* 100 */ 215, 214, 102, 103, 104, 105, 106, 107, 108, 109,
159031 /* 110 */ 110, 111, 112, 59, 229, 192, 294, 16, 306, 307,
159032 /* 120 */ 312, 313, 312, 311, 314, 59, 86, 204, 88, 19,
159033 /* 130 */ 312, 313, 272, 273, 274, 271, 26, 22, 54, 55,
159034 /* 140 */ 56, 57, 102, 103, 104, 105, 106, 107, 108, 109,
159035 /* 150 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
159036 /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 53, 115,
159037 /* 170 */ 116, 117, 118, 309, 310, 121, 122, 123, 77, 69,
159038 /* 180 */ 79, 115, 116, 117, 59, 131, 102, 103, 104, 105,
159039 /* 190 */ 106, 107, 108, 109, 110, 111, 112, 72, 148, 19,
159040 /* 200 */ 54, 55, 56, 57, 58, 108, 109, 110, 111, 112,
159041 /* 210 */ 304, 305, 102, 103, 104, 105, 106, 107, 108, 109,
159042 /* 220 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
159043 /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 112,
159044 /* 240 */ 115, 116, 117, 24, 208, 209, 210, 67, 102, 103,
159045 /* 250 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 192,
159046 /* 260 */ 59, 160, 43, 44, 45, 46, 47, 48, 49, 50,
159047 /* 270 */ 51, 52, 53, 54, 55, 56, 57, 19, 46, 47,
159048 /* 280 */ 48, 49, 102, 103, 104, 105, 106, 107, 108, 109,
159049 /* 290 */ 110, 111, 112, 213, 73, 184, 185, 186, 187, 188,
159050 /* 300 */ 189, 221, 81, 236, 46, 194, 192, 196, 19, 59,
159051 /* 310 */ 133, 59, 135, 136, 203, 192, 115, 116, 117, 127,
159052 /* 320 */ 128, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159053 /* 330 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
159054 /* 340 */ 51, 52, 53, 54, 55, 56, 57, 126, 237, 238,
159055 /* 350 */ 100, 150, 120, 230, 186, 187, 188, 189, 137, 138,
159056 /* 360 */ 108, 250, 194, 26, 196, 115, 116, 115, 116, 117,
159057 /* 370 */ 120, 203, 114, 164, 165, 264, 102, 103, 104, 105,
159058 /* 380 */ 106, 107, 108, 109, 110, 111, 112, 192, 130, 111,
159059 /* 390 */ 112, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159060 /* 400 */ 111, 112, 152, 153, 154, 237, 238, 296, 192, 214,
159061 /* 410 */ 215, 228, 192, 307, 192, 19, 59, 311, 250, 23,
159062 /* 420 */ 22, 106, 107, 108, 109, 110, 111, 112, 192, 72,
159063 /* 430 */ 214, 215, 264, 192, 214, 215, 214, 215, 149, 43,
159064 /* 440 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
159065 /* 450 */ 54, 55, 56, 57, 117, 214, 215, 59, 19, 187,
159066 /* 460 */ 192, 189, 23, 81, 296, 192, 194, 251, 196, 59,
159067 /* 470 */ 229, 251, 115, 116, 117, 203, 260, 106, 107, 142,
159068 /* 480 */ 260, 267, 43, 44, 45, 46, 47, 48, 49, 50,
159069 /* 490 */ 51, 52, 53, 54, 55, 56, 57, 261, 102, 103,
159070 /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 237,
159071 /* 510 */ 238, 76, 192, 115, 116, 117, 144, 192, 76, 137,
159072 /* 520 */ 138, 192, 250, 152, 89, 154, 116, 92, 19, 87,
159073 /* 530 */ 262, 89, 23, 22, 92, 163, 264, 192, 22, 214,
159074 /* 540 */ 215, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159075 /* 550 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
159076 /* 560 */ 51, 52, 53, 54, 55, 56, 57, 19, 296, 118,
159077 /* 570 */ 59, 23, 121, 122, 123, 59, 251, 26, 46, 306,
159078 /* 580 */ 307, 261, 131, 192, 311, 192, 144, 192, 22, 203,
159079 /* 590 */ 100, 43, 44, 45, 46, 47, 48, 49, 50, 51,
159080 /* 600 */ 52, 53, 54, 55, 56, 57, 116, 214, 215, 271,
159081 /* 610 */ 120, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159082 /* 620 */ 111, 112, 229, 237, 238, 59, 115, 116, 117, 299,
159083 /* 630 */ 300, 115, 116, 117, 59, 16, 250, 19, 192, 192,
159084 /* 640 */ 19, 23, 152, 153, 154, 24, 114, 309, 310, 192,
159085 /* 650 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
159086 /* 660 */ 112, 43, 44, 45, 46, 47, 48, 49, 50, 51,
159087 /* 670 */ 52, 53, 54, 55, 56, 57, 19, 7, 8, 9,
159088 /* 680 */ 23, 115, 116, 117, 203, 290, 239, 238, 137, 138,
159089 /* 690 */ 115, 116, 117, 236, 192, 22, 77, 81, 79, 250,
159090 /* 700 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
159091 /* 710 */ 53, 54, 55, 56, 57, 192, 95, 142, 237, 238,
159092 /* 720 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
159093 /* 730 */ 112, 250, 59, 112, 192, 119, 26, 214, 215, 118,
159094 /* 740 */ 119, 120, 121, 122, 123, 124, 19, 192, 267, 302,
159095 /* 750 */ 23, 130, 229, 137, 138, 23, 214, 215, 26, 102,
159096 /* 760 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
159097 /* 770 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
159098 /* 780 */ 53, 54, 55, 56, 57, 19, 76, 11, 115, 116,
159099 /* 790 */ 117, 192, 29, 251, 239, 73, 33, 192, 192, 89,
159100 /* 800 */ 192, 192, 92, 192, 192, 126, 127, 128, 224, 43,
159101 /* 810 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
159102 /* 820 */ 54, 55, 56, 57, 192, 35, 214, 215, 65, 102,
159103 /* 830 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
159104 /* 840 */ 59, 229, 192, 192, 239, 239, 214, 215, 126, 127,
159105 /* 850 */ 128, 126, 127, 128, 307, 19, 66, 302, 311, 192,
159106 /* 860 */ 261, 229, 224, 22, 74, 214, 215, 192, 102, 103,
159107 /* 870 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 43,
159108 /* 880 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
159109 /* 890 */ 54, 55, 56, 57, 192, 192, 115, 116, 117, 19,
159110 /* 900 */ 59, 290, 251, 127, 128, 192, 23, 302, 302, 26,
159111 /* 910 */ 302, 236, 192, 22, 21, 24, 214, 215, 192, 129,
159112 /* 920 */ 22, 192, 24, 142, 158, 45, 46, 47, 48, 49,
159113 /* 930 */ 50, 51, 52, 53, 54, 55, 56, 57, 102, 103,
159114 /* 940 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 192,
159115 /* 950 */ 59, 12, 192, 251, 192, 305, 192, 116, 22, 23,
159116 /* 960 */ 242, 203, 26, 203, 24, 236, 27, 237, 238, 266,
159117 /* 970 */ 252, 214, 215, 80, 214, 215, 214, 215, 214, 215,
159118 /* 980 */ 250, 42, 102, 103, 104, 105, 106, 107, 108, 109,
159119 /* 990 */ 110, 111, 112, 229, 158, 237, 238, 237, 238, 59,
159120 /* 1000 */ 117, 281, 63, 192, 192, 192, 192, 116, 250, 192,
159121 /* 1010 */ 250, 251, 73, 251, 19, 122, 290, 237, 238, 24,
159122 /* 1020 */ 260, 209, 210, 209, 210, 142, 242, 214, 215, 197,
159123 /* 1030 */ 250, 22, 23, 276, 19, 26, 252, 101, 43, 44,
159124 /* 1040 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
159125 /* 1050 */ 55, 56, 57, 160, 19, 211, 116, 192, 43, 44,
159126 /* 1060 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
159127 /* 1070 */ 55, 56, 57, 192, 192, 22, 192, 266, 43, 44,
159128 /* 1080 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
159129 /* 1090 */ 55, 56, 57, 192, 282, 192, 282, 102, 103, 104,
159130 /* 1100 */ 105, 106, 107, 108, 109, 110, 111, 112, 59, 192,
159131 /* 1110 */ 101, 279, 192, 192, 230, 283, 192, 102, 103, 104,
159132 /* 1120 */ 105, 106, 107, 108, 109, 110, 111, 112, 204, 211,
159133 /* 1130 */ 66, 214, 215, 289, 214, 215, 108, 102, 103, 104,
159134 /* 1140 */ 105, 106, 107, 108, 109, 110, 111, 112, 266, 85,
159135 /* 1150 */ 226, 192, 228, 22, 23, 106, 107, 19, 94, 106,
159136 /* 1160 */ 107, 192, 134, 114, 115, 116, 117, 139, 119, 266,
159137 /* 1170 */ 203, 206, 207, 214, 215, 192, 127, 192, 206, 207,
159138 /* 1180 */ 59, 192, 44, 45, 46, 47, 48, 49, 50, 51,
159139 /* 1190 */ 52, 53, 54, 55, 56, 57, 192, 76, 192, 214,
159140 /* 1200 */ 215, 152, 284, 154, 237, 238, 192, 289, 87, 145,
159141 /* 1210 */ 89, 19, 20, 92, 22, 22, 23, 250, 307, 236,
159142 /* 1220 */ 214, 215, 311, 203, 12, 247, 192, 249, 36, 307,
159143 /* 1230 */ 192, 262, 101, 311, 137, 138, 115, 116, 117, 27,
159144 /* 1240 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
159145 /* 1250 */ 112, 59, 214, 215, 42, 203, 307, 237, 238, 192,
159146 /* 1260 */ 311, 192, 26, 71, 192, 144, 262, 297, 298, 203,
159147 /* 1270 */ 250, 19, 20, 81, 22, 63, 262, 254, 255, 15,
159148 /* 1280 */ 26, 214, 215, 214, 215, 26, 214, 215, 36, 237,
159149 /* 1290 */ 238, 192, 100, 114, 101, 192, 262, 192, 106, 107,
159150 /* 1300 */ 48, 134, 250, 237, 238, 113, 139, 115, 116, 117,
159151 /* 1310 */ 192, 59, 120, 214, 215, 242, 250, 214, 215, 214,
159152 /* 1320 */ 215, 148, 149, 71, 60, 252, 242, 192, 149, 137,
159153 /* 1330 */ 138, 192, 214, 215, 192, 19, 252, 85, 192, 59,
159154 /* 1340 */ 192, 157, 90, 159, 152, 153, 154, 155, 156, 214,
159155 /* 1350 */ 215, 192, 100, 214, 215, 19, 214, 215, 106, 107,
159156 /* 1360 */ 214, 215, 214, 215, 22, 113, 192, 115, 116, 117,
159157 /* 1370 */ 192, 242, 120, 214, 215, 192, 24, 192, 31, 192,
159158 /* 1380 */ 144, 252, 26, 192, 125, 99, 39, 192, 214, 215,
159159 /* 1390 */ 192, 59, 214, 215, 192, 141, 116, 214, 215, 214,
159160 /* 1400 */ 215, 214, 215, 61, 152, 153, 154, 155, 156, 0,
159161 /* 1410 */ 1, 2, 214, 215, 5, 192, 214, 215, 132, 10,
159162 /* 1420 */ 11, 12, 13, 14, 1, 2, 17, 192, 5, 19,
159163 /* 1430 */ 20, 115, 22, 10, 11, 12, 13, 14, 192, 30,
159164 /* 1440 */ 17, 32, 23, 192, 23, 26, 36, 26, 116, 40,
159165 /* 1450 */ 192, 115, 192, 30, 192, 32, 119, 120, 59, 5,
159166 /* 1460 */ 214, 215, 128, 40, 10, 11, 12, 13, 14, 59,
159167 /* 1470 */ 19, 17, 214, 215, 214, 215, 214, 215, 120, 70,
159168 /* 1480 */ 192, 71, 22, 192, 30, 151, 32, 78, 130, 128,
159169 /* 1490 */ 81, 192, 140, 70, 40, 85, 192, 141, 7, 8,
159170 /* 1500 */ 90, 78, 214, 215, 81, 214, 215, 98, 83, 84,
159171 /* 1510 */ 100, 192, 151, 214, 215, 116, 106, 107, 214, 215,
159172 /* 1520 */ 192, 98, 192, 113, 70, 115, 116, 117, 23, 224,
159173 /* 1530 */ 120, 26, 78, 214, 215, 81, 19, 20, 152, 22,
159174 /* 1540 */ 154, 132, 214, 215, 214, 215, 137, 138, 97, 192,
159175 /* 1550 */ 256, 192, 98, 36, 23, 132, 192, 26, 192, 192,
159176 /* 1560 */ 137, 138, 152, 153, 154, 155, 156, 192, 192, 192,
159177 /* 1570 */ 161, 214, 215, 214, 215, 192, 59, 192, 214, 215,
159178 /* 1580 */ 214, 215, 192, 152, 161, 154, 132, 192, 71, 214,
159179 /* 1590 */ 215, 137, 138, 192, 192, 192, 19, 20, 192, 22,
159180 /* 1600 */ 140, 253, 85, 192, 214, 215, 192, 90, 23, 214,
159181 /* 1610 */ 215, 26, 192, 36, 192, 161, 23, 100, 192, 26,
159182 /* 1620 */ 214, 215, 192, 106, 107, 214, 215, 192, 23, 192,
159183 /* 1630 */ 113, 26, 115, 116, 117, 23, 59, 120, 26, 23,
159184 /* 1640 */ 23, 23, 26, 26, 26, 316, 234, 23, 71, 23,
159185 /* 1650 */ 26, 192, 26, 192, 192, 192, 192, 192, 192, 192,
159186 /* 1660 */ 192, 253, 212, 190, 286, 285, 253, 240, 253, 152,
159187 /* 1670 */ 153, 154, 155, 156, 241, 243, 295, 100, 291, 291,
159188 /* 1680 */ 223, 253, 227, 106, 107, 108, 269, 244, 244, 265,
159189 /* 1690 */ 113, 257, 115, 116, 117, 257, 243, 120, 269, 218,
159190 /* 1700 */ 217, 265, 217, 19, 20, 217, 22, 195, 269, 269,
159191 /* 1710 */ 60, 295, 140, 257, 243, 241, 247, 247, 199, 278,
159192 /* 1720 */ 36, 199, 199, 38, 19, 20, 150, 22, 149, 152,
159193 /* 1730 */ 153, 154, 155, 156, 22, 43, 232, 295, 292, 292,
159194 /* 1740 */ 18, 36, 235, 59, 268, 270, 235, 199, 235, 235,
159195 /* 1750 */ 18, 198, 148, 281, 244, 71, 270, 270, 268, 244,
159196 /* 1760 */ 232, 232, 244, 199, 59, 244, 198, 157, 288, 62,
159197 /* 1770 */ 199, 287, 198, 22, 219, 219, 71, 199, 198, 114,
159198 /* 1780 */ 199, 198, 216, 216, 100, 216, 225, 64, 22, 125,
159199 /* 1790 */ 106, 107, 222, 164, 219, 222, 24, 113, 216, 115,
159200 /* 1800 */ 116, 117, 218, 216, 120, 100, 216, 216, 310, 303,
159201 /* 1810 */ 112, 106, 107, 225, 280, 280, 219, 143, 113, 259,
159202 /* 1820 */ 115, 116, 117, 114, 259, 120, 199, 91, 82, 147,
159203 /* 1830 */ 144, 315, 22, 275, 199, 315, 152, 153, 154, 155,
159204 /* 1840 */ 156, 146, 145, 247, 258, 157, 25, 258, 245, 248,
159205 /* 1850 */ 244, 259, 258, 202, 259, 248, 258, 152, 153, 154,
159206 /* 1860 */ 155, 156, 263, 263, 26, 246, 13, 201, 193, 193,
159207 /* 1870 */ 6, 191, 191, 205, 191, 220, 220, 205, 211, 277,
159208 /* 1880 */ 211, 211, 211, 205, 4, 212, 3, 22, 162, 212,
159209 /* 1890 */ 211, 15, 23, 16, 23, 138, 129, 150, 26, 24,
159210 /* 1900 */ 141, 20, 16, 143, 1, 141, 129, 129, 61, 301,
159211 /* 1910 */ 301, 298, 150, 53, 53, 37, 53, 129, 115, 53,
159212 /* 1920 */ 140, 34, 1, 5, 22, 114, 68, 26, 160, 75,
159213 /* 1930 */ 68, 41, 140, 114, 24, 20, 19, 130, 124, 23,
159214 /* 1940 */ 67, 22, 22, 59, 22, 22, 67, 96, 24, 22,
159215 /* 1950 */ 37, 23, 67, 28, 148, 22, 26, 23, 23, 23,
159216 /* 1960 */ 23, 22, 140, 23, 97, 23, 34, 115, 22, 142,
159217 /* 1970 */ 26, 75, 34, 44, 75, 34, 88, 34, 86, 34,
159218 /* 1980 */ 23, 34, 93, 22, 24, 26, 34, 23, 26, 23,
159219 /* 1990 */ 23, 23, 23, 11, 23, 22, 26, 22, 22, 140,
159220 /* 2000 */ 23, 23, 22, 22, 134, 26, 23, 15, 140, 1,
159221 /* 2010 */ 1, 317, 317, 317, 140, 317, 317, 317, 317, 317,
159222 /* 2020 */ 317, 317, 140, 317, 317, 317, 317, 317, 317, 317,
159223 /* 2030 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159224 /* 2040 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159225 /* 2050 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159226 /* 2060 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159227 /* 2070 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159228 /* 2080 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159229 /* 2090 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159230 /* 2100 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159231 /* 2110 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159232 /* 2120 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159233 /* 2130 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159234 /* 2140 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159235 /* 2150 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159236 /* 2160 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159237 /* 2170 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159238 /* 2180 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159239 /* 2190 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
159240 /* 2200 */ 317, 317, 317, 317, 317, 317, 317,
159241 };
159242 #define YY_SHIFT_COUNT (569)
 
 
159243 #define YY_SHIFT_MIN (0)
159244 #define YY_SHIFT_MAX (2009)
159245 static const unsigned short int yy_shift_ofst[] = {
159246 /* 0 */ 1423, 1409, 1454, 1192, 1192, 382, 1252, 1410, 1517, 1684,
159247 /* 10 */ 1684, 1684, 221, 0, 0, 180, 1015, 1684, 1684, 1684,
159248 /* 20 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159249 /* 30 */ 1049, 1049, 1121, 1121, 54, 616, 382, 382, 382, 382,
159250 /* 40 */ 382, 40, 110, 219, 289, 396, 439, 509, 548, 618,
159251 /* 50 */ 657, 727, 766, 836, 995, 1015, 1015, 1015, 1015, 1015,
159252 /* 60 */ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
159253 /* 70 */ 1015, 1015, 1015, 1035, 1015, 1138, 880, 880, 1577, 1684,
159254 /* 80 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159255 /* 90 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159256 /* 100 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159257 /* 110 */ 1684, 1684, 1684, 1705, 1684, 1684, 1684, 1684, 1684, 1684,
159258 /* 120 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 146, 84, 84,
159259 /* 130 */ 84, 84, 84, 274, 315, 125, 97, 357, 66, 66,
159260 /* 140 */ 893, 258, 66, 66, 371, 371, 66, 551, 551, 551,
159261 /* 150 */ 551, 192, 209, 209, 278, 127, 2023, 2023, 621, 621,
159262 /* 160 */ 621, 201, 398, 398, 398, 398, 939, 939, 442, 936,
159263 /* 170 */ 1009, 66, 66, 66, 66, 66, 66, 66, 66, 66,
159264 /* 180 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
159265 /* 190 */ 66, 710, 710, 66, 776, 435, 435, 410, 410, 372,
159266 /* 200 */ 1097, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 250, 490,
159267 /* 210 */ 490, 511, 451, 516, 252, 566, 575, 781, 673, 66,
159268 /* 220 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 722,
159269 /* 230 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
159270 /* 240 */ 66, 66, 790, 790, 790, 66, 66, 66, 883, 66,
159271 /* 250 */ 66, 66, 891, 1064, 66, 66, 1212, 66, 66, 66,
159272 /* 260 */ 66, 66, 66, 66, 66, 725, 763, 177, 940, 940,
159273 /* 270 */ 940, 940, 337, 177, 177, 1028, 1053, 670, 1264, 1179,
159274 /* 280 */ 1173, 1254, 1316, 1173, 1316, 1336, 50, 1179, 1179, 50,
159275 /* 290 */ 1179, 1254, 1336, 1259, 732, 532, 1347, 1347, 1347, 1316,
159276 /* 300 */ 1236, 1236, 1184, 1356, 1167, 898, 1650, 1650, 1572, 1572,
159277 /* 310 */ 1685, 1685, 1572, 1576, 1579, 1712, 1692, 1722, 1722, 1722,
159278 /* 320 */ 1722, 1572, 1732, 1604, 1579, 1579, 1604, 1712, 1692, 1604,
159279 /* 330 */ 1692, 1604, 1572, 1732, 1610, 1707, 1572, 1732, 1751, 1572,
159280 /* 340 */ 1732, 1572, 1732, 1751, 1665, 1665, 1665, 1723, 1766, 1766,
159281 /* 350 */ 1751, 1665, 1664, 1665, 1723, 1665, 1665, 1629, 1772, 1698,
159282 /* 360 */ 1698, 1751, 1674, 1709, 1674, 1709, 1674, 1709, 1674, 1709,
159283 /* 370 */ 1572, 1736, 1736, 1746, 1746, 1682, 1686, 1810, 1572, 1688,
159284 /* 380 */ 1682, 1695, 1697, 1604, 1821, 1838, 1853, 1853, 1864, 1864,
159285 /* 390 */ 1864, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023,
159286 /* 400 */ 2023, 2023, 2023, 2023, 2023, 2023, 232, 101, 1131, 1193,
159287 /* 410 */ 619, 679, 841, 1421, 1286, 115, 1352, 1334, 1361, 1419,
159288 /* 420 */ 1342, 1505, 1531, 1585, 1593, 1605, 1612, 1280, 1337, 1491,
159289 /* 430 */ 1358, 1451, 1332, 1616, 1617, 1425, 1618, 1386, 1431, 1624,
159290 /* 440 */ 1626, 1399, 1460, 1880, 1883, 1865, 1726, 1876, 1877, 1869,
159291 /* 450 */ 1871, 1757, 1747, 1767, 1872, 1872, 1875, 1759, 1881, 1760,
159292 /* 460 */ 1886, 1903, 1764, 1777, 1872, 1778, 1847, 1878, 1872, 1762,
159293 /* 470 */ 1860, 1861, 1863, 1866, 1788, 1803, 1887, 1780, 1921, 1918,
159294 /* 480 */ 1902, 1811, 1768, 1858, 1901, 1862, 1854, 1890, 1792, 1819,
159295 /* 490 */ 1910, 1915, 1917, 1807, 1814, 1919, 1873, 1920, 1922, 1916,
159296 /* 500 */ 1923, 1879, 1884, 1924, 1851, 1925, 1927, 1885, 1913, 1928,
159297 /* 510 */ 1806, 1933, 1934, 1935, 1936, 1930, 1937, 1939, 1867, 1822,
159298 /* 520 */ 1940, 1942, 1852, 1932, 1946, 1827, 1944, 1938, 1941, 1943,
159299 /* 530 */ 1945, 1888, 1896, 1892, 1929, 1899, 1889, 1947, 1957, 1961,
159300 /* 540 */ 1960, 1959, 1962, 1952, 1964, 1944, 1966, 1967, 1968, 1969,
159301 /* 550 */ 1970, 1971, 1973, 1982, 1975, 1976, 1977, 1978, 1980, 1981,
159302 /* 560 */ 1979, 1870, 1859, 1868, 1874, 1882, 1983, 1992, 2008, 2009,
 
159303 };
159304 #define YY_REDUCE_COUNT (405)
159305 #define YY_REDUCE_MIN (-266)
159306 #define YY_REDUCE_MAX (1683)
159307 static const short yy_reduce_ofst[] = {
159308 /* 0 */ 111, 168, 272, 760, -177, -175, -192, -190, -182, -179,
159309 /* 10 */ 216, 220, 481, -208, -205, -266, -140, -115, 241, 393,
159310 /* 20 */ 523, 325, 612, 632, 542, 651, 764, 757, 702, 762,
159311 /* 30 */ 812, 814, -188, 273, 924, 386, 758, 967, 1020, 1052,
159312 /* 40 */ 1066, -256, -256, -256, -256, -256, -256, -256, -256, -256,
159313 /* 50 */ -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
159314 /* 60 */ -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
159315 /* 70 */ -256, -256, -256, -256, -256, -256, -256, -256, 195, 222,
159316 /* 80 */ 813, 917, 920, 959, 985, 1006, 1038, 1067, 1069, 1072,
159317 /* 90 */ 1099, 1103, 1105, 1118, 1135, 1139, 1142, 1146, 1148, 1159,
159318 /* 100 */ 1174, 1178, 1183, 1185, 1187, 1198, 1202, 1246, 1258, 1260,
159319 /* 110 */ 1262, 1288, 1291, 1299, 1304, 1319, 1328, 1330, 1357, 1359,
159320 /* 120 */ 1364, 1366, 1375, 1390, 1395, 1406, 1411, -256, -256, -256,
159321 /* 130 */ -256, -256, -256, -256, -256, 447, -256, 555, -178, 605,
159322 /* 140 */ 832, -220, 606, -94, -168, 36, -122, 730, 780, 730,
159323 /* 150 */ 780, 918, -136, 338, -256, -256, -256, -256, 80, 80,
159324 /* 160 */ 80, 720, 703, 811, 882, 903, -213, -204, 106, 330,
159325 /* 170 */ 330, -77, 236, 320, 599, 67, 457, 675, 729, 395,
159326 /* 180 */ 268, 611, 969, 1004, 726, 1014, 983, 123, 884, 608,
159327 /* 190 */ 1034, 547, 911, 650, 844, 922, 949, 965, 972, 978,
159328 /* 200 */ 449, 970, 718, 784, 1073, 1084, 1023, 1129, -209, -180,
159329 /* 210 */ -113, 114, 183, 329, 345, 391, 446, 502, 609, 667,
159330 /* 220 */ 713, 817, 865, 881, 901, 921, 989, 1191, 1195, 214,
159331 /* 230 */ 1223, 1235, 1251, 1367, 1376, 1377, 1383, 1385, 1401, 1402,
159332 /* 240 */ 1403, 1414, 584, 638, 1305, 1420, 1422, 1426, 1294, 1430,
159333 /* 250 */ 1435, 1437, 1348, 1329, 1459, 1461, 1412, 1462, 345, 1463,
159334 /* 260 */ 1464, 1465, 1466, 1467, 1468, 1378, 1380, 1427, 1408, 1413,
159335 /* 270 */ 1415, 1428, 1294, 1427, 1427, 1433, 1450, 1473, 1381, 1417,
159336 /* 280 */ 1424, 1432, 1434, 1436, 1438, 1387, 1443, 1429, 1439, 1444,
159337 /* 290 */ 1440, 1453, 1388, 1481, 1455, 1457, 1483, 1485, 1488, 1456,
159338 /* 300 */ 1469, 1470, 1441, 1471, 1474, 1512, 1416, 1442, 1519, 1522,
159339 /* 310 */ 1446, 1447, 1523, 1472, 1475, 1476, 1504, 1507, 1511, 1513,
159340 /* 320 */ 1514, 1548, 1553, 1510, 1486, 1487, 1515, 1490, 1528, 1518,
159341 /* 330 */ 1529, 1521, 1564, 1568, 1480, 1484, 1571, 1574, 1555, 1578,
159342 /* 340 */ 1580, 1581, 1583, 1556, 1566, 1567, 1569, 1561, 1570, 1573,
159343 /* 350 */ 1575, 1582, 1584, 1587, 1588, 1590, 1591, 1498, 1506, 1534,
159344 /* 360 */ 1535, 1597, 1560, 1586, 1565, 1589, 1592, 1594, 1595, 1598,
159345 /* 370 */ 1627, 1516, 1520, 1599, 1600, 1601, 1596, 1558, 1635, 1602,
159346 /* 380 */ 1607, 1619, 1603, 1606, 1651, 1666, 1675, 1676, 1680, 1681,
159347 /* 390 */ 1683, 1608, 1609, 1613, 1668, 1667, 1669, 1670, 1671, 1672,
159348 /* 400 */ 1655, 1656, 1673, 1677, 1679, 1678,
159349 };
159350 static const YYACTIONTYPE yy_default[] = {
159351 /* 0 */ 1623, 1623, 1623, 1453, 1223, 1332, 1223, 1223, 1223, 1453,
159352 /* 10 */ 1453, 1453, 1223, 1362, 1362, 1506, 1254, 1223, 1223, 1223,
159353 /* 20 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1452, 1223, 1223,
159354 /* 30 */ 1223, 1223, 1541, 1541, 1223, 1223, 1223, 1223, 1223, 1223,
159355 /* 40 */ 1223, 1223, 1371, 1223, 1378, 1223, 1223, 1223, 1223, 1223,
159356 /* 50 */ 1454, 1455, 1223, 1223, 1223, 1505, 1507, 1470, 1385, 1384,
159357 /* 60 */ 1383, 1382, 1488, 1349, 1376, 1369, 1373, 1448, 1449, 1447,
159358 /* 70 */ 1451, 1455, 1454, 1223, 1372, 1419, 1433, 1418, 1223, 1223,
159359 /* 80 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159360 /* 90 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159361 /* 100 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159362 /* 110 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159363 /* 120 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1427, 1432, 1438,
159364 /* 130 */ 1431, 1428, 1421, 1420, 1422, 1223, 1423, 1223, 1223, 1223,
159365 /* 140 */ 1244, 1296, 1223, 1223, 1223, 1223, 1223, 1525, 1524, 1223,
159366 /* 150 */ 1223, 1254, 1413, 1412, 1424, 1425, 1435, 1434, 1513, 1576,
159367 /* 160 */ 1575, 1471, 1223, 1223, 1223, 1223, 1223, 1223, 1541, 1223,
159368 /* 170 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159369 /* 180 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159370 /* 190 */ 1223, 1541, 1541, 1223, 1254, 1541, 1541, 1250, 1250, 1356,
159371 /* 200 */ 1223, 1520, 1323, 1323, 1323, 1323, 1332, 1323, 1223, 1223,
159372 /* 210 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159373 /* 220 */ 1223, 1223, 1223, 1510, 1508, 1223, 1223, 1223, 1223, 1223,
159374 /* 230 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159375 /* 240 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159376 /* 250 */ 1223, 1223, 1328, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159377 /* 260 */ 1223, 1223, 1223, 1223, 1570, 1223, 1483, 1310, 1328, 1328,
159378 /* 270 */ 1328, 1328, 1330, 1311, 1309, 1322, 1255, 1230, 1615, 1388,
159379 /* 280 */ 1377, 1329, 1351, 1377, 1351, 1612, 1375, 1388, 1388, 1375,
159380 /* 290 */ 1388, 1329, 1612, 1271, 1592, 1266, 1362, 1362, 1362, 1351,
159381 /* 300 */ 1356, 1356, 1450, 1329, 1322, 1223, 1615, 1615, 1337, 1337,
159382 /* 310 */ 1614, 1614, 1337, 1471, 1599, 1397, 1299, 1305, 1305, 1305,
159383 /* 320 */ 1305, 1337, 1241, 1375, 1599, 1599, 1375, 1397, 1299, 1375,
159384 /* 330 */ 1299, 1375, 1337, 1241, 1487, 1609, 1337, 1241, 1461, 1337,
159385 /* 340 */ 1241, 1337, 1241, 1461, 1297, 1297, 1297, 1286, 1223, 1223,
159386 /* 350 */ 1461, 1297, 1271, 1297, 1286, 1297, 1297, 1559, 1223, 1465,
159387 /* 360 */ 1465, 1461, 1355, 1350, 1355, 1350, 1355, 1350, 1355, 1350,
159388 /* 370 */ 1337, 1551, 1551, 1365, 1365, 1370, 1356, 1456, 1337, 1223,
159389 /* 380 */ 1370, 1368, 1366, 1375, 1247, 1289, 1573, 1573, 1569, 1569,
159390 /* 390 */ 1569, 1620, 1620, 1520, 1585, 1254, 1254, 1254, 1254, 1585,
159391 /* 400 */ 1273, 1273, 1255, 1255, 1254, 1585, 1223, 1223, 1223, 1223,
159392 /* 410 */ 1223, 1223, 1580, 1223, 1515, 1472, 1341, 1223, 1223, 1223,
159393 /* 420 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159394 /* 430 */ 1223, 1526, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159395 /* 440 */ 1223, 1223, 1402, 1223, 1226, 1517, 1223, 1223, 1223, 1223,
159396 /* 450 */ 1223, 1223, 1223, 1223, 1379, 1380, 1342, 1223, 1223, 1223,
159397 /* 460 */ 1223, 1223, 1223, 1223, 1394, 1223, 1223, 1223, 1389, 1223,
159398 /* 470 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1611, 1223, 1223,
159399 /* 480 */ 1223, 1223, 1223, 1223, 1486, 1485, 1223, 1223, 1339, 1223,
159400 /* 490 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159401 /* 500 */ 1223, 1223, 1269, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159402 /* 510 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159403 /* 520 */ 1223, 1223, 1223, 1223, 1223, 1223, 1367, 1223, 1223, 1223,
159404 /* 530 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159405 /* 540 */ 1223, 1556, 1357, 1223, 1223, 1602, 1223, 1223, 1223, 1223,
159406 /* 550 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
159407 /* 560 */ 1596, 1313, 1404, 1223, 1403, 1407, 1223, 1235, 1223, 1223,
 
159408 };
159409 /********** End of lemon-generated parsing tables *****************************/
159410
159411 /* The next table maps tokens (terminal symbols) into fallback tokens.
159412 ** If a construct like the following:
@@ -159447,12 +159740,12 @@
159447 0, /* EXISTS => nothing */
159448 59, /* TEMP => ID */
159449 0, /* LP => nothing */
159450 0, /* RP => nothing */
159451 0, /* AS => nothing */
159452 59, /* WITHOUT => ID */
159453 0, /* COMMA => nothing */
 
159454 59, /* ABORT => ID */
159455 59, /* ACTION => ID */
159456 59, /* AFTER => ID */
159457 59, /* ANALYZE => ID */
159458 59, /* ASC => ID */
@@ -159719,12 +160012,12 @@
159719 /* 20 */ "EXISTS",
159720 /* 21 */ "TEMP",
159721 /* 22 */ "LP",
159722 /* 23 */ "RP",
159723 /* 24 */ "AS",
159724 /* 25 */ "WITHOUT",
159725 /* 26 */ "COMMA",
159726 /* 27 */ "ABORT",
159727 /* 28 */ "ACTION",
159728 /* 29 */ "AFTER",
159729 /* 30 */ "ANALYZE",
159730 /* 31 */ "ASC",
@@ -159896,125 +160189,126 @@
159896 /* 197 */ "temp",
159897 /* 198 */ "ifnotexists",
159898 /* 199 */ "dbnm",
159899 /* 200 */ "columnlist",
159900 /* 201 */ "conslist_opt",
159901 /* 202 */ "table_options",
159902 /* 203 */ "select",
159903 /* 204 */ "columnname",
159904 /* 205 */ "carglist",
159905 /* 206 */ "typetoken",
159906 /* 207 */ "typename",
159907 /* 208 */ "signed",
159908 /* 209 */ "plus_num",
159909 /* 210 */ "minus_num",
159910 /* 211 */ "scanpt",
159911 /* 212 */ "scantok",
159912 /* 213 */ "ccons",
159913 /* 214 */ "term",
159914 /* 215 */ "expr",
159915 /* 216 */ "onconf",
159916 /* 217 */ "sortorder",
159917 /* 218 */ "autoinc",
159918 /* 219 */ "eidlist_opt",
159919 /* 220 */ "refargs",
159920 /* 221 */ "defer_subclause",
159921 /* 222 */ "generated",
159922 /* 223 */ "refarg",
159923 /* 224 */ "refact",
159924 /* 225 */ "init_deferred_pred_opt",
159925 /* 226 */ "conslist",
159926 /* 227 */ "tconscomma",
159927 /* 228 */ "tcons",
159928 /* 229 */ "sortlist",
159929 /* 230 */ "eidlist",
159930 /* 231 */ "defer_subclause_opt",
159931 /* 232 */ "orconf",
159932 /* 233 */ "resolvetype",
159933 /* 234 */ "raisetype",
159934 /* 235 */ "ifexists",
159935 /* 236 */ "fullname",
159936 /* 237 */ "selectnowith",
159937 /* 238 */ "oneselect",
159938 /* 239 */ "wqlist",
159939 /* 240 */ "multiselect_op",
159940 /* 241 */ "distinct",
159941 /* 242 */ "selcollist",
159942 /* 243 */ "from",
159943 /* 244 */ "where_opt",
159944 /* 245 */ "groupby_opt",
159945 /* 246 */ "having_opt",
159946 /* 247 */ "orderby_opt",
159947 /* 248 */ "limit_opt",
159948 /* 249 */ "window_clause",
159949 /* 250 */ "values",
159950 /* 251 */ "nexprlist",
159951 /* 252 */ "sclp",
159952 /* 253 */ "as",
159953 /* 254 */ "seltablist",
159954 /* 255 */ "stl_prefix",
159955 /* 256 */ "joinop",
159956 /* 257 */ "indexed_opt",
159957 /* 258 */ "on_opt",
159958 /* 259 */ "using_opt",
159959 /* 260 */ "exprlist",
159960 /* 261 */ "xfullname",
159961 /* 262 */ "idlist",
159962 /* 263 */ "nulls",
159963 /* 264 */ "with",
159964 /* 265 */ "where_opt_ret",
159965 /* 266 */ "setlist",
159966 /* 267 */ "insert_cmd",
159967 /* 268 */ "idlist_opt",
159968 /* 269 */ "upsert",
159969 /* 270 */ "returning",
159970 /* 271 */ "filter_over",
159971 /* 272 */ "likeop",
159972 /* 273 */ "between_op",
159973 /* 274 */ "in_op",
159974 /* 275 */ "paren_exprlist",
159975 /* 276 */ "case_operand",
159976 /* 277 */ "case_exprlist",
159977 /* 278 */ "case_else",
159978 /* 279 */ "uniqueflag",
159979 /* 280 */ "collate",
159980 /* 281 */ "vinto",
159981 /* 282 */ "nmnum",
159982 /* 283 */ "trigger_decl",
159983 /* 284 */ "trigger_cmd_list",
159984 /* 285 */ "trigger_time",
159985 /* 286 */ "trigger_event",
159986 /* 287 */ "foreach_clause",
159987 /* 288 */ "when_clause",
159988 /* 289 */ "trigger_cmd",
159989 /* 290 */ "trnm",
159990 /* 291 */ "tridxby",
159991 /* 292 */ "database_kw_opt",
159992 /* 293 */ "key_opt",
159993 /* 294 */ "add_column_fullname",
159994 /* 295 */ "kwcolumn_opt",
159995 /* 296 */ "create_vtab",
159996 /* 297 */ "vtabarglist",
159997 /* 298 */ "vtabarg",
159998 /* 299 */ "vtabargtoken",
159999 /* 300 */ "lp",
160000 /* 301 */ "anylist",
160001 /* 302 */ "wqitem",
160002 /* 303 */ "wqas",
160003 /* 304 */ "windowdefn_list",
160004 /* 305 */ "windowdefn",
160005 /* 306 */ "window",
160006 /* 307 */ "frame_opt",
160007 /* 308 */ "part_opt",
160008 /* 309 */ "filter_clause",
160009 /* 310 */ "over_clause",
160010 /* 311 */ "range_or_rows",
160011 /* 312 */ "frame_bound",
160012 /* 313 */ "frame_bound_s",
160013 /* 314 */ "frame_bound_e",
160014 /* 315 */ "frame_exclude_opt",
160015 /* 316 */ "frame_exclude",
 
160016 };
160017 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
160018
160019 #ifndef NDEBUG
160020 /* For tracing reduce actions, the names of all rules are required.
@@ -160037,389 +160331,392 @@
160037 /* 14 */ "createkw ::= CREATE",
160038 /* 15 */ "ifnotexists ::=",
160039 /* 16 */ "ifnotexists ::= IF NOT EXISTS",
160040 /* 17 */ "temp ::= TEMP",
160041 /* 18 */ "temp ::=",
160042 /* 19 */ "create_table_args ::= LP columnlist conslist_opt RP table_options",
160043 /* 20 */ "create_table_args ::= AS select",
160044 /* 21 */ "table_options ::=",
160045 /* 22 */ "table_options ::= WITHOUT nm",
160046 /* 23 */ "columnname ::= nm typetoken",
160047 /* 24 */ "typetoken ::=",
160048 /* 25 */ "typetoken ::= typename LP signed RP",
160049 /* 26 */ "typetoken ::= typename LP signed COMMA signed RP",
160050 /* 27 */ "typename ::= typename ID|STRING",
160051 /* 28 */ "scanpt ::=",
160052 /* 29 */ "scantok ::=",
160053 /* 30 */ "ccons ::= CONSTRAINT nm",
160054 /* 31 */ "ccons ::= DEFAULT scantok term",
160055 /* 32 */ "ccons ::= DEFAULT LP expr RP",
160056 /* 33 */ "ccons ::= DEFAULT PLUS scantok term",
160057 /* 34 */ "ccons ::= DEFAULT MINUS scantok term",
160058 /* 35 */ "ccons ::= DEFAULT scantok ID|INDEXED",
160059 /* 36 */ "ccons ::= NOT NULL onconf",
160060 /* 37 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
160061 /* 38 */ "ccons ::= UNIQUE onconf",
160062 /* 39 */ "ccons ::= CHECK LP expr RP",
160063 /* 40 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
160064 /* 41 */ "ccons ::= defer_subclause",
160065 /* 42 */ "ccons ::= COLLATE ID|STRING",
160066 /* 43 */ "generated ::= LP expr RP",
160067 /* 44 */ "generated ::= LP expr RP ID",
160068 /* 45 */ "autoinc ::=",
160069 /* 46 */ "autoinc ::= AUTOINCR",
160070 /* 47 */ "refargs ::=",
160071 /* 48 */ "refargs ::= refargs refarg",
160072 /* 49 */ "refarg ::= MATCH nm",
160073 /* 50 */ "refarg ::= ON INSERT refact",
160074 /* 51 */ "refarg ::= ON DELETE refact",
160075 /* 52 */ "refarg ::= ON UPDATE refact",
160076 /* 53 */ "refact ::= SET NULL",
160077 /* 54 */ "refact ::= SET DEFAULT",
160078 /* 55 */ "refact ::= CASCADE",
160079 /* 56 */ "refact ::= RESTRICT",
160080 /* 57 */ "refact ::= NO ACTION",
160081 /* 58 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
160082 /* 59 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
160083 /* 60 */ "init_deferred_pred_opt ::=",
160084 /* 61 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
160085 /* 62 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
160086 /* 63 */ "conslist_opt ::=",
160087 /* 64 */ "tconscomma ::= COMMA",
160088 /* 65 */ "tcons ::= CONSTRAINT nm",
160089 /* 66 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
160090 /* 67 */ "tcons ::= UNIQUE LP sortlist RP onconf",
160091 /* 68 */ "tcons ::= CHECK LP expr RP onconf",
160092 /* 69 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
160093 /* 70 */ "defer_subclause_opt ::=",
160094 /* 71 */ "onconf ::=",
160095 /* 72 */ "onconf ::= ON CONFLICT resolvetype",
160096 /* 73 */ "orconf ::=",
160097 /* 74 */ "orconf ::= OR resolvetype",
160098 /* 75 */ "resolvetype ::= IGNORE",
160099 /* 76 */ "resolvetype ::= REPLACE",
160100 /* 77 */ "cmd ::= DROP TABLE ifexists fullname",
160101 /* 78 */ "ifexists ::= IF EXISTS",
160102 /* 79 */ "ifexists ::=",
160103 /* 80 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
160104 /* 81 */ "cmd ::= DROP VIEW ifexists fullname",
160105 /* 82 */ "cmd ::= select",
160106 /* 83 */ "select ::= WITH wqlist selectnowith",
160107 /* 84 */ "select ::= WITH RECURSIVE wqlist selectnowith",
160108 /* 85 */ "select ::= selectnowith",
160109 /* 86 */ "selectnowith ::= selectnowith multiselect_op oneselect",
160110 /* 87 */ "multiselect_op ::= UNION",
160111 /* 88 */ "multiselect_op ::= UNION ALL",
160112 /* 89 */ "multiselect_op ::= EXCEPT|INTERSECT",
160113 /* 90 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
160114 /* 91 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
160115 /* 92 */ "values ::= VALUES LP nexprlist RP",
160116 /* 93 */ "values ::= values COMMA LP nexprlist RP",
160117 /* 94 */ "distinct ::= DISTINCT",
160118 /* 95 */ "distinct ::= ALL",
160119 /* 96 */ "distinct ::=",
160120 /* 97 */ "sclp ::=",
160121 /* 98 */ "selcollist ::= sclp scanpt expr scanpt as",
160122 /* 99 */ "selcollist ::= sclp scanpt STAR",
160123 /* 100 */ "selcollist ::= sclp scanpt nm DOT STAR",
160124 /* 101 */ "as ::= AS nm",
160125 /* 102 */ "as ::=",
160126 /* 103 */ "from ::=",
160127 /* 104 */ "from ::= FROM seltablist",
160128 /* 105 */ "stl_prefix ::= seltablist joinop",
160129 /* 106 */ "stl_prefix ::=",
160130 /* 107 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
160131 /* 108 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
160132 /* 109 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
160133 /* 110 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
160134 /* 111 */ "dbnm ::=",
160135 /* 112 */ "dbnm ::= DOT nm",
160136 /* 113 */ "fullname ::= nm",
160137 /* 114 */ "fullname ::= nm DOT nm",
160138 /* 115 */ "xfullname ::= nm",
160139 /* 116 */ "xfullname ::= nm DOT nm",
160140 /* 117 */ "xfullname ::= nm DOT nm AS nm",
160141 /* 118 */ "xfullname ::= nm AS nm",
160142 /* 119 */ "joinop ::= COMMA|JOIN",
160143 /* 120 */ "joinop ::= JOIN_KW JOIN",
160144 /* 121 */ "joinop ::= JOIN_KW nm JOIN",
160145 /* 122 */ "joinop ::= JOIN_KW nm nm JOIN",
160146 /* 123 */ "on_opt ::= ON expr",
160147 /* 124 */ "on_opt ::=",
160148 /* 125 */ "indexed_opt ::=",
160149 /* 126 */ "indexed_opt ::= INDEXED BY nm",
160150 /* 127 */ "indexed_opt ::= NOT INDEXED",
160151 /* 128 */ "using_opt ::= USING LP idlist RP",
160152 /* 129 */ "using_opt ::=",
160153 /* 130 */ "orderby_opt ::=",
160154 /* 131 */ "orderby_opt ::= ORDER BY sortlist",
160155 /* 132 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
160156 /* 133 */ "sortlist ::= expr sortorder nulls",
160157 /* 134 */ "sortorder ::= ASC",
160158 /* 135 */ "sortorder ::= DESC",
160159 /* 136 */ "sortorder ::=",
160160 /* 137 */ "nulls ::= NULLS FIRST",
160161 /* 138 */ "nulls ::= NULLS LAST",
160162 /* 139 */ "nulls ::=",
160163 /* 140 */ "groupby_opt ::=",
160164 /* 141 */ "groupby_opt ::= GROUP BY nexprlist",
160165 /* 142 */ "having_opt ::=",
160166 /* 143 */ "having_opt ::= HAVING expr",
160167 /* 144 */ "limit_opt ::=",
160168 /* 145 */ "limit_opt ::= LIMIT expr",
160169 /* 146 */ "limit_opt ::= LIMIT expr OFFSET expr",
160170 /* 147 */ "limit_opt ::= LIMIT expr COMMA expr",
160171 /* 148 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret",
160172 /* 149 */ "where_opt ::=",
160173 /* 150 */ "where_opt ::= WHERE expr",
160174 /* 151 */ "where_opt_ret ::=",
160175 /* 152 */ "where_opt_ret ::= WHERE expr",
160176 /* 153 */ "where_opt_ret ::= RETURNING selcollist",
160177 /* 154 */ "where_opt_ret ::= WHERE expr RETURNING selcollist",
160178 /* 155 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret",
160179 /* 156 */ "setlist ::= setlist COMMA nm EQ expr",
160180 /* 157 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
160181 /* 158 */ "setlist ::= nm EQ expr",
160182 /* 159 */ "setlist ::= LP idlist RP EQ expr",
160183 /* 160 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
160184 /* 161 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
160185 /* 162 */ "upsert ::=",
160186 /* 163 */ "upsert ::= RETURNING selcollist",
160187 /* 164 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
160188 /* 165 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
160189 /* 166 */ "upsert ::= ON CONFLICT DO NOTHING returning",
160190 /* 167 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
160191 /* 168 */ "returning ::= RETURNING selcollist",
160192 /* 169 */ "insert_cmd ::= INSERT orconf",
160193 /* 170 */ "insert_cmd ::= REPLACE",
160194 /* 171 */ "idlist_opt ::=",
160195 /* 172 */ "idlist_opt ::= LP idlist RP",
160196 /* 173 */ "idlist ::= idlist COMMA nm",
160197 /* 174 */ "idlist ::= nm",
160198 /* 175 */ "expr ::= LP expr RP",
160199 /* 176 */ "expr ::= ID|INDEXED",
160200 /* 177 */ "expr ::= JOIN_KW",
160201 /* 178 */ "expr ::= nm DOT nm",
160202 /* 179 */ "expr ::= nm DOT nm DOT nm",
160203 /* 180 */ "term ::= NULL|FLOAT|BLOB",
160204 /* 181 */ "term ::= STRING",
160205 /* 182 */ "term ::= INTEGER",
160206 /* 183 */ "expr ::= VARIABLE",
160207 /* 184 */ "expr ::= expr COLLATE ID|STRING",
160208 /* 185 */ "expr ::= CAST LP expr AS typetoken RP",
160209 /* 186 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
160210 /* 187 */ "expr ::= ID|INDEXED LP STAR RP",
160211 /* 188 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
160212 /* 189 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
160213 /* 190 */ "term ::= CTIME_KW",
160214 /* 191 */ "expr ::= LP nexprlist COMMA expr RP",
160215 /* 192 */ "expr ::= expr AND expr",
160216 /* 193 */ "expr ::= expr OR expr",
160217 /* 194 */ "expr ::= expr LT|GT|GE|LE expr",
160218 /* 195 */ "expr ::= expr EQ|NE expr",
160219 /* 196 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
160220 /* 197 */ "expr ::= expr PLUS|MINUS expr",
160221 /* 198 */ "expr ::= expr STAR|SLASH|REM expr",
160222 /* 199 */ "expr ::= expr CONCAT expr",
160223 /* 200 */ "likeop ::= NOT LIKE_KW|MATCH",
160224 /* 201 */ "expr ::= expr likeop expr",
160225 /* 202 */ "expr ::= expr likeop expr ESCAPE expr",
160226 /* 203 */ "expr ::= expr ISNULL|NOTNULL",
160227 /* 204 */ "expr ::= expr NOT NULL",
160228 /* 205 */ "expr ::= expr IS expr",
160229 /* 206 */ "expr ::= expr IS NOT expr",
160230 /* 207 */ "expr ::= NOT expr",
160231 /* 208 */ "expr ::= BITNOT expr",
160232 /* 209 */ "expr ::= PLUS|MINUS expr",
160233 /* 210 */ "between_op ::= BETWEEN",
160234 /* 211 */ "between_op ::= NOT BETWEEN",
160235 /* 212 */ "expr ::= expr between_op expr AND expr",
160236 /* 213 */ "in_op ::= IN",
160237 /* 214 */ "in_op ::= NOT IN",
160238 /* 215 */ "expr ::= expr in_op LP exprlist RP",
160239 /* 216 */ "expr ::= LP select RP",
160240 /* 217 */ "expr ::= expr in_op LP select RP",
160241 /* 218 */ "expr ::= expr in_op nm dbnm paren_exprlist",
160242 /* 219 */ "expr ::= EXISTS LP select RP",
160243 /* 220 */ "expr ::= CASE case_operand case_exprlist case_else END",
160244 /* 221 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
160245 /* 222 */ "case_exprlist ::= WHEN expr THEN expr",
160246 /* 223 */ "case_else ::= ELSE expr",
160247 /* 224 */ "case_else ::=",
160248 /* 225 */ "case_operand ::= expr",
160249 /* 226 */ "case_operand ::=",
160250 /* 227 */ "exprlist ::=",
160251 /* 228 */ "nexprlist ::= nexprlist COMMA expr",
160252 /* 229 */ "nexprlist ::= expr",
160253 /* 230 */ "paren_exprlist ::=",
160254 /* 231 */ "paren_exprlist ::= LP exprlist RP",
160255 /* 232 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
160256 /* 233 */ "uniqueflag ::= UNIQUE",
160257 /* 234 */ "uniqueflag ::=",
160258 /* 235 */ "eidlist_opt ::=",
160259 /* 236 */ "eidlist_opt ::= LP eidlist RP",
160260 /* 237 */ "eidlist ::= eidlist COMMA nm collate sortorder",
160261 /* 238 */ "eidlist ::= nm collate sortorder",
160262 /* 239 */ "collate ::=",
160263 /* 240 */ "collate ::= COLLATE ID|STRING",
160264 /* 241 */ "cmd ::= DROP INDEX ifexists fullname",
160265 /* 242 */ "cmd ::= VACUUM vinto",
160266 /* 243 */ "cmd ::= VACUUM nm vinto",
160267 /* 244 */ "vinto ::= INTO expr",
160268 /* 245 */ "vinto ::=",
160269 /* 246 */ "cmd ::= PRAGMA nm dbnm",
160270 /* 247 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
160271 /* 248 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
160272 /* 249 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
160273 /* 250 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
160274 /* 251 */ "plus_num ::= PLUS INTEGER|FLOAT",
160275 /* 252 */ "minus_num ::= MINUS INTEGER|FLOAT",
160276 /* 253 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
160277 /* 254 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
160278 /* 255 */ "trigger_time ::= BEFORE|AFTER",
160279 /* 256 */ "trigger_time ::= INSTEAD OF",
160280 /* 257 */ "trigger_time ::=",
160281 /* 258 */ "trigger_event ::= DELETE|INSERT",
160282 /* 259 */ "trigger_event ::= UPDATE",
160283 /* 260 */ "trigger_event ::= UPDATE OF idlist",
160284 /* 261 */ "when_clause ::=",
160285 /* 262 */ "when_clause ::= WHEN expr",
160286 /* 263 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
160287 /* 264 */ "trigger_cmd_list ::= trigger_cmd SEMI",
160288 /* 265 */ "trnm ::= nm DOT nm",
160289 /* 266 */ "tridxby ::= INDEXED BY nm",
160290 /* 267 */ "tridxby ::= NOT INDEXED",
160291 /* 268 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
160292 /* 269 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
160293 /* 270 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
160294 /* 271 */ "trigger_cmd ::= scanpt select scanpt",
160295 /* 272 */ "expr ::= RAISE LP IGNORE RP",
160296 /* 273 */ "expr ::= RAISE LP raisetype COMMA nm RP",
160297 /* 274 */ "raisetype ::= ROLLBACK",
160298 /* 275 */ "raisetype ::= ABORT",
160299 /* 276 */ "raisetype ::= FAIL",
160300 /* 277 */ "cmd ::= DROP TRIGGER ifexists fullname",
160301 /* 278 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
160302 /* 279 */ "cmd ::= DETACH database_kw_opt expr",
160303 /* 280 */ "key_opt ::=",
160304 /* 281 */ "key_opt ::= KEY expr",
160305 /* 282 */ "cmd ::= REINDEX",
160306 /* 283 */ "cmd ::= REINDEX nm dbnm",
160307 /* 284 */ "cmd ::= ANALYZE",
160308 /* 285 */ "cmd ::= ANALYZE nm dbnm",
160309 /* 286 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
160310 /* 287 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
160311 /* 288 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
160312 /* 289 */ "add_column_fullname ::= fullname",
160313 /* 290 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
160314 /* 291 */ "cmd ::= create_vtab",
160315 /* 292 */ "cmd ::= create_vtab LP vtabarglist RP",
160316 /* 293 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
160317 /* 294 */ "vtabarg ::=",
160318 /* 295 */ "vtabargtoken ::= ANY",
160319 /* 296 */ "vtabargtoken ::= lp anylist RP",
160320 /* 297 */ "lp ::= LP",
160321 /* 298 */ "with ::= WITH wqlist",
160322 /* 299 */ "with ::= WITH RECURSIVE wqlist",
160323 /* 300 */ "wqas ::= AS",
160324 /* 301 */ "wqas ::= AS MATERIALIZED",
160325 /* 302 */ "wqas ::= AS NOT MATERIALIZED",
160326 /* 303 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
160327 /* 304 */ "wqlist ::= wqitem",
160328 /* 305 */ "wqlist ::= wqlist COMMA wqitem",
160329 /* 306 */ "windowdefn_list ::= windowdefn",
160330 /* 307 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
160331 /* 308 */ "windowdefn ::= nm AS LP window RP",
160332 /* 309 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
160333 /* 310 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
160334 /* 311 */ "window ::= ORDER BY sortlist frame_opt",
160335 /* 312 */ "window ::= nm ORDER BY sortlist frame_opt",
160336 /* 313 */ "window ::= frame_opt",
160337 /* 314 */ "window ::= nm frame_opt",
160338 /* 315 */ "frame_opt ::=",
160339 /* 316 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
160340 /* 317 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
160341 /* 318 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
160342 /* 319 */ "frame_bound_s ::= frame_bound",
160343 /* 320 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
160344 /* 321 */ "frame_bound_e ::= frame_bound",
160345 /* 322 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
160346 /* 323 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
160347 /* 324 */ "frame_bound ::= CURRENT ROW",
160348 /* 325 */ "frame_exclude_opt ::=",
160349 /* 326 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
160350 /* 327 */ "frame_exclude ::= NO OTHERS",
160351 /* 328 */ "frame_exclude ::= CURRENT ROW",
160352 /* 329 */ "frame_exclude ::= GROUP|TIES",
160353 /* 330 */ "window_clause ::= WINDOW windowdefn_list",
160354 /* 331 */ "filter_over ::= filter_clause over_clause",
160355 /* 332 */ "filter_over ::= over_clause",
160356 /* 333 */ "filter_over ::= filter_clause",
160357 /* 334 */ "over_clause ::= OVER LP window RP",
160358 /* 335 */ "over_clause ::= OVER nm",
160359 /* 336 */ "filter_clause ::= FILTER LP WHERE expr RP",
160360 /* 337 */ "input ::= cmdlist",
160361 /* 338 */ "cmdlist ::= cmdlist ecmd",
160362 /* 339 */ "cmdlist ::= ecmd",
160363 /* 340 */ "ecmd ::= SEMI",
160364 /* 341 */ "ecmd ::= cmdx SEMI",
160365 /* 342 */ "ecmd ::= explain cmdx SEMI",
160366 /* 343 */ "trans_opt ::=",
160367 /* 344 */ "trans_opt ::= TRANSACTION",
160368 /* 345 */ "trans_opt ::= TRANSACTION nm",
160369 /* 346 */ "savepoint_opt ::= SAVEPOINT",
160370 /* 347 */ "savepoint_opt ::=",
160371 /* 348 */ "cmd ::= create_table create_table_args",
160372 /* 349 */ "columnlist ::= columnlist COMMA columnname carglist",
160373 /* 350 */ "columnlist ::= columnname carglist",
160374 /* 351 */ "nm ::= ID|INDEXED",
160375 /* 352 */ "nm ::= STRING",
160376 /* 353 */ "nm ::= JOIN_KW",
160377 /* 354 */ "typetoken ::= typename",
160378 /* 355 */ "typename ::= ID|STRING",
160379 /* 356 */ "signed ::= plus_num",
160380 /* 357 */ "signed ::= minus_num",
160381 /* 358 */ "carglist ::= carglist ccons",
160382 /* 359 */ "carglist ::=",
160383 /* 360 */ "ccons ::= NULL onconf",
160384 /* 361 */ "ccons ::= GENERATED ALWAYS AS generated",
160385 /* 362 */ "ccons ::= AS generated",
160386 /* 363 */ "conslist_opt ::= COMMA conslist",
160387 /* 364 */ "conslist ::= conslist tconscomma tcons",
160388 /* 365 */ "conslist ::= tcons",
160389 /* 366 */ "tconscomma ::=",
160390 /* 367 */ "defer_subclause_opt ::= defer_subclause",
160391 /* 368 */ "resolvetype ::= raisetype",
160392 /* 369 */ "selectnowith ::= oneselect",
160393 /* 370 */ "oneselect ::= values",
160394 /* 371 */ "sclp ::= selcollist COMMA",
160395 /* 372 */ "as ::= ID|STRING",
160396 /* 373 */ "returning ::=",
160397 /* 374 */ "expr ::= term",
160398 /* 375 */ "likeop ::= LIKE_KW|MATCH",
160399 /* 376 */ "exprlist ::= nexprlist",
160400 /* 377 */ "nmnum ::= plus_num",
160401 /* 378 */ "nmnum ::= nm",
160402 /* 379 */ "nmnum ::= ON",
160403 /* 380 */ "nmnum ::= DELETE",
160404 /* 381 */ "nmnum ::= DEFAULT",
160405 /* 382 */ "plus_num ::= INTEGER|FLOAT",
160406 /* 383 */ "foreach_clause ::=",
160407 /* 384 */ "foreach_clause ::= FOR EACH ROW",
160408 /* 385 */ "trnm ::= nm",
160409 /* 386 */ "tridxby ::=",
160410 /* 387 */ "database_kw_opt ::= DATABASE",
160411 /* 388 */ "database_kw_opt ::=",
160412 /* 389 */ "kwcolumn_opt ::=",
160413 /* 390 */ "kwcolumn_opt ::= COLUMNKW",
160414 /* 391 */ "vtabarglist ::= vtabarg",
160415 /* 392 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
160416 /* 393 */ "vtabarg ::= vtabarg vtabargtoken",
160417 /* 394 */ "anylist ::=",
160418 /* 395 */ "anylist ::= anylist LP anylist RP",
160419 /* 396 */ "anylist ::= anylist ANY",
160420 /* 397 */ "with ::=",
 
 
 
160421 };
160422 #endif /* NDEBUG */
160423
160424
160425 #if YYSTACKDEPTH<=0
@@ -160542,102 +160839,102 @@
160542 ** which appear on the RHS of the rule, but which are *not* used
160543 ** inside the C code.
160544 */
160545 /********* Begin destructor definitions ***************************************/
160546 case 203: /* select */
160547 case 237: /* selectnowith */
160548 case 238: /* oneselect */
160549 case 250: /* values */
160550 {
160551 sqlite3SelectDelete(pParse->db, (yypminor->yy81));
160552 }
160553 break;
160554 case 214: /* term */
160555 case 215: /* expr */
160556 case 244: /* where_opt */
160557 case 246: /* having_opt */
160558 case 258: /* on_opt */
160559 case 265: /* where_opt_ret */
160560 case 276: /* case_operand */
160561 case 278: /* case_else */
160562 case 281: /* vinto */
160563 case 288: /* when_clause */
160564 case 293: /* key_opt */
160565 case 309: /* filter_clause */
160566 {
160567 sqlite3ExprDelete(pParse->db, (yypminor->yy404));
160568 }
160569 break;
160570 case 219: /* eidlist_opt */
160571 case 229: /* sortlist */
160572 case 230: /* eidlist */
160573 case 242: /* selcollist */
160574 case 245: /* groupby_opt */
160575 case 247: /* orderby_opt */
160576 case 251: /* nexprlist */
160577 case 252: /* sclp */
160578 case 260: /* exprlist */
160579 case 266: /* setlist */
160580 case 275: /* paren_exprlist */
160581 case 277: /* case_exprlist */
160582 case 308: /* part_opt */
160583 {
160584 sqlite3ExprListDelete(pParse->db, (yypminor->yy70));
160585 }
160586 break;
160587 case 236: /* fullname */
160588 case 243: /* from */
160589 case 254: /* seltablist */
160590 case 255: /* stl_prefix */
160591 case 261: /* xfullname */
160592 {
160593 sqlite3SrcListDelete(pParse->db, (yypminor->yy153));
160594 }
160595 break;
160596 case 239: /* wqlist */
160597 {
160598 sqlite3WithDelete(pParse->db, (yypminor->yy103));
160599 }
160600 break;
160601 case 249: /* window_clause */
160602 case 304: /* windowdefn_list */
160603 {
160604 sqlite3WindowListDelete(pParse->db, (yypminor->yy49));
160605 }
160606 break;
160607 case 259: /* using_opt */
160608 case 262: /* idlist */
160609 case 268: /* idlist_opt */
160610 {
160611 sqlite3IdListDelete(pParse->db, (yypminor->yy436));
160612 }
160613 break;
160614 case 271: /* filter_over */
160615 case 305: /* windowdefn */
160616 case 306: /* window */
160617 case 307: /* frame_opt */
160618 case 310: /* over_clause */
160619 {
160620 sqlite3WindowDelete(pParse->db, (yypminor->yy49));
160621 }
160622 break;
160623 case 284: /* trigger_cmd_list */
160624 case 289: /* trigger_cmd */
160625 {
160626 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy157));
160627 }
160628 break;
160629 case 286: /* trigger_event */
160630 {
160631 sqlite3IdListDelete(pParse->db, (yypminor->yy262).b);
160632 }
160633 break;
160634 case 312: /* frame_bound */
160635 case 313: /* frame_bound_s */
160636 case 314: /* frame_bound_e */
160637 {
160638 sqlite3ExprDelete(pParse->db, (yypminor->yy117).pExpr);
160639 }
160640 break;
160641 /********* End destructor definitions *****************************************/
160642 default: break; /* If no destructor action specified: do nothing */
160643 }
@@ -160943,389 +161240,392 @@
160943 196, /* (14) createkw ::= CREATE */
160944 198, /* (15) ifnotexists ::= */
160945 198, /* (16) ifnotexists ::= IF NOT EXISTS */
160946 197, /* (17) temp ::= TEMP */
160947 197, /* (18) temp ::= */
160948 195, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
160949 195, /* (20) create_table_args ::= AS select */
160950 202, /* (21) table_options ::= */
160951 202, /* (22) table_options ::= WITHOUT nm */
160952 204, /* (23) columnname ::= nm typetoken */
160953 206, /* (24) typetoken ::= */
160954 206, /* (25) typetoken ::= typename LP signed RP */
160955 206, /* (26) typetoken ::= typename LP signed COMMA signed RP */
160956 207, /* (27) typename ::= typename ID|STRING */
160957 211, /* (28) scanpt ::= */
160958 212, /* (29) scantok ::= */
160959 213, /* (30) ccons ::= CONSTRAINT nm */
160960 213, /* (31) ccons ::= DEFAULT scantok term */
160961 213, /* (32) ccons ::= DEFAULT LP expr RP */
160962 213, /* (33) ccons ::= DEFAULT PLUS scantok term */
160963 213, /* (34) ccons ::= DEFAULT MINUS scantok term */
160964 213, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
160965 213, /* (36) ccons ::= NOT NULL onconf */
160966 213, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
160967 213, /* (38) ccons ::= UNIQUE onconf */
160968 213, /* (39) ccons ::= CHECK LP expr RP */
160969 213, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
160970 213, /* (41) ccons ::= defer_subclause */
160971 213, /* (42) ccons ::= COLLATE ID|STRING */
160972 222, /* (43) generated ::= LP expr RP */
160973 222, /* (44) generated ::= LP expr RP ID */
160974 218, /* (45) autoinc ::= */
160975 218, /* (46) autoinc ::= AUTOINCR */
160976 220, /* (47) refargs ::= */
160977 220, /* (48) refargs ::= refargs refarg */
160978 223, /* (49) refarg ::= MATCH nm */
160979 223, /* (50) refarg ::= ON INSERT refact */
160980 223, /* (51) refarg ::= ON DELETE refact */
160981 223, /* (52) refarg ::= ON UPDATE refact */
160982 224, /* (53) refact ::= SET NULL */
160983 224, /* (54) refact ::= SET DEFAULT */
160984 224, /* (55) refact ::= CASCADE */
160985 224, /* (56) refact ::= RESTRICT */
160986 224, /* (57) refact ::= NO ACTION */
160987 221, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
160988 221, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
160989 225, /* (60) init_deferred_pred_opt ::= */
160990 225, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
160991 225, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
160992 201, /* (63) conslist_opt ::= */
160993 227, /* (64) tconscomma ::= COMMA */
160994 228, /* (65) tcons ::= CONSTRAINT nm */
160995 228, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
160996 228, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
160997 228, /* (68) tcons ::= CHECK LP expr RP onconf */
160998 228, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
160999 231, /* (70) defer_subclause_opt ::= */
161000 216, /* (71) onconf ::= */
161001 216, /* (72) onconf ::= ON CONFLICT resolvetype */
161002 232, /* (73) orconf ::= */
161003 232, /* (74) orconf ::= OR resolvetype */
161004 233, /* (75) resolvetype ::= IGNORE */
161005 233, /* (76) resolvetype ::= REPLACE */
161006 189, /* (77) cmd ::= DROP TABLE ifexists fullname */
161007 235, /* (78) ifexists ::= IF EXISTS */
161008 235, /* (79) ifexists ::= */
161009 189, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
161010 189, /* (81) cmd ::= DROP VIEW ifexists fullname */
161011 189, /* (82) cmd ::= select */
161012 203, /* (83) select ::= WITH wqlist selectnowith */
161013 203, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
161014 203, /* (85) select ::= selectnowith */
161015 237, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
161016 240, /* (87) multiselect_op ::= UNION */
161017 240, /* (88) multiselect_op ::= UNION ALL */
161018 240, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
161019 238, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
161020 238, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
161021 250, /* (92) values ::= VALUES LP nexprlist RP */
161022 250, /* (93) values ::= values COMMA LP nexprlist RP */
161023 241, /* (94) distinct ::= DISTINCT */
161024 241, /* (95) distinct ::= ALL */
161025 241, /* (96) distinct ::= */
161026 252, /* (97) sclp ::= */
161027 242, /* (98) selcollist ::= sclp scanpt expr scanpt as */
161028 242, /* (99) selcollist ::= sclp scanpt STAR */
161029 242, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
161030 253, /* (101) as ::= AS nm */
161031 253, /* (102) as ::= */
161032 243, /* (103) from ::= */
161033 243, /* (104) from ::= FROM seltablist */
161034 255, /* (105) stl_prefix ::= seltablist joinop */
161035 255, /* (106) stl_prefix ::= */
161036 254, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
161037 254, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
161038 254, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
161039 254, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
161040 199, /* (111) dbnm ::= */
161041 199, /* (112) dbnm ::= DOT nm */
161042 236, /* (113) fullname ::= nm */
161043 236, /* (114) fullname ::= nm DOT nm */
161044 261, /* (115) xfullname ::= nm */
161045 261, /* (116) xfullname ::= nm DOT nm */
161046 261, /* (117) xfullname ::= nm DOT nm AS nm */
161047 261, /* (118) xfullname ::= nm AS nm */
161048 256, /* (119) joinop ::= COMMA|JOIN */
161049 256, /* (120) joinop ::= JOIN_KW JOIN */
161050 256, /* (121) joinop ::= JOIN_KW nm JOIN */
161051 256, /* (122) joinop ::= JOIN_KW nm nm JOIN */
161052 258, /* (123) on_opt ::= ON expr */
161053 258, /* (124) on_opt ::= */
161054 257, /* (125) indexed_opt ::= */
161055 257, /* (126) indexed_opt ::= INDEXED BY nm */
161056 257, /* (127) indexed_opt ::= NOT INDEXED */
161057 259, /* (128) using_opt ::= USING LP idlist RP */
161058 259, /* (129) using_opt ::= */
161059 247, /* (130) orderby_opt ::= */
161060 247, /* (131) orderby_opt ::= ORDER BY sortlist */
161061 229, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
161062 229, /* (133) sortlist ::= expr sortorder nulls */
161063 217, /* (134) sortorder ::= ASC */
161064 217, /* (135) sortorder ::= DESC */
161065 217, /* (136) sortorder ::= */
161066 263, /* (137) nulls ::= NULLS FIRST */
161067 263, /* (138) nulls ::= NULLS LAST */
161068 263, /* (139) nulls ::= */
161069 245, /* (140) groupby_opt ::= */
161070 245, /* (141) groupby_opt ::= GROUP BY nexprlist */
161071 246, /* (142) having_opt ::= */
161072 246, /* (143) having_opt ::= HAVING expr */
161073 248, /* (144) limit_opt ::= */
161074 248, /* (145) limit_opt ::= LIMIT expr */
161075 248, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
161076 248, /* (147) limit_opt ::= LIMIT expr COMMA expr */
161077 189, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
161078 244, /* (149) where_opt ::= */
161079 244, /* (150) where_opt ::= WHERE expr */
161080 265, /* (151) where_opt_ret ::= */
161081 265, /* (152) where_opt_ret ::= WHERE expr */
161082 265, /* (153) where_opt_ret ::= RETURNING selcollist */
161083 265, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
161084 189, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
161085 266, /* (156) setlist ::= setlist COMMA nm EQ expr */
161086 266, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
161087 266, /* (158) setlist ::= nm EQ expr */
161088 266, /* (159) setlist ::= LP idlist RP EQ expr */
161089 189, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
161090 189, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
161091 269, /* (162) upsert ::= */
161092 269, /* (163) upsert ::= RETURNING selcollist */
161093 269, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
161094 269, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
161095 269, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
161096 269, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
161097 270, /* (168) returning ::= RETURNING selcollist */
161098 267, /* (169) insert_cmd ::= INSERT orconf */
161099 267, /* (170) insert_cmd ::= REPLACE */
161100 268, /* (171) idlist_opt ::= */
161101 268, /* (172) idlist_opt ::= LP idlist RP */
161102 262, /* (173) idlist ::= idlist COMMA nm */
161103 262, /* (174) idlist ::= nm */
161104 215, /* (175) expr ::= LP expr RP */
161105 215, /* (176) expr ::= ID|INDEXED */
161106 215, /* (177) expr ::= JOIN_KW */
161107 215, /* (178) expr ::= nm DOT nm */
161108 215, /* (179) expr ::= nm DOT nm DOT nm */
161109 214, /* (180) term ::= NULL|FLOAT|BLOB */
161110 214, /* (181) term ::= STRING */
161111 214, /* (182) term ::= INTEGER */
161112 215, /* (183) expr ::= VARIABLE */
161113 215, /* (184) expr ::= expr COLLATE ID|STRING */
161114 215, /* (185) expr ::= CAST LP expr AS typetoken RP */
161115 215, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
161116 215, /* (187) expr ::= ID|INDEXED LP STAR RP */
161117 215, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
161118 215, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
161119 214, /* (190) term ::= CTIME_KW */
161120 215, /* (191) expr ::= LP nexprlist COMMA expr RP */
161121 215, /* (192) expr ::= expr AND expr */
161122 215, /* (193) expr ::= expr OR expr */
161123 215, /* (194) expr ::= expr LT|GT|GE|LE expr */
161124 215, /* (195) expr ::= expr EQ|NE expr */
161125 215, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
161126 215, /* (197) expr ::= expr PLUS|MINUS expr */
161127 215, /* (198) expr ::= expr STAR|SLASH|REM expr */
161128 215, /* (199) expr ::= expr CONCAT expr */
161129 272, /* (200) likeop ::= NOT LIKE_KW|MATCH */
161130 215, /* (201) expr ::= expr likeop expr */
161131 215, /* (202) expr ::= expr likeop expr ESCAPE expr */
161132 215, /* (203) expr ::= expr ISNULL|NOTNULL */
161133 215, /* (204) expr ::= expr NOT NULL */
161134 215, /* (205) expr ::= expr IS expr */
161135 215, /* (206) expr ::= expr IS NOT expr */
161136 215, /* (207) expr ::= NOT expr */
161137 215, /* (208) expr ::= BITNOT expr */
161138 215, /* (209) expr ::= PLUS|MINUS expr */
161139 273, /* (210) between_op ::= BETWEEN */
161140 273, /* (211) between_op ::= NOT BETWEEN */
161141 215, /* (212) expr ::= expr between_op expr AND expr */
161142 274, /* (213) in_op ::= IN */
161143 274, /* (214) in_op ::= NOT IN */
161144 215, /* (215) expr ::= expr in_op LP exprlist RP */
161145 215, /* (216) expr ::= LP select RP */
161146 215, /* (217) expr ::= expr in_op LP select RP */
161147 215, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
161148 215, /* (219) expr ::= EXISTS LP select RP */
161149 215, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
161150 277, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
161151 277, /* (222) case_exprlist ::= WHEN expr THEN expr */
161152 278, /* (223) case_else ::= ELSE expr */
161153 278, /* (224) case_else ::= */
161154 276, /* (225) case_operand ::= expr */
161155 276, /* (226) case_operand ::= */
161156 260, /* (227) exprlist ::= */
161157 251, /* (228) nexprlist ::= nexprlist COMMA expr */
161158 251, /* (229) nexprlist ::= expr */
161159 275, /* (230) paren_exprlist ::= */
161160 275, /* (231) paren_exprlist ::= LP exprlist RP */
161161 189, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
161162 279, /* (233) uniqueflag ::= UNIQUE */
161163 279, /* (234) uniqueflag ::= */
161164 219, /* (235) eidlist_opt ::= */
161165 219, /* (236) eidlist_opt ::= LP eidlist RP */
161166 230, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
161167 230, /* (238) eidlist ::= nm collate sortorder */
161168 280, /* (239) collate ::= */
161169 280, /* (240) collate ::= COLLATE ID|STRING */
161170 189, /* (241) cmd ::= DROP INDEX ifexists fullname */
161171 189, /* (242) cmd ::= VACUUM vinto */
161172 189, /* (243) cmd ::= VACUUM nm vinto */
161173 281, /* (244) vinto ::= INTO expr */
161174 281, /* (245) vinto ::= */
161175 189, /* (246) cmd ::= PRAGMA nm dbnm */
161176 189, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
161177 189, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
161178 189, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
161179 189, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
161180 209, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
161181 210, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
161182 189, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
161183 283, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
161184 285, /* (255) trigger_time ::= BEFORE|AFTER */
161185 285, /* (256) trigger_time ::= INSTEAD OF */
161186 285, /* (257) trigger_time ::= */
161187 286, /* (258) trigger_event ::= DELETE|INSERT */
161188 286, /* (259) trigger_event ::= UPDATE */
161189 286, /* (260) trigger_event ::= UPDATE OF idlist */
161190 288, /* (261) when_clause ::= */
161191 288, /* (262) when_clause ::= WHEN expr */
161192 284, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
161193 284, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
161194 290, /* (265) trnm ::= nm DOT nm */
161195 291, /* (266) tridxby ::= INDEXED BY nm */
161196 291, /* (267) tridxby ::= NOT INDEXED */
161197 289, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
161198 289, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
161199 289, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
161200 289, /* (271) trigger_cmd ::= scanpt select scanpt */
161201 215, /* (272) expr ::= RAISE LP IGNORE RP */
161202 215, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
161203 234, /* (274) raisetype ::= ROLLBACK */
161204 234, /* (275) raisetype ::= ABORT */
161205 234, /* (276) raisetype ::= FAIL */
161206 189, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
161207 189, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
161208 189, /* (279) cmd ::= DETACH database_kw_opt expr */
161209 293, /* (280) key_opt ::= */
161210 293, /* (281) key_opt ::= KEY expr */
161211 189, /* (282) cmd ::= REINDEX */
161212 189, /* (283) cmd ::= REINDEX nm dbnm */
161213 189, /* (284) cmd ::= ANALYZE */
161214 189, /* (285) cmd ::= ANALYZE nm dbnm */
161215 189, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
161216 189, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
161217 189, /* (288) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
161218 294, /* (289) add_column_fullname ::= fullname */
161219 189, /* (290) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
161220 189, /* (291) cmd ::= create_vtab */
161221 189, /* (292) cmd ::= create_vtab LP vtabarglist RP */
161222 296, /* (293) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
161223 298, /* (294) vtabarg ::= */
161224 299, /* (295) vtabargtoken ::= ANY */
161225 299, /* (296) vtabargtoken ::= lp anylist RP */
161226 300, /* (297) lp ::= LP */
161227 264, /* (298) with ::= WITH wqlist */
161228 264, /* (299) with ::= WITH RECURSIVE wqlist */
161229 303, /* (300) wqas ::= AS */
161230 303, /* (301) wqas ::= AS MATERIALIZED */
161231 303, /* (302) wqas ::= AS NOT MATERIALIZED */
161232 302, /* (303) wqitem ::= nm eidlist_opt wqas LP select RP */
161233 239, /* (304) wqlist ::= wqitem */
161234 239, /* (305) wqlist ::= wqlist COMMA wqitem */
161235 304, /* (306) windowdefn_list ::= windowdefn */
161236 304, /* (307) windowdefn_list ::= windowdefn_list COMMA windowdefn */
161237 305, /* (308) windowdefn ::= nm AS LP window RP */
161238 306, /* (309) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
161239 306, /* (310) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
161240 306, /* (311) window ::= ORDER BY sortlist frame_opt */
161241 306, /* (312) window ::= nm ORDER BY sortlist frame_opt */
161242 306, /* (313) window ::= frame_opt */
161243 306, /* (314) window ::= nm frame_opt */
161244 307, /* (315) frame_opt ::= */
161245 307, /* (316) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161246 307, /* (317) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161247 311, /* (318) range_or_rows ::= RANGE|ROWS|GROUPS */
161248 313, /* (319) frame_bound_s ::= frame_bound */
161249 313, /* (320) frame_bound_s ::= UNBOUNDED PRECEDING */
161250 314, /* (321) frame_bound_e ::= frame_bound */
161251 314, /* (322) frame_bound_e ::= UNBOUNDED FOLLOWING */
161252 312, /* (323) frame_bound ::= expr PRECEDING|FOLLOWING */
161253 312, /* (324) frame_bound ::= CURRENT ROW */
161254 315, /* (325) frame_exclude_opt ::= */
161255 315, /* (326) frame_exclude_opt ::= EXCLUDE frame_exclude */
161256 316, /* (327) frame_exclude ::= NO OTHERS */
161257 316, /* (328) frame_exclude ::= CURRENT ROW */
161258 316, /* (329) frame_exclude ::= GROUP|TIES */
161259 249, /* (330) window_clause ::= WINDOW windowdefn_list */
161260 271, /* (331) filter_over ::= filter_clause over_clause */
161261 271, /* (332) filter_over ::= over_clause */
161262 271, /* (333) filter_over ::= filter_clause */
161263 310, /* (334) over_clause ::= OVER LP window RP */
161264 310, /* (335) over_clause ::= OVER nm */
161265 309, /* (336) filter_clause ::= FILTER LP WHERE expr RP */
161266 184, /* (337) input ::= cmdlist */
161267 185, /* (338) cmdlist ::= cmdlist ecmd */
161268 185, /* (339) cmdlist ::= ecmd */
161269 186, /* (340) ecmd ::= SEMI */
161270 186, /* (341) ecmd ::= cmdx SEMI */
161271 186, /* (342) ecmd ::= explain cmdx SEMI */
161272 191, /* (343) trans_opt ::= */
161273 191, /* (344) trans_opt ::= TRANSACTION */
161274 191, /* (345) trans_opt ::= TRANSACTION nm */
161275 193, /* (346) savepoint_opt ::= SAVEPOINT */
161276 193, /* (347) savepoint_opt ::= */
161277 189, /* (348) cmd ::= create_table create_table_args */
161278 200, /* (349) columnlist ::= columnlist COMMA columnname carglist */
161279 200, /* (350) columnlist ::= columnname carglist */
161280 192, /* (351) nm ::= ID|INDEXED */
161281 192, /* (352) nm ::= STRING */
161282 192, /* (353) nm ::= JOIN_KW */
161283 206, /* (354) typetoken ::= typename */
161284 207, /* (355) typename ::= ID|STRING */
161285 208, /* (356) signed ::= plus_num */
161286 208, /* (357) signed ::= minus_num */
161287 205, /* (358) carglist ::= carglist ccons */
161288 205, /* (359) carglist ::= */
161289 213, /* (360) ccons ::= NULL onconf */
161290 213, /* (361) ccons ::= GENERATED ALWAYS AS generated */
161291 213, /* (362) ccons ::= AS generated */
161292 201, /* (363) conslist_opt ::= COMMA conslist */
161293 226, /* (364) conslist ::= conslist tconscomma tcons */
161294 226, /* (365) conslist ::= tcons */
161295 227, /* (366) tconscomma ::= */
161296 231, /* (367) defer_subclause_opt ::= defer_subclause */
161297 233, /* (368) resolvetype ::= raisetype */
161298 237, /* (369) selectnowith ::= oneselect */
161299 238, /* (370) oneselect ::= values */
161300 252, /* (371) sclp ::= selcollist COMMA */
161301 253, /* (372) as ::= ID|STRING */
161302 270, /* (373) returning ::= */
161303 215, /* (374) expr ::= term */
161304 272, /* (375) likeop ::= LIKE_KW|MATCH */
161305 260, /* (376) exprlist ::= nexprlist */
161306 282, /* (377) nmnum ::= plus_num */
161307 282, /* (378) nmnum ::= nm */
161308 282, /* (379) nmnum ::= ON */
161309 282, /* (380) nmnum ::= DELETE */
161310 282, /* (381) nmnum ::= DEFAULT */
161311 209, /* (382) plus_num ::= INTEGER|FLOAT */
161312 287, /* (383) foreach_clause ::= */
161313 287, /* (384) foreach_clause ::= FOR EACH ROW */
161314 290, /* (385) trnm ::= nm */
161315 291, /* (386) tridxby ::= */
161316 292, /* (387) database_kw_opt ::= DATABASE */
161317 292, /* (388) database_kw_opt ::= */
161318 295, /* (389) kwcolumn_opt ::= */
161319 295, /* (390) kwcolumn_opt ::= COLUMNKW */
161320 297, /* (391) vtabarglist ::= vtabarg */
161321 297, /* (392) vtabarglist ::= vtabarglist COMMA vtabarg */
161322 298, /* (393) vtabarg ::= vtabarg vtabargtoken */
161323 301, /* (394) anylist ::= */
161324 301, /* (395) anylist ::= anylist LP anylist RP */
161325 301, /* (396) anylist ::= anylist ANY */
161326 264, /* (397) with ::= */
 
 
 
161327 };
161328
161329 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
161330 ** of symbols on the right-hand side of that rule. */
161331 static const signed char yyRuleInfoNRhs[] = {
@@ -161346,389 +161646,392 @@
161346 -1, /* (14) createkw ::= CREATE */
161347 0, /* (15) ifnotexists ::= */
161348 -3, /* (16) ifnotexists ::= IF NOT EXISTS */
161349 -1, /* (17) temp ::= TEMP */
161350 0, /* (18) temp ::= */
161351 -5, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
161352 -2, /* (20) create_table_args ::= AS select */
161353 0, /* (21) table_options ::= */
161354 -2, /* (22) table_options ::= WITHOUT nm */
161355 -2, /* (23) columnname ::= nm typetoken */
161356 0, /* (24) typetoken ::= */
161357 -4, /* (25) typetoken ::= typename LP signed RP */
161358 -6, /* (26) typetoken ::= typename LP signed COMMA signed RP */
161359 -2, /* (27) typename ::= typename ID|STRING */
161360 0, /* (28) scanpt ::= */
161361 0, /* (29) scantok ::= */
161362 -2, /* (30) ccons ::= CONSTRAINT nm */
161363 -3, /* (31) ccons ::= DEFAULT scantok term */
161364 -4, /* (32) ccons ::= DEFAULT LP expr RP */
161365 -4, /* (33) ccons ::= DEFAULT PLUS scantok term */
161366 -4, /* (34) ccons ::= DEFAULT MINUS scantok term */
161367 -3, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
161368 -3, /* (36) ccons ::= NOT NULL onconf */
161369 -5, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
161370 -2, /* (38) ccons ::= UNIQUE onconf */
161371 -4, /* (39) ccons ::= CHECK LP expr RP */
161372 -4, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
161373 -1, /* (41) ccons ::= defer_subclause */
161374 -2, /* (42) ccons ::= COLLATE ID|STRING */
161375 -3, /* (43) generated ::= LP expr RP */
161376 -4, /* (44) generated ::= LP expr RP ID */
161377 0, /* (45) autoinc ::= */
161378 -1, /* (46) autoinc ::= AUTOINCR */
161379 0, /* (47) refargs ::= */
161380 -2, /* (48) refargs ::= refargs refarg */
161381 -2, /* (49) refarg ::= MATCH nm */
161382 -3, /* (50) refarg ::= ON INSERT refact */
161383 -3, /* (51) refarg ::= ON DELETE refact */
161384 -3, /* (52) refarg ::= ON UPDATE refact */
161385 -2, /* (53) refact ::= SET NULL */
161386 -2, /* (54) refact ::= SET DEFAULT */
161387 -1, /* (55) refact ::= CASCADE */
161388 -1, /* (56) refact ::= RESTRICT */
161389 -2, /* (57) refact ::= NO ACTION */
161390 -3, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
161391 -2, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
161392 0, /* (60) init_deferred_pred_opt ::= */
161393 -2, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
161394 -2, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
161395 0, /* (63) conslist_opt ::= */
161396 -1, /* (64) tconscomma ::= COMMA */
161397 -2, /* (65) tcons ::= CONSTRAINT nm */
161398 -7, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
161399 -5, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
161400 -5, /* (68) tcons ::= CHECK LP expr RP onconf */
161401 -10, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
161402 0, /* (70) defer_subclause_opt ::= */
161403 0, /* (71) onconf ::= */
161404 -3, /* (72) onconf ::= ON CONFLICT resolvetype */
161405 0, /* (73) orconf ::= */
161406 -2, /* (74) orconf ::= OR resolvetype */
161407 -1, /* (75) resolvetype ::= IGNORE */
161408 -1, /* (76) resolvetype ::= REPLACE */
161409 -4, /* (77) cmd ::= DROP TABLE ifexists fullname */
161410 -2, /* (78) ifexists ::= IF EXISTS */
161411 0, /* (79) ifexists ::= */
161412 -9, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
161413 -4, /* (81) cmd ::= DROP VIEW ifexists fullname */
161414 -1, /* (82) cmd ::= select */
161415 -3, /* (83) select ::= WITH wqlist selectnowith */
161416 -4, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
161417 -1, /* (85) select ::= selectnowith */
161418 -3, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
161419 -1, /* (87) multiselect_op ::= UNION */
161420 -2, /* (88) multiselect_op ::= UNION ALL */
161421 -1, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
161422 -9, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
161423 -10, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
161424 -4, /* (92) values ::= VALUES LP nexprlist RP */
161425 -5, /* (93) values ::= values COMMA LP nexprlist RP */
161426 -1, /* (94) distinct ::= DISTINCT */
161427 -1, /* (95) distinct ::= ALL */
161428 0, /* (96) distinct ::= */
161429 0, /* (97) sclp ::= */
161430 -5, /* (98) selcollist ::= sclp scanpt expr scanpt as */
161431 -3, /* (99) selcollist ::= sclp scanpt STAR */
161432 -5, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
161433 -2, /* (101) as ::= AS nm */
161434 0, /* (102) as ::= */
161435 0, /* (103) from ::= */
161436 -2, /* (104) from ::= FROM seltablist */
161437 -2, /* (105) stl_prefix ::= seltablist joinop */
161438 0, /* (106) stl_prefix ::= */
161439 -7, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
161440 -9, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
161441 -7, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
161442 -7, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
161443 0, /* (111) dbnm ::= */
161444 -2, /* (112) dbnm ::= DOT nm */
161445 -1, /* (113) fullname ::= nm */
161446 -3, /* (114) fullname ::= nm DOT nm */
161447 -1, /* (115) xfullname ::= nm */
161448 -3, /* (116) xfullname ::= nm DOT nm */
161449 -5, /* (117) xfullname ::= nm DOT nm AS nm */
161450 -3, /* (118) xfullname ::= nm AS nm */
161451 -1, /* (119) joinop ::= COMMA|JOIN */
161452 -2, /* (120) joinop ::= JOIN_KW JOIN */
161453 -3, /* (121) joinop ::= JOIN_KW nm JOIN */
161454 -4, /* (122) joinop ::= JOIN_KW nm nm JOIN */
161455 -2, /* (123) on_opt ::= ON expr */
161456 0, /* (124) on_opt ::= */
161457 0, /* (125) indexed_opt ::= */
161458 -3, /* (126) indexed_opt ::= INDEXED BY nm */
161459 -2, /* (127) indexed_opt ::= NOT INDEXED */
161460 -4, /* (128) using_opt ::= USING LP idlist RP */
161461 0, /* (129) using_opt ::= */
161462 0, /* (130) orderby_opt ::= */
161463 -3, /* (131) orderby_opt ::= ORDER BY sortlist */
161464 -5, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
161465 -3, /* (133) sortlist ::= expr sortorder nulls */
161466 -1, /* (134) sortorder ::= ASC */
161467 -1, /* (135) sortorder ::= DESC */
161468 0, /* (136) sortorder ::= */
161469 -2, /* (137) nulls ::= NULLS FIRST */
161470 -2, /* (138) nulls ::= NULLS LAST */
161471 0, /* (139) nulls ::= */
161472 0, /* (140) groupby_opt ::= */
161473 -3, /* (141) groupby_opt ::= GROUP BY nexprlist */
161474 0, /* (142) having_opt ::= */
161475 -2, /* (143) having_opt ::= HAVING expr */
161476 0, /* (144) limit_opt ::= */
161477 -2, /* (145) limit_opt ::= LIMIT expr */
161478 -4, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
161479 -4, /* (147) limit_opt ::= LIMIT expr COMMA expr */
161480 -6, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
161481 0, /* (149) where_opt ::= */
161482 -2, /* (150) where_opt ::= WHERE expr */
161483 0, /* (151) where_opt_ret ::= */
161484 -2, /* (152) where_opt_ret ::= WHERE expr */
161485 -2, /* (153) where_opt_ret ::= RETURNING selcollist */
161486 -4, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
161487 -9, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
161488 -5, /* (156) setlist ::= setlist COMMA nm EQ expr */
161489 -7, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
161490 -3, /* (158) setlist ::= nm EQ expr */
161491 -5, /* (159) setlist ::= LP idlist RP EQ expr */
161492 -7, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
161493 -8, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
161494 0, /* (162) upsert ::= */
161495 -2, /* (163) upsert ::= RETURNING selcollist */
161496 -12, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
161497 -9, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
161498 -5, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
161499 -8, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
161500 -2, /* (168) returning ::= RETURNING selcollist */
161501 -2, /* (169) insert_cmd ::= INSERT orconf */
161502 -1, /* (170) insert_cmd ::= REPLACE */
161503 0, /* (171) idlist_opt ::= */
161504 -3, /* (172) idlist_opt ::= LP idlist RP */
161505 -3, /* (173) idlist ::= idlist COMMA nm */
161506 -1, /* (174) idlist ::= nm */
161507 -3, /* (175) expr ::= LP expr RP */
161508 -1, /* (176) expr ::= ID|INDEXED */
161509 -1, /* (177) expr ::= JOIN_KW */
161510 -3, /* (178) expr ::= nm DOT nm */
161511 -5, /* (179) expr ::= nm DOT nm DOT nm */
161512 -1, /* (180) term ::= NULL|FLOAT|BLOB */
161513 -1, /* (181) term ::= STRING */
161514 -1, /* (182) term ::= INTEGER */
161515 -1, /* (183) expr ::= VARIABLE */
161516 -3, /* (184) expr ::= expr COLLATE ID|STRING */
161517 -6, /* (185) expr ::= CAST LP expr AS typetoken RP */
161518 -5, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
161519 -4, /* (187) expr ::= ID|INDEXED LP STAR RP */
161520 -6, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
161521 -5, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
161522 -1, /* (190) term ::= CTIME_KW */
161523 -5, /* (191) expr ::= LP nexprlist COMMA expr RP */
161524 -3, /* (192) expr ::= expr AND expr */
161525 -3, /* (193) expr ::= expr OR expr */
161526 -3, /* (194) expr ::= expr LT|GT|GE|LE expr */
161527 -3, /* (195) expr ::= expr EQ|NE expr */
161528 -3, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
161529 -3, /* (197) expr ::= expr PLUS|MINUS expr */
161530 -3, /* (198) expr ::= expr STAR|SLASH|REM expr */
161531 -3, /* (199) expr ::= expr CONCAT expr */
161532 -2, /* (200) likeop ::= NOT LIKE_KW|MATCH */
161533 -3, /* (201) expr ::= expr likeop expr */
161534 -5, /* (202) expr ::= expr likeop expr ESCAPE expr */
161535 -2, /* (203) expr ::= expr ISNULL|NOTNULL */
161536 -3, /* (204) expr ::= expr NOT NULL */
161537 -3, /* (205) expr ::= expr IS expr */
161538 -4, /* (206) expr ::= expr IS NOT expr */
161539 -2, /* (207) expr ::= NOT expr */
161540 -2, /* (208) expr ::= BITNOT expr */
161541 -2, /* (209) expr ::= PLUS|MINUS expr */
161542 -1, /* (210) between_op ::= BETWEEN */
161543 -2, /* (211) between_op ::= NOT BETWEEN */
161544 -5, /* (212) expr ::= expr between_op expr AND expr */
161545 -1, /* (213) in_op ::= IN */
161546 -2, /* (214) in_op ::= NOT IN */
161547 -5, /* (215) expr ::= expr in_op LP exprlist RP */
161548 -3, /* (216) expr ::= LP select RP */
161549 -5, /* (217) expr ::= expr in_op LP select RP */
161550 -5, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
161551 -4, /* (219) expr ::= EXISTS LP select RP */
161552 -5, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
161553 -5, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
161554 -4, /* (222) case_exprlist ::= WHEN expr THEN expr */
161555 -2, /* (223) case_else ::= ELSE expr */
161556 0, /* (224) case_else ::= */
161557 -1, /* (225) case_operand ::= expr */
161558 0, /* (226) case_operand ::= */
161559 0, /* (227) exprlist ::= */
161560 -3, /* (228) nexprlist ::= nexprlist COMMA expr */
161561 -1, /* (229) nexprlist ::= expr */
161562 0, /* (230) paren_exprlist ::= */
161563 -3, /* (231) paren_exprlist ::= LP exprlist RP */
161564 -12, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
161565 -1, /* (233) uniqueflag ::= UNIQUE */
161566 0, /* (234) uniqueflag ::= */
161567 0, /* (235) eidlist_opt ::= */
161568 -3, /* (236) eidlist_opt ::= LP eidlist RP */
161569 -5, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
161570 -3, /* (238) eidlist ::= nm collate sortorder */
161571 0, /* (239) collate ::= */
161572 -2, /* (240) collate ::= COLLATE ID|STRING */
161573 -4, /* (241) cmd ::= DROP INDEX ifexists fullname */
161574 -2, /* (242) cmd ::= VACUUM vinto */
161575 -3, /* (243) cmd ::= VACUUM nm vinto */
161576 -2, /* (244) vinto ::= INTO expr */
161577 0, /* (245) vinto ::= */
161578 -3, /* (246) cmd ::= PRAGMA nm dbnm */
161579 -5, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
161580 -6, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
161581 -5, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
161582 -6, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
161583 -2, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
161584 -2, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
161585 -5, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
161586 -11, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
161587 -1, /* (255) trigger_time ::= BEFORE|AFTER */
161588 -2, /* (256) trigger_time ::= INSTEAD OF */
161589 0, /* (257) trigger_time ::= */
161590 -1, /* (258) trigger_event ::= DELETE|INSERT */
161591 -1, /* (259) trigger_event ::= UPDATE */
161592 -3, /* (260) trigger_event ::= UPDATE OF idlist */
161593 0, /* (261) when_clause ::= */
161594 -2, /* (262) when_clause ::= WHEN expr */
161595 -3, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
161596 -2, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
161597 -3, /* (265) trnm ::= nm DOT nm */
161598 -3, /* (266) tridxby ::= INDEXED BY nm */
161599 -2, /* (267) tridxby ::= NOT INDEXED */
161600 -9, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
161601 -8, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
161602 -6, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
161603 -3, /* (271) trigger_cmd ::= scanpt select scanpt */
161604 -4, /* (272) expr ::= RAISE LP IGNORE RP */
161605 -6, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
161606 -1, /* (274) raisetype ::= ROLLBACK */
161607 -1, /* (275) raisetype ::= ABORT */
161608 -1, /* (276) raisetype ::= FAIL */
161609 -4, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
161610 -6, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
161611 -3, /* (279) cmd ::= DETACH database_kw_opt expr */
161612 0, /* (280) key_opt ::= */
161613 -2, /* (281) key_opt ::= KEY expr */
161614 -1, /* (282) cmd ::= REINDEX */
161615 -3, /* (283) cmd ::= REINDEX nm dbnm */
161616 -1, /* (284) cmd ::= ANALYZE */
161617 -3, /* (285) cmd ::= ANALYZE nm dbnm */
161618 -6, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
161619 -7, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
161620 -6, /* (288) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
161621 -1, /* (289) add_column_fullname ::= fullname */
161622 -8, /* (290) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
161623 -1, /* (291) cmd ::= create_vtab */
161624 -4, /* (292) cmd ::= create_vtab LP vtabarglist RP */
161625 -8, /* (293) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
161626 0, /* (294) vtabarg ::= */
161627 -1, /* (295) vtabargtoken ::= ANY */
161628 -3, /* (296) vtabargtoken ::= lp anylist RP */
161629 -1, /* (297) lp ::= LP */
161630 -2, /* (298) with ::= WITH wqlist */
161631 -3, /* (299) with ::= WITH RECURSIVE wqlist */
161632 -1, /* (300) wqas ::= AS */
161633 -2, /* (301) wqas ::= AS MATERIALIZED */
161634 -3, /* (302) wqas ::= AS NOT MATERIALIZED */
161635 -6, /* (303) wqitem ::= nm eidlist_opt wqas LP select RP */
161636 -1, /* (304) wqlist ::= wqitem */
161637 -3, /* (305) wqlist ::= wqlist COMMA wqitem */
161638 -1, /* (306) windowdefn_list ::= windowdefn */
161639 -3, /* (307) windowdefn_list ::= windowdefn_list COMMA windowdefn */
161640 -5, /* (308) windowdefn ::= nm AS LP window RP */
161641 -5, /* (309) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
161642 -6, /* (310) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
161643 -4, /* (311) window ::= ORDER BY sortlist frame_opt */
161644 -5, /* (312) window ::= nm ORDER BY sortlist frame_opt */
161645 -1, /* (313) window ::= frame_opt */
161646 -2, /* (314) window ::= nm frame_opt */
161647 0, /* (315) frame_opt ::= */
161648 -3, /* (316) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161649 -6, /* (317) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161650 -1, /* (318) range_or_rows ::= RANGE|ROWS|GROUPS */
161651 -1, /* (319) frame_bound_s ::= frame_bound */
161652 -2, /* (320) frame_bound_s ::= UNBOUNDED PRECEDING */
161653 -1, /* (321) frame_bound_e ::= frame_bound */
161654 -2, /* (322) frame_bound_e ::= UNBOUNDED FOLLOWING */
161655 -2, /* (323) frame_bound ::= expr PRECEDING|FOLLOWING */
161656 -2, /* (324) frame_bound ::= CURRENT ROW */
161657 0, /* (325) frame_exclude_opt ::= */
161658 -2, /* (326) frame_exclude_opt ::= EXCLUDE frame_exclude */
161659 -2, /* (327) frame_exclude ::= NO OTHERS */
161660 -2, /* (328) frame_exclude ::= CURRENT ROW */
161661 -1, /* (329) frame_exclude ::= GROUP|TIES */
161662 -2, /* (330) window_clause ::= WINDOW windowdefn_list */
161663 -2, /* (331) filter_over ::= filter_clause over_clause */
161664 -1, /* (332) filter_over ::= over_clause */
161665 -1, /* (333) filter_over ::= filter_clause */
161666 -4, /* (334) over_clause ::= OVER LP window RP */
161667 -2, /* (335) over_clause ::= OVER nm */
161668 -5, /* (336) filter_clause ::= FILTER LP WHERE expr RP */
161669 -1, /* (337) input ::= cmdlist */
161670 -2, /* (338) cmdlist ::= cmdlist ecmd */
161671 -1, /* (339) cmdlist ::= ecmd */
161672 -1, /* (340) ecmd ::= SEMI */
161673 -2, /* (341) ecmd ::= cmdx SEMI */
161674 -3, /* (342) ecmd ::= explain cmdx SEMI */
161675 0, /* (343) trans_opt ::= */
161676 -1, /* (344) trans_opt ::= TRANSACTION */
161677 -2, /* (345) trans_opt ::= TRANSACTION nm */
161678 -1, /* (346) savepoint_opt ::= SAVEPOINT */
161679 0, /* (347) savepoint_opt ::= */
161680 -2, /* (348) cmd ::= create_table create_table_args */
161681 -4, /* (349) columnlist ::= columnlist COMMA columnname carglist */
161682 -2, /* (350) columnlist ::= columnname carglist */
161683 -1, /* (351) nm ::= ID|INDEXED */
161684 -1, /* (352) nm ::= STRING */
161685 -1, /* (353) nm ::= JOIN_KW */
161686 -1, /* (354) typetoken ::= typename */
161687 -1, /* (355) typename ::= ID|STRING */
161688 -1, /* (356) signed ::= plus_num */
161689 -1, /* (357) signed ::= minus_num */
161690 -2, /* (358) carglist ::= carglist ccons */
161691 0, /* (359) carglist ::= */
161692 -2, /* (360) ccons ::= NULL onconf */
161693 -4, /* (361) ccons ::= GENERATED ALWAYS AS generated */
161694 -2, /* (362) ccons ::= AS generated */
161695 -2, /* (363) conslist_opt ::= COMMA conslist */
161696 -3, /* (364) conslist ::= conslist tconscomma tcons */
161697 -1, /* (365) conslist ::= tcons */
161698 0, /* (366) tconscomma ::= */
161699 -1, /* (367) defer_subclause_opt ::= defer_subclause */
161700 -1, /* (368) resolvetype ::= raisetype */
161701 -1, /* (369) selectnowith ::= oneselect */
161702 -1, /* (370) oneselect ::= values */
161703 -2, /* (371) sclp ::= selcollist COMMA */
161704 -1, /* (372) as ::= ID|STRING */
161705 0, /* (373) returning ::= */
161706 -1, /* (374) expr ::= term */
161707 -1, /* (375) likeop ::= LIKE_KW|MATCH */
161708 -1, /* (376) exprlist ::= nexprlist */
161709 -1, /* (377) nmnum ::= plus_num */
161710 -1, /* (378) nmnum ::= nm */
161711 -1, /* (379) nmnum ::= ON */
161712 -1, /* (380) nmnum ::= DELETE */
161713 -1, /* (381) nmnum ::= DEFAULT */
161714 -1, /* (382) plus_num ::= INTEGER|FLOAT */
161715 0, /* (383) foreach_clause ::= */
161716 -3, /* (384) foreach_clause ::= FOR EACH ROW */
161717 -1, /* (385) trnm ::= nm */
161718 0, /* (386) tridxby ::= */
161719 -1, /* (387) database_kw_opt ::= DATABASE */
161720 0, /* (388) database_kw_opt ::= */
161721 0, /* (389) kwcolumn_opt ::= */
161722 -1, /* (390) kwcolumn_opt ::= COLUMNKW */
161723 -1, /* (391) vtabarglist ::= vtabarg */
161724 -3, /* (392) vtabarglist ::= vtabarglist COMMA vtabarg */
161725 -2, /* (393) vtabarg ::= vtabarg vtabargtoken */
161726 0, /* (394) anylist ::= */
161727 -4, /* (395) anylist ::= anylist LP anylist RP */
161728 -2, /* (396) anylist ::= anylist ANY */
161729 0, /* (397) with ::= */
 
 
 
161730 };
161731
161732 static void yy_accept(yyParser*); /* Forward Declaration */
161733
161734 /*
@@ -161776,20 +162079,20 @@
161776 break;
161777 case 2: /* cmdx ::= cmd */
161778 { sqlite3FinishCoding(pParse); }
161779 break;
161780 case 3: /* cmd ::= BEGIN transtype trans_opt */
161781 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy376);}
161782 break;
161783 case 4: /* transtype ::= */
161784 {yymsp[1].minor.yy376 = TK_DEFERRED;}
161785 break;
161786 case 5: /* transtype ::= DEFERRED */
161787 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
161788 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
161789 case 318: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==318);
161790 {yymsp[0].minor.yy376 = yymsp[0].major; /*A-overwrites-X*/}
161791 break;
161792 case 8: /* cmd ::= COMMIT|END trans_opt */
161793 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
161794 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
161795 break;
@@ -161808,415 +162111,432 @@
161808 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
161809 }
161810 break;
161811 case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
161812 {
161813 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy376,0,0,yymsp[-2].minor.yy376);
161814 }
161815 break;
161816 case 14: /* createkw ::= CREATE */
161817 {disableLookaside(pParse);}
161818 break;
161819 case 15: /* ifnotexists ::= */
161820 case 18: /* temp ::= */ yytestcase(yyruleno==18);
161821 case 21: /* table_options ::= */ yytestcase(yyruleno==21);
161822 case 45: /* autoinc ::= */ yytestcase(yyruleno==45);
161823 case 60: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==60);
161824 case 70: /* defer_subclause_opt ::= */ yytestcase(yyruleno==70);
161825 case 79: /* ifexists ::= */ yytestcase(yyruleno==79);
161826 case 96: /* distinct ::= */ yytestcase(yyruleno==96);
161827 case 239: /* collate ::= */ yytestcase(yyruleno==239);
161828 {yymsp[1].minor.yy376 = 0;}
161829 break;
161830 case 16: /* ifnotexists ::= IF NOT EXISTS */
161831 {yymsp[-2].minor.yy376 = 1;}
161832 break;
161833 case 17: /* temp ::= TEMP */
161834 {yymsp[0].minor.yy376 = pParse->db->init.busy==0;}
161835 break;
161836 case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
161837 {
161838 sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy376,0);
161839 }
161840 break;
161841 case 20: /* create_table_args ::= AS select */
161842 {
161843 sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy81);
161844 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy81);
161845 }
161846 break;
161847 case 22: /* table_options ::= WITHOUT nm */
 
 
 
 
 
 
 
161848 {
161849 if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
161850 yymsp[-1].minor.yy376 = TF_WithoutRowid | TF_NoVisibleRowid;
161851 }else{
161852 yymsp[-1].minor.yy376 = 0;
 
 
 
 
 
 
 
 
 
 
161853 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
161854 }
161855 }
 
161856 break;
161857 case 23: /* columnname ::= nm typetoken */
161858 {sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);}
161859 break;
161860 case 24: /* typetoken ::= */
161861 case 63: /* conslist_opt ::= */ yytestcase(yyruleno==63);
161862 case 102: /* as ::= */ yytestcase(yyruleno==102);
161863 {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;}
161864 break;
161865 case 25: /* typetoken ::= typename LP signed RP */
161866 {
161867 yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z);
161868 }
161869 break;
161870 case 26: /* typetoken ::= typename LP signed COMMA signed RP */
161871 {
161872 yymsp[-5].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy0.z);
161873 }
161874 break;
161875 case 27: /* typename ::= typename ID|STRING */
161876 {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
161877 break;
161878 case 28: /* scanpt ::= */
161879 {
161880 assert( yyLookahead!=YYNOCODE );
161881 yymsp[1].minor.yy504 = yyLookaheadToken.z;
161882 }
161883 break;
161884 case 29: /* scantok ::= */
161885 {
161886 assert( yyLookahead!=YYNOCODE );
161887 yymsp[1].minor.yy0 = yyLookaheadToken;
161888 }
161889 break;
161890 case 30: /* ccons ::= CONSTRAINT nm */
161891 case 65: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==65);
161892 {pParse->constraintName = yymsp[0].minor.yy0;}
161893 break;
161894 case 31: /* ccons ::= DEFAULT scantok term */
161895 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy404,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
161896 break;
161897 case 32: /* ccons ::= DEFAULT LP expr RP */
161898 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy404,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
161899 break;
161900 case 33: /* ccons ::= DEFAULT PLUS scantok term */
161901 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy404,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
161902 break;
161903 case 34: /* ccons ::= DEFAULT MINUS scantok term */
161904 {
161905 Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy404, 0);
161906 sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
161907 }
161908 break;
161909 case 35: /* ccons ::= DEFAULT scantok ID|INDEXED */
161910 {
161911 Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0);
161912 if( p ){
161913 sqlite3ExprIdToTrueFalse(p);
161914 testcase( p->op==TK_TRUEFALSE && sqlite3ExprTruthValue(p) );
161915 }
161916 sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
161917 }
161918 break;
161919 case 36: /* ccons ::= NOT NULL onconf */
161920 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy376);}
161921 break;
161922 case 37: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
161923 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy376,yymsp[0].minor.yy376,yymsp[-2].minor.yy376);}
161924 break;
161925 case 38: /* ccons ::= UNIQUE onconf */
161926 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy376,0,0,0,0,
161927 SQLITE_IDXTYPE_UNIQUE);}
161928 break;
161929 case 39: /* ccons ::= CHECK LP expr RP */
161930 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy404,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
161931 break;
161932 case 40: /* ccons ::= REFERENCES nm eidlist_opt refargs */
161933 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy70,yymsp[0].minor.yy376);}
161934 break;
161935 case 41: /* ccons ::= defer_subclause */
161936 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy376);}
161937 break;
161938 case 42: /* ccons ::= COLLATE ID|STRING */
161939 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
161940 break;
161941 case 43: /* generated ::= LP expr RP */
161942 {sqlite3AddGenerated(pParse,yymsp[-1].minor.yy404,0);}
161943 break;
161944 case 44: /* generated ::= LP expr RP ID */
161945 {sqlite3AddGenerated(pParse,yymsp[-2].minor.yy404,&yymsp[0].minor.yy0);}
161946 break;
161947 case 46: /* autoinc ::= AUTOINCR */
161948 {yymsp[0].minor.yy376 = 1;}
161949 break;
161950 case 47: /* refargs ::= */
161951 { yymsp[1].minor.yy376 = OE_None*0x0101; /* EV: R-19803-45884 */}
161952 break;
161953 case 48: /* refargs ::= refargs refarg */
161954 { yymsp[-1].minor.yy376 = (yymsp[-1].minor.yy376 & ~yymsp[0].minor.yy139.mask) | yymsp[0].minor.yy139.value; }
161955 break;
161956 case 49: /* refarg ::= MATCH nm */
161957 { yymsp[-1].minor.yy139.value = 0; yymsp[-1].minor.yy139.mask = 0x000000; }
161958 break;
161959 case 50: /* refarg ::= ON INSERT refact */
161960 { yymsp[-2].minor.yy139.value = 0; yymsp[-2].minor.yy139.mask = 0x000000; }
161961 break;
161962 case 51: /* refarg ::= ON DELETE refact */
161963 { yymsp[-2].minor.yy139.value = yymsp[0].minor.yy376; yymsp[-2].minor.yy139.mask = 0x0000ff; }
161964 break;
161965 case 52: /* refarg ::= ON UPDATE refact */
161966 { yymsp[-2].minor.yy139.value = yymsp[0].minor.yy376<<8; yymsp[-2].minor.yy139.mask = 0x00ff00; }
161967 break;
161968 case 53: /* refact ::= SET NULL */
161969 { yymsp[-1].minor.yy376 = OE_SetNull; /* EV: R-33326-45252 */}
161970 break;
161971 case 54: /* refact ::= SET DEFAULT */
161972 { yymsp[-1].minor.yy376 = OE_SetDflt; /* EV: R-33326-45252 */}
161973 break;
161974 case 55: /* refact ::= CASCADE */
161975 { yymsp[0].minor.yy376 = OE_Cascade; /* EV: R-33326-45252 */}
161976 break;
161977 case 56: /* refact ::= RESTRICT */
161978 { yymsp[0].minor.yy376 = OE_Restrict; /* EV: R-33326-45252 */}
161979 break;
161980 case 57: /* refact ::= NO ACTION */
161981 { yymsp[-1].minor.yy376 = OE_None; /* EV: R-33326-45252 */}
161982 break;
161983 case 58: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
161984 {yymsp[-2].minor.yy376 = 0;}
161985 break;
161986 case 59: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
161987 case 74: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==74);
161988 case 169: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==169);
161989 {yymsp[-1].minor.yy376 = yymsp[0].minor.yy376;}
161990 break;
161991 case 61: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
161992 case 78: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==78);
161993 case 211: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==211);
161994 case 214: /* in_op ::= NOT IN */ yytestcase(yyruleno==214);
161995 case 240: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==240);
161996 {yymsp[-1].minor.yy376 = 1;}
161997 break;
161998 case 62: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
161999 {yymsp[-1].minor.yy376 = 0;}
162000 break;
162001 case 64: /* tconscomma ::= COMMA */
162002 {pParse->constraintName.n = 0;}
162003 break;
162004 case 66: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
162005 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy70,yymsp[0].minor.yy376,yymsp[-2].minor.yy376,0);}
162006 break;
162007 case 67: /* tcons ::= UNIQUE LP sortlist RP onconf */
162008 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy70,yymsp[0].minor.yy376,0,0,0,0,
162009 SQLITE_IDXTYPE_UNIQUE);}
162010 break;
162011 case 68: /* tcons ::= CHECK LP expr RP onconf */
162012 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy404,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
162013 break;
162014 case 69: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
162015 {
162016 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy70, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy70, yymsp[-1].minor.yy376);
162017 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy376);
162018 }
162019 break;
162020 case 71: /* onconf ::= */
162021 case 73: /* orconf ::= */ yytestcase(yyruleno==73);
162022 {yymsp[1].minor.yy376 = OE_Default;}
162023 break;
162024 case 72: /* onconf ::= ON CONFLICT resolvetype */
162025 {yymsp[-2].minor.yy376 = yymsp[0].minor.yy376;}
162026 break;
162027 case 75: /* resolvetype ::= IGNORE */
162028 {yymsp[0].minor.yy376 = OE_Ignore;}
162029 break;
162030 case 76: /* resolvetype ::= REPLACE */
162031 case 170: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==170);
162032 {yymsp[0].minor.yy376 = OE_Replace;}
162033 break;
162034 case 77: /* cmd ::= DROP TABLE ifexists fullname */
162035 {
162036 sqlite3DropTable(pParse, yymsp[0].minor.yy153, 0, yymsp[-1].minor.yy376);
162037 }
162038 break;
162039 case 80: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
162040 {
162041 sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy70, yymsp[0].minor.yy81, yymsp[-7].minor.yy376, yymsp[-5].minor.yy376);
162042 }
162043 break;
162044 case 81: /* cmd ::= DROP VIEW ifexists fullname */
162045 {
162046 sqlite3DropTable(pParse, yymsp[0].minor.yy153, 1, yymsp[-1].minor.yy376);
162047 }
162048 break;
162049 case 82: /* cmd ::= select */
162050 {
162051 SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
162052 sqlite3Select(pParse, yymsp[0].minor.yy81, &dest);
162053 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy81);
162054 }
162055 break;
162056 case 83: /* select ::= WITH wqlist selectnowith */
162057 {yymsp[-2].minor.yy81 = attachWithToSelect(pParse,yymsp[0].minor.yy81,yymsp[-1].minor.yy103);}
162058 break;
162059 case 84: /* select ::= WITH RECURSIVE wqlist selectnowith */
162060 {yymsp[-3].minor.yy81 = attachWithToSelect(pParse,yymsp[0].minor.yy81,yymsp[-1].minor.yy103);}
162061 break;
162062 case 85: /* select ::= selectnowith */
162063 {
162064 Select *p = yymsp[0].minor.yy81;
162065 if( p ){
162066 parserDoubleLinkSelect(pParse, p);
162067 }
162068 yymsp[0].minor.yy81 = p; /*A-overwrites-X*/
162069 }
162070 break;
162071 case 86: /* selectnowith ::= selectnowith multiselect_op oneselect */
162072 {
162073 Select *pRhs = yymsp[0].minor.yy81;
162074 Select *pLhs = yymsp[-2].minor.yy81;
162075 if( pRhs && pRhs->pPrior ){
162076 SrcList *pFrom;
162077 Token x;
162078 x.n = 0;
162079 parserDoubleLinkSelect(pParse, pRhs);
162080 pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
162081 pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
162082 }
162083 if( pRhs ){
162084 pRhs->op = (u8)yymsp[-1].minor.yy376;
162085 pRhs->pPrior = pLhs;
162086 if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
162087 pRhs->selFlags &= ~SF_MultiValue;
162088 if( yymsp[-1].minor.yy376!=TK_ALL ) pParse->hasCompound = 1;
162089 }else{
162090 sqlite3SelectDelete(pParse->db, pLhs);
162091 }
162092 yymsp[-2].minor.yy81 = pRhs;
162093 }
162094 break;
162095 case 87: /* multiselect_op ::= UNION */
162096 case 89: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==89);
162097 {yymsp[0].minor.yy376 = yymsp[0].major; /*A-overwrites-OP*/}
162098 break;
162099 case 88: /* multiselect_op ::= UNION ALL */
162100 {yymsp[-1].minor.yy376 = TK_ALL;}
162101 break;
162102 case 90: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
162103 {
162104 yymsp[-8].minor.yy81 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy70,yymsp[-5].minor.yy153,yymsp[-4].minor.yy404,yymsp[-3].minor.yy70,yymsp[-2].minor.yy404,yymsp[-1].minor.yy70,yymsp[-7].minor.yy376,yymsp[0].minor.yy404);
162105 }
162106 break;
162107 case 91: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
162108 {
162109 yymsp[-9].minor.yy81 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy70,yymsp[-6].minor.yy153,yymsp[-5].minor.yy404,yymsp[-4].minor.yy70,yymsp[-3].minor.yy404,yymsp[-1].minor.yy70,yymsp[-8].minor.yy376,yymsp[0].minor.yy404);
162110 if( yymsp[-9].minor.yy81 ){
162111 yymsp[-9].minor.yy81->pWinDefn = yymsp[-2].minor.yy49;
162112 }else{
162113 sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy49);
162114 }
162115 }
162116 break;
162117 case 92: /* values ::= VALUES LP nexprlist RP */
162118 {
162119 yymsp[-3].minor.yy81 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy70,0,0,0,0,0,SF_Values,0);
162120 }
162121 break;
162122 case 93: /* values ::= values COMMA LP nexprlist RP */
162123 {
162124 Select *pRight, *pLeft = yymsp[-4].minor.yy81;
162125 pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy70,0,0,0,0,0,SF_Values|SF_MultiValue,0);
162126 if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
162127 if( pRight ){
162128 pRight->op = TK_ALL;
162129 pRight->pPrior = pLeft;
162130 yymsp[-4].minor.yy81 = pRight;
162131 }else{
162132 yymsp[-4].minor.yy81 = pLeft;
162133 }
162134 }
162135 break;
162136 case 94: /* distinct ::= DISTINCT */
162137 {yymsp[0].minor.yy376 = SF_Distinct;}
162138 break;
162139 case 95: /* distinct ::= ALL */
162140 {yymsp[0].minor.yy376 = SF_All;}
162141 break;
162142 case 97: /* sclp ::= */
162143 case 130: /* orderby_opt ::= */ yytestcase(yyruleno==130);
162144 case 140: /* groupby_opt ::= */ yytestcase(yyruleno==140);
162145 case 227: /* exprlist ::= */ yytestcase(yyruleno==227);
162146 case 230: /* paren_exprlist ::= */ yytestcase(yyruleno==230);
162147 case 235: /* eidlist_opt ::= */ yytestcase(yyruleno==235);
162148 {yymsp[1].minor.yy70 = 0;}
162149 break;
162150 case 98: /* selcollist ::= sclp scanpt expr scanpt as */
162151 {
162152 yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy70, yymsp[-2].minor.yy404);
162153 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy70, &yymsp[0].minor.yy0, 1);
162154 sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy70,yymsp[-3].minor.yy504,yymsp[-1].minor.yy504);
162155 }
162156 break;
162157 case 99: /* selcollist ::= sclp scanpt STAR */
162158 {
162159 Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
162160 yymsp[-2].minor.yy70 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy70, p);
162161 }
162162 break;
162163 case 100: /* selcollist ::= sclp scanpt nm DOT STAR */
162164 {
162165 Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
162166 Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
162167 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
162168 yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70, pDot);
162169 }
162170 break;
162171 case 101: /* as ::= AS nm */
162172 case 112: /* dbnm ::= DOT nm */ yytestcase(yyruleno==112);
162173 case 251: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==251);
162174 case 252: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==252);
162175 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
162176 break;
162177 case 103: /* from ::= */
162178 case 106: /* stl_prefix ::= */ yytestcase(yyruleno==106);
162179 {yymsp[1].minor.yy153 = 0;}
162180 break;
162181 case 104: /* from ::= FROM seltablist */
162182 {
162183 yymsp[-1].minor.yy153 = yymsp[0].minor.yy153;
162184 sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy153);
162185 }
162186 break;
162187 case 105: /* stl_prefix ::= seltablist joinop */
162188 {
162189 if( ALWAYS(yymsp[-1].minor.yy153 && yymsp[-1].minor.yy153->nSrc>0) ) yymsp[-1].minor.yy153->a[yymsp[-1].minor.yy153->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy376;
162190 }
162191 break;
162192 case 107: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
162193 {
162194 yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162195 sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy153, &yymsp[-2].minor.yy0);
162196 }
162197 break;
162198 case 108: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
162199 {
162200 yymsp[-8].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy153,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162201 sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy153, yymsp[-4].minor.yy70);
162202 }
162203 break;
162204 case 109: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
162205 {
162206 yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy81,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162207 }
162208 break;
162209 case 110: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
162210 {
162211 if( yymsp[-6].minor.yy153==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy404==0 && yymsp[0].minor.yy436==0 ){
162212 yymsp[-6].minor.yy153 = yymsp[-4].minor.yy153;
162213 }else if( yymsp[-4].minor.yy153->nSrc==1 ){
162214 yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162215 if( yymsp[-6].minor.yy153 ){
162216 SrcItem *pNew = &yymsp[-6].minor.yy153->a[yymsp[-6].minor.yy153->nSrc-1];
162217 SrcItem *pOld = yymsp[-4].minor.yy153->a;
162218 pNew->zName = pOld->zName;
162219 pNew->zDatabase = pOld->zDatabase;
162220 pNew->pSelect = pOld->pSelect;
162221 if( pOld->fg.isTabFunc ){
162222 pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -162225,1008 +162545,1009 @@
162225 pNew->fg.isTabFunc = 1;
162226 }
162227 pOld->zName = pOld->zDatabase = 0;
162228 pOld->pSelect = 0;
162229 }
162230 sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy153);
162231 }else{
162232 Select *pSubquery;
162233 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy153);
162234 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy153,0,0,0,0,SF_NestedFrom,0);
162235 yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
162236 }
162237 }
162238 break;
162239 case 111: /* dbnm ::= */
162240 case 125: /* indexed_opt ::= */ yytestcase(yyruleno==125);
162241 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
162242 break;
162243 case 113: /* fullname ::= nm */
162244 {
162245 yylhsminor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
162246 if( IN_RENAME_OBJECT && yylhsminor.yy153 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy153->a[0].zName, &yymsp[0].minor.yy0);
162247 }
162248 yymsp[0].minor.yy153 = yylhsminor.yy153;
162249 break;
162250 case 114: /* fullname ::= nm DOT nm */
162251 {
162252 yylhsminor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
162253 if( IN_RENAME_OBJECT && yylhsminor.yy153 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy153->a[0].zName, &yymsp[0].minor.yy0);
162254 }
162255 yymsp[-2].minor.yy153 = yylhsminor.yy153;
162256 break;
162257 case 115: /* xfullname ::= nm */
162258 {yymsp[0].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
162259 break;
162260 case 116: /* xfullname ::= nm DOT nm */
162261 {yymsp[-2].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
162262 break;
162263 case 117: /* xfullname ::= nm DOT nm AS nm */
162264 {
162265 yymsp[-4].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
162266 if( yymsp[-4].minor.yy153 ) yymsp[-4].minor.yy153->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
162267 }
162268 break;
162269 case 118: /* xfullname ::= nm AS nm */
162270 {
162271 yymsp[-2].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
162272 if( yymsp[-2].minor.yy153 ) yymsp[-2].minor.yy153->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
162273 }
162274 break;
162275 case 119: /* joinop ::= COMMA|JOIN */
162276 { yymsp[0].minor.yy376 = JT_INNER; }
162277 break;
162278 case 120: /* joinop ::= JOIN_KW JOIN */
162279 {yymsp[-1].minor.yy376 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
162280 break;
162281 case 121: /* joinop ::= JOIN_KW nm JOIN */
162282 {yymsp[-2].minor.yy376 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
162283 break;
162284 case 122: /* joinop ::= JOIN_KW nm nm JOIN */
162285 {yymsp[-3].minor.yy376 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
162286 break;
162287 case 123: /* on_opt ::= ON expr */
162288 case 143: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==143);
162289 case 150: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==150);
162290 case 152: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==152);
162291 case 223: /* case_else ::= ELSE expr */ yytestcase(yyruleno==223);
162292 case 244: /* vinto ::= INTO expr */ yytestcase(yyruleno==244);
162293 {yymsp[-1].minor.yy404 = yymsp[0].minor.yy404;}
162294 break;
162295 case 124: /* on_opt ::= */
162296 case 142: /* having_opt ::= */ yytestcase(yyruleno==142);
162297 case 144: /* limit_opt ::= */ yytestcase(yyruleno==144);
162298 case 149: /* where_opt ::= */ yytestcase(yyruleno==149);
162299 case 151: /* where_opt_ret ::= */ yytestcase(yyruleno==151);
162300 case 224: /* case_else ::= */ yytestcase(yyruleno==224);
162301 case 226: /* case_operand ::= */ yytestcase(yyruleno==226);
162302 case 245: /* vinto ::= */ yytestcase(yyruleno==245);
162303 {yymsp[1].minor.yy404 = 0;}
162304 break;
162305 case 126: /* indexed_opt ::= INDEXED BY nm */
162306 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
162307 break;
162308 case 127: /* indexed_opt ::= NOT INDEXED */
162309 {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
162310 break;
162311 case 128: /* using_opt ::= USING LP idlist RP */
162312 {yymsp[-3].minor.yy436 = yymsp[-1].minor.yy436;}
162313 break;
162314 case 129: /* using_opt ::= */
162315 case 171: /* idlist_opt ::= */ yytestcase(yyruleno==171);
162316 {yymsp[1].minor.yy436 = 0;}
162317 break;
162318 case 131: /* orderby_opt ::= ORDER BY sortlist */
162319 case 141: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==141);
162320 {yymsp[-2].minor.yy70 = yymsp[0].minor.yy70;}
162321 break;
162322 case 132: /* sortlist ::= sortlist COMMA expr sortorder nulls */
162323 {
162324 yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70,yymsp[-2].minor.yy404);
162325 sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy70,yymsp[-1].minor.yy376,yymsp[0].minor.yy376);
162326 }
162327 break;
162328 case 133: /* sortlist ::= expr sortorder nulls */
162329 {
162330 yymsp[-2].minor.yy70 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy404); /*A-overwrites-Y*/
162331 sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy70,yymsp[-1].minor.yy376,yymsp[0].minor.yy376);
162332 }
162333 break;
162334 case 134: /* sortorder ::= ASC */
162335 {yymsp[0].minor.yy376 = SQLITE_SO_ASC;}
162336 break;
162337 case 135: /* sortorder ::= DESC */
162338 {yymsp[0].minor.yy376 = SQLITE_SO_DESC;}
162339 break;
162340 case 136: /* sortorder ::= */
162341 case 139: /* nulls ::= */ yytestcase(yyruleno==139);
162342 {yymsp[1].minor.yy376 = SQLITE_SO_UNDEFINED;}
162343 break;
162344 case 137: /* nulls ::= NULLS FIRST */
162345 {yymsp[-1].minor.yy376 = SQLITE_SO_ASC;}
162346 break;
162347 case 138: /* nulls ::= NULLS LAST */
162348 {yymsp[-1].minor.yy376 = SQLITE_SO_DESC;}
162349 break;
162350 case 145: /* limit_opt ::= LIMIT expr */
162351 {yymsp[-1].minor.yy404 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy404,0);}
162352 break;
162353 case 146: /* limit_opt ::= LIMIT expr OFFSET expr */
162354 {yymsp[-3].minor.yy404 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);}
162355 break;
162356 case 147: /* limit_opt ::= LIMIT expr COMMA expr */
162357 {yymsp[-3].minor.yy404 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy404,yymsp[-2].minor.yy404);}
162358 break;
162359 case 148: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
162360 {
162361 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy153, &yymsp[-1].minor.yy0);
162362 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy153,yymsp[0].minor.yy404,0,0);
162363 }
162364 break;
162365 case 153: /* where_opt_ret ::= RETURNING selcollist */
162366 {sqlite3AddReturning(pParse,yymsp[0].minor.yy70); yymsp[-1].minor.yy404 = 0;}
162367 break;
162368 case 154: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
162369 {sqlite3AddReturning(pParse,yymsp[0].minor.yy70); yymsp[-3].minor.yy404 = yymsp[-2].minor.yy404;}
162370 break;
162371 case 155: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
162372 {
162373 sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy153, &yymsp[-4].minor.yy0);
162374 sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy70,"set list");
162375 yymsp[-5].minor.yy153 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy153, yymsp[-1].minor.yy153);
162376 sqlite3Update(pParse,yymsp[-5].minor.yy153,yymsp[-2].minor.yy70,yymsp[0].minor.yy404,yymsp[-6].minor.yy376,0,0,0);
162377 }
162378 break;
162379 case 156: /* setlist ::= setlist COMMA nm EQ expr */
162380 {
162381 yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy70, yymsp[0].minor.yy404);
162382 sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy70, &yymsp[-2].minor.yy0, 1);
162383 }
162384 break;
162385 case 157: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
162386 {
162387 yymsp[-6].minor.yy70 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy70, yymsp[-3].minor.yy436, yymsp[0].minor.yy404);
162388 }
162389 break;
162390 case 158: /* setlist ::= nm EQ expr */
162391 {
162392 yylhsminor.yy70 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy404);
162393 sqlite3ExprListSetName(pParse, yylhsminor.yy70, &yymsp[-2].minor.yy0, 1);
162394 }
162395 yymsp[-2].minor.yy70 = yylhsminor.yy70;
162396 break;
162397 case 159: /* setlist ::= LP idlist RP EQ expr */
162398 {
162399 yymsp[-4].minor.yy70 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy436, yymsp[0].minor.yy404);
162400 }
162401 break;
162402 case 160: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
162403 {
162404 sqlite3Insert(pParse, yymsp[-3].minor.yy153, yymsp[-1].minor.yy81, yymsp[-2].minor.yy436, yymsp[-5].minor.yy376, yymsp[0].minor.yy190);
162405 }
162406 break;
162407 case 161: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
162408 {
162409 sqlite3Insert(pParse, yymsp[-4].minor.yy153, 0, yymsp[-3].minor.yy436, yymsp[-6].minor.yy376, 0);
162410 }
162411 break;
162412 case 162: /* upsert ::= */
162413 { yymsp[1].minor.yy190 = 0; }
162414 break;
162415 case 163: /* upsert ::= RETURNING selcollist */
162416 { yymsp[-1].minor.yy190 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy70); }
162417 break;
162418 case 164: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
162419 { yymsp[-11].minor.yy190 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy70,yymsp[-6].minor.yy404,yymsp[-2].minor.yy70,yymsp[-1].minor.yy404,yymsp[0].minor.yy190);}
162420 break;
162421 case 165: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
162422 { yymsp[-8].minor.yy190 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy70,yymsp[-3].minor.yy404,0,0,yymsp[0].minor.yy190); }
162423 break;
162424 case 166: /* upsert ::= ON CONFLICT DO NOTHING returning */
162425 { yymsp[-4].minor.yy190 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
162426 break;
162427 case 167: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
162428 { yymsp[-7].minor.yy190 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy70,yymsp[-1].minor.yy404,0);}
162429 break;
162430 case 168: /* returning ::= RETURNING selcollist */
162431 {sqlite3AddReturning(pParse,yymsp[0].minor.yy70);}
162432 break;
162433 case 172: /* idlist_opt ::= LP idlist RP */
162434 {yymsp[-2].minor.yy436 = yymsp[-1].minor.yy436;}
162435 break;
162436 case 173: /* idlist ::= idlist COMMA nm */
162437 {yymsp[-2].minor.yy436 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy436,&yymsp[0].minor.yy0);}
162438 break;
162439 case 174: /* idlist ::= nm */
162440 {yymsp[0].minor.yy436 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
162441 break;
162442 case 175: /* expr ::= LP expr RP */
162443 {yymsp[-2].minor.yy404 = yymsp[-1].minor.yy404;}
162444 break;
162445 case 176: /* expr ::= ID|INDEXED */
162446 case 177: /* expr ::= JOIN_KW */ yytestcase(yyruleno==177);
162447 {yymsp[0].minor.yy404=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
162448 break;
162449 case 178: /* expr ::= nm DOT nm */
162450 {
162451 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
162452 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
162453 if( IN_RENAME_OBJECT ){
162454 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
162455 sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
162456 }
162457 yylhsminor.yy404 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
162458 }
162459 yymsp[-2].minor.yy404 = yylhsminor.yy404;
162460 break;
162461 case 179: /* expr ::= nm DOT nm DOT nm */
162462 {
162463 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
162464 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
162465 Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
162466 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
162467 if( IN_RENAME_OBJECT ){
162468 sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
162469 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
162470 }
162471 yylhsminor.yy404 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
162472 }
162473 yymsp[-4].minor.yy404 = yylhsminor.yy404;
162474 break;
162475 case 180: /* term ::= NULL|FLOAT|BLOB */
162476 case 181: /* term ::= STRING */ yytestcase(yyruleno==181);
162477 {yymsp[0].minor.yy404=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
162478 break;
162479 case 182: /* term ::= INTEGER */
162480 {
162481 yylhsminor.yy404 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
162482 }
162483 yymsp[0].minor.yy404 = yylhsminor.yy404;
162484 break;
162485 case 183: /* expr ::= VARIABLE */
162486 {
162487 if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
162488 u32 n = yymsp[0].minor.yy0.n;
162489 yymsp[0].minor.yy404 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
162490 sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy404, n);
162491 }else{
162492 /* When doing a nested parse, one can include terms in an expression
162493 ** that look like this: #1 #2 ... These terms refer to registers
162494 ** in the virtual machine. #N is the N-th register. */
162495 Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
162496 assert( t.n>=2 );
162497 if( pParse->nested==0 ){
162498 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
162499 yymsp[0].minor.yy404 = 0;
162500 }else{
162501 yymsp[0].minor.yy404 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
162502 if( yymsp[0].minor.yy404 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy404->iTable);
162503 }
162504 }
162505 }
162506 break;
162507 case 184: /* expr ::= expr COLLATE ID|STRING */
162508 {
162509 yymsp[-2].minor.yy404 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy404, &yymsp[0].minor.yy0, 1);
162510 }
162511 break;
162512 case 185: /* expr ::= CAST LP expr AS typetoken RP */
162513 {
162514 yymsp[-5].minor.yy404 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
162515 sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy404, yymsp[-3].minor.yy404, 0);
162516 }
162517 break;
162518 case 186: /* expr ::= ID|INDEXED LP distinct exprlist RP */
162519 {
162520 yylhsminor.yy404 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy70, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy376);
162521 }
162522 yymsp[-4].minor.yy404 = yylhsminor.yy404;
162523 break;
162524 case 187: /* expr ::= ID|INDEXED LP STAR RP */
162525 {
162526 yylhsminor.yy404 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
162527 }
162528 yymsp[-3].minor.yy404 = yylhsminor.yy404;
162529 break;
162530 case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
162531 {
162532 yylhsminor.yy404 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy70, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy376);
162533 sqlite3WindowAttach(pParse, yylhsminor.yy404, yymsp[0].minor.yy49);
162534 }
162535 yymsp[-5].minor.yy404 = yylhsminor.yy404;
162536 break;
162537 case 189: /* expr ::= ID|INDEXED LP STAR RP filter_over */
162538 {
162539 yylhsminor.yy404 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
162540 sqlite3WindowAttach(pParse, yylhsminor.yy404, yymsp[0].minor.yy49);
162541 }
162542 yymsp[-4].minor.yy404 = yylhsminor.yy404;
162543 break;
162544 case 190: /* term ::= CTIME_KW */
162545 {
162546 yylhsminor.yy404 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
162547 }
162548 yymsp[0].minor.yy404 = yylhsminor.yy404;
162549 break;
162550 case 191: /* expr ::= LP nexprlist COMMA expr RP */
162551 {
162552 ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy70, yymsp[-1].minor.yy404);
162553 yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
162554 if( yymsp[-4].minor.yy404 ){
162555 yymsp[-4].minor.yy404->x.pList = pList;
162556 if( ALWAYS(pList->nExpr) ){
162557 yymsp[-4].minor.yy404->flags |= pList->a[0].pExpr->flags & EP_Propagate;
162558 }
162559 }else{
162560 sqlite3ExprListDelete(pParse->db, pList);
162561 }
162562 }
162563 break;
162564 case 192: /* expr ::= expr AND expr */
162565 {yymsp[-2].minor.yy404=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);}
162566 break;
162567 case 193: /* expr ::= expr OR expr */
162568 case 194: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==194);
162569 case 195: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==195);
162570 case 196: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==196);
162571 case 197: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==197);
162572 case 198: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==198);
162573 case 199: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==199);
162574 {yymsp[-2].minor.yy404=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);}
162575 break;
162576 case 200: /* likeop ::= NOT LIKE_KW|MATCH */
162577 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
162578 break;
162579 case 201: /* expr ::= expr likeop expr */
162580 {
162581 ExprList *pList;
162582 int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
162583 yymsp[-1].minor.yy0.n &= 0x7fffffff;
162584 pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy404);
162585 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy404);
162586 yymsp[-2].minor.yy404 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
162587 if( bNot ) yymsp[-2].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy404, 0);
162588 if( yymsp[-2].minor.yy404 ) yymsp[-2].minor.yy404->flags |= EP_InfixFunc;
162589 }
162590 break;
162591 case 202: /* expr ::= expr likeop expr ESCAPE expr */
162592 {
162593 ExprList *pList;
162594 int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
162595 yymsp[-3].minor.yy0.n &= 0x7fffffff;
162596 pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy404);
162597 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy404);
162598 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy404);
162599 yymsp[-4].minor.yy404 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
162600 if( bNot ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
162601 if( yymsp[-4].minor.yy404 ) yymsp[-4].minor.yy404->flags |= EP_InfixFunc;
162602 }
162603 break;
162604 case 203: /* expr ::= expr ISNULL|NOTNULL */
162605 {yymsp[-1].minor.yy404 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy404,0);}
162606 break;
162607 case 204: /* expr ::= expr NOT NULL */
162608 {yymsp[-2].minor.yy404 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy404,0);}
162609 break;
162610 case 205: /* expr ::= expr IS expr */
162611 {
162612 yymsp[-2].minor.yy404 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);
162613 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy404, yymsp[-2].minor.yy404, TK_ISNULL);
162614 }
162615 break;
162616 case 206: /* expr ::= expr IS NOT expr */
162617 {
162618 yymsp[-3].minor.yy404 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy404,yymsp[0].minor.yy404);
162619 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy404, yymsp[-3].minor.yy404, TK_NOTNULL);
162620 }
162621 break;
162622 case 207: /* expr ::= NOT expr */
162623 case 208: /* expr ::= BITNOT expr */ yytestcase(yyruleno==208);
162624 {yymsp[-1].minor.yy404 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy404, 0);/*A-overwrites-B*/}
162625 break;
162626 case 209: /* expr ::= PLUS|MINUS expr */
162627 {
162628 yymsp[-1].minor.yy404 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy404, 0);
162629 /*A-overwrites-B*/
162630 }
162631 break;
162632 case 210: /* between_op ::= BETWEEN */
162633 case 213: /* in_op ::= IN */ yytestcase(yyruleno==213);
162634 {yymsp[0].minor.yy376 = 0;}
162635 break;
162636 case 212: /* expr ::= expr between_op expr AND expr */
162637 {
162638 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy404);
162639 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy404);
162640 yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy404, 0);
162641 if( yymsp[-4].minor.yy404 ){
162642 yymsp[-4].minor.yy404->x.pList = pList;
162643 }else{
162644 sqlite3ExprListDelete(pParse->db, pList);
162645 }
162646 if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
162647 }
162648 break;
162649 case 215: /* expr ::= expr in_op LP exprlist RP */
162650 {
162651 if( yymsp[-1].minor.yy70==0 ){
162652 /* Expressions of the form
162653 **
162654 ** expr1 IN ()
162655 ** expr1 NOT IN ()
162656 **
162657 ** simplify to constants 0 (false) and 1 (true), respectively,
162658 ** regardless of the value of expr1.
162659 */
162660 sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy404);
162661 yymsp[-4].minor.yy404 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy376 ? "1" : "0");
162662 }else{
162663 Expr *pRHS = yymsp[-1].minor.yy70->a[0].pExpr;
162664 if( yymsp[-1].minor.yy70->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy404->op!=TK_VECTOR ){
162665 yymsp[-1].minor.yy70->a[0].pExpr = 0;
162666 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy70);
162667 pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
162668 yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy404, pRHS);
162669 }else{
162670 yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy404, 0);
162671 if( yymsp[-4].minor.yy404==0 ){
162672 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy70);
162673 }else if( yymsp[-4].minor.yy404->pLeft->op==TK_VECTOR ){
162674 int nExpr = yymsp[-4].minor.yy404->pLeft->x.pList->nExpr;
162675 Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy70);
162676 if( pSelectRHS ){
162677 parserDoubleLinkSelect(pParse, pSelectRHS);
162678 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy404, pSelectRHS);
162679 }
162680 }else{
162681 yymsp[-4].minor.yy404->x.pList = yymsp[-1].minor.yy70;
162682 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy404);
162683 }
162684 }
162685 if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
162686 }
162687 }
162688 break;
162689 case 216: /* expr ::= LP select RP */
162690 {
162691 yymsp[-2].minor.yy404 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
162692 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy404, yymsp[-1].minor.yy81);
162693 }
162694 break;
162695 case 217: /* expr ::= expr in_op LP select RP */
162696 {
162697 yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy404, 0);
162698 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy404, yymsp[-1].minor.yy81);
162699 if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
162700 }
162701 break;
162702 case 218: /* expr ::= expr in_op nm dbnm paren_exprlist */
162703 {
162704 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
162705 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
162706 if( yymsp[0].minor.yy70 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy70);
162707 yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy404, 0);
162708 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy404, pSelect);
162709 if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
162710 }
162711 break;
162712 case 219: /* expr ::= EXISTS LP select RP */
162713 {
162714 Expr *p;
162715 p = yymsp[-3].minor.yy404 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
162716 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy81);
162717 }
162718 break;
162719 case 220: /* expr ::= CASE case_operand case_exprlist case_else END */
162720 {
162721 yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy404, 0);
162722 if( yymsp[-4].minor.yy404 ){
162723 yymsp[-4].minor.yy404->x.pList = yymsp[-1].minor.yy404 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy70,yymsp[-1].minor.yy404) : yymsp[-2].minor.yy70;
162724 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy404);
162725 }else{
162726 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy70);
162727 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy404);
162728 }
162729 }
162730 break;
162731 case 221: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
162732 {
162733 yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70, yymsp[-2].minor.yy404);
162734 yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70, yymsp[0].minor.yy404);
162735 }
162736 break;
162737 case 222: /* case_exprlist ::= WHEN expr THEN expr */
162738 {
162739 yymsp[-3].minor.yy70 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy404);
162740 yymsp[-3].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy70, yymsp[0].minor.yy404);
162741 }
162742 break;
162743 case 225: /* case_operand ::= expr */
162744 {yymsp[0].minor.yy404 = yymsp[0].minor.yy404; /*A-overwrites-X*/}
162745 break;
162746 case 228: /* nexprlist ::= nexprlist COMMA expr */
162747 {yymsp[-2].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy70,yymsp[0].minor.yy404);}
162748 break;
162749 case 229: /* nexprlist ::= expr */
162750 {yymsp[0].minor.yy70 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy404); /*A-overwrites-Y*/}
162751 break;
162752 case 231: /* paren_exprlist ::= LP exprlist RP */
162753 case 236: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==236);
162754 {yymsp[-2].minor.yy70 = yymsp[-1].minor.yy70;}
162755 break;
162756 case 232: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
162757 {
162758 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
162759 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy70, yymsp[-10].minor.yy376,
162760 &yymsp[-11].minor.yy0, yymsp[0].minor.yy404, SQLITE_SO_ASC, yymsp[-8].minor.yy376, SQLITE_IDXTYPE_APPDEF);
162761 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
162762 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
162763 }
162764 }
162765 break;
162766 case 233: /* uniqueflag ::= UNIQUE */
162767 case 275: /* raisetype ::= ABORT */ yytestcase(yyruleno==275);
162768 {yymsp[0].minor.yy376 = OE_Abort;}
162769 break;
162770 case 234: /* uniqueflag ::= */
162771 {yymsp[1].minor.yy376 = OE_None;}
162772 break;
162773 case 237: /* eidlist ::= eidlist COMMA nm collate sortorder */
162774 {
162775 yymsp[-4].minor.yy70 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy70, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy376, yymsp[0].minor.yy376);
162776 }
162777 break;
162778 case 238: /* eidlist ::= nm collate sortorder */
162779 {
162780 yymsp[-2].minor.yy70 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy376, yymsp[0].minor.yy376); /*A-overwrites-Y*/
162781 }
162782 break;
162783 case 241: /* cmd ::= DROP INDEX ifexists fullname */
162784 {sqlite3DropIndex(pParse, yymsp[0].minor.yy153, yymsp[-1].minor.yy376);}
162785 break;
162786 case 242: /* cmd ::= VACUUM vinto */
162787 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy404);}
162788 break;
162789 case 243: /* cmd ::= VACUUM nm vinto */
162790 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy404);}
162791 break;
162792 case 246: /* cmd ::= PRAGMA nm dbnm */
162793 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
162794 break;
162795 case 247: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
162796 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
162797 break;
162798 case 248: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
162799 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
162800 break;
162801 case 249: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
162802 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
162803 break;
162804 case 250: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
162805 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
162806 break;
162807 case 253: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
162808 {
162809 Token all;
162810 all.z = yymsp[-3].minor.yy0.z;
162811 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
162812 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy157, &all);
162813 }
162814 break;
162815 case 254: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
162816 {
162817 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy376, yymsp[-4].minor.yy262.a, yymsp[-4].minor.yy262.b, yymsp[-2].minor.yy153, yymsp[0].minor.yy404, yymsp[-10].minor.yy376, yymsp[-8].minor.yy376);
162818 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
162819 }
162820 break;
162821 case 255: /* trigger_time ::= BEFORE|AFTER */
162822 { yymsp[0].minor.yy376 = yymsp[0].major; /*A-overwrites-X*/ }
162823 break;
162824 case 256: /* trigger_time ::= INSTEAD OF */
162825 { yymsp[-1].minor.yy376 = TK_INSTEAD;}
162826 break;
162827 case 257: /* trigger_time ::= */
162828 { yymsp[1].minor.yy376 = TK_BEFORE; }
162829 break;
162830 case 258: /* trigger_event ::= DELETE|INSERT */
162831 case 259: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==259);
162832 {yymsp[0].minor.yy262.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy262.b = 0;}
162833 break;
162834 case 260: /* trigger_event ::= UPDATE OF idlist */
162835 {yymsp[-2].minor.yy262.a = TK_UPDATE; yymsp[-2].minor.yy262.b = yymsp[0].minor.yy436;}
162836 break;
162837 case 261: /* when_clause ::= */
162838 case 280: /* key_opt ::= */ yytestcase(yyruleno==280);
162839 { yymsp[1].minor.yy404 = 0; }
162840 break;
162841 case 262: /* when_clause ::= WHEN expr */
162842 case 281: /* key_opt ::= KEY expr */ yytestcase(yyruleno==281);
162843 { yymsp[-1].minor.yy404 = yymsp[0].minor.yy404; }
162844 break;
162845 case 263: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
162846 {
162847 assert( yymsp[-2].minor.yy157!=0 );
162848 yymsp[-2].minor.yy157->pLast->pNext = yymsp[-1].minor.yy157;
162849 yymsp[-2].minor.yy157->pLast = yymsp[-1].minor.yy157;
162850 }
162851 break;
162852 case 264: /* trigger_cmd_list ::= trigger_cmd SEMI */
162853 {
162854 assert( yymsp[-1].minor.yy157!=0 );
162855 yymsp[-1].minor.yy157->pLast = yymsp[-1].minor.yy157;
162856 }
162857 break;
162858 case 265: /* trnm ::= nm DOT nm */
162859 {
162860 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
162861 sqlite3ErrorMsg(pParse,
162862 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
162863 "statements within triggers");
162864 }
162865 break;
162866 case 266: /* tridxby ::= INDEXED BY nm */
162867 {
162868 sqlite3ErrorMsg(pParse,
162869 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
162870 "within triggers");
162871 }
162872 break;
162873 case 267: /* tridxby ::= NOT INDEXED */
162874 {
162875 sqlite3ErrorMsg(pParse,
162876 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
162877 "within triggers");
162878 }
162879 break;
162880 case 268: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
162881 {yylhsminor.yy157 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy153, yymsp[-3].minor.yy70, yymsp[-1].minor.yy404, yymsp[-7].minor.yy376, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy504);}
162882 yymsp[-8].minor.yy157 = yylhsminor.yy157;
162883 break;
162884 case 269: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
162885 {
162886 yylhsminor.yy157 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy436,yymsp[-2].minor.yy81,yymsp[-6].minor.yy376,yymsp[-1].minor.yy190,yymsp[-7].minor.yy504,yymsp[0].minor.yy504);/*yylhsminor.yy157-overwrites-yymsp[-6].minor.yy376*/
162887 }
162888 yymsp[-7].minor.yy157 = yylhsminor.yy157;
162889 break;
162890 case 270: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
162891 {yylhsminor.yy157 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy404, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy504);}
162892 yymsp[-5].minor.yy157 = yylhsminor.yy157;
162893 break;
162894 case 271: /* trigger_cmd ::= scanpt select scanpt */
162895 {yylhsminor.yy157 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy81, yymsp[-2].minor.yy504, yymsp[0].minor.yy504); /*yylhsminor.yy157-overwrites-yymsp[-1].minor.yy81*/}
162896 yymsp[-2].minor.yy157 = yylhsminor.yy157;
162897 break;
162898 case 272: /* expr ::= RAISE LP IGNORE RP */
162899 {
162900 yymsp[-3].minor.yy404 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
162901 if( yymsp[-3].minor.yy404 ){
162902 yymsp[-3].minor.yy404->affExpr = OE_Ignore;
162903 }
162904 }
162905 break;
162906 case 273: /* expr ::= RAISE LP raisetype COMMA nm RP */
162907 {
162908 yymsp[-5].minor.yy404 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
162909 if( yymsp[-5].minor.yy404 ) {
162910 yymsp[-5].minor.yy404->affExpr = (char)yymsp[-3].minor.yy376;
162911 }
162912 }
162913 break;
162914 case 274: /* raisetype ::= ROLLBACK */
162915 {yymsp[0].minor.yy376 = OE_Rollback;}
162916 break;
162917 case 276: /* raisetype ::= FAIL */
162918 {yymsp[0].minor.yy376 = OE_Fail;}
162919 break;
162920 case 277: /* cmd ::= DROP TRIGGER ifexists fullname */
162921 {
162922 sqlite3DropTrigger(pParse,yymsp[0].minor.yy153,yymsp[-1].minor.yy376);
162923 }
162924 break;
162925 case 278: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
162926 {
162927 sqlite3Attach(pParse, yymsp[-3].minor.yy404, yymsp[-1].minor.yy404, yymsp[0].minor.yy404);
162928 }
162929 break;
162930 case 279: /* cmd ::= DETACH database_kw_opt expr */
162931 {
162932 sqlite3Detach(pParse, yymsp[0].minor.yy404);
162933 }
162934 break;
162935 case 282: /* cmd ::= REINDEX */
162936 {sqlite3Reindex(pParse, 0, 0);}
162937 break;
162938 case 283: /* cmd ::= REINDEX nm dbnm */
162939 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
162940 break;
162941 case 284: /* cmd ::= ANALYZE */
162942 {sqlite3Analyze(pParse, 0, 0);}
162943 break;
162944 case 285: /* cmd ::= ANALYZE nm dbnm */
162945 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
162946 break;
162947 case 286: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
162948 {
162949 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy153,&yymsp[0].minor.yy0);
162950 }
162951 break;
162952 case 287: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
162953 {
162954 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
162955 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
162956 }
162957 break;
162958 case 288: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
162959 {
162960 sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy153, &yymsp[0].minor.yy0);
162961 }
162962 break;
162963 case 289: /* add_column_fullname ::= fullname */
162964 {
162965 disableLookaside(pParse);
162966 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy153);
162967 }
162968 break;
162969 case 290: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
162970 {
162971 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy153, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
162972 }
162973 break;
162974 case 291: /* cmd ::= create_vtab */
162975 {sqlite3VtabFinishParse(pParse,0);}
162976 break;
162977 case 292: /* cmd ::= create_vtab LP vtabarglist RP */
162978 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
162979 break;
162980 case 293: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
162981 {
162982 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy376);
162983 }
162984 break;
162985 case 294: /* vtabarg ::= */
162986 {sqlite3VtabArgInit(pParse);}
162987 break;
162988 case 295: /* vtabargtoken ::= ANY */
162989 case 296: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==296);
162990 case 297: /* lp ::= LP */ yytestcase(yyruleno==297);
162991 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
162992 break;
162993 case 298: /* with ::= WITH wqlist */
162994 case 299: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==299);
162995 { sqlite3WithPush(pParse, yymsp[0].minor.yy103, 1); }
162996 break;
162997 case 300: /* wqas ::= AS */
162998 {yymsp[0].minor.yy552 = M10d_Any;}
162999 break;
163000 case 301: /* wqas ::= AS MATERIALIZED */
163001 {yymsp[-1].minor.yy552 = M10d_Yes;}
163002 break;
163003 case 302: /* wqas ::= AS NOT MATERIALIZED */
163004 {yymsp[-2].minor.yy552 = M10d_No;}
163005 break;
163006 case 303: /* wqitem ::= nm eidlist_opt wqas LP select RP */
163007 {
163008 yymsp[-5].minor.yy329 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy70, yymsp[-1].minor.yy81, yymsp[-3].minor.yy552); /*A-overwrites-X*/
163009 }
163010 break;
163011 case 304: /* wqlist ::= wqitem */
163012 {
163013 yymsp[0].minor.yy103 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy329); /*A-overwrites-X*/
163014 }
163015 break;
163016 case 305: /* wqlist ::= wqlist COMMA wqitem */
163017 {
163018 yymsp[-2].minor.yy103 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy103, yymsp[0].minor.yy329);
163019 }
163020 break;
163021 case 306: /* windowdefn_list ::= windowdefn */
163022 { yylhsminor.yy49 = yymsp[0].minor.yy49; }
163023 yymsp[0].minor.yy49 = yylhsminor.yy49;
163024 break;
163025 case 307: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
163026 {
163027 assert( yymsp[0].minor.yy49!=0 );
163028 sqlite3WindowChain(pParse, yymsp[0].minor.yy49, yymsp[-2].minor.yy49);
163029 yymsp[0].minor.yy49->pNextWin = yymsp[-2].minor.yy49;
163030 yylhsminor.yy49 = yymsp[0].minor.yy49;
163031 }
163032 yymsp[-2].minor.yy49 = yylhsminor.yy49;
163033 break;
163034 case 308: /* windowdefn ::= nm AS LP window RP */
163035 {
163036 if( ALWAYS(yymsp[-1].minor.yy49) ){
163037 yymsp[-1].minor.yy49->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
163038 }
163039 yylhsminor.yy49 = yymsp[-1].minor.yy49;
163040 }
163041 yymsp[-4].minor.yy49 = yylhsminor.yy49;
163042 break;
163043 case 309: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163044 {
163045 yymsp[-4].minor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, yymsp[-2].minor.yy70, yymsp[-1].minor.yy70, 0);
163046 }
163047 break;
163048 case 310: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163049 {
163050 yylhsminor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, yymsp[-2].minor.yy70, yymsp[-1].minor.yy70, &yymsp[-5].minor.yy0);
163051 }
163052 yymsp[-5].minor.yy49 = yylhsminor.yy49;
163053 break;
163054 case 311: /* window ::= ORDER BY sortlist frame_opt */
163055 {
163056 yymsp[-3].minor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, 0, yymsp[-1].minor.yy70, 0);
163057 }
163058 break;
163059 case 312: /* window ::= nm ORDER BY sortlist frame_opt */
163060 {
163061 yylhsminor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, 0, yymsp[-1].minor.yy70, &yymsp[-4].minor.yy0);
163062 }
163063 yymsp[-4].minor.yy49 = yylhsminor.yy49;
163064 break;
163065 case 313: /* window ::= frame_opt */
163066 case 332: /* filter_over ::= over_clause */ yytestcase(yyruleno==332);
163067 {
163068 yylhsminor.yy49 = yymsp[0].minor.yy49;
163069 }
163070 yymsp[0].minor.yy49 = yylhsminor.yy49;
163071 break;
163072 case 314: /* window ::= nm frame_opt */
163073 {
163074 yylhsminor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, 0, 0, &yymsp[-1].minor.yy0);
163075 }
163076 yymsp[-1].minor.yy49 = yylhsminor.yy49;
163077 break;
163078 case 315: /* frame_opt ::= */
163079 {
163080 yymsp[1].minor.yy49 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
163081 }
163082 break;
163083 case 316: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163084 {
163085 yylhsminor.yy49 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy376, yymsp[-1].minor.yy117.eType, yymsp[-1].minor.yy117.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy552);
163086 }
163087 yymsp[-2].minor.yy49 = yylhsminor.yy49;
163088 break;
163089 case 317: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163090 {
163091 yylhsminor.yy49 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy376, yymsp[-3].minor.yy117.eType, yymsp[-3].minor.yy117.pExpr, yymsp[-1].minor.yy117.eType, yymsp[-1].minor.yy117.pExpr, yymsp[0].minor.yy552);
163092 }
163093 yymsp[-5].minor.yy49 = yylhsminor.yy49;
163094 break;
163095 case 319: /* frame_bound_s ::= frame_bound */
163096 case 321: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==321);
163097 {yylhsminor.yy117 = yymsp[0].minor.yy117;}
163098 yymsp[0].minor.yy117 = yylhsminor.yy117;
163099 break;
163100 case 320: /* frame_bound_s ::= UNBOUNDED PRECEDING */
163101 case 322: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==322);
163102 case 324: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==324);
163103 {yylhsminor.yy117.eType = yymsp[-1].major; yylhsminor.yy117.pExpr = 0;}
163104 yymsp[-1].minor.yy117 = yylhsminor.yy117;
163105 break;
163106 case 323: /* frame_bound ::= expr PRECEDING|FOLLOWING */
163107 {yylhsminor.yy117.eType = yymsp[0].major; yylhsminor.yy117.pExpr = yymsp[-1].minor.yy404;}
163108 yymsp[-1].minor.yy117 = yylhsminor.yy117;
163109 break;
163110 case 325: /* frame_exclude_opt ::= */
163111 {yymsp[1].minor.yy552 = 0;}
163112 break;
163113 case 326: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
163114 {yymsp[-1].minor.yy552 = yymsp[0].minor.yy552;}
163115 break;
163116 case 327: /* frame_exclude ::= NO OTHERS */
163117 case 328: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==328);
163118 {yymsp[-1].minor.yy552 = yymsp[-1].major; /*A-overwrites-X*/}
163119 break;
163120 case 329: /* frame_exclude ::= GROUP|TIES */
163121 {yymsp[0].minor.yy552 = yymsp[0].major; /*A-overwrites-X*/}
163122 break;
163123 case 330: /* window_clause ::= WINDOW windowdefn_list */
163124 { yymsp[-1].minor.yy49 = yymsp[0].minor.yy49; }
163125 break;
163126 case 331: /* filter_over ::= filter_clause over_clause */
163127 {
163128 if( yymsp[0].minor.yy49 ){
163129 yymsp[0].minor.yy49->pFilter = yymsp[-1].minor.yy404;
163130 }else{
163131 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy404);
163132 }
163133 yylhsminor.yy49 = yymsp[0].minor.yy49;
163134 }
163135 yymsp[-1].minor.yy49 = yylhsminor.yy49;
163136 break;
163137 case 333: /* filter_over ::= filter_clause */
163138 {
163139 yylhsminor.yy49 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
163140 if( yylhsminor.yy49 ){
163141 yylhsminor.yy49->eFrmType = TK_FILTER;
163142 yylhsminor.yy49->pFilter = yymsp[0].minor.yy404;
163143 }else{
163144 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy404);
163145 }
163146 }
163147 yymsp[0].minor.yy49 = yylhsminor.yy49;
163148 break;
163149 case 334: /* over_clause ::= OVER LP window RP */
163150 {
163151 yymsp[-3].minor.yy49 = yymsp[-1].minor.yy49;
163152 assert( yymsp[-3].minor.yy49!=0 );
163153 }
163154 break;
163155 case 335: /* over_clause ::= OVER nm */
163156 {
163157 yymsp[-1].minor.yy49 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
163158 if( yymsp[-1].minor.yy49 ){
163159 yymsp[-1].minor.yy49->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
163160 }
163161 }
163162 break;
163163 case 336: /* filter_clause ::= FILTER LP WHERE expr RP */
163164 { yymsp[-4].minor.yy404 = yymsp[-1].minor.yy404; }
163165 break;
163166 default:
163167 /* (337) input ::= cmdlist */ yytestcase(yyruleno==337);
163168 /* (338) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==338);
163169 /* (339) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=339);
163170 /* (340) ecmd ::= SEMI */ yytestcase(yyruleno==340);
163171 /* (341) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==341);
163172 /* (342) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=342);
163173 /* (343) trans_opt ::= */ yytestcase(yyruleno==343);
163174 /* (344) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==344);
163175 /* (345) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==345);
163176 /* (346) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==346);
163177 /* (347) savepoint_opt ::= */ yytestcase(yyruleno==347);
163178 /* (348) cmd ::= create_table create_table_args */ yytestcase(yyruleno==348);
163179 /* (349) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==349);
163180 /* (350) columnlist ::= columnname carglist */ yytestcase(yyruleno==350);
163181 /* (351) nm ::= ID|INDEXED */ yytestcase(yyruleno==351);
163182 /* (352) nm ::= STRING */ yytestcase(yyruleno==352);
163183 /* (353) nm ::= JOIN_KW */ yytestcase(yyruleno==353);
163184 /* (354) typetoken ::= typename */ yytestcase(yyruleno==354);
163185 /* (355) typename ::= ID|STRING */ yytestcase(yyruleno==355);
163186 /* (356) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=356);
163187 /* (357) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=357);
163188 /* (358) carglist ::= carglist ccons */ yytestcase(yyruleno==358);
163189 /* (359) carglist ::= */ yytestcase(yyruleno==359);
163190 /* (360) ccons ::= NULL onconf */ yytestcase(yyruleno==360);
163191 /* (361) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==361);
163192 /* (362) ccons ::= AS generated */ yytestcase(yyruleno==362);
163193 /* (363) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==363);
163194 /* (364) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==364);
163195 /* (365) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=365);
163196 /* (366) tconscomma ::= */ yytestcase(yyruleno==366);
163197 /* (367) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=367);
163198 /* (368) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=368);
163199 /* (369) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=369);
163200 /* (370) oneselect ::= values */ yytestcase(yyruleno==370);
163201 /* (371) sclp ::= selcollist COMMA */ yytestcase(yyruleno==371);
163202 /* (372) as ::= ID|STRING */ yytestcase(yyruleno==372);
163203 /* (373) returning ::= */ yytestcase(yyruleno==373);
163204 /* (374) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=374);
163205 /* (375) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==375);
163206 /* (376) exprlist ::= nexprlist */ yytestcase(yyruleno==376);
163207 /* (377) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=377);
163208 /* (378) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=378);
163209 /* (379) nmnum ::= ON */ yytestcase(yyruleno==379);
163210 /* (380) nmnum ::= DELETE */ yytestcase(yyruleno==380);
163211 /* (381) nmnum ::= DEFAULT */ yytestcase(yyruleno==381);
163212 /* (382) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==382);
163213 /* (383) foreach_clause ::= */ yytestcase(yyruleno==383);
163214 /* (384) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==384);
163215 /* (385) trnm ::= nm */ yytestcase(yyruleno==385);
163216 /* (386) tridxby ::= */ yytestcase(yyruleno==386);
163217 /* (387) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==387);
163218 /* (388) database_kw_opt ::= */ yytestcase(yyruleno==388);
163219 /* (389) kwcolumn_opt ::= */ yytestcase(yyruleno==389);
163220 /* (390) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==390);
163221 /* (391) vtabarglist ::= vtabarg */ yytestcase(yyruleno==391);
163222 /* (392) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==392);
163223 /* (393) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==393);
163224 /* (394) anylist ::= */ yytestcase(yyruleno==394);
163225 /* (395) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==395);
163226 /* (396) anylist ::= anylist ANY */ yytestcase(yyruleno==396);
163227 /* (397) with ::= */ yytestcase(yyruleno==397);
 
163228 break;
163229 /********** End reduce actions ************************************************/
163230 };
163231 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
163232 yygoto = yyRuleInfoLhs[yyruleno];
@@ -163479,18 +163800,17 @@
163479 }
163480 #endif
163481 yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
163482 yymajor = YYNOCODE;
163483 }else{
163484 while( yypParser->yytos >= yypParser->yystack
163485 && (yyact = yy_find_reduce_action(
163486 yypParser->yytos->stateno,
163487 YYERRORSYMBOL)) > YY_MAX_SHIFTREDUCE
163488 ){
163489 yy_pop_parser_stack(yypParser);
163490 }
163491 if( yypParser->yytos < yypParser->yystack || yymajor==0 ){
163492 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
163493 yy_parse_failed(yypParser);
163494 #ifndef YYNOERRORRECOVERY
163495 yypParser->yyerrcnt = -1;
163496 #endif
@@ -166553,11 +166873,11 @@
166553 }
166554 #endif
166555
166556 /* Convert the connection into a zombie and then close it.
166557 */
166558 db->magic = SQLITE_MAGIC_ZOMBIE;
166559 sqlite3LeaveMutexAndCloseZombie(db);
166560 return SQLITE_OK;
166561 }
166562
166563 /*
@@ -166617,11 +166937,11 @@
166617
166618 /* If there are outstanding sqlite3_stmt or sqlite3_backup objects
166619 ** or if the connection has not yet been closed by sqlite3_close_v2(),
166620 ** then just leave the mutex and return.
166621 */
166622 if( db->magic!=SQLITE_MAGIC_ZOMBIE || connectionIsBusy(db) ){
166623 sqlite3_mutex_leave(db->mutex);
166624 return;
166625 }
166626
166627 /* If we reach this point, it means that the database connection has
@@ -166703,21 +167023,21 @@
166703 #if SQLITE_USER_AUTHENTICATION
166704 sqlite3_free(db->auth.zAuthUser);
166705 sqlite3_free(db->auth.zAuthPW);
166706 #endif
166707
166708 db->magic = SQLITE_MAGIC_ERROR;
166709
166710 /* The temp-database schema is allocated differently from the other schema
166711 ** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()).
166712 ** So it needs to be freed here. Todo: Why not roll the temp schema into
166713 ** the same sqliteMalloc() as the one that allocates the database
166714 ** structure?
166715 */
166716 sqlite3DbFree(db, db->aDb[1].pSchema);
166717 sqlite3_mutex_leave(db->mutex);
166718 db->magic = SQLITE_MAGIC_CLOSED;
166719 sqlite3_mutex_free(db->mutex);
166720 assert( sqlite3LookasideUsed(db,0)==0 );
166721 if( db->lookaside.bMalloced ){
166722 sqlite3_free(db->lookaside.pStart);
166723 }
@@ -167101,11 +167421,11 @@
167101 /*
167102 ** Cause any pending operation to stop at its earliest opportunity.
167103 */
167104 SQLITE_API void sqlite3_interrupt(sqlite3 *db){
167105 #ifdef SQLITE_ENABLE_API_ARMOR
167106 if( !sqlite3SafetyCheckOk(db) && (db==0 || db->magic!=SQLITE_MAGIC_ZOMBIE) ){
167107 (void)SQLITE_MISUSE_BKPT;
167108 return;
167109 }
167110 #endif
167111 AtomicStore(&db->u1.isInterrupted, 1);
@@ -168504,11 +168824,11 @@
168504 }
168505 }
168506 sqlite3_mutex_enter(db->mutex);
168507 db->errMask = 0xff;
168508 db->nDb = 2;
168509 db->magic = SQLITE_MAGIC_BUSY;
168510 db->aDb = db->aDbStatic;
168511 db->lookaside.bDisable = 1;
168512 db->lookaside.sz = 0;
168513
168514 assert( sizeof(db->aLimit)==sizeof(aHardLimit) );
@@ -168516,11 +168836,18 @@
168516 db->aLimit[SQLITE_LIMIT_WORKER_THREADS] = SQLITE_DEFAULT_WORKER_THREADS;
168517 db->autoCommit = 1;
168518 db->nextAutovac = -1;
168519 db->szMmap = sqlite3GlobalConfig.szMmap;
168520 db->nextPagesize = 0;
 
 
 
 
 
 
168521 db->nMaxSorterMmap = 0x7FFFFFFF;
 
168522 db->flags |= SQLITE_ShortColNames
168523 | SQLITE_EnableTrigger
168524 | SQLITE_EnableView
168525 | SQLITE_CacheSpill
168526 #if !defined(SQLITE_TRUSTED_SCHEMA) || SQLITE_TRUSTED_SCHEMA+0!=0
@@ -168664,11 +168991,11 @@
168664 db->aDb[0].zDbSName = "main";
168665 db->aDb[0].safety_level = SQLITE_DEFAULT_SYNCHRONOUS+1;
168666 db->aDb[1].zDbSName = "temp";
168667 db->aDb[1].safety_level = PAGER_SYNCHRONOUS_OFF;
168668
168669 db->magic = SQLITE_MAGIC_OPEN;
168670 if( db->mallocFailed ){
168671 goto opendb_out;
168672 }
168673
168674 /* Register all built-in functions, but do not attempt to read the
@@ -168731,11 +169058,11 @@
168731 assert( db!=0 || rc==SQLITE_NOMEM );
168732 if( rc==SQLITE_NOMEM ){
168733 sqlite3_close(db);
168734 db = 0;
168735 }else if( rc!=SQLITE_OK ){
168736 db->magic = SQLITE_MAGIC_SICK;
168737 }
168738 *ppDb = db;
168739 #ifdef SQLITE_ENABLE_SQLLOG
168740 if( sqlite3GlobalConfig.xSqllog ){
168741 /* Opening a db handle. Fourth parameter is passed 0. */
@@ -215510,18 +215837,17 @@
215510 }
215511 #endif
215512 fts5yy_destructor(fts5yypParser, (fts5YYCODETYPE)fts5yymajor, &fts5yyminorunion);
215513 fts5yymajor = fts5YYNOCODE;
215514 }else{
215515 while( fts5yypParser->fts5yytos >= fts5yypParser->fts5yystack
215516 && (fts5yyact = fts5yy_find_reduce_action(
215517 fts5yypParser->fts5yytos->stateno,
215518 fts5YYERRORSYMBOL)) > fts5YY_MAX_SHIFTREDUCE
215519 ){
215520 fts5yy_pop_parser_stack(fts5yypParser);
215521 }
215522 if( fts5yypParser->fts5yytos < fts5yypParser->fts5yystack || fts5yymajor==0 ){
215523 fts5yy_destructor(fts5yypParser,(fts5YYCODETYPE)fts5yymajor,&fts5yyminorunion);
215524 fts5yy_parse_failed(fts5yypParser);
215525 #ifndef fts5YYNOERRORRECOVERY
215526 fts5yypParser->fts5yyerrcnt = -1;
215527 #endif
@@ -230849,11 +231175,11 @@
230849 int nArg, /* Number of args */
230850 sqlite3_value **apUnused /* Function arguments */
230851 ){
230852 assert( nArg==0 );
230853 UNUSED_PARAM2(nArg, apUnused);
230854 sqlite3_result_text(pCtx, "fts5: 2021-08-06 20:17:39 087b8b41c6ed76b55c11315e7e95679d67590be20ae21108b593d00bb7d1c57a", -1, SQLITE_TRANSIENT);
230855 }
230856
230857 /*
230858 ** Return true if zName is the extension on one of the shadow tables used
230859 ** by this module.
230860
--- src/sqlite3.c
+++ src/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.37.0"
456 #define SQLITE_VERSION_NUMBER 3037000
457 #define SQLITE_SOURCE_ID "2021-09-06 11:44:19 b3cfe23bec0b95ca673802526704200e2396df715fdded72aa71addd7f47e0e1"
458
459 /*
460 ** CAPI3REF: Run-Time Library Version Numbers
461 ** KEYWORDS: sqlite3_version sqlite3_sourceid
462 **
@@ -865,10 +865,11 @@
865 #define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8))
866 #define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8))
867 #define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
868 #define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8))
869 #define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8))
870 #define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
871 #define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
872 #define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
873 #define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
874 #define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
875 #define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
@@ -13446,12 +13447,12 @@
13447 #define TK_EXISTS 20
13448 #define TK_TEMP 21
13449 #define TK_LP 22
13450 #define TK_RP 23
13451 #define TK_AS 24
13452 #define TK_COMMA 25
13453 #define TK_WITHOUT 26
13454 #define TK_ABORT 27
13455 #define TK_ACTION 28
13456 #define TK_AFTER 29
13457 #define TK_ANALYZE 30
13458 #define TK_ASC 31
@@ -15109,91 +15110,91 @@
15110 #define OP_Jump 16 /* jump */
15111 #define OP_Once 17 /* jump */
15112 #define OP_If 18 /* jump */
15113 #define OP_Not 19 /* same as TK_NOT, synopsis: r[P2]= !r[P1] */
15114 #define OP_IfNot 20 /* jump */
15115 #define OP_IsNullOrType 21 /* jump, synopsis: if typeof(r[P1]) IN (P3,5) goto P2 */
15116 #define OP_IfNullRow 22 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */
15117 #define OP_SeekLT 23 /* jump, synopsis: key=r[P3@P4] */
15118 #define OP_SeekLE 24 /* jump, synopsis: key=r[P3@P4] */
15119 #define OP_SeekGE 25 /* jump, synopsis: key=r[P3@P4] */
15120 #define OP_SeekGT 26 /* jump, synopsis: key=r[P3@P4] */
15121 #define OP_IfNotOpen 27 /* jump, synopsis: if( !csr[P1] ) goto P2 */
15122 #define OP_IfNoHope 28 /* jump, synopsis: key=r[P3@P4] */
15123 #define OP_NoConflict 29 /* jump, synopsis: key=r[P3@P4] */
15124 #define OP_NotFound 30 /* jump, synopsis: key=r[P3@P4] */
15125 #define OP_Found 31 /* jump, synopsis: key=r[P3@P4] */
15126 #define OP_SeekRowid 32 /* jump, synopsis: intkey=r[P3] */
15127 #define OP_NotExists 33 /* jump, synopsis: intkey=r[P3] */
15128 #define OP_Last 34 /* jump */
15129 #define OP_IfSmaller 35 /* jump */
15130 #define OP_SorterSort 36 /* jump */
15131 #define OP_Sort 37 /* jump */
15132 #define OP_Rewind 38 /* jump */
15133 #define OP_IdxLE 39 /* jump, synopsis: key=r[P3@P4] */
15134 #define OP_IdxGT 40 /* jump, synopsis: key=r[P3@P4] */
15135 #define OP_IdxLT 41 /* jump, synopsis: key=r[P3@P4] */
15136 #define OP_IdxGE 42 /* jump, synopsis: key=r[P3@P4] */
15137 #define OP_Or 43 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */
15138 #define OP_And 44 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */
15139 #define OP_RowSetRead 45 /* jump, synopsis: r[P3]=rowset(P1) */
15140 #define OP_RowSetTest 46 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
15141 #define OP_Program 47 /* jump */
15142 #define OP_FkIfZero 48 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
15143 #define OP_IfPos 49 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
15144 #define OP_IsNull 50 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
15145 #define OP_NotNull 51 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
15146 #define OP_Ne 52 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */
15147 #define OP_Eq 53 /* jump, same as TK_EQ, synopsis: IF r[P3]==r[P1] */
15148 #define OP_Gt 54 /* jump, same as TK_GT, synopsis: IF r[P3]>r[P1] */
15149 #define OP_Le 55 /* jump, same as TK_LE, synopsis: IF r[P3]<=r[P1] */
15150 #define OP_Lt 56 /* jump, same as TK_LT, synopsis: IF r[P3]<r[P1] */
15151 #define OP_Ge 57 /* jump, same as TK_GE, synopsis: IF r[P3]>=r[P1] */
15152 #define OP_ElseEq 58 /* jump, same as TK_ESCAPE */
15153 #define OP_IfNotZero 59 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
15154 #define OP_DecrJumpZero 60 /* jump, synopsis: if (--r[P1])==0 goto P2 */
15155 #define OP_IncrVacuum 61 /* jump */
15156 #define OP_VNext 62 /* jump */
15157 #define OP_Init 63 /* jump, synopsis: Start at P2 */
15158 #define OP_PureFunc 64 /* synopsis: r[P3]=func(r[P2@NP]) */
15159 #define OP_Function 65 /* synopsis: r[P3]=func(r[P2@NP]) */
15160 #define OP_Return 66
15161 #define OP_EndCoroutine 67
15162 #define OP_HaltIfNull 68 /* synopsis: if r[P3]=null halt */
15163 #define OP_Halt 69
15164 #define OP_Integer 70 /* synopsis: r[P2]=P1 */
15165 #define OP_Int64 71 /* synopsis: r[P2]=P4 */
15166 #define OP_String 72 /* synopsis: r[P2]='P4' (len=P1) */
15167 #define OP_Null 73 /* synopsis: r[P2..P3]=NULL */
15168 #define OP_SoftNull 74 /* synopsis: r[P1]=NULL */
15169 #define OP_Blob 75 /* synopsis: r[P2]=P4 (len=P1) */
15170 #define OP_Variable 76 /* synopsis: r[P2]=parameter(P1,P4) */
15171 #define OP_Move 77 /* synopsis: r[P2@P3]=r[P1@P3] */
15172 #define OP_Copy 78 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
15173 #define OP_SCopy 79 /* synopsis: r[P2]=r[P1] */
15174 #define OP_IntCopy 80 /* synopsis: r[P2]=r[P1] */
15175 #define OP_ChngCntRow 81 /* synopsis: output=r[P1] */
15176 #define OP_ResultRow 82 /* synopsis: output=r[P1@P2] */
15177 #define OP_CollSeq 83
15178 #define OP_AddImm 84 /* synopsis: r[P1]=r[P1]+P2 */
15179 #define OP_RealAffinity 85
15180 #define OP_Cast 86 /* synopsis: affinity(r[P1]) */
15181 #define OP_Permutation 87
15182 #define OP_Compare 88 /* synopsis: r[P1@P3] <-> r[P2@P3] */
15183 #define OP_IsTrue 89 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
15184 #define OP_ZeroOrNull 90 /* synopsis: r[P2] = 0 OR NULL */
15185 #define OP_Offset 91 /* synopsis: r[P3] = sqlite_offset(P1) */
15186 #define OP_Column 92 /* synopsis: r[P3]=PX */
15187 #define OP_TypeCheck 93 /* synopsis: typecheck(r[P1@P2]) */
15188 #define OP_Affinity 94 /* synopsis: affinity(r[P1@P2]) */
15189 #define OP_MakeRecord 95 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
15190 #define OP_Count 96 /* synopsis: r[P2]=count() */
15191 #define OP_ReadCookie 97
15192 #define OP_SetCookie 98
15193 #define OP_ReopenIdx 99 /* synopsis: root=P2 iDb=P3 */
15194 #define OP_OpenRead 100 /* synopsis: root=P2 iDb=P3 */
15195 #define OP_OpenWrite 101 /* synopsis: root=P2 iDb=P3 */
15196 #define OP_BitAnd 102 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
15197 #define OP_BitOr 103 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
15198 #define OP_ShiftLeft 104 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
15199 #define OP_ShiftRight 105 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
15200 #define OP_Add 106 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
@@ -15200,78 +15201,80 @@
15201 #define OP_Subtract 107 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
15202 #define OP_Multiply 108 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
15203 #define OP_Divide 109 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
15204 #define OP_Remainder 110 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
15205 #define OP_Concat 111 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
15206 #define OP_OpenDup 112
15207 #define OP_BitNot 113 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
15208 #define OP_OpenAutoindex 114 /* synopsis: nColumn=P2 */
15209 #define OP_OpenEphemeral 115 /* synopsis: nColumn=P2 */
15210 #define OP_String8 116 /* same as TK_STRING, synopsis: r[P2]='P4' */
15211 #define OP_SorterOpen 117
15212 #define OP_SequenceTest 118 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
15213 #define OP_OpenPseudo 119 /* synopsis: P3 columns in r[P2] */
15214 #define OP_Close 120
15215 #define OP_ColumnsUsed 121
15216 #define OP_SeekScan 122 /* synopsis: Scan-ahead up to P1 rows */
15217 #define OP_SeekHit 123 /* synopsis: set P2<=seekHit<=P3 */
15218 #define OP_Sequence 124 /* synopsis: r[P2]=cursor[P1].ctr++ */
15219 #define OP_NewRowid 125 /* synopsis: r[P2]=rowid */
15220 #define OP_Insert 126 /* synopsis: intkey=r[P3] data=r[P2] */
15221 #define OP_RowCell 127
15222 #define OP_Delete 128
15223 #define OP_ResetCount 129
15224 #define OP_SorterCompare 130 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
15225 #define OP_SorterData 131 /* synopsis: r[P2]=data */
15226 #define OP_RowData 132 /* synopsis: r[P2]=data */
15227 #define OP_Rowid 133 /* synopsis: r[P2]=rowid */
15228 #define OP_NullRow 134
15229 #define OP_SeekEnd 135
15230 #define OP_IdxInsert 136 /* synopsis: key=r[P2] */
15231 #define OP_SorterInsert 137 /* synopsis: key=r[P2] */
15232 #define OP_IdxDelete 138 /* synopsis: key=r[P2@P3] */
15233 #define OP_DeferredSeek 139 /* synopsis: Move P3 to P1.rowid if needed */
15234 #define OP_IdxRowid 140 /* synopsis: r[P2]=rowid */
15235 #define OP_FinishSeek 141
15236 #define OP_Destroy 142
15237 #define OP_Clear 143
15238 #define OP_ResetSorter 144
15239 #define OP_CreateBtree 145 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
15240 #define OP_SqlExec 146
15241 #define OP_ParseSchema 147
15242 #define OP_LoadAnalysis 148
15243 #define OP_DropTable 149
15244 #define OP_DropIndex 150
15245 #define OP_DropTrigger 151
15246 #define OP_Real 152 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15247 #define OP_IntegrityCk 153
15248 #define OP_RowSetAdd 154 /* synopsis: rowset(P1)=r[P2] */
15249 #define OP_Param 155
15250 #define OP_FkCounter 156 /* synopsis: fkctr[P1]+=P2 */
15251 #define OP_MemMax 157 /* synopsis: r[P1]=max(r[P1],r[P2]) */
15252 #define OP_OffsetLimit 158 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
15253 #define OP_AggInverse 159 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
15254 #define OP_AggStep 160 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15255 #define OP_AggStep1 161 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15256 #define OP_AggValue 162 /* synopsis: r[P3]=value N=P2 */
15257 #define OP_AggFinal 163 /* synopsis: accum=r[P1] N=P2 */
15258 #define OP_Expire 164
15259 #define OP_CursorLock 165
15260 #define OP_CursorUnlock 166
15261 #define OP_TableLock 167 /* synopsis: iDb=P1 root=P2 write=P3 */
15262 #define OP_VBegin 168
15263 #define OP_VCreate 169
15264 #define OP_VDestroy 170
15265 #define OP_VOpen 171
15266 #define OP_VColumn 172 /* synopsis: r[P3]=vcolumn(P2) */
15267 #define OP_VRename 173
15268 #define OP_Pagecount 174
15269 #define OP_MaxPgcnt 175
15270 #define OP_Trace 176
15271 #define OP_CursorHint 177
15272 #define OP_ReleaseReg 178 /* synopsis: release r[P1@P2] mask P3 */
15273 #define OP_Noop 179
15274 #define OP_Explain 180
15275 #define OP_Abortable 181
15276
15277 /* Properties such as "out2" or "jump" that are specified in
15278 ** comments following the "case" for each opcode in the vdbe.c
15279 ** are encoded into bitvectors as follows:
15280 */
@@ -15282,39 +15285,39 @@
15285 #define OPFLG_OUT2 0x10 /* out2: P2 is an output */
15286 #define OPFLG_OUT3 0x20 /* out3: P3 is an output */
15287 #define OPFLG_INITIALIZER {\
15288 /* 0 */ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x10,\
15289 /* 8 */ 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03,\
15290 /* 16 */ 0x01, 0x01, 0x03, 0x12, 0x03, 0x03, 0x01, 0x09,\
15291 /* 24 */ 0x09, 0x09, 0x09, 0x01, 0x09, 0x09, 0x09, 0x09,\
15292 /* 32 */ 0x09, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\
15293 /* 40 */ 0x01, 0x01, 0x01, 0x26, 0x26, 0x23, 0x0b, 0x01,\
15294 /* 48 */ 0x01, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
15295 /* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x01, 0x01, 0x01,\
15296 /* 64 */ 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10,\
15297 /* 72 */ 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,\
15298 /* 80 */ 0x10, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00,\
15299 /* 88 */ 0x00, 0x12, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x00,\
15300 /* 96 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26,\
15301 /* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
15302 /* 112 */ 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\
15303 /* 120 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
15304 /* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,\
15305 /* 136 */ 0x04, 0x04, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00,\
15306 /* 144 */ 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15307 /* 152 */ 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x1a, 0x00,\
15308 /* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15309 /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10,\
15310 /* 176 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}
15311
15312 /* The resolve3P2Values() routine is able to run faster if it knows
15313 ** the value of the largest JUMP opcode. The smaller the maximum
15314 ** JUMP opcode the better, so the mkopcodeh.tcl script that
15315 ** generated this include file strives to group all JUMP opcodes
15316 ** together near the beginning of the list.
15317 */
15318 #define SQLITE_MX_JUMP_OPCODE 63 /* Maximum JUMP opcode */
15319
15320 /************** End of opcodes.h *********************************************/
15321 /************** Continuing where we left off in vdbe.h ***********************/
15322
15323 /*
@@ -16387,12 +16390,12 @@
16390 u8 vtabOnConflict; /* Value to return for s3_vtab_on_conflict() */
16391 u8 isTransactionSavepoint; /* True if the outermost savepoint is a TS */
16392 u8 mTrace; /* zero or more SQLITE_TRACE flags */
16393 u8 noSharedCache; /* True if no shared-cache backends */
16394 u8 nSqlExec; /* Number of pending OP_SqlExec opcodes */
16395 u8 eOpenState; /* Current condition of the connection */
16396 int nextPagesize; /* Pagesize after VACUUM if >0 */
 
16397 i64 nChange; /* Value returned by sqlite3_changes() */
16398 i64 nTotalChange; /* Value returned by sqlite3_total_changes() */
16399 int aLimit[SQLITE_N_LIMIT]; /* Limits */
16400 int nMaxSorterMmap; /* Maximum size of regions mapped by sorter */
16401 struct sqlite3InitInfo { /* Information used during initialization */
@@ -16615,21 +16618,20 @@
16618 ** Return true if it OK to factor constant expressions into the initialization
16619 ** code. The argument is a Parse object for the code generator.
16620 */
16621 #define ConstFactorOk(P) ((P)->okConstFactor)
16622
16623 /* Possible values for the sqlite3.eOpenState field.
16624 ** The numbers are randomly selected such that a minimum of three bits must
16625 ** change to convert any number to another or to zero
 
16626 */
16627 #define SQLITE_STATE_OPEN 0x76 /* Database is open */
16628 #define SQLITE_STATE_CLOSED 0xce /* Database is closed */
16629 #define SQLITE_STATE_SICK 0xba /* Error and awaiting close */
16630 #define SQLITE_STATE_BUSY 0x6d /* Database currently in use */
16631 #define SQLITE_STATE_ERROR 0xd5 /* An SQLITE_MISUSE error occurred */
16632 #define SQLITE_STATE_ZOMBIE 0xa7 /* Close with last statement close */
16633
16634 /*
16635 ** Each SQL function is defined by an instance of the following
16636 ** structure. For global built-in functions (ex: substr(), max(), count())
16637 ** a pointer to this structure is held in the sqlite3BuiltinFunctions object.
@@ -16894,32 +16896,33 @@
16896 ** set.
16897 */
16898 struct Column {
16899 char *zCnName; /* Name of this column */
16900 unsigned notNull :4; /* An OE_ code for handling a NOT NULL constraint */
16901 unsigned eCType :4; /* One of the standard types */
16902 char affinity; /* One of the SQLITE_AFF_... values */
16903 u8 szEst; /* Est size of value in this column. sizeof(INT)==1 */
16904 u8 hName; /* Column name hash for faster lookup */
16905 u16 iDflt; /* 1-based index of DEFAULT. 0 means "none" */
16906 u16 colFlags; /* Boolean properties. See COLFLAG_ defines below */
16907 };
16908
16909 /* Allowed values for Column.eCType.
16910 **
16911 ** Values must match entries in the global constant arrays
16912 ** sqlite3StdTypeLen[] and sqlite3StdType[]. Each value is one more
16913 ** than the offset into these arrays for the corresponding name.
16914 ** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
16915 */
16916 #define COLTYPE_CUSTOM 0 /* Type appended to zName */
16917 #define COLTYPE_ANY 1
16918 #define COLTYPE_BLOB 2
16919 #define COLTYPE_INT 3
16920 #define COLTYPE_INTEGER 4
16921 #define COLTYPE_REAL 5
16922 #define COLTYPE_TEXT 6
16923 #define SQLITE_N_STDTYPE 6 /* Number of standard types */
16924
16925 /* Allowed values for Column.colFlags.
16926 **
16927 ** Constraints:
16928 ** TF_HasVirtual == COLFLAG_VIRTUAL
@@ -17139,10 +17142,11 @@
17142 #define TF_HasNotNull 0x00000800 /* Contains NOT NULL constraints */
17143 #define TF_Shadow 0x00001000 /* True for a shadow table */
17144 #define TF_HasStat4 0x00002000 /* STAT4 info available for this table */
17145 #define TF_Ephemeral 0x00004000 /* An ephemeral table */
17146 #define TF_Eponymous 0x00008000 /* An eponymous virtual table */
17147 #define TF_Strict 0x00010000 /* STRICT mode */
17148
17149 /*
17150 ** Allowed values for Table.eTabType
17151 */
17152 #define TABTYP_NORM 0 /* Ordinary table */
@@ -19290,11 +19294,11 @@
19294 SQLITE_PRIVATE void sqlite3AddPrimaryKey(Parse*, ExprList*, int, int, int);
19295 SQLITE_PRIVATE void sqlite3AddCheckConstraint(Parse*, Expr*, const char*, const char*);
19296 SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,Expr*,const char*,const char*);
19297 SQLITE_PRIVATE void sqlite3AddCollateType(Parse*, Token*);
19298 SQLITE_PRIVATE void sqlite3AddGenerated(Parse*,Expr*,Token*);
19299 SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u32,Select*);
19300 SQLITE_PRIVATE void sqlite3AddReturning(Parse*,ExprList*);
19301 SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*,
19302 sqlite3_vfs**,char**,char **);
19303 #define sqlite3CodecQueryParameters(A,B,C) 0
19304 SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3*,const char*);
@@ -19695,10 +19699,11 @@
19699 #ifndef SQLITE_AMALGAMATION
19700 SQLITE_PRIVATE const unsigned char sqlite3OpcodeProperty[];
19701 SQLITE_PRIVATE const char sqlite3StrBINARY[];
19702 SQLITE_PRIVATE const unsigned char sqlite3StdTypeLen[];
19703 SQLITE_PRIVATE const char sqlite3StdTypeAffinity[];
19704 SQLITE_PRIVATE const char sqlite3StdTypeMap[];
19705 SQLITE_PRIVATE const char *sqlite3StdType[];
19706 SQLITE_PRIVATE const unsigned char sqlite3UpperToLower[];
19707 SQLITE_PRIVATE const unsigned char *sqlite3aLTb;
19708 SQLITE_PRIVATE const unsigned char *sqlite3aEQb;
19709 SQLITE_PRIVATE const unsigned char *sqlite3aGTb;
@@ -21464,20 +21469,42 @@
21469 SQLITE_PRIVATE const char sqlite3StrBINARY[] = "BINARY";
21470
21471 /*
21472 ** Standard typenames. These names must match the COLTYPE_* definitions.
21473 ** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
21474 **
21475 ** sqlite3StdType[] The actual names of the datatypes.
21476 **
21477 ** sqlite3StdTypeLen[] The length (in bytes) of each entry
21478 ** in sqlite3StdType[].
21479 **
21480 ** sqlite3StdTypeAffinity[] The affinity associated with each entry
21481 ** in sqlite3StdType[].
21482 **
21483 ** sqlite3StdTypeMap[] The type value (as returned from
21484 ** sqlite3_column_type() or sqlite3_value_type())
21485 ** for each entry in sqlite3StdType[].
21486 */
21487 SQLITE_PRIVATE const unsigned char sqlite3StdTypeLen[] = { 3, 4, 3, 7, 4, 4 };
21488 SQLITE_PRIVATE const char sqlite3StdTypeAffinity[] = {
21489 SQLITE_AFF_NUMERIC,
21490 SQLITE_AFF_BLOB,
21491 SQLITE_AFF_INTEGER,
21492 SQLITE_AFF_INTEGER,
21493 SQLITE_AFF_REAL,
21494 SQLITE_AFF_TEXT
21495 };
21496 SQLITE_PRIVATE const char sqlite3StdTypeMap[] = {
21497 0,
21498 SQLITE_BLOB,
21499 SQLITE_INTEGER,
21500 SQLITE_INTEGER,
21501 SQLITE_FLOAT,
21502 SQLITE_TEXT
21503 };
21504 SQLITE_PRIVATE const char *sqlite3StdType[] = {
21505 "ANY",
21506 "BLOB",
21507 "INT",
21508 "INTEGER",
21509 "REAL",
21510 "TEXT"
@@ -31896,15 +31923,25 @@
31923 #endif
31924
31925 #ifndef SQLITE_OMIT_FLOATING_POINT
31926 /*
31927 ** Return true if the floating point value is Not a Number (NaN).
31928 **
31929 ** Use the math library isnan() function if compiled with SQLITE_HAVE_ISNAN.
31930 ** Otherwise, we have our own implementation that works on most systems.
31931 */
31932 SQLITE_PRIVATE int sqlite3IsNaN(double x){
31933 int rc; /* The value return */
31934 #if !SQLITE_HAVE_ISNAN && !HAVE_ISNAN
31935 u64 y;
31936 memcpy(&y,&x,sizeof(y));
31937 rc = IsNaN(y);
31938 #else
31939 rc = isnan(x);
31940 #endif /* HAVE_ISNAN */
31941 testcase( rc );
31942 return rc;
31943 }
31944 #endif /* SQLITE_OMIT_FLOATING_POINT */
31945
31946 /*
31947 ** Compute a string length that is limited to what can be stored in
@@ -31927,13 +31964,13 @@
31964 ** the column name if and only if the COLFLAG_HASTYPE flag is set.
31965 */
31966 SQLITE_PRIVATE char *sqlite3ColumnType(Column *pCol, char *zDflt){
31967 if( pCol->colFlags & COLFLAG_HASTYPE ){
31968 return pCol->zCnName + strlen(pCol->zCnName) + 1;
31969 }else if( pCol->eCType ){
31970 assert( pCol->eCType<=SQLITE_N_STDTYPE );
31971 return (char*)sqlite3StdType[pCol->eCType-1];
31972 }else{
31973 return zDflt;
31974 }
31975 }
31976
@@ -33235,17 +33272,17 @@
33272 ** use. sqlite3SafetyCheckSickOrOk() allows a db pointer that failed to
33273 ** open properly and is not fit for general use but which can be
33274 ** used as an argument to sqlite3_errmsg() or sqlite3_close().
33275 */
33276 SQLITE_PRIVATE int sqlite3SafetyCheckOk(sqlite3 *db){
33277 u8 eOpenState;
33278 if( db==0 ){
33279 logBadConnection("NULL");
33280 return 0;
33281 }
33282 eOpenState = db->eOpenState;
33283 if( eOpenState!=SQLITE_STATE_OPEN ){
33284 if( sqlite3SafetyCheckSickOrOk(db) ){
33285 testcase( sqlite3GlobalConfig.xLog!=0 );
33286 logBadConnection("unopened");
33287 }
33288 return 0;
@@ -33252,15 +33289,15 @@
33289 }else{
33290 return 1;
33291 }
33292 }
33293 SQLITE_PRIVATE int sqlite3SafetyCheckSickOrOk(sqlite3 *db){
33294 u8 eOpenState;
33295 eOpenState = db->eOpenState;
33296 if( eOpenState!=SQLITE_STATE_SICK &&
33297 eOpenState!=SQLITE_STATE_OPEN &&
33298 eOpenState!=SQLITE_STATE_BUSY ){
33299 testcase( sqlite3GlobalConfig.xLog!=0 );
33300 logBadConnection("invalid");
33301 return 0;
33302 }else{
33303 return 1;
@@ -33875,91 +33912,91 @@
33912 /* 16 */ "Jump" OpHelp(""),
33913 /* 17 */ "Once" OpHelp(""),
33914 /* 18 */ "If" OpHelp(""),
33915 /* 19 */ "Not" OpHelp("r[P2]= !r[P1]"),
33916 /* 20 */ "IfNot" OpHelp(""),
33917 /* 21 */ "IsNullOrType" OpHelp("if typeof(r[P1]) IN (P3,5) goto P2"),
33918 /* 22 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"),
33919 /* 23 */ "SeekLT" OpHelp("key=r[P3@P4]"),
33920 /* 24 */ "SeekLE" OpHelp("key=r[P3@P4]"),
33921 /* 25 */ "SeekGE" OpHelp("key=r[P3@P4]"),
33922 /* 26 */ "SeekGT" OpHelp("key=r[P3@P4]"),
33923 /* 27 */ "IfNotOpen" OpHelp("if( !csr[P1] ) goto P2"),
33924 /* 28 */ "IfNoHope" OpHelp("key=r[P3@P4]"),
33925 /* 29 */ "NoConflict" OpHelp("key=r[P3@P4]"),
33926 /* 30 */ "NotFound" OpHelp("key=r[P3@P4]"),
33927 /* 31 */ "Found" OpHelp("key=r[P3@P4]"),
33928 /* 32 */ "SeekRowid" OpHelp("intkey=r[P3]"),
33929 /* 33 */ "NotExists" OpHelp("intkey=r[P3]"),
33930 /* 34 */ "Last" OpHelp(""),
33931 /* 35 */ "IfSmaller" OpHelp(""),
33932 /* 36 */ "SorterSort" OpHelp(""),
33933 /* 37 */ "Sort" OpHelp(""),
33934 /* 38 */ "Rewind" OpHelp(""),
33935 /* 39 */ "IdxLE" OpHelp("key=r[P3@P4]"),
33936 /* 40 */ "IdxGT" OpHelp("key=r[P3@P4]"),
33937 /* 41 */ "IdxLT" OpHelp("key=r[P3@P4]"),
33938 /* 42 */ "IdxGE" OpHelp("key=r[P3@P4]"),
33939 /* 43 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
33940 /* 44 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
33941 /* 45 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
33942 /* 46 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
33943 /* 47 */ "Program" OpHelp(""),
33944 /* 48 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
33945 /* 49 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
33946 /* 50 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
33947 /* 51 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
33948 /* 52 */ "Ne" OpHelp("IF r[P3]!=r[P1]"),
33949 /* 53 */ "Eq" OpHelp("IF r[P3]==r[P1]"),
33950 /* 54 */ "Gt" OpHelp("IF r[P3]>r[P1]"),
33951 /* 55 */ "Le" OpHelp("IF r[P3]<=r[P1]"),
33952 /* 56 */ "Lt" OpHelp("IF r[P3]<r[P1]"),
33953 /* 57 */ "Ge" OpHelp("IF r[P3]>=r[P1]"),
33954 /* 58 */ "ElseEq" OpHelp(""),
33955 /* 59 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
33956 /* 60 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
33957 /* 61 */ "IncrVacuum" OpHelp(""),
33958 /* 62 */ "VNext" OpHelp(""),
33959 /* 63 */ "Init" OpHelp("Start at P2"),
33960 /* 64 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
33961 /* 65 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
33962 /* 66 */ "Return" OpHelp(""),
33963 /* 67 */ "EndCoroutine" OpHelp(""),
33964 /* 68 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
33965 /* 69 */ "Halt" OpHelp(""),
33966 /* 70 */ "Integer" OpHelp("r[P2]=P1"),
33967 /* 71 */ "Int64" OpHelp("r[P2]=P4"),
33968 /* 72 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
33969 /* 73 */ "Null" OpHelp("r[P2..P3]=NULL"),
33970 /* 74 */ "SoftNull" OpHelp("r[P1]=NULL"),
33971 /* 75 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
33972 /* 76 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
33973 /* 77 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
33974 /* 78 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
33975 /* 79 */ "SCopy" OpHelp("r[P2]=r[P1]"),
33976 /* 80 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
33977 /* 81 */ "ChngCntRow" OpHelp("output=r[P1]"),
33978 /* 82 */ "ResultRow" OpHelp("output=r[P1@P2]"),
33979 /* 83 */ "CollSeq" OpHelp(""),
33980 /* 84 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
33981 /* 85 */ "RealAffinity" OpHelp(""),
33982 /* 86 */ "Cast" OpHelp("affinity(r[P1])"),
33983 /* 87 */ "Permutation" OpHelp(""),
33984 /* 88 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
33985 /* 89 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
33986 /* 90 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
33987 /* 91 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
33988 /* 92 */ "Column" OpHelp("r[P3]=PX"),
33989 /* 93 */ "TypeCheck" OpHelp("typecheck(r[P1@P2])"),
33990 /* 94 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
33991 /* 95 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
33992 /* 96 */ "Count" OpHelp("r[P2]=count()"),
33993 /* 97 */ "ReadCookie" OpHelp(""),
33994 /* 98 */ "SetCookie" OpHelp(""),
33995 /* 99 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
33996 /* 100 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
33997 /* 101 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
33998 /* 102 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
33999 /* 103 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
34000 /* 104 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
34001 /* 105 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
34002 /* 106 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -33966,78 +34003,80 @@
34003 /* 107 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
34004 /* 108 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
34005 /* 109 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
34006 /* 110 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
34007 /* 111 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
34008 /* 112 */ "OpenDup" OpHelp(""),
34009 /* 113 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
34010 /* 114 */ "OpenAutoindex" OpHelp("nColumn=P2"),
34011 /* 115 */ "OpenEphemeral" OpHelp("nColumn=P2"),
34012 /* 116 */ "String8" OpHelp("r[P2]='P4'"),
34013 /* 117 */ "SorterOpen" OpHelp(""),
34014 /* 118 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
34015 /* 119 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
34016 /* 120 */ "Close" OpHelp(""),
34017 /* 121 */ "ColumnsUsed" OpHelp(""),
34018 /* 122 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
34019 /* 123 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
34020 /* 124 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
34021 /* 125 */ "NewRowid" OpHelp("r[P2]=rowid"),
34022 /* 126 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
34023 /* 127 */ "RowCell" OpHelp(""),
34024 /* 128 */ "Delete" OpHelp(""),
34025 /* 129 */ "ResetCount" OpHelp(""),
34026 /* 130 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
34027 /* 131 */ "SorterData" OpHelp("r[P2]=data"),
34028 /* 132 */ "RowData" OpHelp("r[P2]=data"),
34029 /* 133 */ "Rowid" OpHelp("r[P2]=rowid"),
34030 /* 134 */ "NullRow" OpHelp(""),
34031 /* 135 */ "SeekEnd" OpHelp(""),
34032 /* 136 */ "IdxInsert" OpHelp("key=r[P2]"),
34033 /* 137 */ "SorterInsert" OpHelp("key=r[P2]"),
34034 /* 138 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
34035 /* 139 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
34036 /* 140 */ "IdxRowid" OpHelp("r[P2]=rowid"),
34037 /* 141 */ "FinishSeek" OpHelp(""),
34038 /* 142 */ "Destroy" OpHelp(""),
34039 /* 143 */ "Clear" OpHelp(""),
34040 /* 144 */ "ResetSorter" OpHelp(""),
34041 /* 145 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
34042 /* 146 */ "SqlExec" OpHelp(""),
34043 /* 147 */ "ParseSchema" OpHelp(""),
34044 /* 148 */ "LoadAnalysis" OpHelp(""),
34045 /* 149 */ "DropTable" OpHelp(""),
34046 /* 150 */ "DropIndex" OpHelp(""),
34047 /* 151 */ "DropTrigger" OpHelp(""),
34048 /* 152 */ "Real" OpHelp("r[P2]=P4"),
34049 /* 153 */ "IntegrityCk" OpHelp(""),
34050 /* 154 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
34051 /* 155 */ "Param" OpHelp(""),
34052 /* 156 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
34053 /* 157 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
34054 /* 158 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
34055 /* 159 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
34056 /* 160 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
34057 /* 161 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
34058 /* 162 */ "AggValue" OpHelp("r[P3]=value N=P2"),
34059 /* 163 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
34060 /* 164 */ "Expire" OpHelp(""),
34061 /* 165 */ "CursorLock" OpHelp(""),
34062 /* 166 */ "CursorUnlock" OpHelp(""),
34063 /* 167 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
34064 /* 168 */ "VBegin" OpHelp(""),
34065 /* 169 */ "VCreate" OpHelp(""),
34066 /* 170 */ "VDestroy" OpHelp(""),
34067 /* 171 */ "VOpen" OpHelp(""),
34068 /* 172 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
34069 /* 173 */ "VRename" OpHelp(""),
34070 /* 174 */ "Pagecount" OpHelp(""),
34071 /* 175 */ "MaxPgcnt" OpHelp(""),
34072 /* 176 */ "Trace" OpHelp(""),
34073 /* 177 */ "CursorHint" OpHelp(""),
34074 /* 178 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
34075 /* 179 */ "Noop" OpHelp(""),
34076 /* 180 */ "Explain" OpHelp(""),
34077 /* 181 */ "Abortable" OpHelp(""),
34078 };
34079 return azName[i];
34080 }
34081 #endif
34082
@@ -49846,15 +49885,18 @@
49885 if( p->szCache>=0 ){
49886 /* IMPLEMENTATION-OF: R-42059-47211 If the argument N is positive then the
49887 ** suggested cache size is set to N. */
49888 return p->szCache;
49889 }else{
49890 i64 n;
49891 /* IMPLEMANTATION-OF: R-59858-46238 If the argument N is negative, then the
49892 ** number of cache pages is adjusted to be a number of pages that would
49893 ** use approximately abs(N*1024) bytes of memory based on the current
49894 ** page size. */
49895 n = ((-1024*(i64)p->szCache)/(p->szPage+p->szExtra));
49896 if( n>1000000000 ) n = 1000000000;
49897 return (int)n;
49898 }
49899 }
49900
49901 /*************************************************** General Interfaces ******
49902 **
@@ -51305,16 +51347,22 @@
51347 **
51348 ** Configure the cache_size limit for a cache.
51349 */
51350 static void pcache1Cachesize(sqlite3_pcache *p, int nMax){
51351 PCache1 *pCache = (PCache1 *)p;
51352 u32 n;
51353 assert( nMax>=0 );
51354 if( pCache->bPurgeable ){
51355 PGroup *pGroup = pCache->pGroup;
51356 pcache1EnterMutex(pGroup);
51357 n = (u32)nMax;
51358 if( n > 0x7fff0000 - pGroup->nMaxPage + pCache->nMax ){
51359 n = 0x7fff0000 - pGroup->nMaxPage + pCache->nMax;
51360 }
51361 pGroup->nMaxPage += (n - pCache->nMax);
51362 pGroup->mxPinned = pGroup->nMaxPage + 10 - pGroup->nMinPage;
51363 pCache->nMax = n;
51364 pCache->n90pct = pCache->nMax*9/10;
51365 pcache1EnforceMaxPage(pCache);
51366 pcache1LeaveMutex(pGroup);
51367 }
51368 }
@@ -51326,11 +51374,11 @@
51374 */
51375 static void pcache1Shrink(sqlite3_pcache *p){
51376 PCache1 *pCache = (PCache1*)p;
51377 if( pCache->bPurgeable ){
51378 PGroup *pGroup = pCache->pGroup;
51379 unsigned int savedMaxPage;
51380 pcache1EnterMutex(pGroup);
51381 savedMaxPage = pGroup->nMaxPage;
51382 pGroup->nMaxPage = 0;
51383 pcache1EnforceMaxPage(pCache);
51384 pGroup->nMaxPage = savedMaxPage;
@@ -68480,11 +68528,11 @@
68528 }
68529 if( page1[19]>2 ){
68530 goto page1_init_failed;
68531 }
68532
68533 /* If the read version is set to 2, this database should be accessed
68534 ** in WAL mode. If the log is not already open, open it now. Then
68535 ** return SQLITE_OK and return without populating BtShared.pPage1.
68536 ** The caller detects this and calls this function again. This is
68537 ** required as the version of page 1 currently in the page1 buffer
68538 ** may not be the latest version - there may be a newer one in the log
@@ -81883,13 +81931,13 @@
81931 /*
81932 ** This routine is called the when a VDBE tries to halt. If the VDBE
81933 ** has made changes and is in autocommit mode, then commit those
81934 ** changes. If a rollback is needed, then do the rollback.
81935 **
81936 ** This routine is the only way to move the sqlite3eOpenState of a VM from
81937 ** SQLITE_STATE_RUN to SQLITE_STATE_HALT. It is harmless to
81938 ** call this on a VM that is in the SQLITE_STATE_HALT state.
81939 **
81940 ** Return an error code. If the commit could not complete because of
81941 ** lock contention, return SQLITE_BUSY. If SQLITE_BUSY is returned, it
81942 ** means the close did not happen and needs to be repeated.
81943 */
@@ -87051,10 +87099,23 @@
87099 pOut->flags = MEM_Int;
87100 return pOut;
87101 }
87102 }
87103
87104 /*
87105 ** Return the symbolic name for the data type of a pMem
87106 */
87107 static const char *vdbeMemTypeName(Mem *pMem){
87108 static const char *azTypes[] = {
87109 /* SQLITE_INTEGER */ "INT",
87110 /* SQLITE_FLOAT */ "REAL",
87111 /* SQLITE_TEXT */ "TEXT",
87112 /* SQLITE_BLOB */ "BLOB",
87113 /* SQLITE_NULL */ "NULL"
87114 };
87115 return azTypes[sqlite3_value_type(pMem)-1];
87116 }
87117
87118 /*
87119 ** Execute as much of a VDBE program as we can.
87120 ** This is the core of sqlite3_step().
87121 */
@@ -88881,10 +88942,26 @@
88942 if( (pIn1->flags & MEM_Null)!=0 ){
88943 goto jump_to_p2;
88944 }
88945 break;
88946 }
88947
88948 /* Opcode: IsNullOrType P1 P2 P3 * *
88949 ** Synopsis: if typeof(r[P1]) IN (P3,5) goto P2
88950 **
88951 ** Jump to P2 if the value in register P1 is NULL or has a datatype P3.
88952 ** P3 is an integer which should be one of SQLITE_INTEGER, SQLITE_FLOAT,
88953 ** SQLITE_BLOB, SQLITE_NULL, or SQLITE_TEXT.
88954 */
88955 case OP_IsNullOrType: { /* jump, in1 */
88956 int doTheJump;
88957 pIn1 = &aMem[pOp->p1];
88958 doTheJump = (pIn1->flags & MEM_Null)!=0 || sqlite3_value_type(pIn1)==pOp->p3;
88959 VdbeBranchTaken( doTheJump, 2);
88960 if( doTheJump ) goto jump_to_p2;
88961 break;
88962 }
88963
88964 /* Opcode: ZeroOrNull P1 P2 P3 * *
88965 ** Synopsis: r[P2] = 0 OR NULL
88966 **
88967 ** If all both registers P1 and P3 are NOT NULL, then store a zero in
@@ -89249,10 +89326,104 @@
89326 }else{
89327 rc = SQLITE_CORRUPT_BKPT;
89328 goto abort_due_to_error;
89329 }
89330 }
89331
89332 /* Opcode: TypeCheck P1 P2 * P4 *
89333 ** Synopsis: typecheck(r[P1@P2])
89334 **
89335 ** Apply affinities to the range of P2 registers beginning with P1.
89336 ** Take the affinities from the Table object in P4. If any value
89337 ** cannot be coerced into the correct type, then raise an error.
89338 **
89339 ** This opcode is similar to OP_Affinity except that this opcode
89340 ** forces the register type to the Table column type. This is used
89341 ** to implement "strict affinity".
89342 **
89343 ** Preconditions:
89344 **
89345 ** <ul>
89346 ** <li> P2 should be the number of non-virtual columns in the
89347 ** table of P4.
89348 ** <li> Table P4 should be a STRICT table.
89349 ** </ul>
89350 **
89351 ** If any precondition is false, an assertion fault occurs.
89352 */
89353 case OP_TypeCheck: {
89354 Table *pTab;
89355 Column *aCol;
89356 int i;
89357
89358 assert( pOp->p4type==P4_TABLE );
89359 pTab = pOp->p4.pTab;
89360 assert( pTab->tabFlags & TF_Strict );
89361 assert( pTab->nNVCol==pOp->p2 );
89362 aCol = pTab->aCol;
89363 pIn1 = &aMem[pOp->p1];
89364 for(i=0; i<pTab->nCol; i++){
89365 if( aCol[i].colFlags & COLFLAG_VIRTUAL ) continue;
89366 assert( pIn1 < &aMem[pOp->p1+pOp->p2] );
89367 applyAffinity(pIn1, aCol[i].affinity, encoding);
89368 if( (pIn1->flags & MEM_Null)==0 ){
89369 switch( aCol[i].eCType ){
89370 case COLTYPE_BLOB: {
89371 if( (pIn1->flags & MEM_Blob)==0 ) goto vdbe_type_error;
89372 break;
89373 }
89374 case COLTYPE_INTEGER:
89375 case COLTYPE_INT: {
89376 if( (pIn1->flags & MEM_Int)==0 ) goto vdbe_type_error;
89377 break;
89378 }
89379 case COLTYPE_TEXT: {
89380 if( (pIn1->flags & MEM_Str)==0 ) goto vdbe_type_error;
89381 break;
89382 }
89383 case COLTYPE_REAL: {
89384 if( pIn1->flags & MEM_Int ){
89385 /* When applying REAL affinity, if the result is still an MEM_Int
89386 ** that will fit in 6 bytes, then change the type to MEM_IntReal
89387 ** so that we keep the high-resolution integer value but know that
89388 ** the type really wants to be REAL. */
89389 testcase( pIn1->u.i==140737488355328LL );
89390 testcase( pIn1->u.i==140737488355327LL );
89391 testcase( pIn1->u.i==-140737488355328LL );
89392 testcase( pIn1->u.i==-140737488355329LL );
89393 if( pIn1->u.i<=140737488355327LL && pIn1->u.i>=-140737488355328LL){
89394 pIn1->flags |= MEM_IntReal;
89395 pIn1->flags &= ~MEM_Int;
89396 }else{
89397 pIn1->u.r = (double)pIn1->u.i;
89398 pIn1->flags |= MEM_Real;
89399 pIn1->flags &= ~MEM_Int;
89400 }
89401 }else if( (pIn1->flags & MEM_Real)==0 ){
89402 goto vdbe_type_error;
89403 }
89404 break;
89405 }
89406 default: {
89407 /* COLTYPE_ANY. Accept anything. */
89408 break;
89409 }
89410 }
89411 }
89412 REGISTER_TRACE((int)(pIn1-aMem), pIn1);
89413 pIn1++;
89414 }
89415 assert( pIn1 == &aMem[pOp->p1+pOp->p2] );
89416 break;
89417
89418 vdbe_type_error:
89419 sqlite3VdbeError(p, "cannot store %s value in %s column %s.%s",
89420 vdbeMemTypeName(pIn1), sqlite3StdType[aCol[i].eCType-1],
89421 pTab->zName, aCol[i].zCnName);
89422 rc = SQLITE_CONSTRAINT_DATATYPE;
89423 goto abort_due_to_error;
89424 }
89425
89426 /* Opcode: Affinity P1 P2 * P4 *
89427 ** Synopsis: affinity(r[P1@P2])
89428 **
89429 ** Apply affinities to a range of P2 registers starting with P1.
@@ -92300,11 +92471,12 @@
92471 ** If P5 is not zero, then raise an SQLITE_CORRUPT_INDEX error
92472 ** if no matching index entry is found. This happens when running
92473 ** an UPDATE or DELETE statement and the index entry to be updated
92474 ** or deleted is not found. For some uses of IdxDelete
92475 ** (example: the EXCEPT operator) it does not matter that no matching
92476 ** entry is found. For those cases, P5 is zero. Also, do not raise
92477 ** this (self-correcting and non-critical) error if in writable_schema mode.
92478 */
92479 case OP_IdxDelete: {
92480 VdbeCursor *pC;
92481 BtCursor *pCrsr;
92482 int res;
@@ -92326,11 +92498,11 @@
92498 rc = sqlite3BtreeIndexMoveto(pCrsr, &r, &res);
92499 if( rc ) goto abort_due_to_error;
92500 if( res==0 ){
92501 rc = sqlite3BtreeDelete(pCrsr, BTREE_AUXDELETE);
92502 if( rc ) goto abort_due_to_error;
92503 }else if( pOp->p5 && !sqlite3WritableSchema(db) ){
92504 rc = sqlite3ReportError(SQLITE_CORRUPT_INDEX, __LINE__, "index corruption");
92505 goto abort_due_to_error;
92506 }
92507 assert( pC->deferredMoveto==0 );
92508 pC->cacheStatus = CACHE_STALE;
@@ -113942,11 +114114,11 @@
114114
114115 if( sType.n==0 ){
114116 /* If there is no type specified, columns have the default affinity
114117 ** 'BLOB' with a default size of 4 bytes. */
114118 pCol->affinity = affinity;
114119 pCol->eCType = eType;
114120 pCol->szEst = szEst;
114121 #ifdef SQLITE_ENABLE_SORTER_REFERENCES
114122 if( affinity==SQLITE_AFF_BLOB ){
114123 if( 4>=sqlite3GlobalConfig.szSorterRef ){
114124 pCol->colFlags |= COLFLAG_SORTERREF;
@@ -114237,11 +114409,11 @@
114409 }
114410 }
114411 }
114412 if( nTerm==1
114413 && pCol
114414 && pCol->eCType==COLTYPE_INTEGER
114415 && sortOrder!=SQLITE_SO_DESC
114416 ){
114417 if( IN_RENAME_OBJECT && pList ){
114418 Expr *pCExpr = sqlite3ExprSkipCollate(pList->a[0].pExpr);
114419 sqlite3RenameTokenRemap(pParse, &pTab->iPKey, pCExpr);
@@ -114709,11 +114881,13 @@
114881
114882 /* Mark every PRIMARY KEY column as NOT NULL (except for imposter tables)
114883 */
114884 if( !db->init.imposterTable ){
114885 for(i=0; i<pTab->nCol; i++){
114886 if( (pTab->aCol[i].colFlags & COLFLAG_PRIMKEY)!=0
114887 && (pTab->aCol[i].notNull==OE_None)
114888 ){
114889 pTab->aCol[i].notNull = OE_Abort;
114890 }
114891 }
114892 pTab->tabFlags |= TF_HasNotNull;
114893 }
@@ -114942,11 +115116,11 @@
115116 */
115117 SQLITE_PRIVATE void sqlite3EndTable(
115118 Parse *pParse, /* Parse context */
115119 Token *pCons, /* The ',' token after the last column defn. */
115120 Token *pEnd, /* The ')' before options in the CREATE TABLE */
115121 u32 tabOpts, /* Extra table options. Usually 0. */
115122 Select *pSelect /* Select from a "CREATE ... AS SELECT" */
115123 ){
115124 Table *p; /* The new table */
115125 sqlite3 *db = pParse->db; /* The database connection */
115126 int iDb; /* Database in which the table lives */
@@ -114977,10 +115151,48 @@
115151 return;
115152 }
115153 p->tnum = db->init.newTnum;
115154 if( p->tnum==1 ) p->tabFlags |= TF_Readonly;
115155 }
115156
115157 /* Special processing for tables that include the STRICT keyword:
115158 **
115159 ** * Do not allow custom column datatypes. Every column must have
115160 ** a datatype that is one of INT, INTEGER, REAL, TEXT, or BLOB.
115161 **
115162 ** * If a PRIMARY KEY is defined, other than the INTEGER PRIMARY KEY,
115163 ** then all columns of the PRIMARY KEY must have a NOT NULL
115164 ** constraint.
115165 */
115166 if( tabOpts & TF_Strict ){
115167 int ii;
115168 p->tabFlags |= TF_Strict;
115169 for(ii=0; ii<p->nCol; ii++){
115170 Column *pCol = &p->aCol[ii];
115171 if( pCol->eCType==COLTYPE_CUSTOM ){
115172 if( pCol->colFlags & COLFLAG_HASTYPE ){
115173 sqlite3ErrorMsg(pParse,
115174 "unknown datatype for %s.%s: \"%s\"",
115175 p->zName, pCol->zCnName, sqlite3ColumnType(pCol, "")
115176 );
115177 }else{
115178 sqlite3ErrorMsg(pParse, "missing datatype for %s.%s",
115179 p->zName, pCol->zCnName);
115180 }
115181 return;
115182 }else if( pCol->eCType==COLTYPE_ANY ){
115183 pCol->affinity = SQLITE_AFF_BLOB;
115184 }
115185 if( (pCol->colFlags & COLFLAG_PRIMKEY)!=0
115186 && p->iPKey!=ii
115187 && pCol->notNull == OE_None
115188 ){
115189 pCol->notNull = OE_Abort;
115190 p->tabFlags |= TF_HasNotNull;
115191 }
115192 }
115193 }
115194
115195 assert( (p->tabFlags & TF_HasPrimaryKey)==0
115196 || p->iPKey>=0 || sqlite3PrimaryKeyIndex(p)!=0 );
115197 assert( (p->tabFlags & TF_HasPrimaryKey)!=0
115198 || (p->iPKey<0 && sqlite3PrimaryKeyIndex(p)==0) );
@@ -123286,32 +123498,72 @@
123498
123499 return pIdx->zColAff;
123500 }
123501
123502 /*
123503 ** Make changes to the evolving bytecode to do affinity transformations
123504 ** of values that are about to be gathered into a row for table pTab.
123505 **
123506 ** For ordinary (legacy, non-strict) tables:
123507 ** -----------------------------------------
123508 **
123509 ** Compute the affinity string for table pTab, if it has not already been
123510 ** computed. As an optimization, omit trailing SQLITE_AFF_BLOB affinities.
123511 **
123512 ** If the affinity string is empty (because it was all SQLITE_AFF_BLOB entries
123513 ** which were then optimized out) then this routine becomes a no-op.
123514 **
123515 ** Otherwise if iReg>0 then code an OP_Affinity opcode that will set the
123516 ** affinities for register iReg and following. Or if iReg==0,
123517 ** then just set the P4 operand of the previous opcode (which should be
123518 ** an OP_MakeRecord) to the affinity string.
123519 **
123520 ** A column affinity string has one character per column:
123521 **
123522 ** Character Column affinity
123523 ** --------- ---------------
123524 ** 'A' BLOB
123525 ** 'B' TEXT
123526 ** 'C' NUMERIC
123527 ** 'D' INTEGER
123528 ** 'E' REAL
123529 **
123530 ** For STRICT tables:
123531 ** ------------------
123532 **
123533 ** Generate an appropropriate OP_TypeCheck opcode that will verify the
123534 ** datatypes against the column definitions in pTab. If iReg==0, that
123535 ** means an OP_MakeRecord opcode has already been generated and should be
123536 ** the last opcode generated. The new OP_TypeCheck needs to be inserted
123537 ** before the OP_MakeRecord. The new OP_TypeCheck should use the same
123538 ** register set as the OP_MakeRecord. If iReg>0 then register iReg is
123539 ** the first of a series of registers that will form the new record.
123540 ** Apply the type checking to that array of registers.
123541 */
123542 SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
123543 int i, j;
123544 char *zColAff;
123545 if( pTab->tabFlags & TF_Strict ){
123546 if( iReg==0 ){
123547 /* Move the previous opcode (which should be OP_MakeRecord) forward
123548 ** by one slot and insert a new OP_TypeCheck where the current
123549 ** OP_MakeRecord is found */
123550 VdbeOp *pPrev;
123551 sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
123552 pPrev = sqlite3VdbeGetOp(v, -1);
123553 assert( pPrev!=0 );
123554 assert( pPrev->opcode==OP_MakeRecord || sqlite3VdbeDb(v)->mallocFailed );
123555 pPrev->opcode = OP_TypeCheck;
123556 sqlite3VdbeAddOp3(v, OP_MakeRecord, pPrev->p1, pPrev->p2, pPrev->p3);
123557 }else{
123558 /* Insert an isolated OP_Typecheck */
123559 sqlite3VdbeAddOp2(v, OP_TypeCheck, iReg, pTab->nNVCol);
123560 sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
123561 }
123562 return;
123563 }
123564 zColAff = pTab->zColAff;
123565 if( zColAff==0 ){
123566 sqlite3 *db = sqlite3VdbeDb(v);
123567 zColAff = (char *)sqlite3DbMallocRaw(0, pTab->nCol+1);
123568 if( !zColAff ){
123569 sqlite3OomFault(db);
@@ -123333,10 +123585,12 @@
123585 i = sqlite3Strlen30NN(zColAff);
123586 if( i ){
123587 if( iReg ){
123588 sqlite3VdbeAddOp4(v, OP_Affinity, iReg, i, 0, zColAff, i);
123589 }else{
123590 assert( sqlite3VdbeGetOp(v, -1)->opcode==OP_MakeRecord
123591 || sqlite3VdbeDb(v)->mallocFailed );
123592 sqlite3VdbeChangeP4(v, -1, zColAff, i);
123593 }
123594 }
123595 }
123596
@@ -125970,10 +126224,13 @@
126224 if( pDest->nCol!=pSrc->nCol ){
126225 return 0; /* Number of columns must be the same in tab1 and tab2 */
126226 }
126227 if( pDest->iPKey!=pSrc->iPKey ){
126228 return 0; /* Both tables must have the same INTEGER PRIMARY KEY */
126229 }
126230 if( (pDest->tabFlags & TF_Strict)!=0 && (pSrc->tabFlags & TF_Strict)==0 ){
126231 return 0; /* Cannot feed from a non-strict into a strict table */
126232 }
126233 for(i=0; i<pDest->nCol; i++){
126234 Column *pDestCol = &pDest->aCol[i];
126235 Column *pSrcCol = &pSrc->aCol[i];
126236 #ifdef SQLITE_ENABLE_HIDDEN_COLUMNS
@@ -130237,10 +130494,11 @@
130494 Index *pIdx, *pPk;
130495 Index *pPrior = 0;
130496 int loopTop;
130497 int iDataCur, iIdxCur;
130498 int r1 = -1;
130499 int bStrict;
130500
130501 if( pTab->tnum<1 ) continue; /* Skip VIEWs or VIRTUAL TABLEs */
130502 if( pObjTab && pObjTab!=pTab ) continue;
130503 pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
130504 sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenRead, 0,
@@ -130258,27 +130516,50 @@
130516 loopTop = sqlite3VdbeAddOp2(v, OP_AddImm, 7, 1);
130517 if( !isQuick ){
130518 /* Sanity check on record header decoding */
130519 sqlite3VdbeAddOp3(v, OP_Column, iDataCur, pTab->nNVCol-1,3);
130520 sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
130521 VdbeComment((v, "(right-most column)"));
130522 }
130523 /* Verify that all NOT NULL columns really are NOT NULL. At the
130524 ** same time verify the type of the content of STRICT tables */
130525 bStrict = (pTab->tabFlags & TF_Strict)!=0;
130526 for(j=0; j<pTab->nCol; j++){
130527 char *zErr;
130528 Column *pCol = pTab->aCol + j;
130529 int doError, jmp2;
130530 if( j==pTab->iPKey ) continue;
130531 if( pCol->notNull==0 && !bStrict ) continue;
130532 doError = bStrict ? sqlite3VdbeMakeLabel(pParse) : 0;
130533 sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, j, 3);
130534 if( sqlite3VdbeGetOp(v,-1)->opcode==OP_Column ){
130535 sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
130536 }
130537 if( pCol->notNull ){
130538 jmp2 = sqlite3VdbeAddOp1(v, OP_NotNull, 3); VdbeCoverage(v);
130539 zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName,
130540 pCol->zCnName);
130541 sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
130542 if( bStrict ){
130543 sqlite3VdbeGoto(v, doError);
130544 }else{
130545 integrityCheckResultRow(v);
130546 }
130547 sqlite3VdbeJumpHere(v, jmp2);
130548 }
130549 if( pTab->tabFlags & TF_Strict ){
130550 jmp2 = sqlite3VdbeAddOp3(v, OP_IsNullOrType, 3, 0,
130551 sqlite3StdTypeMap[pCol->eCType-1]);
130552 VdbeCoverage(v);
130553 zErr = sqlite3MPrintf(db, "non-%s value in %s.%s",
130554 sqlite3StdType[pCol->eCType-1],
130555 pTab->zName, pTab->aCol[j].zCnName);
130556 sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
130557 sqlite3VdbeResolveLabel(v, doError);
130558 integrityCheckResultRow(v);
130559 sqlite3VdbeJumpHere(v, jmp2);
130560 }
130561 }
130562 /* Verify CHECK constraints */
130563 if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
130564 ExprList *pCheck = sqlite3ExprListDup(db, pTab->pCheck, 0);
130565 if( db->mallocFailed==0 ){
@@ -134401,11 +134682,11 @@
134682 pCol->colFlags |= COLFLAG_HASTYPE;
134683 }
134684 }
134685 if( pCol->affinity<=SQLITE_AFF_NONE ) pCol->affinity = aff;
134686 pColl = sqlite3ExprCollSeq(pParse, p);
134687 if( pColl ){
134688 assert( pTab->pIndex==0 );
134689 sqlite3ColumnSetColl(db, pCol, pColl->zName);
134690 }
134691 }
134692 pTab->szTabRow = 1; /* Any non-zero value works */
@@ -135223,11 +135504,15 @@
135504 }
135505
135506 multi_select_end:
135507 pDest->iSdst = dest.iSdst;
135508 pDest->nSdst = dest.nSdst;
135509 if( pDelete ){
135510 sqlite3ParserAddCleanup(pParse,
135511 (void(*)(sqlite3*,void*))sqlite3SelectDelete,
135512 pDelete);
135513 }
135514 return rc;
135515 }
135516 #endif /* SQLITE_OMIT_COMPOUND_SELECT */
135517
135518 /*
@@ -138791,11 +139076,12 @@
139076
139077 /* Make copies of constant WHERE-clause terms in the outer query down
139078 ** inside the subquery. This can help the subquery to run more efficiently.
139079 */
139080 if( OptimizationEnabled(db, SQLITE_PushDown)
139081 && (pItem->fg.isCte==0
139082 || (pItem->u2.pCteUse->eM10d!=M10d_Yes && pItem->u2.pCteUse->nUse<2))
139083 && pushDownWhereTerms(pParse, pSub, p->pWhere, pItem->iCursor,
139084 (pItem->fg.jointype & JT_OUTER)!=0)
139085 ){
139086 #if SELECTTRACE_ENABLED
139087 if( sqlite3SelectTrace & 0x100 ){
@@ -138852,10 +139138,11 @@
139138 ** holds the result of the materialization. */
139139 CteUse *pCteUse = pItem->u2.pCteUse;
139140 sqlite3VdbeAddOp2(v, OP_Gosub, pCteUse->regRtn, pCteUse->addrM9e);
139141 if( pItem->iCursor!=pCteUse->iCur ){
139142 sqlite3VdbeAddOp2(v, OP_OpenDup, pItem->iCursor, pCteUse->iCur);
139143 VdbeComment((v, "%!S", pItem));
139144 }
139145 pSub->nSelectRow = pCteUse->nRowEst;
139146 }else if( (pPrior = isSelfJoinView(pTabList, pItem))!=0 ){
139147 /* This view has already been materialized by a prior entry in
139148 ** this same FROM clause. Reuse it. */
@@ -143567,11 +143854,12 @@
143854 SQLITE_PRIVATE void sqlite3VtabUnlock(VTable *pVTab){
143855 sqlite3 *db = pVTab->db;
143856
143857 assert( db );
143858 assert( pVTab->nRef>0 );
143859 assert( db->eOpenState==SQLITE_STATE_OPEN
143860 || db->eOpenState==SQLITE_STATE_ZOMBIE );
143861
143862 pVTab->nRef--;
143863 if( pVTab->nRef==0 ){
143864 sqlite3_vtab *p = pVTab->pVtab;
143865 sqlite3VtabModuleUnref(pVTab->db, pVTab->pMod);
@@ -146799,13 +147087,10 @@
147087 if( iRowidReg!=iReleaseReg ) sqlite3ReleaseTempReg(pParse, iReleaseReg);
147088 addrNxt = pLevel->addrNxt;
147089 sqlite3VdbeAddOp3(v, OP_SeekRowid, iCur, addrNxt, iRowidReg);
147090 VdbeCoverage(v);
147091 pLevel->op = OP_Noop;
 
 
 
147092 }else if( (pLoop->wsFlags & WHERE_IPK)!=0
147093 && (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0
147094 ){
147095 /* Case 3: We have an inequality comparison against the ROWID field.
147096 */
@@ -151458,11 +151743,12 @@
151743 }
151744
151745 /*
151746 ** Return TRUE if all of the following are true:
151747 **
151748 ** (1) X has the same or lower cost, or returns the same or fewer rows,
151749 ** than Y.
151750 ** (2) X uses fewer WHERE clause terms than Y
151751 ** (3) Every WHERE clause term used by X is also used by Y
151752 ** (4) X skips at least as many columns as Y
151753 ** (5) If X is a covering index, than Y is too
151754 **
@@ -151481,15 +151767,12 @@
151767 ){
151768 int i, j;
151769 if( pX->nLTerm-pX->nSkip >= pY->nLTerm-pY->nSkip ){
151770 return 0; /* X is not a subset of Y */
151771 }
151772 if( pX->rRun>pY->rRun && pX->nOut>pY->nOut ) return 0;
151773 if( pY->nSkip > pX->nSkip ) return 0;
 
 
 
 
151774 for(i=pX->nLTerm-1; i>=0; i--){
151775 if( pX->aLTerm[i]==0 ) continue;
151776 for(j=pY->nLTerm-1; j>=0; j--){
151777 if( pY->aLTerm[j]==pX->aLTerm[i] ) break;
151778 }
@@ -151501,12 +151784,12 @@
151784 }
151785 return 1; /* All conditions meet */
151786 }
151787
151788 /*
151789 ** Try to adjust the cost and number of output rows of WhereLoop pTemplate
151790 ** upwards or downwards so that:
151791 **
151792 ** (1) pTemplate costs less than any other WhereLoops that are a proper
151793 ** subset of pTemplate
151794 **
151795 ** (2) pTemplate costs more than any other WhereLoops for which pTemplate
@@ -151523,20 +151806,24 @@
151806 if( (p->wsFlags & WHERE_INDEXED)==0 ) continue;
151807 if( whereLoopCheaperProperSubset(p, pTemplate) ){
151808 /* Adjust pTemplate cost downward so that it is cheaper than its
151809 ** subset p. */
151810 WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
151811 pTemplate->rRun, pTemplate->nOut,
151812 MIN(p->rRun, pTemplate->rRun),
151813 MIN(p->nOut - 1, pTemplate->nOut)));
151814 pTemplate->rRun = MIN(p->rRun, pTemplate->rRun);
151815 pTemplate->nOut = MIN(p->nOut - 1, pTemplate->nOut);
151816 }else if( whereLoopCheaperProperSubset(pTemplate, p) ){
151817 /* Adjust pTemplate cost upward so that it is costlier than p since
151818 ** pTemplate is a proper subset of p */
151819 WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
151820 pTemplate->rRun, pTemplate->nOut,
151821 MAX(p->rRun, pTemplate->rRun),
151822 MAX(p->nOut + 1, pTemplate->nOut)));
151823 pTemplate->rRun = MAX(p->rRun, pTemplate->rRun);
151824 pTemplate->nOut = MAX(p->nOut + 1, pTemplate->nOut);
151825 }
151826 }
151827 }
151828
151829 /*
@@ -158474,12 +158761,12 @@
158761 #define TK_EXISTS 20
158762 #define TK_TEMP 21
158763 #define TK_LP 22
158764 #define TK_RP 23
158765 #define TK_AS 24
158766 #define TK_COMMA 25
158767 #define TK_WITHOUT 26
158768 #define TK_ABORT 27
158769 #define TK_ACTION 28
158770 #define TK_AFTER 29
158771 #define TK_ANALYZE 30
158772 #define TK_ASC 31
@@ -158692,33 +158979,34 @@
158979 #ifndef INTERFACE
158980 # define INTERFACE 1
158981 #endif
158982 /************* Begin control #defines *****************************************/
158983 #define YYCODETYPE unsigned short int
158984 #define YYNOCODE 318
158985 #define YYACTIONTYPE unsigned short int
158986 #define YYWILDCARD 101
158987 #define sqlite3ParserTOKENTYPE Token
158988 typedef union {
158989 int yyinit;
158990 sqlite3ParserTOKENTYPE yy0;
158991 With* yy43;
158992 u32 yy51;
158993 int yy64;
158994 struct FrameBound yy81;
158995 struct {int value; int mask;} yy83;
158996 TriggerStep* yy95;
158997 Upsert* yy138;
158998 IdList* yy240;
158999 Cte* yy255;
159000 Select* yy303;
159001 Window* yy375;
159002 u8 yy534;
159003 ExprList* yy562;
159004 struct TrigEvent yy570;
159005 const char* yy600;
159006 SrcList* yy607;
159007 Expr* yy626;
159008 } YYMINORTYPE;
159009 #ifndef YYSTACKDEPTH
159010 #define YYSTACKDEPTH 100
159011 #endif
159012 #define sqlite3ParserARG_SDECL
@@ -158730,22 +159018,22 @@
159018 #define sqlite3ParserCTX_PDECL ,Parse *pParse
159019 #define sqlite3ParserCTX_PARAM ,pParse
159020 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
159021 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
159022 #define YYFALLBACK 1
159023 #define YYNSTATE 572
159024 #define YYNRULE 401
159025 #define YYNRULE_WITH_ACTION 339
159026 #define YYNTOKEN 184
159027 #define YY_MAX_SHIFT 571
159028 #define YY_MIN_SHIFTREDUCE 829
159029 #define YY_MAX_SHIFTREDUCE 1229
159030 #define YY_ERROR_ACTION 1230
159031 #define YY_ACCEPT_ACTION 1231
159032 #define YY_NO_ACTION 1232
159033 #define YY_MIN_REDUCE 1233
159034 #define YY_MAX_REDUCE 1633
159035 /************* End control #defines *******************************************/
159036 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
159037
159038 /* Define the yytestcase() macro to be a no-op if is not already defined
159039 ** otherwise.
@@ -158808,605 +159096,610 @@
159096 ** yy_reduce_ofst[] For each state, the offset into yy_action for
159097 ** shifting non-terminals after a reduce.
159098 ** yy_default[] Default action for each state.
159099 **
159100 *********** Begin parsing tables **********************************************/
159101 #define YY_ACTTAB_COUNT (2037)
159102 static const YYACTIONTYPE yy_action[] = {
159103 /* 0 */ 564, 115, 112, 220, 169, 199, 115, 112, 220, 564,
159104 /* 10 */ 375, 1266, 564, 376, 564, 270, 1309, 1309, 406, 407,
159105 /* 20 */ 1084, 199, 1513, 41, 41, 515, 489, 521, 558, 558,
159106 /* 30 */ 558, 965, 41, 41, 395, 41, 41, 51, 51, 966,
159107 /* 40 */ 296, 1269, 296, 122, 123, 113, 1207, 1207, 1041, 1044,
159108 /* 50 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 564, 407,
159109 /* 60 */ 275, 275, 275, 275, 1268, 115, 112, 220, 115, 112,
159110 /* 70 */ 220, 1512, 846, 561, 516, 561, 115, 112, 220, 250,
159111 /* 80 */ 217, 71, 71, 122, 123, 113, 1207, 1207, 1041, 1044,
159112 /* 90 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 440, 440,
159113 /* 100 */ 440, 1149, 119, 119, 119, 119, 118, 118, 117, 117,
159114 /* 110 */ 117, 116, 442, 1183, 1149, 116, 442, 1149, 546, 513,
159115 /* 120 */ 1548, 1554, 374, 442, 6, 1183, 1154, 522, 1154, 407,
159116 /* 130 */ 1556, 461, 373, 1554, 535, 99, 463, 332, 121, 121,
159117 /* 140 */ 121, 121, 119, 119, 119, 119, 118, 118, 117, 117,
159118 /* 150 */ 117, 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044,
159119 /* 160 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 1257, 1183,
159120 /* 170 */ 1184, 1185, 243, 1064, 564, 502, 499, 498, 567, 124,
159121 /* 180 */ 567, 1183, 1184, 1185, 474, 497, 119, 119, 119, 119,
159122 /* 190 */ 118, 118, 117, 117, 117, 116, 442, 70, 70, 407,
159123 /* 200 */ 121, 121, 121, 121, 114, 117, 117, 117, 116, 442,
159124 /* 210 */ 1409, 1469, 119, 119, 119, 119, 118, 118, 117, 117,
159125 /* 220 */ 117, 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044,
159126 /* 230 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 407, 1031,
159127 /* 240 */ 1031, 1042, 1045, 81, 382, 541, 378, 80, 119, 119,
159128 /* 250 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 381,
159129 /* 260 */ 463, 332, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
159130 /* 270 */ 1034, 120, 120, 121, 121, 121, 121, 262, 215, 512,
159131 /* 280 */ 1424, 422, 119, 119, 119, 119, 118, 118, 117, 117,
159132 /* 290 */ 117, 116, 442, 1231, 1, 1, 571, 2, 1235, 1573,
159133 /* 300 */ 571, 2, 1235, 307, 1149, 141, 1600, 307, 407, 141,
159134 /* 310 */ 1183, 361, 1317, 1035, 866, 531, 1317, 1149, 359, 1567,
159135 /* 320 */ 1149, 119, 119, 119, 119, 118, 118, 117, 117, 117,
159136 /* 330 */ 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
159137 /* 340 */ 1034, 120, 120, 121, 121, 121, 121, 275, 275, 1001,
159138 /* 350 */ 426, 275, 275, 1128, 1627, 1021, 1627, 137, 542, 1541,
159139 /* 360 */ 561, 272, 950, 950, 561, 1423, 1183, 1184, 1185, 1594,
159140 /* 370 */ 866, 1012, 530, 315, 231, 1011, 468, 1276, 231, 119,
159141 /* 380 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
159142 /* 390 */ 1570, 119, 119, 119, 119, 118, 118, 117, 117, 117,
159143 /* 400 */ 116, 442, 330, 359, 1567, 564, 446, 1011, 1011, 1013,
159144 /* 410 */ 446, 207, 564, 306, 555, 407, 363, 1021, 363, 346,
159145 /* 420 */ 184, 118, 118, 117, 117, 117, 116, 442, 71, 71,
159146 /* 430 */ 439, 438, 1126, 1012, 472, 71, 71, 1011, 205, 122,
159147 /* 440 */ 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120,
159148 /* 450 */ 121, 121, 121, 121, 219, 219, 472, 1183, 407, 570,
159149 /* 460 */ 1183, 1235, 503, 1477, 149, 546, 307, 489, 141, 1011,
159150 /* 470 */ 1011, 1013, 546, 140, 545, 1317, 1214, 191, 1214, 950,
159151 /* 480 */ 950, 514, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
159152 /* 490 */ 1034, 120, 120, 121, 121, 121, 121, 563, 119, 119,
159153 /* 500 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 283,
159154 /* 510 */ 275, 275, 415, 1183, 1184, 1185, 1183, 1184, 1185, 372,
159155 /* 520 */ 1183, 243, 344, 561, 502, 499, 498, 1539, 407, 1540,
159156 /* 530 */ 1183, 288, 870, 143, 497, 1549, 185, 231, 9, 6,
159157 /* 540 */ 253, 119, 119, 119, 119, 118, 118, 117, 117, 117,
159158 /* 550 */ 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
159159 /* 560 */ 1034, 120, 120, 121, 121, 121, 121, 407, 137, 446,
159160 /* 570 */ 447, 863, 169, 1183, 397, 1204, 1183, 1184, 1185, 931,
159161 /* 580 */ 526, 1001, 98, 339, 564, 342, 1183, 1184, 1185, 306,
159162 /* 590 */ 555, 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034,
159163 /* 600 */ 120, 120, 121, 121, 121, 121, 452, 71, 71, 275,
159164 /* 610 */ 275, 119, 119, 119, 119, 118, 118, 117, 117, 117,
159165 /* 620 */ 116, 442, 561, 417, 306, 555, 1183, 1307, 1307, 1183,
159166 /* 630 */ 1184, 1185, 1204, 1149, 330, 458, 318, 407, 363, 470,
159167 /* 640 */ 431, 1167, 32, 541, 527, 350, 1149, 1629, 393, 1149,
159168 /* 650 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
159169 /* 660 */ 442, 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034,
159170 /* 670 */ 120, 120, 121, 121, 121, 121, 407, 199, 472, 1183,
159171 /* 680 */ 1022, 472, 1183, 1184, 1185, 386, 151, 539, 1548, 277,
159172 /* 690 */ 400, 137, 6, 317, 5, 564, 562, 3, 920, 920,
159173 /* 700 */ 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120,
159174 /* 710 */ 120, 121, 121, 121, 121, 411, 505, 83, 71, 71,
159175 /* 720 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
159176 /* 730 */ 442, 1183, 218, 428, 1183, 1183, 1184, 1185, 363, 261,
159177 /* 740 */ 278, 358, 508, 353, 507, 248, 407, 306, 555, 1539,
159178 /* 750 */ 1006, 349, 363, 291, 489, 302, 293, 1542, 281, 119,
159179 /* 760 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
159180 /* 770 */ 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120,
159181 /* 780 */ 120, 121, 121, 121, 121, 407, 148, 1183, 1184, 1185,
159182 /* 790 */ 1183, 1184, 1185, 275, 275, 1304, 1257, 1283, 483, 1476,
159183 /* 800 */ 150, 489, 480, 564, 1187, 1304, 561, 1587, 1255, 122,
159184 /* 810 */ 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120,
159185 /* 820 */ 121, 121, 121, 121, 564, 886, 13, 13, 520, 119,
159186 /* 830 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
159187 /* 840 */ 1183, 420, 417, 564, 269, 269, 1316, 13, 13, 1539,
159188 /* 850 */ 1546, 16, 16, 322, 6, 407, 506, 561, 1089, 1089,
159189 /* 860 */ 486, 1187, 425, 1539, 887, 292, 71, 71, 119, 119,
159190 /* 870 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 122,
159191 /* 880 */ 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120,
159192 /* 890 */ 121, 121, 121, 121, 564, 12, 1183, 1184, 1185, 407,
159193 /* 900 */ 275, 275, 451, 303, 834, 835, 836, 417, 489, 276,
159194 /* 910 */ 276, 1547, 284, 561, 319, 6, 321, 71, 71, 429,
159195 /* 920 */ 451, 450, 561, 952, 101, 113, 1207, 1207, 1041, 1044,
159196 /* 930 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 119, 119,
159197 /* 940 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 1105,
159198 /* 950 */ 1183, 489, 564, 1312, 437, 455, 478, 564, 246, 245,
159199 /* 960 */ 244, 1409, 1545, 547, 1106, 405, 6, 1544, 196, 1258,
159200 /* 970 */ 413, 6, 105, 462, 103, 71, 71, 286, 564, 1107,
159201 /* 980 */ 13, 13, 119, 119, 119, 119, 118, 118, 117, 117,
159202 /* 990 */ 117, 116, 442, 451, 104, 427, 337, 320, 275, 275,
159203 /* 1000 */ 906, 13, 13, 564, 1482, 1105, 1183, 1184, 1185, 126,
159204 /* 1010 */ 907, 561, 546, 564, 407, 478, 295, 1321, 253, 200,
159205 /* 1020 */ 1106, 548, 1482, 1484, 280, 1409, 55, 55, 1287, 561,
159206 /* 1030 */ 478, 380, 423, 951, 407, 1107, 71, 71, 122, 123,
159207 /* 1040 */ 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120, 121,
159208 /* 1050 */ 121, 121, 121, 1204, 407, 287, 552, 309, 122, 123,
159209 /* 1060 */ 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120, 121,
159210 /* 1070 */ 121, 121, 121, 441, 1128, 1628, 146, 1628, 122, 111,
159211 /* 1080 */ 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120, 121,
159212 /* 1090 */ 121, 121, 121, 404, 403, 1482, 424, 119, 119, 119,
159213 /* 1100 */ 119, 118, 118, 117, 117, 117, 116, 442, 1183, 564,
159214 /* 1110 */ 1204, 544, 1086, 858, 329, 361, 1086, 119, 119, 119,
159215 /* 1120 */ 119, 118, 118, 117, 117, 117, 116, 442, 564, 294,
159216 /* 1130 */ 144, 523, 56, 56, 224, 564, 510, 119, 119, 119,
159217 /* 1140 */ 119, 118, 118, 117, 117, 117, 116, 442, 484, 1409,
159218 /* 1150 */ 537, 15, 15, 1126, 434, 439, 438, 407, 13, 13,
159219 /* 1160 */ 1523, 12, 926, 1211, 1183, 1184, 1185, 925, 1213, 536,
159220 /* 1170 */ 858, 557, 413, 193, 1525, 494, 1212, 448, 1160, 1222,
159221 /* 1180 */ 1183, 564, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034,
159222 /* 1190 */ 120, 120, 121, 121, 121, 121, 1521, 1149, 564, 965,
159223 /* 1200 */ 564, 1214, 247, 1214, 13, 13, 1409, 966, 538, 564,
159224 /* 1210 */ 1149, 108, 556, 1149, 4, 310, 392, 1227, 17, 194,
159225 /* 1220 */ 485, 43, 43, 57, 57, 306, 555, 524, 559, 1160,
159226 /* 1230 */ 464, 564, 44, 44, 392, 1127, 1183, 1184, 1185, 479,
159227 /* 1240 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
159228 /* 1250 */ 442, 443, 564, 327, 13, 13, 564, 418, 1315, 414,
159229 /* 1260 */ 171, 564, 311, 553, 213, 529, 1253, 564, 517, 543,
159230 /* 1270 */ 412, 108, 556, 137, 4, 58, 58, 435, 314, 59,
159231 /* 1280 */ 59, 274, 217, 549, 60, 60, 349, 476, 559, 1353,
159232 /* 1290 */ 61, 61, 1021, 275, 275, 1228, 213, 564, 106, 106,
159233 /* 1300 */ 8, 275, 275, 275, 275, 107, 561, 443, 566, 565,
159234 /* 1310 */ 564, 443, 1011, 1228, 561, 564, 561, 564, 275, 275,
159235 /* 1320 */ 62, 62, 1352, 553, 247, 456, 564, 98, 110, 306,
159236 /* 1330 */ 555, 561, 564, 45, 45, 405, 1203, 533, 46, 46,
159237 /* 1340 */ 47, 47, 532, 465, 1011, 1011, 1013, 1014, 27, 49,
159238 /* 1350 */ 49, 564, 1021, 405, 469, 50, 50, 564, 106, 106,
159239 /* 1360 */ 305, 564, 84, 204, 405, 107, 564, 443, 566, 565,
159240 /* 1370 */ 405, 564, 1011, 564, 63, 63, 564, 1599, 564, 895,
159241 /* 1380 */ 64, 64, 457, 477, 65, 65, 147, 96, 38, 14,
159242 /* 1390 */ 14, 1528, 412, 564, 66, 66, 128, 128, 926, 67,
159243 /* 1400 */ 67, 52, 52, 925, 1011, 1011, 1013, 1014, 27, 1572,
159244 /* 1410 */ 1171, 445, 208, 1123, 279, 394, 68, 68, 228, 390,
159245 /* 1420 */ 390, 389, 264, 387, 1171, 445, 843, 877, 279, 108,
159246 /* 1430 */ 556, 453, 4, 390, 390, 389, 264, 387, 564, 225,
159247 /* 1440 */ 843, 313, 328, 1003, 98, 252, 559, 544, 471, 312,
159248 /* 1450 */ 252, 564, 208, 225, 564, 313, 473, 30, 252, 279,
159249 /* 1460 */ 466, 69, 69, 312, 390, 390, 389, 264, 387, 443,
159250 /* 1470 */ 333, 843, 98, 564, 53, 53, 323, 157, 157, 227,
159251 /* 1480 */ 495, 553, 249, 289, 225, 564, 313, 162, 31, 1501,
159252 /* 1490 */ 135, 564, 1500, 227, 312, 533, 158, 158, 885, 884,
159253 /* 1500 */ 534, 162, 873, 301, 135, 564, 481, 226, 76, 76,
159254 /* 1510 */ 1021, 347, 1071, 98, 54, 54, 106, 106, 1067, 564,
159255 /* 1520 */ 249, 226, 519, 107, 227, 443, 566, 565, 72, 72,
159256 /* 1530 */ 1011, 334, 162, 564, 230, 135, 108, 556, 959, 4,
159257 /* 1540 */ 252, 408, 129, 129, 564, 1349, 306, 555, 564, 923,
159258 /* 1550 */ 564, 110, 226, 559, 564, 408, 73, 73, 564, 873,
159259 /* 1560 */ 306, 555, 1011, 1011, 1013, 1014, 27, 130, 130, 1071,
159260 /* 1570 */ 449, 131, 131, 127, 127, 357, 443, 156, 156, 892,
159261 /* 1580 */ 893, 155, 155, 338, 449, 356, 408, 564, 553, 968,
159262 /* 1590 */ 969, 306, 555, 1015, 341, 564, 108, 556, 564, 4,
159263 /* 1600 */ 1132, 1286, 533, 564, 856, 343, 145, 532, 345, 1300,
159264 /* 1610 */ 136, 136, 1083, 559, 1083, 449, 564, 1021, 134, 134,
159265 /* 1620 */ 1284, 132, 132, 106, 106, 1285, 133, 133, 564, 352,
159266 /* 1630 */ 107, 564, 443, 566, 565, 1340, 443, 1011, 362, 75,
159267 /* 1640 */ 75, 1082, 564, 1082, 564, 924, 1561, 110, 553, 551,
159268 /* 1650 */ 1015, 77, 77, 1361, 74, 74, 1408, 1336, 1347, 550,
159269 /* 1660 */ 1414, 1265, 1256, 1244, 1243, 42, 42, 48, 48, 1011,
159270 /* 1670 */ 1011, 1013, 1014, 27, 1245, 1580, 490, 1021, 267, 202,
159271 /* 1680 */ 1333, 365, 11, 106, 106, 930, 367, 210, 369, 391,
159272 /* 1690 */ 107, 1395, 443, 566, 565, 223, 1390, 1011, 500, 454,
159273 /* 1700 */ 282, 1400, 285, 108, 556, 214, 4, 325, 1383, 1283,
159274 /* 1710 */ 475, 355, 1473, 1583, 1472, 1399, 371, 1222, 326, 398,
159275 /* 1720 */ 559, 290, 331, 197, 100, 556, 209, 4, 198, 1011,
159276 /* 1730 */ 1011, 1013, 1014, 27, 385, 256, 1520, 1518, 554, 1219,
159277 /* 1740 */ 416, 559, 83, 443, 173, 206, 182, 221, 459, 167,
159278 /* 1750 */ 177, 460, 175, 493, 233, 553, 79, 178, 1396, 179,
159279 /* 1760 */ 35, 180, 96, 1402, 443, 396, 36, 467, 1478, 1401,
159280 /* 1770 */ 482, 237, 1404, 399, 82, 186, 553, 1467, 89, 488,
159281 /* 1780 */ 190, 268, 239, 491, 1021, 340, 240, 401, 1246, 1489,
159282 /* 1790 */ 106, 106, 336, 509, 1294, 241, 1303, 107, 430, 443,
159283 /* 1800 */ 566, 565, 1302, 91, 1011, 1021, 1598, 1301, 1273, 215,
159284 /* 1810 */ 1597, 106, 106, 402, 877, 432, 354, 1272, 107, 1271,
159285 /* 1820 */ 443, 566, 565, 1596, 1566, 1011, 1293, 433, 518, 299,
159286 /* 1830 */ 300, 360, 95, 525, 1344, 364, 1011, 1011, 1013, 1014,
159287 /* 1840 */ 27, 254, 255, 1552, 436, 1551, 125, 544, 10, 379,
159288 /* 1850 */ 1326, 1453, 102, 97, 1345, 528, 304, 1011, 1011, 1013,
159289 /* 1860 */ 1014, 27, 366, 377, 1343, 1342, 368, 370, 1325, 384,
159290 /* 1870 */ 201, 383, 34, 1368, 1367, 568, 1177, 266, 263, 265,
159291 /* 1880 */ 1505, 159, 569, 1241, 1236, 1506, 160, 142, 1504, 1503,
159292 /* 1890 */ 297, 211, 830, 161, 212, 78, 444, 203, 308, 222,
159293 /* 1900 */ 1081, 139, 1079, 316, 174, 163, 1203, 229, 176, 909,
159294 /* 1910 */ 324, 232, 1095, 181, 409, 410, 172, 164, 165, 419,
159295 /* 1920 */ 183, 85, 86, 421, 166, 87, 88, 1098, 1094, 234,
159296 /* 1930 */ 235, 152, 18, 236, 335, 1087, 1216, 252, 187, 487,
159297 /* 1940 */ 238, 188, 37, 845, 492, 356, 242, 496, 351, 501,
159298 /* 1950 */ 189, 90, 19, 504, 348, 20, 875, 92, 298, 168,
159299 /* 1960 */ 888, 153, 93, 511, 94, 1165, 154, 1047, 1134, 39,
159300 /* 1970 */ 216, 1133, 271, 273, 958, 192, 953, 110, 1151, 1155,
159301 /* 1980 */ 251, 7, 21, 1159, 1139, 22, 1153, 33, 23, 24,
159302 /* 1990 */ 25, 540, 1158, 195, 98, 1062, 26, 1048, 1046, 1050,
159303 /* 2000 */ 1104, 1051, 1103, 257, 258, 28, 40, 1173, 1016, 857,
159304 /* 2010 */ 109, 29, 560, 388, 138, 1172, 259, 170, 260, 1232,
159305 /* 2020 */ 1232, 919, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
159306 /* 2030 */ 1232, 1232, 1589, 1232, 1232, 1232, 1588,
159307 };
159308 static const YYCODETYPE yy_lookahead[] = {
159309 /* 0 */ 192, 273, 274, 275, 192, 192, 273, 274, 275, 192,
159310 /* 10 */ 218, 215, 192, 218, 192, 212, 234, 235, 205, 19,
159311 /* 20 */ 11, 192, 294, 215, 216, 203, 192, 203, 209, 210,
159312 /* 30 */ 211, 31, 215, 216, 205, 215, 216, 215, 216, 39,
159313 /* 40 */ 227, 215, 229, 43, 44, 45, 46, 47, 48, 49,
159314 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 19,
159315 /* 60 */ 238, 239, 238, 239, 215, 273, 274, 275, 273, 274,
159316 /* 70 */ 275, 237, 21, 251, 252, 251, 273, 274, 275, 255,
159317 /* 80 */ 256, 215, 216, 43, 44, 45, 46, 47, 48, 49,
159318 /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 209, 210,
159319 /* 100 */ 211, 76, 102, 103, 104, 105, 106, 107, 108, 109,
159320 /* 110 */ 110, 111, 112, 59, 89, 111, 112, 92, 252, 307,
159321 /* 120 */ 308, 313, 314, 112, 312, 59, 86, 261, 88, 19,
159322 /* 130 */ 313, 80, 315, 313, 314, 25, 127, 128, 54, 55,
159323 /* 140 */ 56, 57, 102, 103, 104, 105, 106, 107, 108, 109,
159324 /* 150 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
159325 /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 115,
159326 /* 170 */ 116, 117, 118, 122, 192, 121, 122, 123, 202, 69,
159327 /* 180 */ 204, 115, 116, 117, 192, 131, 102, 103, 104, 105,
159328 /* 190 */ 106, 107, 108, 109, 110, 111, 112, 215, 216, 19,
159329 /* 200 */ 54, 55, 56, 57, 58, 108, 109, 110, 111, 112,
159330 /* 210 */ 192, 160, 102, 103, 104, 105, 106, 107, 108, 109,
159331 /* 220 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
159332 /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 46,
159333 /* 240 */ 47, 48, 49, 24, 248, 192, 250, 67, 102, 103,
159334 /* 250 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 277,
159335 /* 260 */ 127, 128, 43, 44, 45, 46, 47, 48, 49, 50,
159336 /* 270 */ 51, 52, 53, 54, 55, 56, 57, 26, 164, 165,
159337 /* 280 */ 272, 263, 102, 103, 104, 105, 106, 107, 108, 109,
159338 /* 290 */ 110, 111, 112, 184, 185, 186, 187, 188, 189, 186,
159339 /* 300 */ 187, 188, 189, 194, 76, 196, 229, 194, 19, 196,
159340 /* 310 */ 59, 192, 203, 120, 59, 87, 203, 89, 310, 311,
159341 /* 320 */ 92, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159342 /* 330 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
159343 /* 340 */ 51, 52, 53, 54, 55, 56, 57, 238, 239, 73,
159344 /* 350 */ 231, 238, 239, 22, 23, 100, 25, 81, 305, 306,
159345 /* 360 */ 251, 23, 25, 25, 251, 272, 115, 116, 117, 214,
159346 /* 370 */ 115, 116, 144, 192, 265, 120, 114, 222, 265, 102,
159347 /* 380 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
159348 /* 390 */ 192, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159349 /* 400 */ 111, 112, 126, 310, 311, 192, 297, 152, 153, 154,
159350 /* 410 */ 297, 149, 192, 137, 138, 19, 192, 100, 192, 23,
159351 /* 420 */ 22, 106, 107, 108, 109, 110, 111, 112, 215, 216,
159352 /* 430 */ 106, 107, 101, 116, 192, 215, 216, 120, 149, 43,
159353 /* 440 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
159354 /* 450 */ 54, 55, 56, 57, 117, 117, 192, 59, 19, 187,
159355 /* 460 */ 59, 189, 23, 282, 240, 252, 194, 192, 196, 152,
159356 /* 470 */ 153, 154, 252, 72, 261, 203, 152, 25, 154, 142,
159357 /* 480 */ 142, 261, 43, 44, 45, 46, 47, 48, 49, 50,
159358 /* 490 */ 51, 52, 53, 54, 55, 56, 57, 192, 102, 103,
159359 /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 267,
159360 /* 510 */ 238, 239, 237, 115, 116, 117, 115, 116, 117, 192,
159361 /* 520 */ 59, 118, 16, 251, 121, 122, 123, 303, 19, 303,
159362 /* 530 */ 59, 267, 23, 72, 131, 308, 22, 265, 22, 312,
159363 /* 540 */ 24, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159364 /* 550 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
159365 /* 560 */ 51, 52, 53, 54, 55, 56, 57, 19, 81, 297,
159366 /* 570 */ 295, 23, 192, 59, 203, 59, 115, 116, 117, 108,
159367 /* 580 */ 192, 73, 25, 77, 192, 79, 115, 116, 117, 137,
159368 /* 590 */ 138, 43, 44, 45, 46, 47, 48, 49, 50, 51,
159369 /* 600 */ 52, 53, 54, 55, 56, 57, 119, 215, 216, 238,
159370 /* 610 */ 239, 102, 103, 104, 105, 106, 107, 108, 109, 110,
159371 /* 620 */ 111, 112, 251, 192, 137, 138, 59, 234, 235, 115,
159372 /* 630 */ 116, 117, 116, 76, 126, 127, 128, 19, 192, 268,
159373 /* 640 */ 19, 23, 22, 192, 252, 24, 89, 300, 301, 92,
159374 /* 650 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
159375 /* 660 */ 112, 43, 44, 45, 46, 47, 48, 49, 50, 51,
159376 /* 670 */ 52, 53, 54, 55, 56, 57, 19, 192, 192, 59,
159377 /* 680 */ 23, 192, 115, 116, 117, 200, 240, 307, 308, 22,
159378 /* 690 */ 205, 81, 312, 262, 22, 192, 133, 22, 135, 136,
159379 /* 700 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
159380 /* 710 */ 53, 54, 55, 56, 57, 197, 95, 150, 215, 216,
159381 /* 720 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
159382 /* 730 */ 112, 59, 192, 112, 59, 115, 116, 117, 192, 118,
159383 /* 740 */ 119, 120, 121, 122, 123, 124, 19, 137, 138, 303,
159384 /* 750 */ 23, 130, 192, 267, 192, 252, 267, 306, 203, 102,
159385 /* 760 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
159386 /* 770 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
159387 /* 780 */ 53, 54, 55, 56, 57, 19, 240, 115, 116, 117,
159388 /* 790 */ 115, 116, 117, 238, 239, 222, 192, 224, 280, 237,
159389 /* 800 */ 240, 192, 284, 192, 59, 232, 251, 140, 204, 43,
159390 /* 810 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
159391 /* 820 */ 54, 55, 56, 57, 192, 35, 215, 216, 192, 102,
159392 /* 830 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
159393 /* 840 */ 59, 230, 192, 192, 238, 239, 237, 215, 216, 303,
159394 /* 850 */ 308, 215, 216, 16, 312, 19, 66, 251, 126, 127,
159395 /* 860 */ 128, 116, 230, 303, 74, 203, 215, 216, 102, 103,
159396 /* 870 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 43,
159397 /* 880 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
159398 /* 890 */ 54, 55, 56, 57, 192, 212, 115, 116, 117, 19,
159399 /* 900 */ 238, 239, 192, 252, 7, 8, 9, 192, 192, 238,
159400 /* 910 */ 239, 308, 262, 251, 77, 312, 79, 215, 216, 129,
159401 /* 920 */ 210, 211, 251, 142, 158, 45, 46, 47, 48, 49,
159402 /* 930 */ 50, 51, 52, 53, 54, 55, 56, 57, 102, 103,
159403 /* 940 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 12,
159404 /* 950 */ 59, 192, 192, 237, 252, 243, 192, 192, 126, 127,
159405 /* 960 */ 128, 192, 308, 203, 27, 253, 312, 308, 285, 207,
159406 /* 970 */ 208, 312, 157, 290, 159, 215, 216, 262, 192, 42,
159407 /* 980 */ 215, 216, 102, 103, 104, 105, 106, 107, 108, 109,
159408 /* 990 */ 110, 111, 112, 283, 158, 230, 237, 160, 238, 239,
159409 /* 1000 */ 63, 215, 216, 192, 192, 12, 115, 116, 117, 22,
159410 /* 1010 */ 73, 251, 252, 192, 19, 192, 230, 239, 24, 24,
159411 /* 1020 */ 27, 261, 210, 211, 99, 192, 215, 216, 225, 251,
159412 /* 1030 */ 192, 192, 263, 142, 19, 42, 215, 216, 43, 44,
159413 /* 1040 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
159414 /* 1050 */ 55, 56, 57, 59, 19, 291, 63, 132, 43, 44,
159415 /* 1060 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
159416 /* 1070 */ 55, 56, 57, 252, 22, 23, 22, 25, 43, 44,
159417 /* 1080 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
159418 /* 1090 */ 55, 56, 57, 106, 107, 283, 263, 102, 103, 104,
159419 /* 1100 */ 105, 106, 107, 108, 109, 110, 111, 112, 59, 192,
159420 /* 1110 */ 116, 144, 29, 59, 291, 192, 33, 102, 103, 104,
159421 /* 1120 */ 105, 106, 107, 108, 109, 110, 111, 112, 192, 291,
159422 /* 1130 */ 163, 19, 215, 216, 15, 192, 108, 102, 103, 104,
159423 /* 1140 */ 105, 106, 107, 108, 109, 110, 111, 112, 65, 192,
159424 /* 1150 */ 66, 215, 216, 101, 231, 106, 107, 19, 215, 216,
159425 /* 1160 */ 192, 212, 134, 114, 115, 116, 117, 139, 119, 85,
159426 /* 1170 */ 116, 207, 208, 230, 192, 19, 127, 192, 94, 60,
159427 /* 1180 */ 59, 192, 44, 45, 46, 47, 48, 49, 50, 51,
159428 /* 1190 */ 52, 53, 54, 55, 56, 57, 192, 76, 192, 31,
159429 /* 1200 */ 192, 152, 46, 154, 215, 216, 192, 39, 87, 192,
159430 /* 1210 */ 89, 19, 20, 92, 22, 192, 22, 23, 22, 230,
159431 /* 1220 */ 263, 215, 216, 215, 216, 137, 138, 115, 36, 145,
159432 /* 1230 */ 128, 192, 215, 216, 22, 23, 115, 116, 117, 290,
159433 /* 1240 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
159434 /* 1250 */ 112, 59, 192, 151, 215, 216, 192, 61, 203, 298,
159435 /* 1260 */ 299, 192, 192, 71, 25, 144, 203, 192, 203, 230,
159436 /* 1270 */ 114, 19, 20, 81, 22, 215, 216, 263, 192, 215,
159437 /* 1280 */ 216, 255, 256, 203, 215, 216, 130, 19, 36, 192,
159438 /* 1290 */ 215, 216, 100, 238, 239, 101, 25, 192, 106, 107,
159439 /* 1300 */ 48, 238, 239, 238, 239, 113, 251, 115, 116, 117,
159440 /* 1310 */ 192, 59, 120, 101, 251, 192, 251, 192, 238, 239,
159441 /* 1320 */ 215, 216, 192, 71, 46, 243, 192, 25, 25, 137,
159442 /* 1330 */ 138, 251, 192, 215, 216, 253, 25, 85, 215, 216,
159443 /* 1340 */ 215, 216, 90, 243, 152, 153, 154, 155, 156, 215,
159444 /* 1350 */ 216, 192, 100, 253, 243, 215, 216, 192, 106, 107,
159445 /* 1360 */ 243, 192, 148, 149, 253, 113, 192, 115, 116, 117,
159446 /* 1370 */ 253, 192, 120, 192, 215, 216, 192, 23, 192, 25,
159447 /* 1380 */ 215, 216, 192, 115, 215, 216, 22, 148, 24, 215,
159448 /* 1390 */ 216, 192, 114, 192, 215, 216, 215, 216, 134, 215,
159449 /* 1400 */ 216, 215, 216, 139, 152, 153, 154, 155, 156, 0,
159450 /* 1410 */ 1, 2, 141, 23, 5, 25, 215, 216, 24, 10,
159451 /* 1420 */ 11, 12, 13, 14, 1, 2, 17, 125, 5, 19,
159452 /* 1430 */ 20, 268, 22, 10, 11, 12, 13, 14, 192, 30,
159453 /* 1440 */ 17, 32, 23, 23, 25, 25, 36, 144, 23, 40,
159454 /* 1450 */ 25, 192, 141, 30, 192, 32, 23, 22, 25, 5,
159455 /* 1460 */ 128, 215, 216, 40, 10, 11, 12, 13, 14, 59,
159456 /* 1470 */ 23, 17, 25, 192, 215, 216, 192, 215, 216, 70,
159457 /* 1480 */ 23, 71, 25, 151, 30, 192, 32, 78, 53, 192,
159458 /* 1490 */ 81, 192, 192, 70, 40, 85, 215, 216, 119, 120,
159459 /* 1500 */ 90, 78, 59, 254, 81, 192, 192, 98, 215, 216,
159460 /* 1510 */ 100, 23, 59, 25, 215, 216, 106, 107, 23, 192,
159461 /* 1520 */ 25, 98, 19, 113, 70, 115, 116, 117, 215, 216,
159462 /* 1530 */ 120, 192, 78, 192, 140, 81, 19, 20, 23, 22,
159463 /* 1540 */ 25, 132, 215, 216, 192, 192, 137, 138, 192, 23,
159464 /* 1550 */ 192, 25, 98, 36, 192, 132, 215, 216, 192, 116,
159465 /* 1560 */ 137, 138, 152, 153, 154, 155, 156, 215, 216, 116,
159466 /* 1570 */ 161, 215, 216, 215, 216, 120, 59, 215, 216, 7,
159467 /* 1580 */ 8, 215, 216, 192, 161, 130, 132, 192, 71, 83,
159468 /* 1590 */ 84, 137, 138, 59, 192, 192, 19, 20, 192, 22,
159469 /* 1600 */ 97, 225, 85, 192, 23, 192, 25, 90, 192, 192,
159470 /* 1610 */ 215, 216, 152, 36, 154, 161, 192, 100, 215, 216,
159471 /* 1620 */ 192, 215, 216, 106, 107, 225, 215, 216, 192, 192,
159472 /* 1630 */ 113, 192, 115, 116, 117, 257, 59, 120, 192, 215,
159473 /* 1640 */ 216, 152, 192, 154, 192, 23, 317, 25, 71, 235,
159474 /* 1650 */ 116, 215, 216, 192, 215, 216, 192, 192, 192, 192,
159475 /* 1660 */ 192, 192, 192, 192, 192, 215, 216, 215, 216, 152,
159476 /* 1670 */ 153, 154, 155, 156, 192, 192, 287, 100, 286, 241,
159477 /* 1680 */ 254, 254, 242, 106, 107, 108, 254, 213, 254, 190,
159478 /* 1690 */ 113, 270, 115, 116, 117, 296, 266, 120, 219, 258,
159479 /* 1700 */ 244, 270, 258, 19, 20, 228, 22, 292, 266, 224,
159480 /* 1710 */ 292, 218, 218, 195, 218, 270, 258, 60, 245, 270,
159481 /* 1720 */ 36, 245, 244, 248, 19, 20, 242, 22, 248, 152,
159482 /* 1730 */ 153, 154, 155, 156, 244, 140, 199, 199, 279, 38,
159483 /* 1740 */ 199, 36, 150, 59, 296, 149, 22, 296, 18, 43,
159484 /* 1750 */ 236, 199, 233, 18, 198, 71, 293, 236, 271, 236,
159485 /* 1760 */ 269, 236, 148, 271, 59, 245, 269, 245, 282, 271,
159486 /* 1770 */ 199, 198, 233, 245, 293, 233, 71, 245, 157, 62,
159487 /* 1780 */ 22, 199, 198, 220, 100, 199, 198, 220, 199, 289,
159488 /* 1790 */ 106, 107, 288, 114, 226, 198, 217, 113, 64, 115,
159489 /* 1800 */ 116, 117, 217, 22, 120, 100, 223, 217, 217, 164,
159490 /* 1810 */ 223, 106, 107, 220, 125, 24, 217, 219, 113, 217,
159491 /* 1820 */ 115, 116, 117, 217, 311, 120, 226, 112, 304, 281,
159492 /* 1830 */ 281, 220, 114, 143, 260, 259, 152, 153, 154, 155,
159493 /* 1840 */ 156, 199, 91, 316, 82, 316, 147, 144, 22, 199,
159494 /* 1850 */ 249, 276, 157, 146, 260, 145, 278, 152, 153, 154,
159495 /* 1860 */ 155, 156, 259, 248, 260, 260, 259, 259, 249, 245,
159496 /* 1870 */ 247, 246, 25, 264, 264, 201, 13, 6, 193, 193,
159497 /* 1880 */ 212, 206, 191, 191, 191, 212, 206, 221, 212, 212,
159498 /* 1890 */ 221, 213, 4, 206, 213, 212, 3, 22, 162, 15,
159499 /* 1900 */ 23, 16, 23, 138, 150, 129, 25, 24, 141, 20,
159500 /* 1910 */ 16, 143, 1, 141, 302, 302, 299, 129, 129, 61,
159501 /* 1920 */ 150, 53, 53, 37, 129, 53, 53, 115, 1, 34,
159502 /* 1930 */ 140, 5, 22, 114, 160, 68, 75, 25, 68, 41,
159503 /* 1940 */ 140, 114, 24, 20, 19, 130, 124, 67, 24, 67,
159504 /* 1950 */ 22, 22, 22, 96, 23, 22, 59, 22, 67, 37,
159505 /* 1960 */ 28, 23, 148, 22, 25, 23, 23, 23, 23, 22,
159506 /* 1970 */ 140, 97, 23, 23, 115, 22, 142, 25, 88, 75,
159507 /* 1980 */ 34, 44, 34, 75, 23, 34, 86, 22, 34, 34,
159508 /* 1990 */ 34, 24, 93, 25, 25, 23, 34, 23, 23, 23,
159509 /* 2000 */ 23, 11, 23, 25, 22, 22, 22, 1, 23, 23,
159510 /* 2010 */ 22, 22, 25, 15, 23, 1, 140, 25, 140, 318,
159511 /* 2020 */ 318, 134, 318, 318, 318, 318, 318, 318, 318, 318,
159512 /* 2030 */ 318, 318, 140, 318, 318, 318, 140, 318, 318, 318,
159513 /* 2040 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159514 /* 2050 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159515 /* 2060 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159516 /* 2070 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159517 /* 2080 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159518 /* 2090 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159519 /* 2100 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159520 /* 2110 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159521 /* 2120 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159522 /* 2130 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159523 /* 2140 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159524 /* 2150 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159525 /* 2160 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159526 /* 2170 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159527 /* 2180 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159528 /* 2190 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159529 /* 2200 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159530 /* 2210 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
159531 /* 2220 */ 318,
159532 };
159533 #define YY_SHIFT_COUNT (571)
159534 #define YY_SHIFT_MIN (0)
159535 #define YY_SHIFT_MAX (2014)
159536 static const unsigned short int yy_shift_ofst[] = {
159537 /* 0 */ 1423, 1409, 1454, 1192, 1192, 610, 1252, 1410, 1517, 1684,
159538 /* 10 */ 1684, 1684, 276, 0, 0, 180, 1015, 1684, 1684, 1684,
159539 /* 20 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159540 /* 30 */ 1049, 1049, 1121, 1121, 54, 487, 610, 610, 610, 610,
159541 /* 40 */ 610, 40, 110, 219, 289, 396, 439, 509, 548, 618,
159542 /* 50 */ 657, 727, 766, 836, 995, 1015, 1015, 1015, 1015, 1015,
159543 /* 60 */ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
159544 /* 70 */ 1015, 1015, 1015, 1035, 1015, 1138, 880, 880, 1577, 1684,
159545 /* 80 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159546 /* 90 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159547 /* 100 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
159548 /* 110 */ 1684, 1684, 1684, 1705, 1684, 1684, 1684, 1684, 1684, 1684,
159549 /* 120 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 146, 84, 84,
159550 /* 130 */ 84, 84, 84, 277, 315, 401, 97, 461, 251, 66,
159551 /* 140 */ 66, 51, 1156, 66, 66, 324, 324, 66, 452, 452,
159552 /* 150 */ 452, 452, 133, 114, 114, 4, 11, 2037, 2037, 621,
159553 /* 160 */ 621, 621, 567, 398, 398, 398, 398, 937, 937, 228,
159554 /* 170 */ 251, 331, 1052, 66, 66, 66, 66, 66, 66, 66,
159555 /* 180 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
159556 /* 190 */ 66, 66, 66, 557, 557, 66, 9, 25, 25, 745,
159557 /* 200 */ 745, 967, 1088, 2037, 2037, 2037, 2037, 2037, 2037, 2037,
159558 /* 210 */ 255, 317, 317, 514, 403, 620, 471, 672, 781, 891,
159559 /* 220 */ 675, 66, 66, 66, 66, 66, 66, 66, 66, 66,
159560 /* 230 */ 66, 508, 66, 66, 66, 66, 66, 66, 66, 66,
159561 /* 240 */ 66, 66, 66, 66, 790, 790, 790, 66, 66, 66,
159562 /* 250 */ 338, 66, 66, 66, 516, 1084, 66, 66, 993, 66,
159563 /* 260 */ 66, 66, 66, 66, 66, 66, 66, 732, 1083, 563,
159564 /* 270 */ 994, 994, 994, 994, 337, 563, 563, 1028, 987, 897,
159565 /* 280 */ 1119, 262, 1214, 1271, 1112, 1214, 1112, 1268, 1239, 262,
159566 /* 290 */ 262, 1239, 262, 1271, 1268, 1302, 1354, 1278, 1168, 1168,
159567 /* 300 */ 1168, 1112, 1303, 1303, 815, 1311, 1264, 1364, 1657, 1657,
159568 /* 310 */ 1595, 1595, 1701, 1701, 1595, 1592, 1596, 1724, 1706, 1730,
159569 /* 320 */ 1730, 1730, 1730, 1595, 1735, 1614, 1596, 1596, 1614, 1724,
159570 /* 330 */ 1706, 1614, 1706, 1614, 1595, 1735, 1621, 1717, 1595, 1735,
159571 /* 340 */ 1758, 1595, 1735, 1595, 1735, 1758, 1679, 1679, 1679, 1734,
159572 /* 350 */ 1781, 1781, 1758, 1679, 1689, 1679, 1734, 1679, 1679, 1645,
159573 /* 360 */ 1791, 1715, 1715, 1758, 1690, 1718, 1690, 1718, 1690, 1718,
159574 /* 370 */ 1690, 1718, 1595, 1751, 1751, 1762, 1762, 1699, 1703, 1826,
159575 /* 380 */ 1595, 1695, 1699, 1707, 1710, 1614, 1847, 1863, 1863, 1871,
159576 /* 390 */ 1871, 1871, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037,
159577 /* 400 */ 2037, 2037, 2037, 2037, 2037, 2037, 2037, 193, 837, 1194,
159578 /* 410 */ 1212, 506, 832, 1054, 1390, 925, 1435, 1394, 1102, 1332,
159579 /* 420 */ 1419, 1196, 1420, 1425, 1433, 1447, 1457, 1488, 1443, 1379,
159580 /* 430 */ 1572, 1455, 1503, 1453, 1495, 1515, 1506, 1526, 1460, 1489,
159581 /* 440 */ 1581, 1622, 1534, 667, 1888, 1893, 1875, 1736, 1884, 1885,
159582 /* 450 */ 1877, 1879, 1765, 1754, 1776, 1881, 1881, 1883, 1767, 1889,
159583 /* 460 */ 1768, 1894, 1911, 1772, 1788, 1881, 1789, 1858, 1886, 1881,
159584 /* 470 */ 1770, 1868, 1869, 1872, 1873, 1795, 1812, 1895, 1790, 1927,
159585 /* 480 */ 1926, 1910, 1819, 1774, 1867, 1912, 1870, 1861, 1898, 1800,
159586 /* 490 */ 1827, 1918, 1923, 1925, 1815, 1822, 1928, 1880, 1929, 1930,
159587 /* 500 */ 1931, 1933, 1882, 1897, 1924, 1857, 1932, 1935, 1891, 1922,
159588 /* 510 */ 1938, 1814, 1941, 1942, 1943, 1944, 1939, 1945, 1947, 1874,
159589 /* 520 */ 1830, 1949, 1950, 1859, 1946, 1953, 1834, 1952, 1948, 1951,
159590 /* 530 */ 1954, 1955, 1890, 1904, 1900, 1937, 1908, 1899, 1956, 1961,
159591 /* 540 */ 1965, 1967, 1968, 1969, 1962, 1972, 1952, 1974, 1975, 1976,
159592 /* 550 */ 1977, 1978, 1979, 1982, 1990, 1983, 1984, 1985, 1986, 1988,
159593 /* 560 */ 1989, 1987, 1887, 1876, 1878, 1892, 1896, 1992, 1991, 1998,
159594 /* 570 */ 2006, 2014,
159595 };
159596 #define YY_REDUCE_COUNT (406)
159597 #define YY_REDUCE_MIN (-272)
159598 #define YY_REDUCE_MAX (1693)
159599 static const short yy_reduce_ofst[] = {
159600 /* 0 */ 109, 113, 272, 760, -178, -176, -192, -183, -180, -134,
159601 /* 10 */ 213, 220, 371, -208, -205, -272, -197, 611, 632, 765,
159602 /* 20 */ 786, 392, 943, 989, 503, 651, 1039, -18, 702, 821,
159603 /* 30 */ 710, 812, -188, 380, -187, 555, 662, 1055, 1063, 1065,
159604 /* 40 */ 1080, -267, -267, -267, -267, -267, -267, -267, -267, -267,
159605 /* 50 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
159606 /* 60 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
159607 /* 70 */ -267, -267, -267, -267, -267, -267, -267, -267, 636, 811,
159608 /* 80 */ 917, 936, 1006, 1008, 1017, 1060, 1064, 1069, 1075, 1105,
159609 /* 90 */ 1118, 1123, 1125, 1134, 1140, 1159, 1165, 1169, 1174, 1179,
159610 /* 100 */ 1181, 1184, 1186, 1201, 1246, 1259, 1262, 1281, 1293, 1299,
159611 /* 110 */ 1313, 1327, 1341, 1352, 1356, 1358, 1362, 1366, 1395, 1403,
159612 /* 120 */ 1406, 1411, 1424, 1436, 1439, 1450, 1452, -267, -267, -267,
159613 /* 130 */ -267, -267, -267, -267, -267, 224, -267, 446, -24, 275,
159614 /* 140 */ 546, 518, 573, 560, 53, -181, -111, 485, 606, 671,
159615 /* 150 */ 606, 671, 683, 8, 93, -267, -267, -267, -267, 155,
159616 /* 160 */ 155, 155, 181, 242, 264, 486, 489, -218, 393, 227,
159617 /* 170 */ 604, 347, 347, -171, 431, 650, 715, -166, 562, 609,
159618 /* 180 */ 716, 764, 18, 823, 769, 833, 838, 957, 759, 119,
159619 /* 190 */ 923, 226, 1014, 542, 603, 451, 949, 654, 659, 762,
159620 /* 200 */ 964, -4, 778, 961, 712, 1082, 1100, 1111, 1026, 1117,
159621 /* 210 */ -204, -174, -151, -8, 77, 198, 305, 327, 388, 540,
159622 /* 220 */ 839, 968, 982, 985, 1004, 1023, 1070, 1086, 1097, 1130,
159623 /* 230 */ 1190, 1163, 1199, 1284, 1297, 1300, 1314, 1339, 1353, 1391,
159624 /* 240 */ 1402, 1413, 1416, 1417, 803, 1376, 1400, 1428, 1437, 1446,
159625 /* 250 */ 1378, 1461, 1464, 1465, 1249, 1329, 1466, 1467, 1414, 1468,
159626 /* 260 */ 305, 1469, 1470, 1471, 1472, 1482, 1483, 1389, 1392, 1438,
159627 /* 270 */ 1426, 1427, 1432, 1434, 1378, 1438, 1438, 1440, 1474, 1499,
159628 /* 280 */ 1399, 1421, 1430, 1456, 1441, 1442, 1444, 1415, 1473, 1431,
159629 /* 290 */ 1445, 1476, 1449, 1478, 1418, 1479, 1477, 1485, 1493, 1494,
159630 /* 300 */ 1496, 1458, 1475, 1480, 1459, 1490, 1484, 1518, 1448, 1451,
159631 /* 310 */ 1537, 1538, 1463, 1481, 1541, 1486, 1487, 1491, 1519, 1514,
159632 /* 320 */ 1521, 1523, 1525, 1552, 1556, 1520, 1492, 1498, 1522, 1497,
159633 /* 330 */ 1539, 1528, 1542, 1532, 1571, 1573, 1500, 1504, 1582, 1584,
159634 /* 340 */ 1563, 1586, 1588, 1589, 1597, 1567, 1579, 1585, 1590, 1568,
159635 /* 350 */ 1583, 1587, 1593, 1591, 1598, 1599, 1600, 1602, 1606, 1513,
159636 /* 360 */ 1524, 1548, 1549, 1611, 1574, 1576, 1594, 1603, 1604, 1607,
159637 /* 370 */ 1605, 1608, 1642, 1527, 1529, 1609, 1610, 1601, 1615, 1575,
159638 /* 380 */ 1650, 1578, 1619, 1623, 1625, 1624, 1674, 1685, 1686, 1691,
159639 /* 390 */ 1692, 1693, 1612, 1613, 1617, 1675, 1668, 1673, 1676, 1677,
159640 /* 400 */ 1680, 1666, 1669, 1678, 1681, 1683, 1687,
159641 };
159642 static const YYACTIONTYPE yy_default[] = {
159643 /* 0 */ 1633, 1633, 1633, 1462, 1230, 1341, 1230, 1230, 1230, 1462,
159644 /* 10 */ 1462, 1462, 1230, 1371, 1371, 1515, 1263, 1230, 1230, 1230,
159645 /* 20 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1461, 1230, 1230,
159646 /* 30 */ 1230, 1230, 1550, 1550, 1230, 1230, 1230, 1230, 1230, 1230,
159647 /* 40 */ 1230, 1230, 1380, 1230, 1387, 1230, 1230, 1230, 1230, 1230,
159648 /* 50 */ 1463, 1464, 1230, 1230, 1230, 1514, 1516, 1479, 1394, 1393,
159649 /* 60 */ 1392, 1391, 1497, 1358, 1385, 1378, 1382, 1457, 1458, 1456,
159650 /* 70 */ 1460, 1464, 1463, 1230, 1381, 1428, 1442, 1427, 1230, 1230,
159651 /* 80 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159652 /* 90 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159653 /* 100 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159654 /* 110 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159655 /* 120 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1436, 1441, 1447,
159656 /* 130 */ 1440, 1437, 1430, 1429, 1431, 1230, 1432, 1230, 1254, 1230,
159657 /* 140 */ 1230, 1251, 1305, 1230, 1230, 1230, 1230, 1230, 1534, 1533,
159658 /* 150 */ 1230, 1230, 1263, 1422, 1421, 1433, 1434, 1444, 1443, 1522,
159659 /* 160 */ 1586, 1585, 1480, 1230, 1230, 1230, 1230, 1230, 1230, 1550,
159660 /* 170 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159661 /* 180 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159662 /* 190 */ 1230, 1230, 1230, 1550, 1550, 1230, 1263, 1550, 1550, 1259,
159663 /* 200 */ 1259, 1365, 1230, 1529, 1332, 1332, 1332, 1332, 1341, 1332,
159664 /* 210 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159665 /* 220 */ 1230, 1230, 1230, 1230, 1230, 1519, 1517, 1230, 1230, 1230,
159666 /* 230 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159667 /* 240 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159668 /* 250 */ 1230, 1230, 1230, 1230, 1337, 1230, 1230, 1230, 1230, 1230,
159669 /* 260 */ 1230, 1230, 1230, 1230, 1230, 1230, 1579, 1230, 1492, 1319,
159670 /* 270 */ 1337, 1337, 1337, 1337, 1339, 1320, 1318, 1331, 1264, 1237,
159671 /* 280 */ 1625, 1397, 1386, 1338, 1360, 1386, 1360, 1622, 1384, 1397,
159672 /* 290 */ 1397, 1384, 1397, 1338, 1622, 1280, 1602, 1275, 1371, 1371,
159673 /* 300 */ 1371, 1360, 1365, 1365, 1459, 1338, 1331, 1230, 1625, 1625,
159674 /* 310 */ 1346, 1346, 1624, 1624, 1346, 1480, 1609, 1406, 1308, 1314,
159675 /* 320 */ 1314, 1314, 1314, 1346, 1248, 1384, 1609, 1609, 1384, 1406,
159676 /* 330 */ 1308, 1384, 1308, 1384, 1346, 1248, 1496, 1619, 1346, 1248,
159677 /* 340 */ 1470, 1346, 1248, 1346, 1248, 1470, 1306, 1306, 1306, 1295,
159678 /* 350 */ 1230, 1230, 1470, 1306, 1280, 1306, 1295, 1306, 1306, 1568,
159679 /* 360 */ 1230, 1474, 1474, 1470, 1364, 1359, 1364, 1359, 1364, 1359,
159680 /* 370 */ 1364, 1359, 1346, 1560, 1560, 1374, 1374, 1379, 1365, 1465,
159681 /* 380 */ 1346, 1230, 1379, 1377, 1375, 1384, 1298, 1582, 1582, 1578,
159682 /* 390 */ 1578, 1578, 1630, 1630, 1529, 1595, 1263, 1263, 1263, 1263,
159683 /* 400 */ 1595, 1282, 1282, 1264, 1264, 1263, 1595, 1230, 1230, 1230,
159684 /* 410 */ 1230, 1230, 1230, 1590, 1230, 1524, 1481, 1350, 1230, 1230,
159685 /* 420 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159686 /* 430 */ 1230, 1230, 1535, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159687 /* 440 */ 1230, 1230, 1230, 1411, 1230, 1233, 1526, 1230, 1230, 1230,
159688 /* 450 */ 1230, 1230, 1230, 1230, 1230, 1388, 1389, 1351, 1230, 1230,
159689 /* 460 */ 1230, 1230, 1230, 1230, 1230, 1403, 1230, 1230, 1230, 1398,
159690 /* 470 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1621, 1230,
159691 /* 480 */ 1230, 1230, 1230, 1230, 1230, 1495, 1494, 1230, 1230, 1348,
159692 /* 490 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159693 /* 500 */ 1230, 1230, 1230, 1278, 1230, 1230, 1230, 1230, 1230, 1230,
159694 /* 510 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159695 /* 520 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1376, 1230, 1230,
159696 /* 530 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159697 /* 540 */ 1230, 1230, 1565, 1366, 1230, 1230, 1612, 1230, 1230, 1230,
159698 /* 550 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
159699 /* 560 */ 1230, 1606, 1322, 1413, 1230, 1412, 1416, 1252, 1230, 1242,
159700 /* 570 */ 1230, 1230,
159701 };
159702 /********** End of lemon-generated parsing tables *****************************/
159703
159704 /* The next table maps tokens (terminal symbols) into fallback tokens.
159705 ** If a construct like the following:
@@ -159447,12 +159740,12 @@
159740 0, /* EXISTS => nothing */
159741 59, /* TEMP => ID */
159742 0, /* LP => nothing */
159743 0, /* RP => nothing */
159744 0, /* AS => nothing */
 
159745 0, /* COMMA => nothing */
159746 59, /* WITHOUT => ID */
159747 59, /* ABORT => ID */
159748 59, /* ACTION => ID */
159749 59, /* AFTER => ID */
159750 59, /* ANALYZE => ID */
159751 59, /* ASC => ID */
@@ -159719,12 +160012,12 @@
160012 /* 20 */ "EXISTS",
160013 /* 21 */ "TEMP",
160014 /* 22 */ "LP",
160015 /* 23 */ "RP",
160016 /* 24 */ "AS",
160017 /* 25 */ "COMMA",
160018 /* 26 */ "WITHOUT",
160019 /* 27 */ "ABORT",
160020 /* 28 */ "ACTION",
160021 /* 29 */ "AFTER",
160022 /* 30 */ "ANALYZE",
160023 /* 31 */ "ASC",
@@ -159896,125 +160189,126 @@
160189 /* 197 */ "temp",
160190 /* 198 */ "ifnotexists",
160191 /* 199 */ "dbnm",
160192 /* 200 */ "columnlist",
160193 /* 201 */ "conslist_opt",
160194 /* 202 */ "table_option_set",
160195 /* 203 */ "select",
160196 /* 204 */ "table_option",
160197 /* 205 */ "columnname",
160198 /* 206 */ "carglist",
160199 /* 207 */ "typetoken",
160200 /* 208 */ "typename",
160201 /* 209 */ "signed",
160202 /* 210 */ "plus_num",
160203 /* 211 */ "minus_num",
160204 /* 212 */ "scanpt",
160205 /* 213 */ "scantok",
160206 /* 214 */ "ccons",
160207 /* 215 */ "term",
160208 /* 216 */ "expr",
160209 /* 217 */ "onconf",
160210 /* 218 */ "sortorder",
160211 /* 219 */ "autoinc",
160212 /* 220 */ "eidlist_opt",
160213 /* 221 */ "refargs",
160214 /* 222 */ "defer_subclause",
160215 /* 223 */ "generated",
160216 /* 224 */ "refarg",
160217 /* 225 */ "refact",
160218 /* 226 */ "init_deferred_pred_opt",
160219 /* 227 */ "conslist",
160220 /* 228 */ "tconscomma",
160221 /* 229 */ "tcons",
160222 /* 230 */ "sortlist",
160223 /* 231 */ "eidlist",
160224 /* 232 */ "defer_subclause_opt",
160225 /* 233 */ "orconf",
160226 /* 234 */ "resolvetype",
160227 /* 235 */ "raisetype",
160228 /* 236 */ "ifexists",
160229 /* 237 */ "fullname",
160230 /* 238 */ "selectnowith",
160231 /* 239 */ "oneselect",
160232 /* 240 */ "wqlist",
160233 /* 241 */ "multiselect_op",
160234 /* 242 */ "distinct",
160235 /* 243 */ "selcollist",
160236 /* 244 */ "from",
160237 /* 245 */ "where_opt",
160238 /* 246 */ "groupby_opt",
160239 /* 247 */ "having_opt",
160240 /* 248 */ "orderby_opt",
160241 /* 249 */ "limit_opt",
160242 /* 250 */ "window_clause",
160243 /* 251 */ "values",
160244 /* 252 */ "nexprlist",
160245 /* 253 */ "sclp",
160246 /* 254 */ "as",
160247 /* 255 */ "seltablist",
160248 /* 256 */ "stl_prefix",
160249 /* 257 */ "joinop",
160250 /* 258 */ "indexed_opt",
160251 /* 259 */ "on_opt",
160252 /* 260 */ "using_opt",
160253 /* 261 */ "exprlist",
160254 /* 262 */ "xfullname",
160255 /* 263 */ "idlist",
160256 /* 264 */ "nulls",
160257 /* 265 */ "with",
160258 /* 266 */ "where_opt_ret",
160259 /* 267 */ "setlist",
160260 /* 268 */ "insert_cmd",
160261 /* 269 */ "idlist_opt",
160262 /* 270 */ "upsert",
160263 /* 271 */ "returning",
160264 /* 272 */ "filter_over",
160265 /* 273 */ "likeop",
160266 /* 274 */ "between_op",
160267 /* 275 */ "in_op",
160268 /* 276 */ "paren_exprlist",
160269 /* 277 */ "case_operand",
160270 /* 278 */ "case_exprlist",
160271 /* 279 */ "case_else",
160272 /* 280 */ "uniqueflag",
160273 /* 281 */ "collate",
160274 /* 282 */ "vinto",
160275 /* 283 */ "nmnum",
160276 /* 284 */ "trigger_decl",
160277 /* 285 */ "trigger_cmd_list",
160278 /* 286 */ "trigger_time",
160279 /* 287 */ "trigger_event",
160280 /* 288 */ "foreach_clause",
160281 /* 289 */ "when_clause",
160282 /* 290 */ "trigger_cmd",
160283 /* 291 */ "trnm",
160284 /* 292 */ "tridxby",
160285 /* 293 */ "database_kw_opt",
160286 /* 294 */ "key_opt",
160287 /* 295 */ "add_column_fullname",
160288 /* 296 */ "kwcolumn_opt",
160289 /* 297 */ "create_vtab",
160290 /* 298 */ "vtabarglist",
160291 /* 299 */ "vtabarg",
160292 /* 300 */ "vtabargtoken",
160293 /* 301 */ "lp",
160294 /* 302 */ "anylist",
160295 /* 303 */ "wqitem",
160296 /* 304 */ "wqas",
160297 /* 305 */ "windowdefn_list",
160298 /* 306 */ "windowdefn",
160299 /* 307 */ "window",
160300 /* 308 */ "frame_opt",
160301 /* 309 */ "part_opt",
160302 /* 310 */ "filter_clause",
160303 /* 311 */ "over_clause",
160304 /* 312 */ "range_or_rows",
160305 /* 313 */ "frame_bound",
160306 /* 314 */ "frame_bound_s",
160307 /* 315 */ "frame_bound_e",
160308 /* 316 */ "frame_exclude_opt",
160309 /* 317 */ "frame_exclude",
160310 };
160311 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
160312
160313 #ifndef NDEBUG
160314 /* For tracing reduce actions, the names of all rules are required.
@@ -160037,389 +160331,392 @@
160331 /* 14 */ "createkw ::= CREATE",
160332 /* 15 */ "ifnotexists ::=",
160333 /* 16 */ "ifnotexists ::= IF NOT EXISTS",
160334 /* 17 */ "temp ::= TEMP",
160335 /* 18 */ "temp ::=",
160336 /* 19 */ "create_table_args ::= LP columnlist conslist_opt RP table_option_set",
160337 /* 20 */ "create_table_args ::= AS select",
160338 /* 21 */ "table_option_set ::=",
160339 /* 22 */ "table_option_set ::= table_option_set COMMA table_option",
160340 /* 23 */ "table_option ::= WITHOUT nm",
160341 /* 24 */ "table_option ::= nm",
160342 /* 25 */ "columnname ::= nm typetoken",
160343 /* 26 */ "typetoken ::=",
160344 /* 27 */ "typetoken ::= typename LP signed RP",
160345 /* 28 */ "typetoken ::= typename LP signed COMMA signed RP",
160346 /* 29 */ "typename ::= typename ID|STRING",
160347 /* 30 */ "scanpt ::=",
160348 /* 31 */ "scantok ::=",
160349 /* 32 */ "ccons ::= CONSTRAINT nm",
160350 /* 33 */ "ccons ::= DEFAULT scantok term",
160351 /* 34 */ "ccons ::= DEFAULT LP expr RP",
160352 /* 35 */ "ccons ::= DEFAULT PLUS scantok term",
160353 /* 36 */ "ccons ::= DEFAULT MINUS scantok term",
160354 /* 37 */ "ccons ::= DEFAULT scantok ID|INDEXED",
160355 /* 38 */ "ccons ::= NOT NULL onconf",
160356 /* 39 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
160357 /* 40 */ "ccons ::= UNIQUE onconf",
160358 /* 41 */ "ccons ::= CHECK LP expr RP",
160359 /* 42 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
160360 /* 43 */ "ccons ::= defer_subclause",
160361 /* 44 */ "ccons ::= COLLATE ID|STRING",
160362 /* 45 */ "generated ::= LP expr RP",
160363 /* 46 */ "generated ::= LP expr RP ID",
160364 /* 47 */ "autoinc ::=",
160365 /* 48 */ "autoinc ::= AUTOINCR",
160366 /* 49 */ "refargs ::=",
160367 /* 50 */ "refargs ::= refargs refarg",
160368 /* 51 */ "refarg ::= MATCH nm",
160369 /* 52 */ "refarg ::= ON INSERT refact",
160370 /* 53 */ "refarg ::= ON DELETE refact",
160371 /* 54 */ "refarg ::= ON UPDATE refact",
160372 /* 55 */ "refact ::= SET NULL",
160373 /* 56 */ "refact ::= SET DEFAULT",
160374 /* 57 */ "refact ::= CASCADE",
160375 /* 58 */ "refact ::= RESTRICT",
160376 /* 59 */ "refact ::= NO ACTION",
160377 /* 60 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
160378 /* 61 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
160379 /* 62 */ "init_deferred_pred_opt ::=",
160380 /* 63 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
160381 /* 64 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
160382 /* 65 */ "conslist_opt ::=",
160383 /* 66 */ "tconscomma ::= COMMA",
160384 /* 67 */ "tcons ::= CONSTRAINT nm",
160385 /* 68 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
160386 /* 69 */ "tcons ::= UNIQUE LP sortlist RP onconf",
160387 /* 70 */ "tcons ::= CHECK LP expr RP onconf",
160388 /* 71 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
160389 /* 72 */ "defer_subclause_opt ::=",
160390 /* 73 */ "onconf ::=",
160391 /* 74 */ "onconf ::= ON CONFLICT resolvetype",
160392 /* 75 */ "orconf ::=",
160393 /* 76 */ "orconf ::= OR resolvetype",
160394 /* 77 */ "resolvetype ::= IGNORE",
160395 /* 78 */ "resolvetype ::= REPLACE",
160396 /* 79 */ "cmd ::= DROP TABLE ifexists fullname",
160397 /* 80 */ "ifexists ::= IF EXISTS",
160398 /* 81 */ "ifexists ::=",
160399 /* 82 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
160400 /* 83 */ "cmd ::= DROP VIEW ifexists fullname",
160401 /* 84 */ "cmd ::= select",
160402 /* 85 */ "select ::= WITH wqlist selectnowith",
160403 /* 86 */ "select ::= WITH RECURSIVE wqlist selectnowith",
160404 /* 87 */ "select ::= selectnowith",
160405 /* 88 */ "selectnowith ::= selectnowith multiselect_op oneselect",
160406 /* 89 */ "multiselect_op ::= UNION",
160407 /* 90 */ "multiselect_op ::= UNION ALL",
160408 /* 91 */ "multiselect_op ::= EXCEPT|INTERSECT",
160409 /* 92 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
160410 /* 93 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
160411 /* 94 */ "values ::= VALUES LP nexprlist RP",
160412 /* 95 */ "values ::= values COMMA LP nexprlist RP",
160413 /* 96 */ "distinct ::= DISTINCT",
160414 /* 97 */ "distinct ::= ALL",
160415 /* 98 */ "distinct ::=",
160416 /* 99 */ "sclp ::=",
160417 /* 100 */ "selcollist ::= sclp scanpt expr scanpt as",
160418 /* 101 */ "selcollist ::= sclp scanpt STAR",
160419 /* 102 */ "selcollist ::= sclp scanpt nm DOT STAR",
160420 /* 103 */ "as ::= AS nm",
160421 /* 104 */ "as ::=",
160422 /* 105 */ "from ::=",
160423 /* 106 */ "from ::= FROM seltablist",
160424 /* 107 */ "stl_prefix ::= seltablist joinop",
160425 /* 108 */ "stl_prefix ::=",
160426 /* 109 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
160427 /* 110 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
160428 /* 111 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
160429 /* 112 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
160430 /* 113 */ "dbnm ::=",
160431 /* 114 */ "dbnm ::= DOT nm",
160432 /* 115 */ "fullname ::= nm",
160433 /* 116 */ "fullname ::= nm DOT nm",
160434 /* 117 */ "xfullname ::= nm",
160435 /* 118 */ "xfullname ::= nm DOT nm",
160436 /* 119 */ "xfullname ::= nm DOT nm AS nm",
160437 /* 120 */ "xfullname ::= nm AS nm",
160438 /* 121 */ "joinop ::= COMMA|JOIN",
160439 /* 122 */ "joinop ::= JOIN_KW JOIN",
160440 /* 123 */ "joinop ::= JOIN_KW nm JOIN",
160441 /* 124 */ "joinop ::= JOIN_KW nm nm JOIN",
160442 /* 125 */ "on_opt ::= ON expr",
160443 /* 126 */ "on_opt ::=",
160444 /* 127 */ "indexed_opt ::=",
160445 /* 128 */ "indexed_opt ::= INDEXED BY nm",
160446 /* 129 */ "indexed_opt ::= NOT INDEXED",
160447 /* 130 */ "using_opt ::= USING LP idlist RP",
160448 /* 131 */ "using_opt ::=",
160449 /* 132 */ "orderby_opt ::=",
160450 /* 133 */ "orderby_opt ::= ORDER BY sortlist",
160451 /* 134 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
160452 /* 135 */ "sortlist ::= expr sortorder nulls",
160453 /* 136 */ "sortorder ::= ASC",
160454 /* 137 */ "sortorder ::= DESC",
160455 /* 138 */ "sortorder ::=",
160456 /* 139 */ "nulls ::= NULLS FIRST",
160457 /* 140 */ "nulls ::= NULLS LAST",
160458 /* 141 */ "nulls ::=",
160459 /* 142 */ "groupby_opt ::=",
160460 /* 143 */ "groupby_opt ::= GROUP BY nexprlist",
160461 /* 144 */ "having_opt ::=",
160462 /* 145 */ "having_opt ::= HAVING expr",
160463 /* 146 */ "limit_opt ::=",
160464 /* 147 */ "limit_opt ::= LIMIT expr",
160465 /* 148 */ "limit_opt ::= LIMIT expr OFFSET expr",
160466 /* 149 */ "limit_opt ::= LIMIT expr COMMA expr",
160467 /* 150 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret",
160468 /* 151 */ "where_opt ::=",
160469 /* 152 */ "where_opt ::= WHERE expr",
160470 /* 153 */ "where_opt_ret ::=",
160471 /* 154 */ "where_opt_ret ::= WHERE expr",
160472 /* 155 */ "where_opt_ret ::= RETURNING selcollist",
160473 /* 156 */ "where_opt_ret ::= WHERE expr RETURNING selcollist",
160474 /* 157 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret",
160475 /* 158 */ "setlist ::= setlist COMMA nm EQ expr",
160476 /* 159 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
160477 /* 160 */ "setlist ::= nm EQ expr",
160478 /* 161 */ "setlist ::= LP idlist RP EQ expr",
160479 /* 162 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
160480 /* 163 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
160481 /* 164 */ "upsert ::=",
160482 /* 165 */ "upsert ::= RETURNING selcollist",
160483 /* 166 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
160484 /* 167 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
160485 /* 168 */ "upsert ::= ON CONFLICT DO NOTHING returning",
160486 /* 169 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
160487 /* 170 */ "returning ::= RETURNING selcollist",
160488 /* 171 */ "insert_cmd ::= INSERT orconf",
160489 /* 172 */ "insert_cmd ::= REPLACE",
160490 /* 173 */ "idlist_opt ::=",
160491 /* 174 */ "idlist_opt ::= LP idlist RP",
160492 /* 175 */ "idlist ::= idlist COMMA nm",
160493 /* 176 */ "idlist ::= nm",
160494 /* 177 */ "expr ::= LP expr RP",
160495 /* 178 */ "expr ::= ID|INDEXED",
160496 /* 179 */ "expr ::= JOIN_KW",
160497 /* 180 */ "expr ::= nm DOT nm",
160498 /* 181 */ "expr ::= nm DOT nm DOT nm",
160499 /* 182 */ "term ::= NULL|FLOAT|BLOB",
160500 /* 183 */ "term ::= STRING",
160501 /* 184 */ "term ::= INTEGER",
160502 /* 185 */ "expr ::= VARIABLE",
160503 /* 186 */ "expr ::= expr COLLATE ID|STRING",
160504 /* 187 */ "expr ::= CAST LP expr AS typetoken RP",
160505 /* 188 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
160506 /* 189 */ "expr ::= ID|INDEXED LP STAR RP",
160507 /* 190 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
160508 /* 191 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
160509 /* 192 */ "term ::= CTIME_KW",
160510 /* 193 */ "expr ::= LP nexprlist COMMA expr RP",
160511 /* 194 */ "expr ::= expr AND expr",
160512 /* 195 */ "expr ::= expr OR expr",
160513 /* 196 */ "expr ::= expr LT|GT|GE|LE expr",
160514 /* 197 */ "expr ::= expr EQ|NE expr",
160515 /* 198 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
160516 /* 199 */ "expr ::= expr PLUS|MINUS expr",
160517 /* 200 */ "expr ::= expr STAR|SLASH|REM expr",
160518 /* 201 */ "expr ::= expr CONCAT expr",
160519 /* 202 */ "likeop ::= NOT LIKE_KW|MATCH",
160520 /* 203 */ "expr ::= expr likeop expr",
160521 /* 204 */ "expr ::= expr likeop expr ESCAPE expr",
160522 /* 205 */ "expr ::= expr ISNULL|NOTNULL",
160523 /* 206 */ "expr ::= expr NOT NULL",
160524 /* 207 */ "expr ::= expr IS expr",
160525 /* 208 */ "expr ::= expr IS NOT expr",
160526 /* 209 */ "expr ::= NOT expr",
160527 /* 210 */ "expr ::= BITNOT expr",
160528 /* 211 */ "expr ::= PLUS|MINUS expr",
160529 /* 212 */ "between_op ::= BETWEEN",
160530 /* 213 */ "between_op ::= NOT BETWEEN",
160531 /* 214 */ "expr ::= expr between_op expr AND expr",
160532 /* 215 */ "in_op ::= IN",
160533 /* 216 */ "in_op ::= NOT IN",
160534 /* 217 */ "expr ::= expr in_op LP exprlist RP",
160535 /* 218 */ "expr ::= LP select RP",
160536 /* 219 */ "expr ::= expr in_op LP select RP",
160537 /* 220 */ "expr ::= expr in_op nm dbnm paren_exprlist",
160538 /* 221 */ "expr ::= EXISTS LP select RP",
160539 /* 222 */ "expr ::= CASE case_operand case_exprlist case_else END",
160540 /* 223 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
160541 /* 224 */ "case_exprlist ::= WHEN expr THEN expr",
160542 /* 225 */ "case_else ::= ELSE expr",
160543 /* 226 */ "case_else ::=",
160544 /* 227 */ "case_operand ::= expr",
160545 /* 228 */ "case_operand ::=",
160546 /* 229 */ "exprlist ::=",
160547 /* 230 */ "nexprlist ::= nexprlist COMMA expr",
160548 /* 231 */ "nexprlist ::= expr",
160549 /* 232 */ "paren_exprlist ::=",
160550 /* 233 */ "paren_exprlist ::= LP exprlist RP",
160551 /* 234 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
160552 /* 235 */ "uniqueflag ::= UNIQUE",
160553 /* 236 */ "uniqueflag ::=",
160554 /* 237 */ "eidlist_opt ::=",
160555 /* 238 */ "eidlist_opt ::= LP eidlist RP",
160556 /* 239 */ "eidlist ::= eidlist COMMA nm collate sortorder",
160557 /* 240 */ "eidlist ::= nm collate sortorder",
160558 /* 241 */ "collate ::=",
160559 /* 242 */ "collate ::= COLLATE ID|STRING",
160560 /* 243 */ "cmd ::= DROP INDEX ifexists fullname",
160561 /* 244 */ "cmd ::= VACUUM vinto",
160562 /* 245 */ "cmd ::= VACUUM nm vinto",
160563 /* 246 */ "vinto ::= INTO expr",
160564 /* 247 */ "vinto ::=",
160565 /* 248 */ "cmd ::= PRAGMA nm dbnm",
160566 /* 249 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
160567 /* 250 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
160568 /* 251 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
160569 /* 252 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
160570 /* 253 */ "plus_num ::= PLUS INTEGER|FLOAT",
160571 /* 254 */ "minus_num ::= MINUS INTEGER|FLOAT",
160572 /* 255 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
160573 /* 256 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
160574 /* 257 */ "trigger_time ::= BEFORE|AFTER",
160575 /* 258 */ "trigger_time ::= INSTEAD OF",
160576 /* 259 */ "trigger_time ::=",
160577 /* 260 */ "trigger_event ::= DELETE|INSERT",
160578 /* 261 */ "trigger_event ::= UPDATE",
160579 /* 262 */ "trigger_event ::= UPDATE OF idlist",
160580 /* 263 */ "when_clause ::=",
160581 /* 264 */ "when_clause ::= WHEN expr",
160582 /* 265 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
160583 /* 266 */ "trigger_cmd_list ::= trigger_cmd SEMI",
160584 /* 267 */ "trnm ::= nm DOT nm",
160585 /* 268 */ "tridxby ::= INDEXED BY nm",
160586 /* 269 */ "tridxby ::= NOT INDEXED",
160587 /* 270 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
160588 /* 271 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
160589 /* 272 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
160590 /* 273 */ "trigger_cmd ::= scanpt select scanpt",
160591 /* 274 */ "expr ::= RAISE LP IGNORE RP",
160592 /* 275 */ "expr ::= RAISE LP raisetype COMMA nm RP",
160593 /* 276 */ "raisetype ::= ROLLBACK",
160594 /* 277 */ "raisetype ::= ABORT",
160595 /* 278 */ "raisetype ::= FAIL",
160596 /* 279 */ "cmd ::= DROP TRIGGER ifexists fullname",
160597 /* 280 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
160598 /* 281 */ "cmd ::= DETACH database_kw_opt expr",
160599 /* 282 */ "key_opt ::=",
160600 /* 283 */ "key_opt ::= KEY expr",
160601 /* 284 */ "cmd ::= REINDEX",
160602 /* 285 */ "cmd ::= REINDEX nm dbnm",
160603 /* 286 */ "cmd ::= ANALYZE",
160604 /* 287 */ "cmd ::= ANALYZE nm dbnm",
160605 /* 288 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
160606 /* 289 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
160607 /* 290 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
160608 /* 291 */ "add_column_fullname ::= fullname",
160609 /* 292 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
160610 /* 293 */ "cmd ::= create_vtab",
160611 /* 294 */ "cmd ::= create_vtab LP vtabarglist RP",
160612 /* 295 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
160613 /* 296 */ "vtabarg ::=",
160614 /* 297 */ "vtabargtoken ::= ANY",
160615 /* 298 */ "vtabargtoken ::= lp anylist RP",
160616 /* 299 */ "lp ::= LP",
160617 /* 300 */ "with ::= WITH wqlist",
160618 /* 301 */ "with ::= WITH RECURSIVE wqlist",
160619 /* 302 */ "wqas ::= AS",
160620 /* 303 */ "wqas ::= AS MATERIALIZED",
160621 /* 304 */ "wqas ::= AS NOT MATERIALIZED",
160622 /* 305 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
160623 /* 306 */ "wqlist ::= wqitem",
160624 /* 307 */ "wqlist ::= wqlist COMMA wqitem",
160625 /* 308 */ "windowdefn_list ::= windowdefn",
160626 /* 309 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
160627 /* 310 */ "windowdefn ::= nm AS LP window RP",
160628 /* 311 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
160629 /* 312 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
160630 /* 313 */ "window ::= ORDER BY sortlist frame_opt",
160631 /* 314 */ "window ::= nm ORDER BY sortlist frame_opt",
160632 /* 315 */ "window ::= frame_opt",
160633 /* 316 */ "window ::= nm frame_opt",
160634 /* 317 */ "frame_opt ::=",
160635 /* 318 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
160636 /* 319 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
160637 /* 320 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
160638 /* 321 */ "frame_bound_s ::= frame_bound",
160639 /* 322 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
160640 /* 323 */ "frame_bound_e ::= frame_bound",
160641 /* 324 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
160642 /* 325 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
160643 /* 326 */ "frame_bound ::= CURRENT ROW",
160644 /* 327 */ "frame_exclude_opt ::=",
160645 /* 328 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
160646 /* 329 */ "frame_exclude ::= NO OTHERS",
160647 /* 330 */ "frame_exclude ::= CURRENT ROW",
160648 /* 331 */ "frame_exclude ::= GROUP|TIES",
160649 /* 332 */ "window_clause ::= WINDOW windowdefn_list",
160650 /* 333 */ "filter_over ::= filter_clause over_clause",
160651 /* 334 */ "filter_over ::= over_clause",
160652 /* 335 */ "filter_over ::= filter_clause",
160653 /* 336 */ "over_clause ::= OVER LP window RP",
160654 /* 337 */ "over_clause ::= OVER nm",
160655 /* 338 */ "filter_clause ::= FILTER LP WHERE expr RP",
160656 /* 339 */ "input ::= cmdlist",
160657 /* 340 */ "cmdlist ::= cmdlist ecmd",
160658 /* 341 */ "cmdlist ::= ecmd",
160659 /* 342 */ "ecmd ::= SEMI",
160660 /* 343 */ "ecmd ::= cmdx SEMI",
160661 /* 344 */ "ecmd ::= explain cmdx SEMI",
160662 /* 345 */ "trans_opt ::=",
160663 /* 346 */ "trans_opt ::= TRANSACTION",
160664 /* 347 */ "trans_opt ::= TRANSACTION nm",
160665 /* 348 */ "savepoint_opt ::= SAVEPOINT",
160666 /* 349 */ "savepoint_opt ::=",
160667 /* 350 */ "cmd ::= create_table create_table_args",
160668 /* 351 */ "table_option_set ::= table_option",
160669 /* 352 */ "columnlist ::= columnlist COMMA columnname carglist",
160670 /* 353 */ "columnlist ::= columnname carglist",
160671 /* 354 */ "nm ::= ID|INDEXED",
160672 /* 355 */ "nm ::= STRING",
160673 /* 356 */ "nm ::= JOIN_KW",
160674 /* 357 */ "typetoken ::= typename",
160675 /* 358 */ "typename ::= ID|STRING",
160676 /* 359 */ "signed ::= plus_num",
160677 /* 360 */ "signed ::= minus_num",
160678 /* 361 */ "carglist ::= carglist ccons",
160679 /* 362 */ "carglist ::=",
160680 /* 363 */ "ccons ::= NULL onconf",
160681 /* 364 */ "ccons ::= GENERATED ALWAYS AS generated",
160682 /* 365 */ "ccons ::= AS generated",
160683 /* 366 */ "conslist_opt ::= COMMA conslist",
160684 /* 367 */ "conslist ::= conslist tconscomma tcons",
160685 /* 368 */ "conslist ::= tcons",
160686 /* 369 */ "tconscomma ::=",
160687 /* 370 */ "defer_subclause_opt ::= defer_subclause",
160688 /* 371 */ "resolvetype ::= raisetype",
160689 /* 372 */ "selectnowith ::= oneselect",
160690 /* 373 */ "oneselect ::= values",
160691 /* 374 */ "sclp ::= selcollist COMMA",
160692 /* 375 */ "as ::= ID|STRING",
160693 /* 376 */ "returning ::=",
160694 /* 377 */ "expr ::= term",
160695 /* 378 */ "likeop ::= LIKE_KW|MATCH",
160696 /* 379 */ "exprlist ::= nexprlist",
160697 /* 380 */ "nmnum ::= plus_num",
160698 /* 381 */ "nmnum ::= nm",
160699 /* 382 */ "nmnum ::= ON",
160700 /* 383 */ "nmnum ::= DELETE",
160701 /* 384 */ "nmnum ::= DEFAULT",
160702 /* 385 */ "plus_num ::= INTEGER|FLOAT",
160703 /* 386 */ "foreach_clause ::=",
160704 /* 387 */ "foreach_clause ::= FOR EACH ROW",
160705 /* 388 */ "trnm ::= nm",
160706 /* 389 */ "tridxby ::=",
160707 /* 390 */ "database_kw_opt ::= DATABASE",
160708 /* 391 */ "database_kw_opt ::=",
160709 /* 392 */ "kwcolumn_opt ::=",
160710 /* 393 */ "kwcolumn_opt ::= COLUMNKW",
160711 /* 394 */ "vtabarglist ::= vtabarg",
160712 /* 395 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
160713 /* 396 */ "vtabarg ::= vtabarg vtabargtoken",
160714 /* 397 */ "anylist ::=",
160715 /* 398 */ "anylist ::= anylist LP anylist RP",
160716 /* 399 */ "anylist ::= anylist ANY",
160717 /* 400 */ "with ::=",
160718 };
160719 #endif /* NDEBUG */
160720
160721
160722 #if YYSTACKDEPTH<=0
@@ -160542,102 +160839,102 @@
160839 ** which appear on the RHS of the rule, but which are *not* used
160840 ** inside the C code.
160841 */
160842 /********* Begin destructor definitions ***************************************/
160843 case 203: /* select */
160844 case 238: /* selectnowith */
160845 case 239: /* oneselect */
160846 case 251: /* values */
160847 {
160848 sqlite3SelectDelete(pParse->db, (yypminor->yy303));
160849 }
160850 break;
160851 case 215: /* term */
160852 case 216: /* expr */
160853 case 245: /* where_opt */
160854 case 247: /* having_opt */
160855 case 259: /* on_opt */
160856 case 266: /* where_opt_ret */
160857 case 277: /* case_operand */
160858 case 279: /* case_else */
160859 case 282: /* vinto */
160860 case 289: /* when_clause */
160861 case 294: /* key_opt */
160862 case 310: /* filter_clause */
160863 {
160864 sqlite3ExprDelete(pParse->db, (yypminor->yy626));
160865 }
160866 break;
160867 case 220: /* eidlist_opt */
160868 case 230: /* sortlist */
160869 case 231: /* eidlist */
160870 case 243: /* selcollist */
160871 case 246: /* groupby_opt */
160872 case 248: /* orderby_opt */
160873 case 252: /* nexprlist */
160874 case 253: /* sclp */
160875 case 261: /* exprlist */
160876 case 267: /* setlist */
160877 case 276: /* paren_exprlist */
160878 case 278: /* case_exprlist */
160879 case 309: /* part_opt */
160880 {
160881 sqlite3ExprListDelete(pParse->db, (yypminor->yy562));
160882 }
160883 break;
160884 case 237: /* fullname */
160885 case 244: /* from */
160886 case 255: /* seltablist */
160887 case 256: /* stl_prefix */
160888 case 262: /* xfullname */
160889 {
160890 sqlite3SrcListDelete(pParse->db, (yypminor->yy607));
160891 }
160892 break;
160893 case 240: /* wqlist */
160894 {
160895 sqlite3WithDelete(pParse->db, (yypminor->yy43));
160896 }
160897 break;
160898 case 250: /* window_clause */
160899 case 305: /* windowdefn_list */
160900 {
160901 sqlite3WindowListDelete(pParse->db, (yypminor->yy375));
160902 }
160903 break;
160904 case 260: /* using_opt */
160905 case 263: /* idlist */
160906 case 269: /* idlist_opt */
160907 {
160908 sqlite3IdListDelete(pParse->db, (yypminor->yy240));
160909 }
160910 break;
160911 case 272: /* filter_over */
160912 case 306: /* windowdefn */
160913 case 307: /* window */
160914 case 308: /* frame_opt */
160915 case 311: /* over_clause */
160916 {
160917 sqlite3WindowDelete(pParse->db, (yypminor->yy375));
160918 }
160919 break;
160920 case 285: /* trigger_cmd_list */
160921 case 290: /* trigger_cmd */
160922 {
160923 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy95));
160924 }
160925 break;
160926 case 287: /* trigger_event */
160927 {
160928 sqlite3IdListDelete(pParse->db, (yypminor->yy570).b);
160929 }
160930 break;
160931 case 313: /* frame_bound */
160932 case 314: /* frame_bound_s */
160933 case 315: /* frame_bound_e */
160934 {
160935 sqlite3ExprDelete(pParse->db, (yypminor->yy81).pExpr);
160936 }
160937 break;
160938 /********* End destructor definitions *****************************************/
160939 default: break; /* If no destructor action specified: do nothing */
160940 }
@@ -160943,389 +161240,392 @@
161240 196, /* (14) createkw ::= CREATE */
161241 198, /* (15) ifnotexists ::= */
161242 198, /* (16) ifnotexists ::= IF NOT EXISTS */
161243 197, /* (17) temp ::= TEMP */
161244 197, /* (18) temp ::= */
161245 195, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
161246 195, /* (20) create_table_args ::= AS select */
161247 202, /* (21) table_option_set ::= */
161248 202, /* (22) table_option_set ::= table_option_set COMMA table_option */
161249 204, /* (23) table_option ::= WITHOUT nm */
161250 204, /* (24) table_option ::= nm */
161251 205, /* (25) columnname ::= nm typetoken */
161252 207, /* (26) typetoken ::= */
161253 207, /* (27) typetoken ::= typename LP signed RP */
161254 207, /* (28) typetoken ::= typename LP signed COMMA signed RP */
161255 208, /* (29) typename ::= typename ID|STRING */
161256 212, /* (30) scanpt ::= */
161257 213, /* (31) scantok ::= */
161258 214, /* (32) ccons ::= CONSTRAINT nm */
161259 214, /* (33) ccons ::= DEFAULT scantok term */
161260 214, /* (34) ccons ::= DEFAULT LP expr RP */
161261 214, /* (35) ccons ::= DEFAULT PLUS scantok term */
161262 214, /* (36) ccons ::= DEFAULT MINUS scantok term */
161263 214, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
161264 214, /* (38) ccons ::= NOT NULL onconf */
161265 214, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
161266 214, /* (40) ccons ::= UNIQUE onconf */
161267 214, /* (41) ccons ::= CHECK LP expr RP */
161268 214, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
161269 214, /* (43) ccons ::= defer_subclause */
161270 214, /* (44) ccons ::= COLLATE ID|STRING */
161271 223, /* (45) generated ::= LP expr RP */
161272 223, /* (46) generated ::= LP expr RP ID */
161273 219, /* (47) autoinc ::= */
161274 219, /* (48) autoinc ::= AUTOINCR */
161275 221, /* (49) refargs ::= */
161276 221, /* (50) refargs ::= refargs refarg */
161277 224, /* (51) refarg ::= MATCH nm */
161278 224, /* (52) refarg ::= ON INSERT refact */
161279 224, /* (53) refarg ::= ON DELETE refact */
161280 224, /* (54) refarg ::= ON UPDATE refact */
161281 225, /* (55) refact ::= SET NULL */
161282 225, /* (56) refact ::= SET DEFAULT */
161283 225, /* (57) refact ::= CASCADE */
161284 225, /* (58) refact ::= RESTRICT */
161285 225, /* (59) refact ::= NO ACTION */
161286 222, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
161287 222, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
161288 226, /* (62) init_deferred_pred_opt ::= */
161289 226, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
161290 226, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
161291 201, /* (65) conslist_opt ::= */
161292 228, /* (66) tconscomma ::= COMMA */
161293 229, /* (67) tcons ::= CONSTRAINT nm */
161294 229, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
161295 229, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
161296 229, /* (70) tcons ::= CHECK LP expr RP onconf */
161297 229, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
161298 232, /* (72) defer_subclause_opt ::= */
161299 217, /* (73) onconf ::= */
161300 217, /* (74) onconf ::= ON CONFLICT resolvetype */
161301 233, /* (75) orconf ::= */
161302 233, /* (76) orconf ::= OR resolvetype */
161303 234, /* (77) resolvetype ::= IGNORE */
161304 234, /* (78) resolvetype ::= REPLACE */
161305 189, /* (79) cmd ::= DROP TABLE ifexists fullname */
161306 236, /* (80) ifexists ::= IF EXISTS */
161307 236, /* (81) ifexists ::= */
161308 189, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
161309 189, /* (83) cmd ::= DROP VIEW ifexists fullname */
161310 189, /* (84) cmd ::= select */
161311 203, /* (85) select ::= WITH wqlist selectnowith */
161312 203, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
161313 203, /* (87) select ::= selectnowith */
161314 238, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
161315 241, /* (89) multiselect_op ::= UNION */
161316 241, /* (90) multiselect_op ::= UNION ALL */
161317 241, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
161318 239, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
161319 239, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
161320 251, /* (94) values ::= VALUES LP nexprlist RP */
161321 251, /* (95) values ::= values COMMA LP nexprlist RP */
161322 242, /* (96) distinct ::= DISTINCT */
161323 242, /* (97) distinct ::= ALL */
161324 242, /* (98) distinct ::= */
161325 253, /* (99) sclp ::= */
161326 243, /* (100) selcollist ::= sclp scanpt expr scanpt as */
161327 243, /* (101) selcollist ::= sclp scanpt STAR */
161328 243, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
161329 254, /* (103) as ::= AS nm */
161330 254, /* (104) as ::= */
161331 244, /* (105) from ::= */
161332 244, /* (106) from ::= FROM seltablist */
161333 256, /* (107) stl_prefix ::= seltablist joinop */
161334 256, /* (108) stl_prefix ::= */
161335 255, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
161336 255, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
161337 255, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
161338 255, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
161339 199, /* (113) dbnm ::= */
161340 199, /* (114) dbnm ::= DOT nm */
161341 237, /* (115) fullname ::= nm */
161342 237, /* (116) fullname ::= nm DOT nm */
161343 262, /* (117) xfullname ::= nm */
161344 262, /* (118) xfullname ::= nm DOT nm */
161345 262, /* (119) xfullname ::= nm DOT nm AS nm */
161346 262, /* (120) xfullname ::= nm AS nm */
161347 257, /* (121) joinop ::= COMMA|JOIN */
161348 257, /* (122) joinop ::= JOIN_KW JOIN */
161349 257, /* (123) joinop ::= JOIN_KW nm JOIN */
161350 257, /* (124) joinop ::= JOIN_KW nm nm JOIN */
161351 259, /* (125) on_opt ::= ON expr */
161352 259, /* (126) on_opt ::= */
161353 258, /* (127) indexed_opt ::= */
161354 258, /* (128) indexed_opt ::= INDEXED BY nm */
161355 258, /* (129) indexed_opt ::= NOT INDEXED */
161356 260, /* (130) using_opt ::= USING LP idlist RP */
161357 260, /* (131) using_opt ::= */
161358 248, /* (132) orderby_opt ::= */
161359 248, /* (133) orderby_opt ::= ORDER BY sortlist */
161360 230, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
161361 230, /* (135) sortlist ::= expr sortorder nulls */
161362 218, /* (136) sortorder ::= ASC */
161363 218, /* (137) sortorder ::= DESC */
161364 218, /* (138) sortorder ::= */
161365 264, /* (139) nulls ::= NULLS FIRST */
161366 264, /* (140) nulls ::= NULLS LAST */
161367 264, /* (141) nulls ::= */
161368 246, /* (142) groupby_opt ::= */
161369 246, /* (143) groupby_opt ::= GROUP BY nexprlist */
161370 247, /* (144) having_opt ::= */
161371 247, /* (145) having_opt ::= HAVING expr */
161372 249, /* (146) limit_opt ::= */
161373 249, /* (147) limit_opt ::= LIMIT expr */
161374 249, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
161375 249, /* (149) limit_opt ::= LIMIT expr COMMA expr */
161376 189, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
161377 245, /* (151) where_opt ::= */
161378 245, /* (152) where_opt ::= WHERE expr */
161379 266, /* (153) where_opt_ret ::= */
161380 266, /* (154) where_opt_ret ::= WHERE expr */
161381 266, /* (155) where_opt_ret ::= RETURNING selcollist */
161382 266, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
161383 189, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
161384 267, /* (158) setlist ::= setlist COMMA nm EQ expr */
161385 267, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
161386 267, /* (160) setlist ::= nm EQ expr */
161387 267, /* (161) setlist ::= LP idlist RP EQ expr */
161388 189, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
161389 189, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
161390 270, /* (164) upsert ::= */
161391 270, /* (165) upsert ::= RETURNING selcollist */
161392 270, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
161393 270, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
161394 270, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
161395 270, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
161396 271, /* (170) returning ::= RETURNING selcollist */
161397 268, /* (171) insert_cmd ::= INSERT orconf */
161398 268, /* (172) insert_cmd ::= REPLACE */
161399 269, /* (173) idlist_opt ::= */
161400 269, /* (174) idlist_opt ::= LP idlist RP */
161401 263, /* (175) idlist ::= idlist COMMA nm */
161402 263, /* (176) idlist ::= nm */
161403 216, /* (177) expr ::= LP expr RP */
161404 216, /* (178) expr ::= ID|INDEXED */
161405 216, /* (179) expr ::= JOIN_KW */
161406 216, /* (180) expr ::= nm DOT nm */
161407 216, /* (181) expr ::= nm DOT nm DOT nm */
161408 215, /* (182) term ::= NULL|FLOAT|BLOB */
161409 215, /* (183) term ::= STRING */
161410 215, /* (184) term ::= INTEGER */
161411 216, /* (185) expr ::= VARIABLE */
161412 216, /* (186) expr ::= expr COLLATE ID|STRING */
161413 216, /* (187) expr ::= CAST LP expr AS typetoken RP */
161414 216, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
161415 216, /* (189) expr ::= ID|INDEXED LP STAR RP */
161416 216, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
161417 216, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
161418 215, /* (192) term ::= CTIME_KW */
161419 216, /* (193) expr ::= LP nexprlist COMMA expr RP */
161420 216, /* (194) expr ::= expr AND expr */
161421 216, /* (195) expr ::= expr OR expr */
161422 216, /* (196) expr ::= expr LT|GT|GE|LE expr */
161423 216, /* (197) expr ::= expr EQ|NE expr */
161424 216, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
161425 216, /* (199) expr ::= expr PLUS|MINUS expr */
161426 216, /* (200) expr ::= expr STAR|SLASH|REM expr */
161427 216, /* (201) expr ::= expr CONCAT expr */
161428 273, /* (202) likeop ::= NOT LIKE_KW|MATCH */
161429 216, /* (203) expr ::= expr likeop expr */
161430 216, /* (204) expr ::= expr likeop expr ESCAPE expr */
161431 216, /* (205) expr ::= expr ISNULL|NOTNULL */
161432 216, /* (206) expr ::= expr NOT NULL */
161433 216, /* (207) expr ::= expr IS expr */
161434 216, /* (208) expr ::= expr IS NOT expr */
161435 216, /* (209) expr ::= NOT expr */
161436 216, /* (210) expr ::= BITNOT expr */
161437 216, /* (211) expr ::= PLUS|MINUS expr */
161438 274, /* (212) between_op ::= BETWEEN */
161439 274, /* (213) between_op ::= NOT BETWEEN */
161440 216, /* (214) expr ::= expr between_op expr AND expr */
161441 275, /* (215) in_op ::= IN */
161442 275, /* (216) in_op ::= NOT IN */
161443 216, /* (217) expr ::= expr in_op LP exprlist RP */
161444 216, /* (218) expr ::= LP select RP */
161445 216, /* (219) expr ::= expr in_op LP select RP */
161446 216, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
161447 216, /* (221) expr ::= EXISTS LP select RP */
161448 216, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
161449 278, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
161450 278, /* (224) case_exprlist ::= WHEN expr THEN expr */
161451 279, /* (225) case_else ::= ELSE expr */
161452 279, /* (226) case_else ::= */
161453 277, /* (227) case_operand ::= expr */
161454 277, /* (228) case_operand ::= */
161455 261, /* (229) exprlist ::= */
161456 252, /* (230) nexprlist ::= nexprlist COMMA expr */
161457 252, /* (231) nexprlist ::= expr */
161458 276, /* (232) paren_exprlist ::= */
161459 276, /* (233) paren_exprlist ::= LP exprlist RP */
161460 189, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
161461 280, /* (235) uniqueflag ::= UNIQUE */
161462 280, /* (236) uniqueflag ::= */
161463 220, /* (237) eidlist_opt ::= */
161464 220, /* (238) eidlist_opt ::= LP eidlist RP */
161465 231, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
161466 231, /* (240) eidlist ::= nm collate sortorder */
161467 281, /* (241) collate ::= */
161468 281, /* (242) collate ::= COLLATE ID|STRING */
161469 189, /* (243) cmd ::= DROP INDEX ifexists fullname */
161470 189, /* (244) cmd ::= VACUUM vinto */
161471 189, /* (245) cmd ::= VACUUM nm vinto */
161472 282, /* (246) vinto ::= INTO expr */
161473 282, /* (247) vinto ::= */
161474 189, /* (248) cmd ::= PRAGMA nm dbnm */
161475 189, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
161476 189, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
161477 189, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
161478 189, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
161479 210, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
161480 211, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
161481 189, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
161482 284, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
161483 286, /* (257) trigger_time ::= BEFORE|AFTER */
161484 286, /* (258) trigger_time ::= INSTEAD OF */
161485 286, /* (259) trigger_time ::= */
161486 287, /* (260) trigger_event ::= DELETE|INSERT */
161487 287, /* (261) trigger_event ::= UPDATE */
161488 287, /* (262) trigger_event ::= UPDATE OF idlist */
161489 289, /* (263) when_clause ::= */
161490 289, /* (264) when_clause ::= WHEN expr */
161491 285, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
161492 285, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
161493 291, /* (267) trnm ::= nm DOT nm */
161494 292, /* (268) tridxby ::= INDEXED BY nm */
161495 292, /* (269) tridxby ::= NOT INDEXED */
161496 290, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
161497 290, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
161498 290, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
161499 290, /* (273) trigger_cmd ::= scanpt select scanpt */
161500 216, /* (274) expr ::= RAISE LP IGNORE RP */
161501 216, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
161502 235, /* (276) raisetype ::= ROLLBACK */
161503 235, /* (277) raisetype ::= ABORT */
161504 235, /* (278) raisetype ::= FAIL */
161505 189, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
161506 189, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
161507 189, /* (281) cmd ::= DETACH database_kw_opt expr */
161508 294, /* (282) key_opt ::= */
161509 294, /* (283) key_opt ::= KEY expr */
161510 189, /* (284) cmd ::= REINDEX */
161511 189, /* (285) cmd ::= REINDEX nm dbnm */
161512 189, /* (286) cmd ::= ANALYZE */
161513 189, /* (287) cmd ::= ANALYZE nm dbnm */
161514 189, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
161515 189, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
161516 189, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
161517 295, /* (291) add_column_fullname ::= fullname */
161518 189, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
161519 189, /* (293) cmd ::= create_vtab */
161520 189, /* (294) cmd ::= create_vtab LP vtabarglist RP */
161521 297, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
161522 299, /* (296) vtabarg ::= */
161523 300, /* (297) vtabargtoken ::= ANY */
161524 300, /* (298) vtabargtoken ::= lp anylist RP */
161525 301, /* (299) lp ::= LP */
161526 265, /* (300) with ::= WITH wqlist */
161527 265, /* (301) with ::= WITH RECURSIVE wqlist */
161528 304, /* (302) wqas ::= AS */
161529 304, /* (303) wqas ::= AS MATERIALIZED */
161530 304, /* (304) wqas ::= AS NOT MATERIALIZED */
161531 303, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
161532 240, /* (306) wqlist ::= wqitem */
161533 240, /* (307) wqlist ::= wqlist COMMA wqitem */
161534 305, /* (308) windowdefn_list ::= windowdefn */
161535 305, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
161536 306, /* (310) windowdefn ::= nm AS LP window RP */
161537 307, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
161538 307, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
161539 307, /* (313) window ::= ORDER BY sortlist frame_opt */
161540 307, /* (314) window ::= nm ORDER BY sortlist frame_opt */
161541 307, /* (315) window ::= frame_opt */
161542 307, /* (316) window ::= nm frame_opt */
161543 308, /* (317) frame_opt ::= */
161544 308, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161545 308, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161546 312, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
161547 314, /* (321) frame_bound_s ::= frame_bound */
161548 314, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
161549 315, /* (323) frame_bound_e ::= frame_bound */
161550 315, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
161551 313, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
161552 313, /* (326) frame_bound ::= CURRENT ROW */
161553 316, /* (327) frame_exclude_opt ::= */
161554 316, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
161555 317, /* (329) frame_exclude ::= NO OTHERS */
161556 317, /* (330) frame_exclude ::= CURRENT ROW */
161557 317, /* (331) frame_exclude ::= GROUP|TIES */
161558 250, /* (332) window_clause ::= WINDOW windowdefn_list */
161559 272, /* (333) filter_over ::= filter_clause over_clause */
161560 272, /* (334) filter_over ::= over_clause */
161561 272, /* (335) filter_over ::= filter_clause */
161562 311, /* (336) over_clause ::= OVER LP window RP */
161563 311, /* (337) over_clause ::= OVER nm */
161564 310, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
161565 184, /* (339) input ::= cmdlist */
161566 185, /* (340) cmdlist ::= cmdlist ecmd */
161567 185, /* (341) cmdlist ::= ecmd */
161568 186, /* (342) ecmd ::= SEMI */
161569 186, /* (343) ecmd ::= cmdx SEMI */
161570 186, /* (344) ecmd ::= explain cmdx SEMI */
161571 191, /* (345) trans_opt ::= */
161572 191, /* (346) trans_opt ::= TRANSACTION */
161573 191, /* (347) trans_opt ::= TRANSACTION nm */
161574 193, /* (348) savepoint_opt ::= SAVEPOINT */
161575 193, /* (349) savepoint_opt ::= */
161576 189, /* (350) cmd ::= create_table create_table_args */
161577 202, /* (351) table_option_set ::= table_option */
161578 200, /* (352) columnlist ::= columnlist COMMA columnname carglist */
161579 200, /* (353) columnlist ::= columnname carglist */
161580 192, /* (354) nm ::= ID|INDEXED */
161581 192, /* (355) nm ::= STRING */
161582 192, /* (356) nm ::= JOIN_KW */
161583 207, /* (357) typetoken ::= typename */
161584 208, /* (358) typename ::= ID|STRING */
161585 209, /* (359) signed ::= plus_num */
161586 209, /* (360) signed ::= minus_num */
161587 206, /* (361) carglist ::= carglist ccons */
161588 206, /* (362) carglist ::= */
161589 214, /* (363) ccons ::= NULL onconf */
161590 214, /* (364) ccons ::= GENERATED ALWAYS AS generated */
161591 214, /* (365) ccons ::= AS generated */
161592 201, /* (366) conslist_opt ::= COMMA conslist */
161593 227, /* (367) conslist ::= conslist tconscomma tcons */
161594 227, /* (368) conslist ::= tcons */
161595 228, /* (369) tconscomma ::= */
161596 232, /* (370) defer_subclause_opt ::= defer_subclause */
161597 234, /* (371) resolvetype ::= raisetype */
161598 238, /* (372) selectnowith ::= oneselect */
161599 239, /* (373) oneselect ::= values */
161600 253, /* (374) sclp ::= selcollist COMMA */
161601 254, /* (375) as ::= ID|STRING */
161602 271, /* (376) returning ::= */
161603 216, /* (377) expr ::= term */
161604 273, /* (378) likeop ::= LIKE_KW|MATCH */
161605 261, /* (379) exprlist ::= nexprlist */
161606 283, /* (380) nmnum ::= plus_num */
161607 283, /* (381) nmnum ::= nm */
161608 283, /* (382) nmnum ::= ON */
161609 283, /* (383) nmnum ::= DELETE */
161610 283, /* (384) nmnum ::= DEFAULT */
161611 210, /* (385) plus_num ::= INTEGER|FLOAT */
161612 288, /* (386) foreach_clause ::= */
161613 288, /* (387) foreach_clause ::= FOR EACH ROW */
161614 291, /* (388) trnm ::= nm */
161615 292, /* (389) tridxby ::= */
161616 293, /* (390) database_kw_opt ::= DATABASE */
161617 293, /* (391) database_kw_opt ::= */
161618 296, /* (392) kwcolumn_opt ::= */
161619 296, /* (393) kwcolumn_opt ::= COLUMNKW */
161620 298, /* (394) vtabarglist ::= vtabarg */
161621 298, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
161622 299, /* (396) vtabarg ::= vtabarg vtabargtoken */
161623 302, /* (397) anylist ::= */
161624 302, /* (398) anylist ::= anylist LP anylist RP */
161625 302, /* (399) anylist ::= anylist ANY */
161626 265, /* (400) with ::= */
161627 };
161628
161629 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
161630 ** of symbols on the right-hand side of that rule. */
161631 static const signed char yyRuleInfoNRhs[] = {
@@ -161346,389 +161646,392 @@
161646 -1, /* (14) createkw ::= CREATE */
161647 0, /* (15) ifnotexists ::= */
161648 -3, /* (16) ifnotexists ::= IF NOT EXISTS */
161649 -1, /* (17) temp ::= TEMP */
161650 0, /* (18) temp ::= */
161651 -5, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
161652 -2, /* (20) create_table_args ::= AS select */
161653 0, /* (21) table_option_set ::= */
161654 -3, /* (22) table_option_set ::= table_option_set COMMA table_option */
161655 -2, /* (23) table_option ::= WITHOUT nm */
161656 -1, /* (24) table_option ::= nm */
161657 -2, /* (25) columnname ::= nm typetoken */
161658 0, /* (26) typetoken ::= */
161659 -4, /* (27) typetoken ::= typename LP signed RP */
161660 -6, /* (28) typetoken ::= typename LP signed COMMA signed RP */
161661 -2, /* (29) typename ::= typename ID|STRING */
161662 0, /* (30) scanpt ::= */
161663 0, /* (31) scantok ::= */
161664 -2, /* (32) ccons ::= CONSTRAINT nm */
161665 -3, /* (33) ccons ::= DEFAULT scantok term */
161666 -4, /* (34) ccons ::= DEFAULT LP expr RP */
161667 -4, /* (35) ccons ::= DEFAULT PLUS scantok term */
161668 -4, /* (36) ccons ::= DEFAULT MINUS scantok term */
161669 -3, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
161670 -3, /* (38) ccons ::= NOT NULL onconf */
161671 -5, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
161672 -2, /* (40) ccons ::= UNIQUE onconf */
161673 -4, /* (41) ccons ::= CHECK LP expr RP */
161674 -4, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
161675 -1, /* (43) ccons ::= defer_subclause */
161676 -2, /* (44) ccons ::= COLLATE ID|STRING */
161677 -3, /* (45) generated ::= LP expr RP */
161678 -4, /* (46) generated ::= LP expr RP ID */
161679 0, /* (47) autoinc ::= */
161680 -1, /* (48) autoinc ::= AUTOINCR */
161681 0, /* (49) refargs ::= */
161682 -2, /* (50) refargs ::= refargs refarg */
161683 -2, /* (51) refarg ::= MATCH nm */
161684 -3, /* (52) refarg ::= ON INSERT refact */
161685 -3, /* (53) refarg ::= ON DELETE refact */
161686 -3, /* (54) refarg ::= ON UPDATE refact */
161687 -2, /* (55) refact ::= SET NULL */
161688 -2, /* (56) refact ::= SET DEFAULT */
161689 -1, /* (57) refact ::= CASCADE */
161690 -1, /* (58) refact ::= RESTRICT */
161691 -2, /* (59) refact ::= NO ACTION */
161692 -3, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
161693 -2, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
161694 0, /* (62) init_deferred_pred_opt ::= */
161695 -2, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
161696 -2, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
161697 0, /* (65) conslist_opt ::= */
161698 -1, /* (66) tconscomma ::= COMMA */
161699 -2, /* (67) tcons ::= CONSTRAINT nm */
161700 -7, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
161701 -5, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
161702 -5, /* (70) tcons ::= CHECK LP expr RP onconf */
161703 -10, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
161704 0, /* (72) defer_subclause_opt ::= */
161705 0, /* (73) onconf ::= */
161706 -3, /* (74) onconf ::= ON CONFLICT resolvetype */
161707 0, /* (75) orconf ::= */
161708 -2, /* (76) orconf ::= OR resolvetype */
161709 -1, /* (77) resolvetype ::= IGNORE */
161710 -1, /* (78) resolvetype ::= REPLACE */
161711 -4, /* (79) cmd ::= DROP TABLE ifexists fullname */
161712 -2, /* (80) ifexists ::= IF EXISTS */
161713 0, /* (81) ifexists ::= */
161714 -9, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
161715 -4, /* (83) cmd ::= DROP VIEW ifexists fullname */
161716 -1, /* (84) cmd ::= select */
161717 -3, /* (85) select ::= WITH wqlist selectnowith */
161718 -4, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
161719 -1, /* (87) select ::= selectnowith */
161720 -3, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
161721 -1, /* (89) multiselect_op ::= UNION */
161722 -2, /* (90) multiselect_op ::= UNION ALL */
161723 -1, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
161724 -9, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
161725 -10, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
161726 -4, /* (94) values ::= VALUES LP nexprlist RP */
161727 -5, /* (95) values ::= values COMMA LP nexprlist RP */
161728 -1, /* (96) distinct ::= DISTINCT */
161729 -1, /* (97) distinct ::= ALL */
161730 0, /* (98) distinct ::= */
161731 0, /* (99) sclp ::= */
161732 -5, /* (100) selcollist ::= sclp scanpt expr scanpt as */
161733 -3, /* (101) selcollist ::= sclp scanpt STAR */
161734 -5, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
161735 -2, /* (103) as ::= AS nm */
161736 0, /* (104) as ::= */
161737 0, /* (105) from ::= */
161738 -2, /* (106) from ::= FROM seltablist */
161739 -2, /* (107) stl_prefix ::= seltablist joinop */
161740 0, /* (108) stl_prefix ::= */
161741 -7, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
161742 -9, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
161743 -7, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
161744 -7, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
161745 0, /* (113) dbnm ::= */
161746 -2, /* (114) dbnm ::= DOT nm */
161747 -1, /* (115) fullname ::= nm */
161748 -3, /* (116) fullname ::= nm DOT nm */
161749 -1, /* (117) xfullname ::= nm */
161750 -3, /* (118) xfullname ::= nm DOT nm */
161751 -5, /* (119) xfullname ::= nm DOT nm AS nm */
161752 -3, /* (120) xfullname ::= nm AS nm */
161753 -1, /* (121) joinop ::= COMMA|JOIN */
161754 -2, /* (122) joinop ::= JOIN_KW JOIN */
161755 -3, /* (123) joinop ::= JOIN_KW nm JOIN */
161756 -4, /* (124) joinop ::= JOIN_KW nm nm JOIN */
161757 -2, /* (125) on_opt ::= ON expr */
161758 0, /* (126) on_opt ::= */
161759 0, /* (127) indexed_opt ::= */
161760 -3, /* (128) indexed_opt ::= INDEXED BY nm */
161761 -2, /* (129) indexed_opt ::= NOT INDEXED */
161762 -4, /* (130) using_opt ::= USING LP idlist RP */
161763 0, /* (131) using_opt ::= */
161764 0, /* (132) orderby_opt ::= */
161765 -3, /* (133) orderby_opt ::= ORDER BY sortlist */
161766 -5, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
161767 -3, /* (135) sortlist ::= expr sortorder nulls */
161768 -1, /* (136) sortorder ::= ASC */
161769 -1, /* (137) sortorder ::= DESC */
161770 0, /* (138) sortorder ::= */
161771 -2, /* (139) nulls ::= NULLS FIRST */
161772 -2, /* (140) nulls ::= NULLS LAST */
161773 0, /* (141) nulls ::= */
161774 0, /* (142) groupby_opt ::= */
161775 -3, /* (143) groupby_opt ::= GROUP BY nexprlist */
161776 0, /* (144) having_opt ::= */
161777 -2, /* (145) having_opt ::= HAVING expr */
161778 0, /* (146) limit_opt ::= */
161779 -2, /* (147) limit_opt ::= LIMIT expr */
161780 -4, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
161781 -4, /* (149) limit_opt ::= LIMIT expr COMMA expr */
161782 -6, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
161783 0, /* (151) where_opt ::= */
161784 -2, /* (152) where_opt ::= WHERE expr */
161785 0, /* (153) where_opt_ret ::= */
161786 -2, /* (154) where_opt_ret ::= WHERE expr */
161787 -2, /* (155) where_opt_ret ::= RETURNING selcollist */
161788 -4, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
161789 -9, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
161790 -5, /* (158) setlist ::= setlist COMMA nm EQ expr */
161791 -7, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
161792 -3, /* (160) setlist ::= nm EQ expr */
161793 -5, /* (161) setlist ::= LP idlist RP EQ expr */
161794 -7, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
161795 -8, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
161796 0, /* (164) upsert ::= */
161797 -2, /* (165) upsert ::= RETURNING selcollist */
161798 -12, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
161799 -9, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
161800 -5, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
161801 -8, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
161802 -2, /* (170) returning ::= RETURNING selcollist */
161803 -2, /* (171) insert_cmd ::= INSERT orconf */
161804 -1, /* (172) insert_cmd ::= REPLACE */
161805 0, /* (173) idlist_opt ::= */
161806 -3, /* (174) idlist_opt ::= LP idlist RP */
161807 -3, /* (175) idlist ::= idlist COMMA nm */
161808 -1, /* (176) idlist ::= nm */
161809 -3, /* (177) expr ::= LP expr RP */
161810 -1, /* (178) expr ::= ID|INDEXED */
161811 -1, /* (179) expr ::= JOIN_KW */
161812 -3, /* (180) expr ::= nm DOT nm */
161813 -5, /* (181) expr ::= nm DOT nm DOT nm */
161814 -1, /* (182) term ::= NULL|FLOAT|BLOB */
161815 -1, /* (183) term ::= STRING */
161816 -1, /* (184) term ::= INTEGER */
161817 -1, /* (185) expr ::= VARIABLE */
161818 -3, /* (186) expr ::= expr COLLATE ID|STRING */
161819 -6, /* (187) expr ::= CAST LP expr AS typetoken RP */
161820 -5, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
161821 -4, /* (189) expr ::= ID|INDEXED LP STAR RP */
161822 -6, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
161823 -5, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
161824 -1, /* (192) term ::= CTIME_KW */
161825 -5, /* (193) expr ::= LP nexprlist COMMA expr RP */
161826 -3, /* (194) expr ::= expr AND expr */
161827 -3, /* (195) expr ::= expr OR expr */
161828 -3, /* (196) expr ::= expr LT|GT|GE|LE expr */
161829 -3, /* (197) expr ::= expr EQ|NE expr */
161830 -3, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
161831 -3, /* (199) expr ::= expr PLUS|MINUS expr */
161832 -3, /* (200) expr ::= expr STAR|SLASH|REM expr */
161833 -3, /* (201) expr ::= expr CONCAT expr */
161834 -2, /* (202) likeop ::= NOT LIKE_KW|MATCH */
161835 -3, /* (203) expr ::= expr likeop expr */
161836 -5, /* (204) expr ::= expr likeop expr ESCAPE expr */
161837 -2, /* (205) expr ::= expr ISNULL|NOTNULL */
161838 -3, /* (206) expr ::= expr NOT NULL */
161839 -3, /* (207) expr ::= expr IS expr */
161840 -4, /* (208) expr ::= expr IS NOT expr */
161841 -2, /* (209) expr ::= NOT expr */
161842 -2, /* (210) expr ::= BITNOT expr */
161843 -2, /* (211) expr ::= PLUS|MINUS expr */
161844 -1, /* (212) between_op ::= BETWEEN */
161845 -2, /* (213) between_op ::= NOT BETWEEN */
161846 -5, /* (214) expr ::= expr between_op expr AND expr */
161847 -1, /* (215) in_op ::= IN */
161848 -2, /* (216) in_op ::= NOT IN */
161849 -5, /* (217) expr ::= expr in_op LP exprlist RP */
161850 -3, /* (218) expr ::= LP select RP */
161851 -5, /* (219) expr ::= expr in_op LP select RP */
161852 -5, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
161853 -4, /* (221) expr ::= EXISTS LP select RP */
161854 -5, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
161855 -5, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
161856 -4, /* (224) case_exprlist ::= WHEN expr THEN expr */
161857 -2, /* (225) case_else ::= ELSE expr */
161858 0, /* (226) case_else ::= */
161859 -1, /* (227) case_operand ::= expr */
161860 0, /* (228) case_operand ::= */
161861 0, /* (229) exprlist ::= */
161862 -3, /* (230) nexprlist ::= nexprlist COMMA expr */
161863 -1, /* (231) nexprlist ::= expr */
161864 0, /* (232) paren_exprlist ::= */
161865 -3, /* (233) paren_exprlist ::= LP exprlist RP */
161866 -12, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
161867 -1, /* (235) uniqueflag ::= UNIQUE */
161868 0, /* (236) uniqueflag ::= */
161869 0, /* (237) eidlist_opt ::= */
161870 -3, /* (238) eidlist_opt ::= LP eidlist RP */
161871 -5, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
161872 -3, /* (240) eidlist ::= nm collate sortorder */
161873 0, /* (241) collate ::= */
161874 -2, /* (242) collate ::= COLLATE ID|STRING */
161875 -4, /* (243) cmd ::= DROP INDEX ifexists fullname */
161876 -2, /* (244) cmd ::= VACUUM vinto */
161877 -3, /* (245) cmd ::= VACUUM nm vinto */
161878 -2, /* (246) vinto ::= INTO expr */
161879 0, /* (247) vinto ::= */
161880 -3, /* (248) cmd ::= PRAGMA nm dbnm */
161881 -5, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
161882 -6, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
161883 -5, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
161884 -6, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
161885 -2, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
161886 -2, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
161887 -5, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
161888 -11, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
161889 -1, /* (257) trigger_time ::= BEFORE|AFTER */
161890 -2, /* (258) trigger_time ::= INSTEAD OF */
161891 0, /* (259) trigger_time ::= */
161892 -1, /* (260) trigger_event ::= DELETE|INSERT */
161893 -1, /* (261) trigger_event ::= UPDATE */
161894 -3, /* (262) trigger_event ::= UPDATE OF idlist */
161895 0, /* (263) when_clause ::= */
161896 -2, /* (264) when_clause ::= WHEN expr */
161897 -3, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
161898 -2, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
161899 -3, /* (267) trnm ::= nm DOT nm */
161900 -3, /* (268) tridxby ::= INDEXED BY nm */
161901 -2, /* (269) tridxby ::= NOT INDEXED */
161902 -9, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
161903 -8, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
161904 -6, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
161905 -3, /* (273) trigger_cmd ::= scanpt select scanpt */
161906 -4, /* (274) expr ::= RAISE LP IGNORE RP */
161907 -6, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
161908 -1, /* (276) raisetype ::= ROLLBACK */
161909 -1, /* (277) raisetype ::= ABORT */
161910 -1, /* (278) raisetype ::= FAIL */
161911 -4, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
161912 -6, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
161913 -3, /* (281) cmd ::= DETACH database_kw_opt expr */
161914 0, /* (282) key_opt ::= */
161915 -2, /* (283) key_opt ::= KEY expr */
161916 -1, /* (284) cmd ::= REINDEX */
161917 -3, /* (285) cmd ::= REINDEX nm dbnm */
161918 -1, /* (286) cmd ::= ANALYZE */
161919 -3, /* (287) cmd ::= ANALYZE nm dbnm */
161920 -6, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
161921 -7, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
161922 -6, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
161923 -1, /* (291) add_column_fullname ::= fullname */
161924 -8, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
161925 -1, /* (293) cmd ::= create_vtab */
161926 -4, /* (294) cmd ::= create_vtab LP vtabarglist RP */
161927 -8, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
161928 0, /* (296) vtabarg ::= */
161929 -1, /* (297) vtabargtoken ::= ANY */
161930 -3, /* (298) vtabargtoken ::= lp anylist RP */
161931 -1, /* (299) lp ::= LP */
161932 -2, /* (300) with ::= WITH wqlist */
161933 -3, /* (301) with ::= WITH RECURSIVE wqlist */
161934 -1, /* (302) wqas ::= AS */
161935 -2, /* (303) wqas ::= AS MATERIALIZED */
161936 -3, /* (304) wqas ::= AS NOT MATERIALIZED */
161937 -6, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
161938 -1, /* (306) wqlist ::= wqitem */
161939 -3, /* (307) wqlist ::= wqlist COMMA wqitem */
161940 -1, /* (308) windowdefn_list ::= windowdefn */
161941 -3, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
161942 -5, /* (310) windowdefn ::= nm AS LP window RP */
161943 -5, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
161944 -6, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
161945 -4, /* (313) window ::= ORDER BY sortlist frame_opt */
161946 -5, /* (314) window ::= nm ORDER BY sortlist frame_opt */
161947 -1, /* (315) window ::= frame_opt */
161948 -2, /* (316) window ::= nm frame_opt */
161949 0, /* (317) frame_opt ::= */
161950 -3, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161951 -6, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161952 -1, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
161953 -1, /* (321) frame_bound_s ::= frame_bound */
161954 -2, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
161955 -1, /* (323) frame_bound_e ::= frame_bound */
161956 -2, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
161957 -2, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
161958 -2, /* (326) frame_bound ::= CURRENT ROW */
161959 0, /* (327) frame_exclude_opt ::= */
161960 -2, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
161961 -2, /* (329) frame_exclude ::= NO OTHERS */
161962 -2, /* (330) frame_exclude ::= CURRENT ROW */
161963 -1, /* (331) frame_exclude ::= GROUP|TIES */
161964 -2, /* (332) window_clause ::= WINDOW windowdefn_list */
161965 -2, /* (333) filter_over ::= filter_clause over_clause */
161966 -1, /* (334) filter_over ::= over_clause */
161967 -1, /* (335) filter_over ::= filter_clause */
161968 -4, /* (336) over_clause ::= OVER LP window RP */
161969 -2, /* (337) over_clause ::= OVER nm */
161970 -5, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
161971 -1, /* (339) input ::= cmdlist */
161972 -2, /* (340) cmdlist ::= cmdlist ecmd */
161973 -1, /* (341) cmdlist ::= ecmd */
161974 -1, /* (342) ecmd ::= SEMI */
161975 -2, /* (343) ecmd ::= cmdx SEMI */
161976 -3, /* (344) ecmd ::= explain cmdx SEMI */
161977 0, /* (345) trans_opt ::= */
161978 -1, /* (346) trans_opt ::= TRANSACTION */
161979 -2, /* (347) trans_opt ::= TRANSACTION nm */
161980 -1, /* (348) savepoint_opt ::= SAVEPOINT */
161981 0, /* (349) savepoint_opt ::= */
161982 -2, /* (350) cmd ::= create_table create_table_args */
161983 -1, /* (351) table_option_set ::= table_option */
161984 -4, /* (352) columnlist ::= columnlist COMMA columnname carglist */
161985 -2, /* (353) columnlist ::= columnname carglist */
161986 -1, /* (354) nm ::= ID|INDEXED */
161987 -1, /* (355) nm ::= STRING */
161988 -1, /* (356) nm ::= JOIN_KW */
161989 -1, /* (357) typetoken ::= typename */
161990 -1, /* (358) typename ::= ID|STRING */
161991 -1, /* (359) signed ::= plus_num */
161992 -1, /* (360) signed ::= minus_num */
161993 -2, /* (361) carglist ::= carglist ccons */
161994 0, /* (362) carglist ::= */
161995 -2, /* (363) ccons ::= NULL onconf */
161996 -4, /* (364) ccons ::= GENERATED ALWAYS AS generated */
161997 -2, /* (365) ccons ::= AS generated */
161998 -2, /* (366) conslist_opt ::= COMMA conslist */
161999 -3, /* (367) conslist ::= conslist tconscomma tcons */
162000 -1, /* (368) conslist ::= tcons */
162001 0, /* (369) tconscomma ::= */
162002 -1, /* (370) defer_subclause_opt ::= defer_subclause */
162003 -1, /* (371) resolvetype ::= raisetype */
162004 -1, /* (372) selectnowith ::= oneselect */
162005 -1, /* (373) oneselect ::= values */
162006 -2, /* (374) sclp ::= selcollist COMMA */
162007 -1, /* (375) as ::= ID|STRING */
162008 0, /* (376) returning ::= */
162009 -1, /* (377) expr ::= term */
162010 -1, /* (378) likeop ::= LIKE_KW|MATCH */
162011 -1, /* (379) exprlist ::= nexprlist */
162012 -1, /* (380) nmnum ::= plus_num */
162013 -1, /* (381) nmnum ::= nm */
162014 -1, /* (382) nmnum ::= ON */
162015 -1, /* (383) nmnum ::= DELETE */
162016 -1, /* (384) nmnum ::= DEFAULT */
162017 -1, /* (385) plus_num ::= INTEGER|FLOAT */
162018 0, /* (386) foreach_clause ::= */
162019 -3, /* (387) foreach_clause ::= FOR EACH ROW */
162020 -1, /* (388) trnm ::= nm */
162021 0, /* (389) tridxby ::= */
162022 -1, /* (390) database_kw_opt ::= DATABASE */
162023 0, /* (391) database_kw_opt ::= */
162024 0, /* (392) kwcolumn_opt ::= */
162025 -1, /* (393) kwcolumn_opt ::= COLUMNKW */
162026 -1, /* (394) vtabarglist ::= vtabarg */
162027 -3, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
162028 -2, /* (396) vtabarg ::= vtabarg vtabargtoken */
162029 0, /* (397) anylist ::= */
162030 -4, /* (398) anylist ::= anylist LP anylist RP */
162031 -2, /* (399) anylist ::= anylist ANY */
162032 0, /* (400) with ::= */
162033 };
162034
162035 static void yy_accept(yyParser*); /* Forward Declaration */
162036
162037 /*
@@ -161776,20 +162079,20 @@
162079 break;
162080 case 2: /* cmdx ::= cmd */
162081 { sqlite3FinishCoding(pParse); }
162082 break;
162083 case 3: /* cmd ::= BEGIN transtype trans_opt */
162084 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy64);}
162085 break;
162086 case 4: /* transtype ::= */
162087 {yymsp[1].minor.yy64 = TK_DEFERRED;}
162088 break;
162089 case 5: /* transtype ::= DEFERRED */
162090 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
162091 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
162092 case 320: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==320);
162093 {yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/}
162094 break;
162095 case 8: /* cmd ::= COMMIT|END trans_opt */
162096 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
162097 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
162098 break;
@@ -161808,415 +162111,432 @@
162111 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
162112 }
162113 break;
162114 case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
162115 {
162116 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy64,0,0,yymsp[-2].minor.yy64);
162117 }
162118 break;
162119 case 14: /* createkw ::= CREATE */
162120 {disableLookaside(pParse);}
162121 break;
162122 case 15: /* ifnotexists ::= */
162123 case 18: /* temp ::= */ yytestcase(yyruleno==18);
162124 case 47: /* autoinc ::= */ yytestcase(yyruleno==47);
162125 case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
162126 case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72);
162127 case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
162128 case 98: /* distinct ::= */ yytestcase(yyruleno==98);
162129 case 241: /* collate ::= */ yytestcase(yyruleno==241);
162130 {yymsp[1].minor.yy64 = 0;}
 
162131 break;
162132 case 16: /* ifnotexists ::= IF NOT EXISTS */
162133 {yymsp[-2].minor.yy64 = 1;}
162134 break;
162135 case 17: /* temp ::= TEMP */
162136 {yymsp[0].minor.yy64 = pParse->db->init.busy==0;}
162137 break;
162138 case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */
162139 {
162140 sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy51,0);
162141 }
162142 break;
162143 case 20: /* create_table_args ::= AS select */
162144 {
162145 sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy303);
162146 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
162147 }
162148 break;
162149 case 21: /* table_option_set ::= */
162150 {yymsp[1].minor.yy51 = 0;}
162151 break;
162152 case 22: /* table_option_set ::= table_option_set COMMA table_option */
162153 {yylhsminor.yy51 = yymsp[-2].minor.yy51|yymsp[0].minor.yy51;}
162154 yymsp[-2].minor.yy51 = yylhsminor.yy51;
162155 break;
162156 case 23: /* table_option ::= WITHOUT nm */
162157 {
162158 if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
162159 yymsp[-1].minor.yy51 = TF_WithoutRowid | TF_NoVisibleRowid;
162160 }else{
162161 yymsp[-1].minor.yy51 = 0;
162162 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
162163 }
162164 }
162165 break;
162166 case 24: /* table_option ::= nm */
162167 {
162168 if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict",6)==0 ){
162169 yylhsminor.yy51 = TF_Strict;
162170 }else{
162171 yylhsminor.yy51 = 0;
162172 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
162173 }
162174 }
162175 yymsp[0].minor.yy51 = yylhsminor.yy51;
162176 break;
162177 case 25: /* columnname ::= nm typetoken */
162178 {sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);}
162179 break;
162180 case 26: /* typetoken ::= */
162181 case 65: /* conslist_opt ::= */ yytestcase(yyruleno==65);
162182 case 104: /* as ::= */ yytestcase(yyruleno==104);
162183 {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;}
162184 break;
162185 case 27: /* typetoken ::= typename LP signed RP */
162186 {
162187 yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z);
162188 }
162189 break;
162190 case 28: /* typetoken ::= typename LP signed COMMA signed RP */
162191 {
162192 yymsp[-5].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy0.z);
162193 }
162194 break;
162195 case 29: /* typename ::= typename ID|STRING */
162196 {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
162197 break;
162198 case 30: /* scanpt ::= */
162199 {
162200 assert( yyLookahead!=YYNOCODE );
162201 yymsp[1].minor.yy600 = yyLookaheadToken.z;
162202 }
162203 break;
162204 case 31: /* scantok ::= */
162205 {
162206 assert( yyLookahead!=YYNOCODE );
162207 yymsp[1].minor.yy0 = yyLookaheadToken;
162208 }
162209 break;
162210 case 32: /* ccons ::= CONSTRAINT nm */
162211 case 67: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==67);
162212 {pParse->constraintName = yymsp[0].minor.yy0;}
162213 break;
162214 case 33: /* ccons ::= DEFAULT scantok term */
162215 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
162216 break;
162217 case 34: /* ccons ::= DEFAULT LP expr RP */
162218 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
162219 break;
162220 case 35: /* ccons ::= DEFAULT PLUS scantok term */
162221 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
162222 break;
162223 case 36: /* ccons ::= DEFAULT MINUS scantok term */
162224 {
162225 Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy626, 0);
162226 sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
162227 }
162228 break;
162229 case 37: /* ccons ::= DEFAULT scantok ID|INDEXED */
162230 {
162231 Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0);
162232 if( p ){
162233 sqlite3ExprIdToTrueFalse(p);
162234 testcase( p->op==TK_TRUEFALSE && sqlite3ExprTruthValue(p) );
162235 }
162236 sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
162237 }
162238 break;
162239 case 38: /* ccons ::= NOT NULL onconf */
162240 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy64);}
162241 break;
162242 case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
162243 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy64,yymsp[0].minor.yy64,yymsp[-2].minor.yy64);}
162244 break;
162245 case 40: /* ccons ::= UNIQUE onconf */
162246 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy64,0,0,0,0,
162247 SQLITE_IDXTYPE_UNIQUE);}
162248 break;
162249 case 41: /* ccons ::= CHECK LP expr RP */
162250 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
162251 break;
162252 case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */
162253 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy562,yymsp[0].minor.yy64);}
162254 break;
162255 case 43: /* ccons ::= defer_subclause */
162256 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy64);}
162257 break;
162258 case 44: /* ccons ::= COLLATE ID|STRING */
162259 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
162260 break;
162261 case 45: /* generated ::= LP expr RP */
162262 {sqlite3AddGenerated(pParse,yymsp[-1].minor.yy626,0);}
162263 break;
162264 case 46: /* generated ::= LP expr RP ID */
162265 {sqlite3AddGenerated(pParse,yymsp[-2].minor.yy626,&yymsp[0].minor.yy0);}
162266 break;
162267 case 48: /* autoinc ::= AUTOINCR */
162268 {yymsp[0].minor.yy64 = 1;}
162269 break;
162270 case 49: /* refargs ::= */
162271 { yymsp[1].minor.yy64 = OE_None*0x0101; /* EV: R-19803-45884 */}
162272 break;
162273 case 50: /* refargs ::= refargs refarg */
162274 { yymsp[-1].minor.yy64 = (yymsp[-1].minor.yy64 & ~yymsp[0].minor.yy83.mask) | yymsp[0].minor.yy83.value; }
162275 break;
162276 case 51: /* refarg ::= MATCH nm */
162277 { yymsp[-1].minor.yy83.value = 0; yymsp[-1].minor.yy83.mask = 0x000000; }
162278 break;
162279 case 52: /* refarg ::= ON INSERT refact */
162280 { yymsp[-2].minor.yy83.value = 0; yymsp[-2].minor.yy83.mask = 0x000000; }
162281 break;
162282 case 53: /* refarg ::= ON DELETE refact */
162283 { yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64; yymsp[-2].minor.yy83.mask = 0x0000ff; }
162284 break;
162285 case 54: /* refarg ::= ON UPDATE refact */
162286 { yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64<<8; yymsp[-2].minor.yy83.mask = 0x00ff00; }
162287 break;
162288 case 55: /* refact ::= SET NULL */
162289 { yymsp[-1].minor.yy64 = OE_SetNull; /* EV: R-33326-45252 */}
162290 break;
162291 case 56: /* refact ::= SET DEFAULT */
162292 { yymsp[-1].minor.yy64 = OE_SetDflt; /* EV: R-33326-45252 */}
162293 break;
162294 case 57: /* refact ::= CASCADE */
162295 { yymsp[0].minor.yy64 = OE_Cascade; /* EV: R-33326-45252 */}
162296 break;
162297 case 58: /* refact ::= RESTRICT */
162298 { yymsp[0].minor.yy64 = OE_Restrict; /* EV: R-33326-45252 */}
162299 break;
162300 case 59: /* refact ::= NO ACTION */
162301 { yymsp[-1].minor.yy64 = OE_None; /* EV: R-33326-45252 */}
162302 break;
162303 case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
162304 {yymsp[-2].minor.yy64 = 0;}
162305 break;
162306 case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
162307 case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76);
162308 case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
162309 {yymsp[-1].minor.yy64 = yymsp[0].minor.yy64;}
162310 break;
162311 case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
162312 case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
162313 case 213: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==213);
162314 case 216: /* in_op ::= NOT IN */ yytestcase(yyruleno==216);
162315 case 242: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==242);
162316 {yymsp[-1].minor.yy64 = 1;}
162317 break;
162318 case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
162319 {yymsp[-1].minor.yy64 = 0;}
162320 break;
162321 case 66: /* tconscomma ::= COMMA */
162322 {pParse->constraintName.n = 0;}
162323 break;
162324 case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
162325 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy562,yymsp[0].minor.yy64,yymsp[-2].minor.yy64,0);}
162326 break;
162327 case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */
162328 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy562,yymsp[0].minor.yy64,0,0,0,0,
162329 SQLITE_IDXTYPE_UNIQUE);}
162330 break;
162331 case 70: /* tcons ::= CHECK LP expr RP onconf */
162332 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy626,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
162333 break;
162334 case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
162335 {
162336 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy562, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy562, yymsp[-1].minor.yy64);
162337 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy64);
162338 }
162339 break;
162340 case 73: /* onconf ::= */
162341 case 75: /* orconf ::= */ yytestcase(yyruleno==75);
162342 {yymsp[1].minor.yy64 = OE_Default;}
162343 break;
162344 case 74: /* onconf ::= ON CONFLICT resolvetype */
162345 {yymsp[-2].minor.yy64 = yymsp[0].minor.yy64;}
162346 break;
162347 case 77: /* resolvetype ::= IGNORE */
162348 {yymsp[0].minor.yy64 = OE_Ignore;}
162349 break;
162350 case 78: /* resolvetype ::= REPLACE */
162351 case 172: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==172);
162352 {yymsp[0].minor.yy64 = OE_Replace;}
162353 break;
162354 case 79: /* cmd ::= DROP TABLE ifexists fullname */
162355 {
162356 sqlite3DropTable(pParse, yymsp[0].minor.yy607, 0, yymsp[-1].minor.yy64);
162357 }
162358 break;
162359 case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
162360 {
162361 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);
162362 }
162363 break;
162364 case 83: /* cmd ::= DROP VIEW ifexists fullname */
162365 {
162366 sqlite3DropTable(pParse, yymsp[0].minor.yy607, 1, yymsp[-1].minor.yy64);
162367 }
162368 break;
162369 case 84: /* cmd ::= select */
162370 {
162371 SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
162372 sqlite3Select(pParse, yymsp[0].minor.yy303, &dest);
162373 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
162374 }
162375 break;
162376 case 85: /* select ::= WITH wqlist selectnowith */
162377 {yymsp[-2].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
162378 break;
162379 case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */
162380 {yymsp[-3].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
162381 break;
162382 case 87: /* select ::= selectnowith */
162383 {
162384 Select *p = yymsp[0].minor.yy303;
162385 if( p ){
162386 parserDoubleLinkSelect(pParse, p);
162387 }
162388 yymsp[0].minor.yy303 = p; /*A-overwrites-X*/
162389 }
162390 break;
162391 case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */
162392 {
162393 Select *pRhs = yymsp[0].minor.yy303;
162394 Select *pLhs = yymsp[-2].minor.yy303;
162395 if( pRhs && pRhs->pPrior ){
162396 SrcList *pFrom;
162397 Token x;
162398 x.n = 0;
162399 parserDoubleLinkSelect(pParse, pRhs);
162400 pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
162401 pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
162402 }
162403 if( pRhs ){
162404 pRhs->op = (u8)yymsp[-1].minor.yy64;
162405 pRhs->pPrior = pLhs;
162406 if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
162407 pRhs->selFlags &= ~SF_MultiValue;
162408 if( yymsp[-1].minor.yy64!=TK_ALL ) pParse->hasCompound = 1;
162409 }else{
162410 sqlite3SelectDelete(pParse->db, pLhs);
162411 }
162412 yymsp[-2].minor.yy303 = pRhs;
162413 }
162414 break;
162415 case 89: /* multiselect_op ::= UNION */
162416 case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91);
162417 {yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-OP*/}
162418 break;
162419 case 90: /* multiselect_op ::= UNION ALL */
162420 {yymsp[-1].minor.yy64 = TK_ALL;}
162421 break;
162422 case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
162423 {
162424 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);
162425 }
162426 break;
162427 case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
162428 {
162429 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);
162430 if( yymsp[-9].minor.yy303 ){
162431 yymsp[-9].minor.yy303->pWinDefn = yymsp[-2].minor.yy375;
162432 }else{
162433 sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy375);
162434 }
162435 }
162436 break;
162437 case 94: /* values ::= VALUES LP nexprlist RP */
162438 {
162439 yymsp[-3].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values,0);
162440 }
162441 break;
162442 case 95: /* values ::= values COMMA LP nexprlist RP */
162443 {
162444 Select *pRight, *pLeft = yymsp[-4].minor.yy303;
162445 pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values|SF_MultiValue,0);
162446 if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
162447 if( pRight ){
162448 pRight->op = TK_ALL;
162449 pRight->pPrior = pLeft;
162450 yymsp[-4].minor.yy303 = pRight;
162451 }else{
162452 yymsp[-4].minor.yy303 = pLeft;
162453 }
162454 }
162455 break;
162456 case 96: /* distinct ::= DISTINCT */
162457 {yymsp[0].minor.yy64 = SF_Distinct;}
162458 break;
162459 case 97: /* distinct ::= ALL */
162460 {yymsp[0].minor.yy64 = SF_All;}
162461 break;
162462 case 99: /* sclp ::= */
162463 case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132);
162464 case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142);
162465 case 229: /* exprlist ::= */ yytestcase(yyruleno==229);
162466 case 232: /* paren_exprlist ::= */ yytestcase(yyruleno==232);
162467 case 237: /* eidlist_opt ::= */ yytestcase(yyruleno==237);
162468 {yymsp[1].minor.yy562 = 0;}
162469 break;
162470 case 100: /* selcollist ::= sclp scanpt expr scanpt as */
162471 {
162472 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
162473 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[0].minor.yy0, 1);
162474 sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy562,yymsp[-3].minor.yy600,yymsp[-1].minor.yy600);
162475 }
162476 break;
162477 case 101: /* selcollist ::= sclp scanpt STAR */
162478 {
162479 Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
162480 yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy562, p);
162481 }
162482 break;
162483 case 102: /* selcollist ::= sclp scanpt nm DOT STAR */
162484 {
162485 Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
162486 Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
162487 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
162488 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, pDot);
162489 }
162490 break;
162491 case 103: /* as ::= AS nm */
162492 case 114: /* dbnm ::= DOT nm */ yytestcase(yyruleno==114);
162493 case 253: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==253);
162494 case 254: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
162495 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
162496 break;
162497 case 105: /* from ::= */
162498 case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108);
162499 {yymsp[1].minor.yy607 = 0;}
162500 break;
162501 case 106: /* from ::= FROM seltablist */
162502 {
162503 yymsp[-1].minor.yy607 = yymsp[0].minor.yy607;
162504 sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy607);
162505 }
162506 break;
162507 case 107: /* stl_prefix ::= seltablist joinop */
162508 {
162509 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;
162510 }
162511 break;
162512 case 109: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
162513 {
162514 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);
162515 sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy607, &yymsp[-2].minor.yy0);
162516 }
162517 break;
162518 case 110: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
162519 {
162520 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);
162521 sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy607, yymsp[-4].minor.yy562);
162522 }
162523 break;
162524 case 111: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
162525 {
162526 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);
162527 }
162528 break;
162529 case 112: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
162530 {
162531 if( yymsp[-6].minor.yy607==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy626==0 && yymsp[0].minor.yy240==0 ){
162532 yymsp[-6].minor.yy607 = yymsp[-4].minor.yy607;
162533 }else if( yymsp[-4].minor.yy607->nSrc==1 ){
162534 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);
162535 if( yymsp[-6].minor.yy607 ){
162536 SrcItem *pNew = &yymsp[-6].minor.yy607->a[yymsp[-6].minor.yy607->nSrc-1];
162537 SrcItem *pOld = yymsp[-4].minor.yy607->a;
162538 pNew->zName = pOld->zName;
162539 pNew->zDatabase = pOld->zDatabase;
162540 pNew->pSelect = pOld->pSelect;
162541 if( pOld->fg.isTabFunc ){
162542 pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -162225,1008 +162545,1009 @@
162545 pNew->fg.isTabFunc = 1;
162546 }
162547 pOld->zName = pOld->zDatabase = 0;
162548 pOld->pSelect = 0;
162549 }
162550 sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy607);
162551 }else{
162552 Select *pSubquery;
162553 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy607);
162554 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy607,0,0,0,0,SF_NestedFrom,0);
162555 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);
162556 }
162557 }
162558 break;
162559 case 113: /* dbnm ::= */
162560 case 127: /* indexed_opt ::= */ yytestcase(yyruleno==127);
162561 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
162562 break;
162563 case 115: /* fullname ::= nm */
162564 {
162565 yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
162566 if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
162567 }
162568 yymsp[0].minor.yy607 = yylhsminor.yy607;
162569 break;
162570 case 116: /* fullname ::= nm DOT nm */
162571 {
162572 yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
162573 if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
162574 }
162575 yymsp[-2].minor.yy607 = yylhsminor.yy607;
162576 break;
162577 case 117: /* xfullname ::= nm */
162578 {yymsp[0].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
162579 break;
162580 case 118: /* xfullname ::= nm DOT nm */
162581 {yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
162582 break;
162583 case 119: /* xfullname ::= nm DOT nm AS nm */
162584 {
162585 yymsp[-4].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
162586 if( yymsp[-4].minor.yy607 ) yymsp[-4].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
162587 }
162588 break;
162589 case 120: /* xfullname ::= nm AS nm */
162590 {
162591 yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
162592 if( yymsp[-2].minor.yy607 ) yymsp[-2].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
162593 }
162594 break;
162595 case 121: /* joinop ::= COMMA|JOIN */
162596 { yymsp[0].minor.yy64 = JT_INNER; }
162597 break;
162598 case 122: /* joinop ::= JOIN_KW JOIN */
162599 {yymsp[-1].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
162600 break;
162601 case 123: /* joinop ::= JOIN_KW nm JOIN */
162602 {yymsp[-2].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
162603 break;
162604 case 124: /* joinop ::= JOIN_KW nm nm JOIN */
162605 {yymsp[-3].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
162606 break;
162607 case 125: /* on_opt ::= ON expr */
162608 case 145: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==145);
162609 case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
162610 case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
162611 case 225: /* case_else ::= ELSE expr */ yytestcase(yyruleno==225);
162612 case 246: /* vinto ::= INTO expr */ yytestcase(yyruleno==246);
162613 {yymsp[-1].minor.yy626 = yymsp[0].minor.yy626;}
162614 break;
162615 case 126: /* on_opt ::= */
162616 case 144: /* having_opt ::= */ yytestcase(yyruleno==144);
162617 case 146: /* limit_opt ::= */ yytestcase(yyruleno==146);
162618 case 151: /* where_opt ::= */ yytestcase(yyruleno==151);
162619 case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153);
162620 case 226: /* case_else ::= */ yytestcase(yyruleno==226);
162621 case 228: /* case_operand ::= */ yytestcase(yyruleno==228);
162622 case 247: /* vinto ::= */ yytestcase(yyruleno==247);
162623 {yymsp[1].minor.yy626 = 0;}
162624 break;
162625 case 128: /* indexed_opt ::= INDEXED BY nm */
162626 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
162627 break;
162628 case 129: /* indexed_opt ::= NOT INDEXED */
162629 {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
162630 break;
162631 case 130: /* using_opt ::= USING LP idlist RP */
162632 {yymsp[-3].minor.yy240 = yymsp[-1].minor.yy240;}
162633 break;
162634 case 131: /* using_opt ::= */
162635 case 173: /* idlist_opt ::= */ yytestcase(yyruleno==173);
162636 {yymsp[1].minor.yy240 = 0;}
162637 break;
162638 case 133: /* orderby_opt ::= ORDER BY sortlist */
162639 case 143: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==143);
162640 {yymsp[-2].minor.yy562 = yymsp[0].minor.yy562;}
162641 break;
162642 case 134: /* sortlist ::= sortlist COMMA expr sortorder nulls */
162643 {
162644 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562,yymsp[-2].minor.yy626);
162645 sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
162646 }
162647 break;
162648 case 135: /* sortlist ::= expr sortorder nulls */
162649 {
162650 yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy626); /*A-overwrites-Y*/
162651 sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
162652 }
162653 break;
162654 case 136: /* sortorder ::= ASC */
162655 {yymsp[0].minor.yy64 = SQLITE_SO_ASC;}
162656 break;
162657 case 137: /* sortorder ::= DESC */
162658 {yymsp[0].minor.yy64 = SQLITE_SO_DESC;}
162659 break;
162660 case 138: /* sortorder ::= */
162661 case 141: /* nulls ::= */ yytestcase(yyruleno==141);
162662 {yymsp[1].minor.yy64 = SQLITE_SO_UNDEFINED;}
162663 break;
162664 case 139: /* nulls ::= NULLS FIRST */
162665 {yymsp[-1].minor.yy64 = SQLITE_SO_ASC;}
162666 break;
162667 case 140: /* nulls ::= NULLS LAST */
162668 {yymsp[-1].minor.yy64 = SQLITE_SO_DESC;}
162669 break;
162670 case 147: /* limit_opt ::= LIMIT expr */
162671 {yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,0);}
162672 break;
162673 case 148: /* limit_opt ::= LIMIT expr OFFSET expr */
162674 {yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
162675 break;
162676 case 149: /* limit_opt ::= LIMIT expr COMMA expr */
162677 {yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,yymsp[-2].minor.yy626);}
162678 break;
162679 case 150: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
162680 {
162681 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy607, &yymsp[-1].minor.yy0);
162682 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy607,yymsp[0].minor.yy626,0,0);
162683 }
162684 break;
162685 case 155: /* where_opt_ret ::= RETURNING selcollist */
162686 {sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-1].minor.yy626 = 0;}
162687 break;
162688 case 156: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
162689 {sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-3].minor.yy626 = yymsp[-2].minor.yy626;}
162690 break;
162691 case 157: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
162692 {
162693 sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy607, &yymsp[-4].minor.yy0);
162694 sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy562,"set list");
162695 yymsp[-5].minor.yy607 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy607, yymsp[-1].minor.yy607);
162696 sqlite3Update(pParse,yymsp[-5].minor.yy607,yymsp[-2].minor.yy562,yymsp[0].minor.yy626,yymsp[-6].minor.yy64,0,0,0);
162697 }
162698 break;
162699 case 158: /* setlist ::= setlist COMMA nm EQ expr */
162700 {
162701 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
162702 sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, 1);
162703 }
162704 break;
162705 case 159: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
162706 {
162707 yymsp[-6].minor.yy562 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy562, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
162708 }
162709 break;
162710 case 160: /* setlist ::= nm EQ expr */
162711 {
162712 yylhsminor.yy562 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy626);
162713 sqlite3ExprListSetName(pParse, yylhsminor.yy562, &yymsp[-2].minor.yy0, 1);
162714 }
162715 yymsp[-2].minor.yy562 = yylhsminor.yy562;
162716 break;
162717 case 161: /* setlist ::= LP idlist RP EQ expr */
162718 {
162719 yymsp[-4].minor.yy562 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
162720 }
162721 break;
162722 case 162: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
162723 {
162724 sqlite3Insert(pParse, yymsp[-3].minor.yy607, yymsp[-1].minor.yy303, yymsp[-2].minor.yy240, yymsp[-5].minor.yy64, yymsp[0].minor.yy138);
162725 }
162726 break;
162727 case 163: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
162728 {
162729 sqlite3Insert(pParse, yymsp[-4].minor.yy607, 0, yymsp[-3].minor.yy240, yymsp[-6].minor.yy64, 0);
162730 }
162731 break;
162732 case 164: /* upsert ::= */
162733 { yymsp[1].minor.yy138 = 0; }
162734 break;
162735 case 165: /* upsert ::= RETURNING selcollist */
162736 { yymsp[-1].minor.yy138 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy562); }
162737 break;
162738 case 166: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
162739 { 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);}
162740 break;
162741 case 167: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
162742 { yymsp[-8].minor.yy138 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy562,yymsp[-3].minor.yy626,0,0,yymsp[0].minor.yy138); }
162743 break;
162744 case 168: /* upsert ::= ON CONFLICT DO NOTHING returning */
162745 { yymsp[-4].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
162746 break;
162747 case 169: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
162748 { yymsp[-7].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626,0);}
162749 break;
162750 case 170: /* returning ::= RETURNING selcollist */
162751 {sqlite3AddReturning(pParse,yymsp[0].minor.yy562);}
162752 break;
162753 case 174: /* idlist_opt ::= LP idlist RP */
162754 {yymsp[-2].minor.yy240 = yymsp[-1].minor.yy240;}
162755 break;
162756 case 175: /* idlist ::= idlist COMMA nm */
162757 {yymsp[-2].minor.yy240 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy240,&yymsp[0].minor.yy0);}
162758 break;
162759 case 176: /* idlist ::= nm */
162760 {yymsp[0].minor.yy240 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
162761 break;
162762 case 177: /* expr ::= LP expr RP */
162763 {yymsp[-2].minor.yy626 = yymsp[-1].minor.yy626;}
162764 break;
162765 case 178: /* expr ::= ID|INDEXED */
162766 case 179: /* expr ::= JOIN_KW */ yytestcase(yyruleno==179);
162767 {yymsp[0].minor.yy626=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
162768 break;
162769 case 180: /* expr ::= nm DOT nm */
162770 {
162771 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
162772 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
162773 if( IN_RENAME_OBJECT ){
162774 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
162775 sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
162776 }
162777 yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
162778 }
162779 yymsp[-2].minor.yy626 = yylhsminor.yy626;
162780 break;
162781 case 181: /* expr ::= nm DOT nm DOT nm */
162782 {
162783 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
162784 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
162785 Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
162786 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
162787 if( IN_RENAME_OBJECT ){
162788 sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
162789 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
162790 }
162791 yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
162792 }
162793 yymsp[-4].minor.yy626 = yylhsminor.yy626;
162794 break;
162795 case 182: /* term ::= NULL|FLOAT|BLOB */
162796 case 183: /* term ::= STRING */ yytestcase(yyruleno==183);
162797 {yymsp[0].minor.yy626=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
162798 break;
162799 case 184: /* term ::= INTEGER */
162800 {
162801 yylhsminor.yy626 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
162802 }
162803 yymsp[0].minor.yy626 = yylhsminor.yy626;
162804 break;
162805 case 185: /* expr ::= VARIABLE */
162806 {
162807 if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
162808 u32 n = yymsp[0].minor.yy0.n;
162809 yymsp[0].minor.yy626 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
162810 sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy626, n);
162811 }else{
162812 /* When doing a nested parse, one can include terms in an expression
162813 ** that look like this: #1 #2 ... These terms refer to registers
162814 ** in the virtual machine. #N is the N-th register. */
162815 Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
162816 assert( t.n>=2 );
162817 if( pParse->nested==0 ){
162818 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
162819 yymsp[0].minor.yy626 = 0;
162820 }else{
162821 yymsp[0].minor.yy626 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
162822 if( yymsp[0].minor.yy626 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy626->iTable);
162823 }
162824 }
162825 }
162826 break;
162827 case 186: /* expr ::= expr COLLATE ID|STRING */
162828 {
162829 yymsp[-2].minor.yy626 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy626, &yymsp[0].minor.yy0, 1);
162830 }
162831 break;
162832 case 187: /* expr ::= CAST LP expr AS typetoken RP */
162833 {
162834 yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
162835 sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy626, yymsp[-3].minor.yy626, 0);
162836 }
162837 break;
162838 case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP */
162839 {
162840 yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy64);
162841 }
162842 yymsp[-4].minor.yy626 = yylhsminor.yy626;
162843 break;
162844 case 189: /* expr ::= ID|INDEXED LP STAR RP */
162845 {
162846 yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
162847 }
162848 yymsp[-3].minor.yy626 = yylhsminor.yy626;
162849 break;
162850 case 190: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
162851 {
162852 yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy562, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy64);
162853 sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
162854 }
162855 yymsp[-5].minor.yy626 = yylhsminor.yy626;
162856 break;
162857 case 191: /* expr ::= ID|INDEXED LP STAR RP filter_over */
162858 {
162859 yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
162860 sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
162861 }
162862 yymsp[-4].minor.yy626 = yylhsminor.yy626;
162863 break;
162864 case 192: /* term ::= CTIME_KW */
162865 {
162866 yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
162867 }
162868 yymsp[0].minor.yy626 = yylhsminor.yy626;
162869 break;
162870 case 193: /* expr ::= LP nexprlist COMMA expr RP */
162871 {
162872 ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy562, yymsp[-1].minor.yy626);
162873 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
162874 if( yymsp[-4].minor.yy626 ){
162875 yymsp[-4].minor.yy626->x.pList = pList;
162876 if( ALWAYS(pList->nExpr) ){
162877 yymsp[-4].minor.yy626->flags |= pList->a[0].pExpr->flags & EP_Propagate;
162878 }
162879 }else{
162880 sqlite3ExprListDelete(pParse->db, pList);
162881 }
162882 }
162883 break;
162884 case 194: /* expr ::= expr AND expr */
162885 {yymsp[-2].minor.yy626=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
162886 break;
162887 case 195: /* expr ::= expr OR expr */
162888 case 196: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==196);
162889 case 197: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==197);
162890 case 198: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==198);
162891 case 199: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==199);
162892 case 200: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==200);
162893 case 201: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==201);
162894 {yymsp[-2].minor.yy626=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
162895 break;
162896 case 202: /* likeop ::= NOT LIKE_KW|MATCH */
162897 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
162898 break;
162899 case 203: /* expr ::= expr likeop expr */
162900 {
162901 ExprList *pList;
162902 int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
162903 yymsp[-1].minor.yy0.n &= 0x7fffffff;
162904 pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy626);
162905 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy626);
162906 yymsp[-2].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
162907 if( bNot ) yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy626, 0);
162908 if( yymsp[-2].minor.yy626 ) yymsp[-2].minor.yy626->flags |= EP_InfixFunc;
162909 }
162910 break;
162911 case 204: /* expr ::= expr likeop expr ESCAPE expr */
162912 {
162913 ExprList *pList;
162914 int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
162915 yymsp[-3].minor.yy0.n &= 0x7fffffff;
162916 pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
162917 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy626);
162918 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
162919 yymsp[-4].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
162920 if( bNot ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
162921 if( yymsp[-4].minor.yy626 ) yymsp[-4].minor.yy626->flags |= EP_InfixFunc;
162922 }
162923 break;
162924 case 205: /* expr ::= expr ISNULL|NOTNULL */
162925 {yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy626,0);}
162926 break;
162927 case 206: /* expr ::= expr NOT NULL */
162928 {yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy626,0);}
162929 break;
162930 case 207: /* expr ::= expr IS expr */
162931 {
162932 yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);
162933 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-2].minor.yy626, TK_ISNULL);
162934 }
162935 break;
162936 case 208: /* expr ::= expr IS NOT expr */
162937 {
162938 yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy626,yymsp[0].minor.yy626);
162939 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-3].minor.yy626, TK_NOTNULL);
162940 }
162941 break;
162942 case 209: /* expr ::= NOT expr */
162943 case 210: /* expr ::= BITNOT expr */ yytestcase(yyruleno==210);
162944 {yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy626, 0);/*A-overwrites-B*/}
162945 break;
162946 case 211: /* expr ::= PLUS|MINUS expr */
162947 {
162948 yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy626, 0);
162949 /*A-overwrites-B*/
162950 }
162951 break;
162952 case 212: /* between_op ::= BETWEEN */
162953 case 215: /* in_op ::= IN */ yytestcase(yyruleno==215);
162954 {yymsp[0].minor.yy64 = 0;}
162955 break;
162956 case 214: /* expr ::= expr between_op expr AND expr */
162957 {
162958 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
162959 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
162960 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy626, 0);
162961 if( yymsp[-4].minor.yy626 ){
162962 yymsp[-4].minor.yy626->x.pList = pList;
162963 }else{
162964 sqlite3ExprListDelete(pParse->db, pList);
162965 }
162966 if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
162967 }
162968 break;
162969 case 217: /* expr ::= expr in_op LP exprlist RP */
162970 {
162971 if( yymsp[-1].minor.yy562==0 ){
162972 /* Expressions of the form
162973 **
162974 ** expr1 IN ()
162975 ** expr1 NOT IN ()
162976 **
162977 ** simplify to constants 0 (false) and 1 (true), respectively,
162978 ** regardless of the value of expr1.
162979 */
162980 sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy626);
162981 yymsp[-4].minor.yy626 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy64 ? "1" : "0");
162982 }else{
162983 Expr *pRHS = yymsp[-1].minor.yy562->a[0].pExpr;
162984 if( yymsp[-1].minor.yy562->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy626->op!=TK_VECTOR ){
162985 yymsp[-1].minor.yy562->a[0].pExpr = 0;
162986 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
162987 pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
162988 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy626, pRHS);
162989 }else{
162990 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
162991 if( yymsp[-4].minor.yy626==0 ){
162992 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
162993 }else if( yymsp[-4].minor.yy626->pLeft->op==TK_VECTOR ){
162994 int nExpr = yymsp[-4].minor.yy626->pLeft->x.pList->nExpr;
162995 Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy562);
162996 if( pSelectRHS ){
162997 parserDoubleLinkSelect(pParse, pSelectRHS);
162998 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelectRHS);
162999 }
163000 }else{
163001 yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy562;
163002 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
163003 }
163004 }
163005 if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
163006 }
163007 }
163008 break;
163009 case 218: /* expr ::= LP select RP */
163010 {
163011 yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
163012 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy626, yymsp[-1].minor.yy303);
163013 }
163014 break;
163015 case 219: /* expr ::= expr in_op LP select RP */
163016 {
163017 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
163018 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, yymsp[-1].minor.yy303);
163019 if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
163020 }
163021 break;
163022 case 220: /* expr ::= expr in_op nm dbnm paren_exprlist */
163023 {
163024 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
163025 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
163026 if( yymsp[0].minor.yy562 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy562);
163027 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
163028 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelect);
163029 if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
163030 }
163031 break;
163032 case 221: /* expr ::= EXISTS LP select RP */
163033 {
163034 Expr *p;
163035 p = yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
163036 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy303);
163037 }
163038 break;
163039 case 222: /* expr ::= CASE case_operand case_exprlist case_else END */
163040 {
163041 yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy626, 0);
163042 if( yymsp[-4].minor.yy626 ){
163043 yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy626 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626) : yymsp[-2].minor.yy562;
163044 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
163045 }else{
163046 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy562);
163047 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
163048 }
163049 }
163050 break;
163051 case 223: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
163052 {
163053 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
163054 yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
163055 }
163056 break;
163057 case 224: /* case_exprlist ::= WHEN expr THEN expr */
163058 {
163059 yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
163060 yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy562, yymsp[0].minor.yy626);
163061 }
163062 break;
163063 case 227: /* case_operand ::= expr */
163064 {yymsp[0].minor.yy626 = yymsp[0].minor.yy626; /*A-overwrites-X*/}
163065 break;
163066 case 230: /* nexprlist ::= nexprlist COMMA expr */
163067 {yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[0].minor.yy626);}
163068 break;
163069 case 231: /* nexprlist ::= expr */
163070 {yymsp[0].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy626); /*A-overwrites-Y*/}
163071 break;
163072 case 233: /* paren_exprlist ::= LP exprlist RP */
163073 case 238: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==238);
163074 {yymsp[-2].minor.yy562 = yymsp[-1].minor.yy562;}
163075 break;
163076 case 234: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
163077 {
163078 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
163079 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy562, yymsp[-10].minor.yy64,
163080 &yymsp[-11].minor.yy0, yymsp[0].minor.yy626, SQLITE_SO_ASC, yymsp[-8].minor.yy64, SQLITE_IDXTYPE_APPDEF);
163081 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
163082 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
163083 }
163084 }
163085 break;
163086 case 235: /* uniqueflag ::= UNIQUE */
163087 case 277: /* raisetype ::= ABORT */ yytestcase(yyruleno==277);
163088 {yymsp[0].minor.yy64 = OE_Abort;}
163089 break;
163090 case 236: /* uniqueflag ::= */
163091 {yymsp[1].minor.yy64 = OE_None;}
163092 break;
163093 case 239: /* eidlist ::= eidlist COMMA nm collate sortorder */
163094 {
163095 yymsp[-4].minor.yy562 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64);
163096 }
163097 break;
163098 case 240: /* eidlist ::= nm collate sortorder */
163099 {
163100 yymsp[-2].minor.yy562 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64); /*A-overwrites-Y*/
163101 }
163102 break;
163103 case 243: /* cmd ::= DROP INDEX ifexists fullname */
163104 {sqlite3DropIndex(pParse, yymsp[0].minor.yy607, yymsp[-1].minor.yy64);}
163105 break;
163106 case 244: /* cmd ::= VACUUM vinto */
163107 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy626);}
163108 break;
163109 case 245: /* cmd ::= VACUUM nm vinto */
163110 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy626);}
163111 break;
163112 case 248: /* cmd ::= PRAGMA nm dbnm */
163113 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
163114 break;
163115 case 249: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
163116 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
163117 break;
163118 case 250: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
163119 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
163120 break;
163121 case 251: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
163122 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
163123 break;
163124 case 252: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
163125 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
163126 break;
163127 case 255: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
163128 {
163129 Token all;
163130 all.z = yymsp[-3].minor.yy0.z;
163131 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
163132 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy95, &all);
163133 }
163134 break;
163135 case 256: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
163136 {
163137 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);
163138 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
163139 }
163140 break;
163141 case 257: /* trigger_time ::= BEFORE|AFTER */
163142 { yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/ }
163143 break;
163144 case 258: /* trigger_time ::= INSTEAD OF */
163145 { yymsp[-1].minor.yy64 = TK_INSTEAD;}
163146 break;
163147 case 259: /* trigger_time ::= */
163148 { yymsp[1].minor.yy64 = TK_BEFORE; }
163149 break;
163150 case 260: /* trigger_event ::= DELETE|INSERT */
163151 case 261: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==261);
163152 {yymsp[0].minor.yy570.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy570.b = 0;}
163153 break;
163154 case 262: /* trigger_event ::= UPDATE OF idlist */
163155 {yymsp[-2].minor.yy570.a = TK_UPDATE; yymsp[-2].minor.yy570.b = yymsp[0].minor.yy240;}
163156 break;
163157 case 263: /* when_clause ::= */
163158 case 282: /* key_opt ::= */ yytestcase(yyruleno==282);
163159 { yymsp[1].minor.yy626 = 0; }
163160 break;
163161 case 264: /* when_clause ::= WHEN expr */
163162 case 283: /* key_opt ::= KEY expr */ yytestcase(yyruleno==283);
163163 { yymsp[-1].minor.yy626 = yymsp[0].minor.yy626; }
163164 break;
163165 case 265: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
163166 {
163167 assert( yymsp[-2].minor.yy95!=0 );
163168 yymsp[-2].minor.yy95->pLast->pNext = yymsp[-1].minor.yy95;
163169 yymsp[-2].minor.yy95->pLast = yymsp[-1].minor.yy95;
163170 }
163171 break;
163172 case 266: /* trigger_cmd_list ::= trigger_cmd SEMI */
163173 {
163174 assert( yymsp[-1].minor.yy95!=0 );
163175 yymsp[-1].minor.yy95->pLast = yymsp[-1].minor.yy95;
163176 }
163177 break;
163178 case 267: /* trnm ::= nm DOT nm */
163179 {
163180 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
163181 sqlite3ErrorMsg(pParse,
163182 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
163183 "statements within triggers");
163184 }
163185 break;
163186 case 268: /* tridxby ::= INDEXED BY nm */
163187 {
163188 sqlite3ErrorMsg(pParse,
163189 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
163190 "within triggers");
163191 }
163192 break;
163193 case 269: /* tridxby ::= NOT INDEXED */
163194 {
163195 sqlite3ErrorMsg(pParse,
163196 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
163197 "within triggers");
163198 }
163199 break;
163200 case 270: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
163201 {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);}
163202 yymsp[-8].minor.yy95 = yylhsminor.yy95;
163203 break;
163204 case 271: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
163205 {
163206 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*/
163207 }
163208 yymsp[-7].minor.yy95 = yylhsminor.yy95;
163209 break;
163210 case 272: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
163211 {yylhsminor.yy95 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy626, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy600);}
163212 yymsp[-5].minor.yy95 = yylhsminor.yy95;
163213 break;
163214 case 273: /* trigger_cmd ::= scanpt select scanpt */
163215 {yylhsminor.yy95 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy303, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); /*yylhsminor.yy95-overwrites-yymsp[-1].minor.yy303*/}
163216 yymsp[-2].minor.yy95 = yylhsminor.yy95;
163217 break;
163218 case 274: /* expr ::= RAISE LP IGNORE RP */
163219 {
163220 yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
163221 if( yymsp[-3].minor.yy626 ){
163222 yymsp[-3].minor.yy626->affExpr = OE_Ignore;
163223 }
163224 }
163225 break;
163226 case 275: /* expr ::= RAISE LP raisetype COMMA nm RP */
163227 {
163228 yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
163229 if( yymsp[-5].minor.yy626 ) {
163230 yymsp[-5].minor.yy626->affExpr = (char)yymsp[-3].minor.yy64;
163231 }
163232 }
163233 break;
163234 case 276: /* raisetype ::= ROLLBACK */
163235 {yymsp[0].minor.yy64 = OE_Rollback;}
163236 break;
163237 case 278: /* raisetype ::= FAIL */
163238 {yymsp[0].minor.yy64 = OE_Fail;}
163239 break;
163240 case 279: /* cmd ::= DROP TRIGGER ifexists fullname */
163241 {
163242 sqlite3DropTrigger(pParse,yymsp[0].minor.yy607,yymsp[-1].minor.yy64);
163243 }
163244 break;
163245 case 280: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
163246 {
163247 sqlite3Attach(pParse, yymsp[-3].minor.yy626, yymsp[-1].minor.yy626, yymsp[0].minor.yy626);
163248 }
163249 break;
163250 case 281: /* cmd ::= DETACH database_kw_opt expr */
163251 {
163252 sqlite3Detach(pParse, yymsp[0].minor.yy626);
163253 }
163254 break;
163255 case 284: /* cmd ::= REINDEX */
163256 {sqlite3Reindex(pParse, 0, 0);}
163257 break;
163258 case 285: /* cmd ::= REINDEX nm dbnm */
163259 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
163260 break;
163261 case 286: /* cmd ::= ANALYZE */
163262 {sqlite3Analyze(pParse, 0, 0);}
163263 break;
163264 case 287: /* cmd ::= ANALYZE nm dbnm */
163265 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
163266 break;
163267 case 288: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
163268 {
163269 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy607,&yymsp[0].minor.yy0);
163270 }
163271 break;
163272 case 289: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
163273 {
163274 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
163275 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
163276 }
163277 break;
163278 case 290: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
163279 {
163280 sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy607, &yymsp[0].minor.yy0);
163281 }
163282 break;
163283 case 291: /* add_column_fullname ::= fullname */
163284 {
163285 disableLookaside(pParse);
163286 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy607);
163287 }
163288 break;
163289 case 292: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
163290 {
163291 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy607, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
163292 }
163293 break;
163294 case 293: /* cmd ::= create_vtab */
163295 {sqlite3VtabFinishParse(pParse,0);}
163296 break;
163297 case 294: /* cmd ::= create_vtab LP vtabarglist RP */
163298 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
163299 break;
163300 case 295: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
163301 {
163302 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy64);
163303 }
163304 break;
163305 case 296: /* vtabarg ::= */
163306 {sqlite3VtabArgInit(pParse);}
163307 break;
163308 case 297: /* vtabargtoken ::= ANY */
163309 case 298: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==298);
163310 case 299: /* lp ::= LP */ yytestcase(yyruleno==299);
163311 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
163312 break;
163313 case 300: /* with ::= WITH wqlist */
163314 case 301: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==301);
163315 { sqlite3WithPush(pParse, yymsp[0].minor.yy43, 1); }
163316 break;
163317 case 302: /* wqas ::= AS */
163318 {yymsp[0].minor.yy534 = M10d_Any;}
163319 break;
163320 case 303: /* wqas ::= AS MATERIALIZED */
163321 {yymsp[-1].minor.yy534 = M10d_Yes;}
163322 break;
163323 case 304: /* wqas ::= AS NOT MATERIALIZED */
163324 {yymsp[-2].minor.yy534 = M10d_No;}
163325 break;
163326 case 305: /* wqitem ::= nm eidlist_opt wqas LP select RP */
163327 {
163328 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*/
163329 }
163330 break;
163331 case 306: /* wqlist ::= wqitem */
163332 {
163333 yymsp[0].minor.yy43 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy255); /*A-overwrites-X*/
163334 }
163335 break;
163336 case 307: /* wqlist ::= wqlist COMMA wqitem */
163337 {
163338 yymsp[-2].minor.yy43 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy43, yymsp[0].minor.yy255);
163339 }
163340 break;
163341 case 308: /* windowdefn_list ::= windowdefn */
163342 { yylhsminor.yy375 = yymsp[0].minor.yy375; }
163343 yymsp[0].minor.yy375 = yylhsminor.yy375;
163344 break;
163345 case 309: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
163346 {
163347 assert( yymsp[0].minor.yy375!=0 );
163348 sqlite3WindowChain(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy375);
163349 yymsp[0].minor.yy375->pNextWin = yymsp[-2].minor.yy375;
163350 yylhsminor.yy375 = yymsp[0].minor.yy375;
163351 }
163352 yymsp[-2].minor.yy375 = yylhsminor.yy375;
163353 break;
163354 case 310: /* windowdefn ::= nm AS LP window RP */
163355 {
163356 if( ALWAYS(yymsp[-1].minor.yy375) ){
163357 yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
163358 }
163359 yylhsminor.yy375 = yymsp[-1].minor.yy375;
163360 }
163361 yymsp[-4].minor.yy375 = yylhsminor.yy375;
163362 break;
163363 case 311: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
163364 {
163365 yymsp[-4].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, 0);
163366 }
163367 break;
163368 case 312: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
163369 {
163370 yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, &yymsp[-5].minor.yy0);
163371 }
163372 yymsp[-5].minor.yy375 = yylhsminor.yy375;
163373 break;
163374 case 313: /* window ::= ORDER BY sortlist frame_opt */
163375 {
163376 yymsp[-3].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, 0);
163377 }
163378 break;
163379 case 314: /* window ::= nm ORDER BY sortlist frame_opt */
163380 {
163381 yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0);
163382 }
163383 yymsp[-4].minor.yy375 = yylhsminor.yy375;
163384 break;
163385 case 315: /* window ::= frame_opt */
163386 case 334: /* filter_over ::= over_clause */ yytestcase(yyruleno==334);
163387 {
163388 yylhsminor.yy375 = yymsp[0].minor.yy375;
163389 }
163390 yymsp[0].minor.yy375 = yylhsminor.yy375;
163391 break;
163392 case 316: /* window ::= nm frame_opt */
163393 {
163394 yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, 0, &yymsp[-1].minor.yy0);
163395 }
163396 yymsp[-1].minor.yy375 = yylhsminor.yy375;
163397 break;
163398 case 317: /* frame_opt ::= */
163399 {
163400 yymsp[1].minor.yy375 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
163401 }
163402 break;
163403 case 318: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
163404 {
163405 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);
163406 }
163407 yymsp[-2].minor.yy375 = yylhsminor.yy375;
163408 break;
163409 case 319: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
163410 {
163411 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);
163412 }
163413 yymsp[-5].minor.yy375 = yylhsminor.yy375;
163414 break;
163415 case 321: /* frame_bound_s ::= frame_bound */
163416 case 323: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==323);
163417 {yylhsminor.yy81 = yymsp[0].minor.yy81;}
163418 yymsp[0].minor.yy81 = yylhsminor.yy81;
163419 break;
163420 case 322: /* frame_bound_s ::= UNBOUNDED PRECEDING */
163421 case 324: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==324);
163422 case 326: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==326);
163423 {yylhsminor.yy81.eType = yymsp[-1].major; yylhsminor.yy81.pExpr = 0;}
163424 yymsp[-1].minor.yy81 = yylhsminor.yy81;
163425 break;
163426 case 325: /* frame_bound ::= expr PRECEDING|FOLLOWING */
163427 {yylhsminor.yy81.eType = yymsp[0].major; yylhsminor.yy81.pExpr = yymsp[-1].minor.yy626;}
163428 yymsp[-1].minor.yy81 = yylhsminor.yy81;
163429 break;
163430 case 327: /* frame_exclude_opt ::= */
163431 {yymsp[1].minor.yy534 = 0;}
163432 break;
163433 case 328: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
163434 {yymsp[-1].minor.yy534 = yymsp[0].minor.yy534;}
163435 break;
163436 case 329: /* frame_exclude ::= NO OTHERS */
163437 case 330: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==330);
163438 {yymsp[-1].minor.yy534 = yymsp[-1].major; /*A-overwrites-X*/}
163439 break;
163440 case 331: /* frame_exclude ::= GROUP|TIES */
163441 {yymsp[0].minor.yy534 = yymsp[0].major; /*A-overwrites-X*/}
163442 break;
163443 case 332: /* window_clause ::= WINDOW windowdefn_list */
163444 { yymsp[-1].minor.yy375 = yymsp[0].minor.yy375; }
163445 break;
163446 case 333: /* filter_over ::= filter_clause over_clause */
163447 {
163448 if( yymsp[0].minor.yy375 ){
163449 yymsp[0].minor.yy375->pFilter = yymsp[-1].minor.yy626;
163450 }else{
163451 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
163452 }
163453 yylhsminor.yy375 = yymsp[0].minor.yy375;
163454 }
163455 yymsp[-1].minor.yy375 = yylhsminor.yy375;
163456 break;
163457 case 335: /* filter_over ::= filter_clause */
163458 {
163459 yylhsminor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
163460 if( yylhsminor.yy375 ){
163461 yylhsminor.yy375->eFrmType = TK_FILTER;
163462 yylhsminor.yy375->pFilter = yymsp[0].minor.yy626;
163463 }else{
163464 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy626);
163465 }
163466 }
163467 yymsp[0].minor.yy375 = yylhsminor.yy375;
163468 break;
163469 case 336: /* over_clause ::= OVER LP window RP */
163470 {
163471 yymsp[-3].minor.yy375 = yymsp[-1].minor.yy375;
163472 assert( yymsp[-3].minor.yy375!=0 );
163473 }
163474 break;
163475 case 337: /* over_clause ::= OVER nm */
163476 {
163477 yymsp[-1].minor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
163478 if( yymsp[-1].minor.yy375 ){
163479 yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
163480 }
163481 }
163482 break;
163483 case 338: /* filter_clause ::= FILTER LP WHERE expr RP */
163484 { yymsp[-4].minor.yy626 = yymsp[-1].minor.yy626; }
163485 break;
163486 default:
163487 /* (339) input ::= cmdlist */ yytestcase(yyruleno==339);
163488 /* (340) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==340);
163489 /* (341) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=341);
163490 /* (342) ecmd ::= SEMI */ yytestcase(yyruleno==342);
163491 /* (343) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==343);
163492 /* (344) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=344);
163493 /* (345) trans_opt ::= */ yytestcase(yyruleno==345);
163494 /* (346) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==346);
163495 /* (347) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==347);
163496 /* (348) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==348);
163497 /* (349) savepoint_opt ::= */ yytestcase(yyruleno==349);
163498 /* (350) cmd ::= create_table create_table_args */ yytestcase(yyruleno==350);
163499 /* (351) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=351);
163500 /* (352) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==352);
163501 /* (353) columnlist ::= columnname carglist */ yytestcase(yyruleno==353);
163502 /* (354) nm ::= ID|INDEXED */ yytestcase(yyruleno==354);
163503 /* (355) nm ::= STRING */ yytestcase(yyruleno==355);
163504 /* (356) nm ::= JOIN_KW */ yytestcase(yyruleno==356);
163505 /* (357) typetoken ::= typename */ yytestcase(yyruleno==357);
163506 /* (358) typename ::= ID|STRING */ yytestcase(yyruleno==358);
163507 /* (359) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=359);
163508 /* (360) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
163509 /* (361) carglist ::= carglist ccons */ yytestcase(yyruleno==361);
163510 /* (362) carglist ::= */ yytestcase(yyruleno==362);
163511 /* (363) ccons ::= NULL onconf */ yytestcase(yyruleno==363);
163512 /* (364) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==364);
163513 /* (365) ccons ::= AS generated */ yytestcase(yyruleno==365);
163514 /* (366) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==366);
163515 /* (367) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==367);
163516 /* (368) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=368);
163517 /* (369) tconscomma ::= */ yytestcase(yyruleno==369);
163518 /* (370) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=370);
163519 /* (371) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=371);
163520 /* (372) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=372);
163521 /* (373) oneselect ::= values */ yytestcase(yyruleno==373);
163522 /* (374) sclp ::= selcollist COMMA */ yytestcase(yyruleno==374);
163523 /* (375) as ::= ID|STRING */ yytestcase(yyruleno==375);
163524 /* (376) returning ::= */ yytestcase(yyruleno==376);
163525 /* (377) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=377);
163526 /* (378) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==378);
163527 /* (379) exprlist ::= nexprlist */ yytestcase(yyruleno==379);
163528 /* (380) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=380);
163529 /* (381) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=381);
163530 /* (382) nmnum ::= ON */ yytestcase(yyruleno==382);
163531 /* (383) nmnum ::= DELETE */ yytestcase(yyruleno==383);
163532 /* (384) nmnum ::= DEFAULT */ yytestcase(yyruleno==384);
163533 /* (385) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==385);
163534 /* (386) foreach_clause ::= */ yytestcase(yyruleno==386);
163535 /* (387) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==387);
163536 /* (388) trnm ::= nm */ yytestcase(yyruleno==388);
163537 /* (389) tridxby ::= */ yytestcase(yyruleno==389);
163538 /* (390) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==390);
163539 /* (391) database_kw_opt ::= */ yytestcase(yyruleno==391);
163540 /* (392) kwcolumn_opt ::= */ yytestcase(yyruleno==392);
163541 /* (393) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==393);
163542 /* (394) vtabarglist ::= vtabarg */ yytestcase(yyruleno==394);
163543 /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==395);
163544 /* (396) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==396);
163545 /* (397) anylist ::= */ yytestcase(yyruleno==397);
163546 /* (398) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==398);
163547 /* (399) anylist ::= anylist ANY */ yytestcase(yyruleno==399);
163548 /* (400) with ::= */ yytestcase(yyruleno==400);
163549 break;
163550 /********** End reduce actions ************************************************/
163551 };
163552 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
163553 yygoto = yyRuleInfoLhs[yyruleno];
@@ -163479,18 +163800,17 @@
163800 }
163801 #endif
163802 yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
163803 yymajor = YYNOCODE;
163804 }else{
163805 while( yypParser->yytos > yypParser->yystack ){
163806 yyact = yy_find_reduce_action(yypParser->yytos->stateno,
163807 YYERRORSYMBOL);
163808 if( yyact<=YY_MAX_SHIFTREDUCE ) break;
 
163809 yy_pop_parser_stack(yypParser);
163810 }
163811 if( yypParser->yytos <= yypParser->yystack || yymajor==0 ){
163812 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
163813 yy_parse_failed(yypParser);
163814 #ifndef YYNOERRORRECOVERY
163815 yypParser->yyerrcnt = -1;
163816 #endif
@@ -166553,11 +166873,11 @@
166873 }
166874 #endif
166875
166876 /* Convert the connection into a zombie and then close it.
166877 */
166878 db->eOpenState = SQLITE_STATE_ZOMBIE;
166879 sqlite3LeaveMutexAndCloseZombie(db);
166880 return SQLITE_OK;
166881 }
166882
166883 /*
@@ -166617,11 +166937,11 @@
166937
166938 /* If there are outstanding sqlite3_stmt or sqlite3_backup objects
166939 ** or if the connection has not yet been closed by sqlite3_close_v2(),
166940 ** then just leave the mutex and return.
166941 */
166942 if( db->eOpenState!=SQLITE_STATE_ZOMBIE || connectionIsBusy(db) ){
166943 sqlite3_mutex_leave(db->mutex);
166944 return;
166945 }
166946
166947 /* If we reach this point, it means that the database connection has
@@ -166703,21 +167023,21 @@
167023 #if SQLITE_USER_AUTHENTICATION
167024 sqlite3_free(db->auth.zAuthUser);
167025 sqlite3_free(db->auth.zAuthPW);
167026 #endif
167027
167028 db->eOpenState = SQLITE_STATE_ERROR;
167029
167030 /* The temp-database schema is allocated differently from the other schema
167031 ** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()).
167032 ** So it needs to be freed here. Todo: Why not roll the temp schema into
167033 ** the same sqliteMalloc() as the one that allocates the database
167034 ** structure?
167035 */
167036 sqlite3DbFree(db, db->aDb[1].pSchema);
167037 sqlite3_mutex_leave(db->mutex);
167038 db->eOpenState = SQLITE_STATE_CLOSED;
167039 sqlite3_mutex_free(db->mutex);
167040 assert( sqlite3LookasideUsed(db,0)==0 );
167041 if( db->lookaside.bMalloced ){
167042 sqlite3_free(db->lookaside.pStart);
167043 }
@@ -167101,11 +167421,11 @@
167421 /*
167422 ** Cause any pending operation to stop at its earliest opportunity.
167423 */
167424 SQLITE_API void sqlite3_interrupt(sqlite3 *db){
167425 #ifdef SQLITE_ENABLE_API_ARMOR
167426 if( !sqlite3SafetyCheckOk(db) && (db==0 || db->eOpenState!=SQLITE_STATE_ZOMBIE) ){
167427 (void)SQLITE_MISUSE_BKPT;
167428 return;
167429 }
167430 #endif
167431 AtomicStore(&db->u1.isInterrupted, 1);
@@ -168504,11 +168824,11 @@
168824 }
168825 }
168826 sqlite3_mutex_enter(db->mutex);
168827 db->errMask = 0xff;
168828 db->nDb = 2;
168829 db->eOpenState = SQLITE_STATE_BUSY;
168830 db->aDb = db->aDbStatic;
168831 db->lookaside.bDisable = 1;
168832 db->lookaside.sz = 0;
168833
168834 assert( sizeof(db->aLimit)==sizeof(aHardLimit) );
@@ -168516,11 +168836,18 @@
168836 db->aLimit[SQLITE_LIMIT_WORKER_THREADS] = SQLITE_DEFAULT_WORKER_THREADS;
168837 db->autoCommit = 1;
168838 db->nextAutovac = -1;
168839 db->szMmap = sqlite3GlobalConfig.szMmap;
168840 db->nextPagesize = 0;
168841 #ifdef SQLITE_ENABLE_SORTER_MMAP
168842 /* Beginning with version 3.37.0, using the VFS xFetch() API to memory-map
168843 ** the temporary files used to do external sorts (see code in vdbesort.c)
168844 ** is disabled. It can still be used either by defining
168845 ** SQLITE_ENABLE_SORTER_MMAP at compile time or by using the
168846 ** SQLITE_TESTCTRL_SORTER_MMAP test-control at runtime. */
168847 db->nMaxSorterMmap = 0x7FFFFFFF;
168848 #endif
168849 db->flags |= SQLITE_ShortColNames
168850 | SQLITE_EnableTrigger
168851 | SQLITE_EnableView
168852 | SQLITE_CacheSpill
168853 #if !defined(SQLITE_TRUSTED_SCHEMA) || SQLITE_TRUSTED_SCHEMA+0!=0
@@ -168664,11 +168991,11 @@
168991 db->aDb[0].zDbSName = "main";
168992 db->aDb[0].safety_level = SQLITE_DEFAULT_SYNCHRONOUS+1;
168993 db->aDb[1].zDbSName = "temp";
168994 db->aDb[1].safety_level = PAGER_SYNCHRONOUS_OFF;
168995
168996 db->eOpenState = SQLITE_STATE_OPEN;
168997 if( db->mallocFailed ){
168998 goto opendb_out;
168999 }
169000
169001 /* Register all built-in functions, but do not attempt to read the
@@ -168731,11 +169058,11 @@
169058 assert( db!=0 || rc==SQLITE_NOMEM );
169059 if( rc==SQLITE_NOMEM ){
169060 sqlite3_close(db);
169061 db = 0;
169062 }else if( rc!=SQLITE_OK ){
169063 db->eOpenState = SQLITE_STATE_SICK;
169064 }
169065 *ppDb = db;
169066 #ifdef SQLITE_ENABLE_SQLLOG
169067 if( sqlite3GlobalConfig.xSqllog ){
169068 /* Opening a db handle. Fourth parameter is passed 0. */
@@ -215510,18 +215837,17 @@
215837 }
215838 #endif
215839 fts5yy_destructor(fts5yypParser, (fts5YYCODETYPE)fts5yymajor, &fts5yyminorunion);
215840 fts5yymajor = fts5YYNOCODE;
215841 }else{
215842 while( fts5yypParser->fts5yytos > fts5yypParser->fts5yystack ){
215843 fts5yyact = fts5yy_find_reduce_action(fts5yypParser->fts5yytos->stateno,
215844 fts5YYERRORSYMBOL);
215845 if( fts5yyact<=fts5YY_MAX_SHIFTREDUCE ) break;
 
215846 fts5yy_pop_parser_stack(fts5yypParser);
215847 }
215848 if( fts5yypParser->fts5yytos <= fts5yypParser->fts5yystack || fts5yymajor==0 ){
215849 fts5yy_destructor(fts5yypParser,(fts5YYCODETYPE)fts5yymajor,&fts5yyminorunion);
215850 fts5yy_parse_failed(fts5yypParser);
215851 #ifndef fts5YYNOERRORRECOVERY
215852 fts5yypParser->fts5yyerrcnt = -1;
215853 #endif
@@ -230849,11 +231175,11 @@
231175 int nArg, /* Number of args */
231176 sqlite3_value **apUnused /* Function arguments */
231177 ){
231178 assert( nArg==0 );
231179 UNUSED_PARAM2(nArg, apUnused);
231180 sqlite3_result_text(pCtx, "fts5: 2021-09-06 11:44:19 b3cfe23bec0b95ca673802526704200e2396df715fdded72aa71addd7f47e0e1", -1, SQLITE_TRANSIENT);
231181 }
231182
231183 /*
231184 ** Return true if zName is the extension on one of the shadow tables used
231185 ** by this module.
231186
+2 -1
--- src/sqlite3.h
+++ src/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.37.0"
150150
#define SQLITE_VERSION_NUMBER 3037000
151
-#define SQLITE_SOURCE_ID "2021-08-06 20:17:39 087b8b41c6ed76b55c11315e7e95679d67590be20ae21108b593d00bb7d1c57a"
151
+#define SQLITE_SOURCE_ID "2021-09-06 11:44:19 b3cfe23bec0b95ca673802526704200e2396df715fdded72aa71addd7f47e0e1"
152152
153153
/*
154154
** CAPI3REF: Run-Time Library Version Numbers
155155
** KEYWORDS: sqlite3_version sqlite3_sourceid
156156
**
@@ -559,10 +559,11 @@
559559
#define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8))
560560
#define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8))
561561
#define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
562562
#define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8))
563563
#define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8))
564
+#define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
564565
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
565566
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
566567
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
567568
#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
568569
#define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
569570
--- src/sqlite3.h
+++ src/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.37.0"
150 #define SQLITE_VERSION_NUMBER 3037000
151 #define SQLITE_SOURCE_ID "2021-08-06 20:17:39 087b8b41c6ed76b55c11315e7e95679d67590be20ae21108b593d00bb7d1c57a"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
@@ -559,10 +559,11 @@
559 #define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8))
560 #define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8))
561 #define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
562 #define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8))
563 #define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8))
 
564 #define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
565 #define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
566 #define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
567 #define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
568 #define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
569
--- src/sqlite3.h
+++ src/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.37.0"
150 #define SQLITE_VERSION_NUMBER 3037000
151 #define SQLITE_SOURCE_ID "2021-09-06 11:44:19 b3cfe23bec0b95ca673802526704200e2396df715fdded72aa71addd7f47e0e1"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
@@ -559,10 +559,11 @@
559 #define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8))
560 #define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8))
561 #define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
562 #define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8))
563 #define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8))
564 #define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
565 #define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
566 #define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
567 #define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
568 #define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
569 #define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
570

Keyboard Shortcuts

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