Fossil SCM

Bring in the latest SQLite 3.39.0 enhancements for testing.

drh 2022-05-16 11:55 trunk
Commit 8683664a453fb52e64b584c3522168aeaa9c51f6d93a405c14c60100c02a27c2
3 files changed +30 -31 +1469 -1461 +1 -1
+30 -31
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -12277,11 +12277,11 @@
1227712277
#define SHFLG_Lookaside 0x00000002 /* Lookaside memory is used */
1227812278
#define SHFLG_Backslash 0x00000004 /* The --backslash option is used */
1227912279
#define SHFLG_PreserveRowid 0x00000008 /* .dump preserves rowid values */
1228012280
#define SHFLG_Newlines 0x00000010 /* .dump --newline flag */
1228112281
#define SHFLG_CountChanges 0x00000020 /* .changes setting */
12282
-#define SHFLG_Echo 0x00000040 /* .echo or --echo setting */
12282
+#define SHFLG_Echo 0x00000040 /* .echo on/off, or --echo setting */
1228312283
#define SHFLG_HeaderSet 0x00000080 /* showHeader has been specified */
1228412284
#define SHFLG_DumpDataOnly 0x00000100 /* .dump show data only */
1228512285
#define SHFLG_DumpNoSys 0x00000200 /* .dump omits system tables */
1228612286
1228712287
/*
@@ -14906,15 +14906,10 @@
1490614906
if( pArg ){
1490714907
pArg->pStmt = pStmt;
1490814908
pArg->cnt = 0;
1490914909
}
1491014910
14911
- /* echo the sql statement if echo on */
14912
- if( pArg && ShellHasFlag(pArg, SHFLG_Echo) ){
14913
- utf8_printf(pArg->out, "%s\n", zStmtSql ? zStmtSql : zSql);
14914
- }
14915
-
1491614911
/* Show the EXPLAIN QUERY PLAN if .eqp is on */
1491714912
if( pArg && pArg->autoEQP && sqlite3_stmt_isexplain(pStmt)==0 ){
1491814913
sqlite3_stmt *pExplain;
1491914914
char *zEQP;
1492014915
int triggerEQP = 0;
@@ -19523,11 +19518,11 @@
1952319518
char *zLike = 0;
1952419519
char *zSql;
1952519520
int i;
1952619521
int savedShowHeader = p->showHeader;
1952719522
int savedShellFlags = p->shellFlgs;
19528
- ShellClearFlag(p,
19523
+ ShellClearFlag(p,
1952919524
SHFLG_PreserveRowid|SHFLG_Newlines|SHFLG_Echo
1953019525
|SHFLG_DumpDataOnly|SHFLG_DumpNoSys);
1953119526
for(i=1; i<nArg; i++){
1953219527
if( azArg[i][0]=='-' ){
1953319528
const char *z = azArg[i]+1;
@@ -19948,20 +19943,16 @@
1994819943
int useOutputMode = 1; /* Use output mode to determine separators */
1994919944
char *zCreate = 0; /* CREATE TABLE statement text */
1995019945
1995119946
failIfSafeMode(p, "cannot run .import in safe mode");
1995219947
memset(&sCtx, 0, sizeof(sCtx));
19953
- sCtx.z = sqlite3_malloc64(120);
19954
- if( sCtx.z==0 ){
19955
- import_cleanup(&sCtx);
19956
- shell_out_of_memory();
19957
- }
1995819948
if( p->mode==MODE_Ascii ){
1995919949
xRead = ascii_read_one_field;
1996019950
}else{
1996119951
xRead = csv_read_one_field;
1996219952
}
19953
+ rc = 1;
1996319954
for(i=1; i<nArg; i++){
1996419955
char *z = azArg[i];
1996519956
if( z[0]=='-' && z[1]=='-' ) z++;
1996619957
if( z[0]!='-' ){
1996719958
if( zFile==0 ){
@@ -19969,11 +19960,10 @@
1996919960
}else if( zTable==0 ){
1997019961
zTable = z;
1997119962
}else{
1997219963
utf8_printf(p->out, "ERROR: extra argument: \"%s\". Usage:\n", z);
1997319964
showHelp(p->out, "import");
19974
- rc = 1;
1997519965
goto meta_command_exit;
1997619966
}
1997719967
}else if( strcmp(z,"-v")==0 ){
1997819968
eVerbose++;
1997919969
}else if( strcmp(z,"-schema")==0 && i<nArg-1 ){
@@ -19991,19 +19981,17 @@
1999119981
xRead = csv_read_one_field;
1999219982
useOutputMode = 0;
1999319983
}else{
1999419984
utf8_printf(p->out, "ERROR: unknown option: \"%s\". Usage:\n", z);
1999519985
showHelp(p->out, "import");
19996
- rc = 1;
1999719986
goto meta_command_exit;
1999819987
}
1999919988
}
2000019989
if( zTable==0 ){
2000119990
utf8_printf(p->out, "ERROR: missing %s argument. Usage:\n",
2000219991
zFile==0 ? "FILE" : "TABLE");
2000319992
showHelp(p->out, "import");
20004
- rc = 1;
2000519993
goto meta_command_exit;
2000619994
}
2000719995
seenInterrupt = 0;
2000819996
open_db(p, 0);
2000919997
if( useOutputMode ){
@@ -20011,25 +19999,22 @@
2001119999
** the column and row separator characters from the output mode. */
2001220000
nSep = strlen30(p->colSeparator);
2001320001
if( nSep==0 ){
2001420002
raw_printf(stderr,
2001520003
"Error: non-null column separator required for import\n");
20016
- rc = 1;
2001720004
goto meta_command_exit;
2001820005
}
2001920006
if( nSep>1 ){
20020
- raw_printf(stderr,
20007
+ raw_printf(stderr,
2002120008
"Error: multi-character column separators not allowed"
2002220009
" for import\n");
20023
- rc = 1;
2002420010
goto meta_command_exit;
2002520011
}
2002620012
nSep = strlen30(p->rowSeparator);
2002720013
if( nSep==0 ){
2002820014
raw_printf(stderr,
2002920015
"Error: non-null row separator required for import\n");
20030
- rc = 1;
2003120016
goto meta_command_exit;
2003220017
}
2003320018
if( nSep==2 && p->mode==MODE_Csv && strcmp(p->rowSeparator,SEP_CrLf)==0 ){
2003420019
/* When importing CSV (only), if the row separator is set to the
2003520020
** default output row separator, change it to the default input
@@ -20039,11 +20024,10 @@
2003920024
nSep = strlen30(p->rowSeparator);
2004020025
}
2004120026
if( nSep>1 ){
2004220027
raw_printf(stderr, "Error: multi-character row separators not allowed"
2004320028
" for import\n");
20044
- rc = 1;
2004520029
goto meta_command_exit;
2004620030
}
2004720031
sCtx.cColSep = p->colSeparator[0];
2004820032
sCtx.cRowSep = p->rowSeparator[0];
2004920033
}
@@ -20050,11 +20034,10 @@
2005020034
sCtx.zFile = zFile;
2005120035
sCtx.nLine = 1;
2005220036
if( sCtx.zFile[0]=='|' ){
2005320037
#ifdef SQLITE_OMIT_POPEN
2005420038
raw_printf(stderr, "Error: pipes are not supported in this OS\n");
20055
- rc = 1;
2005620039
goto meta_command_exit;
2005720040
#else
2005820041
sCtx.in = popen(sCtx.zFile+1, "r");
2005920042
sCtx.zFile = "<pipe>";
2006020043
sCtx.xCloser = pclose;
@@ -20063,12 +20046,10 @@
2006320046
sCtx.in = fopen(sCtx.zFile, "rb");
2006420047
sCtx.xCloser = fclose;
2006520048
}
2006620049
if( sCtx.in==0 ){
2006720050
utf8_printf(stderr, "Error: cannot open \"%s\"\n", zFile);
20068
- rc = 1;
20069
- import_cleanup(&sCtx);
2007020051
goto meta_command_exit;
2007120052
}
2007220053
if( eVerbose>=2 || (eVerbose>=1 && useOutputMode) ){
2007320054
char zSep[2];
2007420055
zSep[1] = 0;
@@ -20077,10 +20058,15 @@
2007720058
output_c_string(p->out, zSep);
2007820059
utf8_printf(p->out, ", row separator ");
2007920060
zSep[0] = sCtx.cRowSep;
2008020061
output_c_string(p->out, zSep);
2008120062
utf8_printf(p->out, "\n");
20063
+ }
20064
+ sCtx.z = sqlite3_malloc64(120);
20065
+ if( sCtx.z==0 ){
20066
+ import_cleanup(&sCtx);
20067
+ shell_out_of_memory();
2008220068
}
2008320069
/* Below, resources must be freed before exit. */
2008420070
while( (nSkip--)>0 ){
2008520071
while( xRead(&sCtx) && sCtx.cTerm==sCtx.cColSep ){}
2008620072
}
@@ -21715,11 +21701,11 @@
2171521701
raw_printf(stderr, "Usage: .show\n");
2171621702
rc = 1;
2171721703
goto meta_command_exit;
2171821704
}
2171921705
utf8_printf(p->out, "%12.12s: %s\n","echo",
21720
- azBool[ShellHasFlag(p, SHFLG_Echo)]);
21706
+ azBool[ShellHasFlag(p, SHFLG_Echo)]);
2172121707
utf8_printf(p->out, "%12.12s: %s\n","eqp", azBool[p->autoEQP&3]);
2172221708
utf8_printf(p->out, "%12.12s: %s\n","explain",
2172321709
p->mode==MODE_Explain ? "on" : p->autoExplain ? "auto" : "off");
2172421710
utf8_printf(p->out,"%12.12s: %s\n","headers", azBool[p->showHeader!=0]);
2172521711
if( p->mode==MODE_Column
@@ -22465,11 +22451,11 @@
2246522451
/* fall thru */
2246622452
case ']':
2246722453
cWait = 0;
2246822454
qss = QSS_SETV(qss, 0);
2246922455
goto PlainScan;
22470
- default: assert(0);
22456
+ default: assert(0);
2247122457
}
2247222458
}
2247322459
}
2247422460
}
2247522461
return qss;
@@ -22486,11 +22472,11 @@
2248622472
zLine += 1; /* Oracle */
2248722473
else if ( ToLower(zLine[0])=='g' && ToLower(zLine[1])=='o' )
2248822474
zLine += 2; /* SQL Server */
2248922475
else
2249022476
return 0;
22491
- return quickscan(zLine,QSS_Start)==QSS_Start;
22477
+ return quickscan(zLine, QSS_Start)==QSS_Start;
2249222478
}
2249322479
2249422480
/*
2249522481
** We need a default sqlite3_complete() implementation to use in case
2249622482
** the shell is compiled with SQLITE_OMIT_COMPLETE. The default assumes
@@ -22563,10 +22549,13 @@
2256322549
raw_printf(p->out, "%s\n", zLineBuf);
2256422550
}
2256522551
return 0;
2256622552
}
2256722553
22554
+static void echo_group_input(ShellState *p, const char *zDo){
22555
+ if( ShellHasFlag(p, SHFLG_Echo) ) utf8_printf(p->out, "%s\n", zDo);
22556
+}
2256822557
2256922558
/*
2257022559
** Read input from *in and process it. If *in==0 then input
2257122560
** is interactive - the user is typing it it. Otherwise, input
2257222561
** is coming from a file or device. A prompt is issued and history
@@ -22612,18 +22601,17 @@
2261222601
&& line_is_complete(zSql, nSql) ){
2261322602
memcpy(zLine,";",2);
2261422603
}
2261522604
qss = quickscan(zLine, qss);
2261622605
if( QSS_PLAINWHITE(qss) && nSql==0 ){
22617
- if( ShellHasFlag(p, SHFLG_Echo) )
22618
- printf("%s\n", zLine);
2261922606
/* Just swallow single-line whitespace */
22607
+ echo_group_input(p, zLine);
2262022608
qss = QSS_Start;
2262122609
continue;
2262222610
}
2262322611
if( zLine && (zLine[0]=='.' || zLine[0]=='#') && nSql==0 ){
22624
- if( ShellHasFlag(p, SHFLG_Echo) ) printf("%s\n", zLine);
22612
+ echo_group_input(p, zLine);
2262522613
if( zLine[0]=='.' ){
2262622614
rc = do_meta_command(zLine, p);
2262722615
if( rc==2 ){ /* exit requested */
2262822616
break;
2262922617
}else if( rc ){
@@ -22652,10 +22640,11 @@
2265222640
zSql[nSql++] = '\n';
2265322641
memcpy(zSql+nSql, zLine, nLine+1);
2265422642
nSql += nLine;
2265522643
}
2265622644
if( nSql && QSS_SEMITERM(qss) && sqlite3_complete(zSql) ){
22645
+ echo_group_input(p, zSql);
2265722646
errCnt += runOneSqlLine(p, zSql, p->in, startline);
2265822647
nSql = 0;
2265922648
if( p->outCount ){
2266022649
output_reset(p);
2266122650
p->outCount = 0;
@@ -22663,17 +22652,18 @@
2266322652
clearTempFile(p);
2266422653
}
2266522654
p->bSafeMode = p->bSafeModePersist;
2266622655
qss = QSS_Start;
2266722656
}else if( nSql && QSS_PLAINWHITE(qss) ){
22668
- if( ShellHasFlag(p, SHFLG_Echo) ) printf("%s\n", zSql);
22657
+ echo_group_input(p, zSql);
2266922658
nSql = 0;
2267022659
qss = QSS_Start;
2267122660
}
2267222661
}
2267322662
if( nSql ){
2267422663
/* This may be incomplete. Let the SQL parser deal with that. */
22664
+ echo_group_input(p, zSql);
2267522665
errCnt += runOneSqlLine(p, zSql, p->in, startline);
2267622666
}
2267722667
free(zSql);
2267822668
free(zLine);
2267922669
--p->inputNesting;
@@ -22808,11 +22798,11 @@
2280822798
" -cmd COMMAND run \"COMMAND\" before reading stdin\n"
2280922799
" -csv set output mode to 'csv'\n"
2281022800
#if !defined(SQLITE_OMIT_DESERIALIZE)
2281122801
" -deserialize open the database using sqlite3_deserialize()\n"
2281222802
#endif
22813
- " -echo print commands before execution\n"
22803
+ " -echo print inputs before execution\n"
2281422804
" -init FILENAME read/process named file\n"
2281522805
" -[no]header turn headers on or off\n"
2281622806
#if defined(SQLITE_ENABLE_MEMSYS3) || defined(SQLITE_ENABLE_MEMSYS5)
2281722807
" -heap SIZE Size of heap for memsys3 or memsys5\n"
2281822808
#endif
@@ -22950,10 +22940,13 @@
2295022940
int SQLITE_CDECL main(int argc, char **argv){
2295122941
#else
2295222942
int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
2295322943
char **argv;
2295422944
#endif
22945
+#ifdef SQLITE_DEBUG
22946
+ sqlite3_uint64 mem_main_enter = sqlite3_memory_used();
22947
+#endif
2295522948
char *zErrMsg = 0;
2295622949
ShellState data;
2295722950
const char *zInitFile = 0;
2295822951
int i;
2295922952
int rc = 0;
@@ -23516,7 +23509,13 @@
2351623509
free(data.colWidth);
2351723510
free(data.zNonce);
2351823511
/* Clear the global data structure so that valgrind will detect memory
2351923512
** leaks */
2352023513
memset(&data, 0, sizeof(data));
23514
+#ifdef SQLITE_DEBUG
23515
+ if( sqlite3_memory_used()>mem_main_enter ){
23516
+ utf8_printf(stderr, "Memory leaked: %u bytes\n",
23517
+ (unsigned int)(sqlite3_memory_used()-mem_main_enter));
23518
+ }
23519
+#endif
2352123520
return rc;
2352223521
}
2352323522
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -12277,11 +12277,11 @@
12277 #define SHFLG_Lookaside 0x00000002 /* Lookaside memory is used */
12278 #define SHFLG_Backslash 0x00000004 /* The --backslash option is used */
12279 #define SHFLG_PreserveRowid 0x00000008 /* .dump preserves rowid values */
12280 #define SHFLG_Newlines 0x00000010 /* .dump --newline flag */
12281 #define SHFLG_CountChanges 0x00000020 /* .changes setting */
12282 #define SHFLG_Echo 0x00000040 /* .echo or --echo setting */
12283 #define SHFLG_HeaderSet 0x00000080 /* showHeader has been specified */
12284 #define SHFLG_DumpDataOnly 0x00000100 /* .dump show data only */
12285 #define SHFLG_DumpNoSys 0x00000200 /* .dump omits system tables */
12286
12287 /*
@@ -14906,15 +14906,10 @@
14906 if( pArg ){
14907 pArg->pStmt = pStmt;
14908 pArg->cnt = 0;
14909 }
14910
14911 /* echo the sql statement if echo on */
14912 if( pArg && ShellHasFlag(pArg, SHFLG_Echo) ){
14913 utf8_printf(pArg->out, "%s\n", zStmtSql ? zStmtSql : zSql);
14914 }
14915
14916 /* Show the EXPLAIN QUERY PLAN if .eqp is on */
14917 if( pArg && pArg->autoEQP && sqlite3_stmt_isexplain(pStmt)==0 ){
14918 sqlite3_stmt *pExplain;
14919 char *zEQP;
14920 int triggerEQP = 0;
@@ -19523,11 +19518,11 @@
19523 char *zLike = 0;
19524 char *zSql;
19525 int i;
19526 int savedShowHeader = p->showHeader;
19527 int savedShellFlags = p->shellFlgs;
19528 ShellClearFlag(p,
19529 SHFLG_PreserveRowid|SHFLG_Newlines|SHFLG_Echo
19530 |SHFLG_DumpDataOnly|SHFLG_DumpNoSys);
19531 for(i=1; i<nArg; i++){
19532 if( azArg[i][0]=='-' ){
19533 const char *z = azArg[i]+1;
@@ -19948,20 +19943,16 @@
19948 int useOutputMode = 1; /* Use output mode to determine separators */
19949 char *zCreate = 0; /* CREATE TABLE statement text */
19950
19951 failIfSafeMode(p, "cannot run .import in safe mode");
19952 memset(&sCtx, 0, sizeof(sCtx));
19953 sCtx.z = sqlite3_malloc64(120);
19954 if( sCtx.z==0 ){
19955 import_cleanup(&sCtx);
19956 shell_out_of_memory();
19957 }
19958 if( p->mode==MODE_Ascii ){
19959 xRead = ascii_read_one_field;
19960 }else{
19961 xRead = csv_read_one_field;
19962 }
 
19963 for(i=1; i<nArg; i++){
19964 char *z = azArg[i];
19965 if( z[0]=='-' && z[1]=='-' ) z++;
19966 if( z[0]!='-' ){
19967 if( zFile==0 ){
@@ -19969,11 +19960,10 @@
19969 }else if( zTable==0 ){
19970 zTable = z;
19971 }else{
19972 utf8_printf(p->out, "ERROR: extra argument: \"%s\". Usage:\n", z);
19973 showHelp(p->out, "import");
19974 rc = 1;
19975 goto meta_command_exit;
19976 }
19977 }else if( strcmp(z,"-v")==0 ){
19978 eVerbose++;
19979 }else if( strcmp(z,"-schema")==0 && i<nArg-1 ){
@@ -19991,19 +19981,17 @@
19991 xRead = csv_read_one_field;
19992 useOutputMode = 0;
19993 }else{
19994 utf8_printf(p->out, "ERROR: unknown option: \"%s\". Usage:\n", z);
19995 showHelp(p->out, "import");
19996 rc = 1;
19997 goto meta_command_exit;
19998 }
19999 }
20000 if( zTable==0 ){
20001 utf8_printf(p->out, "ERROR: missing %s argument. Usage:\n",
20002 zFile==0 ? "FILE" : "TABLE");
20003 showHelp(p->out, "import");
20004 rc = 1;
20005 goto meta_command_exit;
20006 }
20007 seenInterrupt = 0;
20008 open_db(p, 0);
20009 if( useOutputMode ){
@@ -20011,25 +19999,22 @@
20011 ** the column and row separator characters from the output mode. */
20012 nSep = strlen30(p->colSeparator);
20013 if( nSep==0 ){
20014 raw_printf(stderr,
20015 "Error: non-null column separator required for import\n");
20016 rc = 1;
20017 goto meta_command_exit;
20018 }
20019 if( nSep>1 ){
20020 raw_printf(stderr,
20021 "Error: multi-character column separators not allowed"
20022 " for import\n");
20023 rc = 1;
20024 goto meta_command_exit;
20025 }
20026 nSep = strlen30(p->rowSeparator);
20027 if( nSep==0 ){
20028 raw_printf(stderr,
20029 "Error: non-null row separator required for import\n");
20030 rc = 1;
20031 goto meta_command_exit;
20032 }
20033 if( nSep==2 && p->mode==MODE_Csv && strcmp(p->rowSeparator,SEP_CrLf)==0 ){
20034 /* When importing CSV (only), if the row separator is set to the
20035 ** default output row separator, change it to the default input
@@ -20039,11 +20024,10 @@
20039 nSep = strlen30(p->rowSeparator);
20040 }
20041 if( nSep>1 ){
20042 raw_printf(stderr, "Error: multi-character row separators not allowed"
20043 " for import\n");
20044 rc = 1;
20045 goto meta_command_exit;
20046 }
20047 sCtx.cColSep = p->colSeparator[0];
20048 sCtx.cRowSep = p->rowSeparator[0];
20049 }
@@ -20050,11 +20034,10 @@
20050 sCtx.zFile = zFile;
20051 sCtx.nLine = 1;
20052 if( sCtx.zFile[0]=='|' ){
20053 #ifdef SQLITE_OMIT_POPEN
20054 raw_printf(stderr, "Error: pipes are not supported in this OS\n");
20055 rc = 1;
20056 goto meta_command_exit;
20057 #else
20058 sCtx.in = popen(sCtx.zFile+1, "r");
20059 sCtx.zFile = "<pipe>";
20060 sCtx.xCloser = pclose;
@@ -20063,12 +20046,10 @@
20063 sCtx.in = fopen(sCtx.zFile, "rb");
20064 sCtx.xCloser = fclose;
20065 }
20066 if( sCtx.in==0 ){
20067 utf8_printf(stderr, "Error: cannot open \"%s\"\n", zFile);
20068 rc = 1;
20069 import_cleanup(&sCtx);
20070 goto meta_command_exit;
20071 }
20072 if( eVerbose>=2 || (eVerbose>=1 && useOutputMode) ){
20073 char zSep[2];
20074 zSep[1] = 0;
@@ -20077,10 +20058,15 @@
20077 output_c_string(p->out, zSep);
20078 utf8_printf(p->out, ", row separator ");
20079 zSep[0] = sCtx.cRowSep;
20080 output_c_string(p->out, zSep);
20081 utf8_printf(p->out, "\n");
 
 
 
 
 
20082 }
20083 /* Below, resources must be freed before exit. */
20084 while( (nSkip--)>0 ){
20085 while( xRead(&sCtx) && sCtx.cTerm==sCtx.cColSep ){}
20086 }
@@ -21715,11 +21701,11 @@
21715 raw_printf(stderr, "Usage: .show\n");
21716 rc = 1;
21717 goto meta_command_exit;
21718 }
21719 utf8_printf(p->out, "%12.12s: %s\n","echo",
21720 azBool[ShellHasFlag(p, SHFLG_Echo)]);
21721 utf8_printf(p->out, "%12.12s: %s\n","eqp", azBool[p->autoEQP&3]);
21722 utf8_printf(p->out, "%12.12s: %s\n","explain",
21723 p->mode==MODE_Explain ? "on" : p->autoExplain ? "auto" : "off");
21724 utf8_printf(p->out,"%12.12s: %s\n","headers", azBool[p->showHeader!=0]);
21725 if( p->mode==MODE_Column
@@ -22465,11 +22451,11 @@
22465 /* fall thru */
22466 case ']':
22467 cWait = 0;
22468 qss = QSS_SETV(qss, 0);
22469 goto PlainScan;
22470 default: assert(0);
22471 }
22472 }
22473 }
22474 }
22475 return qss;
@@ -22486,11 +22472,11 @@
22486 zLine += 1; /* Oracle */
22487 else if ( ToLower(zLine[0])=='g' && ToLower(zLine[1])=='o' )
22488 zLine += 2; /* SQL Server */
22489 else
22490 return 0;
22491 return quickscan(zLine,QSS_Start)==QSS_Start;
22492 }
22493
22494 /*
22495 ** We need a default sqlite3_complete() implementation to use in case
22496 ** the shell is compiled with SQLITE_OMIT_COMPLETE. The default assumes
@@ -22563,10 +22549,13 @@
22563 raw_printf(p->out, "%s\n", zLineBuf);
22564 }
22565 return 0;
22566 }
22567
 
 
 
22568
22569 /*
22570 ** Read input from *in and process it. If *in==0 then input
22571 ** is interactive - the user is typing it it. Otherwise, input
22572 ** is coming from a file or device. A prompt is issued and history
@@ -22612,18 +22601,17 @@
22612 && line_is_complete(zSql, nSql) ){
22613 memcpy(zLine,";",2);
22614 }
22615 qss = quickscan(zLine, qss);
22616 if( QSS_PLAINWHITE(qss) && nSql==0 ){
22617 if( ShellHasFlag(p, SHFLG_Echo) )
22618 printf("%s\n", zLine);
22619 /* Just swallow single-line whitespace */
 
22620 qss = QSS_Start;
22621 continue;
22622 }
22623 if( zLine && (zLine[0]=='.' || zLine[0]=='#') && nSql==0 ){
22624 if( ShellHasFlag(p, SHFLG_Echo) ) printf("%s\n", zLine);
22625 if( zLine[0]=='.' ){
22626 rc = do_meta_command(zLine, p);
22627 if( rc==2 ){ /* exit requested */
22628 break;
22629 }else if( rc ){
@@ -22652,10 +22640,11 @@
22652 zSql[nSql++] = '\n';
22653 memcpy(zSql+nSql, zLine, nLine+1);
22654 nSql += nLine;
22655 }
22656 if( nSql && QSS_SEMITERM(qss) && sqlite3_complete(zSql) ){
 
22657 errCnt += runOneSqlLine(p, zSql, p->in, startline);
22658 nSql = 0;
22659 if( p->outCount ){
22660 output_reset(p);
22661 p->outCount = 0;
@@ -22663,17 +22652,18 @@
22663 clearTempFile(p);
22664 }
22665 p->bSafeMode = p->bSafeModePersist;
22666 qss = QSS_Start;
22667 }else if( nSql && QSS_PLAINWHITE(qss) ){
22668 if( ShellHasFlag(p, SHFLG_Echo) ) printf("%s\n", zSql);
22669 nSql = 0;
22670 qss = QSS_Start;
22671 }
22672 }
22673 if( nSql ){
22674 /* This may be incomplete. Let the SQL parser deal with that. */
 
22675 errCnt += runOneSqlLine(p, zSql, p->in, startline);
22676 }
22677 free(zSql);
22678 free(zLine);
22679 --p->inputNesting;
@@ -22808,11 +22798,11 @@
22808 " -cmd COMMAND run \"COMMAND\" before reading stdin\n"
22809 " -csv set output mode to 'csv'\n"
22810 #if !defined(SQLITE_OMIT_DESERIALIZE)
22811 " -deserialize open the database using sqlite3_deserialize()\n"
22812 #endif
22813 " -echo print commands before execution\n"
22814 " -init FILENAME read/process named file\n"
22815 " -[no]header turn headers on or off\n"
22816 #if defined(SQLITE_ENABLE_MEMSYS3) || defined(SQLITE_ENABLE_MEMSYS5)
22817 " -heap SIZE Size of heap for memsys3 or memsys5\n"
22818 #endif
@@ -22950,10 +22940,13 @@
22950 int SQLITE_CDECL main(int argc, char **argv){
22951 #else
22952 int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
22953 char **argv;
22954 #endif
 
 
 
22955 char *zErrMsg = 0;
22956 ShellState data;
22957 const char *zInitFile = 0;
22958 int i;
22959 int rc = 0;
@@ -23516,7 +23509,13 @@
23516 free(data.colWidth);
23517 free(data.zNonce);
23518 /* Clear the global data structure so that valgrind will detect memory
23519 ** leaks */
23520 memset(&data, 0, sizeof(data));
 
 
 
 
 
 
23521 return rc;
23522 }
23523
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -12277,11 +12277,11 @@
12277 #define SHFLG_Lookaside 0x00000002 /* Lookaside memory is used */
12278 #define SHFLG_Backslash 0x00000004 /* The --backslash option is used */
12279 #define SHFLG_PreserveRowid 0x00000008 /* .dump preserves rowid values */
12280 #define SHFLG_Newlines 0x00000010 /* .dump --newline flag */
12281 #define SHFLG_CountChanges 0x00000020 /* .changes setting */
12282 #define SHFLG_Echo 0x00000040 /* .echo on/off, or --echo setting */
12283 #define SHFLG_HeaderSet 0x00000080 /* showHeader has been specified */
12284 #define SHFLG_DumpDataOnly 0x00000100 /* .dump show data only */
12285 #define SHFLG_DumpNoSys 0x00000200 /* .dump omits system tables */
12286
12287 /*
@@ -14906,15 +14906,10 @@
14906 if( pArg ){
14907 pArg->pStmt = pStmt;
14908 pArg->cnt = 0;
14909 }
14910
 
 
 
 
 
14911 /* Show the EXPLAIN QUERY PLAN if .eqp is on */
14912 if( pArg && pArg->autoEQP && sqlite3_stmt_isexplain(pStmt)==0 ){
14913 sqlite3_stmt *pExplain;
14914 char *zEQP;
14915 int triggerEQP = 0;
@@ -19523,11 +19518,11 @@
19518 char *zLike = 0;
19519 char *zSql;
19520 int i;
19521 int savedShowHeader = p->showHeader;
19522 int savedShellFlags = p->shellFlgs;
19523 ShellClearFlag(p,
19524 SHFLG_PreserveRowid|SHFLG_Newlines|SHFLG_Echo
19525 |SHFLG_DumpDataOnly|SHFLG_DumpNoSys);
19526 for(i=1; i<nArg; i++){
19527 if( azArg[i][0]=='-' ){
19528 const char *z = azArg[i]+1;
@@ -19948,20 +19943,16 @@
19943 int useOutputMode = 1; /* Use output mode to determine separators */
19944 char *zCreate = 0; /* CREATE TABLE statement text */
19945
19946 failIfSafeMode(p, "cannot run .import in safe mode");
19947 memset(&sCtx, 0, sizeof(sCtx));
 
 
 
 
 
19948 if( p->mode==MODE_Ascii ){
19949 xRead = ascii_read_one_field;
19950 }else{
19951 xRead = csv_read_one_field;
19952 }
19953 rc = 1;
19954 for(i=1; i<nArg; i++){
19955 char *z = azArg[i];
19956 if( z[0]=='-' && z[1]=='-' ) z++;
19957 if( z[0]!='-' ){
19958 if( zFile==0 ){
@@ -19969,11 +19960,10 @@
19960 }else if( zTable==0 ){
19961 zTable = z;
19962 }else{
19963 utf8_printf(p->out, "ERROR: extra argument: \"%s\". Usage:\n", z);
19964 showHelp(p->out, "import");
 
19965 goto meta_command_exit;
19966 }
19967 }else if( strcmp(z,"-v")==0 ){
19968 eVerbose++;
19969 }else if( strcmp(z,"-schema")==0 && i<nArg-1 ){
@@ -19991,19 +19981,17 @@
19981 xRead = csv_read_one_field;
19982 useOutputMode = 0;
19983 }else{
19984 utf8_printf(p->out, "ERROR: unknown option: \"%s\". Usage:\n", z);
19985 showHelp(p->out, "import");
 
19986 goto meta_command_exit;
19987 }
19988 }
19989 if( zTable==0 ){
19990 utf8_printf(p->out, "ERROR: missing %s argument. Usage:\n",
19991 zFile==0 ? "FILE" : "TABLE");
19992 showHelp(p->out, "import");
 
19993 goto meta_command_exit;
19994 }
19995 seenInterrupt = 0;
19996 open_db(p, 0);
19997 if( useOutputMode ){
@@ -20011,25 +19999,22 @@
19999 ** the column and row separator characters from the output mode. */
20000 nSep = strlen30(p->colSeparator);
20001 if( nSep==0 ){
20002 raw_printf(stderr,
20003 "Error: non-null column separator required for import\n");
 
20004 goto meta_command_exit;
20005 }
20006 if( nSep>1 ){
20007 raw_printf(stderr,
20008 "Error: multi-character column separators not allowed"
20009 " for import\n");
 
20010 goto meta_command_exit;
20011 }
20012 nSep = strlen30(p->rowSeparator);
20013 if( nSep==0 ){
20014 raw_printf(stderr,
20015 "Error: non-null row separator required for import\n");
 
20016 goto meta_command_exit;
20017 }
20018 if( nSep==2 && p->mode==MODE_Csv && strcmp(p->rowSeparator,SEP_CrLf)==0 ){
20019 /* When importing CSV (only), if the row separator is set to the
20020 ** default output row separator, change it to the default input
@@ -20039,11 +20024,10 @@
20024 nSep = strlen30(p->rowSeparator);
20025 }
20026 if( nSep>1 ){
20027 raw_printf(stderr, "Error: multi-character row separators not allowed"
20028 " for import\n");
 
20029 goto meta_command_exit;
20030 }
20031 sCtx.cColSep = p->colSeparator[0];
20032 sCtx.cRowSep = p->rowSeparator[0];
20033 }
@@ -20050,11 +20034,10 @@
20034 sCtx.zFile = zFile;
20035 sCtx.nLine = 1;
20036 if( sCtx.zFile[0]=='|' ){
20037 #ifdef SQLITE_OMIT_POPEN
20038 raw_printf(stderr, "Error: pipes are not supported in this OS\n");
 
20039 goto meta_command_exit;
20040 #else
20041 sCtx.in = popen(sCtx.zFile+1, "r");
20042 sCtx.zFile = "<pipe>";
20043 sCtx.xCloser = pclose;
@@ -20063,12 +20046,10 @@
20046 sCtx.in = fopen(sCtx.zFile, "rb");
20047 sCtx.xCloser = fclose;
20048 }
20049 if( sCtx.in==0 ){
20050 utf8_printf(stderr, "Error: cannot open \"%s\"\n", zFile);
 
 
20051 goto meta_command_exit;
20052 }
20053 if( eVerbose>=2 || (eVerbose>=1 && useOutputMode) ){
20054 char zSep[2];
20055 zSep[1] = 0;
@@ -20077,10 +20058,15 @@
20058 output_c_string(p->out, zSep);
20059 utf8_printf(p->out, ", row separator ");
20060 zSep[0] = sCtx.cRowSep;
20061 output_c_string(p->out, zSep);
20062 utf8_printf(p->out, "\n");
20063 }
20064 sCtx.z = sqlite3_malloc64(120);
20065 if( sCtx.z==0 ){
20066 import_cleanup(&sCtx);
20067 shell_out_of_memory();
20068 }
20069 /* Below, resources must be freed before exit. */
20070 while( (nSkip--)>0 ){
20071 while( xRead(&sCtx) && sCtx.cTerm==sCtx.cColSep ){}
20072 }
@@ -21715,11 +21701,11 @@
21701 raw_printf(stderr, "Usage: .show\n");
21702 rc = 1;
21703 goto meta_command_exit;
21704 }
21705 utf8_printf(p->out, "%12.12s: %s\n","echo",
21706 azBool[ShellHasFlag(p, SHFLG_Echo)]);
21707 utf8_printf(p->out, "%12.12s: %s\n","eqp", azBool[p->autoEQP&3]);
21708 utf8_printf(p->out, "%12.12s: %s\n","explain",
21709 p->mode==MODE_Explain ? "on" : p->autoExplain ? "auto" : "off");
21710 utf8_printf(p->out,"%12.12s: %s\n","headers", azBool[p->showHeader!=0]);
21711 if( p->mode==MODE_Column
@@ -22465,11 +22451,11 @@
22451 /* fall thru */
22452 case ']':
22453 cWait = 0;
22454 qss = QSS_SETV(qss, 0);
22455 goto PlainScan;
22456 default: assert(0);
22457 }
22458 }
22459 }
22460 }
22461 return qss;
@@ -22486,11 +22472,11 @@
22472 zLine += 1; /* Oracle */
22473 else if ( ToLower(zLine[0])=='g' && ToLower(zLine[1])=='o' )
22474 zLine += 2; /* SQL Server */
22475 else
22476 return 0;
22477 return quickscan(zLine, QSS_Start)==QSS_Start;
22478 }
22479
22480 /*
22481 ** We need a default sqlite3_complete() implementation to use in case
22482 ** the shell is compiled with SQLITE_OMIT_COMPLETE. The default assumes
@@ -22563,10 +22549,13 @@
22549 raw_printf(p->out, "%s\n", zLineBuf);
22550 }
22551 return 0;
22552 }
22553
22554 static void echo_group_input(ShellState *p, const char *zDo){
22555 if( ShellHasFlag(p, SHFLG_Echo) ) utf8_printf(p->out, "%s\n", zDo);
22556 }
22557
22558 /*
22559 ** Read input from *in and process it. If *in==0 then input
22560 ** is interactive - the user is typing it it. Otherwise, input
22561 ** is coming from a file or device. A prompt is issued and history
@@ -22612,18 +22601,17 @@
22601 && line_is_complete(zSql, nSql) ){
22602 memcpy(zLine,";",2);
22603 }
22604 qss = quickscan(zLine, qss);
22605 if( QSS_PLAINWHITE(qss) && nSql==0 ){
 
 
22606 /* Just swallow single-line whitespace */
22607 echo_group_input(p, zLine);
22608 qss = QSS_Start;
22609 continue;
22610 }
22611 if( zLine && (zLine[0]=='.' || zLine[0]=='#') && nSql==0 ){
22612 echo_group_input(p, zLine);
22613 if( zLine[0]=='.' ){
22614 rc = do_meta_command(zLine, p);
22615 if( rc==2 ){ /* exit requested */
22616 break;
22617 }else if( rc ){
@@ -22652,10 +22640,11 @@
22640 zSql[nSql++] = '\n';
22641 memcpy(zSql+nSql, zLine, nLine+1);
22642 nSql += nLine;
22643 }
22644 if( nSql && QSS_SEMITERM(qss) && sqlite3_complete(zSql) ){
22645 echo_group_input(p, zSql);
22646 errCnt += runOneSqlLine(p, zSql, p->in, startline);
22647 nSql = 0;
22648 if( p->outCount ){
22649 output_reset(p);
22650 p->outCount = 0;
@@ -22663,17 +22652,18 @@
22652 clearTempFile(p);
22653 }
22654 p->bSafeMode = p->bSafeModePersist;
22655 qss = QSS_Start;
22656 }else if( nSql && QSS_PLAINWHITE(qss) ){
22657 echo_group_input(p, zSql);
22658 nSql = 0;
22659 qss = QSS_Start;
22660 }
22661 }
22662 if( nSql ){
22663 /* This may be incomplete. Let the SQL parser deal with that. */
22664 echo_group_input(p, zSql);
22665 errCnt += runOneSqlLine(p, zSql, p->in, startline);
22666 }
22667 free(zSql);
22668 free(zLine);
22669 --p->inputNesting;
@@ -22808,11 +22798,11 @@
22798 " -cmd COMMAND run \"COMMAND\" before reading stdin\n"
22799 " -csv set output mode to 'csv'\n"
22800 #if !defined(SQLITE_OMIT_DESERIALIZE)
22801 " -deserialize open the database using sqlite3_deserialize()\n"
22802 #endif
22803 " -echo print inputs before execution\n"
22804 " -init FILENAME read/process named file\n"
22805 " -[no]header turn headers on or off\n"
22806 #if defined(SQLITE_ENABLE_MEMSYS3) || defined(SQLITE_ENABLE_MEMSYS5)
22807 " -heap SIZE Size of heap for memsys3 or memsys5\n"
22808 #endif
@@ -22950,10 +22940,13 @@
22940 int SQLITE_CDECL main(int argc, char **argv){
22941 #else
22942 int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
22943 char **argv;
22944 #endif
22945 #ifdef SQLITE_DEBUG
22946 sqlite3_uint64 mem_main_enter = sqlite3_memory_used();
22947 #endif
22948 char *zErrMsg = 0;
22949 ShellState data;
22950 const char *zInitFile = 0;
22951 int i;
22952 int rc = 0;
@@ -23516,7 +23509,13 @@
23509 free(data.colWidth);
23510 free(data.zNonce);
23511 /* Clear the global data structure so that valgrind will detect memory
23512 ** leaks */
23513 memset(&data, 0, sizeof(data));
23514 #ifdef SQLITE_DEBUG
23515 if( sqlite3_memory_used()>mem_main_enter ){
23516 utf8_printf(stderr, "Memory leaked: %u bytes\n",
23517 (unsigned int)(sqlite3_memory_used()-mem_main_enter));
23518 }
23519 #endif
23520 return rc;
23521 }
23522
+1469 -1461
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -452,11 +452,11 @@
452452
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453453
** [sqlite_version()] and [sqlite_source_id()].
454454
*/
455455
#define SQLITE_VERSION "3.39.0"
456456
#define SQLITE_VERSION_NUMBER 3039000
457
-#define SQLITE_SOURCE_ID "2022-05-10 00:24:01 c6c3115f3a008cf9b0d7c5c812f17e38c8a75a904032c5f05f0bea03a7340527"
457
+#define SQLITE_SOURCE_ID "2022-05-14 19:05:13 2277f9ba7087dd993ac0f4007c523aa9cf74dba187f53af03d8c164886726fee"
458458
459459
/*
460460
** CAPI3REF: Run-Time Library Version Numbers
461461
** KEYWORDS: sqlite3_version sqlite3_sourceid
462462
**
@@ -16286,10 +16286,17 @@
1628616286
*/
1628716287
#ifndef SQLITE_MAX_PATHLEN
1628816288
# define SQLITE_MAX_PATHLEN FILENAME_MAX
1628916289
#endif
1629016290
16291
+/* Maximum number of symlinks that will be resolved while trying to
16292
+** expand a filename in xFullPathname() in the VFS.
16293
+*/
16294
+#ifndef SQLITE_MAX_SYMLINK
16295
+# define SQLITE_MAX_SYMLINK 200
16296
+#endif
16297
+
1629116298
/*
1629216299
** The default size of a disk sector
1629316300
*/
1629416301
#ifndef SQLITE_DEFAULT_SECTOR_SIZE
1629516302
# define SQLITE_DEFAULT_SECTOR_SIZE 4096
@@ -18120,11 +18127,11 @@
1812018127
ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
1812118128
** TK_VARIABLE: variable number (always >= 1).
1812218129
** TK_SELECT_COLUMN: column of the result vector */
1812318130
i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
1812418131
union {
18125
- int iJoin; /* If EP_FromJoin, the right table of the join */
18132
+ int iJoin; /* If EP_OuterON or EP_InnerON, the right table */
1812618133
int iOfst; /* else: start of token from start of statement */
1812718134
} w;
1812818135
AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
1812918136
union {
1813018137
Table *pTab; /* TK_COLUMN: Table containing column. Can be NULL
@@ -18141,33 +18148,33 @@
1814118148
** Value restrictions:
1814218149
**
1814318150
** EP_Agg == NC_HasAgg == SF_HasAgg
1814418151
** EP_Win == NC_HasWin
1814518152
*/
18146
-#define EP_FromJoin 0x000001 /* Originates in ON/USING clause of outer join */
18147
-#define EP_Distinct 0x000002 /* Aggregate function with DISTINCT keyword */
18148
-#define EP_HasFunc 0x000004 /* Contains one or more functions of any kind */
18149
-#define EP_FixedCol 0x000008 /* TK_Column with a known fixed value */
18153
+#define EP_OuterON 0x000001 /* Originates in ON/USING clause of outer join */
18154
+#define EP_InnerON 0x000002 /* Originates in ON/USING of an inner join */
18155
+#define EP_Distinct 0x000004 /* Aggregate function with DISTINCT keyword */
18156
+#define EP_HasFunc 0x000008 /* Contains one or more functions of any kind */
1815018157
#define EP_Agg 0x000010 /* Contains one or more aggregate functions */
18151
-#define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */
18152
-#define EP_DblQuoted 0x000040 /* token.z was originally in "..." */
18153
-#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */
18154
-#define EP_Collate 0x000100 /* Tree contains a TK_COLLATE operator */
18155
-#define EP_Commuted 0x000200 /* Comparison operator has been commuted */
18156
-#define EP_IntValue 0x000400 /* Integer value contained in u.iValue */
18157
-#define EP_xIsSelect 0x000800 /* x.pSelect is valid (otherwise x.pList is) */
18158
-#define EP_Skip 0x001000 /* Operator does not contribute to affinity */
18159
-#define EP_Reduced 0x002000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
18160
-#define EP_TokenOnly 0x004000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
18158
+#define EP_FixedCol 0x000020 /* TK_Column with a known fixed value */
18159
+#define EP_VarSelect 0x000040 /* pSelect is correlated, not constant */
18160
+#define EP_DblQuoted 0x000080 /* token.z was originally in "..." */
18161
+#define EP_InfixFunc 0x000100 /* True for an infix function: LIKE, GLOB, etc */
18162
+#define EP_Collate 0x000200 /* Tree contains a TK_COLLATE operator */
18163
+#define EP_Commuted 0x000400 /* Comparison operator has been commuted */
18164
+#define EP_IntValue 0x000800 /* Integer value contained in u.iValue */
18165
+#define EP_xIsSelect 0x001000 /* x.pSelect is valid (otherwise x.pList is) */
18166
+#define EP_Skip 0x002000 /* Operator does not contribute to affinity */
18167
+#define EP_Reduced 0x004000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
1816118168
#define EP_Win 0x008000 /* Contains window functions */
18162
-#define EP_MemToken 0x010000 /* Need to sqlite3DbFree() Expr.zToken */
18163
-#define EP_IfNullRow 0x020000 /* The TK_IF_NULL_ROW opcode */
18164
-#define EP_Unlikely 0x040000 /* unlikely() or likelihood() function */
18165
-#define EP_ConstFunc 0x080000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */
18166
-#define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
18167
-#define EP_Subquery 0x200000 /* Tree contains a TK_SELECT operator */
18168
-#define EP_InnerJoin 0x400000 /* Originates in ON/USING of an inner join */
18169
+#define EP_TokenOnly 0x010000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
18170
+#define EP_MemToken 0x020000 /* Need to sqlite3DbFree() Expr.zToken */
18171
+#define EP_IfNullRow 0x040000 /* The TK_IF_NULL_ROW opcode */
18172
+#define EP_Unlikely 0x080000 /* unlikely() or likelihood() function */
18173
+#define EP_ConstFunc 0x100000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */
18174
+#define EP_CanBeNull 0x200000 /* Can be null despite NOT NULL constraint */
18175
+#define EP_Subquery 0x400000 /* Tree contains a TK_SELECT operator */
1816918176
#define EP_Leaf 0x800000 /* Expr.pLeft, .pRight, .u.pSelect all NULL */
1817018177
#define EP_WinFunc 0x1000000 /* TK_FUNCTION with Expr.y.pWin set */
1817118178
#define EP_Subrtn 0x2000000 /* Uses Expr.y.sub. TK_IN, _SELECT, or _EXISTS */
1817218179
#define EP_Quoted 0x4000000 /* TK_ID was originally quoted */
1817318180
#define EP_Static 0x8000000 /* Held in memory not obtained from malloc() */
@@ -18186,12 +18193,12 @@
1818618193
*/
1818718194
#define ExprHasProperty(E,P) (((E)->flags&(P))!=0)
1818818195
#define ExprHasAllProperty(E,P) (((E)->flags&(P))==(P))
1818918196
#define ExprSetProperty(E,P) (E)->flags|=(P)
1819018197
#define ExprClearProperty(E,P) (E)->flags&=~(P)
18191
-#define ExprAlwaysTrue(E) (((E)->flags&(EP_FromJoin|EP_IsTrue))==EP_IsTrue)
18192
-#define ExprAlwaysFalse(E) (((E)->flags&(EP_FromJoin|EP_IsFalse))==EP_IsFalse)
18198
+#define ExprAlwaysTrue(E) (((E)->flags&(EP_OuterON|EP_IsTrue))==EP_IsTrue)
18199
+#define ExprAlwaysFalse(E) (((E)->flags&(EP_OuterON|EP_IsFalse))==EP_IsFalse)
1819318200
1819418201
/* Macros used to ensure that the correct members of unions are accessed
1819518202
** in Expr.
1819618203
*/
1819718204
#define ExprUseUToken(E) (((E)->flags&EP_IntValue)==0)
@@ -20595,11 +20602,10 @@
2059520602
** Allowed flags for the 3rd parameter to sqlite3FindInIndex().
2059620603
*/
2059720604
#define IN_INDEX_NOOP_OK 0x0001 /* OK to return IN_INDEX_NOOP */
2059820605
#define IN_INDEX_MEMBERSHIP 0x0002 /* IN operator used for membership test */
2059920606
#define IN_INDEX_LOOP 0x0004 /* IN operator used as a loop */
20600
-#define IN_INDEX_REUSE_CUR 0x0008 /* Reuse prior table cursor */
2060120607
SQLITE_PRIVATE int sqlite3FindInIndex(Parse *, Expr *, u32, int*, int*, int*);
2060220608
2060320609
SQLITE_PRIVATE int sqlite3JournalOpen(sqlite3_vfs *, const char *, sqlite3_file *, int, int);
2060420610
SQLITE_PRIVATE int sqlite3JournalSize(sqlite3_vfs *);
2060520611
#if defined(SQLITE_ENABLE_ATOMIC_WRITE) \
@@ -30545,11 +30551,13 @@
3054530551
/*
3054630552
** If pExpr has a byte offset for the start of a token, record that as
3054730553
** as the error offset.
3054830554
*/
3054930555
SQLITE_PRIVATE void sqlite3RecordErrorOffsetOfExpr(sqlite3 *db, const Expr *pExpr){
30550
- while( pExpr && (ExprHasProperty(pExpr,EP_FromJoin) || pExpr->w.iOfst<=0) ){
30556
+ while( pExpr
30557
+ && (ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) || pExpr->w.iOfst<=0)
30558
+ ){
3055130559
pExpr = pExpr->pLeft;
3055230560
}
3055330561
if( pExpr==0 ) return;
3055430562
db->errByteOffset = pExpr->w.iOfst;
3055530563
}
@@ -31470,12 +31478,15 @@
3147031478
if( pExpr->flags || pExpr->affExpr || pExpr->vvaFlags ){
3147131479
StrAccum x;
3147231480
sqlite3StrAccumInit(&x, 0, zFlgs, sizeof(zFlgs), 0);
3147331481
sqlite3_str_appendf(&x, " fg.af=%x.%c",
3147431482
pExpr->flags, pExpr->affExpr ? pExpr->affExpr : 'n');
31475
- if( ExprHasProperty(pExpr, EP_FromJoin) ){
31476
- sqlite3_str_appendf(&x, " iJoin=%d", pExpr->w.iJoin);
31483
+ if( ExprHasProperty(pExpr, EP_OuterON) ){
31484
+ sqlite3_str_appendf(&x, " outer.iJoin=%d", pExpr->w.iJoin);
31485
+ }
31486
+ if( ExprHasProperty(pExpr, EP_InnerON) ){
31487
+ sqlite3_str_appendf(&x, " inner.iJoin=%d", pExpr->w.iJoin);
3147731488
}
3147831489
if( ExprHasProperty(pExpr, EP_FromDDL) ){
3147931490
sqlite3_str_appendf(&x, " DDL");
3148031491
}
3148131492
if( ExprHasVVAProperty(pExpr, EP_Immutable) ){
@@ -41837,90 +41848,103 @@
4183741848
}
4183841849
return SQLITE_OK;
4183941850
}
4184041851
4184141852
/*
41842
-** If the last component of the pathname in z[0]..z[j-1] is something
41843
-** other than ".." then back it out and return true. If the last
41844
-** component is empty or if it is ".." then return false.
41845
-*/
41846
-static int unixBackupDir(const char *z, int *pJ){
41847
- int j = *pJ;
41848
- int i;
41849
- if( j<=0 ) return 0;
41850
- for(i=j-1; i>0 && z[i-1]!='/'; i--){}
41851
- if( i==0 ) return 0;
41852
- if( z[i]=='.' && i==j-2 && z[i+1]=='.' ) return 0;
41853
- *pJ = i-1;
41854
- return 1;
41855
-}
41856
-
41857
-/*
41858
-** Convert a relative pathname into a full pathname. Also
41859
-** simplify the pathname as follows:
41860
-**
41861
-** Remove all instances of /./
41862
-** Remove all isntances of /X/../ for any X
41863
-*/
41864
-static int mkFullPathname(
41865
- const char *zPath, /* Input path */
41866
- char *zOut, /* Output buffer */
41867
- int nOut /* Allocated size of buffer zOut */
41868
-){
41869
- int nPath = sqlite3Strlen30(zPath);
41870
- int iOff = 0;
41871
- int i, j;
41872
- if( zPath[0]!='/' ){
41873
- if( osGetcwd(zOut, nOut-2)==0 ){
41874
- return unixLogError(SQLITE_CANTOPEN_BKPT, "getcwd", zPath);
41875
- }
41876
- iOff = sqlite3Strlen30(zOut);
41877
- zOut[iOff++] = '/';
41878
- }
41879
- if( (iOff+nPath+1)>nOut ){
41880
- /* SQLite assumes that xFullPathname() nul-terminates the output buffer
41881
- ** even if it returns an error. */
41882
- zOut[iOff] = '\0';
41883
- return SQLITE_CANTOPEN_BKPT;
41884
- }
41885
- sqlite3_snprintf(nOut-iOff, &zOut[iOff], "%s", zPath);
41886
-
41887
- /* Remove duplicate '/' characters. Except, two // at the beginning
41888
- ** of a pathname is allowed since this is important on windows. */
41889
- for(i=j=1; zOut[i]; i++){
41890
- zOut[j++] = zOut[i];
41891
- while( zOut[i]=='/' && zOut[i+1]=='/' ) i++;
41892
- }
41893
- zOut[j] = 0;
41894
-
41895
- assert( zOut[0]=='/' );
41896
- for(i=j=0; zOut[i]; i++){
41897
- if( zOut[i]=='/' ){
41898
- /* Skip over internal "/." directory components */
41899
- if( zOut[i+1]=='.' && zOut[i+2]=='/' ){
41900
- i += 1;
41901
- continue;
41902
- }
41903
-
41904
- /* If this is a "/.." directory component then back out the
41905
- ** previous term of the directory if it is something other than "..".
41906
- */
41907
- if( zOut[i+1]=='.'
41908
- && zOut[i+2]=='.'
41909
- && zOut[i+3]=='/'
41910
- && unixBackupDir(zOut, &j)
41911
- ){
41912
- i += 2;
41913
- continue;
41914
- }
41915
- }
41916
- if( ALWAYS(j>=0) ) zOut[j] = zOut[i];
41917
- j++;
41918
- }
41919
- if( NEVER(j==0) ) zOut[j++] = '/';
41920
- zOut[j] = 0;
41921
- return SQLITE_OK;
41853
+** A pathname under construction
41854
+*/
41855
+typedef struct DbPath DbPath;
41856
+struct DbPath {
41857
+ int rc; /* Non-zero following any error */
41858
+ int nSymlink; /* Number of symlinks resolved */
41859
+ char *zOut; /* Write the pathname here */
41860
+ int nOut; /* Bytes of space available to zOut[] */
41861
+ int nUsed; /* Bytes of zOut[] currently being used */
41862
+};
41863
+
41864
+/* Forward reference */
41865
+static void appendAllPathElements(DbPath*,const char*);
41866
+
41867
+/*
41868
+** Append a single path element to the DbPath under construction
41869
+*/
41870
+static void appendOnePathElement(
41871
+ DbPath *pPath, /* Path under construction, to which to append zName */
41872
+ const char *zName, /* Name to append to pPath. Not zero-terminated */
41873
+ int nName /* Number of significant bytes in zName */
41874
+){
41875
+ assert( nName>0 );
41876
+ assert( zName!=0 );
41877
+ if( zName[0]=='.' ){
41878
+ if( nName==1 ) return;
41879
+ if( zName[1]=='.' && nName==2 ){
41880
+ if( pPath->nUsed<=1 ){
41881
+ pPath->rc = SQLITE_ERROR;
41882
+ return;
41883
+ }
41884
+ assert( pPath->zOut[0]=='/' );
41885
+ while( pPath->zOut[--pPath->nUsed]!='/' ){}
41886
+ return;
41887
+ }
41888
+ }
41889
+ if( pPath->nUsed + nName + 2 >= pPath->nOut ){
41890
+ pPath->rc = SQLITE_ERROR;
41891
+ return;
41892
+ }
41893
+ pPath->zOut[pPath->nUsed++] = '/';
41894
+ memcpy(&pPath->zOut[pPath->nUsed], zName, nName);
41895
+ pPath->nUsed += nName;
41896
+#if defined(HAVE_READLINK) && defined(HAVE_LSTAT)
41897
+ if( pPath->rc==SQLITE_OK ){
41898
+ const char *zIn;
41899
+ struct stat buf;
41900
+ pPath->zOut[pPath->nUsed] = 0;
41901
+ zIn = pPath->zOut;
41902
+ if( osLstat(zIn, &buf)!=0 ){
41903
+ if( errno!=ENOENT ){
41904
+ pPath->rc = unixLogError(SQLITE_CANTOPEN_BKPT, "lstat", zIn);
41905
+ }
41906
+ }else if( S_ISLNK(buf.st_mode) ){
41907
+ ssize_t got;
41908
+ char zLnk[SQLITE_MAX_PATHLEN+2];
41909
+ if( pPath->nSymlink++ > SQLITE_MAX_SYMLINK ){
41910
+ pPath->rc = SQLITE_CANTOPEN_BKPT;
41911
+ return;
41912
+ }
41913
+ got = osReadlink(zIn, zLnk, sizeof(zLnk)-2);
41914
+ if( got<=0 || got>=sizeof(zLnk)-2 ){
41915
+ pPath->rc = unixLogError(SQLITE_CANTOPEN_BKPT, "readlink", zIn);
41916
+ return;
41917
+ }
41918
+ zLnk[got] = 0;
41919
+ if( zLnk[0]=='/' ){
41920
+ pPath->nUsed = 0;
41921
+ }else{
41922
+ pPath->nUsed -= nName + 1;
41923
+ }
41924
+ appendAllPathElements(pPath, zLnk);
41925
+ }
41926
+ }
41927
+#endif
41928
+}
41929
+
41930
+/*
41931
+** Append all path elements in zPath to the DbPath under construction.
41932
+*/
41933
+static void appendAllPathElements(
41934
+ DbPath *pPath, /* Path under construction, to which to append zName */
41935
+ const char *zPath /* Path to append to pPath. Is zero-terminated */
41936
+){
41937
+ int i = 0;
41938
+ int j = 0;
41939
+ do{
41940
+ while( zPath[i] && zPath[i]!='/' ){ i++; }
41941
+ if( i>j ){
41942
+ appendOnePathElement(pPath, &zPath[j], i-j);
41943
+ }
41944
+ j = i+1;
41945
+ }while( zPath[i++] );
4192241946
}
4192341947
4192441948
/*
4192541949
** Turn a relative pathname into a full pathname. The relative path
4192641950
** is stored as a nul-terminated string in the buffer pointed to by
@@ -41934,89 +41958,29 @@
4193441958
sqlite3_vfs *pVfs, /* Pointer to vfs object */
4193541959
const char *zPath, /* Possibly relative input path */
4193641960
int nOut, /* Size of output buffer in bytes */
4193741961
char *zOut /* Output buffer */
4193841962
){
41939
-#if !defined(HAVE_READLINK) || !defined(HAVE_LSTAT)
41940
- return mkFullPathname(zPath, zOut, nOut);
41941
-#else
41942
- int rc = SQLITE_OK;
41943
- int nByte;
41944
- int nLink = 0; /* Number of symbolic links followed so far */
41945
- const char *zIn = zPath; /* Input path for each iteration of loop */
41946
- char *zDel = 0;
41947
-
41948
- assert( pVfs->mxPathname==MAX_PATHNAME );
41949
- UNUSED_PARAMETER(pVfs);
41950
-
41951
- /* It's odd to simulate an io-error here, but really this is just
41952
- ** using the io-error infrastructure to test that SQLite handles this
41953
- ** function failing. This function could fail if, for example, the
41954
- ** current working directory has been unlinked.
41955
- */
41956
- SimulateIOError( return SQLITE_ERROR );
41957
-
41958
- do {
41959
-
41960
- /* Call stat() on path zIn. Set bLink to true if the path is a symbolic
41961
- ** link, or false otherwise. */
41962
- int bLink = 0;
41963
- struct stat buf;
41964
- if( osLstat(zIn, &buf)!=0 ){
41965
- if( errno!=ENOENT ){
41966
- rc = unixLogError(SQLITE_CANTOPEN_BKPT, "lstat", zIn);
41967
- }
41968
- }else{
41969
- bLink = S_ISLNK(buf.st_mode);
41970
- }
41971
-
41972
- if( bLink ){
41973
- nLink++;
41974
- if( zDel==0 ){
41975
- zDel = sqlite3_malloc(nOut);
41976
- if( zDel==0 ) rc = SQLITE_NOMEM_BKPT;
41977
- }else if( nLink>=SQLITE_MAX_SYMLINKS ){
41978
- rc = SQLITE_CANTOPEN_BKPT;
41979
- }
41980
-
41981
- if( rc==SQLITE_OK ){
41982
- nByte = osReadlink(zIn, zDel, nOut-1);
41983
- if( nByte<0 ){
41984
- rc = unixLogError(SQLITE_CANTOPEN_BKPT, "readlink", zIn);
41985
- }else{
41986
- if( zDel[0]!='/' ){
41987
- int n;
41988
- for(n = sqlite3Strlen30(zIn); n>0 && zIn[n-1]!='/'; n--);
41989
- if( nByte+n+1>nOut ){
41990
- rc = SQLITE_CANTOPEN_BKPT;
41991
- }else{
41992
- memmove(&zDel[n], zDel, nByte+1);
41993
- memcpy(zDel, zIn, n);
41994
- nByte += n;
41995
- }
41996
- }
41997
- zDel[nByte] = '\0';
41998
- }
41999
- }
42000
-
42001
- zIn = zDel;
42002
- }
42003
-
42004
- assert( rc!=SQLITE_OK || zIn!=zOut || zIn[0]=='/' );
42005
- if( rc==SQLITE_OK && zIn!=zOut ){
42006
- rc = mkFullPathname(zIn, zOut, nOut);
42007
- }
42008
- if( bLink==0 ) break;
42009
- zIn = zOut;
42010
- }while( rc==SQLITE_OK );
42011
-
42012
- sqlite3_free(zDel);
42013
- if( rc==SQLITE_OK && nLink ) rc = SQLITE_OK_SYMLINK;
42014
- return rc;
42015
-#endif /* HAVE_READLINK && HAVE_LSTAT */
42016
-}
42017
-
41963
+ DbPath path;
41964
+ path.rc = 0;
41965
+ path.nUsed = 0;
41966
+ path.nSymlink = 0;
41967
+ path.nOut = nOut;
41968
+ path.zOut = zOut;
41969
+ if( zPath[0]!='/' ){
41970
+ char zPwd[SQLITE_MAX_PATHLEN+2];
41971
+ if( osGetcwd(zPwd, sizeof(zPwd)-2)==0 ){
41972
+ return unixLogError(SQLITE_CANTOPEN_BKPT, "getcwd", zPath);
41973
+ }
41974
+ appendAllPathElements(&path, zPwd);
41975
+ }
41976
+ appendAllPathElements(&path, zPath);
41977
+ zOut[path.nUsed] = 0;
41978
+ if( path.rc || path.nUsed<2 ) return SQLITE_CANTOPEN_BKPT;
41979
+ if( path.nSymlink ) return SQLITE_OK_SYMLINK;
41980
+ return SQLITE_OK;
41981
+}
4201841982
4201941983
#ifndef SQLITE_OMIT_LOAD_EXTENSION
4202041984
/*
4202141985
** Interfaces for opening a shared library, finding entry points
4202241986
** within the shared library, and closing the shared library.
@@ -82215,15 +82179,13 @@
8221582179
if( c=='4' ){
8221682180
sqlite3_str_appendall(&x, zP4);
8221782181
}else if( c=='X' ){
8221882182
if( pOp->zComment && pOp->zComment[0] ){
8221982183
sqlite3_str_appendall(&x, pOp->zComment);
82220
- }else{
82221
- sqlite3_str_appendall(&x, zSynopsis+1);
82184
+ seenCom = 1;
82185
+ break;
8222282186
}
82223
- seenCom = 1;
82224
- break;
8222582187
}else{
8222682188
int v1 = translateP(c, pOp);
8222782189
int v2;
8222882190
if( strncmp(zSynopsis+ii+1, "@P", 2)==0 ){
8222982191
ii += 3;
@@ -102345,11 +102307,11 @@
102345102307
for(i=0, p=pNC; p && i<ArraySize(anRef); p=p->pNext, i++){
102346102308
anRef[i] = p->nRef;
102347102309
}
102348102310
sqlite3WalkExpr(pWalker, pExpr->pLeft);
102349102311
if( 0==sqlite3ExprCanBeNull(pExpr->pLeft) && !IN_RENAME_OBJECT ){
102350
- testcase( ExprHasProperty(pExpr, EP_FromJoin) );
102312
+ testcase( ExprHasProperty(pExpr, EP_OuterON) );
102351102313
assert( !ExprHasProperty(pExpr, EP_IntValue) );
102352102314
if( pExpr->op==TK_NOTNULL ){
102353102315
pExpr->u.zToken = "true";
102354102316
ExprSetProperty(pExpr, EP_IsTrue);
102355102317
}else{
@@ -104636,10 +104598,11 @@
104636104598
pNew = sqlite3ExprAlloc(db, TK_FUNCTION, pToken, 1);
104637104599
if( pNew==0 ){
104638104600
sqlite3ExprListDelete(db, pList); /* Avoid memory leak when malloc fails */
104639104601
return 0;
104640104602
}
104603
+ assert( !ExprHasProperty(pNew, EP_InnerON|EP_OuterON) );
104641104604
pNew->w.iOfst = (int)(pToken->z - pParse->zTail);
104642104605
if( pList
104643104606
&& pList->nExpr > pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG]
104644104607
&& !pParse->nested
104645104608
){
@@ -104914,11 +104877,11 @@
104914104877
#endif
104915104878
){
104916104879
nSize = EXPR_FULLSIZE;
104917104880
}else{
104918104881
assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) );
104919
- assert( !ExprHasProperty(p, EP_FromJoin) );
104882
+ assert( !ExprHasProperty(p, EP_OuterON) );
104920104883
assert( !ExprHasProperty(p, EP_MemToken) );
104921104884
assert( !ExprHasVVAProperty(p, EP_NoReduce) );
104922104885
if( p->pLeft || p->x.pList ){
104923104886
nSize = EXPR_REDUCEDSIZE | EP_Reduced;
104924104887
}else{
@@ -105740,11 +105703,11 @@
105740105703
static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){
105741105704
105742105705
/* If pWalker->eCode is 2 then any term of the expression that comes from
105743105706
** the ON or USING clauses of an outer join disqualifies the expression
105744105707
** from being considered constant. */
105745
- if( pWalker->eCode==2 && ExprHasProperty(pExpr, EP_FromJoin) ){
105708
+ if( pWalker->eCode==2 && ExprHasProperty(pExpr, EP_OuterON) ){
105746105709
pWalker->eCode = 0;
105747105710
return WRC_Abort;
105748105711
}
105749105712
105750105713
switch( pExpr->op ){
@@ -105887,14 +105850,14 @@
105887105850
SQLITE_PRIVATE int sqlite3ExprIsTableConstraint(Expr *pExpr, const SrcItem *pSrc){
105888105851
if( pSrc->fg.jointype & JT_LTORJ ){
105889105852
return 0; /* rule (3) */
105890105853
}
105891105854
if( pSrc->fg.jointype & JT_LEFT ){
105892
- if( !ExprHasProperty(pExpr, EP_FromJoin) ) return 0; /* rule (4a) */
105855
+ if( !ExprHasProperty(pExpr, EP_OuterON) ) return 0; /* rule (4a) */
105893105856
if( pExpr->w.iJoin!=pSrc->iCursor ) return 0; /* rule (4b) */
105894105857
}else{
105895
- if( ExprHasProperty(pExpr, EP_FromJoin) ) return 0; /* rule (5) */
105858
+ if( ExprHasProperty(pExpr, EP_OuterON) ) return 0; /* rule (5) */
105896105859
}
105897105860
return sqlite3ExprIsTableConstant(pExpr, pSrc->iCursor); /* rules (1), (2) */
105898105861
}
105899105862
105900105863
@@ -106312,15 +106275,11 @@
106312106275
int mustBeUnique; /* True if RHS must be unique */
106313106276
Vdbe *v = sqlite3GetVdbe(pParse); /* Virtual machine being coded */
106314106277
106315106278
assert( pX->op==TK_IN );
106316106279
mustBeUnique = (inFlags & IN_INDEX_LOOP)!=0;
106317
- if( pX->iTable && (inFlags & IN_INDEX_REUSE_CUR)!=0 ){
106318
- iTab = pX->iTable;
106319
- }else{
106320
- iTab = pParse->nTab++;
106321
- }
106280
+ iTab = pParse->nTab++;
106322106281
106323106282
/* If the RHS of this IN(...) operator is a SELECT, and if it matters
106324106283
** whether or not the SELECT result contains NULL values, check whether
106325106284
** or not NULL is actually possible (it may not be, for example, due
106326106285
** to NOT NULL constraints in the schema). If no NULL values are possible,
@@ -106650,13 +106609,12 @@
106650106609
pExpr->x.pSelect->selId));
106651106610
}
106652106611
assert( ExprUseYSub(pExpr) );
106653106612
sqlite3VdbeAddOp2(v, OP_Gosub, pExpr->y.sub.regReturn,
106654106613
pExpr->y.sub.iAddr);
106655
- if( iTab!=pExpr->iTable ){
106656
- sqlite3VdbeAddOp2(v, OP_OpenDup, iTab, pExpr->iTable);
106657
- }
106614
+ assert( iTab!=pExpr->iTable );
106615
+ sqlite3VdbeAddOp2(v, OP_OpenDup, iTab, pExpr->iTable);
106658106616
sqlite3VdbeJumpHere(v, addrOnce);
106659106617
return;
106660106618
}
106661106619
106662106620
/* Begin coding the subroutine */
@@ -108645,12 +108603,12 @@
108645108603
}else{
108646108604
/* Mark the expression is being from the ON or USING clause of a join
108647108605
** so that the sqlite3ExprCodeTarget() routine will not attempt to move
108648108606
** it into the Parse.pConstExpr list. We should use a new bit for this,
108649108607
** for clarity, but we are out of bits in the Expr.flags field so we
108650
- ** have to reuse the EP_FromJoin bit. Bummer. */
108651
- pDel->flags |= EP_FromJoin;
108608
+ ** have to reuse the EP_OuterON bit. Bummer. */
108609
+ pDel->flags |= EP_OuterON;
108652108610
sqlite3ExprCodeTarget(pParse, &exprAnd, dest);
108653108611
}
108654108612
sqlite3ReleaseTempReg(pParse, regFree1);
108655108613
}
108656108614
sqlite3ExprDelete(db, pDel);
@@ -109331,11 +109289,11 @@
109331109289
** (never setting pWalker->eCode) is a harmless missed optimization.
109332109290
*/
109333109291
static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
109334109292
testcase( pExpr->op==TK_AGG_COLUMN );
109335109293
testcase( pExpr->op==TK_AGG_FUNCTION );
109336
- if( ExprHasProperty(pExpr, EP_FromJoin) ) return WRC_Prune;
109294
+ if( ExprHasProperty(pExpr, EP_OuterON) ) return WRC_Prune;
109337109295
switch( pExpr->op ){
109338109296
case TK_ISNOT:
109339109297
case TK_ISNULL:
109340109298
case TK_NOTNULL:
109341109299
case TK_IS:
@@ -109428,11 +109386,11 @@
109428109386
** is NULL. A false negative is merely a missed optimization opportunity.
109429109387
**
109430109388
** False positives are not allowed, however. A false positive may result
109431109389
** in an incorrect answer.
109432109390
**
109433
-** Terms of p that are marked with EP_FromJoin (and hence that come from
109391
+** Terms of p that are marked with EP_OuterON (and hence that come from
109434109392
** the ON or USING clauses of OUTER JOINS) are excluded from the analysis.
109435109393
**
109436109394
** This routine is used to check if a LEFT JOIN can be converted into
109437109395
** an ordinary JOIN. The p argument is the WHERE clause. If the WHERE
109438109396
** clause requires that some column of the right table of the LEFT JOIN
@@ -135849,15 +135807,15 @@
135849135807
}
135850135808
return 0;
135851135809
}
135852135810
135853135811
/*
135854
-** Set the EP_FromJoin property on all terms of the given expression.
135812
+** Set the EP_OuterON property on all terms of the given expression.
135855135813
** And set the Expr.w.iJoin to iTable for every term in the
135856135814
** expression.
135857135815
**
135858
-** The EP_FromJoin property is used on terms of an expression to tell
135816
+** The EP_OuterON property is used on terms of an expression to tell
135859135817
** the OUTER JOIN processing logic that this term is part of the
135860135818
** join restriction specified in the ON or USING clause and not a part
135861135819
** of the more general WHERE clause. These terms are moved over to the
135862135820
** WHERE clause during join processing but we need to remember that they
135863135821
** originated in the ON or USING clause.
@@ -135875,11 +135833,11 @@
135875135833
** defer the handling of t1.x=5, it will be processed immediately
135876135834
** after the t1 loop and rows with t1.x!=5 will never appear in
135877135835
** the output, which is incorrect.
135878135836
*/
135879135837
SQLITE_PRIVATE void sqlite3SetJoinExpr(Expr *p, int iTable, u32 joinFlag){
135880
- assert( joinFlag==EP_FromJoin || joinFlag==EP_InnerJoin );
135838
+ assert( joinFlag==EP_OuterON || joinFlag==EP_InnerON );
135881135839
while( p ){
135882135840
ExprSetProperty(p, joinFlag);
135883135841
assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) );
135884135842
ExprSetVVAProperty(p, EP_NoReduce);
135885135843
p->w.iJoin = iTable;
@@ -135896,21 +135854,21 @@
135896135854
p = p->pRight;
135897135855
}
135898135856
}
135899135857
135900135858
/* Undo the work of sqlite3SetJoinExpr(). In the expression p, convert every
135901
-** term that is marked with EP_FromJoin and w.iJoin==iTable into
135902
-** an ordinary term that omits the EP_FromJoin mark.
135859
+** term that is marked with EP_OuterON and w.iJoin==iTable into
135860
+** an ordinary term that omits the EP_OuterON mark.
135903135861
**
135904135862
** This happens when a LEFT JOIN is simplified into an ordinary JOIN.
135905135863
*/
135906135864
static void unsetJoinExpr(Expr *p, int iTable){
135907135865
while( p ){
135908
- if( ExprHasProperty(p, EP_FromJoin)
135866
+ if( ExprHasProperty(p, EP_OuterON)
135909135867
&& (iTable<0 || p->w.iJoin==iTable) ){
135910
- ExprClearProperty(p, EP_FromJoin);
135911
- ExprSetProperty(p, EP_InnerJoin);
135868
+ ExprClearProperty(p, EP_OuterON);
135869
+ ExprSetProperty(p, EP_InnerON);
135912135870
}
135913135871
if( p->op==TK_COLUMN && p->iTable==iTable ){
135914135872
ExprClearProperty(p, EP_CanBeNull);
135915135873
}
135916135874
if( p->op==TK_FUNCTION ){
@@ -135934,12 +135892,12 @@
135934135892
** do not need to be concerned with NATURAL joins and we only have
135935135893
** think about USING joins.
135936135894
**
135937135895
** * ON and USING clauses result in extra terms being added to the
135938135896
** WHERE clause to enforce the specified constraints. The extra
135939
-** WHERE clause terms will be tagged with EP_FromJoin or
135940
-** EP_InnerJoin so that we know that they originated in ON/USING.
135897
+** WHERE clause terms will be tagged with EP_OuterON or
135898
+** EP_InnerON so that we know that they originated in ON/USING.
135941135899
**
135942135900
** The terms of a FROM clause are contained in the Select.pSrc structure.
135943135901
** The left most table is the first entry in Select.pSrc. The right-most
135944135902
** table is the last entry. The join operator is held in the entry to
135945135903
** the right. Thus entry 1 contains the join operator for the join between
@@ -135960,11 +135918,11 @@
135960135918
for(i=0; i<pSrc->nSrc-1; i++, pRight++, pLeft++){
135961135919
Table *pRightTab = pRight->pTab;
135962135920
u32 joinType;
135963135921
135964135922
if( NEVER(pLeft->pTab==0 || pRightTab==0) ) continue;
135965
- joinType = (pRight->fg.jointype & JT_OUTER)!=0 ? EP_FromJoin : EP_InnerJoin;
135923
+ joinType = (pRight->fg.jointype & JT_OUTER)!=0 ? EP_OuterON : EP_InnerON;
135966135924
135967135925
/* If this is a NATURAL join, synthesize an approprate USING clause
135968135926
** to specify which columns should be joined.
135969135927
*/
135970135928
if( pRight->fg.jointype & JT_NATURAL ){
@@ -139233,11 +139191,11 @@
139233139191
static Expr *substExpr(
139234139192
SubstContext *pSubst, /* Description of the substitution */
139235139193
Expr *pExpr /* Expr in which substitution occurs */
139236139194
){
139237139195
if( pExpr==0 ) return 0;
139238
- if( ExprHasProperty(pExpr, EP_FromJoin)
139196
+ if( ExprHasProperty(pExpr, EP_OuterON)
139239139197
&& pExpr->w.iJoin==pSubst->iTable
139240139198
){
139241139199
pExpr->w.iJoin = pSubst->iNewTable;
139242139200
}
139243139201
if( pExpr->op==TK_COLUMN
@@ -139274,13 +139232,13 @@
139274139232
return pExpr;
139275139233
}
139276139234
if( pSubst->isOuterJoin ){
139277139235
ExprSetProperty(pNew, EP_CanBeNull);
139278139236
}
139279
- if( ExprHasProperty(pExpr,EP_FromJoin|EP_InnerJoin) ){
139237
+ if( ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) ){
139280139238
sqlite3SetJoinExpr(pNew, pExpr->w.iJoin,
139281
- pExpr->flags & (EP_FromJoin|EP_InnerJoin));
139239
+ pExpr->flags & (EP_OuterON|EP_InnerON));
139282139240
}
139283139241
sqlite3ExprDelete(db, pExpr);
139284139242
pExpr = pNew;
139285139243
139286139244
/* Ensure that the expression now has an implicit collation sequence,
@@ -139440,11 +139398,11 @@
139440139398
static int renumberCursorsCb(Walker *pWalker, Expr *pExpr){
139441139399
int op = pExpr->op;
139442139400
if( op==TK_COLUMN || op==TK_IF_NULL_ROW ){
139443139401
renumberCursorDoMapping(pWalker, &pExpr->iTable);
139444139402
}
139445
- if( ExprHasProperty(pExpr, EP_FromJoin) ){
139403
+ if( ExprHasProperty(pExpr, EP_OuterON) ){
139446139404
renumberCursorDoMapping(pWalker, &pExpr->w.iJoin);
139447139405
}
139448139406
return WRC_Continue;
139449139407
}
139450139408
@@ -140018,11 +139976,11 @@
140018139976
pSub->pOrderBy = 0;
140019139977
}
140020139978
pWhere = pSub->pWhere;
140021139979
pSub->pWhere = 0;
140022139980
if( isOuterJoin>0 ){
140023
- sqlite3SetJoinExpr(pWhere, iNewParent, EP_FromJoin);
139981
+ sqlite3SetJoinExpr(pWhere, iNewParent, EP_OuterON);
140024139982
}
140025139983
if( pWhere ){
140026139984
if( pParent->pWhere ){
140027139985
pParent->pWhere = sqlite3PExpr(pParse, TK_AND, pWhere, pParent->pWhere);
140028139986
}else{
@@ -140151,11 +140109,11 @@
140151140109
** found, add it to the pConst structure.
140152140110
*/
140153140111
static void findConstInWhere(WhereConst *pConst, Expr *pExpr){
140154140112
Expr *pRight, *pLeft;
140155140113
if( NEVER(pExpr==0) ) return;
140156
- if( ExprHasProperty(pExpr, EP_FromJoin) ) return;
140114
+ if( ExprHasProperty(pExpr, EP_OuterON) ) return;
140157140115
if( pExpr->op==TK_AND ){
140158140116
findConstInWhere(pConst, pExpr->pRight);
140159140117
findConstInWhere(pConst, pExpr->pLeft);
140160140118
return;
140161140119
}
@@ -140187,13 +140145,13 @@
140187140145
int bIgnoreAffBlob
140188140146
){
140189140147
int i;
140190140148
if( pConst->pOomFault[0] ) return WRC_Prune;
140191140149
if( pExpr->op!=TK_COLUMN ) return WRC_Continue;
140192
- if( ExprHasProperty(pExpr, EP_FixedCol|EP_FromJoin) ){
140150
+ if( ExprHasProperty(pExpr, EP_FixedCol|EP_OuterON) ){
140193140151
testcase( ExprHasProperty(pExpr, EP_FixedCol) );
140194
- testcase( ExprHasProperty(pExpr, EP_FromJoin) );
140152
+ testcase( ExprHasProperty(pExpr, EP_OuterON) );
140195140153
return WRC_Continue;
140196140154
}
140197140155
for(i=0; i<pConst->nConst; i++){
140198140156
Expr *pColumn = pConst->apExpr[i*2];
140199140157
if( pColumn==pExpr ) continue;
@@ -140474,16 +140432,16 @@
140474140432
pWhere = pWhere->pLeft;
140475140433
}
140476140434
140477140435
#if 0 /* Legacy code. Checks now done by sqlite3ExprIsTableConstraint() */
140478140436
if( isLeftJoin
140479
- && (ExprHasProperty(pWhere,EP_FromJoin)==0
140437
+ && (ExprHasProperty(pWhere,EP_OuterON)==0
140480140438
|| pWhere->w.iJoin!=iCursor)
140481140439
){
140482140440
return 0; /* restriction (4) */
140483140441
}
140484
- if( ExprHasProperty(pWhere,EP_FromJoin)
140442
+ if( ExprHasProperty(pWhere,EP_OuterON)
140485140443
&& pWhere->w.iJoin!=iCursor
140486140444
){
140487140445
return 0; /* restriction (5) */
140488140446
}
140489140447
#endif
@@ -143178,11 +143136,11 @@
143178143136
}
143179143137
SELECTTRACE(1,pParse,p,("WhereBegin returns\n"));
143180143138
eDist = sqlite3WhereIsDistinct(pWInfo);
143181143139
updateAccumulator(pParse, regAcc, pAggInfo, eDist);
143182143140
if( eDist!=WHERE_DISTINCT_NOOP ){
143183
- struct AggInfo_func *pF = &pAggInfo->aFunc[0];
143141
+ struct AggInfo_func *pF = pAggInfo->aFunc;
143184143142
if( pF ){
143185143143
fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr);
143186143144
}
143187143145
}
143188143146
@@ -148402,11 +148360,11 @@
148402148360
** This object is a header on a block of allocated memory that will be
148403148361
** automatically freed when its WInfo oject is destructed.
148404148362
*/
148405148363
struct WhereMemBlock {
148406148364
WhereMemBlock *pNext; /* Next block in the chain */
148407
- u8 sz; /* Bytes of space */
148365
+ u64 sz; /* Bytes of space */
148408148366
};
148409148367
148410148368
/*
148411148369
** Extra information attached to a WhereLevel that is a RIGHT JOIN.
148412148370
*/
@@ -149344,11 +149302,11 @@
149344149302
*/
149345149303
static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){
149346149304
int nLoop = 0;
149347149305
assert( pTerm!=0 );
149348149306
while( (pTerm->wtFlags & TERM_CODED)==0
149349
- && (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_FromJoin))
149307
+ && (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_OuterON))
149350149308
&& (pLevel->notReady & pTerm->prereqAll)==0
149351149309
){
149352149310
if( nLoop && (pTerm->wtFlags & TERM_LIKE)!=0 ){
149353149311
pTerm->wtFlags |= TERM_LIKECOND;
149354149312
}else{
@@ -149617,12 +149575,11 @@
149617149575
pExpr->iTable = iTab;
149618149576
}
149619149577
sqlite3ExprDelete(db, pX);
149620149578
}else{
149621149579
aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*nEq);
149622
- eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP|IN_INDEX_REUSE_CUR, 0, aiMap,&iTab);
149623
- iTab = pExpr->iTable;
149580
+ eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap, &iTab);
149624149581
}
149625149582
pX = pExpr;
149626149583
}
149627149584
149628149585
if( eType==IN_INDEX_INDEX_DESC ){
@@ -150066,20 +150023,20 @@
150066150023
**
150067150024
** are also excluded. See codeCursorHintIsOrFunction() for details.
150068150025
*/
150069150026
if( pTabItem->fg.jointype & JT_LEFT ){
150070150027
Expr *pExpr = pTerm->pExpr;
150071
- if( !ExprHasProperty(pExpr, EP_FromJoin)
150028
+ if( !ExprHasProperty(pExpr, EP_OuterON)
150072150029
|| pExpr->w.iJoin!=pTabItem->iCursor
150073150030
){
150074150031
sWalker.eCode = 0;
150075150032
sWalker.xExprCallback = codeCursorHintIsOrFunction;
150076150033
sqlite3WalkExpr(&sWalker, pTerm->pExpr);
150077150034
if( sWalker.eCode ) continue;
150078150035
}
150079150036
}else{
150080
- if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) continue;
150037
+ if( ExprHasProperty(pTerm->pExpr, EP_OuterON) ) continue;
150081150038
}
150082150039
150083150040
/* All terms in pWLoop->aLTerm[] except pEndRange are used to initialize
150084150041
** the cursor. These terms are not needed as hints for a pure range
150085150042
** scan (that has no == terms) so omit them. */
@@ -151406,11 +151363,11 @@
151406151363
WhereInfo *pSubWInfo; /* Info for single OR-term scan */
151407151364
Expr *pOrExpr = pOrTerm->pExpr; /* Current OR clause term */
151408151365
Expr *pDelete; /* Local copy of OR clause term */
151409151366
int jmp1 = 0; /* Address of jump operation */
151410151367
testcase( (pTabItem[0].fg.jointype & JT_LEFT)!=0
151411
- && !ExprHasProperty(pOrExpr, EP_FromJoin)
151368
+ && !ExprHasProperty(pOrExpr, EP_OuterON)
151412151369
); /* See TH3 vtab25.400 and ticket 614b25314c766238 */
151413151370
pDelete = pOrExpr = sqlite3ExprDup(db, pOrExpr, 0);
151414151371
if( db->mallocFailed ){
151415151372
sqlite3ExprDelete(db, pDelete);
151416151373
continue;
@@ -151614,16 +151571,23 @@
151614151571
pWInfo->untestedTerms = 1;
151615151572
continue;
151616151573
}
151617151574
pE = pTerm->pExpr;
151618151575
assert( pE!=0 );
151619
- if( (pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ))
151620
- && !ExprHasProperty(pE,EP_FromJoin|EP_InnerJoin)
151621
- ){
151622
- continue;
151576
+ if( pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ|JT_RIGHT) ){
151577
+ if( !ExprHasProperty(pE,EP_OuterON|EP_InnerON) ){
151578
+ /* Defer processing WHERE clause constraints until after outer
151579
+ ** join processing. tag-20220513a */
151580
+ continue;
151581
+ }else{
151582
+ Bitmask m = sqlite3WhereGetMask(&pWInfo->sMaskSet, pE->w.iJoin);
151583
+ if( m & pLevel->notReady ){
151584
+ /* An ON clause that is not ripe */
151585
+ continue;
151586
+ }
151587
+ }
151623151588
}
151624
-
151625151589
if( iLoop==1 && !sqlite3ExprCoveredByIndex(pE, pLevel->iTabCur, pIdx) ){
151626151590
iNext = 2;
151627151591
continue;
151628151592
}
151629151593
if( iLoop<3 && (pTerm->wtFlags & TERM_VARSELECT) ){
@@ -151678,19 +151642,19 @@
151678151642
WhereTerm *pAlt;
151679151643
if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue;
151680151644
if( (pTerm->eOperator & (WO_EQ|WO_IS))==0 ) continue;
151681151645
if( (pTerm->eOperator & WO_EQUIV)==0 ) continue;
151682151646
if( pTerm->leftCursor!=iCur ) continue;
151683
- if( pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ) ) continue;
151647
+ if( pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ|JT_RIGHT) ) continue;
151684151648
pE = pTerm->pExpr;
151685151649
#ifdef WHERETRACE_ENABLED /* 0x800 */
151686151650
if( sqlite3WhereTrace & 0x800 ){
151687151651
sqlite3DebugPrintf("Coding transitive constraint:\n");
151688151652
sqlite3WhereTermPrint(pTerm, pWC->nTerm-j);
151689151653
}
151690151654
#endif
151691
- assert( !ExprHasProperty(pE, EP_FromJoin) );
151655
+ assert( !ExprHasProperty(pE, EP_OuterON) );
151692151656
assert( (pTerm->prereqRight & pLevel->notReady)!=0 );
151693151657
assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
151694151658
pAlt = sqlite3WhereFindTerm(pWC, iCur, pTerm->u.x.leftColumn, notReady,
151695151659
WO_EQ|WO_IN|WO_IS, 0);
151696151660
if( pAlt==0 ) continue;
@@ -151757,22 +151721,12 @@
151757151721
*/
151758151722
if( pLevel->iLeftJoin ){
151759151723
pLevel->addrFirst = sqlite3VdbeCurrentAddr(v);
151760151724
sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->iLeftJoin);
151761151725
VdbeComment((v, "record LEFT JOIN hit"));
151762
- for(pTerm=pWC->a, j=0; j<pWC->nBase; j++, pTerm++){
151763
- testcase( pTerm->wtFlags & TERM_VIRTUAL );
151764
- testcase( pTerm->wtFlags & TERM_CODED );
151765
- if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue;
151766
- if( (pTerm->prereqAll & pLevel->notReady)!=0 ){
151767
- assert( pWInfo->untestedTerms );
151768
- continue;
151769
- }
151770
- if( pTabItem->fg.jointype & JT_LTORJ ) continue;
151771
- assert( pTerm->pExpr );
151772
- sqlite3ExprIfFalse(pParse, pTerm->pExpr, addrCont, SQLITE_JUMPIFNULL);
151773
- pTerm->wtFlags |= TERM_CODED;
151726
+ if( pLevel->pRJ==0 ){
151727
+ goto code_outer_join_constraints; /* WHERE clause constraints */
151774151728
}
151775151729
}
151776151730
151777151731
if( pLevel->pRJ ){
151778151732
/* Create a subroutine used to process all interior loops and code
@@ -151784,10 +151738,30 @@
151784151738
WhereRightJoin *pRJ = pLevel->pRJ;
151785151739
sqlite3VdbeAddOp2(v, OP_BeginSubrtn, 0, pRJ->regReturn);
151786151740
pRJ->addrSubrtn = sqlite3VdbeCurrentAddr(v);
151787151741
assert( pParse->withinRJSubrtn < 255 );
151788151742
pParse->withinRJSubrtn++;
151743
+
151744
+ /* WHERE clause constraints must be deferred until after outer join
151745
+ ** row elimination has completed, since WHERE clause constraints apply
151746
+ ** to the results of the OUTER JOIN. The following loop generates the
151747
+ ** appropriate WHERE clause constraint checks. tag-20220513a.
151748
+ */
151749
+ code_outer_join_constraints:
151750
+ for(pTerm=pWC->a, j=0; j<pWC->nBase; j++, pTerm++){
151751
+ testcase( pTerm->wtFlags & TERM_VIRTUAL );
151752
+ testcase( pTerm->wtFlags & TERM_CODED );
151753
+ if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue;
151754
+ if( (pTerm->prereqAll & pLevel->notReady)!=0 ){
151755
+ assert( pWInfo->untestedTerms );
151756
+ continue;
151757
+ }
151758
+ if( pTabItem->fg.jointype & JT_LTORJ ) continue;
151759
+ assert( pTerm->pExpr );
151760
+ sqlite3ExprIfFalse(pParse, pTerm->pExpr, addrCont, SQLITE_JUMPIFNULL);
151761
+ pTerm->wtFlags |= TERM_CODED;
151762
+ }
151789151763
}
151790151764
151791151765
#if WHERETRACE_ENABLED /* 0x20800 */
151792151766
if( sqlite3WhereTrace & 0x20000 ){
151793151767
sqlite3DebugPrintf("All WHERE-clause terms after coding level %d:\n",
@@ -151839,11 +151813,11 @@
151839151813
mAll |= pLoop->maskSelf;
151840151814
for(k=0; k<pWC->nTerm; k++){
151841151815
WhereTerm *pTerm = &pWC->a[k];
151842151816
if( pTerm->wtFlags & TERM_VIRTUAL ) break;
151843151817
if( pTerm->prereqAll & ~mAll ) continue;
151844
- if( ExprHasProperty(pTerm->pExpr, EP_FromJoin|EP_InnerJoin) ) continue;
151818
+ if( ExprHasProperty(pTerm->pExpr, EP_OuterON|EP_InnerON) ) continue;
151845151819
pSubWhere = sqlite3ExprAnd(pParse, pSubWhere,
151846151820
sqlite3ExprDup(pParse->db, pTerm->pExpr, 0));
151847151821
}
151848151822
}
151849151823
sFrom.nSrc = 1;
@@ -152351,12 +152325,12 @@
152351152325
/*
152352152326
** If the pBase expression originated in the ON or USING clause of
152353152327
** a join, then transfer the appropriate markings over to derived.
152354152328
*/
152355152329
static void transferJoinMarkings(Expr *pDerived, Expr *pBase){
152356
- if( pDerived ){
152357
- pDerived->flags |= pBase->flags & EP_FromJoin;
152330
+ if( pDerived && ExprHasProperty(pBase, EP_OuterON|EP_InnerON) ){
152331
+ pDerived->flags |= pBase->flags & (EP_OuterON|EP_InnerON);
152358152332
pDerived->w.iJoin = pBase->w.iJoin;
152359152333
}
152360152334
}
152361152335
152362152336
/*
@@ -152807,11 +152781,11 @@
152807152781
static int termIsEquivalence(Parse *pParse, Expr *pExpr){
152808152782
char aff1, aff2;
152809152783
CollSeq *pColl;
152810152784
if( !OptimizationEnabled(pParse->db, SQLITE_Transitive) ) return 0;
152811152785
if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0;
152812
- if( ExprHasProperty(pExpr, EP_FromJoin) ) return 0;
152786
+ if( ExprHasProperty(pExpr, EP_OuterON) ) return 0;
152813152787
aff1 = sqlite3ExprAffinity(pExpr->pLeft);
152814152788
aff2 = sqlite3ExprAffinity(pExpr->pRight);
152815152789
if( aff1!=aff2
152816152790
&& (!sqlite3IsNumericAffinity(aff1) || !sqlite3IsNumericAffinity(aff2))
152817152791
){
@@ -152999,11 +152973,11 @@
152999152973
sqlite3TreeViewExpr(0,pExpr,0);
153000152974
abort();
153001152975
}
153002152976
#endif
153003152977
153004
- if( ExprHasProperty(pExpr, EP_FromJoin) ){
152978
+ if( ExprHasProperty(pExpr, EP_OuterON) ){
153005152979
Bitmask x = sqlite3WhereGetMask(pMaskSet, pExpr->w.iJoin);
153006152980
prereqAll |= x;
153007152981
extraRight = x-1; /* ON clause terms may not be used with an index
153008152982
** on left table of a LEFT JOIN. Ticket #3015 */
153009152983
if( (prereqAll>>1)>=x ){
@@ -153074,11 +153048,11 @@
153074153048
pNew->prereqRight = prereqLeft | extraRight;
153075153049
pNew->prereqAll = prereqAll;
153076153050
pNew->eOperator = (operatorMask(pDup->op) + eExtraOp) & opMask;
153077153051
}else
153078153052
if( op==TK_ISNULL
153079
- && !ExprHasProperty(pExpr,EP_FromJoin)
153053
+ && !ExprHasProperty(pExpr,EP_OuterON)
153080153054
&& 0==sqlite3ExprCanBeNull(pLeft)
153081153055
){
153082153056
assert( !ExprHasProperty(pExpr, EP_IntValue) );
153083153057
pExpr->op = TK_TRUEFALSE;
153084153058
pExpr->u.zToken = "false";
@@ -153145,11 +153119,11 @@
153145153119
** The virtual term must be tagged with TERM_VNULL.
153146153120
*/
153147153121
else if( pExpr->op==TK_NOTNULL ){
153148153122
if( pExpr->pLeft->op==TK_COLUMN
153149153123
&& pExpr->pLeft->iColumn>=0
153150
- && !ExprHasProperty(pExpr, EP_FromJoin)
153124
+ && !ExprHasProperty(pExpr, EP_OuterON)
153151153125
){
153152153126
Expr *pNewExpr;
153153153127
Expr *pLeft = pExpr->pLeft;
153154153128
int idxNew;
153155153129
WhereTerm *pNewTerm;
@@ -153349,12 +153323,12 @@
153349153323
prereqColumn = sqlite3WhereExprUsage(pMaskSet, pLeft);
153350153324
if( (prereqExpr & prereqColumn)==0 ){
153351153325
Expr *pNewExpr;
153352153326
pNewExpr = sqlite3PExpr(pParse, TK_MATCH,
153353153327
0, sqlite3ExprDup(db, pRight, 0));
153354
- if( ExprHasProperty(pExpr, EP_FromJoin) && pNewExpr ){
153355
- ExprSetProperty(pNewExpr, EP_FromJoin);
153328
+ if( ExprHasProperty(pExpr, EP_OuterON) && pNewExpr ){
153329
+ ExprSetProperty(pNewExpr, EP_OuterON);
153356153330
pNewExpr->w.iJoin = pExpr->w.iJoin;
153357153331
}
153358153332
idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC);
153359153333
testcase( idxNew==0 );
153360153334
pNewTerm = &pWC->a[idxNew];
@@ -153717,13 +153691,13 @@
153717153691
pItem->colUsed |= sqlite3ExprColUsed(pColRef);
153718153692
pRhs = sqlite3PExpr(pParse, TK_UPLUS,
153719153693
sqlite3ExprDup(pParse->db, pArgs->a[j].pExpr, 0), 0);
153720153694
pTerm = sqlite3PExpr(pParse, TK_EQ, pColRef, pRhs);
153721153695
if( pItem->fg.jointype & (JT_LEFT|JT_LTORJ) ){
153722
- joinType = EP_FromJoin;
153696
+ joinType = EP_OuterON;
153723153697
}else{
153724
- joinType = EP_InnerJoin;
153698
+ joinType = EP_InnerON;
153725153699
}
153726153700
sqlite3SetJoinExpr(pTerm, pItem->iCursor, joinType);
153727153701
whereClauseInsert(pWC, pTerm, TERM_DYNAMIC);
153728153702
}
153729153703
}
@@ -154060,11 +154034,11 @@
154060154034
if( pTerm->leftCursor==iCur
154061154035
&& pTerm->u.x.leftColumn==iColumn
154062154036
&& (iColumn!=XN_EXPR
154063154037
|| sqlite3ExprCompareSkip(pTerm->pExpr->pLeft,
154064154038
pScan->pIdxExpr,iCur)==0)
154065
- && (pScan->iEquiv<=1 || !ExprHasProperty(pTerm->pExpr, EP_FromJoin))
154039
+ && (pScan->iEquiv<=1 || !ExprHasProperty(pTerm->pExpr, EP_OuterON))
154066154040
){
154067154041
if( (pTerm->eOperator & WO_EQUIV)!=0
154068154042
&& pScan->nEquiv<ArraySize(pScan->aiCur)
154069154043
&& (pX = whereRightSubexprIsColumn(pTerm->pExpr))!=0
154070154044
){
@@ -154487,11 +154461,11 @@
154487154461
){
154488154462
char aff;
154489154463
if( pTerm->leftCursor!=pSrc->iCursor ) return 0;
154490154464
if( (pTerm->eOperator & (WO_EQ|WO_IS))==0 ) return 0;
154491154465
if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
154492
- && !ExprHasProperty(pTerm->pExpr, EP_FromJoin)
154466
+ && !ExprHasProperty(pTerm->pExpr, EP_OuterON)
154493154467
&& (pTerm->eOperator & WO_IS)
154494154468
){
154495154469
/* Cannot use an IS term from the WHERE clause as an index driver for
154496154470
** the RHS of a LEFT JOIN or for the LHS of a RIGHT JOIN. Such a term
154497154471
** can only be used if it is from the ON clause. */
@@ -154911,11 +154885,11 @@
154911154885
/* tag-20191211-002: WHERE-clause constraints are not useful to the
154912154886
** right-hand table of a LEFT JOIN nor to the left-hand table of a
154913154887
** RIGHT JOIN. See tag-20191211-001 for the
154914154888
** equivalent restriction for ordinary tables. */
154915154889
if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
154916
- && !ExprHasProperty(pTerm->pExpr, EP_FromJoin)
154890
+ && !ExprHasProperty(pTerm->pExpr, EP_OuterON)
154917154891
){
154918154892
continue;
154919154893
}
154920154894
nTerm++;
154921154895
pTerm->wtFlags |= TERM_OK;
@@ -155789,11 +155763,11 @@
155789155763
char zType[8];
155790155764
char zLeft[50];
155791155765
memcpy(zType, "....", 5);
155792155766
if( pTerm->wtFlags & TERM_VIRTUAL ) zType[0] = 'V';
155793155767
if( pTerm->eOperator & WO_EQUIV ) zType[1] = 'E';
155794
- if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) zType[2] = 'L';
155768
+ if( ExprHasProperty(pTerm->pExpr, EP_OuterON) ) zType[2] = 'L';
155795155769
if( pTerm->wtFlags & TERM_CODED ) zType[3] = 'C';
155796155770
if( pTerm->eOperator & WO_SINGLE ){
155797155771
assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
155798155772
sqlite3_snprintf(sizeof(zLeft),zLeft,"left={%d:%d}",
155799155773
pTerm->leftCursor, pTerm->u.x.leftColumn);
@@ -156566,11 +156540,11 @@
156566156540
/* tag-20191211-001: Do not allow constraints from the WHERE clause to
156567156541
** be used by the right table of a LEFT JOIN nor by the left table of a
156568156542
** RIGHT JOIN. Only constraints in the
156569156543
** ON clause are allowed. See tag-20191211-002 for the vtab equivalent. */
156570156544
if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
156571
- && !ExprHasProperty(pTerm->pExpr, EP_FromJoin|EP_InnerJoin)
156545
+ && !ExprHasProperty(pTerm->pExpr, EP_OuterON|EP_InnerON)
156572156546
){
156573156547
continue;
156574156548
}
156575156549
156576156550
if( IsUniqueIndex(pProbe) && saved_nEq==pProbe->nKeyCol-1 ){
@@ -156935,12 +156909,12 @@
156935156909
}
156936156910
if( pParse->db->flags & SQLITE_EnableQPSG ) pParse = 0;
156937156911
for(i=0, pTerm=pWC->a; i<pWC->nTerm; i++, pTerm++){
156938156912
Expr *pExpr;
156939156913
pExpr = pTerm->pExpr;
156940
- if( (!ExprHasProperty(pExpr, EP_FromJoin) || pExpr->w.iJoin==iTab)
156941
- && (isLeft==0 || ExprHasProperty(pExpr, EP_FromJoin))
156914
+ if( (!ExprHasProperty(pExpr, EP_OuterON) || pExpr->w.iJoin==iTab)
156915
+ && (isLeft==0 || ExprHasProperty(pExpr, EP_OuterON))
156942156916
&& sqlite3ExprImpliesExpr(pParse, pExpr, pWhere, iTab)
156943156917
&& (pTerm->wtFlags & TERM_VNULL)==0
156944156918
){
156945156919
return 1;
156946156920
}
@@ -157212,11 +157186,18 @@
157212157186
157213157187
pNew->rRun = sqlite3LogEstAdd(pNew->rRun, nLookup);
157214157188
}
157215157189
ApplyCostMultiplier(pNew->rRun, pTab->costMult);
157216157190
whereLoopOutputAdjust(pWC, pNew, rSize);
157217
- rc = whereLoopInsert(pBuilder, pNew);
157191
+ if( (pSrc->fg.jointype & JT_RIGHT)!=0 && pProbe->aColExpr ){
157192
+ /* Do not do an SCAN of a index-on-expression in a RIGHT JOIN
157193
+ ** because the cursor used to access the index might not be
157194
+ ** positioned to the correct row during the right-join no-match
157195
+ ** loop. */
157196
+ }else{
157197
+ rc = whereLoopInsert(pBuilder, pNew);
157198
+ }
157218157199
pNew->nOut = rSize;
157219157200
if( rc ) break;
157220157201
}
157221157202
}
157222157203
@@ -158944,11 +158925,11 @@
158944158925
}
158945158926
if( (tabUsed & pLoop->maskSelf)!=0 ) continue;
158946158927
pEnd = pWInfo->sWC.a + pWInfo->sWC.nTerm;
158947158928
for(pTerm=pWInfo->sWC.a; pTerm<pEnd; pTerm++){
158948158929
if( (pTerm->prereqAll & pLoop->maskSelf)!=0 ){
158949
- if( !ExprHasProperty(pTerm->pExpr, EP_FromJoin)
158930
+ if( !ExprHasProperty(pTerm->pExpr, EP_OuterON)
158950158931
|| pTerm->pExpr->w.iJoin!=pItem->iCursor
158951158932
){
158952158933
break;
158953158934
}
158954158935
}
@@ -159898,10 +159879,11 @@
159898159879
VdbeModuleComment((v, "End WHERE-loop%d: %s", i,
159899159880
pWInfo->pTabList->a[pLevel->iFrom].pTab->zName));
159900159881
}
159901159882
159902159883
assert( pWInfo->nLevel<=pTabList->nSrc );
159884
+ if( pWInfo->pExprMods ) whereUndoExprMods(pWInfo);
159903159885
for(i=0, pLevel=pWInfo->a; i<pWInfo->nLevel; i++, pLevel++){
159904159886
int k, last;
159905159887
VdbeOp *pOp, *pLastOp;
159906159888
Index *pIdx = 0;
159907159889
SrcItem *pTabItem = &pTabList->a[pLevel->iFrom];
@@ -160034,11 +160016,10 @@
160034160016
*/
160035160017
sqlite3VdbeResolveLabel(v, pWInfo->iBreak);
160036160018
160037160019
/* Final cleanup
160038160020
*/
160039
- if( pWInfo->pExprMods ) whereUndoExprMods(pWInfo);
160040160021
pParse->nQueryLoop = pWInfo->savedNQueryLoop;
160041160022
whereInfoFree(db, pWInfo);
160042160023
return;
160043160024
}
160044160025
@@ -163662,22 +163643,22 @@
163662163643
#define sqlite3ParserCTX_PDECL ,Parse *pParse
163663163644
#define sqlite3ParserCTX_PARAM ,pParse
163664163645
#define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
163665163646
#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
163666163647
#define YYFALLBACK 1
163667
-#define YYNSTATE 570
163668
-#define YYNRULE 403
163669
-#define YYNRULE_WITH_ACTION 340
163648
+#define YYNSTATE 576
163649
+#define YYNRULE 405
163650
+#define YYNRULE_WITH_ACTION 342
163670163651
#define YYNTOKEN 185
163671
-#define YY_MAX_SHIFT 569
163672
-#define YY_MIN_SHIFTREDUCE 829
163673
-#define YY_MAX_SHIFTREDUCE 1231
163674
-#define YY_ERROR_ACTION 1232
163675
-#define YY_ACCEPT_ACTION 1233
163676
-#define YY_NO_ACTION 1234
163677
-#define YY_MIN_REDUCE 1235
163678
-#define YY_MAX_REDUCE 1637
163652
+#define YY_MAX_SHIFT 575
163653
+#define YY_MIN_SHIFTREDUCE 835
163654
+#define YY_MAX_SHIFTREDUCE 1239
163655
+#define YY_ERROR_ACTION 1240
163656
+#define YY_ACCEPT_ACTION 1241
163657
+#define YY_NO_ACTION 1242
163658
+#define YY_MIN_REDUCE 1243
163659
+#define YY_MAX_REDUCE 1647
163679163660
/************* End control #defines *******************************************/
163680163661
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
163681163662
163682163663
/* Define the yytestcase() macro to be a no-op if is not already defined
163683163664
** otherwise.
@@ -163740,219 +163721,222 @@
163740163721
** yy_reduce_ofst[] For each state, the offset into yy_action for
163741163722
** shifting non-terminals after a reduce.
163742163723
** yy_default[] Default action for each state.
163743163724
**
163744163725
*********** Begin parsing tables **********************************************/
163745
-#define YY_ACTTAB_COUNT (2064)
163726
+#define YY_ACTTAB_COUNT (2098)
163746163727
static const YYACTIONTYPE yy_action[] = {
163747
- /* 0 */ 562, 204, 562, 116, 112, 225, 562, 116, 112, 225,
163748
- /* 10 */ 562, 1306, 373, 1285, 404, 556, 556, 556, 562, 405,
163749
- /* 20 */ 374, 1306, 1268, 41, 41, 41, 41, 204, 1516, 71,
163750
- /* 30 */ 71, 965, 415, 41, 41, 487, 299, 275, 299, 966,
163751
- /* 40 */ 393, 71, 71, 123, 124, 114, 1209, 1209, 1042, 1045,
163752
- /* 50 */ 1034, 1034, 121, 121, 122, 122, 122, 122, 472, 405,
163753
- /* 60 */ 1233, 1, 1, 569, 2, 1237, 544, 116, 112, 225,
163754
- /* 70 */ 313, 476, 142, 476, 520, 116, 112, 225, 525, 1319,
163755
- /* 80 */ 413, 519, 138, 123, 124, 114, 1209, 1209, 1042, 1045,
163756
- /* 90 */ 1034, 1034, 121, 121, 122, 122, 122, 122, 116, 112,
163757
- /* 100 */ 225, 323, 120, 120, 120, 120, 119, 119, 118, 118,
163758
- /* 110 */ 118, 117, 113, 440, 280, 280, 280, 280, 438, 438,
163759
- /* 120 */ 438, 1557, 372, 1559, 1184, 371, 1155, 559, 1155, 559,
163760
- /* 130 */ 405, 1557, 533, 255, 222, 440, 99, 141, 445, 312,
163761
- /* 140 */ 553, 236, 120, 120, 120, 120, 119, 119, 118, 118,
163762
- /* 150 */ 118, 117, 113, 440, 123, 124, 114, 1209, 1209, 1042,
163763
- /* 160 */ 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, 138,
163764
- /* 170 */ 290, 1184, 335, 444, 118, 118, 118, 117, 113, 440,
163765
- /* 180 */ 125, 1184, 1185, 1186, 144, 437, 436, 562, 117, 113,
163766
- /* 190 */ 440, 122, 122, 122, 122, 115, 120, 120, 120, 120,
163767
- /* 200 */ 119, 119, 118, 118, 118, 117, 113, 440, 450, 110,
163768
- /* 210 */ 13, 13, 542, 120, 120, 120, 120, 119, 119, 118,
163769
- /* 220 */ 118, 118, 117, 113, 440, 418, 312, 553, 1184, 1185,
163770
- /* 230 */ 1186, 145, 1216, 405, 1216, 122, 122, 122, 122, 120,
163771
- /* 240 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113,
163772
- /* 250 */ 440, 461, 338, 1031, 1031, 1043, 1046, 123, 124, 114,
163773
- /* 260 */ 1209, 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122,
163774
- /* 270 */ 122, 122, 1271, 518, 218, 1184, 562, 405, 220, 510,
163775
- /* 280 */ 171, 80, 81, 120, 120, 120, 120, 119, 119, 118,
163776
- /* 290 */ 118, 118, 117, 113, 440, 1001, 16, 16, 1184, 55,
163777
- /* 300 */ 55, 123, 124, 114, 1209, 1209, 1042, 1045, 1034, 1034,
163778
- /* 310 */ 121, 121, 122, 122, 122, 122, 120, 120, 120, 120,
163779
- /* 320 */ 119, 119, 118, 118, 118, 117, 113, 440, 1035, 542,
163780
- /* 330 */ 1184, 369, 1184, 1185, 1186, 248, 1426, 395, 500, 497,
163781
- /* 340 */ 496, 108, 554, 560, 4, 920, 920, 429, 495, 336,
163782
- /* 350 */ 456, 324, 356, 390, 1229, 1184, 1185, 1186, 557, 562,
163783
- /* 360 */ 120, 120, 120, 120, 119, 119, 118, 118, 118, 117,
163784
- /* 370 */ 113, 440, 280, 280, 365, 1570, 1597, 437, 436, 150,
163785
- /* 380 */ 405, 441, 71, 71, 1278, 559, 1213, 1184, 1185, 1186,
163786
- /* 390 */ 83, 1215, 267, 551, 539, 511, 1551, 562, 96, 1214,
163787
- /* 400 */ 6, 1270, 468, 138, 123, 124, 114, 1209, 1209, 1042,
163788
- /* 410 */ 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, 544,
163789
- /* 420 */ 13, 13, 1021, 503, 1216, 1184, 1216, 543, 106, 106,
163790
- /* 430 */ 218, 562, 1230, 171, 562, 423, 107, 193, 441, 564,
163791
- /* 440 */ 563, 426, 1542, 1011, 321, 545, 1184, 266, 283, 364,
163792
- /* 450 */ 506, 359, 505, 253, 71, 71, 539, 71, 71, 355,
163793
- /* 460 */ 312, 553, 1603, 120, 120, 120, 120, 119, 119, 118,
163794
- /* 470 */ 118, 118, 117, 113, 440, 1011, 1011, 1013, 1014, 27,
163795
- /* 480 */ 280, 280, 1184, 1185, 1186, 1150, 562, 1602, 405, 895,
163796
- /* 490 */ 186, 544, 352, 559, 544, 931, 529, 513, 1150, 512,
163797
- /* 500 */ 409, 1150, 546, 1184, 1185, 1186, 562, 540, 1544, 51,
163798
- /* 510 */ 51, 210, 123, 124, 114, 1209, 1209, 1042, 1045, 1034,
163799
- /* 520 */ 1034, 121, 121, 122, 122, 122, 122, 1184, 470, 56,
163800
- /* 530 */ 56, 405, 280, 280, 1480, 501, 119, 119, 118, 118,
163801
- /* 540 */ 118, 117, 113, 440, 1001, 559, 514, 213, 537, 1551,
163802
- /* 550 */ 312, 553, 138, 6, 528, 123, 124, 114, 1209, 1209,
163803
- /* 560 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122,
163804
- /* 570 */ 1545, 120, 120, 120, 120, 119, 119, 118, 118, 118,
163805
- /* 580 */ 117, 113, 440, 481, 1184, 1185, 1186, 478, 277, 1259,
163806
- /* 590 */ 951, 248, 1184, 369, 500, 497, 496, 1184, 336, 565,
163807
- /* 600 */ 1184, 565, 405, 288, 495, 951, 870, 187, 476, 312,
163808
- /* 610 */ 553, 380, 286, 376, 120, 120, 120, 120, 119, 119,
163809
- /* 620 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209,
163810
- /* 630 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163811
- /* 640 */ 122, 405, 390, 1128, 1184, 863, 98, 280, 280, 1184,
163812
- /* 650 */ 1185, 1186, 369, 1085, 1184, 1185, 1186, 1184, 1185, 1186,
163813
- /* 660 */ 559, 451, 32, 369, 229, 123, 124, 114, 1209, 1209,
163814
- /* 670 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122,
163815
- /* 680 */ 1425, 953, 562, 224, 952, 120, 120, 120, 120, 119,
163816
- /* 690 */ 119, 118, 118, 118, 117, 113, 440, 1150, 224, 1184,
163817
- /* 700 */ 153, 1184, 1185, 1186, 1543, 13, 13, 297, 951, 1224,
163818
- /* 710 */ 1150, 149, 405, 1150, 369, 1573, 1168, 5, 365, 1570,
163819
- /* 720 */ 425, 1230, 3, 951, 120, 120, 120, 120, 119, 119,
163820
- /* 730 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209,
163821
- /* 740 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163822
- /* 750 */ 122, 405, 204, 561, 1184, 1022, 1184, 1185, 1186, 1184,
163823
- /* 760 */ 384, 846, 151, 1542, 282, 398, 1090, 1090, 484, 562,
163824
- /* 770 */ 461, 338, 1311, 1311, 1542, 123, 124, 114, 1209, 1209,
163825
- /* 780 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122,
163826
- /* 790 */ 127, 562, 13, 13, 370, 120, 120, 120, 120, 119,
163827
- /* 800 */ 119, 118, 118, 118, 117, 113, 440, 298, 562, 449,
163828
- /* 810 */ 524, 1184, 1185, 1186, 13, 13, 1184, 1185, 1186, 1289,
163829
- /* 820 */ 459, 1259, 405, 1309, 1309, 1542, 1006, 449, 448, 196,
163830
- /* 830 */ 295, 71, 71, 1257, 120, 120, 120, 120, 119, 119,
163831
- /* 840 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209,
163832
- /* 850 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163833
- /* 860 */ 122, 405, 223, 1065, 1150, 280, 280, 415, 308, 274,
163834
- /* 870 */ 274, 281, 281, 1411, 402, 401, 378, 1150, 559, 562,
163835
- /* 880 */ 1150, 1188, 559, 1590, 559, 123, 124, 114, 1209, 1209,
163836
- /* 890 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122,
163837
- /* 900 */ 449, 1472, 13, 13, 1526, 120, 120, 120, 120, 119,
163838
- /* 910 */ 119, 118, 118, 118, 117, 113, 440, 197, 562, 350,
163839
- /* 920 */ 1576, 569, 2, 1237, 834, 835, 836, 1552, 313, 1204,
163840
- /* 930 */ 142, 6, 405, 251, 250, 249, 202, 1319, 9, 1188,
163841
- /* 940 */ 258, 71, 71, 420, 120, 120, 120, 120, 119, 119,
163842
- /* 950 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209,
163843
- /* 960 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163844
- /* 970 */ 122, 562, 280, 280, 562, 1205, 405, 568, 309, 1237,
163845
- /* 980 */ 345, 1288, 348, 415, 313, 559, 142, 487, 521, 1633,
163846
- /* 990 */ 391, 367, 487, 1319, 70, 70, 1287, 71, 71, 236,
163847
- /* 1000 */ 1317, 101, 114, 1209, 1209, 1042, 1045, 1034, 1034, 121,
163848
- /* 1010 */ 121, 122, 122, 122, 122, 120, 120, 120, 120, 119,
163849
- /* 1020 */ 119, 118, 118, 118, 117, 113, 440, 1106, 280, 280,
163850
- /* 1030 */ 424, 444, 1515, 1205, 435, 280, 280, 1479, 1344, 307,
163851
- /* 1040 */ 470, 559, 1107, 965, 487, 487, 213, 1255, 559, 1528,
163852
- /* 1050 */ 562, 966, 203, 562, 1021, 236, 379, 1108, 515, 120,
163853
- /* 1060 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113,
163854
- /* 1070 */ 440, 1012, 104, 71, 71, 1011, 13, 13, 906, 562,
163855
- /* 1080 */ 1485, 562, 280, 280, 95, 522, 487, 444, 907, 1318,
163856
- /* 1090 */ 1314, 541, 405, 280, 280, 559, 147, 205, 1485, 1487,
163857
- /* 1100 */ 258, 446, 15, 15, 43, 43, 559, 1011, 1011, 1013,
163858
- /* 1110 */ 439, 328, 405, 523, 12, 291, 123, 124, 114, 1209,
163859
- /* 1120 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163860
- /* 1130 */ 122, 343, 405, 858, 1524, 1205, 123, 124, 114, 1209,
163861
- /* 1140 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163862
- /* 1150 */ 122, 1129, 1631, 470, 1631, 367, 123, 111, 114, 1209,
163863
- /* 1160 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163864
- /* 1170 */ 122, 1485, 325, 470, 327, 120, 120, 120, 120, 119,
163865
- /* 1180 */ 119, 118, 118, 118, 117, 113, 440, 199, 1411, 562,
163866
- /* 1190 */ 1286, 858, 460, 1205, 432, 120, 120, 120, 120, 119,
163867
- /* 1200 */ 119, 118, 118, 118, 117, 113, 440, 547, 1129, 1632,
163868
- /* 1210 */ 535, 1632, 57, 57, 886, 120, 120, 120, 120, 119,
163869
- /* 1220 */ 119, 118, 118, 118, 117, 113, 440, 562, 294, 534,
163870
- /* 1230 */ 1127, 1411, 1549, 1550, 1323, 405, 6, 6, 1161, 1260,
163871
- /* 1240 */ 411, 316, 280, 280, 1411, 504, 559, 521, 296, 453,
163872
- /* 1250 */ 44, 44, 562, 887, 12, 559, 326, 474, 421, 403,
163873
- /* 1260 */ 124, 114, 1209, 1209, 1042, 1045, 1034, 1034, 121, 121,
163874
- /* 1270 */ 122, 122, 122, 122, 562, 58, 58, 284, 1184, 1411,
163875
- /* 1280 */ 492, 454, 388, 388, 387, 269, 385, 1127, 1548, 843,
163876
- /* 1290 */ 1161, 403, 6, 562, 317, 1150, 466, 59, 59, 1547,
163877
- /* 1300 */ 1106, 422, 230, 6, 319, 252, 536, 252, 1150, 427,
163878
- /* 1310 */ 562, 1150, 318, 17, 483, 1107, 60, 60, 120, 120,
163879
- /* 1320 */ 120, 120, 119, 119, 118, 118, 118, 117, 113, 440,
163880
- /* 1330 */ 1108, 212, 477, 61, 61, 1184, 1185, 1186, 108, 554,
163881
- /* 1340 */ 320, 4, 232, 452, 522, 562, 233, 452, 562, 433,
163882
- /* 1350 */ 164, 550, 416, 137, 475, 557, 562, 289, 562, 1087,
163883
- /* 1360 */ 562, 289, 562, 1087, 527, 562, 866, 8, 62, 62,
163884
- /* 1370 */ 231, 45, 45, 562, 410, 562, 410, 562, 441, 46,
163885
- /* 1380 */ 46, 47, 47, 49, 49, 50, 50, 195, 63, 63,
163886
- /* 1390 */ 551, 562, 355, 562, 98, 482, 64, 64, 65, 65,
163887
- /* 1400 */ 14, 14, 555, 411, 531, 406, 562, 1021, 562, 530,
163888
- /* 1410 */ 312, 553, 312, 553, 66, 66, 129, 129, 562, 1021,
163889
- /* 1420 */ 562, 508, 926, 866, 1012, 106, 106, 925, 1011, 67,
163890
- /* 1430 */ 67, 52, 52, 107, 447, 441, 564, 563, 412, 173,
163891
- /* 1440 */ 1011, 68, 68, 69, 69, 562, 463, 562, 926, 467,
163892
- /* 1450 */ 1356, 279, 222, 925, 311, 1355, 403, 562, 455, 403,
163893
- /* 1460 */ 1011, 1011, 1013, 235, 403, 84, 209, 1342, 53, 53,
163894
- /* 1470 */ 159, 159, 1011, 1011, 1013, 1014, 27, 1575, 1172, 443,
163895
- /* 1480 */ 160, 160, 284, 95, 105, 1531, 103, 388, 388, 387,
163896
- /* 1490 */ 269, 385, 562, 873, 843, 877, 562, 108, 554, 462,
163897
- /* 1500 */ 4, 562, 148, 30, 38, 562, 1124, 230, 392, 319,
163898
- /* 1510 */ 108, 554, 523, 4, 557, 76, 76, 318, 562, 54,
163899
- /* 1520 */ 54, 562, 333, 464, 72, 72, 329, 557, 130, 130,
163900
- /* 1530 */ 562, 285, 1504, 562, 31, 1503, 562, 441, 334, 479,
163901
- /* 1540 */ 98, 73, 73, 340, 157, 157, 292, 232, 1072, 551,
163902
- /* 1550 */ 441, 873, 1352, 131, 131, 164, 132, 132, 137, 128,
163903
- /* 1560 */ 128, 1564, 551, 531, 562, 315, 562, 344, 532, 1003,
163904
- /* 1570 */ 469, 257, 257, 885, 884, 231, 531, 562, 1021, 562,
163905
- /* 1580 */ 471, 530, 257, 363, 106, 106, 517, 158, 158, 152,
163906
- /* 1590 */ 152, 1021, 107, 362, 441, 564, 563, 106, 106, 1011,
163907
- /* 1600 */ 136, 136, 135, 135, 562, 107, 1072, 441, 564, 563,
163908
- /* 1610 */ 406, 347, 1011, 562, 349, 312, 553, 562, 339, 562,
163909
- /* 1620 */ 98, 493, 353, 254, 98, 892, 893, 133, 133, 351,
163910
- /* 1630 */ 1302, 1011, 1011, 1013, 1014, 27, 134, 134, 1015, 447,
163911
- /* 1640 */ 75, 75, 77, 77, 1011, 1011, 1013, 1014, 27, 1172,
163912
- /* 1650 */ 443, 562, 358, 284, 108, 554, 368, 4, 388, 388,
163913
- /* 1660 */ 387, 269, 385, 562, 1133, 843, 562, 1068, 956, 254,
163914
- /* 1670 */ 257, 557, 968, 969, 74, 74, 549, 923, 230, 110,
163915
- /* 1680 */ 319, 108, 554, 1084, 4, 1084, 42, 42, 318, 48,
163916
- /* 1690 */ 48, 1083, 1365, 1083, 441, 856, 1015, 146, 557, 924,
163917
- /* 1700 */ 1410, 110, 1338, 1350, 548, 1416, 551, 1267, 207, 1258,
163918
- /* 1710 */ 1246, 1245, 1247, 1583, 11, 488, 272, 215, 232, 1335,
163919
- /* 1720 */ 304, 441, 305, 306, 389, 228, 164, 1397, 1392, 137,
163920
- /* 1730 */ 287, 331, 332, 551, 293, 1021, 1385, 337, 473, 200,
163921
- /* 1740 */ 361, 106, 106, 930, 498, 1402, 231, 1401, 1285, 107,
163922
- /* 1750 */ 396, 441, 564, 563, 219, 1476, 1011, 1347, 1475, 1348,
163923
- /* 1760 */ 1346, 1345, 1021, 1224, 552, 1586, 261, 1221, 106, 106,
163924
- /* 1770 */ 1523, 201, 383, 1521, 214, 414, 107, 83, 441, 564,
163925
- /* 1780 */ 563, 406, 211, 1011, 175, 1398, 312, 553, 1011, 1011,
163926
- /* 1790 */ 1013, 1014, 27, 226, 184, 169, 100, 554, 79, 4,
163927
- /* 1800 */ 82, 457, 35, 179, 458, 177, 491, 238, 96, 1481,
163928
- /* 1810 */ 447, 180, 1404, 557, 181, 1011, 1011, 1013, 1014, 27,
163929
- /* 1820 */ 182, 1403, 394, 36, 465, 1406, 397, 188, 1470, 480,
163930
- /* 1830 */ 242, 89, 1492, 486, 342, 244, 441, 273, 192, 346,
163931
- /* 1840 */ 489, 245, 399, 1248, 428, 246, 507, 1296, 551, 91,
163932
- /* 1850 */ 877, 1305, 1304, 220, 1601, 1295, 1303, 430, 431, 516,
163933
- /* 1860 */ 1569, 259, 400, 302, 1600, 1275, 303, 260, 360, 1274,
163934
- /* 1870 */ 1273, 1599, 366, 1555, 434, 1554, 1370, 1021, 1369, 542,
163935
- /* 1880 */ 126, 10, 1456, 106, 106, 377, 102, 97, 310, 526,
163936
- /* 1890 */ 34, 107, 566, 441, 564, 563, 1178, 271, 1011, 268,
163937
- /* 1900 */ 270, 567, 1243, 1238, 206, 1328, 375, 381, 1327, 382,
163938
- /* 1910 */ 407, 161, 174, 408, 1508, 1509, 143, 300, 830, 162,
163939
- /* 1920 */ 1507, 1506, 163, 442, 208, 314, 227, 216, 217, 78,
163940
- /* 1930 */ 1011, 1011, 1013, 1014, 27, 140, 1082, 322, 1080, 165,
163941
- /* 1940 */ 176, 1204, 234, 178, 909, 330, 237, 1096, 183, 166,
163942
- /* 1950 */ 167, 417, 85, 86, 419, 185, 87, 88, 168, 1099,
163943
- /* 1960 */ 239, 1095, 240, 154, 18, 241, 341, 1218, 257, 1088,
163944
- /* 1970 */ 243, 485, 190, 189, 37, 845, 490, 362, 247, 494,
163945
- /* 1980 */ 357, 191, 875, 90, 19, 502, 354, 20, 499, 92,
163946
- /* 1990 */ 170, 155, 888, 93, 301, 509, 94, 1166, 156, 1048,
163947
- /* 2000 */ 1135, 39, 221, 1134, 276, 278, 256, 194, 110, 960,
163948
- /* 2010 */ 954, 1156, 21, 1152, 22, 1160, 1140, 1154, 23, 33,
163949
- /* 2020 */ 24, 1159, 25, 538, 26, 198, 98, 1063, 1049, 1047,
163950
- /* 2030 */ 1051, 7, 1105, 262, 1104, 263, 1052, 28, 40, 558,
163951
- /* 2040 */ 1016, 857, 109, 29, 919, 386, 139, 172, 264, 265,
163952
- /* 2050 */ 1174, 1592, 1173, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
163953
- /* 2060 */ 1234, 1234, 1234, 1591,
163728
+ /* 0 */ 568, 208, 568, 118, 115, 229, 568, 118, 115, 229,
163729
+ /* 10 */ 568, 1314, 377, 1293, 408, 562, 562, 562, 568, 409,
163730
+ /* 20 */ 378, 1314, 1276, 41, 41, 41, 41, 208, 1526, 71,
163731
+ /* 30 */ 71, 971, 419, 41, 41, 491, 303, 279, 303, 972,
163732
+ /* 40 */ 397, 71, 71, 125, 126, 80, 1217, 1217, 1050, 1053,
163733
+ /* 50 */ 1040, 1040, 123, 123, 124, 124, 124, 124, 476, 409,
163734
+ /* 60 */ 1241, 1, 1, 575, 2, 1245, 550, 118, 115, 229,
163735
+ /* 70 */ 317, 480, 146, 480, 524, 118, 115, 229, 529, 1327,
163736
+ /* 80 */ 417, 523, 142, 125, 126, 80, 1217, 1217, 1050, 1053,
163737
+ /* 90 */ 1040, 1040, 123, 123, 124, 124, 124, 124, 118, 115,
163738
+ /* 100 */ 229, 327, 122, 122, 122, 122, 121, 121, 120, 120,
163739
+ /* 110 */ 120, 119, 116, 444, 284, 284, 284, 284, 442, 442,
163740
+ /* 120 */ 442, 1567, 376, 1569, 1192, 375, 1163, 565, 1163, 565,
163741
+ /* 130 */ 409, 1567, 537, 259, 226, 444, 101, 145, 449, 316,
163742
+ /* 140 */ 559, 240, 122, 122, 122, 122, 121, 121, 120, 120,
163743
+ /* 150 */ 120, 119, 116, 444, 125, 126, 80, 1217, 1217, 1050,
163744
+ /* 160 */ 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, 142,
163745
+ /* 170 */ 294, 1192, 339, 448, 120, 120, 120, 119, 116, 444,
163746
+ /* 180 */ 127, 1192, 1193, 1194, 148, 441, 440, 568, 119, 116,
163747
+ /* 190 */ 444, 124, 124, 124, 124, 117, 122, 122, 122, 122,
163748
+ /* 200 */ 121, 121, 120, 120, 120, 119, 116, 444, 454, 113,
163749
+ /* 210 */ 13, 13, 546, 122, 122, 122, 122, 121, 121, 120,
163750
+ /* 220 */ 120, 120, 119, 116, 444, 422, 316, 559, 1192, 1193,
163751
+ /* 230 */ 1194, 149, 1224, 409, 1224, 124, 124, 124, 124, 122,
163752
+ /* 240 */ 122, 122, 122, 121, 121, 120, 120, 120, 119, 116,
163753
+ /* 250 */ 444, 465, 342, 1037, 1037, 1051, 1054, 125, 126, 80,
163754
+ /* 260 */ 1217, 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124,
163755
+ /* 270 */ 124, 124, 1279, 522, 222, 1192, 568, 409, 224, 514,
163756
+ /* 280 */ 175, 82, 83, 122, 122, 122, 122, 121, 121, 120,
163757
+ /* 290 */ 120, 120, 119, 116, 444, 1007, 16, 16, 1192, 133,
163758
+ /* 300 */ 133, 125, 126, 80, 1217, 1217, 1050, 1053, 1040, 1040,
163759
+ /* 310 */ 123, 123, 124, 124, 124, 124, 122, 122, 122, 122,
163760
+ /* 320 */ 121, 121, 120, 120, 120, 119, 116, 444, 1041, 546,
163761
+ /* 330 */ 1192, 373, 1192, 1193, 1194, 252, 1434, 399, 504, 501,
163762
+ /* 340 */ 500, 111, 560, 566, 4, 926, 926, 433, 499, 340,
163763
+ /* 350 */ 460, 328, 360, 394, 1237, 1192, 1193, 1194, 563, 568,
163764
+ /* 360 */ 122, 122, 122, 122, 121, 121, 120, 120, 120, 119,
163765
+ /* 370 */ 116, 444, 284, 284, 369, 1580, 1607, 441, 440, 154,
163766
+ /* 380 */ 409, 445, 71, 71, 1286, 565, 1221, 1192, 1193, 1194,
163767
+ /* 390 */ 85, 1223, 271, 557, 543, 515, 1561, 568, 98, 1222,
163768
+ /* 400 */ 6, 1278, 472, 142, 125, 126, 80, 1217, 1217, 1050,
163769
+ /* 410 */ 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, 550,
163770
+ /* 420 */ 13, 13, 1027, 507, 1224, 1192, 1224, 549, 109, 109,
163771
+ /* 430 */ 222, 568, 1238, 175, 568, 427, 110, 197, 445, 570,
163772
+ /* 440 */ 569, 430, 1552, 1017, 325, 551, 1192, 270, 287, 368,
163773
+ /* 450 */ 510, 363, 509, 257, 71, 71, 543, 71, 71, 359,
163774
+ /* 460 */ 316, 559, 1613, 122, 122, 122, 122, 121, 121, 120,
163775
+ /* 470 */ 120, 120, 119, 116, 444, 1017, 1017, 1019, 1020, 27,
163776
+ /* 480 */ 284, 284, 1192, 1193, 1194, 1158, 568, 1612, 409, 901,
163777
+ /* 490 */ 190, 550, 356, 565, 550, 937, 533, 517, 1158, 516,
163778
+ /* 500 */ 413, 1158, 552, 1192, 1193, 1194, 568, 544, 1554, 51,
163779
+ /* 510 */ 51, 214, 125, 126, 80, 1217, 1217, 1050, 1053, 1040,
163780
+ /* 520 */ 1040, 123, 123, 124, 124, 124, 124, 1192, 474, 135,
163781
+ /* 530 */ 135, 409, 284, 284, 1490, 505, 121, 121, 120, 120,
163782
+ /* 540 */ 120, 119, 116, 444, 1007, 565, 518, 217, 541, 1561,
163783
+ /* 550 */ 316, 559, 142, 6, 532, 125, 126, 80, 1217, 1217,
163784
+ /* 560 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124,
163785
+ /* 570 */ 1555, 122, 122, 122, 122, 121, 121, 120, 120, 120,
163786
+ /* 580 */ 119, 116, 444, 485, 1192, 1193, 1194, 482, 281, 1267,
163787
+ /* 590 */ 957, 252, 1192, 373, 504, 501, 500, 1192, 340, 571,
163788
+ /* 600 */ 1192, 571, 409, 292, 499, 957, 876, 191, 480, 316,
163789
+ /* 610 */ 559, 384, 290, 380, 122, 122, 122, 122, 121, 121,
163790
+ /* 620 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217,
163791
+ /* 630 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163792
+ /* 640 */ 124, 409, 394, 1136, 1192, 869, 100, 284, 284, 1192,
163793
+ /* 650 */ 1193, 1194, 373, 1093, 1192, 1193, 1194, 1192, 1193, 1194,
163794
+ /* 660 */ 565, 455, 32, 373, 233, 125, 126, 80, 1217, 1217,
163795
+ /* 670 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124,
163796
+ /* 680 */ 1433, 959, 568, 228, 958, 122, 122, 122, 122, 121,
163797
+ /* 690 */ 121, 120, 120, 120, 119, 116, 444, 1158, 228, 1192,
163798
+ /* 700 */ 157, 1192, 1193, 1194, 1553, 13, 13, 301, 957, 1232,
163799
+ /* 710 */ 1158, 153, 409, 1158, 373, 1583, 1176, 5, 369, 1580,
163800
+ /* 720 */ 429, 1238, 3, 957, 122, 122, 122, 122, 121, 121,
163801
+ /* 730 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217,
163802
+ /* 740 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163803
+ /* 750 */ 124, 409, 208, 567, 1192, 1028, 1192, 1193, 1194, 1192,
163804
+ /* 760 */ 388, 852, 155, 1552, 286, 402, 1098, 1098, 488, 568,
163805
+ /* 770 */ 465, 342, 1319, 1319, 1552, 125, 126, 80, 1217, 1217,
163806
+ /* 780 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124,
163807
+ /* 790 */ 129, 568, 13, 13, 374, 122, 122, 122, 122, 121,
163808
+ /* 800 */ 121, 120, 120, 120, 119, 116, 444, 302, 568, 453,
163809
+ /* 810 */ 528, 1192, 1193, 1194, 13, 13, 1192, 1193, 1194, 1297,
163810
+ /* 820 */ 463, 1267, 409, 1317, 1317, 1552, 1012, 453, 452, 200,
163811
+ /* 830 */ 299, 71, 71, 1265, 122, 122, 122, 122, 121, 121,
163812
+ /* 840 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217,
163813
+ /* 850 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163814
+ /* 860 */ 124, 409, 227, 1073, 1158, 284, 284, 419, 312, 278,
163815
+ /* 870 */ 278, 285, 285, 1419, 406, 405, 382, 1158, 565, 568,
163816
+ /* 880 */ 1158, 1196, 565, 1600, 565, 125, 126, 80, 1217, 1217,
163817
+ /* 890 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124,
163818
+ /* 900 */ 453, 1482, 13, 13, 1536, 122, 122, 122, 122, 121,
163819
+ /* 910 */ 121, 120, 120, 120, 119, 116, 444, 201, 568, 354,
163820
+ /* 920 */ 1586, 575, 2, 1245, 840, 841, 842, 1562, 317, 1212,
163821
+ /* 930 */ 146, 6, 409, 255, 254, 253, 206, 1327, 9, 1196,
163822
+ /* 940 */ 262, 71, 71, 424, 122, 122, 122, 122, 121, 121,
163823
+ /* 950 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217,
163824
+ /* 960 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163825
+ /* 970 */ 124, 568, 284, 284, 568, 1213, 409, 574, 313, 1245,
163826
+ /* 980 */ 349, 1296, 352, 419, 317, 565, 146, 491, 525, 1643,
163827
+ /* 990 */ 395, 371, 491, 1327, 70, 70, 1295, 71, 71, 240,
163828
+ /* 1000 */ 1325, 104, 80, 1217, 1217, 1050, 1053, 1040, 1040, 123,
163829
+ /* 1010 */ 123, 124, 124, 124, 124, 122, 122, 122, 122, 121,
163830
+ /* 1020 */ 121, 120, 120, 120, 119, 116, 444, 1114, 284, 284,
163831
+ /* 1030 */ 428, 448, 1525, 1213, 439, 284, 284, 1489, 1352, 311,
163832
+ /* 1040 */ 474, 565, 1115, 971, 491, 491, 217, 1263, 565, 1538,
163833
+ /* 1050 */ 568, 972, 207, 568, 1027, 240, 383, 1116, 519, 122,
163834
+ /* 1060 */ 122, 122, 122, 121, 121, 120, 120, 120, 119, 116,
163835
+ /* 1070 */ 444, 1018, 107, 71, 71, 1017, 13, 13, 912, 568,
163836
+ /* 1080 */ 1495, 568, 284, 284, 97, 526, 491, 448, 913, 1326,
163837
+ /* 1090 */ 1322, 545, 409, 284, 284, 565, 151, 209, 1495, 1497,
163838
+ /* 1100 */ 262, 450, 55, 55, 56, 56, 565, 1017, 1017, 1019,
163839
+ /* 1110 */ 443, 332, 409, 527, 12, 295, 125, 126, 80, 1217,
163840
+ /* 1120 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163841
+ /* 1130 */ 124, 347, 409, 864, 1534, 1213, 125, 126, 80, 1217,
163842
+ /* 1140 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163843
+ /* 1150 */ 124, 1137, 1641, 474, 1641, 371, 125, 114, 80, 1217,
163844
+ /* 1160 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163845
+ /* 1170 */ 124, 1495, 329, 474, 331, 122, 122, 122, 122, 121,
163846
+ /* 1180 */ 121, 120, 120, 120, 119, 116, 444, 203, 1419, 568,
163847
+ /* 1190 */ 1294, 864, 464, 1213, 436, 122, 122, 122, 122, 121,
163848
+ /* 1200 */ 121, 120, 120, 120, 119, 116, 444, 553, 1137, 1642,
163849
+ /* 1210 */ 539, 1642, 15, 15, 892, 122, 122, 122, 122, 121,
163850
+ /* 1220 */ 121, 120, 120, 120, 119, 116, 444, 568, 298, 538,
163851
+ /* 1230 */ 1135, 1419, 1559, 1560, 1331, 409, 6, 6, 1169, 1268,
163852
+ /* 1240 */ 415, 320, 284, 284, 1419, 508, 565, 525, 300, 457,
163853
+ /* 1250 */ 43, 43, 568, 893, 12, 565, 330, 478, 425, 407,
163854
+ /* 1260 */ 126, 80, 1217, 1217, 1050, 1053, 1040, 1040, 123, 123,
163855
+ /* 1270 */ 124, 124, 124, 124, 568, 57, 57, 288, 1192, 1419,
163856
+ /* 1280 */ 496, 458, 392, 392, 391, 273, 389, 1135, 1558, 849,
163857
+ /* 1290 */ 1169, 407, 6, 568, 321, 1158, 470, 44, 44, 1557,
163858
+ /* 1300 */ 1114, 426, 234, 6, 323, 256, 540, 256, 1158, 431,
163859
+ /* 1310 */ 568, 1158, 322, 17, 487, 1115, 58, 58, 122, 122,
163860
+ /* 1320 */ 122, 122, 121, 121, 120, 120, 120, 119, 116, 444,
163861
+ /* 1330 */ 1116, 216, 481, 59, 59, 1192, 1193, 1194, 111, 560,
163862
+ /* 1340 */ 324, 4, 236, 456, 526, 568, 237, 456, 568, 437,
163863
+ /* 1350 */ 168, 556, 420, 141, 479, 563, 568, 293, 568, 1095,
163864
+ /* 1360 */ 568, 293, 568, 1095, 531, 568, 872, 8, 60, 60,
163865
+ /* 1370 */ 235, 61, 61, 568, 414, 568, 414, 568, 445, 62,
163866
+ /* 1380 */ 62, 45, 45, 46, 46, 47, 47, 199, 49, 49,
163867
+ /* 1390 */ 557, 568, 359, 568, 100, 486, 50, 50, 63, 63,
163868
+ /* 1400 */ 64, 64, 561, 415, 535, 410, 568, 1027, 568, 534,
163869
+ /* 1410 */ 316, 559, 316, 559, 65, 65, 14, 14, 568, 1027,
163870
+ /* 1420 */ 568, 512, 932, 872, 1018, 109, 109, 931, 1017, 66,
163871
+ /* 1430 */ 66, 131, 131, 110, 451, 445, 570, 569, 416, 177,
163872
+ /* 1440 */ 1017, 132, 132, 67, 67, 568, 467, 568, 932, 471,
163873
+ /* 1450 */ 1364, 283, 226, 931, 315, 1363, 407, 568, 459, 407,
163874
+ /* 1460 */ 1017, 1017, 1019, 239, 407, 86, 213, 1350, 52, 52,
163875
+ /* 1470 */ 68, 68, 1017, 1017, 1019, 1020, 27, 1585, 1180, 447,
163876
+ /* 1480 */ 69, 69, 288, 97, 108, 1541, 106, 392, 392, 391,
163877
+ /* 1490 */ 273, 389, 568, 879, 849, 883, 568, 111, 560, 466,
163878
+ /* 1500 */ 4, 568, 152, 30, 38, 568, 1132, 234, 396, 323,
163879
+ /* 1510 */ 111, 560, 527, 4, 563, 53, 53, 322, 568, 163,
163880
+ /* 1520 */ 163, 568, 337, 468, 164, 164, 333, 563, 76, 76,
163881
+ /* 1530 */ 568, 289, 1514, 568, 31, 1513, 568, 445, 338, 483,
163882
+ /* 1540 */ 100, 54, 54, 344, 72, 72, 296, 236, 1080, 557,
163883
+ /* 1550 */ 445, 879, 1360, 134, 134, 168, 73, 73, 141, 161,
163884
+ /* 1560 */ 161, 1574, 557, 535, 568, 319, 568, 348, 536, 1009,
163885
+ /* 1570 */ 473, 261, 261, 891, 890, 235, 535, 568, 1027, 568,
163886
+ /* 1580 */ 475, 534, 261, 367, 109, 109, 521, 136, 136, 130,
163887
+ /* 1590 */ 130, 1027, 110, 366, 445, 570, 569, 109, 109, 1017,
163888
+ /* 1600 */ 162, 162, 156, 156, 568, 110, 1080, 445, 570, 569,
163889
+ /* 1610 */ 410, 351, 1017, 568, 353, 316, 559, 568, 343, 568,
163890
+ /* 1620 */ 100, 497, 357, 258, 100, 898, 899, 140, 140, 355,
163891
+ /* 1630 */ 1310, 1017, 1017, 1019, 1020, 27, 139, 139, 362, 451,
163892
+ /* 1640 */ 137, 137, 138, 138, 1017, 1017, 1019, 1020, 27, 1180,
163893
+ /* 1650 */ 447, 568, 372, 288, 111, 560, 1021, 4, 392, 392,
163894
+ /* 1660 */ 391, 273, 389, 568, 1141, 849, 568, 1076, 568, 258,
163895
+ /* 1670 */ 492, 563, 568, 211, 75, 75, 555, 962, 234, 261,
163896
+ /* 1680 */ 323, 111, 560, 929, 4, 113, 77, 77, 322, 74,
163897
+ /* 1690 */ 74, 42, 42, 1373, 445, 48, 48, 1418, 563, 974,
163898
+ /* 1700 */ 975, 1092, 1091, 1092, 1091, 862, 557, 150, 930, 1346,
163899
+ /* 1710 */ 113, 1358, 554, 1424, 1021, 1275, 1266, 1254, 236, 1253,
163900
+ /* 1720 */ 1255, 445, 1593, 1343, 308, 276, 168, 309, 11, 141,
163901
+ /* 1730 */ 393, 310, 232, 557, 1405, 1027, 335, 291, 1400, 219,
163902
+ /* 1740 */ 336, 109, 109, 936, 297, 1410, 235, 341, 477, 110,
163903
+ /* 1750 */ 502, 445, 570, 569, 1393, 1409, 1017, 400, 1293, 365,
163904
+ /* 1760 */ 223, 1486, 1027, 1485, 1355, 1356, 1354, 1353, 109, 109,
163905
+ /* 1770 */ 204, 1596, 1232, 558, 265, 218, 110, 205, 445, 570,
163906
+ /* 1780 */ 569, 410, 387, 1017, 1533, 179, 316, 559, 1017, 1017,
163907
+ /* 1790 */ 1019, 1020, 27, 230, 1531, 1229, 79, 560, 85, 4,
163908
+ /* 1800 */ 418, 215, 548, 81, 84, 188, 1406, 173, 181, 461,
163909
+ /* 1810 */ 451, 35, 462, 563, 183, 1017, 1017, 1019, 1020, 27,
163910
+ /* 1820 */ 184, 1491, 185, 186, 495, 242, 98, 398, 1412, 36,
163911
+ /* 1830 */ 1411, 484, 91, 469, 401, 1414, 445, 192, 1480, 246,
163912
+ /* 1840 */ 1502, 490, 346, 277, 248, 196, 493, 511, 557, 350,
163913
+ /* 1850 */ 1256, 249, 250, 403, 1313, 1312, 111, 560, 432, 4,
163914
+ /* 1860 */ 1311, 1304, 93, 1611, 883, 1610, 224, 404, 434, 520,
163915
+ /* 1870 */ 263, 435, 1579, 563, 1283, 1282, 364, 1027, 306, 1281,
163916
+ /* 1880 */ 264, 1609, 1565, 109, 109, 370, 1303, 307, 1564, 438,
163917
+ /* 1890 */ 128, 110, 1378, 445, 570, 569, 445, 546, 1017, 10,
163918
+ /* 1900 */ 1466, 105, 381, 1377, 34, 572, 99, 1336, 557, 314,
163919
+ /* 1910 */ 1186, 530, 272, 274, 379, 210, 1335, 547, 385, 386,
163920
+ /* 1920 */ 275, 573, 1251, 1246, 411, 412, 1518, 165, 178, 1519,
163921
+ /* 1930 */ 1017, 1017, 1019, 1020, 27, 1517, 1516, 1027, 78, 147,
163922
+ /* 1940 */ 166, 220, 221, 109, 109, 836, 304, 167, 446, 212,
163923
+ /* 1950 */ 318, 110, 231, 445, 570, 569, 144, 1090, 1017, 1088,
163924
+ /* 1960 */ 326, 180, 169, 1212, 182, 334, 238, 915, 241, 1104,
163925
+ /* 1970 */ 187, 170, 171, 421, 87, 88, 423, 189, 89, 90,
163926
+ /* 1980 */ 172, 1107, 243, 1103, 244, 158, 18, 245, 345, 247,
163927
+ /* 1990 */ 1017, 1017, 1019, 1020, 27, 261, 1096, 193, 1226, 489,
163928
+ /* 2000 */ 194, 37, 366, 851, 494, 251, 195, 506, 92, 19,
163929
+ /* 2010 */ 498, 358, 20, 503, 881, 361, 94, 894, 305, 159,
163930
+ /* 2020 */ 513, 39, 95, 1174, 160, 1056, 966, 1143, 96, 174,
163931
+ /* 2030 */ 1142, 225, 280, 282, 198, 960, 113, 1164, 1160, 260,
163932
+ /* 2040 */ 21, 22, 23, 1162, 1168, 1167, 1148, 24, 33, 25,
163933
+ /* 2050 */ 202, 542, 26, 100, 1071, 102, 1057, 103, 7, 1055,
163934
+ /* 2060 */ 1059, 1113, 1060, 1112, 266, 267, 28, 40, 390, 1022,
163935
+ /* 2070 */ 863, 112, 29, 564, 1182, 1181, 268, 176, 143, 925,
163936
+ /* 2080 */ 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
163937
+ /* 2090 */ 1242, 1242, 1242, 1242, 269, 1602, 1242, 1601,
163954163938
};
163955163939
static const YYCODETYPE yy_lookahead[] = {
163956163940
/* 0 */ 193, 193, 193, 274, 275, 276, 193, 274, 275, 276,
163957163941
/* 10 */ 193, 223, 219, 225, 206, 210, 211, 212, 193, 19,
163958163942
/* 20 */ 219, 233, 216, 216, 217, 216, 217, 193, 295, 216,
@@ -164114,57 +164098,57 @@
164114164098
/* 1580 */ 23, 90, 25, 121, 106, 107, 19, 216, 217, 216,
164115164099
/* 1590 */ 217, 100, 114, 131, 116, 117, 118, 106, 107, 121,
164116164100
/* 1600 */ 216, 217, 216, 217, 193, 114, 117, 116, 117, 118,
164117164101
/* 1610 */ 133, 193, 121, 193, 193, 138, 139, 193, 23, 193,
164118164102
/* 1620 */ 25, 23, 23, 25, 25, 7, 8, 216, 217, 193,
164119
- /* 1630 */ 193, 153, 154, 155, 156, 157, 216, 217, 59, 162,
164103
+ /* 1630 */ 193, 153, 154, 155, 156, 157, 216, 217, 193, 162,
164120164104
/* 1640 */ 216, 217, 216, 217, 153, 154, 155, 156, 157, 1,
164121
- /* 1650 */ 2, 193, 193, 5, 19, 20, 193, 22, 10, 11,
164122
- /* 1660 */ 12, 13, 14, 193, 97, 17, 193, 23, 23, 25,
164123
- /* 1670 */ 25, 36, 83, 84, 216, 217, 236, 23, 30, 25,
164124
- /* 1680 */ 32, 19, 20, 153, 22, 155, 216, 217, 40, 216,
164125
- /* 1690 */ 217, 153, 193, 155, 59, 23, 117, 25, 36, 23,
164126
- /* 1700 */ 193, 25, 193, 193, 193, 193, 71, 193, 242, 193,
164127
- /* 1710 */ 193, 193, 193, 193, 243, 288, 287, 214, 70, 255,
164128
- /* 1720 */ 255, 59, 255, 255, 191, 297, 78, 271, 267, 81,
164129
- /* 1730 */ 245, 293, 246, 71, 246, 100, 267, 245, 293, 249,
164130
- /* 1740 */ 219, 106, 107, 108, 220, 271, 98, 271, 225, 114,
164131
- /* 1750 */ 271, 116, 117, 118, 229, 219, 121, 259, 219, 259,
164132
- /* 1760 */ 259, 259, 100, 60, 280, 196, 141, 38, 106, 107,
164133
- /* 1770 */ 200, 249, 245, 200, 243, 200, 114, 151, 116, 117,
164134
- /* 1780 */ 118, 133, 150, 121, 297, 272, 138, 139, 153, 154,
164135
- /* 1790 */ 155, 156, 157, 297, 22, 43, 19, 20, 294, 22,
164136
- /* 1800 */ 294, 18, 270, 237, 200, 234, 18, 199, 149, 283,
164137
- /* 1810 */ 162, 237, 272, 36, 237, 153, 154, 155, 156, 157,
164138
- /* 1820 */ 237, 272, 246, 270, 246, 234, 246, 234, 246, 200,
164139
- /* 1830 */ 199, 158, 290, 62, 289, 199, 59, 200, 22, 200,
164140
- /* 1840 */ 221, 199, 221, 200, 64, 199, 115, 227, 71, 22,
164141
- /* 1850 */ 126, 218, 218, 165, 224, 227, 218, 24, 113, 305,
164142
- /* 1860 */ 312, 200, 221, 282, 224, 218, 282, 91, 218, 220,
164143
- /* 1870 */ 218, 218, 221, 317, 82, 317, 265, 100, 265, 145,
164144
- /* 1880 */ 148, 22, 277, 106, 107, 200, 158, 147, 279, 146,
164145
- /* 1890 */ 25, 114, 202, 116, 117, 118, 13, 6, 121, 194,
164146
- /* 1900 */ 194, 192, 192, 192, 248, 250, 249, 247, 250, 246,
164147
- /* 1910 */ 303, 207, 300, 303, 213, 213, 222, 222, 4, 207,
164148
- /* 1920 */ 213, 213, 207, 3, 22, 163, 15, 214, 214, 213,
164149
- /* 1930 */ 153, 154, 155, 156, 157, 16, 23, 139, 23, 130,
164150
- /* 1940 */ 151, 25, 24, 142, 20, 16, 144, 1, 142, 130,
164151
- /* 1950 */ 130, 61, 53, 53, 37, 151, 53, 53, 130, 116,
164152
- /* 1960 */ 34, 1, 141, 5, 22, 115, 161, 75, 25, 68,
164153
- /* 1970 */ 141, 41, 115, 68, 24, 20, 19, 131, 125, 67,
164154
- /* 1980 */ 24, 22, 59, 22, 22, 96, 23, 22, 67, 22,
164155
- /* 1990 */ 37, 23, 28, 149, 67, 22, 25, 23, 23, 23,
164156
- /* 2000 */ 23, 22, 141, 97, 23, 23, 34, 22, 25, 116,
164157
- /* 2010 */ 143, 75, 34, 88, 34, 75, 23, 86, 34, 22,
164158
- /* 2020 */ 34, 93, 34, 24, 34, 25, 25, 23, 23, 23,
164159
- /* 2030 */ 23, 44, 23, 25, 23, 22, 11, 22, 22, 25,
164160
- /* 2040 */ 23, 23, 22, 22, 135, 15, 23, 25, 141, 141,
164161
- /* 2050 */ 1, 141, 1, 319, 319, 319, 319, 319, 319, 319,
164162
- /* 2060 */ 319, 319, 319, 141, 319, 319, 319, 319, 319, 319,
164163
- /* 2070 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164105
+ /* 1650 */ 2, 193, 193, 5, 19, 20, 59, 22, 10, 11,
164106
+ /* 1660 */ 12, 13, 14, 193, 97, 17, 193, 23, 193, 25,
164107
+ /* 1670 */ 288, 36, 193, 242, 216, 217, 236, 23, 30, 25,
164108
+ /* 1680 */ 32, 19, 20, 23, 22, 25, 216, 217, 40, 216,
164109
+ /* 1690 */ 217, 216, 217, 193, 59, 216, 217, 193, 36, 83,
164110
+ /* 1700 */ 84, 153, 153, 155, 155, 23, 71, 25, 23, 193,
164111
+ /* 1710 */ 25, 193, 193, 193, 117, 193, 193, 193, 70, 193,
164112
+ /* 1720 */ 193, 59, 193, 255, 255, 287, 78, 255, 243, 81,
164113
+ /* 1730 */ 191, 255, 297, 71, 271, 100, 293, 245, 267, 214,
164114
+ /* 1740 */ 246, 106, 107, 108, 246, 271, 98, 245, 293, 114,
164115
+ /* 1750 */ 220, 116, 117, 118, 267, 271, 121, 271, 225, 219,
164116
+ /* 1760 */ 229, 219, 100, 219, 259, 259, 259, 259, 106, 107,
164117
+ /* 1770 */ 249, 196, 60, 280, 141, 243, 114, 249, 116, 117,
164118
+ /* 1780 */ 118, 133, 245, 121, 200, 297, 138, 139, 153, 154,
164119
+ /* 1790 */ 155, 156, 157, 297, 200, 38, 19, 20, 151, 22,
164120
+ /* 1800 */ 200, 150, 140, 294, 294, 22, 272, 43, 234, 18,
164121
+ /* 1810 */ 162, 270, 200, 36, 237, 153, 154, 155, 156, 157,
164122
+ /* 1820 */ 237, 283, 237, 237, 18, 199, 149, 246, 272, 270,
164123
+ /* 1830 */ 272, 200, 158, 246, 246, 234, 59, 234, 246, 199,
164124
+ /* 1840 */ 290, 62, 289, 200, 199, 22, 221, 115, 71, 200,
164125
+ /* 1850 */ 200, 199, 199, 221, 218, 218, 19, 20, 64, 22,
164126
+ /* 1860 */ 218, 227, 22, 224, 126, 224, 165, 221, 24, 305,
164127
+ /* 1870 */ 200, 113, 312, 36, 218, 220, 218, 100, 282, 218,
164128
+ /* 1880 */ 91, 218, 317, 106, 107, 221, 227, 282, 317, 82,
164129
+ /* 1890 */ 148, 114, 265, 116, 117, 118, 59, 145, 121, 22,
164130
+ /* 1900 */ 277, 158, 200, 265, 25, 202, 147, 250, 71, 279,
164131
+ /* 1910 */ 13, 146, 194, 194, 249, 248, 250, 140, 247, 246,
164132
+ /* 1920 */ 6, 192, 192, 192, 303, 303, 213, 207, 300, 213,
164133
+ /* 1930 */ 153, 154, 155, 156, 157, 213, 213, 100, 213, 222,
164134
+ /* 1940 */ 207, 214, 214, 106, 107, 4, 222, 207, 3, 22,
164135
+ /* 1950 */ 163, 114, 15, 116, 117, 118, 16, 23, 121, 23,
164136
+ /* 1960 */ 139, 151, 130, 25, 142, 16, 24, 20, 144, 1,
164137
+ /* 1970 */ 142, 130, 130, 61, 53, 53, 37, 151, 53, 53,
164138
+ /* 1980 */ 130, 116, 34, 1, 141, 5, 22, 115, 161, 141,
164139
+ /* 1990 */ 153, 154, 155, 156, 157, 25, 68, 68, 75, 41,
164140
+ /* 2000 */ 115, 24, 131, 20, 19, 125, 22, 96, 22, 22,
164141
+ /* 2010 */ 67, 23, 22, 67, 59, 24, 22, 28, 67, 23,
164142
+ /* 2020 */ 22, 22, 149, 23, 23, 23, 116, 23, 25, 37,
164143
+ /* 2030 */ 97, 141, 23, 23, 22, 143, 25, 75, 88, 34,
164144
+ /* 2040 */ 34, 34, 34, 86, 75, 93, 23, 34, 22, 34,
164145
+ /* 2050 */ 25, 24, 34, 25, 23, 142, 23, 142, 44, 23,
164146
+ /* 2060 */ 23, 23, 11, 23, 25, 22, 22, 22, 15, 23,
164147
+ /* 2070 */ 23, 22, 22, 25, 1, 1, 141, 25, 23, 135,
164164164148
/* 2080 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164165
- /* 2090 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164149
+ /* 2090 */ 319, 319, 319, 319, 141, 141, 319, 141, 319, 319,
164166164150
/* 2100 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164167164151
/* 2110 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164168164152
/* 2120 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164169164153
/* 2130 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164170164154
/* 2140 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
@@ -164175,77 +164159,82 @@
164175164159
/* 2190 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164176164160
/* 2200 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164177164161
/* 2210 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164178164162
/* 2220 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164179164163
/* 2230 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164180
- /* 2240 */ 319, 319, 319, 319, 319, 319, 319, 319, 319,
164164
+ /* 2240 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164165
+ /* 2250 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164166
+ /* 2260 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164167
+ /* 2270 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164168
+ /* 2280 */ 319, 319, 319,
164181164169
};
164182
-#define YY_SHIFT_COUNT (569)
164170
+#define YY_SHIFT_COUNT (575)
164183164171
#define YY_SHIFT_MIN (0)
164184
-#define YY_SHIFT_MAX (2051)
164172
+#define YY_SHIFT_MAX (2074)
164185164173
static const unsigned short int yy_shift_ofst[] = {
164186
- /* 0 */ 1648, 1477, 1272, 322, 322, 1, 1319, 1478, 1491, 1662,
164187
- /* 10 */ 1662, 1662, 471, 0, 0, 214, 1093, 1662, 1662, 1662,
164188
- /* 20 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
164174
+ /* 0 */ 1648, 1477, 1272, 322, 322, 1, 1319, 1478, 1491, 1837,
164175
+ /* 10 */ 1837, 1837, 471, 0, 0, 214, 1093, 1837, 1837, 1837,
164176
+ /* 20 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164189164177
/* 30 */ 271, 271, 1219, 1219, 216, 88, 1, 1, 1, 1,
164190164178
/* 40 */ 1, 40, 111, 258, 361, 469, 512, 583, 622, 693,
164191164179
/* 50 */ 732, 803, 842, 913, 1073, 1093, 1093, 1093, 1093, 1093,
164192164180
/* 60 */ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
164193164181
/* 70 */ 1093, 1093, 1093, 1113, 1093, 1216, 957, 957, 1635, 1662,
164194
- /* 80 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
164195
- /* 90 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
164196
- /* 100 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
164197
- /* 110 */ 1662, 1662, 1662, 1662, 1777, 1662, 1662, 1662, 1662, 1662,
164198
- /* 120 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 137, 181,
164199
- /* 130 */ 181, 181, 181, 181, 94, 430, 66, 65, 112, 366,
164200
- /* 140 */ 533, 533, 740, 1261, 533, 533, 79, 79, 533, 412,
164201
- /* 150 */ 412, 412, 77, 412, 123, 113, 113, 22, 22, 2064,
164202
- /* 160 */ 2064, 328, 328, 328, 239, 468, 468, 468, 468, 1015,
164203
- /* 170 */ 1015, 409, 366, 1129, 1186, 533, 533, 533, 533, 533,
164182
+ /* 80 */ 1777, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164183
+ /* 90 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164184
+ /* 100 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164185
+ /* 110 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164186
+ /* 120 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164187
+ /* 130 */ 137, 181, 181, 181, 181, 181, 181, 181, 94, 430,
164188
+ /* 140 */ 66, 65, 112, 366, 533, 533, 740, 1261, 533, 533,
164189
+ /* 150 */ 79, 79, 533, 412, 412, 412, 77, 412, 123, 113,
164190
+ /* 160 */ 113, 22, 22, 2098, 2098, 328, 328, 328, 239, 468,
164191
+ /* 170 */ 468, 468, 468, 1015, 1015, 409, 366, 1129, 1186, 533,
164204164192
/* 180 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
164205
- /* 190 */ 533, 533, 533, 533, 533, 969, 621, 621, 533, 642,
164206
- /* 200 */ 788, 788, 1228, 1228, 822, 822, 67, 1274, 2064, 2064,
164207
- /* 210 */ 2064, 2064, 2064, 2064, 2064, 1307, 954, 954, 585, 472,
164208
- /* 220 */ 640, 387, 695, 538, 541, 700, 533, 533, 533, 533,
164209
- /* 230 */ 533, 533, 533, 533, 533, 533, 222, 533, 533, 533,
164210
- /* 240 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 1179,
164211
- /* 250 */ 1179, 1179, 533, 533, 533, 565, 533, 533, 533, 916,
164212
- /* 260 */ 1144, 533, 533, 1288, 533, 533, 533, 533, 533, 533,
164213
- /* 270 */ 533, 533, 639, 1330, 209, 1076, 1076, 1076, 1076, 580,
164214
- /* 280 */ 209, 209, 1313, 768, 917, 649, 1181, 1316, 405, 1316,
164215
- /* 290 */ 1238, 249, 1181, 1181, 249, 1181, 405, 1238, 1369, 464,
164216
- /* 300 */ 1259, 1012, 1012, 1012, 1368, 1368, 1368, 1368, 184, 184,
164217
- /* 310 */ 1326, 904, 1287, 1480, 1703, 1703, 1625, 1625, 1729, 1729,
164218
- /* 320 */ 1625, 1626, 1632, 1772, 1752, 1783, 1783, 1783, 1783, 1625,
164219
- /* 330 */ 1788, 1659, 1632, 1632, 1659, 1772, 1752, 1659, 1752, 1659,
164220
- /* 340 */ 1625, 1788, 1673, 1771, 1625, 1788, 1816, 1625, 1788, 1625,
164221
- /* 350 */ 1788, 1816, 1731, 1731, 1731, 1780, 1827, 1827, 1816, 1731,
164222
- /* 360 */ 1724, 1731, 1780, 1731, 1731, 1688, 1833, 1745, 1745, 1816,
164223
- /* 370 */ 1625, 1776, 1776, 1792, 1792, 1732, 1734, 1859, 1625, 1728,
164224
- /* 380 */ 1732, 1740, 1743, 1659, 1865, 1883, 1883, 1891, 1891, 1891,
164225
- /* 390 */ 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064,
164226
- /* 400 */ 2064, 2064, 2064, 2064, 2064, 207, 1095, 331, 620, 903,
164227
- /* 410 */ 806, 1074, 1483, 1432, 1481, 1322, 1370, 1394, 1515, 1291,
164228
- /* 420 */ 1546, 1547, 1557, 1595, 1598, 1599, 1434, 1453, 1618, 1462,
164229
- /* 430 */ 1567, 1489, 1644, 1645, 1589, 1654, 1530, 1538, 1672, 1676,
164230
- /* 440 */ 1579, 742, 1914, 1920, 1902, 1762, 1911, 1919, 1913, 1915,
164231
- /* 450 */ 1798, 1789, 1809, 1916, 1916, 1918, 1801, 1924, 1802, 1929,
164232
- /* 460 */ 1946, 1806, 1819, 1916, 1820, 1890, 1917, 1916, 1804, 1899,
164233
- /* 470 */ 1900, 1903, 1904, 1828, 1843, 1926, 1821, 1960, 1958, 1942,
164234
- /* 480 */ 1850, 1805, 1901, 1943, 1905, 1892, 1930, 1829, 1857, 1950,
164235
- /* 490 */ 1955, 1957, 1846, 1853, 1959, 1912, 1961, 1962, 1963, 1965,
164236
- /* 500 */ 1921, 1923, 1956, 1889, 1964, 1967, 1927, 1953, 1968, 1844,
164237
- /* 510 */ 1973, 1974, 1975, 1976, 1971, 1977, 1979, 1906, 1861, 1981,
164238
- /* 520 */ 1982, 1893, 1972, 1985, 1867, 1983, 1978, 1980, 1984, 1986,
164239
- /* 530 */ 1925, 1936, 1931, 1987, 1940, 1928, 1988, 1993, 1997, 1999,
164240
- /* 540 */ 2000, 2001, 1990, 2004, 1983, 2005, 2006, 2007, 2009, 2008,
164241
- /* 550 */ 2011, 2013, 2025, 2015, 2016, 2017, 2018, 2020, 2021, 2014,
164242
- /* 560 */ 1909, 1907, 1908, 1910, 1922, 2022, 2023, 2030, 2049, 2051,
164193
+ /* 190 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 969,
164194
+ /* 200 */ 621, 621, 533, 642, 788, 788, 1228, 1228, 822, 822,
164195
+ /* 210 */ 67, 1274, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 1307,
164196
+ /* 220 */ 954, 954, 585, 472, 640, 387, 695, 538, 541, 700,
164197
+ /* 230 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
164198
+ /* 240 */ 222, 533, 533, 533, 533, 533, 533, 533, 533, 533,
164199
+ /* 250 */ 533, 533, 533, 1179, 1179, 1179, 533, 533, 533, 565,
164200
+ /* 260 */ 533, 533, 533, 916, 1144, 533, 533, 1288, 533, 533,
164201
+ /* 270 */ 533, 533, 533, 533, 533, 533, 639, 1330, 209, 1076,
164202
+ /* 280 */ 1076, 1076, 1076, 580, 209, 209, 1313, 768, 917, 649,
164203
+ /* 290 */ 1181, 1316, 405, 1316, 1238, 249, 1181, 1181, 249, 1181,
164204
+ /* 300 */ 405, 1238, 1369, 464, 1259, 1012, 1012, 1012, 1368, 1368,
164205
+ /* 310 */ 1368, 1368, 184, 184, 1326, 904, 1287, 1480, 1712, 1712,
164206
+ /* 320 */ 1633, 1633, 1757, 1757, 1633, 1647, 1651, 1783, 1764, 1791,
164207
+ /* 330 */ 1791, 1791, 1791, 1633, 1806, 1677, 1651, 1651, 1677, 1783,
164208
+ /* 340 */ 1764, 1677, 1764, 1677, 1633, 1806, 1674, 1779, 1633, 1806,
164209
+ /* 350 */ 1823, 1633, 1806, 1633, 1806, 1823, 1732, 1732, 1732, 1794,
164210
+ /* 360 */ 1840, 1840, 1823, 1732, 1738, 1732, 1794, 1732, 1732, 1701,
164211
+ /* 370 */ 1844, 1758, 1758, 1823, 1633, 1789, 1789, 1807, 1807, 1742,
164212
+ /* 380 */ 1752, 1877, 1633, 1743, 1742, 1759, 1765, 1677, 1879, 1897,
164213
+ /* 390 */ 1897, 1914, 1914, 1914, 2098, 2098, 2098, 2098, 2098, 2098,
164214
+ /* 400 */ 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 207,
164215
+ /* 410 */ 1095, 331, 620, 903, 806, 1074, 1483, 1432, 1481, 1322,
164216
+ /* 420 */ 1370, 1394, 1515, 1291, 1546, 1547, 1557, 1595, 1598, 1599,
164217
+ /* 430 */ 1434, 1453, 1618, 1462, 1567, 1489, 1644, 1654, 1616, 1660,
164218
+ /* 440 */ 1548, 1549, 1682, 1685, 1597, 742, 1941, 1945, 1927, 1787,
164219
+ /* 450 */ 1937, 1940, 1934, 1936, 1821, 1810, 1832, 1938, 1938, 1942,
164220
+ /* 460 */ 1822, 1947, 1824, 1949, 1968, 1828, 1841, 1938, 1842, 1912,
164221
+ /* 470 */ 1939, 1938, 1826, 1921, 1922, 1925, 1926, 1850, 1865, 1948,
164222
+ /* 480 */ 1843, 1982, 1980, 1964, 1872, 1827, 1928, 1970, 1929, 1923,
164223
+ /* 490 */ 1958, 1848, 1885, 1977, 1983, 1985, 1871, 1880, 1984, 1943,
164224
+ /* 500 */ 1986, 1987, 1988, 1990, 1946, 1955, 1991, 1911, 1989, 1994,
164225
+ /* 510 */ 1951, 1992, 1996, 1873, 1998, 2000, 2001, 2002, 2003, 2004,
164226
+ /* 520 */ 1999, 1933, 1890, 2009, 2010, 1910, 2005, 2012, 1892, 2011,
164227
+ /* 530 */ 2006, 2007, 2008, 2013, 1950, 1962, 1957, 2014, 1969, 1952,
164228
+ /* 540 */ 2015, 2023, 2026, 2027, 2025, 2028, 2018, 1913, 1915, 2031,
164229
+ /* 550 */ 2011, 2033, 2036, 2037, 2038, 2039, 2040, 2043, 2051, 2044,
164230
+ /* 560 */ 2045, 2046, 2047, 2049, 2050, 2048, 1944, 1935, 1953, 1954,
164231
+ /* 570 */ 1956, 2052, 2055, 2053, 2073, 2074,
164243164232
};
164244
-#define YY_REDUCE_COUNT (404)
164233
+#define YY_REDUCE_COUNT (408)
164245164234
#define YY_REDUCE_MIN (-271)
164246
-#define YY_REDUCE_MAX (1716)
164235
+#define YY_REDUCE_MAX (1740)
164247164236
static const short yy_reduce_ofst[] = {
164248164237
/* 0 */ -125, 733, 789, 241, 293, -123, -193, -191, -183, -187,
164249164238
/* 10 */ 166, 238, 133, -207, -199, -267, -176, -6, 204, 489,
164250164239
/* 20 */ 576, -175, 598, 686, 615, 725, 860, 778, 781, 857,
164251164240
/* 30 */ 616, 887, 87, 240, -192, 408, 626, 796, 843, 854,
@@ -164255,98 +164244,99 @@
164255164244
/* 70 */ -271, -271, -271, -271, -271, -271, -271, -271, 80, 83,
164256164245
/* 80 */ 313, 886, 888, 996, 1034, 1059, 1081, 1100, 1117, 1152,
164257164246
/* 90 */ 1155, 1163, 1165, 1167, 1169, 1172, 1180, 1182, 1184, 1198,
164258164247
/* 100 */ 1200, 1213, 1215, 1225, 1227, 1252, 1254, 1264, 1299, 1303,
164259164248
/* 110 */ 1308, 1312, 1325, 1328, 1337, 1340, 1343, 1371, 1373, 1384,
164260
- /* 120 */ 1386, 1411, 1420, 1424, 1426, 1458, 1470, 1473, -271, -271,
164261
- /* 130 */ -271, -271, -271, -271, -271, -271, -271, 138, 459, 396,
164262
- /* 140 */ -158, 470, 302, -212, 521, 201, -195, -92, 559, 630,
164263
- /* 150 */ 632, 630, -271, 632, 901, 63, 407, -271, -271, -271,
164264
- /* 160 */ -271, 161, 161, 161, 251, 335, 847, 960, 980, 537,
164265
- /* 170 */ 588, 618, 628, 688, 688, -166, -161, 674, 790, 794,
164266
- /* 180 */ 799, 851, 852, -122, 680, -120, 995, 1038, 415, 1051,
164267
- /* 190 */ 893, 798, 962, 400, 1086, 779, 923, 924, 263, 1041,
164268
- /* 200 */ 979, 990, 1083, 1097, 1031, 1194, 362, 994, 1139, 1005,
164269
- /* 210 */ 1037, 1202, 1205, 1195, 1210, -194, 56, 185, -135, 232,
164270
- /* 220 */ 522, 560, 601, 617, 669, 683, 711, 856, 908, 941,
164271
- /* 230 */ 1048, 1101, 1147, 1257, 1262, 1265, 392, 1292, 1333, 1339,
164272
- /* 240 */ 1342, 1346, 1350, 1359, 1374, 1418, 1421, 1436, 1437, 593,
164273
- /* 250 */ 755, 770, 997, 1459, 1463, 1209, 1499, 1507, 1509, 1132,
164274
- /* 260 */ 1243, 1510, 1511, 1440, 1512, 560, 1514, 1516, 1517, 1518,
164275
- /* 270 */ 1519, 1520, 1427, 1429, 1466, 1464, 1465, 1467, 1468, 1209,
164276
- /* 280 */ 1466, 1466, 1471, 1503, 1533, 1428, 1456, 1461, 1485, 1469,
164277
- /* 290 */ 1438, 1486, 1474, 1476, 1488, 1479, 1492, 1445, 1524, 1525,
164278
- /* 300 */ 1523, 1521, 1536, 1539, 1498, 1500, 1501, 1502, 1490, 1522,
164279
- /* 310 */ 1484, 1527, 1531, 1569, 1487, 1496, 1570, 1573, 1504, 1506,
164280
- /* 320 */ 1575, 1526, 1513, 1532, 1571, 1566, 1574, 1577, 1583, 1604,
164281
- /* 330 */ 1608, 1576, 1540, 1549, 1578, 1553, 1591, 1580, 1593, 1582,
164282
- /* 340 */ 1629, 1631, 1542, 1545, 1637, 1636, 1619, 1639, 1642, 1643,
164283
- /* 350 */ 1646, 1621, 1633, 1634, 1638, 1620, 1630, 1640, 1641, 1647,
164284
- /* 360 */ 1649, 1650, 1628, 1652, 1653, 1548, 1554, 1581, 1584, 1651,
164285
- /* 370 */ 1661, 1556, 1558, 1611, 1613, 1655, 1657, 1605, 1685, 1609,
164286
- /* 380 */ 1658, 1656, 1660, 1663, 1690, 1705, 1706, 1709, 1710, 1711,
164287
- /* 390 */ 1607, 1610, 1612, 1704, 1701, 1702, 1707, 1708, 1712, 1694,
164288
- /* 400 */ 1695, 1713, 1714, 1716, 1715,
164249
+ /* 120 */ 1386, 1411, 1420, 1424, 1426, 1458, 1470, 1473, 1475, 1479,
164250
+ /* 130 */ -271, -271, -271, -271, -271, -271, -271, -271, -271, -271,
164251
+ /* 140 */ -271, 138, 459, 396, -158, 470, 302, -212, 521, 201,
164252
+ /* 150 */ -195, -92, 559, 630, 632, 630, -271, 632, 901, 63,
164253
+ /* 160 */ 407, -271, -271, -271, -271, 161, 161, 161, 251, 335,
164254
+ /* 170 */ 847, 960, 980, 537, 588, 618, 628, 688, 688, -166,
164255
+ /* 180 */ -161, 674, 790, 794, 799, 851, 852, -122, 680, -120,
164256
+ /* 190 */ 995, 1038, 415, 1051, 893, 798, 962, 400, 1086, 779,
164257
+ /* 200 */ 923, 924, 263, 1041, 979, 990, 1083, 1097, 1031, 1194,
164258
+ /* 210 */ 362, 994, 1139, 1005, 1037, 1202, 1205, 1195, 1210, -194,
164259
+ /* 220 */ 56, 185, -135, 232, 522, 560, 601, 617, 669, 683,
164260
+ /* 230 */ 711, 856, 908, 941, 1048, 1101, 1147, 1257, 1262, 1265,
164261
+ /* 240 */ 392, 1292, 1333, 1339, 1342, 1346, 1350, 1359, 1374, 1418,
164262
+ /* 250 */ 1421, 1436, 1437, 593, 755, 770, 997, 1445, 1459, 1209,
164263
+ /* 260 */ 1500, 1504, 1516, 1132, 1243, 1518, 1519, 1440, 1520, 560,
164264
+ /* 270 */ 1522, 1523, 1524, 1526, 1527, 1529, 1382, 1438, 1431, 1468,
164265
+ /* 280 */ 1469, 1472, 1476, 1209, 1431, 1431, 1485, 1525, 1539, 1435,
164266
+ /* 290 */ 1463, 1471, 1492, 1487, 1443, 1494, 1474, 1484, 1498, 1486,
164267
+ /* 300 */ 1502, 1455, 1530, 1531, 1533, 1540, 1542, 1544, 1505, 1506,
164268
+ /* 310 */ 1507, 1508, 1521, 1528, 1493, 1537, 1532, 1575, 1488, 1496,
164269
+ /* 320 */ 1584, 1594, 1509, 1510, 1600, 1538, 1534, 1541, 1574, 1577,
164270
+ /* 330 */ 1583, 1585, 1586, 1612, 1626, 1581, 1556, 1558, 1587, 1559,
164271
+ /* 340 */ 1601, 1588, 1603, 1592, 1631, 1640, 1550, 1553, 1643, 1645,
164272
+ /* 350 */ 1625, 1649, 1652, 1650, 1653, 1632, 1636, 1637, 1642, 1634,
164273
+ /* 360 */ 1639, 1641, 1646, 1656, 1655, 1658, 1659, 1661, 1663, 1560,
164274
+ /* 370 */ 1564, 1596, 1605, 1664, 1670, 1565, 1571, 1627, 1638, 1657,
164275
+ /* 380 */ 1665, 1623, 1702, 1630, 1666, 1667, 1671, 1673, 1703, 1718,
164276
+ /* 390 */ 1719, 1729, 1730, 1731, 1621, 1622, 1628, 1720, 1713, 1716,
164277
+ /* 400 */ 1722, 1723, 1733, 1717, 1724, 1727, 1728, 1725, 1740,
164289164278
};
164290164279
static const YYACTIONTYPE yy_default[] = {
164291
- /* 0 */ 1637, 1637, 1637, 1465, 1232, 1343, 1232, 1232, 1232, 1465,
164292
- /* 10 */ 1465, 1465, 1232, 1373, 1373, 1518, 1265, 1232, 1232, 1232,
164293
- /* 20 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1464, 1232, 1232,
164294
- /* 30 */ 1232, 1232, 1553, 1553, 1232, 1232, 1232, 1232, 1232, 1232,
164295
- /* 40 */ 1232, 1232, 1382, 1232, 1389, 1232, 1232, 1232, 1232, 1232,
164296
- /* 50 */ 1466, 1467, 1232, 1232, 1232, 1517, 1519, 1482, 1396, 1395,
164297
- /* 60 */ 1394, 1393, 1500, 1361, 1387, 1380, 1384, 1460, 1461, 1459,
164298
- /* 70 */ 1463, 1467, 1466, 1232, 1383, 1430, 1444, 1429, 1232, 1232,
164299
- /* 80 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164300
- /* 90 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164301
- /* 100 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164302
- /* 110 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164303
- /* 120 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1438, 1443,
164304
- /* 130 */ 1450, 1442, 1439, 1432, 1431, 1433, 1434, 1232, 1232, 1256,
164305
- /* 140 */ 1232, 1232, 1253, 1307, 1232, 1232, 1232, 1232, 1232, 1537,
164306
- /* 150 */ 1536, 1232, 1435, 1232, 1265, 1424, 1423, 1447, 1436, 1446,
164307
- /* 160 */ 1445, 1525, 1589, 1588, 1483, 1232, 1232, 1232, 1232, 1232,
164308
- /* 170 */ 1232, 1553, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164309
- /* 180 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164310
- /* 190 */ 1232, 1232, 1232, 1232, 1232, 1363, 1553, 1553, 1232, 1265,
164311
- /* 200 */ 1553, 1553, 1364, 1364, 1261, 1261, 1367, 1232, 1532, 1334,
164312
- /* 210 */ 1334, 1334, 1334, 1343, 1334, 1232, 1232, 1232, 1232, 1232,
164313
- /* 220 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164314
- /* 230 */ 1522, 1520, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164315
- /* 240 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164316
- /* 250 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1339,
164317
- /* 260 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164318
- /* 270 */ 1232, 1582, 1232, 1495, 1321, 1339, 1339, 1339, 1339, 1341,
164319
- /* 280 */ 1322, 1320, 1333, 1266, 1239, 1629, 1399, 1388, 1340, 1388,
164320
- /* 290 */ 1626, 1386, 1399, 1399, 1386, 1399, 1340, 1626, 1282, 1605,
164321
- /* 300 */ 1277, 1373, 1373, 1373, 1363, 1363, 1363, 1363, 1367, 1367,
164322
- /* 310 */ 1462, 1340, 1333, 1232, 1629, 1629, 1349, 1349, 1628, 1628,
164323
- /* 320 */ 1349, 1483, 1613, 1408, 1310, 1316, 1316, 1316, 1316, 1349,
164324
- /* 330 */ 1250, 1386, 1613, 1613, 1386, 1408, 1310, 1386, 1310, 1386,
164325
- /* 340 */ 1349, 1250, 1499, 1623, 1349, 1250, 1473, 1349, 1250, 1349,
164326
- /* 350 */ 1250, 1473, 1308, 1308, 1308, 1297, 1232, 1232, 1473, 1308,
164327
- /* 360 */ 1282, 1308, 1297, 1308, 1308, 1571, 1232, 1477, 1477, 1473,
164328
- /* 370 */ 1349, 1563, 1563, 1376, 1376, 1381, 1367, 1468, 1349, 1232,
164329
- /* 380 */ 1381, 1379, 1377, 1386, 1300, 1585, 1585, 1581, 1581, 1581,
164330
- /* 390 */ 1634, 1634, 1532, 1598, 1265, 1265, 1265, 1265, 1598, 1284,
164331
- /* 400 */ 1284, 1266, 1266, 1265, 1598, 1232, 1232, 1232, 1232, 1232,
164332
- /* 410 */ 1232, 1593, 1232, 1527, 1484, 1353, 1232, 1232, 1232, 1232,
164333
- /* 420 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164334
- /* 430 */ 1538, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164335
- /* 440 */ 1232, 1413, 1232, 1235, 1529, 1232, 1232, 1232, 1232, 1232,
164336
- /* 450 */ 1232, 1232, 1232, 1390, 1391, 1354, 1232, 1232, 1232, 1232,
164337
- /* 460 */ 1232, 1232, 1232, 1405, 1232, 1232, 1232, 1400, 1232, 1232,
164338
- /* 470 */ 1232, 1232, 1232, 1232, 1232, 1232, 1625, 1232, 1232, 1232,
164339
- /* 480 */ 1232, 1232, 1232, 1498, 1497, 1232, 1232, 1351, 1232, 1232,
164340
- /* 490 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164341
- /* 500 */ 1232, 1280, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164342
- /* 510 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164343
- /* 520 */ 1232, 1232, 1232, 1232, 1232, 1378, 1232, 1232, 1232, 1232,
164344
- /* 530 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164345
- /* 540 */ 1568, 1368, 1232, 1232, 1616, 1232, 1232, 1232, 1232, 1232,
164346
- /* 550 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1609,
164347
- /* 560 */ 1324, 1415, 1232, 1414, 1418, 1254, 1232, 1244, 1232, 1232,
164280
+ /* 0 */ 1647, 1647, 1647, 1475, 1240, 1351, 1240, 1240, 1240, 1475,
164281
+ /* 10 */ 1475, 1475, 1240, 1381, 1381, 1528, 1273, 1240, 1240, 1240,
164282
+ /* 20 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1474, 1240, 1240,
164283
+ /* 30 */ 1240, 1240, 1563, 1563, 1240, 1240, 1240, 1240, 1240, 1240,
164284
+ /* 40 */ 1240, 1240, 1390, 1240, 1397, 1240, 1240, 1240, 1240, 1240,
164285
+ /* 50 */ 1476, 1477, 1240, 1240, 1240, 1527, 1529, 1492, 1404, 1403,
164286
+ /* 60 */ 1402, 1401, 1510, 1369, 1395, 1388, 1392, 1470, 1471, 1469,
164287
+ /* 70 */ 1473, 1477, 1476, 1240, 1391, 1438, 1454, 1437, 1240, 1240,
164288
+ /* 80 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164289
+ /* 90 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164290
+ /* 100 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164291
+ /* 110 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164292
+ /* 120 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164293
+ /* 130 */ 1446, 1453, 1452, 1451, 1460, 1450, 1447, 1440, 1439, 1441,
164294
+ /* 140 */ 1442, 1240, 1240, 1264, 1240, 1240, 1261, 1315, 1240, 1240,
164295
+ /* 150 */ 1240, 1240, 1240, 1547, 1546, 1240, 1443, 1240, 1273, 1432,
164296
+ /* 160 */ 1431, 1457, 1444, 1456, 1455, 1535, 1599, 1598, 1493, 1240,
164297
+ /* 170 */ 1240, 1240, 1240, 1240, 1240, 1563, 1240, 1240, 1240, 1240,
164298
+ /* 180 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164299
+ /* 190 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1371,
164300
+ /* 200 */ 1563, 1563, 1240, 1273, 1563, 1563, 1372, 1372, 1269, 1269,
164301
+ /* 210 */ 1375, 1240, 1542, 1342, 1342, 1342, 1342, 1351, 1342, 1240,
164302
+ /* 220 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164303
+ /* 230 */ 1240, 1240, 1240, 1240, 1532, 1530, 1240, 1240, 1240, 1240,
164304
+ /* 240 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164305
+ /* 250 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164306
+ /* 260 */ 1240, 1240, 1240, 1347, 1240, 1240, 1240, 1240, 1240, 1240,
164307
+ /* 270 */ 1240, 1240, 1240, 1240, 1240, 1592, 1240, 1505, 1329, 1347,
164308
+ /* 280 */ 1347, 1347, 1347, 1349, 1330, 1328, 1341, 1274, 1247, 1639,
164309
+ /* 290 */ 1407, 1396, 1348, 1396, 1636, 1394, 1407, 1407, 1394, 1407,
164310
+ /* 300 */ 1348, 1636, 1290, 1615, 1285, 1381, 1381, 1381, 1371, 1371,
164311
+ /* 310 */ 1371, 1371, 1375, 1375, 1472, 1348, 1341, 1240, 1639, 1639,
164312
+ /* 320 */ 1357, 1357, 1638, 1638, 1357, 1493, 1623, 1416, 1318, 1324,
164313
+ /* 330 */ 1324, 1324, 1324, 1357, 1258, 1394, 1623, 1623, 1394, 1416,
164314
+ /* 340 */ 1318, 1394, 1318, 1394, 1357, 1258, 1509, 1633, 1357, 1258,
164315
+ /* 350 */ 1483, 1357, 1258, 1357, 1258, 1483, 1316, 1316, 1316, 1305,
164316
+ /* 360 */ 1240, 1240, 1483, 1316, 1290, 1316, 1305, 1316, 1316, 1581,
164317
+ /* 370 */ 1240, 1487, 1487, 1483, 1357, 1573, 1573, 1384, 1384, 1389,
164318
+ /* 380 */ 1375, 1478, 1357, 1240, 1389, 1387, 1385, 1394, 1308, 1595,
164319
+ /* 390 */ 1595, 1591, 1591, 1591, 1644, 1644, 1542, 1608, 1273, 1273,
164320
+ /* 400 */ 1273, 1273, 1608, 1292, 1292, 1274, 1274, 1273, 1608, 1240,
164321
+ /* 410 */ 1240, 1240, 1240, 1240, 1240, 1603, 1240, 1537, 1494, 1361,
164322
+ /* 420 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164323
+ /* 430 */ 1240, 1240, 1240, 1240, 1548, 1240, 1240, 1240, 1240, 1240,
164324
+ /* 440 */ 1240, 1240, 1240, 1240, 1240, 1421, 1240, 1243, 1539, 1240,
164325
+ /* 450 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1398, 1399, 1362,
164326
+ /* 460 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1413, 1240, 1240,
164327
+ /* 470 */ 1240, 1408, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164328
+ /* 480 */ 1635, 1240, 1240, 1240, 1240, 1240, 1240, 1508, 1507, 1240,
164329
+ /* 490 */ 1240, 1359, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164330
+ /* 500 */ 1240, 1240, 1240, 1240, 1240, 1288, 1240, 1240, 1240, 1240,
164331
+ /* 510 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164332
+ /* 520 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1386,
164333
+ /* 530 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164334
+ /* 540 */ 1240, 1240, 1240, 1240, 1578, 1376, 1240, 1240, 1240, 1240,
164335
+ /* 550 */ 1626, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164336
+ /* 560 */ 1240, 1240, 1240, 1240, 1240, 1619, 1332, 1423, 1240, 1422,
164337
+ /* 570 */ 1426, 1262, 1240, 1252, 1240, 1240,
164348164338
};
164349164339
/********** End of lemon-generated parsing tables *****************************/
164350164340
164351164341
/* The next table maps tokens (terminal symbols) into fallback tokens.
164352164342
** If a construct like the following:
@@ -165170,204 +165160,206 @@
165170165160
/* 204 */ "expr ::= expr likeop expr ESCAPE expr",
165171165161
/* 205 */ "expr ::= expr ISNULL|NOTNULL",
165172165162
/* 206 */ "expr ::= expr NOT NULL",
165173165163
/* 207 */ "expr ::= expr IS expr",
165174165164
/* 208 */ "expr ::= expr IS NOT expr",
165175
- /* 209 */ "expr ::= NOT expr",
165176
- /* 210 */ "expr ::= BITNOT expr",
165177
- /* 211 */ "expr ::= PLUS|MINUS expr",
165178
- /* 212 */ "expr ::= expr PTR expr",
165179
- /* 213 */ "between_op ::= BETWEEN",
165180
- /* 214 */ "between_op ::= NOT BETWEEN",
165181
- /* 215 */ "expr ::= expr between_op expr AND expr",
165182
- /* 216 */ "in_op ::= IN",
165183
- /* 217 */ "in_op ::= NOT IN",
165184
- /* 218 */ "expr ::= expr in_op LP exprlist RP",
165185
- /* 219 */ "expr ::= LP select RP",
165186
- /* 220 */ "expr ::= expr in_op LP select RP",
165187
- /* 221 */ "expr ::= expr in_op nm dbnm paren_exprlist",
165188
- /* 222 */ "expr ::= EXISTS LP select RP",
165189
- /* 223 */ "expr ::= CASE case_operand case_exprlist case_else END",
165190
- /* 224 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
165191
- /* 225 */ "case_exprlist ::= WHEN expr THEN expr",
165192
- /* 226 */ "case_else ::= ELSE expr",
165193
- /* 227 */ "case_else ::=",
165194
- /* 228 */ "case_operand ::= expr",
165195
- /* 229 */ "case_operand ::=",
165196
- /* 230 */ "exprlist ::=",
165197
- /* 231 */ "nexprlist ::= nexprlist COMMA expr",
165198
- /* 232 */ "nexprlist ::= expr",
165199
- /* 233 */ "paren_exprlist ::=",
165200
- /* 234 */ "paren_exprlist ::= LP exprlist RP",
165201
- /* 235 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
165202
- /* 236 */ "uniqueflag ::= UNIQUE",
165203
- /* 237 */ "uniqueflag ::=",
165204
- /* 238 */ "eidlist_opt ::=",
165205
- /* 239 */ "eidlist_opt ::= LP eidlist RP",
165206
- /* 240 */ "eidlist ::= eidlist COMMA nm collate sortorder",
165207
- /* 241 */ "eidlist ::= nm collate sortorder",
165208
- /* 242 */ "collate ::=",
165209
- /* 243 */ "collate ::= COLLATE ID|STRING",
165210
- /* 244 */ "cmd ::= DROP INDEX ifexists fullname",
165211
- /* 245 */ "cmd ::= VACUUM vinto",
165212
- /* 246 */ "cmd ::= VACUUM nm vinto",
165213
- /* 247 */ "vinto ::= INTO expr",
165214
- /* 248 */ "vinto ::=",
165215
- /* 249 */ "cmd ::= PRAGMA nm dbnm",
165216
- /* 250 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
165217
- /* 251 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
165218
- /* 252 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
165219
- /* 253 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
165220
- /* 254 */ "plus_num ::= PLUS INTEGER|FLOAT",
165221
- /* 255 */ "minus_num ::= MINUS INTEGER|FLOAT",
165222
- /* 256 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
165223
- /* 257 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
165224
- /* 258 */ "trigger_time ::= BEFORE|AFTER",
165225
- /* 259 */ "trigger_time ::= INSTEAD OF",
165226
- /* 260 */ "trigger_time ::=",
165227
- /* 261 */ "trigger_event ::= DELETE|INSERT",
165228
- /* 262 */ "trigger_event ::= UPDATE",
165229
- /* 263 */ "trigger_event ::= UPDATE OF idlist",
165230
- /* 264 */ "when_clause ::=",
165231
- /* 265 */ "when_clause ::= WHEN expr",
165232
- /* 266 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
165233
- /* 267 */ "trigger_cmd_list ::= trigger_cmd SEMI",
165234
- /* 268 */ "trnm ::= nm DOT nm",
165235
- /* 269 */ "tridxby ::= INDEXED BY nm",
165236
- /* 270 */ "tridxby ::= NOT INDEXED",
165237
- /* 271 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
165238
- /* 272 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
165239
- /* 273 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
165240
- /* 274 */ "trigger_cmd ::= scanpt select scanpt",
165241
- /* 275 */ "expr ::= RAISE LP IGNORE RP",
165242
- /* 276 */ "expr ::= RAISE LP raisetype COMMA nm RP",
165243
- /* 277 */ "raisetype ::= ROLLBACK",
165244
- /* 278 */ "raisetype ::= ABORT",
165245
- /* 279 */ "raisetype ::= FAIL",
165246
- /* 280 */ "cmd ::= DROP TRIGGER ifexists fullname",
165247
- /* 281 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
165248
- /* 282 */ "cmd ::= DETACH database_kw_opt expr",
165249
- /* 283 */ "key_opt ::=",
165250
- /* 284 */ "key_opt ::= KEY expr",
165251
- /* 285 */ "cmd ::= REINDEX",
165252
- /* 286 */ "cmd ::= REINDEX nm dbnm",
165253
- /* 287 */ "cmd ::= ANALYZE",
165254
- /* 288 */ "cmd ::= ANALYZE nm dbnm",
165255
- /* 289 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
165256
- /* 290 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
165257
- /* 291 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
165258
- /* 292 */ "add_column_fullname ::= fullname",
165259
- /* 293 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
165260
- /* 294 */ "cmd ::= create_vtab",
165261
- /* 295 */ "cmd ::= create_vtab LP vtabarglist RP",
165262
- /* 296 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
165263
- /* 297 */ "vtabarg ::=",
165264
- /* 298 */ "vtabargtoken ::= ANY",
165265
- /* 299 */ "vtabargtoken ::= lp anylist RP",
165266
- /* 300 */ "lp ::= LP",
165267
- /* 301 */ "with ::= WITH wqlist",
165268
- /* 302 */ "with ::= WITH RECURSIVE wqlist",
165269
- /* 303 */ "wqas ::= AS",
165270
- /* 304 */ "wqas ::= AS MATERIALIZED",
165271
- /* 305 */ "wqas ::= AS NOT MATERIALIZED",
165272
- /* 306 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
165273
- /* 307 */ "wqlist ::= wqitem",
165274
- /* 308 */ "wqlist ::= wqlist COMMA wqitem",
165275
- /* 309 */ "windowdefn_list ::= windowdefn",
165276
- /* 310 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
165277
- /* 311 */ "windowdefn ::= nm AS LP window RP",
165278
- /* 312 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
165279
- /* 313 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
165280
- /* 314 */ "window ::= ORDER BY sortlist frame_opt",
165281
- /* 315 */ "window ::= nm ORDER BY sortlist frame_opt",
165282
- /* 316 */ "window ::= frame_opt",
165283
- /* 317 */ "window ::= nm frame_opt",
165284
- /* 318 */ "frame_opt ::=",
165285
- /* 319 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
165286
- /* 320 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
165287
- /* 321 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
165288
- /* 322 */ "frame_bound_s ::= frame_bound",
165289
- /* 323 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
165290
- /* 324 */ "frame_bound_e ::= frame_bound",
165291
- /* 325 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
165292
- /* 326 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
165293
- /* 327 */ "frame_bound ::= CURRENT ROW",
165294
- /* 328 */ "frame_exclude_opt ::=",
165295
- /* 329 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
165296
- /* 330 */ "frame_exclude ::= NO OTHERS",
165297
- /* 331 */ "frame_exclude ::= CURRENT ROW",
165298
- /* 332 */ "frame_exclude ::= GROUP|TIES",
165299
- /* 333 */ "window_clause ::= WINDOW windowdefn_list",
165300
- /* 334 */ "filter_over ::= filter_clause over_clause",
165301
- /* 335 */ "filter_over ::= over_clause",
165302
- /* 336 */ "filter_over ::= filter_clause",
165303
- /* 337 */ "over_clause ::= OVER LP window RP",
165304
- /* 338 */ "over_clause ::= OVER nm",
165305
- /* 339 */ "filter_clause ::= FILTER LP WHERE expr RP",
165306
- /* 340 */ "input ::= cmdlist",
165307
- /* 341 */ "cmdlist ::= cmdlist ecmd",
165308
- /* 342 */ "cmdlist ::= ecmd",
165309
- /* 343 */ "ecmd ::= SEMI",
165310
- /* 344 */ "ecmd ::= cmdx SEMI",
165311
- /* 345 */ "ecmd ::= explain cmdx SEMI",
165312
- /* 346 */ "trans_opt ::=",
165313
- /* 347 */ "trans_opt ::= TRANSACTION",
165314
- /* 348 */ "trans_opt ::= TRANSACTION nm",
165315
- /* 349 */ "savepoint_opt ::= SAVEPOINT",
165316
- /* 350 */ "savepoint_opt ::=",
165317
- /* 351 */ "cmd ::= create_table create_table_args",
165318
- /* 352 */ "table_option_set ::= table_option",
165319
- /* 353 */ "columnlist ::= columnlist COMMA columnname carglist",
165320
- /* 354 */ "columnlist ::= columnname carglist",
165321
- /* 355 */ "nm ::= ID|INDEXED",
165322
- /* 356 */ "nm ::= STRING",
165323
- /* 357 */ "nm ::= JOIN_KW",
165324
- /* 358 */ "typetoken ::= typename",
165325
- /* 359 */ "typename ::= ID|STRING",
165326
- /* 360 */ "signed ::= plus_num",
165327
- /* 361 */ "signed ::= minus_num",
165328
- /* 362 */ "carglist ::= carglist ccons",
165329
- /* 363 */ "carglist ::=",
165330
- /* 364 */ "ccons ::= NULL onconf",
165331
- /* 365 */ "ccons ::= GENERATED ALWAYS AS generated",
165332
- /* 366 */ "ccons ::= AS generated",
165333
- /* 367 */ "conslist_opt ::= COMMA conslist",
165334
- /* 368 */ "conslist ::= conslist tconscomma tcons",
165335
- /* 369 */ "conslist ::= tcons",
165336
- /* 370 */ "tconscomma ::=",
165337
- /* 371 */ "defer_subclause_opt ::= defer_subclause",
165338
- /* 372 */ "resolvetype ::= raisetype",
165339
- /* 373 */ "selectnowith ::= oneselect",
165340
- /* 374 */ "oneselect ::= values",
165341
- /* 375 */ "sclp ::= selcollist COMMA",
165342
- /* 376 */ "as ::= ID|STRING",
165343
- /* 377 */ "indexed_opt ::= indexed_by",
165344
- /* 378 */ "returning ::=",
165345
- /* 379 */ "expr ::= term",
165346
- /* 380 */ "likeop ::= LIKE_KW|MATCH",
165347
- /* 381 */ "exprlist ::= nexprlist",
165348
- /* 382 */ "nmnum ::= plus_num",
165349
- /* 383 */ "nmnum ::= nm",
165350
- /* 384 */ "nmnum ::= ON",
165351
- /* 385 */ "nmnum ::= DELETE",
165352
- /* 386 */ "nmnum ::= DEFAULT",
165353
- /* 387 */ "plus_num ::= INTEGER|FLOAT",
165354
- /* 388 */ "foreach_clause ::=",
165355
- /* 389 */ "foreach_clause ::= FOR EACH ROW",
165356
- /* 390 */ "trnm ::= nm",
165357
- /* 391 */ "tridxby ::=",
165358
- /* 392 */ "database_kw_opt ::= DATABASE",
165359
- /* 393 */ "database_kw_opt ::=",
165360
- /* 394 */ "kwcolumn_opt ::=",
165361
- /* 395 */ "kwcolumn_opt ::= COLUMNKW",
165362
- /* 396 */ "vtabarglist ::= vtabarg",
165363
- /* 397 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
165364
- /* 398 */ "vtabarg ::= vtabarg vtabargtoken",
165365
- /* 399 */ "anylist ::=",
165366
- /* 400 */ "anylist ::= anylist LP anylist RP",
165367
- /* 401 */ "anylist ::= anylist ANY",
165368
- /* 402 */ "with ::=",
165165
+ /* 209 */ "expr ::= expr IS NOT DISTINCT FROM expr",
165166
+ /* 210 */ "expr ::= expr IS DISTINCT FROM expr",
165167
+ /* 211 */ "expr ::= NOT expr",
165168
+ /* 212 */ "expr ::= BITNOT expr",
165169
+ /* 213 */ "expr ::= PLUS|MINUS expr",
165170
+ /* 214 */ "expr ::= expr PTR expr",
165171
+ /* 215 */ "between_op ::= BETWEEN",
165172
+ /* 216 */ "between_op ::= NOT BETWEEN",
165173
+ /* 217 */ "expr ::= expr between_op expr AND expr",
165174
+ /* 218 */ "in_op ::= IN",
165175
+ /* 219 */ "in_op ::= NOT IN",
165176
+ /* 220 */ "expr ::= expr in_op LP exprlist RP",
165177
+ /* 221 */ "expr ::= LP select RP",
165178
+ /* 222 */ "expr ::= expr in_op LP select RP",
165179
+ /* 223 */ "expr ::= expr in_op nm dbnm paren_exprlist",
165180
+ /* 224 */ "expr ::= EXISTS LP select RP",
165181
+ /* 225 */ "expr ::= CASE case_operand case_exprlist case_else END",
165182
+ /* 226 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
165183
+ /* 227 */ "case_exprlist ::= WHEN expr THEN expr",
165184
+ /* 228 */ "case_else ::= ELSE expr",
165185
+ /* 229 */ "case_else ::=",
165186
+ /* 230 */ "case_operand ::= expr",
165187
+ /* 231 */ "case_operand ::=",
165188
+ /* 232 */ "exprlist ::=",
165189
+ /* 233 */ "nexprlist ::= nexprlist COMMA expr",
165190
+ /* 234 */ "nexprlist ::= expr",
165191
+ /* 235 */ "paren_exprlist ::=",
165192
+ /* 236 */ "paren_exprlist ::= LP exprlist RP",
165193
+ /* 237 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
165194
+ /* 238 */ "uniqueflag ::= UNIQUE",
165195
+ /* 239 */ "uniqueflag ::=",
165196
+ /* 240 */ "eidlist_opt ::=",
165197
+ /* 241 */ "eidlist_opt ::= LP eidlist RP",
165198
+ /* 242 */ "eidlist ::= eidlist COMMA nm collate sortorder",
165199
+ /* 243 */ "eidlist ::= nm collate sortorder",
165200
+ /* 244 */ "collate ::=",
165201
+ /* 245 */ "collate ::= COLLATE ID|STRING",
165202
+ /* 246 */ "cmd ::= DROP INDEX ifexists fullname",
165203
+ /* 247 */ "cmd ::= VACUUM vinto",
165204
+ /* 248 */ "cmd ::= VACUUM nm vinto",
165205
+ /* 249 */ "vinto ::= INTO expr",
165206
+ /* 250 */ "vinto ::=",
165207
+ /* 251 */ "cmd ::= PRAGMA nm dbnm",
165208
+ /* 252 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
165209
+ /* 253 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
165210
+ /* 254 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
165211
+ /* 255 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
165212
+ /* 256 */ "plus_num ::= PLUS INTEGER|FLOAT",
165213
+ /* 257 */ "minus_num ::= MINUS INTEGER|FLOAT",
165214
+ /* 258 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
165215
+ /* 259 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
165216
+ /* 260 */ "trigger_time ::= BEFORE|AFTER",
165217
+ /* 261 */ "trigger_time ::= INSTEAD OF",
165218
+ /* 262 */ "trigger_time ::=",
165219
+ /* 263 */ "trigger_event ::= DELETE|INSERT",
165220
+ /* 264 */ "trigger_event ::= UPDATE",
165221
+ /* 265 */ "trigger_event ::= UPDATE OF idlist",
165222
+ /* 266 */ "when_clause ::=",
165223
+ /* 267 */ "when_clause ::= WHEN expr",
165224
+ /* 268 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
165225
+ /* 269 */ "trigger_cmd_list ::= trigger_cmd SEMI",
165226
+ /* 270 */ "trnm ::= nm DOT nm",
165227
+ /* 271 */ "tridxby ::= INDEXED BY nm",
165228
+ /* 272 */ "tridxby ::= NOT INDEXED",
165229
+ /* 273 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
165230
+ /* 274 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
165231
+ /* 275 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
165232
+ /* 276 */ "trigger_cmd ::= scanpt select scanpt",
165233
+ /* 277 */ "expr ::= RAISE LP IGNORE RP",
165234
+ /* 278 */ "expr ::= RAISE LP raisetype COMMA nm RP",
165235
+ /* 279 */ "raisetype ::= ROLLBACK",
165236
+ /* 280 */ "raisetype ::= ABORT",
165237
+ /* 281 */ "raisetype ::= FAIL",
165238
+ /* 282 */ "cmd ::= DROP TRIGGER ifexists fullname",
165239
+ /* 283 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
165240
+ /* 284 */ "cmd ::= DETACH database_kw_opt expr",
165241
+ /* 285 */ "key_opt ::=",
165242
+ /* 286 */ "key_opt ::= KEY expr",
165243
+ /* 287 */ "cmd ::= REINDEX",
165244
+ /* 288 */ "cmd ::= REINDEX nm dbnm",
165245
+ /* 289 */ "cmd ::= ANALYZE",
165246
+ /* 290 */ "cmd ::= ANALYZE nm dbnm",
165247
+ /* 291 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
165248
+ /* 292 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
165249
+ /* 293 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
165250
+ /* 294 */ "add_column_fullname ::= fullname",
165251
+ /* 295 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
165252
+ /* 296 */ "cmd ::= create_vtab",
165253
+ /* 297 */ "cmd ::= create_vtab LP vtabarglist RP",
165254
+ /* 298 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
165255
+ /* 299 */ "vtabarg ::=",
165256
+ /* 300 */ "vtabargtoken ::= ANY",
165257
+ /* 301 */ "vtabargtoken ::= lp anylist RP",
165258
+ /* 302 */ "lp ::= LP",
165259
+ /* 303 */ "with ::= WITH wqlist",
165260
+ /* 304 */ "with ::= WITH RECURSIVE wqlist",
165261
+ /* 305 */ "wqas ::= AS",
165262
+ /* 306 */ "wqas ::= AS MATERIALIZED",
165263
+ /* 307 */ "wqas ::= AS NOT MATERIALIZED",
165264
+ /* 308 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
165265
+ /* 309 */ "wqlist ::= wqitem",
165266
+ /* 310 */ "wqlist ::= wqlist COMMA wqitem",
165267
+ /* 311 */ "windowdefn_list ::= windowdefn",
165268
+ /* 312 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
165269
+ /* 313 */ "windowdefn ::= nm AS LP window RP",
165270
+ /* 314 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
165271
+ /* 315 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
165272
+ /* 316 */ "window ::= ORDER BY sortlist frame_opt",
165273
+ /* 317 */ "window ::= nm ORDER BY sortlist frame_opt",
165274
+ /* 318 */ "window ::= frame_opt",
165275
+ /* 319 */ "window ::= nm frame_opt",
165276
+ /* 320 */ "frame_opt ::=",
165277
+ /* 321 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
165278
+ /* 322 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
165279
+ /* 323 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
165280
+ /* 324 */ "frame_bound_s ::= frame_bound",
165281
+ /* 325 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
165282
+ /* 326 */ "frame_bound_e ::= frame_bound",
165283
+ /* 327 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
165284
+ /* 328 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
165285
+ /* 329 */ "frame_bound ::= CURRENT ROW",
165286
+ /* 330 */ "frame_exclude_opt ::=",
165287
+ /* 331 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
165288
+ /* 332 */ "frame_exclude ::= NO OTHERS",
165289
+ /* 333 */ "frame_exclude ::= CURRENT ROW",
165290
+ /* 334 */ "frame_exclude ::= GROUP|TIES",
165291
+ /* 335 */ "window_clause ::= WINDOW windowdefn_list",
165292
+ /* 336 */ "filter_over ::= filter_clause over_clause",
165293
+ /* 337 */ "filter_over ::= over_clause",
165294
+ /* 338 */ "filter_over ::= filter_clause",
165295
+ /* 339 */ "over_clause ::= OVER LP window RP",
165296
+ /* 340 */ "over_clause ::= OVER nm",
165297
+ /* 341 */ "filter_clause ::= FILTER LP WHERE expr RP",
165298
+ /* 342 */ "input ::= cmdlist",
165299
+ /* 343 */ "cmdlist ::= cmdlist ecmd",
165300
+ /* 344 */ "cmdlist ::= ecmd",
165301
+ /* 345 */ "ecmd ::= SEMI",
165302
+ /* 346 */ "ecmd ::= cmdx SEMI",
165303
+ /* 347 */ "ecmd ::= explain cmdx SEMI",
165304
+ /* 348 */ "trans_opt ::=",
165305
+ /* 349 */ "trans_opt ::= TRANSACTION",
165306
+ /* 350 */ "trans_opt ::= TRANSACTION nm",
165307
+ /* 351 */ "savepoint_opt ::= SAVEPOINT",
165308
+ /* 352 */ "savepoint_opt ::=",
165309
+ /* 353 */ "cmd ::= create_table create_table_args",
165310
+ /* 354 */ "table_option_set ::= table_option",
165311
+ /* 355 */ "columnlist ::= columnlist COMMA columnname carglist",
165312
+ /* 356 */ "columnlist ::= columnname carglist",
165313
+ /* 357 */ "nm ::= ID|INDEXED",
165314
+ /* 358 */ "nm ::= STRING",
165315
+ /* 359 */ "nm ::= JOIN_KW",
165316
+ /* 360 */ "typetoken ::= typename",
165317
+ /* 361 */ "typename ::= ID|STRING",
165318
+ /* 362 */ "signed ::= plus_num",
165319
+ /* 363 */ "signed ::= minus_num",
165320
+ /* 364 */ "carglist ::= carglist ccons",
165321
+ /* 365 */ "carglist ::=",
165322
+ /* 366 */ "ccons ::= NULL onconf",
165323
+ /* 367 */ "ccons ::= GENERATED ALWAYS AS generated",
165324
+ /* 368 */ "ccons ::= AS generated",
165325
+ /* 369 */ "conslist_opt ::= COMMA conslist",
165326
+ /* 370 */ "conslist ::= conslist tconscomma tcons",
165327
+ /* 371 */ "conslist ::= tcons",
165328
+ /* 372 */ "tconscomma ::=",
165329
+ /* 373 */ "defer_subclause_opt ::= defer_subclause",
165330
+ /* 374 */ "resolvetype ::= raisetype",
165331
+ /* 375 */ "selectnowith ::= oneselect",
165332
+ /* 376 */ "oneselect ::= values",
165333
+ /* 377 */ "sclp ::= selcollist COMMA",
165334
+ /* 378 */ "as ::= ID|STRING",
165335
+ /* 379 */ "indexed_opt ::= indexed_by",
165336
+ /* 380 */ "returning ::=",
165337
+ /* 381 */ "expr ::= term",
165338
+ /* 382 */ "likeop ::= LIKE_KW|MATCH",
165339
+ /* 383 */ "exprlist ::= nexprlist",
165340
+ /* 384 */ "nmnum ::= plus_num",
165341
+ /* 385 */ "nmnum ::= nm",
165342
+ /* 386 */ "nmnum ::= ON",
165343
+ /* 387 */ "nmnum ::= DELETE",
165344
+ /* 388 */ "nmnum ::= DEFAULT",
165345
+ /* 389 */ "plus_num ::= INTEGER|FLOAT",
165346
+ /* 390 */ "foreach_clause ::=",
165347
+ /* 391 */ "foreach_clause ::= FOR EACH ROW",
165348
+ /* 392 */ "trnm ::= nm",
165349
+ /* 393 */ "tridxby ::=",
165350
+ /* 394 */ "database_kw_opt ::= DATABASE",
165351
+ /* 395 */ "database_kw_opt ::=",
165352
+ /* 396 */ "kwcolumn_opt ::=",
165353
+ /* 397 */ "kwcolumn_opt ::= COLUMNKW",
165354
+ /* 398 */ "vtabarglist ::= vtabarg",
165355
+ /* 399 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
165356
+ /* 400 */ "vtabarg ::= vtabarg vtabargtoken",
165357
+ /* 401 */ "anylist ::=",
165358
+ /* 402 */ "anylist ::= anylist LP anylist RP",
165359
+ /* 403 */ "anylist ::= anylist ANY",
165360
+ /* 404 */ "with ::=",
165369165361
};
165370165362
#endif /* NDEBUG */
165371165363
165372165364
165373165365
#if YYSTACKDEPTH<=0
@@ -166079,204 +166071,206 @@
166079166071
217, /* (204) expr ::= expr likeop expr ESCAPE expr */
166080166072
217, /* (205) expr ::= expr ISNULL|NOTNULL */
166081166073
217, /* (206) expr ::= expr NOT NULL */
166082166074
217, /* (207) expr ::= expr IS expr */
166083166075
217, /* (208) expr ::= expr IS NOT expr */
166084
- 217, /* (209) expr ::= NOT expr */
166085
- 217, /* (210) expr ::= BITNOT expr */
166086
- 217, /* (211) expr ::= PLUS|MINUS expr */
166087
- 217, /* (212) expr ::= expr PTR expr */
166088
- 275, /* (213) between_op ::= BETWEEN */
166089
- 275, /* (214) between_op ::= NOT BETWEEN */
166090
- 217, /* (215) expr ::= expr between_op expr AND expr */
166091
- 276, /* (216) in_op ::= IN */
166092
- 276, /* (217) in_op ::= NOT IN */
166093
- 217, /* (218) expr ::= expr in_op LP exprlist RP */
166094
- 217, /* (219) expr ::= LP select RP */
166095
- 217, /* (220) expr ::= expr in_op LP select RP */
166096
- 217, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */
166097
- 217, /* (222) expr ::= EXISTS LP select RP */
166098
- 217, /* (223) expr ::= CASE case_operand case_exprlist case_else END */
166099
- 279, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */
166100
- 279, /* (225) case_exprlist ::= WHEN expr THEN expr */
166101
- 280, /* (226) case_else ::= ELSE expr */
166102
- 280, /* (227) case_else ::= */
166103
- 278, /* (228) case_operand ::= expr */
166104
- 278, /* (229) case_operand ::= */
166105
- 261, /* (230) exprlist ::= */
166106
- 253, /* (231) nexprlist ::= nexprlist COMMA expr */
166107
- 253, /* (232) nexprlist ::= expr */
166108
- 277, /* (233) paren_exprlist ::= */
166109
- 277, /* (234) paren_exprlist ::= LP exprlist RP */
166110
- 190, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
166111
- 281, /* (236) uniqueflag ::= UNIQUE */
166112
- 281, /* (237) uniqueflag ::= */
166113
- 221, /* (238) eidlist_opt ::= */
166114
- 221, /* (239) eidlist_opt ::= LP eidlist RP */
166115
- 232, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */
166116
- 232, /* (241) eidlist ::= nm collate sortorder */
166117
- 282, /* (242) collate ::= */
166118
- 282, /* (243) collate ::= COLLATE ID|STRING */
166119
- 190, /* (244) cmd ::= DROP INDEX ifexists fullname */
166120
- 190, /* (245) cmd ::= VACUUM vinto */
166121
- 190, /* (246) cmd ::= VACUUM nm vinto */
166122
- 283, /* (247) vinto ::= INTO expr */
166123
- 283, /* (248) vinto ::= */
166124
- 190, /* (249) cmd ::= PRAGMA nm dbnm */
166125
- 190, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */
166126
- 190, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */
166127
- 190, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */
166128
- 190, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */
166129
- 211, /* (254) plus_num ::= PLUS INTEGER|FLOAT */
166130
- 212, /* (255) minus_num ::= MINUS INTEGER|FLOAT */
166131
- 190, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
166132
- 285, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
166133
- 287, /* (258) trigger_time ::= BEFORE|AFTER */
166134
- 287, /* (259) trigger_time ::= INSTEAD OF */
166135
- 287, /* (260) trigger_time ::= */
166136
- 288, /* (261) trigger_event ::= DELETE|INSERT */
166137
- 288, /* (262) trigger_event ::= UPDATE */
166138
- 288, /* (263) trigger_event ::= UPDATE OF idlist */
166139
- 290, /* (264) when_clause ::= */
166140
- 290, /* (265) when_clause ::= WHEN expr */
166141
- 286, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
166142
- 286, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */
166143
- 292, /* (268) trnm ::= nm DOT nm */
166144
- 293, /* (269) tridxby ::= INDEXED BY nm */
166145
- 293, /* (270) tridxby ::= NOT INDEXED */
166146
- 291, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
166147
- 291, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
166148
- 291, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
166149
- 291, /* (274) trigger_cmd ::= scanpt select scanpt */
166150
- 217, /* (275) expr ::= RAISE LP IGNORE RP */
166151
- 217, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */
166152
- 236, /* (277) raisetype ::= ROLLBACK */
166153
- 236, /* (278) raisetype ::= ABORT */
166154
- 236, /* (279) raisetype ::= FAIL */
166155
- 190, /* (280) cmd ::= DROP TRIGGER ifexists fullname */
166156
- 190, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
166157
- 190, /* (282) cmd ::= DETACH database_kw_opt expr */
166158
- 295, /* (283) key_opt ::= */
166159
- 295, /* (284) key_opt ::= KEY expr */
166160
- 190, /* (285) cmd ::= REINDEX */
166161
- 190, /* (286) cmd ::= REINDEX nm dbnm */
166162
- 190, /* (287) cmd ::= ANALYZE */
166163
- 190, /* (288) cmd ::= ANALYZE nm dbnm */
166164
- 190, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */
166165
- 190, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
166166
- 190, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
166167
- 296, /* (292) add_column_fullname ::= fullname */
166168
- 190, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
166169
- 190, /* (294) cmd ::= create_vtab */
166170
- 190, /* (295) cmd ::= create_vtab LP vtabarglist RP */
166171
- 298, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
166172
- 300, /* (297) vtabarg ::= */
166173
- 301, /* (298) vtabargtoken ::= ANY */
166174
- 301, /* (299) vtabargtoken ::= lp anylist RP */
166175
- 302, /* (300) lp ::= LP */
166176
- 266, /* (301) with ::= WITH wqlist */
166177
- 266, /* (302) with ::= WITH RECURSIVE wqlist */
166178
- 305, /* (303) wqas ::= AS */
166179
- 305, /* (304) wqas ::= AS MATERIALIZED */
166180
- 305, /* (305) wqas ::= AS NOT MATERIALIZED */
166181
- 304, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
166182
- 241, /* (307) wqlist ::= wqitem */
166183
- 241, /* (308) wqlist ::= wqlist COMMA wqitem */
166184
- 306, /* (309) windowdefn_list ::= windowdefn */
166185
- 306, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */
166186
- 307, /* (311) windowdefn ::= nm AS LP window RP */
166187
- 308, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
166188
- 308, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
166189
- 308, /* (314) window ::= ORDER BY sortlist frame_opt */
166190
- 308, /* (315) window ::= nm ORDER BY sortlist frame_opt */
166191
- 308, /* (316) window ::= frame_opt */
166192
- 308, /* (317) window ::= nm frame_opt */
166193
- 309, /* (318) frame_opt ::= */
166194
- 309, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
166195
- 309, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
166196
- 313, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
166197
- 315, /* (322) frame_bound_s ::= frame_bound */
166198
- 315, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
166199
- 316, /* (324) frame_bound_e ::= frame_bound */
166200
- 316, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
166201
- 314, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
166202
- 314, /* (327) frame_bound ::= CURRENT ROW */
166203
- 317, /* (328) frame_exclude_opt ::= */
166204
- 317, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
166205
- 318, /* (330) frame_exclude ::= NO OTHERS */
166206
- 318, /* (331) frame_exclude ::= CURRENT ROW */
166207
- 318, /* (332) frame_exclude ::= GROUP|TIES */
166208
- 251, /* (333) window_clause ::= WINDOW windowdefn_list */
166209
- 273, /* (334) filter_over ::= filter_clause over_clause */
166210
- 273, /* (335) filter_over ::= over_clause */
166211
- 273, /* (336) filter_over ::= filter_clause */
166212
- 312, /* (337) over_clause ::= OVER LP window RP */
166213
- 312, /* (338) over_clause ::= OVER nm */
166214
- 311, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
166215
- 185, /* (340) input ::= cmdlist */
166216
- 186, /* (341) cmdlist ::= cmdlist ecmd */
166217
- 186, /* (342) cmdlist ::= ecmd */
166218
- 187, /* (343) ecmd ::= SEMI */
166219
- 187, /* (344) ecmd ::= cmdx SEMI */
166220
- 187, /* (345) ecmd ::= explain cmdx SEMI */
166221
- 192, /* (346) trans_opt ::= */
166222
- 192, /* (347) trans_opt ::= TRANSACTION */
166223
- 192, /* (348) trans_opt ::= TRANSACTION nm */
166224
- 194, /* (349) savepoint_opt ::= SAVEPOINT */
166225
- 194, /* (350) savepoint_opt ::= */
166226
- 190, /* (351) cmd ::= create_table create_table_args */
166227
- 203, /* (352) table_option_set ::= table_option */
166228
- 201, /* (353) columnlist ::= columnlist COMMA columnname carglist */
166229
- 201, /* (354) columnlist ::= columnname carglist */
166230
- 193, /* (355) nm ::= ID|INDEXED */
166231
- 193, /* (356) nm ::= STRING */
166232
- 193, /* (357) nm ::= JOIN_KW */
166233
- 208, /* (358) typetoken ::= typename */
166234
- 209, /* (359) typename ::= ID|STRING */
166235
- 210, /* (360) signed ::= plus_num */
166236
- 210, /* (361) signed ::= minus_num */
166237
- 207, /* (362) carglist ::= carglist ccons */
166238
- 207, /* (363) carglist ::= */
166239
- 215, /* (364) ccons ::= NULL onconf */
166240
- 215, /* (365) ccons ::= GENERATED ALWAYS AS generated */
166241
- 215, /* (366) ccons ::= AS generated */
166242
- 202, /* (367) conslist_opt ::= COMMA conslist */
166243
- 228, /* (368) conslist ::= conslist tconscomma tcons */
166244
- 228, /* (369) conslist ::= tcons */
166245
- 229, /* (370) tconscomma ::= */
166246
- 233, /* (371) defer_subclause_opt ::= defer_subclause */
166247
- 235, /* (372) resolvetype ::= raisetype */
166248
- 239, /* (373) selectnowith ::= oneselect */
166249
- 240, /* (374) oneselect ::= values */
166250
- 254, /* (375) sclp ::= selcollist COMMA */
166251
- 255, /* (376) as ::= ID|STRING */
166252
- 264, /* (377) indexed_opt ::= indexed_by */
166253
- 272, /* (378) returning ::= */
166254
- 217, /* (379) expr ::= term */
166255
- 274, /* (380) likeop ::= LIKE_KW|MATCH */
166256
- 261, /* (381) exprlist ::= nexprlist */
166257
- 284, /* (382) nmnum ::= plus_num */
166258
- 284, /* (383) nmnum ::= nm */
166259
- 284, /* (384) nmnum ::= ON */
166260
- 284, /* (385) nmnum ::= DELETE */
166261
- 284, /* (386) nmnum ::= DEFAULT */
166262
- 211, /* (387) plus_num ::= INTEGER|FLOAT */
166263
- 289, /* (388) foreach_clause ::= */
166264
- 289, /* (389) foreach_clause ::= FOR EACH ROW */
166265
- 292, /* (390) trnm ::= nm */
166266
- 293, /* (391) tridxby ::= */
166267
- 294, /* (392) database_kw_opt ::= DATABASE */
166268
- 294, /* (393) database_kw_opt ::= */
166269
- 297, /* (394) kwcolumn_opt ::= */
166270
- 297, /* (395) kwcolumn_opt ::= COLUMNKW */
166271
- 299, /* (396) vtabarglist ::= vtabarg */
166272
- 299, /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */
166273
- 300, /* (398) vtabarg ::= vtabarg vtabargtoken */
166274
- 303, /* (399) anylist ::= */
166275
- 303, /* (400) anylist ::= anylist LP anylist RP */
166276
- 303, /* (401) anylist ::= anylist ANY */
166277
- 266, /* (402) with ::= */
166076
+ 217, /* (209) expr ::= expr IS NOT DISTINCT FROM expr */
166077
+ 217, /* (210) expr ::= expr IS DISTINCT FROM expr */
166078
+ 217, /* (211) expr ::= NOT expr */
166079
+ 217, /* (212) expr ::= BITNOT expr */
166080
+ 217, /* (213) expr ::= PLUS|MINUS expr */
166081
+ 217, /* (214) expr ::= expr PTR expr */
166082
+ 275, /* (215) between_op ::= BETWEEN */
166083
+ 275, /* (216) between_op ::= NOT BETWEEN */
166084
+ 217, /* (217) expr ::= expr between_op expr AND expr */
166085
+ 276, /* (218) in_op ::= IN */
166086
+ 276, /* (219) in_op ::= NOT IN */
166087
+ 217, /* (220) expr ::= expr in_op LP exprlist RP */
166088
+ 217, /* (221) expr ::= LP select RP */
166089
+ 217, /* (222) expr ::= expr in_op LP select RP */
166090
+ 217, /* (223) expr ::= expr in_op nm dbnm paren_exprlist */
166091
+ 217, /* (224) expr ::= EXISTS LP select RP */
166092
+ 217, /* (225) expr ::= CASE case_operand case_exprlist case_else END */
166093
+ 279, /* (226) case_exprlist ::= case_exprlist WHEN expr THEN expr */
166094
+ 279, /* (227) case_exprlist ::= WHEN expr THEN expr */
166095
+ 280, /* (228) case_else ::= ELSE expr */
166096
+ 280, /* (229) case_else ::= */
166097
+ 278, /* (230) case_operand ::= expr */
166098
+ 278, /* (231) case_operand ::= */
166099
+ 261, /* (232) exprlist ::= */
166100
+ 253, /* (233) nexprlist ::= nexprlist COMMA expr */
166101
+ 253, /* (234) nexprlist ::= expr */
166102
+ 277, /* (235) paren_exprlist ::= */
166103
+ 277, /* (236) paren_exprlist ::= LP exprlist RP */
166104
+ 190, /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
166105
+ 281, /* (238) uniqueflag ::= UNIQUE */
166106
+ 281, /* (239) uniqueflag ::= */
166107
+ 221, /* (240) eidlist_opt ::= */
166108
+ 221, /* (241) eidlist_opt ::= LP eidlist RP */
166109
+ 232, /* (242) eidlist ::= eidlist COMMA nm collate sortorder */
166110
+ 232, /* (243) eidlist ::= nm collate sortorder */
166111
+ 282, /* (244) collate ::= */
166112
+ 282, /* (245) collate ::= COLLATE ID|STRING */
166113
+ 190, /* (246) cmd ::= DROP INDEX ifexists fullname */
166114
+ 190, /* (247) cmd ::= VACUUM vinto */
166115
+ 190, /* (248) cmd ::= VACUUM nm vinto */
166116
+ 283, /* (249) vinto ::= INTO expr */
166117
+ 283, /* (250) vinto ::= */
166118
+ 190, /* (251) cmd ::= PRAGMA nm dbnm */
166119
+ 190, /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */
166120
+ 190, /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */
166121
+ 190, /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */
166122
+ 190, /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */
166123
+ 211, /* (256) plus_num ::= PLUS INTEGER|FLOAT */
166124
+ 212, /* (257) minus_num ::= MINUS INTEGER|FLOAT */
166125
+ 190, /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
166126
+ 285, /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
166127
+ 287, /* (260) trigger_time ::= BEFORE|AFTER */
166128
+ 287, /* (261) trigger_time ::= INSTEAD OF */
166129
+ 287, /* (262) trigger_time ::= */
166130
+ 288, /* (263) trigger_event ::= DELETE|INSERT */
166131
+ 288, /* (264) trigger_event ::= UPDATE */
166132
+ 288, /* (265) trigger_event ::= UPDATE OF idlist */
166133
+ 290, /* (266) when_clause ::= */
166134
+ 290, /* (267) when_clause ::= WHEN expr */
166135
+ 286, /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
166136
+ 286, /* (269) trigger_cmd_list ::= trigger_cmd SEMI */
166137
+ 292, /* (270) trnm ::= nm DOT nm */
166138
+ 293, /* (271) tridxby ::= INDEXED BY nm */
166139
+ 293, /* (272) tridxby ::= NOT INDEXED */
166140
+ 291, /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
166141
+ 291, /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
166142
+ 291, /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
166143
+ 291, /* (276) trigger_cmd ::= scanpt select scanpt */
166144
+ 217, /* (277) expr ::= RAISE LP IGNORE RP */
166145
+ 217, /* (278) expr ::= RAISE LP raisetype COMMA nm RP */
166146
+ 236, /* (279) raisetype ::= ROLLBACK */
166147
+ 236, /* (280) raisetype ::= ABORT */
166148
+ 236, /* (281) raisetype ::= FAIL */
166149
+ 190, /* (282) cmd ::= DROP TRIGGER ifexists fullname */
166150
+ 190, /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
166151
+ 190, /* (284) cmd ::= DETACH database_kw_opt expr */
166152
+ 295, /* (285) key_opt ::= */
166153
+ 295, /* (286) key_opt ::= KEY expr */
166154
+ 190, /* (287) cmd ::= REINDEX */
166155
+ 190, /* (288) cmd ::= REINDEX nm dbnm */
166156
+ 190, /* (289) cmd ::= ANALYZE */
166157
+ 190, /* (290) cmd ::= ANALYZE nm dbnm */
166158
+ 190, /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */
166159
+ 190, /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
166160
+ 190, /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
166161
+ 296, /* (294) add_column_fullname ::= fullname */
166162
+ 190, /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
166163
+ 190, /* (296) cmd ::= create_vtab */
166164
+ 190, /* (297) cmd ::= create_vtab LP vtabarglist RP */
166165
+ 298, /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
166166
+ 300, /* (299) vtabarg ::= */
166167
+ 301, /* (300) vtabargtoken ::= ANY */
166168
+ 301, /* (301) vtabargtoken ::= lp anylist RP */
166169
+ 302, /* (302) lp ::= LP */
166170
+ 266, /* (303) with ::= WITH wqlist */
166171
+ 266, /* (304) with ::= WITH RECURSIVE wqlist */
166172
+ 305, /* (305) wqas ::= AS */
166173
+ 305, /* (306) wqas ::= AS MATERIALIZED */
166174
+ 305, /* (307) wqas ::= AS NOT MATERIALIZED */
166175
+ 304, /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */
166176
+ 241, /* (309) wqlist ::= wqitem */
166177
+ 241, /* (310) wqlist ::= wqlist COMMA wqitem */
166178
+ 306, /* (311) windowdefn_list ::= windowdefn */
166179
+ 306, /* (312) windowdefn_list ::= windowdefn_list COMMA windowdefn */
166180
+ 307, /* (313) windowdefn ::= nm AS LP window RP */
166181
+ 308, /* (314) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
166182
+ 308, /* (315) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
166183
+ 308, /* (316) window ::= ORDER BY sortlist frame_opt */
166184
+ 308, /* (317) window ::= nm ORDER BY sortlist frame_opt */
166185
+ 308, /* (318) window ::= frame_opt */
166186
+ 308, /* (319) window ::= nm frame_opt */
166187
+ 309, /* (320) frame_opt ::= */
166188
+ 309, /* (321) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
166189
+ 309, /* (322) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
166190
+ 313, /* (323) range_or_rows ::= RANGE|ROWS|GROUPS */
166191
+ 315, /* (324) frame_bound_s ::= frame_bound */
166192
+ 315, /* (325) frame_bound_s ::= UNBOUNDED PRECEDING */
166193
+ 316, /* (326) frame_bound_e ::= frame_bound */
166194
+ 316, /* (327) frame_bound_e ::= UNBOUNDED FOLLOWING */
166195
+ 314, /* (328) frame_bound ::= expr PRECEDING|FOLLOWING */
166196
+ 314, /* (329) frame_bound ::= CURRENT ROW */
166197
+ 317, /* (330) frame_exclude_opt ::= */
166198
+ 317, /* (331) frame_exclude_opt ::= EXCLUDE frame_exclude */
166199
+ 318, /* (332) frame_exclude ::= NO OTHERS */
166200
+ 318, /* (333) frame_exclude ::= CURRENT ROW */
166201
+ 318, /* (334) frame_exclude ::= GROUP|TIES */
166202
+ 251, /* (335) window_clause ::= WINDOW windowdefn_list */
166203
+ 273, /* (336) filter_over ::= filter_clause over_clause */
166204
+ 273, /* (337) filter_over ::= over_clause */
166205
+ 273, /* (338) filter_over ::= filter_clause */
166206
+ 312, /* (339) over_clause ::= OVER LP window RP */
166207
+ 312, /* (340) over_clause ::= OVER nm */
166208
+ 311, /* (341) filter_clause ::= FILTER LP WHERE expr RP */
166209
+ 185, /* (342) input ::= cmdlist */
166210
+ 186, /* (343) cmdlist ::= cmdlist ecmd */
166211
+ 186, /* (344) cmdlist ::= ecmd */
166212
+ 187, /* (345) ecmd ::= SEMI */
166213
+ 187, /* (346) ecmd ::= cmdx SEMI */
166214
+ 187, /* (347) ecmd ::= explain cmdx SEMI */
166215
+ 192, /* (348) trans_opt ::= */
166216
+ 192, /* (349) trans_opt ::= TRANSACTION */
166217
+ 192, /* (350) trans_opt ::= TRANSACTION nm */
166218
+ 194, /* (351) savepoint_opt ::= SAVEPOINT */
166219
+ 194, /* (352) savepoint_opt ::= */
166220
+ 190, /* (353) cmd ::= create_table create_table_args */
166221
+ 203, /* (354) table_option_set ::= table_option */
166222
+ 201, /* (355) columnlist ::= columnlist COMMA columnname carglist */
166223
+ 201, /* (356) columnlist ::= columnname carglist */
166224
+ 193, /* (357) nm ::= ID|INDEXED */
166225
+ 193, /* (358) nm ::= STRING */
166226
+ 193, /* (359) nm ::= JOIN_KW */
166227
+ 208, /* (360) typetoken ::= typename */
166228
+ 209, /* (361) typename ::= ID|STRING */
166229
+ 210, /* (362) signed ::= plus_num */
166230
+ 210, /* (363) signed ::= minus_num */
166231
+ 207, /* (364) carglist ::= carglist ccons */
166232
+ 207, /* (365) carglist ::= */
166233
+ 215, /* (366) ccons ::= NULL onconf */
166234
+ 215, /* (367) ccons ::= GENERATED ALWAYS AS generated */
166235
+ 215, /* (368) ccons ::= AS generated */
166236
+ 202, /* (369) conslist_opt ::= COMMA conslist */
166237
+ 228, /* (370) conslist ::= conslist tconscomma tcons */
166238
+ 228, /* (371) conslist ::= tcons */
166239
+ 229, /* (372) tconscomma ::= */
166240
+ 233, /* (373) defer_subclause_opt ::= defer_subclause */
166241
+ 235, /* (374) resolvetype ::= raisetype */
166242
+ 239, /* (375) selectnowith ::= oneselect */
166243
+ 240, /* (376) oneselect ::= values */
166244
+ 254, /* (377) sclp ::= selcollist COMMA */
166245
+ 255, /* (378) as ::= ID|STRING */
166246
+ 264, /* (379) indexed_opt ::= indexed_by */
166247
+ 272, /* (380) returning ::= */
166248
+ 217, /* (381) expr ::= term */
166249
+ 274, /* (382) likeop ::= LIKE_KW|MATCH */
166250
+ 261, /* (383) exprlist ::= nexprlist */
166251
+ 284, /* (384) nmnum ::= plus_num */
166252
+ 284, /* (385) nmnum ::= nm */
166253
+ 284, /* (386) nmnum ::= ON */
166254
+ 284, /* (387) nmnum ::= DELETE */
166255
+ 284, /* (388) nmnum ::= DEFAULT */
166256
+ 211, /* (389) plus_num ::= INTEGER|FLOAT */
166257
+ 289, /* (390) foreach_clause ::= */
166258
+ 289, /* (391) foreach_clause ::= FOR EACH ROW */
166259
+ 292, /* (392) trnm ::= nm */
166260
+ 293, /* (393) tridxby ::= */
166261
+ 294, /* (394) database_kw_opt ::= DATABASE */
166262
+ 294, /* (395) database_kw_opt ::= */
166263
+ 297, /* (396) kwcolumn_opt ::= */
166264
+ 297, /* (397) kwcolumn_opt ::= COLUMNKW */
166265
+ 299, /* (398) vtabarglist ::= vtabarg */
166266
+ 299, /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */
166267
+ 300, /* (400) vtabarg ::= vtabarg vtabargtoken */
166268
+ 303, /* (401) anylist ::= */
166269
+ 303, /* (402) anylist ::= anylist LP anylist RP */
166270
+ 303, /* (403) anylist ::= anylist ANY */
166271
+ 266, /* (404) with ::= */
166278166272
};
166279166273
166280166274
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
166281166275
** of symbols on the right-hand side of that rule. */
166282166276
static const signed char yyRuleInfoNRhs[] = {
@@ -166487,204 +166481,206 @@
166487166481
-5, /* (204) expr ::= expr likeop expr ESCAPE expr */
166488166482
-2, /* (205) expr ::= expr ISNULL|NOTNULL */
166489166483
-3, /* (206) expr ::= expr NOT NULL */
166490166484
-3, /* (207) expr ::= expr IS expr */
166491166485
-4, /* (208) expr ::= expr IS NOT expr */
166492
- -2, /* (209) expr ::= NOT expr */
166493
- -2, /* (210) expr ::= BITNOT expr */
166494
- -2, /* (211) expr ::= PLUS|MINUS expr */
166495
- -3, /* (212) expr ::= expr PTR expr */
166496
- -1, /* (213) between_op ::= BETWEEN */
166497
- -2, /* (214) between_op ::= NOT BETWEEN */
166498
- -5, /* (215) expr ::= expr between_op expr AND expr */
166499
- -1, /* (216) in_op ::= IN */
166500
- -2, /* (217) in_op ::= NOT IN */
166501
- -5, /* (218) expr ::= expr in_op LP exprlist RP */
166502
- -3, /* (219) expr ::= LP select RP */
166503
- -5, /* (220) expr ::= expr in_op LP select RP */
166504
- -5, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */
166505
- -4, /* (222) expr ::= EXISTS LP select RP */
166506
- -5, /* (223) expr ::= CASE case_operand case_exprlist case_else END */
166507
- -5, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */
166508
- -4, /* (225) case_exprlist ::= WHEN expr THEN expr */
166509
- -2, /* (226) case_else ::= ELSE expr */
166510
- 0, /* (227) case_else ::= */
166511
- -1, /* (228) case_operand ::= expr */
166512
- 0, /* (229) case_operand ::= */
166513
- 0, /* (230) exprlist ::= */
166514
- -3, /* (231) nexprlist ::= nexprlist COMMA expr */
166515
- -1, /* (232) nexprlist ::= expr */
166516
- 0, /* (233) paren_exprlist ::= */
166517
- -3, /* (234) paren_exprlist ::= LP exprlist RP */
166518
- -12, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
166519
- -1, /* (236) uniqueflag ::= UNIQUE */
166520
- 0, /* (237) uniqueflag ::= */
166521
- 0, /* (238) eidlist_opt ::= */
166522
- -3, /* (239) eidlist_opt ::= LP eidlist RP */
166523
- -5, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */
166524
- -3, /* (241) eidlist ::= nm collate sortorder */
166525
- 0, /* (242) collate ::= */
166526
- -2, /* (243) collate ::= COLLATE ID|STRING */
166527
- -4, /* (244) cmd ::= DROP INDEX ifexists fullname */
166528
- -2, /* (245) cmd ::= VACUUM vinto */
166529
- -3, /* (246) cmd ::= VACUUM nm vinto */
166530
- -2, /* (247) vinto ::= INTO expr */
166531
- 0, /* (248) vinto ::= */
166532
- -3, /* (249) cmd ::= PRAGMA nm dbnm */
166533
- -5, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */
166534
- -6, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */
166535
- -5, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */
166536
- -6, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */
166537
- -2, /* (254) plus_num ::= PLUS INTEGER|FLOAT */
166538
- -2, /* (255) minus_num ::= MINUS INTEGER|FLOAT */
166539
- -5, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
166540
- -11, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
166541
- -1, /* (258) trigger_time ::= BEFORE|AFTER */
166542
- -2, /* (259) trigger_time ::= INSTEAD OF */
166543
- 0, /* (260) trigger_time ::= */
166544
- -1, /* (261) trigger_event ::= DELETE|INSERT */
166545
- -1, /* (262) trigger_event ::= UPDATE */
166546
- -3, /* (263) trigger_event ::= UPDATE OF idlist */
166547
- 0, /* (264) when_clause ::= */
166548
- -2, /* (265) when_clause ::= WHEN expr */
166549
- -3, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
166550
- -2, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */
166551
- -3, /* (268) trnm ::= nm DOT nm */
166552
- -3, /* (269) tridxby ::= INDEXED BY nm */
166553
- -2, /* (270) tridxby ::= NOT INDEXED */
166554
- -9, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
166555
- -8, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
166556
- -6, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
166557
- -3, /* (274) trigger_cmd ::= scanpt select scanpt */
166558
- -4, /* (275) expr ::= RAISE LP IGNORE RP */
166559
- -6, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */
166560
- -1, /* (277) raisetype ::= ROLLBACK */
166561
- -1, /* (278) raisetype ::= ABORT */
166562
- -1, /* (279) raisetype ::= FAIL */
166563
- -4, /* (280) cmd ::= DROP TRIGGER ifexists fullname */
166564
- -6, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
166565
- -3, /* (282) cmd ::= DETACH database_kw_opt expr */
166566
- 0, /* (283) key_opt ::= */
166567
- -2, /* (284) key_opt ::= KEY expr */
166568
- -1, /* (285) cmd ::= REINDEX */
166569
- -3, /* (286) cmd ::= REINDEX nm dbnm */
166570
- -1, /* (287) cmd ::= ANALYZE */
166571
- -3, /* (288) cmd ::= ANALYZE nm dbnm */
166572
- -6, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */
166573
- -7, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
166574
- -6, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
166575
- -1, /* (292) add_column_fullname ::= fullname */
166576
- -8, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
166577
- -1, /* (294) cmd ::= create_vtab */
166578
- -4, /* (295) cmd ::= create_vtab LP vtabarglist RP */
166579
- -8, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
166580
- 0, /* (297) vtabarg ::= */
166581
- -1, /* (298) vtabargtoken ::= ANY */
166582
- -3, /* (299) vtabargtoken ::= lp anylist RP */
166583
- -1, /* (300) lp ::= LP */
166584
- -2, /* (301) with ::= WITH wqlist */
166585
- -3, /* (302) with ::= WITH RECURSIVE wqlist */
166586
- -1, /* (303) wqas ::= AS */
166587
- -2, /* (304) wqas ::= AS MATERIALIZED */
166588
- -3, /* (305) wqas ::= AS NOT MATERIALIZED */
166589
- -6, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
166590
- -1, /* (307) wqlist ::= wqitem */
166591
- -3, /* (308) wqlist ::= wqlist COMMA wqitem */
166592
- -1, /* (309) windowdefn_list ::= windowdefn */
166593
- -3, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */
166594
- -5, /* (311) windowdefn ::= nm AS LP window RP */
166595
- -5, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
166596
- -6, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
166597
- -4, /* (314) window ::= ORDER BY sortlist frame_opt */
166598
- -5, /* (315) window ::= nm ORDER BY sortlist frame_opt */
166599
- -1, /* (316) window ::= frame_opt */
166600
- -2, /* (317) window ::= nm frame_opt */
166601
- 0, /* (318) frame_opt ::= */
166602
- -3, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
166603
- -6, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
166604
- -1, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
166605
- -1, /* (322) frame_bound_s ::= frame_bound */
166606
- -2, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
166607
- -1, /* (324) frame_bound_e ::= frame_bound */
166608
- -2, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
166609
- -2, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
166610
- -2, /* (327) frame_bound ::= CURRENT ROW */
166611
- 0, /* (328) frame_exclude_opt ::= */
166612
- -2, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
166613
- -2, /* (330) frame_exclude ::= NO OTHERS */
166614
- -2, /* (331) frame_exclude ::= CURRENT ROW */
166615
- -1, /* (332) frame_exclude ::= GROUP|TIES */
166616
- -2, /* (333) window_clause ::= WINDOW windowdefn_list */
166617
- -2, /* (334) filter_over ::= filter_clause over_clause */
166618
- -1, /* (335) filter_over ::= over_clause */
166619
- -1, /* (336) filter_over ::= filter_clause */
166620
- -4, /* (337) over_clause ::= OVER LP window RP */
166621
- -2, /* (338) over_clause ::= OVER nm */
166622
- -5, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
166623
- -1, /* (340) input ::= cmdlist */
166624
- -2, /* (341) cmdlist ::= cmdlist ecmd */
166625
- -1, /* (342) cmdlist ::= ecmd */
166626
- -1, /* (343) ecmd ::= SEMI */
166627
- -2, /* (344) ecmd ::= cmdx SEMI */
166628
- -3, /* (345) ecmd ::= explain cmdx SEMI */
166629
- 0, /* (346) trans_opt ::= */
166630
- -1, /* (347) trans_opt ::= TRANSACTION */
166631
- -2, /* (348) trans_opt ::= TRANSACTION nm */
166632
- -1, /* (349) savepoint_opt ::= SAVEPOINT */
166633
- 0, /* (350) savepoint_opt ::= */
166634
- -2, /* (351) cmd ::= create_table create_table_args */
166635
- -1, /* (352) table_option_set ::= table_option */
166636
- -4, /* (353) columnlist ::= columnlist COMMA columnname carglist */
166637
- -2, /* (354) columnlist ::= columnname carglist */
166638
- -1, /* (355) nm ::= ID|INDEXED */
166639
- -1, /* (356) nm ::= STRING */
166640
- -1, /* (357) nm ::= JOIN_KW */
166641
- -1, /* (358) typetoken ::= typename */
166642
- -1, /* (359) typename ::= ID|STRING */
166643
- -1, /* (360) signed ::= plus_num */
166644
- -1, /* (361) signed ::= minus_num */
166645
- -2, /* (362) carglist ::= carglist ccons */
166646
- 0, /* (363) carglist ::= */
166647
- -2, /* (364) ccons ::= NULL onconf */
166648
- -4, /* (365) ccons ::= GENERATED ALWAYS AS generated */
166649
- -2, /* (366) ccons ::= AS generated */
166650
- -2, /* (367) conslist_opt ::= COMMA conslist */
166651
- -3, /* (368) conslist ::= conslist tconscomma tcons */
166652
- -1, /* (369) conslist ::= tcons */
166653
- 0, /* (370) tconscomma ::= */
166654
- -1, /* (371) defer_subclause_opt ::= defer_subclause */
166655
- -1, /* (372) resolvetype ::= raisetype */
166656
- -1, /* (373) selectnowith ::= oneselect */
166657
- -1, /* (374) oneselect ::= values */
166658
- -2, /* (375) sclp ::= selcollist COMMA */
166659
- -1, /* (376) as ::= ID|STRING */
166660
- -1, /* (377) indexed_opt ::= indexed_by */
166661
- 0, /* (378) returning ::= */
166662
- -1, /* (379) expr ::= term */
166663
- -1, /* (380) likeop ::= LIKE_KW|MATCH */
166664
- -1, /* (381) exprlist ::= nexprlist */
166665
- -1, /* (382) nmnum ::= plus_num */
166666
- -1, /* (383) nmnum ::= nm */
166667
- -1, /* (384) nmnum ::= ON */
166668
- -1, /* (385) nmnum ::= DELETE */
166669
- -1, /* (386) nmnum ::= DEFAULT */
166670
- -1, /* (387) plus_num ::= INTEGER|FLOAT */
166671
- 0, /* (388) foreach_clause ::= */
166672
- -3, /* (389) foreach_clause ::= FOR EACH ROW */
166673
- -1, /* (390) trnm ::= nm */
166674
- 0, /* (391) tridxby ::= */
166675
- -1, /* (392) database_kw_opt ::= DATABASE */
166676
- 0, /* (393) database_kw_opt ::= */
166677
- 0, /* (394) kwcolumn_opt ::= */
166678
- -1, /* (395) kwcolumn_opt ::= COLUMNKW */
166679
- -1, /* (396) vtabarglist ::= vtabarg */
166680
- -3, /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */
166681
- -2, /* (398) vtabarg ::= vtabarg vtabargtoken */
166682
- 0, /* (399) anylist ::= */
166683
- -4, /* (400) anylist ::= anylist LP anylist RP */
166684
- -2, /* (401) anylist ::= anylist ANY */
166685
- 0, /* (402) with ::= */
166486
+ -6, /* (209) expr ::= expr IS NOT DISTINCT FROM expr */
166487
+ -5, /* (210) expr ::= expr IS DISTINCT FROM expr */
166488
+ -2, /* (211) expr ::= NOT expr */
166489
+ -2, /* (212) expr ::= BITNOT expr */
166490
+ -2, /* (213) expr ::= PLUS|MINUS expr */
166491
+ -3, /* (214) expr ::= expr PTR expr */
166492
+ -1, /* (215) between_op ::= BETWEEN */
166493
+ -2, /* (216) between_op ::= NOT BETWEEN */
166494
+ -5, /* (217) expr ::= expr between_op expr AND expr */
166495
+ -1, /* (218) in_op ::= IN */
166496
+ -2, /* (219) in_op ::= NOT IN */
166497
+ -5, /* (220) expr ::= expr in_op LP exprlist RP */
166498
+ -3, /* (221) expr ::= LP select RP */
166499
+ -5, /* (222) expr ::= expr in_op LP select RP */
166500
+ -5, /* (223) expr ::= expr in_op nm dbnm paren_exprlist */
166501
+ -4, /* (224) expr ::= EXISTS LP select RP */
166502
+ -5, /* (225) expr ::= CASE case_operand case_exprlist case_else END */
166503
+ -5, /* (226) case_exprlist ::= case_exprlist WHEN expr THEN expr */
166504
+ -4, /* (227) case_exprlist ::= WHEN expr THEN expr */
166505
+ -2, /* (228) case_else ::= ELSE expr */
166506
+ 0, /* (229) case_else ::= */
166507
+ -1, /* (230) case_operand ::= expr */
166508
+ 0, /* (231) case_operand ::= */
166509
+ 0, /* (232) exprlist ::= */
166510
+ -3, /* (233) nexprlist ::= nexprlist COMMA expr */
166511
+ -1, /* (234) nexprlist ::= expr */
166512
+ 0, /* (235) paren_exprlist ::= */
166513
+ -3, /* (236) paren_exprlist ::= LP exprlist RP */
166514
+ -12, /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
166515
+ -1, /* (238) uniqueflag ::= UNIQUE */
166516
+ 0, /* (239) uniqueflag ::= */
166517
+ 0, /* (240) eidlist_opt ::= */
166518
+ -3, /* (241) eidlist_opt ::= LP eidlist RP */
166519
+ -5, /* (242) eidlist ::= eidlist COMMA nm collate sortorder */
166520
+ -3, /* (243) eidlist ::= nm collate sortorder */
166521
+ 0, /* (244) collate ::= */
166522
+ -2, /* (245) collate ::= COLLATE ID|STRING */
166523
+ -4, /* (246) cmd ::= DROP INDEX ifexists fullname */
166524
+ -2, /* (247) cmd ::= VACUUM vinto */
166525
+ -3, /* (248) cmd ::= VACUUM nm vinto */
166526
+ -2, /* (249) vinto ::= INTO expr */
166527
+ 0, /* (250) vinto ::= */
166528
+ -3, /* (251) cmd ::= PRAGMA nm dbnm */
166529
+ -5, /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */
166530
+ -6, /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */
166531
+ -5, /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */
166532
+ -6, /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */
166533
+ -2, /* (256) plus_num ::= PLUS INTEGER|FLOAT */
166534
+ -2, /* (257) minus_num ::= MINUS INTEGER|FLOAT */
166535
+ -5, /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
166536
+ -11, /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
166537
+ -1, /* (260) trigger_time ::= BEFORE|AFTER */
166538
+ -2, /* (261) trigger_time ::= INSTEAD OF */
166539
+ 0, /* (262) trigger_time ::= */
166540
+ -1, /* (263) trigger_event ::= DELETE|INSERT */
166541
+ -1, /* (264) trigger_event ::= UPDATE */
166542
+ -3, /* (265) trigger_event ::= UPDATE OF idlist */
166543
+ 0, /* (266) when_clause ::= */
166544
+ -2, /* (267) when_clause ::= WHEN expr */
166545
+ -3, /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
166546
+ -2, /* (269) trigger_cmd_list ::= trigger_cmd SEMI */
166547
+ -3, /* (270) trnm ::= nm DOT nm */
166548
+ -3, /* (271) tridxby ::= INDEXED BY nm */
166549
+ -2, /* (272) tridxby ::= NOT INDEXED */
166550
+ -9, /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
166551
+ -8, /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
166552
+ -6, /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
166553
+ -3, /* (276) trigger_cmd ::= scanpt select scanpt */
166554
+ -4, /* (277) expr ::= RAISE LP IGNORE RP */
166555
+ -6, /* (278) expr ::= RAISE LP raisetype COMMA nm RP */
166556
+ -1, /* (279) raisetype ::= ROLLBACK */
166557
+ -1, /* (280) raisetype ::= ABORT */
166558
+ -1, /* (281) raisetype ::= FAIL */
166559
+ -4, /* (282) cmd ::= DROP TRIGGER ifexists fullname */
166560
+ -6, /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
166561
+ -3, /* (284) cmd ::= DETACH database_kw_opt expr */
166562
+ 0, /* (285) key_opt ::= */
166563
+ -2, /* (286) key_opt ::= KEY expr */
166564
+ -1, /* (287) cmd ::= REINDEX */
166565
+ -3, /* (288) cmd ::= REINDEX nm dbnm */
166566
+ -1, /* (289) cmd ::= ANALYZE */
166567
+ -3, /* (290) cmd ::= ANALYZE nm dbnm */
166568
+ -6, /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */
166569
+ -7, /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
166570
+ -6, /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
166571
+ -1, /* (294) add_column_fullname ::= fullname */
166572
+ -8, /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
166573
+ -1, /* (296) cmd ::= create_vtab */
166574
+ -4, /* (297) cmd ::= create_vtab LP vtabarglist RP */
166575
+ -8, /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
166576
+ 0, /* (299) vtabarg ::= */
166577
+ -1, /* (300) vtabargtoken ::= ANY */
166578
+ -3, /* (301) vtabargtoken ::= lp anylist RP */
166579
+ -1, /* (302) lp ::= LP */
166580
+ -2, /* (303) with ::= WITH wqlist */
166581
+ -3, /* (304) with ::= WITH RECURSIVE wqlist */
166582
+ -1, /* (305) wqas ::= AS */
166583
+ -2, /* (306) wqas ::= AS MATERIALIZED */
166584
+ -3, /* (307) wqas ::= AS NOT MATERIALIZED */
166585
+ -6, /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */
166586
+ -1, /* (309) wqlist ::= wqitem */
166587
+ -3, /* (310) wqlist ::= wqlist COMMA wqitem */
166588
+ -1, /* (311) windowdefn_list ::= windowdefn */
166589
+ -3, /* (312) windowdefn_list ::= windowdefn_list COMMA windowdefn */
166590
+ -5, /* (313) windowdefn ::= nm AS LP window RP */
166591
+ -5, /* (314) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
166592
+ -6, /* (315) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
166593
+ -4, /* (316) window ::= ORDER BY sortlist frame_opt */
166594
+ -5, /* (317) window ::= nm ORDER BY sortlist frame_opt */
166595
+ -1, /* (318) window ::= frame_opt */
166596
+ -2, /* (319) window ::= nm frame_opt */
166597
+ 0, /* (320) frame_opt ::= */
166598
+ -3, /* (321) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
166599
+ -6, /* (322) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
166600
+ -1, /* (323) range_or_rows ::= RANGE|ROWS|GROUPS */
166601
+ -1, /* (324) frame_bound_s ::= frame_bound */
166602
+ -2, /* (325) frame_bound_s ::= UNBOUNDED PRECEDING */
166603
+ -1, /* (326) frame_bound_e ::= frame_bound */
166604
+ -2, /* (327) frame_bound_e ::= UNBOUNDED FOLLOWING */
166605
+ -2, /* (328) frame_bound ::= expr PRECEDING|FOLLOWING */
166606
+ -2, /* (329) frame_bound ::= CURRENT ROW */
166607
+ 0, /* (330) frame_exclude_opt ::= */
166608
+ -2, /* (331) frame_exclude_opt ::= EXCLUDE frame_exclude */
166609
+ -2, /* (332) frame_exclude ::= NO OTHERS */
166610
+ -2, /* (333) frame_exclude ::= CURRENT ROW */
166611
+ -1, /* (334) frame_exclude ::= GROUP|TIES */
166612
+ -2, /* (335) window_clause ::= WINDOW windowdefn_list */
166613
+ -2, /* (336) filter_over ::= filter_clause over_clause */
166614
+ -1, /* (337) filter_over ::= over_clause */
166615
+ -1, /* (338) filter_over ::= filter_clause */
166616
+ -4, /* (339) over_clause ::= OVER LP window RP */
166617
+ -2, /* (340) over_clause ::= OVER nm */
166618
+ -5, /* (341) filter_clause ::= FILTER LP WHERE expr RP */
166619
+ -1, /* (342) input ::= cmdlist */
166620
+ -2, /* (343) cmdlist ::= cmdlist ecmd */
166621
+ -1, /* (344) cmdlist ::= ecmd */
166622
+ -1, /* (345) ecmd ::= SEMI */
166623
+ -2, /* (346) ecmd ::= cmdx SEMI */
166624
+ -3, /* (347) ecmd ::= explain cmdx SEMI */
166625
+ 0, /* (348) trans_opt ::= */
166626
+ -1, /* (349) trans_opt ::= TRANSACTION */
166627
+ -2, /* (350) trans_opt ::= TRANSACTION nm */
166628
+ -1, /* (351) savepoint_opt ::= SAVEPOINT */
166629
+ 0, /* (352) savepoint_opt ::= */
166630
+ -2, /* (353) cmd ::= create_table create_table_args */
166631
+ -1, /* (354) table_option_set ::= table_option */
166632
+ -4, /* (355) columnlist ::= columnlist COMMA columnname carglist */
166633
+ -2, /* (356) columnlist ::= columnname carglist */
166634
+ -1, /* (357) nm ::= ID|INDEXED */
166635
+ -1, /* (358) nm ::= STRING */
166636
+ -1, /* (359) nm ::= JOIN_KW */
166637
+ -1, /* (360) typetoken ::= typename */
166638
+ -1, /* (361) typename ::= ID|STRING */
166639
+ -1, /* (362) signed ::= plus_num */
166640
+ -1, /* (363) signed ::= minus_num */
166641
+ -2, /* (364) carglist ::= carglist ccons */
166642
+ 0, /* (365) carglist ::= */
166643
+ -2, /* (366) ccons ::= NULL onconf */
166644
+ -4, /* (367) ccons ::= GENERATED ALWAYS AS generated */
166645
+ -2, /* (368) ccons ::= AS generated */
166646
+ -2, /* (369) conslist_opt ::= COMMA conslist */
166647
+ -3, /* (370) conslist ::= conslist tconscomma tcons */
166648
+ -1, /* (371) conslist ::= tcons */
166649
+ 0, /* (372) tconscomma ::= */
166650
+ -1, /* (373) defer_subclause_opt ::= defer_subclause */
166651
+ -1, /* (374) resolvetype ::= raisetype */
166652
+ -1, /* (375) selectnowith ::= oneselect */
166653
+ -1, /* (376) oneselect ::= values */
166654
+ -2, /* (377) sclp ::= selcollist COMMA */
166655
+ -1, /* (378) as ::= ID|STRING */
166656
+ -1, /* (379) indexed_opt ::= indexed_by */
166657
+ 0, /* (380) returning ::= */
166658
+ -1, /* (381) expr ::= term */
166659
+ -1, /* (382) likeop ::= LIKE_KW|MATCH */
166660
+ -1, /* (383) exprlist ::= nexprlist */
166661
+ -1, /* (384) nmnum ::= plus_num */
166662
+ -1, /* (385) nmnum ::= nm */
166663
+ -1, /* (386) nmnum ::= ON */
166664
+ -1, /* (387) nmnum ::= DELETE */
166665
+ -1, /* (388) nmnum ::= DEFAULT */
166666
+ -1, /* (389) plus_num ::= INTEGER|FLOAT */
166667
+ 0, /* (390) foreach_clause ::= */
166668
+ -3, /* (391) foreach_clause ::= FOR EACH ROW */
166669
+ -1, /* (392) trnm ::= nm */
166670
+ 0, /* (393) tridxby ::= */
166671
+ -1, /* (394) database_kw_opt ::= DATABASE */
166672
+ 0, /* (395) database_kw_opt ::= */
166673
+ 0, /* (396) kwcolumn_opt ::= */
166674
+ -1, /* (397) kwcolumn_opt ::= COLUMNKW */
166675
+ -1, /* (398) vtabarglist ::= vtabarg */
166676
+ -3, /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */
166677
+ -2, /* (400) vtabarg ::= vtabarg vtabargtoken */
166678
+ 0, /* (401) anylist ::= */
166679
+ -4, /* (402) anylist ::= anylist LP anylist RP */
166680
+ -2, /* (403) anylist ::= anylist ANY */
166681
+ 0, /* (404) with ::= */
166686166682
};
166687166683
166688166684
static void yy_accept(yyParser*); /* Forward Declaration */
166689166685
166690166686
/*
@@ -166740,11 +166736,11 @@
166740166736
{yymsp[1].minor.yy394 = TK_DEFERRED;}
166741166737
break;
166742166738
case 5: /* transtype ::= DEFERRED */
166743166739
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
166744166740
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
166745
- case 321: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==321);
166741
+ case 323: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==323);
166746166742
{yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/}
166747166743
break;
166748166744
case 8: /* cmd ::= COMMIT|END trans_opt */
166749166745
case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
166750166746
{sqlite3EndTransaction(pParse,yymsp[-1].major);}
@@ -166777,11 +166773,11 @@
166777166773
case 47: /* autoinc ::= */ yytestcase(yyruleno==47);
166778166774
case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
166779166775
case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72);
166780166776
case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
166781166777
case 98: /* distinct ::= */ yytestcase(yyruleno==98);
166782
- case 242: /* collate ::= */ yytestcase(yyruleno==242);
166778
+ case 244: /* collate ::= */ yytestcase(yyruleno==244);
166783166779
{yymsp[1].minor.yy394 = 0;}
166784166780
break;
166785166781
case 16: /* ifnotexists ::= IF NOT EXISTS */
166786166782
{yymsp[-2].minor.yy394 = 1;}
166787166783
break;
@@ -166961,13 +166957,13 @@
166961166957
case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
166962166958
{yymsp[-1].minor.yy394 = yymsp[0].minor.yy394;}
166963166959
break;
166964166960
case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
166965166961
case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
166966
- case 214: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==214);
166967
- case 217: /* in_op ::= NOT IN */ yytestcase(yyruleno==217);
166968
- case 243: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==243);
166962
+ case 216: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==216);
166963
+ case 219: /* in_op ::= NOT IN */ yytestcase(yyruleno==219);
166964
+ case 245: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==245);
166969166965
{yymsp[-1].minor.yy394 = 1;}
166970166966
break;
166971166967
case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
166972166968
{yymsp[-1].minor.yy394 = 0;}
166973166969
break;
@@ -167113,13 +167109,13 @@
167113167109
{yymsp[0].minor.yy394 = SF_All;}
167114167110
break;
167115167111
case 99: /* sclp ::= */
167116167112
case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132);
167117167113
case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142);
167118
- case 230: /* exprlist ::= */ yytestcase(yyruleno==230);
167119
- case 233: /* paren_exprlist ::= */ yytestcase(yyruleno==233);
167120
- case 238: /* eidlist_opt ::= */ yytestcase(yyruleno==238);
167114
+ case 232: /* exprlist ::= */ yytestcase(yyruleno==232);
167115
+ case 235: /* paren_exprlist ::= */ yytestcase(yyruleno==235);
167116
+ case 240: /* eidlist_opt ::= */ yytestcase(yyruleno==240);
167121167117
{yymsp[1].minor.yy322 = 0;}
167122167118
break;
167123167119
case 100: /* selcollist ::= sclp scanpt expr scanpt as */
167124167120
{
167125167121
yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
@@ -167141,12 +167137,12 @@
167141167137
yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot);
167142167138
}
167143167139
break;
167144167140
case 103: /* as ::= AS nm */
167145167141
case 115: /* dbnm ::= DOT nm */ yytestcase(yyruleno==115);
167146
- case 254: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
167147
- case 255: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==255);
167142
+ case 256: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==256);
167143
+ case 257: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==257);
167148167144
{yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
167149167145
break;
167150167146
case 105: /* from ::= */
167151167147
case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108);
167152167148
{yymsp[1].minor.yy131 = 0;}
@@ -167314,20 +167310,20 @@
167314167310
break;
167315167311
case 144: /* having_opt ::= */
167316167312
case 146: /* limit_opt ::= */ yytestcase(yyruleno==146);
167317167313
case 151: /* where_opt ::= */ yytestcase(yyruleno==151);
167318167314
case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153);
167319
- case 227: /* case_else ::= */ yytestcase(yyruleno==227);
167320
- case 229: /* case_operand ::= */ yytestcase(yyruleno==229);
167321
- case 248: /* vinto ::= */ yytestcase(yyruleno==248);
167315
+ case 229: /* case_else ::= */ yytestcase(yyruleno==229);
167316
+ case 231: /* case_operand ::= */ yytestcase(yyruleno==231);
167317
+ case 250: /* vinto ::= */ yytestcase(yyruleno==250);
167322167318
{yymsp[1].minor.yy528 = 0;}
167323167319
break;
167324167320
case 145: /* having_opt ::= HAVING expr */
167325167321
case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
167326167322
case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
167327
- case 226: /* case_else ::= ELSE expr */ yytestcase(yyruleno==226);
167328
- case 247: /* vinto ::= INTO expr */ yytestcase(yyruleno==247);
167323
+ case 228: /* case_else ::= ELSE expr */ yytestcase(yyruleno==228);
167324
+ case 249: /* vinto ::= INTO expr */ yytestcase(yyruleno==249);
167329167325
{yymsp[-1].minor.yy528 = yymsp[0].minor.yy528;}
167330167326
break;
167331167327
case 147: /* limit_opt ::= LIMIT expr */
167332167328
{yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,0);}
167333167329
break;
@@ -167597,33 +167593,45 @@
167597167593
{
167598167594
yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy528,yymsp[0].minor.yy528);
167599167595
binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-3].minor.yy528, TK_NOTNULL);
167600167596
}
167601167597
break;
167602
- case 209: /* expr ::= NOT expr */
167603
- case 210: /* expr ::= BITNOT expr */ yytestcase(yyruleno==210);
167598
+ case 209: /* expr ::= expr IS NOT DISTINCT FROM expr */
167599
+{
167600
+ yymsp[-5].minor.yy528 = sqlite3PExpr(pParse,TK_IS,yymsp[-5].minor.yy528,yymsp[0].minor.yy528);
167601
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-5].minor.yy528, TK_ISNULL);
167602
+}
167603
+ break;
167604
+ case 210: /* expr ::= expr IS DISTINCT FROM expr */
167605
+{
167606
+ yymsp[-4].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-4].minor.yy528,yymsp[0].minor.yy528);
167607
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-4].minor.yy528, TK_NOTNULL);
167608
+}
167609
+ break;
167610
+ case 211: /* expr ::= NOT expr */
167611
+ case 212: /* expr ::= BITNOT expr */ yytestcase(yyruleno==212);
167604167612
{yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy528, 0);/*A-overwrites-B*/}
167605167613
break;
167606
- case 211: /* expr ::= PLUS|MINUS expr */
167614
+ case 213: /* expr ::= PLUS|MINUS expr */
167607167615
{
167608167616
yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy528, 0);
167609167617
/*A-overwrites-B*/
167610167618
}
167611167619
break;
167612
- case 212: /* expr ::= expr PTR expr */
167620
+ case 214: /* expr ::= expr PTR expr */
167613167621
{
167614167622
ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy528);
167615167623
pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy528);
167616167624
yylhsminor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
167617167625
}
167618167626
yymsp[-2].minor.yy528 = yylhsminor.yy528;
167619167627
break;
167620
- case 213: /* between_op ::= BETWEEN */
167621
- case 216: /* in_op ::= IN */ yytestcase(yyruleno==216);
167628
+ case 215: /* between_op ::= BETWEEN */
167629
+ case 218: /* in_op ::= IN */ yytestcase(yyruleno==218);
167622167630
{yymsp[0].minor.yy394 = 0;}
167623167631
break;
167624
- case 215: /* expr ::= expr between_op expr AND expr */
167632
+ case 217: /* expr ::= expr between_op expr AND expr */
167625167633
{
167626167634
ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
167627167635
pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528);
167628167636
yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy528, 0);
167629167637
if( yymsp[-4].minor.yy528 ){
@@ -167632,11 +167640,11 @@
167632167640
sqlite3ExprListDelete(pParse->db, pList);
167633167641
}
167634167642
if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167635167643
}
167636167644
break;
167637
- case 218: /* expr ::= expr in_op LP exprlist RP */
167645
+ case 220: /* expr ::= expr in_op LP exprlist RP */
167638167646
{
167639167647
if( yymsp[-1].minor.yy322==0 ){
167640167648
/* Expressions of the form
167641167649
**
167642167650
** expr1 IN ()
@@ -167672,41 +167680,41 @@
167672167680
}
167673167681
if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167674167682
}
167675167683
}
167676167684
break;
167677
- case 219: /* expr ::= LP select RP */
167685
+ case 221: /* expr ::= LP select RP */
167678167686
{
167679167687
yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
167680167688
sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy528, yymsp[-1].minor.yy47);
167681167689
}
167682167690
break;
167683
- case 220: /* expr ::= expr in_op LP select RP */
167691
+ case 222: /* expr ::= expr in_op LP select RP */
167684167692
{
167685167693
yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
167686167694
sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, yymsp[-1].minor.yy47);
167687167695
if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167688167696
}
167689167697
break;
167690
- case 221: /* expr ::= expr in_op nm dbnm paren_exprlist */
167698
+ case 223: /* expr ::= expr in_op nm dbnm paren_exprlist */
167691167699
{
167692167700
SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
167693167701
Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
167694167702
if( yymsp[0].minor.yy322 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy322);
167695167703
yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
167696167704
sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelect);
167697167705
if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167698167706
}
167699167707
break;
167700
- case 222: /* expr ::= EXISTS LP select RP */
167708
+ case 224: /* expr ::= EXISTS LP select RP */
167701167709
{
167702167710
Expr *p;
167703167711
p = yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
167704167712
sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy47);
167705167713
}
167706167714
break;
167707
- case 223: /* expr ::= CASE case_operand case_exprlist case_else END */
167715
+ case 225: /* expr ::= CASE case_operand case_exprlist case_else END */
167708167716
{
167709167717
yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy528, 0);
167710167718
if( yymsp[-4].minor.yy528 ){
167711167719
yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy528 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528) : yymsp[-2].minor.yy322;
167712167720
sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528);
@@ -167714,406 +167722,406 @@
167714167722
sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy322);
167715167723
sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
167716167724
}
167717167725
}
167718167726
break;
167719
- case 224: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
167727
+ case 226: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
167720167728
{
167721167729
yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
167722167730
yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[0].minor.yy528);
167723167731
}
167724167732
break;
167725
- case 225: /* case_exprlist ::= WHEN expr THEN expr */
167733
+ case 227: /* case_exprlist ::= WHEN expr THEN expr */
167726167734
{
167727167735
yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
167728167736
yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322, yymsp[0].minor.yy528);
167729167737
}
167730167738
break;
167731
- case 228: /* case_operand ::= expr */
167739
+ case 230: /* case_operand ::= expr */
167732167740
{yymsp[0].minor.yy528 = yymsp[0].minor.yy528; /*A-overwrites-X*/}
167733167741
break;
167734
- case 231: /* nexprlist ::= nexprlist COMMA expr */
167742
+ case 233: /* nexprlist ::= nexprlist COMMA expr */
167735167743
{yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[0].minor.yy528);}
167736167744
break;
167737
- case 232: /* nexprlist ::= expr */
167745
+ case 234: /* nexprlist ::= expr */
167738167746
{yymsp[0].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy528); /*A-overwrites-Y*/}
167739167747
break;
167740
- case 234: /* paren_exprlist ::= LP exprlist RP */
167741
- case 239: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==239);
167748
+ case 236: /* paren_exprlist ::= LP exprlist RP */
167749
+ case 241: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==241);
167742167750
{yymsp[-2].minor.yy322 = yymsp[-1].minor.yy322;}
167743167751
break;
167744
- case 235: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
167752
+ case 237: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
167745167753
{
167746167754
sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
167747167755
sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy322, yymsp[-10].minor.yy394,
167748167756
&yymsp[-11].minor.yy0, yymsp[0].minor.yy528, SQLITE_SO_ASC, yymsp[-8].minor.yy394, SQLITE_IDXTYPE_APPDEF);
167749167757
if( IN_RENAME_OBJECT && pParse->pNewIndex ){
167750167758
sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
167751167759
}
167752167760
}
167753167761
break;
167754
- case 236: /* uniqueflag ::= UNIQUE */
167755
- case 278: /* raisetype ::= ABORT */ yytestcase(yyruleno==278);
167762
+ case 238: /* uniqueflag ::= UNIQUE */
167763
+ case 280: /* raisetype ::= ABORT */ yytestcase(yyruleno==280);
167756167764
{yymsp[0].minor.yy394 = OE_Abort;}
167757167765
break;
167758
- case 237: /* uniqueflag ::= */
167766
+ case 239: /* uniqueflag ::= */
167759167767
{yymsp[1].minor.yy394 = OE_None;}
167760167768
break;
167761
- case 240: /* eidlist ::= eidlist COMMA nm collate sortorder */
167769
+ case 242: /* eidlist ::= eidlist COMMA nm collate sortorder */
167762167770
{
167763167771
yymsp[-4].minor.yy322 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394);
167764167772
}
167765167773
break;
167766
- case 241: /* eidlist ::= nm collate sortorder */
167774
+ case 243: /* eidlist ::= nm collate sortorder */
167767167775
{
167768167776
yymsp[-2].minor.yy322 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394); /*A-overwrites-Y*/
167769167777
}
167770167778
break;
167771
- case 244: /* cmd ::= DROP INDEX ifexists fullname */
167779
+ case 246: /* cmd ::= DROP INDEX ifexists fullname */
167772167780
{sqlite3DropIndex(pParse, yymsp[0].minor.yy131, yymsp[-1].minor.yy394);}
167773167781
break;
167774
- case 245: /* cmd ::= VACUUM vinto */
167782
+ case 247: /* cmd ::= VACUUM vinto */
167775167783
{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy528);}
167776167784
break;
167777
- case 246: /* cmd ::= VACUUM nm vinto */
167785
+ case 248: /* cmd ::= VACUUM nm vinto */
167778167786
{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy528);}
167779167787
break;
167780
- case 249: /* cmd ::= PRAGMA nm dbnm */
167788
+ case 251: /* cmd ::= PRAGMA nm dbnm */
167781167789
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
167782167790
break;
167783
- case 250: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
167791
+ case 252: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
167784167792
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
167785167793
break;
167786
- case 251: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
167794
+ case 253: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
167787167795
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
167788167796
break;
167789
- case 252: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
167797
+ case 254: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
167790167798
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
167791167799
break;
167792
- case 253: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
167800
+ case 255: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
167793167801
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
167794167802
break;
167795
- case 256: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
167803
+ case 258: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
167796167804
{
167797167805
Token all;
167798167806
all.z = yymsp[-3].minor.yy0.z;
167799167807
all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
167800167808
sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy33, &all);
167801167809
}
167802167810
break;
167803
- case 257: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
167811
+ case 259: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
167804167812
{
167805167813
sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy394, yymsp[-4].minor.yy180.a, yymsp[-4].minor.yy180.b, yymsp[-2].minor.yy131, yymsp[0].minor.yy528, yymsp[-10].minor.yy394, yymsp[-8].minor.yy394);
167806167814
yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
167807167815
}
167808167816
break;
167809
- case 258: /* trigger_time ::= BEFORE|AFTER */
167817
+ case 260: /* trigger_time ::= BEFORE|AFTER */
167810167818
{ yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/ }
167811167819
break;
167812
- case 259: /* trigger_time ::= INSTEAD OF */
167820
+ case 261: /* trigger_time ::= INSTEAD OF */
167813167821
{ yymsp[-1].minor.yy394 = TK_INSTEAD;}
167814167822
break;
167815
- case 260: /* trigger_time ::= */
167823
+ case 262: /* trigger_time ::= */
167816167824
{ yymsp[1].minor.yy394 = TK_BEFORE; }
167817167825
break;
167818
- case 261: /* trigger_event ::= DELETE|INSERT */
167819
- case 262: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==262);
167826
+ case 263: /* trigger_event ::= DELETE|INSERT */
167827
+ case 264: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==264);
167820167828
{yymsp[0].minor.yy180.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy180.b = 0;}
167821167829
break;
167822
- case 263: /* trigger_event ::= UPDATE OF idlist */
167830
+ case 265: /* trigger_event ::= UPDATE OF idlist */
167823167831
{yymsp[-2].minor.yy180.a = TK_UPDATE; yymsp[-2].minor.yy180.b = yymsp[0].minor.yy254;}
167824167832
break;
167825
- case 264: /* when_clause ::= */
167826
- case 283: /* key_opt ::= */ yytestcase(yyruleno==283);
167833
+ case 266: /* when_clause ::= */
167834
+ case 285: /* key_opt ::= */ yytestcase(yyruleno==285);
167827167835
{ yymsp[1].minor.yy528 = 0; }
167828167836
break;
167829
- case 265: /* when_clause ::= WHEN expr */
167830
- case 284: /* key_opt ::= KEY expr */ yytestcase(yyruleno==284);
167837
+ case 267: /* when_clause ::= WHEN expr */
167838
+ case 286: /* key_opt ::= KEY expr */ yytestcase(yyruleno==286);
167831167839
{ yymsp[-1].minor.yy528 = yymsp[0].minor.yy528; }
167832167840
break;
167833
- case 266: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
167841
+ case 268: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
167834167842
{
167835167843
assert( yymsp[-2].minor.yy33!=0 );
167836167844
yymsp[-2].minor.yy33->pLast->pNext = yymsp[-1].minor.yy33;
167837167845
yymsp[-2].minor.yy33->pLast = yymsp[-1].minor.yy33;
167838167846
}
167839167847
break;
167840
- case 267: /* trigger_cmd_list ::= trigger_cmd SEMI */
167848
+ case 269: /* trigger_cmd_list ::= trigger_cmd SEMI */
167841167849
{
167842167850
assert( yymsp[-1].minor.yy33!=0 );
167843167851
yymsp[-1].minor.yy33->pLast = yymsp[-1].minor.yy33;
167844167852
}
167845167853
break;
167846
- case 268: /* trnm ::= nm DOT nm */
167854
+ case 270: /* trnm ::= nm DOT nm */
167847167855
{
167848167856
yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
167849167857
sqlite3ErrorMsg(pParse,
167850167858
"qualified table names are not allowed on INSERT, UPDATE, and DELETE "
167851167859
"statements within triggers");
167852167860
}
167853167861
break;
167854
- case 269: /* tridxby ::= INDEXED BY nm */
167862
+ case 271: /* tridxby ::= INDEXED BY nm */
167855167863
{
167856167864
sqlite3ErrorMsg(pParse,
167857167865
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
167858167866
"within triggers");
167859167867
}
167860167868
break;
167861
- case 270: /* tridxby ::= NOT INDEXED */
167869
+ case 272: /* tridxby ::= NOT INDEXED */
167862167870
{
167863167871
sqlite3ErrorMsg(pParse,
167864167872
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
167865167873
"within triggers");
167866167874
}
167867167875
break;
167868
- case 271: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
167876
+ case 273: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
167869167877
{yylhsminor.yy33 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy131, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528, yymsp[-7].minor.yy394, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy522);}
167870167878
yymsp[-8].minor.yy33 = yylhsminor.yy33;
167871167879
break;
167872
- case 272: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
167880
+ case 274: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
167873167881
{
167874167882
yylhsminor.yy33 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy254,yymsp[-2].minor.yy47,yymsp[-6].minor.yy394,yymsp[-1].minor.yy444,yymsp[-7].minor.yy522,yymsp[0].minor.yy522);/*yylhsminor.yy33-overwrites-yymsp[-6].minor.yy394*/
167875167883
}
167876167884
yymsp[-7].minor.yy33 = yylhsminor.yy33;
167877167885
break;
167878
- case 273: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
167886
+ case 275: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
167879167887
{yylhsminor.yy33 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy528, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy522);}
167880167888
yymsp[-5].minor.yy33 = yylhsminor.yy33;
167881167889
break;
167882
- case 274: /* trigger_cmd ::= scanpt select scanpt */
167890
+ case 276: /* trigger_cmd ::= scanpt select scanpt */
167883167891
{yylhsminor.yy33 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy47, yymsp[-2].minor.yy522, yymsp[0].minor.yy522); /*yylhsminor.yy33-overwrites-yymsp[-1].minor.yy47*/}
167884167892
yymsp[-2].minor.yy33 = yylhsminor.yy33;
167885167893
break;
167886
- case 275: /* expr ::= RAISE LP IGNORE RP */
167894
+ case 277: /* expr ::= RAISE LP IGNORE RP */
167887167895
{
167888167896
yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
167889167897
if( yymsp[-3].minor.yy528 ){
167890167898
yymsp[-3].minor.yy528->affExpr = OE_Ignore;
167891167899
}
167892167900
}
167893167901
break;
167894
- case 276: /* expr ::= RAISE LP raisetype COMMA nm RP */
167902
+ case 278: /* expr ::= RAISE LP raisetype COMMA nm RP */
167895167903
{
167896167904
yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
167897167905
if( yymsp[-5].minor.yy528 ) {
167898167906
yymsp[-5].minor.yy528->affExpr = (char)yymsp[-3].minor.yy394;
167899167907
}
167900167908
}
167901167909
break;
167902
- case 277: /* raisetype ::= ROLLBACK */
167910
+ case 279: /* raisetype ::= ROLLBACK */
167903167911
{yymsp[0].minor.yy394 = OE_Rollback;}
167904167912
break;
167905
- case 279: /* raisetype ::= FAIL */
167913
+ case 281: /* raisetype ::= FAIL */
167906167914
{yymsp[0].minor.yy394 = OE_Fail;}
167907167915
break;
167908
- case 280: /* cmd ::= DROP TRIGGER ifexists fullname */
167916
+ case 282: /* cmd ::= DROP TRIGGER ifexists fullname */
167909167917
{
167910167918
sqlite3DropTrigger(pParse,yymsp[0].minor.yy131,yymsp[-1].minor.yy394);
167911167919
}
167912167920
break;
167913
- case 281: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
167921
+ case 283: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
167914167922
{
167915167923
sqlite3Attach(pParse, yymsp[-3].minor.yy528, yymsp[-1].minor.yy528, yymsp[0].minor.yy528);
167916167924
}
167917167925
break;
167918
- case 282: /* cmd ::= DETACH database_kw_opt expr */
167926
+ case 284: /* cmd ::= DETACH database_kw_opt expr */
167919167927
{
167920167928
sqlite3Detach(pParse, yymsp[0].minor.yy528);
167921167929
}
167922167930
break;
167923
- case 285: /* cmd ::= REINDEX */
167931
+ case 287: /* cmd ::= REINDEX */
167924167932
{sqlite3Reindex(pParse, 0, 0);}
167925167933
break;
167926
- case 286: /* cmd ::= REINDEX nm dbnm */
167934
+ case 288: /* cmd ::= REINDEX nm dbnm */
167927167935
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
167928167936
break;
167929
- case 287: /* cmd ::= ANALYZE */
167937
+ case 289: /* cmd ::= ANALYZE */
167930167938
{sqlite3Analyze(pParse, 0, 0);}
167931167939
break;
167932
- case 288: /* cmd ::= ANALYZE nm dbnm */
167940
+ case 290: /* cmd ::= ANALYZE nm dbnm */
167933167941
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
167934167942
break;
167935
- case 289: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
167943
+ case 291: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
167936167944
{
167937167945
sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy131,&yymsp[0].minor.yy0);
167938167946
}
167939167947
break;
167940
- case 290: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
167948
+ case 292: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
167941167949
{
167942167950
yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
167943167951
sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
167944167952
}
167945167953
break;
167946
- case 291: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
167954
+ case 293: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
167947167955
{
167948167956
sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy131, &yymsp[0].minor.yy0);
167949167957
}
167950167958
break;
167951
- case 292: /* add_column_fullname ::= fullname */
167959
+ case 294: /* add_column_fullname ::= fullname */
167952167960
{
167953167961
disableLookaside(pParse);
167954167962
sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy131);
167955167963
}
167956167964
break;
167957
- case 293: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
167965
+ case 295: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
167958167966
{
167959167967
sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy131, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
167960167968
}
167961167969
break;
167962
- case 294: /* cmd ::= create_vtab */
167970
+ case 296: /* cmd ::= create_vtab */
167963167971
{sqlite3VtabFinishParse(pParse,0);}
167964167972
break;
167965
- case 295: /* cmd ::= create_vtab LP vtabarglist RP */
167973
+ case 297: /* cmd ::= create_vtab LP vtabarglist RP */
167966167974
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
167967167975
break;
167968
- case 296: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
167976
+ case 298: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
167969167977
{
167970167978
sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy394);
167971167979
}
167972167980
break;
167973
- case 297: /* vtabarg ::= */
167981
+ case 299: /* vtabarg ::= */
167974167982
{sqlite3VtabArgInit(pParse);}
167975167983
break;
167976
- case 298: /* vtabargtoken ::= ANY */
167977
- case 299: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==299);
167978
- case 300: /* lp ::= LP */ yytestcase(yyruleno==300);
167984
+ case 300: /* vtabargtoken ::= ANY */
167985
+ case 301: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==301);
167986
+ case 302: /* lp ::= LP */ yytestcase(yyruleno==302);
167979167987
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
167980167988
break;
167981
- case 301: /* with ::= WITH wqlist */
167982
- case 302: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==302);
167989
+ case 303: /* with ::= WITH wqlist */
167990
+ case 304: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==304);
167983167991
{ sqlite3WithPush(pParse, yymsp[0].minor.yy521, 1); }
167984167992
break;
167985
- case 303: /* wqas ::= AS */
167993
+ case 305: /* wqas ::= AS */
167986167994
{yymsp[0].minor.yy516 = M10d_Any;}
167987167995
break;
167988
- case 304: /* wqas ::= AS MATERIALIZED */
167996
+ case 306: /* wqas ::= AS MATERIALIZED */
167989167997
{yymsp[-1].minor.yy516 = M10d_Yes;}
167990167998
break;
167991
- case 305: /* wqas ::= AS NOT MATERIALIZED */
167999
+ case 307: /* wqas ::= AS NOT MATERIALIZED */
167992168000
{yymsp[-2].minor.yy516 = M10d_No;}
167993168001
break;
167994
- case 306: /* wqitem ::= nm eidlist_opt wqas LP select RP */
168002
+ case 308: /* wqitem ::= nm eidlist_opt wqas LP select RP */
167995168003
{
167996168004
yymsp[-5].minor.yy385 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy47, yymsp[-3].minor.yy516); /*A-overwrites-X*/
167997168005
}
167998168006
break;
167999
- case 307: /* wqlist ::= wqitem */
168007
+ case 309: /* wqlist ::= wqitem */
168000168008
{
168001168009
yymsp[0].minor.yy521 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy385); /*A-overwrites-X*/
168002168010
}
168003168011
break;
168004
- case 308: /* wqlist ::= wqlist COMMA wqitem */
168012
+ case 310: /* wqlist ::= wqlist COMMA wqitem */
168005168013
{
168006168014
yymsp[-2].minor.yy521 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy521, yymsp[0].minor.yy385);
168007168015
}
168008168016
break;
168009
- case 309: /* windowdefn_list ::= windowdefn */
168017
+ case 311: /* windowdefn_list ::= windowdefn */
168010168018
{ yylhsminor.yy41 = yymsp[0].minor.yy41; }
168011168019
yymsp[0].minor.yy41 = yylhsminor.yy41;
168012168020
break;
168013
- case 310: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
168021
+ case 312: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
168014168022
{
168015168023
assert( yymsp[0].minor.yy41!=0 );
168016168024
sqlite3WindowChain(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy41);
168017168025
yymsp[0].minor.yy41->pNextWin = yymsp[-2].minor.yy41;
168018168026
yylhsminor.yy41 = yymsp[0].minor.yy41;
168019168027
}
168020168028
yymsp[-2].minor.yy41 = yylhsminor.yy41;
168021168029
break;
168022
- case 311: /* windowdefn ::= nm AS LP window RP */
168030
+ case 313: /* windowdefn ::= nm AS LP window RP */
168023168031
{
168024168032
if( ALWAYS(yymsp[-1].minor.yy41) ){
168025168033
yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
168026168034
}
168027168035
yylhsminor.yy41 = yymsp[-1].minor.yy41;
168028168036
}
168029168037
yymsp[-4].minor.yy41 = yylhsminor.yy41;
168030168038
break;
168031
- case 312: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
168039
+ case 314: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
168032168040
{
168033168041
yymsp[-4].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, 0);
168034168042
}
168035168043
break;
168036
- case 313: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
168044
+ case 315: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
168037168045
{
168038168046
yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, &yymsp[-5].minor.yy0);
168039168047
}
168040168048
yymsp[-5].minor.yy41 = yylhsminor.yy41;
168041168049
break;
168042
- case 314: /* window ::= ORDER BY sortlist frame_opt */
168050
+ case 316: /* window ::= ORDER BY sortlist frame_opt */
168043168051
{
168044168052
yymsp[-3].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, 0);
168045168053
}
168046168054
break;
168047
- case 315: /* window ::= nm ORDER BY sortlist frame_opt */
168055
+ case 317: /* window ::= nm ORDER BY sortlist frame_opt */
168048168056
{
168049168057
yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0);
168050168058
}
168051168059
yymsp[-4].minor.yy41 = yylhsminor.yy41;
168052168060
break;
168053
- case 316: /* window ::= frame_opt */
168054
- case 335: /* filter_over ::= over_clause */ yytestcase(yyruleno==335);
168061
+ case 318: /* window ::= frame_opt */
168062
+ case 337: /* filter_over ::= over_clause */ yytestcase(yyruleno==337);
168055168063
{
168056168064
yylhsminor.yy41 = yymsp[0].minor.yy41;
168057168065
}
168058168066
yymsp[0].minor.yy41 = yylhsminor.yy41;
168059168067
break;
168060
- case 317: /* window ::= nm frame_opt */
168068
+ case 319: /* window ::= nm frame_opt */
168061168069
{
168062168070
yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, 0, &yymsp[-1].minor.yy0);
168063168071
}
168064168072
yymsp[-1].minor.yy41 = yylhsminor.yy41;
168065168073
break;
168066
- case 318: /* frame_opt ::= */
168074
+ case 320: /* frame_opt ::= */
168067168075
{
168068168076
yymsp[1].minor.yy41 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
168069168077
}
168070168078
break;
168071
- case 319: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
168079
+ case 321: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
168072168080
{
168073168081
yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy394, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy516);
168074168082
}
168075168083
yymsp[-2].minor.yy41 = yylhsminor.yy41;
168076168084
break;
168077
- case 320: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
168085
+ case 322: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
168078168086
{
168079168087
yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy394, yymsp[-3].minor.yy595.eType, yymsp[-3].minor.yy595.pExpr, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, yymsp[0].minor.yy516);
168080168088
}
168081168089
yymsp[-5].minor.yy41 = yylhsminor.yy41;
168082168090
break;
168083
- case 322: /* frame_bound_s ::= frame_bound */
168084
- case 324: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==324);
168091
+ case 324: /* frame_bound_s ::= frame_bound */
168092
+ case 326: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==326);
168085168093
{yylhsminor.yy595 = yymsp[0].minor.yy595;}
168086168094
yymsp[0].minor.yy595 = yylhsminor.yy595;
168087168095
break;
168088
- case 323: /* frame_bound_s ::= UNBOUNDED PRECEDING */
168089
- case 325: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==325);
168090
- case 327: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==327);
168096
+ case 325: /* frame_bound_s ::= UNBOUNDED PRECEDING */
168097
+ case 327: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==327);
168098
+ case 329: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==329);
168091168099
{yylhsminor.yy595.eType = yymsp[-1].major; yylhsminor.yy595.pExpr = 0;}
168092168100
yymsp[-1].minor.yy595 = yylhsminor.yy595;
168093168101
break;
168094
- case 326: /* frame_bound ::= expr PRECEDING|FOLLOWING */
168102
+ case 328: /* frame_bound ::= expr PRECEDING|FOLLOWING */
168095168103
{yylhsminor.yy595.eType = yymsp[0].major; yylhsminor.yy595.pExpr = yymsp[-1].minor.yy528;}
168096168104
yymsp[-1].minor.yy595 = yylhsminor.yy595;
168097168105
break;
168098
- case 328: /* frame_exclude_opt ::= */
168106
+ case 330: /* frame_exclude_opt ::= */
168099168107
{yymsp[1].minor.yy516 = 0;}
168100168108
break;
168101
- case 329: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
168109
+ case 331: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
168102168110
{yymsp[-1].minor.yy516 = yymsp[0].minor.yy516;}
168103168111
break;
168104
- case 330: /* frame_exclude ::= NO OTHERS */
168105
- case 331: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==331);
168112
+ case 332: /* frame_exclude ::= NO OTHERS */
168113
+ case 333: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==333);
168106168114
{yymsp[-1].minor.yy516 = yymsp[-1].major; /*A-overwrites-X*/}
168107168115
break;
168108
- case 332: /* frame_exclude ::= GROUP|TIES */
168116
+ case 334: /* frame_exclude ::= GROUP|TIES */
168109168117
{yymsp[0].minor.yy516 = yymsp[0].major; /*A-overwrites-X*/}
168110168118
break;
168111
- case 333: /* window_clause ::= WINDOW windowdefn_list */
168119
+ case 335: /* window_clause ::= WINDOW windowdefn_list */
168112168120
{ yymsp[-1].minor.yy41 = yymsp[0].minor.yy41; }
168113168121
break;
168114
- case 334: /* filter_over ::= filter_clause over_clause */
168122
+ case 336: /* filter_over ::= filter_clause over_clause */
168115168123
{
168116168124
if( yymsp[0].minor.yy41 ){
168117168125
yymsp[0].minor.yy41->pFilter = yymsp[-1].minor.yy528;
168118168126
}else{
168119168127
sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
@@ -168120,11 +168128,11 @@
168120168128
}
168121168129
yylhsminor.yy41 = yymsp[0].minor.yy41;
168122168130
}
168123168131
yymsp[-1].minor.yy41 = yylhsminor.yy41;
168124168132
break;
168125
- case 336: /* filter_over ::= filter_clause */
168133
+ case 338: /* filter_over ::= filter_clause */
168126168134
{
168127168135
yylhsminor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
168128168136
if( yylhsminor.yy41 ){
168129168137
yylhsminor.yy41->eFrmType = TK_FILTER;
168130168138
yylhsminor.yy41->pFilter = yymsp[0].minor.yy528;
@@ -168132,91 +168140,91 @@
168132168140
sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy528);
168133168141
}
168134168142
}
168135168143
yymsp[0].minor.yy41 = yylhsminor.yy41;
168136168144
break;
168137
- case 337: /* over_clause ::= OVER LP window RP */
168145
+ case 339: /* over_clause ::= OVER LP window RP */
168138168146
{
168139168147
yymsp[-3].minor.yy41 = yymsp[-1].minor.yy41;
168140168148
assert( yymsp[-3].minor.yy41!=0 );
168141168149
}
168142168150
break;
168143
- case 338: /* over_clause ::= OVER nm */
168151
+ case 340: /* over_clause ::= OVER nm */
168144168152
{
168145168153
yymsp[-1].minor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
168146168154
if( yymsp[-1].minor.yy41 ){
168147168155
yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
168148168156
}
168149168157
}
168150168158
break;
168151
- case 339: /* filter_clause ::= FILTER LP WHERE expr RP */
168159
+ case 341: /* filter_clause ::= FILTER LP WHERE expr RP */
168152168160
{ yymsp[-4].minor.yy528 = yymsp[-1].minor.yy528; }
168153168161
break;
168154168162
default:
168155
- /* (340) input ::= cmdlist */ yytestcase(yyruleno==340);
168156
- /* (341) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==341);
168157
- /* (342) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=342);
168158
- /* (343) ecmd ::= SEMI */ yytestcase(yyruleno==343);
168159
- /* (344) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==344);
168160
- /* (345) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=345);
168161
- /* (346) trans_opt ::= */ yytestcase(yyruleno==346);
168162
- /* (347) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==347);
168163
- /* (348) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==348);
168164
- /* (349) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==349);
168165
- /* (350) savepoint_opt ::= */ yytestcase(yyruleno==350);
168166
- /* (351) cmd ::= create_table create_table_args */ yytestcase(yyruleno==351);
168167
- /* (352) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=352);
168168
- /* (353) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==353);
168169
- /* (354) columnlist ::= columnname carglist */ yytestcase(yyruleno==354);
168170
- /* (355) nm ::= ID|INDEXED */ yytestcase(yyruleno==355);
168171
- /* (356) nm ::= STRING */ yytestcase(yyruleno==356);
168172
- /* (357) nm ::= JOIN_KW */ yytestcase(yyruleno==357);
168173
- /* (358) typetoken ::= typename */ yytestcase(yyruleno==358);
168174
- /* (359) typename ::= ID|STRING */ yytestcase(yyruleno==359);
168175
- /* (360) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
168176
- /* (361) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=361);
168177
- /* (362) carglist ::= carglist ccons */ yytestcase(yyruleno==362);
168178
- /* (363) carglist ::= */ yytestcase(yyruleno==363);
168179
- /* (364) ccons ::= NULL onconf */ yytestcase(yyruleno==364);
168180
- /* (365) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==365);
168181
- /* (366) ccons ::= AS generated */ yytestcase(yyruleno==366);
168182
- /* (367) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==367);
168183
- /* (368) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==368);
168184
- /* (369) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=369);
168185
- /* (370) tconscomma ::= */ yytestcase(yyruleno==370);
168186
- /* (371) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=371);
168187
- /* (372) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=372);
168188
- /* (373) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=373);
168189
- /* (374) oneselect ::= values */ yytestcase(yyruleno==374);
168190
- /* (375) sclp ::= selcollist COMMA */ yytestcase(yyruleno==375);
168191
- /* (376) as ::= ID|STRING */ yytestcase(yyruleno==376);
168192
- /* (377) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=377);
168193
- /* (378) returning ::= */ yytestcase(yyruleno==378);
168194
- /* (379) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=379);
168195
- /* (380) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==380);
168196
- /* (381) exprlist ::= nexprlist */ yytestcase(yyruleno==381);
168197
- /* (382) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=382);
168198
- /* (383) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=383);
168199
- /* (384) nmnum ::= ON */ yytestcase(yyruleno==384);
168200
- /* (385) nmnum ::= DELETE */ yytestcase(yyruleno==385);
168201
- /* (386) nmnum ::= DEFAULT */ yytestcase(yyruleno==386);
168202
- /* (387) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==387);
168203
- /* (388) foreach_clause ::= */ yytestcase(yyruleno==388);
168204
- /* (389) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==389);
168205
- /* (390) trnm ::= nm */ yytestcase(yyruleno==390);
168206
- /* (391) tridxby ::= */ yytestcase(yyruleno==391);
168207
- /* (392) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==392);
168208
- /* (393) database_kw_opt ::= */ yytestcase(yyruleno==393);
168209
- /* (394) kwcolumn_opt ::= */ yytestcase(yyruleno==394);
168210
- /* (395) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==395);
168211
- /* (396) vtabarglist ::= vtabarg */ yytestcase(yyruleno==396);
168212
- /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==397);
168213
- /* (398) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==398);
168214
- /* (399) anylist ::= */ yytestcase(yyruleno==399);
168215
- /* (400) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==400);
168216
- /* (401) anylist ::= anylist ANY */ yytestcase(yyruleno==401);
168217
- /* (402) with ::= */ yytestcase(yyruleno==402);
168163
+ /* (342) input ::= cmdlist */ yytestcase(yyruleno==342);
168164
+ /* (343) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==343);
168165
+ /* (344) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=344);
168166
+ /* (345) ecmd ::= SEMI */ yytestcase(yyruleno==345);
168167
+ /* (346) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==346);
168168
+ /* (347) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=347);
168169
+ /* (348) trans_opt ::= */ yytestcase(yyruleno==348);
168170
+ /* (349) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==349);
168171
+ /* (350) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==350);
168172
+ /* (351) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==351);
168173
+ /* (352) savepoint_opt ::= */ yytestcase(yyruleno==352);
168174
+ /* (353) cmd ::= create_table create_table_args */ yytestcase(yyruleno==353);
168175
+ /* (354) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=354);
168176
+ /* (355) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==355);
168177
+ /* (356) columnlist ::= columnname carglist */ yytestcase(yyruleno==356);
168178
+ /* (357) nm ::= ID|INDEXED */ yytestcase(yyruleno==357);
168179
+ /* (358) nm ::= STRING */ yytestcase(yyruleno==358);
168180
+ /* (359) nm ::= JOIN_KW */ yytestcase(yyruleno==359);
168181
+ /* (360) typetoken ::= typename */ yytestcase(yyruleno==360);
168182
+ /* (361) typename ::= ID|STRING */ yytestcase(yyruleno==361);
168183
+ /* (362) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=362);
168184
+ /* (363) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=363);
168185
+ /* (364) carglist ::= carglist ccons */ yytestcase(yyruleno==364);
168186
+ /* (365) carglist ::= */ yytestcase(yyruleno==365);
168187
+ /* (366) ccons ::= NULL onconf */ yytestcase(yyruleno==366);
168188
+ /* (367) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==367);
168189
+ /* (368) ccons ::= AS generated */ yytestcase(yyruleno==368);
168190
+ /* (369) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==369);
168191
+ /* (370) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==370);
168192
+ /* (371) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=371);
168193
+ /* (372) tconscomma ::= */ yytestcase(yyruleno==372);
168194
+ /* (373) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=373);
168195
+ /* (374) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=374);
168196
+ /* (375) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=375);
168197
+ /* (376) oneselect ::= values */ yytestcase(yyruleno==376);
168198
+ /* (377) sclp ::= selcollist COMMA */ yytestcase(yyruleno==377);
168199
+ /* (378) as ::= ID|STRING */ yytestcase(yyruleno==378);
168200
+ /* (379) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=379);
168201
+ /* (380) returning ::= */ yytestcase(yyruleno==380);
168202
+ /* (381) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=381);
168203
+ /* (382) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==382);
168204
+ /* (383) exprlist ::= nexprlist */ yytestcase(yyruleno==383);
168205
+ /* (384) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=384);
168206
+ /* (385) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=385);
168207
+ /* (386) nmnum ::= ON */ yytestcase(yyruleno==386);
168208
+ /* (387) nmnum ::= DELETE */ yytestcase(yyruleno==387);
168209
+ /* (388) nmnum ::= DEFAULT */ yytestcase(yyruleno==388);
168210
+ /* (389) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==389);
168211
+ /* (390) foreach_clause ::= */ yytestcase(yyruleno==390);
168212
+ /* (391) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==391);
168213
+ /* (392) trnm ::= nm */ yytestcase(yyruleno==392);
168214
+ /* (393) tridxby ::= */ yytestcase(yyruleno==393);
168215
+ /* (394) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==394);
168216
+ /* (395) database_kw_opt ::= */ yytestcase(yyruleno==395);
168217
+ /* (396) kwcolumn_opt ::= */ yytestcase(yyruleno==396);
168218
+ /* (397) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==397);
168219
+ /* (398) vtabarglist ::= vtabarg */ yytestcase(yyruleno==398);
168220
+ /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==399);
168221
+ /* (400) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==400);
168222
+ /* (401) anylist ::= */ yytestcase(yyruleno==401);
168223
+ /* (402) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==402);
168224
+ /* (403) anylist ::= anylist ANY */ yytestcase(yyruleno==403);
168225
+ /* (404) with ::= */ yytestcase(yyruleno==404);
168218168226
break;
168219168227
/********** End reduce actions ************************************************/
168220168228
};
168221168229
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
168222168230
yygoto = yyRuleInfoLhs[yyruleno];
@@ -236295,11 +236303,11 @@
236295236303
int nArg, /* Number of args */
236296236304
sqlite3_value **apUnused /* Function arguments */
236297236305
){
236298236306
assert( nArg==0 );
236299236307
UNUSED_PARAM2(nArg, apUnused);
236300
- sqlite3_result_text(pCtx, "fts5: 2022-05-10 00:24:01 c6c3115f3a008cf9b0d7c5c812f17e38c8a75a904032c5f05f0bea03a7340527", -1, SQLITE_TRANSIENT);
236308
+ sqlite3_result_text(pCtx, "fts5: 2022-05-14 19:05:13 2277f9ba7087dd993ac0f4007c523aa9cf74dba187f53af03d8c164886726fee", -1, SQLITE_TRANSIENT);
236301236309
}
236302236310
236303236311
/*
236304236312
** Return true if zName is the extension on one of the shadow tables used
236305236313
** by this module.
236306236314
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -452,11 +452,11 @@
452 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453 ** [sqlite_version()] and [sqlite_source_id()].
454 */
455 #define SQLITE_VERSION "3.39.0"
456 #define SQLITE_VERSION_NUMBER 3039000
457 #define SQLITE_SOURCE_ID "2022-05-10 00:24:01 c6c3115f3a008cf9b0d7c5c812f17e38c8a75a904032c5f05f0bea03a7340527"
458
459 /*
460 ** CAPI3REF: Run-Time Library Version Numbers
461 ** KEYWORDS: sqlite3_version sqlite3_sourceid
462 **
@@ -16286,10 +16286,17 @@
16286 */
16287 #ifndef SQLITE_MAX_PATHLEN
16288 # define SQLITE_MAX_PATHLEN FILENAME_MAX
16289 #endif
16290
 
 
 
 
 
 
 
16291 /*
16292 ** The default size of a disk sector
16293 */
16294 #ifndef SQLITE_DEFAULT_SECTOR_SIZE
16295 # define SQLITE_DEFAULT_SECTOR_SIZE 4096
@@ -18120,11 +18127,11 @@
18120 ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
18121 ** TK_VARIABLE: variable number (always >= 1).
18122 ** TK_SELECT_COLUMN: column of the result vector */
18123 i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
18124 union {
18125 int iJoin; /* If EP_FromJoin, the right table of the join */
18126 int iOfst; /* else: start of token from start of statement */
18127 } w;
18128 AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
18129 union {
18130 Table *pTab; /* TK_COLUMN: Table containing column. Can be NULL
@@ -18141,33 +18148,33 @@
18141 ** Value restrictions:
18142 **
18143 ** EP_Agg == NC_HasAgg == SF_HasAgg
18144 ** EP_Win == NC_HasWin
18145 */
18146 #define EP_FromJoin 0x000001 /* Originates in ON/USING clause of outer join */
18147 #define EP_Distinct 0x000002 /* Aggregate function with DISTINCT keyword */
18148 #define EP_HasFunc 0x000004 /* Contains one or more functions of any kind */
18149 #define EP_FixedCol 0x000008 /* TK_Column with a known fixed value */
18150 #define EP_Agg 0x000010 /* Contains one or more aggregate functions */
18151 #define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */
18152 #define EP_DblQuoted 0x000040 /* token.z was originally in "..." */
18153 #define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */
18154 #define EP_Collate 0x000100 /* Tree contains a TK_COLLATE operator */
18155 #define EP_Commuted 0x000200 /* Comparison operator has been commuted */
18156 #define EP_IntValue 0x000400 /* Integer value contained in u.iValue */
18157 #define EP_xIsSelect 0x000800 /* x.pSelect is valid (otherwise x.pList is) */
18158 #define EP_Skip 0x001000 /* Operator does not contribute to affinity */
18159 #define EP_Reduced 0x002000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
18160 #define EP_TokenOnly 0x004000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
18161 #define EP_Win 0x008000 /* Contains window functions */
18162 #define EP_MemToken 0x010000 /* Need to sqlite3DbFree() Expr.zToken */
18163 #define EP_IfNullRow 0x020000 /* The TK_IF_NULL_ROW opcode */
18164 #define EP_Unlikely 0x040000 /* unlikely() or likelihood() function */
18165 #define EP_ConstFunc 0x080000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */
18166 #define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
18167 #define EP_Subquery 0x200000 /* Tree contains a TK_SELECT operator */
18168 #define EP_InnerJoin 0x400000 /* Originates in ON/USING of an inner join */
18169 #define EP_Leaf 0x800000 /* Expr.pLeft, .pRight, .u.pSelect all NULL */
18170 #define EP_WinFunc 0x1000000 /* TK_FUNCTION with Expr.y.pWin set */
18171 #define EP_Subrtn 0x2000000 /* Uses Expr.y.sub. TK_IN, _SELECT, or _EXISTS */
18172 #define EP_Quoted 0x4000000 /* TK_ID was originally quoted */
18173 #define EP_Static 0x8000000 /* Held in memory not obtained from malloc() */
@@ -18186,12 +18193,12 @@
18186 */
18187 #define ExprHasProperty(E,P) (((E)->flags&(P))!=0)
18188 #define ExprHasAllProperty(E,P) (((E)->flags&(P))==(P))
18189 #define ExprSetProperty(E,P) (E)->flags|=(P)
18190 #define ExprClearProperty(E,P) (E)->flags&=~(P)
18191 #define ExprAlwaysTrue(E) (((E)->flags&(EP_FromJoin|EP_IsTrue))==EP_IsTrue)
18192 #define ExprAlwaysFalse(E) (((E)->flags&(EP_FromJoin|EP_IsFalse))==EP_IsFalse)
18193
18194 /* Macros used to ensure that the correct members of unions are accessed
18195 ** in Expr.
18196 */
18197 #define ExprUseUToken(E) (((E)->flags&EP_IntValue)==0)
@@ -20595,11 +20602,10 @@
20595 ** Allowed flags for the 3rd parameter to sqlite3FindInIndex().
20596 */
20597 #define IN_INDEX_NOOP_OK 0x0001 /* OK to return IN_INDEX_NOOP */
20598 #define IN_INDEX_MEMBERSHIP 0x0002 /* IN operator used for membership test */
20599 #define IN_INDEX_LOOP 0x0004 /* IN operator used as a loop */
20600 #define IN_INDEX_REUSE_CUR 0x0008 /* Reuse prior table cursor */
20601 SQLITE_PRIVATE int sqlite3FindInIndex(Parse *, Expr *, u32, int*, int*, int*);
20602
20603 SQLITE_PRIVATE int sqlite3JournalOpen(sqlite3_vfs *, const char *, sqlite3_file *, int, int);
20604 SQLITE_PRIVATE int sqlite3JournalSize(sqlite3_vfs *);
20605 #if defined(SQLITE_ENABLE_ATOMIC_WRITE) \
@@ -30545,11 +30551,13 @@
30545 /*
30546 ** If pExpr has a byte offset for the start of a token, record that as
30547 ** as the error offset.
30548 */
30549 SQLITE_PRIVATE void sqlite3RecordErrorOffsetOfExpr(sqlite3 *db, const Expr *pExpr){
30550 while( pExpr && (ExprHasProperty(pExpr,EP_FromJoin) || pExpr->w.iOfst<=0) ){
 
 
30551 pExpr = pExpr->pLeft;
30552 }
30553 if( pExpr==0 ) return;
30554 db->errByteOffset = pExpr->w.iOfst;
30555 }
@@ -31470,12 +31478,15 @@
31470 if( pExpr->flags || pExpr->affExpr || pExpr->vvaFlags ){
31471 StrAccum x;
31472 sqlite3StrAccumInit(&x, 0, zFlgs, sizeof(zFlgs), 0);
31473 sqlite3_str_appendf(&x, " fg.af=%x.%c",
31474 pExpr->flags, pExpr->affExpr ? pExpr->affExpr : 'n');
31475 if( ExprHasProperty(pExpr, EP_FromJoin) ){
31476 sqlite3_str_appendf(&x, " iJoin=%d", pExpr->w.iJoin);
 
 
 
31477 }
31478 if( ExprHasProperty(pExpr, EP_FromDDL) ){
31479 sqlite3_str_appendf(&x, " DDL");
31480 }
31481 if( ExprHasVVAProperty(pExpr, EP_Immutable) ){
@@ -41837,90 +41848,103 @@
41837 }
41838 return SQLITE_OK;
41839 }
41840
41841 /*
41842 ** If the last component of the pathname in z[0]..z[j-1] is something
41843 ** other than ".." then back it out and return true. If the last
41844 ** component is empty or if it is ".." then return false.
41845 */
41846 static int unixBackupDir(const char *z, int *pJ){
41847 int j = *pJ;
41848 int i;
41849 if( j<=0 ) return 0;
41850 for(i=j-1; i>0 && z[i-1]!='/'; i--){}
41851 if( i==0 ) return 0;
41852 if( z[i]=='.' && i==j-2 && z[i+1]=='.' ) return 0;
41853 *pJ = i-1;
41854 return 1;
41855 }
41856
41857 /*
41858 ** Convert a relative pathname into a full pathname. Also
41859 ** simplify the pathname as follows:
41860 **
41861 ** Remove all instances of /./
41862 ** Remove all isntances of /X/../ for any X
41863 */
41864 static int mkFullPathname(
41865 const char *zPath, /* Input path */
41866 char *zOut, /* Output buffer */
41867 int nOut /* Allocated size of buffer zOut */
41868 ){
41869 int nPath = sqlite3Strlen30(zPath);
41870 int iOff = 0;
41871 int i, j;
41872 if( zPath[0]!='/' ){
41873 if( osGetcwd(zOut, nOut-2)==0 ){
41874 return unixLogError(SQLITE_CANTOPEN_BKPT, "getcwd", zPath);
41875 }
41876 iOff = sqlite3Strlen30(zOut);
41877 zOut[iOff++] = '/';
41878 }
41879 if( (iOff+nPath+1)>nOut ){
41880 /* SQLite assumes that xFullPathname() nul-terminates the output buffer
41881 ** even if it returns an error. */
41882 zOut[iOff] = '\0';
41883 return SQLITE_CANTOPEN_BKPT;
41884 }
41885 sqlite3_snprintf(nOut-iOff, &zOut[iOff], "%s", zPath);
41886
41887 /* Remove duplicate '/' characters. Except, two // at the beginning
41888 ** of a pathname is allowed since this is important on windows. */
41889 for(i=j=1; zOut[i]; i++){
41890 zOut[j++] = zOut[i];
41891 while( zOut[i]=='/' && zOut[i+1]=='/' ) i++;
41892 }
41893 zOut[j] = 0;
41894
41895 assert( zOut[0]=='/' );
41896 for(i=j=0; zOut[i]; i++){
41897 if( zOut[i]=='/' ){
41898 /* Skip over internal "/." directory components */
41899 if( zOut[i+1]=='.' && zOut[i+2]=='/' ){
41900 i += 1;
41901 continue;
41902 }
41903
41904 /* If this is a "/.." directory component then back out the
41905 ** previous term of the directory if it is something other than "..".
41906 */
41907 if( zOut[i+1]=='.'
41908 && zOut[i+2]=='.'
41909 && zOut[i+3]=='/'
41910 && unixBackupDir(zOut, &j)
41911 ){
41912 i += 2;
41913 continue;
41914 }
41915 }
41916 if( ALWAYS(j>=0) ) zOut[j] = zOut[i];
41917 j++;
41918 }
41919 if( NEVER(j==0) ) zOut[j++] = '/';
41920 zOut[j] = 0;
41921 return SQLITE_OK;
 
 
 
 
 
 
 
 
 
 
 
 
 
41922 }
41923
41924 /*
41925 ** Turn a relative pathname into a full pathname. The relative path
41926 ** is stored as a nul-terminated string in the buffer pointed to by
@@ -41934,89 +41958,29 @@
41934 sqlite3_vfs *pVfs, /* Pointer to vfs object */
41935 const char *zPath, /* Possibly relative input path */
41936 int nOut, /* Size of output buffer in bytes */
41937 char *zOut /* Output buffer */
41938 ){
41939 #if !defined(HAVE_READLINK) || !defined(HAVE_LSTAT)
41940 return mkFullPathname(zPath, zOut, nOut);
41941 #else
41942 int rc = SQLITE_OK;
41943 int nByte;
41944 int nLink = 0; /* Number of symbolic links followed so far */
41945 const char *zIn = zPath; /* Input path for each iteration of loop */
41946 char *zDel = 0;
41947
41948 assert( pVfs->mxPathname==MAX_PATHNAME );
41949 UNUSED_PARAMETER(pVfs);
41950
41951 /* It's odd to simulate an io-error here, but really this is just
41952 ** using the io-error infrastructure to test that SQLite handles this
41953 ** function failing. This function could fail if, for example, the
41954 ** current working directory has been unlinked.
41955 */
41956 SimulateIOError( return SQLITE_ERROR );
41957
41958 do {
41959
41960 /* Call stat() on path zIn. Set bLink to true if the path is a symbolic
41961 ** link, or false otherwise. */
41962 int bLink = 0;
41963 struct stat buf;
41964 if( osLstat(zIn, &buf)!=0 ){
41965 if( errno!=ENOENT ){
41966 rc = unixLogError(SQLITE_CANTOPEN_BKPT, "lstat", zIn);
41967 }
41968 }else{
41969 bLink = S_ISLNK(buf.st_mode);
41970 }
41971
41972 if( bLink ){
41973 nLink++;
41974 if( zDel==0 ){
41975 zDel = sqlite3_malloc(nOut);
41976 if( zDel==0 ) rc = SQLITE_NOMEM_BKPT;
41977 }else if( nLink>=SQLITE_MAX_SYMLINKS ){
41978 rc = SQLITE_CANTOPEN_BKPT;
41979 }
41980
41981 if( rc==SQLITE_OK ){
41982 nByte = osReadlink(zIn, zDel, nOut-1);
41983 if( nByte<0 ){
41984 rc = unixLogError(SQLITE_CANTOPEN_BKPT, "readlink", zIn);
41985 }else{
41986 if( zDel[0]!='/' ){
41987 int n;
41988 for(n = sqlite3Strlen30(zIn); n>0 && zIn[n-1]!='/'; n--);
41989 if( nByte+n+1>nOut ){
41990 rc = SQLITE_CANTOPEN_BKPT;
41991 }else{
41992 memmove(&zDel[n], zDel, nByte+1);
41993 memcpy(zDel, zIn, n);
41994 nByte += n;
41995 }
41996 }
41997 zDel[nByte] = '\0';
41998 }
41999 }
42000
42001 zIn = zDel;
42002 }
42003
42004 assert( rc!=SQLITE_OK || zIn!=zOut || zIn[0]=='/' );
42005 if( rc==SQLITE_OK && zIn!=zOut ){
42006 rc = mkFullPathname(zIn, zOut, nOut);
42007 }
42008 if( bLink==0 ) break;
42009 zIn = zOut;
42010 }while( rc==SQLITE_OK );
42011
42012 sqlite3_free(zDel);
42013 if( rc==SQLITE_OK && nLink ) rc = SQLITE_OK_SYMLINK;
42014 return rc;
42015 #endif /* HAVE_READLINK && HAVE_LSTAT */
42016 }
42017
42018
42019 #ifndef SQLITE_OMIT_LOAD_EXTENSION
42020 /*
42021 ** Interfaces for opening a shared library, finding entry points
42022 ** within the shared library, and closing the shared library.
@@ -82215,15 +82179,13 @@
82215 if( c=='4' ){
82216 sqlite3_str_appendall(&x, zP4);
82217 }else if( c=='X' ){
82218 if( pOp->zComment && pOp->zComment[0] ){
82219 sqlite3_str_appendall(&x, pOp->zComment);
82220 }else{
82221 sqlite3_str_appendall(&x, zSynopsis+1);
82222 }
82223 seenCom = 1;
82224 break;
82225 }else{
82226 int v1 = translateP(c, pOp);
82227 int v2;
82228 if( strncmp(zSynopsis+ii+1, "@P", 2)==0 ){
82229 ii += 3;
@@ -102345,11 +102307,11 @@
102345 for(i=0, p=pNC; p && i<ArraySize(anRef); p=p->pNext, i++){
102346 anRef[i] = p->nRef;
102347 }
102348 sqlite3WalkExpr(pWalker, pExpr->pLeft);
102349 if( 0==sqlite3ExprCanBeNull(pExpr->pLeft) && !IN_RENAME_OBJECT ){
102350 testcase( ExprHasProperty(pExpr, EP_FromJoin) );
102351 assert( !ExprHasProperty(pExpr, EP_IntValue) );
102352 if( pExpr->op==TK_NOTNULL ){
102353 pExpr->u.zToken = "true";
102354 ExprSetProperty(pExpr, EP_IsTrue);
102355 }else{
@@ -104636,10 +104598,11 @@
104636 pNew = sqlite3ExprAlloc(db, TK_FUNCTION, pToken, 1);
104637 if( pNew==0 ){
104638 sqlite3ExprListDelete(db, pList); /* Avoid memory leak when malloc fails */
104639 return 0;
104640 }
 
104641 pNew->w.iOfst = (int)(pToken->z - pParse->zTail);
104642 if( pList
104643 && pList->nExpr > pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG]
104644 && !pParse->nested
104645 ){
@@ -104914,11 +104877,11 @@
104914 #endif
104915 ){
104916 nSize = EXPR_FULLSIZE;
104917 }else{
104918 assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) );
104919 assert( !ExprHasProperty(p, EP_FromJoin) );
104920 assert( !ExprHasProperty(p, EP_MemToken) );
104921 assert( !ExprHasVVAProperty(p, EP_NoReduce) );
104922 if( p->pLeft || p->x.pList ){
104923 nSize = EXPR_REDUCEDSIZE | EP_Reduced;
104924 }else{
@@ -105740,11 +105703,11 @@
105740 static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){
105741
105742 /* If pWalker->eCode is 2 then any term of the expression that comes from
105743 ** the ON or USING clauses of an outer join disqualifies the expression
105744 ** from being considered constant. */
105745 if( pWalker->eCode==2 && ExprHasProperty(pExpr, EP_FromJoin) ){
105746 pWalker->eCode = 0;
105747 return WRC_Abort;
105748 }
105749
105750 switch( pExpr->op ){
@@ -105887,14 +105850,14 @@
105887 SQLITE_PRIVATE int sqlite3ExprIsTableConstraint(Expr *pExpr, const SrcItem *pSrc){
105888 if( pSrc->fg.jointype & JT_LTORJ ){
105889 return 0; /* rule (3) */
105890 }
105891 if( pSrc->fg.jointype & JT_LEFT ){
105892 if( !ExprHasProperty(pExpr, EP_FromJoin) ) return 0; /* rule (4a) */
105893 if( pExpr->w.iJoin!=pSrc->iCursor ) return 0; /* rule (4b) */
105894 }else{
105895 if( ExprHasProperty(pExpr, EP_FromJoin) ) return 0; /* rule (5) */
105896 }
105897 return sqlite3ExprIsTableConstant(pExpr, pSrc->iCursor); /* rules (1), (2) */
105898 }
105899
105900
@@ -106312,15 +106275,11 @@
106312 int mustBeUnique; /* True if RHS must be unique */
106313 Vdbe *v = sqlite3GetVdbe(pParse); /* Virtual machine being coded */
106314
106315 assert( pX->op==TK_IN );
106316 mustBeUnique = (inFlags & IN_INDEX_LOOP)!=0;
106317 if( pX->iTable && (inFlags & IN_INDEX_REUSE_CUR)!=0 ){
106318 iTab = pX->iTable;
106319 }else{
106320 iTab = pParse->nTab++;
106321 }
106322
106323 /* If the RHS of this IN(...) operator is a SELECT, and if it matters
106324 ** whether or not the SELECT result contains NULL values, check whether
106325 ** or not NULL is actually possible (it may not be, for example, due
106326 ** to NOT NULL constraints in the schema). If no NULL values are possible,
@@ -106650,13 +106609,12 @@
106650 pExpr->x.pSelect->selId));
106651 }
106652 assert( ExprUseYSub(pExpr) );
106653 sqlite3VdbeAddOp2(v, OP_Gosub, pExpr->y.sub.regReturn,
106654 pExpr->y.sub.iAddr);
106655 if( iTab!=pExpr->iTable ){
106656 sqlite3VdbeAddOp2(v, OP_OpenDup, iTab, pExpr->iTable);
106657 }
106658 sqlite3VdbeJumpHere(v, addrOnce);
106659 return;
106660 }
106661
106662 /* Begin coding the subroutine */
@@ -108645,12 +108603,12 @@
108645 }else{
108646 /* Mark the expression is being from the ON or USING clause of a join
108647 ** so that the sqlite3ExprCodeTarget() routine will not attempt to move
108648 ** it into the Parse.pConstExpr list. We should use a new bit for this,
108649 ** for clarity, but we are out of bits in the Expr.flags field so we
108650 ** have to reuse the EP_FromJoin bit. Bummer. */
108651 pDel->flags |= EP_FromJoin;
108652 sqlite3ExprCodeTarget(pParse, &exprAnd, dest);
108653 }
108654 sqlite3ReleaseTempReg(pParse, regFree1);
108655 }
108656 sqlite3ExprDelete(db, pDel);
@@ -109331,11 +109289,11 @@
109331 ** (never setting pWalker->eCode) is a harmless missed optimization.
109332 */
109333 static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
109334 testcase( pExpr->op==TK_AGG_COLUMN );
109335 testcase( pExpr->op==TK_AGG_FUNCTION );
109336 if( ExprHasProperty(pExpr, EP_FromJoin) ) return WRC_Prune;
109337 switch( pExpr->op ){
109338 case TK_ISNOT:
109339 case TK_ISNULL:
109340 case TK_NOTNULL:
109341 case TK_IS:
@@ -109428,11 +109386,11 @@
109428 ** is NULL. A false negative is merely a missed optimization opportunity.
109429 **
109430 ** False positives are not allowed, however. A false positive may result
109431 ** in an incorrect answer.
109432 **
109433 ** Terms of p that are marked with EP_FromJoin (and hence that come from
109434 ** the ON or USING clauses of OUTER JOINS) are excluded from the analysis.
109435 **
109436 ** This routine is used to check if a LEFT JOIN can be converted into
109437 ** an ordinary JOIN. The p argument is the WHERE clause. If the WHERE
109438 ** clause requires that some column of the right table of the LEFT JOIN
@@ -135849,15 +135807,15 @@
135849 }
135850 return 0;
135851 }
135852
135853 /*
135854 ** Set the EP_FromJoin property on all terms of the given expression.
135855 ** And set the Expr.w.iJoin to iTable for every term in the
135856 ** expression.
135857 **
135858 ** The EP_FromJoin property is used on terms of an expression to tell
135859 ** the OUTER JOIN processing logic that this term is part of the
135860 ** join restriction specified in the ON or USING clause and not a part
135861 ** of the more general WHERE clause. These terms are moved over to the
135862 ** WHERE clause during join processing but we need to remember that they
135863 ** originated in the ON or USING clause.
@@ -135875,11 +135833,11 @@
135875 ** defer the handling of t1.x=5, it will be processed immediately
135876 ** after the t1 loop and rows with t1.x!=5 will never appear in
135877 ** the output, which is incorrect.
135878 */
135879 SQLITE_PRIVATE void sqlite3SetJoinExpr(Expr *p, int iTable, u32 joinFlag){
135880 assert( joinFlag==EP_FromJoin || joinFlag==EP_InnerJoin );
135881 while( p ){
135882 ExprSetProperty(p, joinFlag);
135883 assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) );
135884 ExprSetVVAProperty(p, EP_NoReduce);
135885 p->w.iJoin = iTable;
@@ -135896,21 +135854,21 @@
135896 p = p->pRight;
135897 }
135898 }
135899
135900 /* Undo the work of sqlite3SetJoinExpr(). In the expression p, convert every
135901 ** term that is marked with EP_FromJoin and w.iJoin==iTable into
135902 ** an ordinary term that omits the EP_FromJoin mark.
135903 **
135904 ** This happens when a LEFT JOIN is simplified into an ordinary JOIN.
135905 */
135906 static void unsetJoinExpr(Expr *p, int iTable){
135907 while( p ){
135908 if( ExprHasProperty(p, EP_FromJoin)
135909 && (iTable<0 || p->w.iJoin==iTable) ){
135910 ExprClearProperty(p, EP_FromJoin);
135911 ExprSetProperty(p, EP_InnerJoin);
135912 }
135913 if( p->op==TK_COLUMN && p->iTable==iTable ){
135914 ExprClearProperty(p, EP_CanBeNull);
135915 }
135916 if( p->op==TK_FUNCTION ){
@@ -135934,12 +135892,12 @@
135934 ** do not need to be concerned with NATURAL joins and we only have
135935 ** think about USING joins.
135936 **
135937 ** * ON and USING clauses result in extra terms being added to the
135938 ** WHERE clause to enforce the specified constraints. The extra
135939 ** WHERE clause terms will be tagged with EP_FromJoin or
135940 ** EP_InnerJoin so that we know that they originated in ON/USING.
135941 **
135942 ** The terms of a FROM clause are contained in the Select.pSrc structure.
135943 ** The left most table is the first entry in Select.pSrc. The right-most
135944 ** table is the last entry. The join operator is held in the entry to
135945 ** the right. Thus entry 1 contains the join operator for the join between
@@ -135960,11 +135918,11 @@
135960 for(i=0; i<pSrc->nSrc-1; i++, pRight++, pLeft++){
135961 Table *pRightTab = pRight->pTab;
135962 u32 joinType;
135963
135964 if( NEVER(pLeft->pTab==0 || pRightTab==0) ) continue;
135965 joinType = (pRight->fg.jointype & JT_OUTER)!=0 ? EP_FromJoin : EP_InnerJoin;
135966
135967 /* If this is a NATURAL join, synthesize an approprate USING clause
135968 ** to specify which columns should be joined.
135969 */
135970 if( pRight->fg.jointype & JT_NATURAL ){
@@ -139233,11 +139191,11 @@
139233 static Expr *substExpr(
139234 SubstContext *pSubst, /* Description of the substitution */
139235 Expr *pExpr /* Expr in which substitution occurs */
139236 ){
139237 if( pExpr==0 ) return 0;
139238 if( ExprHasProperty(pExpr, EP_FromJoin)
139239 && pExpr->w.iJoin==pSubst->iTable
139240 ){
139241 pExpr->w.iJoin = pSubst->iNewTable;
139242 }
139243 if( pExpr->op==TK_COLUMN
@@ -139274,13 +139232,13 @@
139274 return pExpr;
139275 }
139276 if( pSubst->isOuterJoin ){
139277 ExprSetProperty(pNew, EP_CanBeNull);
139278 }
139279 if( ExprHasProperty(pExpr,EP_FromJoin|EP_InnerJoin) ){
139280 sqlite3SetJoinExpr(pNew, pExpr->w.iJoin,
139281 pExpr->flags & (EP_FromJoin|EP_InnerJoin));
139282 }
139283 sqlite3ExprDelete(db, pExpr);
139284 pExpr = pNew;
139285
139286 /* Ensure that the expression now has an implicit collation sequence,
@@ -139440,11 +139398,11 @@
139440 static int renumberCursorsCb(Walker *pWalker, Expr *pExpr){
139441 int op = pExpr->op;
139442 if( op==TK_COLUMN || op==TK_IF_NULL_ROW ){
139443 renumberCursorDoMapping(pWalker, &pExpr->iTable);
139444 }
139445 if( ExprHasProperty(pExpr, EP_FromJoin) ){
139446 renumberCursorDoMapping(pWalker, &pExpr->w.iJoin);
139447 }
139448 return WRC_Continue;
139449 }
139450
@@ -140018,11 +139976,11 @@
140018 pSub->pOrderBy = 0;
140019 }
140020 pWhere = pSub->pWhere;
140021 pSub->pWhere = 0;
140022 if( isOuterJoin>0 ){
140023 sqlite3SetJoinExpr(pWhere, iNewParent, EP_FromJoin);
140024 }
140025 if( pWhere ){
140026 if( pParent->pWhere ){
140027 pParent->pWhere = sqlite3PExpr(pParse, TK_AND, pWhere, pParent->pWhere);
140028 }else{
@@ -140151,11 +140109,11 @@
140151 ** found, add it to the pConst structure.
140152 */
140153 static void findConstInWhere(WhereConst *pConst, Expr *pExpr){
140154 Expr *pRight, *pLeft;
140155 if( NEVER(pExpr==0) ) return;
140156 if( ExprHasProperty(pExpr, EP_FromJoin) ) return;
140157 if( pExpr->op==TK_AND ){
140158 findConstInWhere(pConst, pExpr->pRight);
140159 findConstInWhere(pConst, pExpr->pLeft);
140160 return;
140161 }
@@ -140187,13 +140145,13 @@
140187 int bIgnoreAffBlob
140188 ){
140189 int i;
140190 if( pConst->pOomFault[0] ) return WRC_Prune;
140191 if( pExpr->op!=TK_COLUMN ) return WRC_Continue;
140192 if( ExprHasProperty(pExpr, EP_FixedCol|EP_FromJoin) ){
140193 testcase( ExprHasProperty(pExpr, EP_FixedCol) );
140194 testcase( ExprHasProperty(pExpr, EP_FromJoin) );
140195 return WRC_Continue;
140196 }
140197 for(i=0; i<pConst->nConst; i++){
140198 Expr *pColumn = pConst->apExpr[i*2];
140199 if( pColumn==pExpr ) continue;
@@ -140474,16 +140432,16 @@
140474 pWhere = pWhere->pLeft;
140475 }
140476
140477 #if 0 /* Legacy code. Checks now done by sqlite3ExprIsTableConstraint() */
140478 if( isLeftJoin
140479 && (ExprHasProperty(pWhere,EP_FromJoin)==0
140480 || pWhere->w.iJoin!=iCursor)
140481 ){
140482 return 0; /* restriction (4) */
140483 }
140484 if( ExprHasProperty(pWhere,EP_FromJoin)
140485 && pWhere->w.iJoin!=iCursor
140486 ){
140487 return 0; /* restriction (5) */
140488 }
140489 #endif
@@ -143178,11 +143136,11 @@
143178 }
143179 SELECTTRACE(1,pParse,p,("WhereBegin returns\n"));
143180 eDist = sqlite3WhereIsDistinct(pWInfo);
143181 updateAccumulator(pParse, regAcc, pAggInfo, eDist);
143182 if( eDist!=WHERE_DISTINCT_NOOP ){
143183 struct AggInfo_func *pF = &pAggInfo->aFunc[0];
143184 if( pF ){
143185 fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr);
143186 }
143187 }
143188
@@ -148402,11 +148360,11 @@
148402 ** This object is a header on a block of allocated memory that will be
148403 ** automatically freed when its WInfo oject is destructed.
148404 */
148405 struct WhereMemBlock {
148406 WhereMemBlock *pNext; /* Next block in the chain */
148407 u8 sz; /* Bytes of space */
148408 };
148409
148410 /*
148411 ** Extra information attached to a WhereLevel that is a RIGHT JOIN.
148412 */
@@ -149344,11 +149302,11 @@
149344 */
149345 static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){
149346 int nLoop = 0;
149347 assert( pTerm!=0 );
149348 while( (pTerm->wtFlags & TERM_CODED)==0
149349 && (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_FromJoin))
149350 && (pLevel->notReady & pTerm->prereqAll)==0
149351 ){
149352 if( nLoop && (pTerm->wtFlags & TERM_LIKE)!=0 ){
149353 pTerm->wtFlags |= TERM_LIKECOND;
149354 }else{
@@ -149617,12 +149575,11 @@
149617 pExpr->iTable = iTab;
149618 }
149619 sqlite3ExprDelete(db, pX);
149620 }else{
149621 aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*nEq);
149622 eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP|IN_INDEX_REUSE_CUR, 0, aiMap,&iTab);
149623 iTab = pExpr->iTable;
149624 }
149625 pX = pExpr;
149626 }
149627
149628 if( eType==IN_INDEX_INDEX_DESC ){
@@ -150066,20 +150023,20 @@
150066 **
150067 ** are also excluded. See codeCursorHintIsOrFunction() for details.
150068 */
150069 if( pTabItem->fg.jointype & JT_LEFT ){
150070 Expr *pExpr = pTerm->pExpr;
150071 if( !ExprHasProperty(pExpr, EP_FromJoin)
150072 || pExpr->w.iJoin!=pTabItem->iCursor
150073 ){
150074 sWalker.eCode = 0;
150075 sWalker.xExprCallback = codeCursorHintIsOrFunction;
150076 sqlite3WalkExpr(&sWalker, pTerm->pExpr);
150077 if( sWalker.eCode ) continue;
150078 }
150079 }else{
150080 if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) continue;
150081 }
150082
150083 /* All terms in pWLoop->aLTerm[] except pEndRange are used to initialize
150084 ** the cursor. These terms are not needed as hints for a pure range
150085 ** scan (that has no == terms) so omit them. */
@@ -151406,11 +151363,11 @@
151406 WhereInfo *pSubWInfo; /* Info for single OR-term scan */
151407 Expr *pOrExpr = pOrTerm->pExpr; /* Current OR clause term */
151408 Expr *pDelete; /* Local copy of OR clause term */
151409 int jmp1 = 0; /* Address of jump operation */
151410 testcase( (pTabItem[0].fg.jointype & JT_LEFT)!=0
151411 && !ExprHasProperty(pOrExpr, EP_FromJoin)
151412 ); /* See TH3 vtab25.400 and ticket 614b25314c766238 */
151413 pDelete = pOrExpr = sqlite3ExprDup(db, pOrExpr, 0);
151414 if( db->mallocFailed ){
151415 sqlite3ExprDelete(db, pDelete);
151416 continue;
@@ -151614,16 +151571,23 @@
151614 pWInfo->untestedTerms = 1;
151615 continue;
151616 }
151617 pE = pTerm->pExpr;
151618 assert( pE!=0 );
151619 if( (pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ))
151620 && !ExprHasProperty(pE,EP_FromJoin|EP_InnerJoin)
151621 ){
151622 continue;
 
 
 
 
 
 
 
 
151623 }
151624
151625 if( iLoop==1 && !sqlite3ExprCoveredByIndex(pE, pLevel->iTabCur, pIdx) ){
151626 iNext = 2;
151627 continue;
151628 }
151629 if( iLoop<3 && (pTerm->wtFlags & TERM_VARSELECT) ){
@@ -151678,19 +151642,19 @@
151678 WhereTerm *pAlt;
151679 if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue;
151680 if( (pTerm->eOperator & (WO_EQ|WO_IS))==0 ) continue;
151681 if( (pTerm->eOperator & WO_EQUIV)==0 ) continue;
151682 if( pTerm->leftCursor!=iCur ) continue;
151683 if( pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ) ) continue;
151684 pE = pTerm->pExpr;
151685 #ifdef WHERETRACE_ENABLED /* 0x800 */
151686 if( sqlite3WhereTrace & 0x800 ){
151687 sqlite3DebugPrintf("Coding transitive constraint:\n");
151688 sqlite3WhereTermPrint(pTerm, pWC->nTerm-j);
151689 }
151690 #endif
151691 assert( !ExprHasProperty(pE, EP_FromJoin) );
151692 assert( (pTerm->prereqRight & pLevel->notReady)!=0 );
151693 assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
151694 pAlt = sqlite3WhereFindTerm(pWC, iCur, pTerm->u.x.leftColumn, notReady,
151695 WO_EQ|WO_IN|WO_IS, 0);
151696 if( pAlt==0 ) continue;
@@ -151757,22 +151721,12 @@
151757 */
151758 if( pLevel->iLeftJoin ){
151759 pLevel->addrFirst = sqlite3VdbeCurrentAddr(v);
151760 sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->iLeftJoin);
151761 VdbeComment((v, "record LEFT JOIN hit"));
151762 for(pTerm=pWC->a, j=0; j<pWC->nBase; j++, pTerm++){
151763 testcase( pTerm->wtFlags & TERM_VIRTUAL );
151764 testcase( pTerm->wtFlags & TERM_CODED );
151765 if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue;
151766 if( (pTerm->prereqAll & pLevel->notReady)!=0 ){
151767 assert( pWInfo->untestedTerms );
151768 continue;
151769 }
151770 if( pTabItem->fg.jointype & JT_LTORJ ) continue;
151771 assert( pTerm->pExpr );
151772 sqlite3ExprIfFalse(pParse, pTerm->pExpr, addrCont, SQLITE_JUMPIFNULL);
151773 pTerm->wtFlags |= TERM_CODED;
151774 }
151775 }
151776
151777 if( pLevel->pRJ ){
151778 /* Create a subroutine used to process all interior loops and code
@@ -151784,10 +151738,30 @@
151784 WhereRightJoin *pRJ = pLevel->pRJ;
151785 sqlite3VdbeAddOp2(v, OP_BeginSubrtn, 0, pRJ->regReturn);
151786 pRJ->addrSubrtn = sqlite3VdbeCurrentAddr(v);
151787 assert( pParse->withinRJSubrtn < 255 );
151788 pParse->withinRJSubrtn++;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151789 }
151790
151791 #if WHERETRACE_ENABLED /* 0x20800 */
151792 if( sqlite3WhereTrace & 0x20000 ){
151793 sqlite3DebugPrintf("All WHERE-clause terms after coding level %d:\n",
@@ -151839,11 +151813,11 @@
151839 mAll |= pLoop->maskSelf;
151840 for(k=0; k<pWC->nTerm; k++){
151841 WhereTerm *pTerm = &pWC->a[k];
151842 if( pTerm->wtFlags & TERM_VIRTUAL ) break;
151843 if( pTerm->prereqAll & ~mAll ) continue;
151844 if( ExprHasProperty(pTerm->pExpr, EP_FromJoin|EP_InnerJoin) ) continue;
151845 pSubWhere = sqlite3ExprAnd(pParse, pSubWhere,
151846 sqlite3ExprDup(pParse->db, pTerm->pExpr, 0));
151847 }
151848 }
151849 sFrom.nSrc = 1;
@@ -152351,12 +152325,12 @@
152351 /*
152352 ** If the pBase expression originated in the ON or USING clause of
152353 ** a join, then transfer the appropriate markings over to derived.
152354 */
152355 static void transferJoinMarkings(Expr *pDerived, Expr *pBase){
152356 if( pDerived ){
152357 pDerived->flags |= pBase->flags & EP_FromJoin;
152358 pDerived->w.iJoin = pBase->w.iJoin;
152359 }
152360 }
152361
152362 /*
@@ -152807,11 +152781,11 @@
152807 static int termIsEquivalence(Parse *pParse, Expr *pExpr){
152808 char aff1, aff2;
152809 CollSeq *pColl;
152810 if( !OptimizationEnabled(pParse->db, SQLITE_Transitive) ) return 0;
152811 if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0;
152812 if( ExprHasProperty(pExpr, EP_FromJoin) ) return 0;
152813 aff1 = sqlite3ExprAffinity(pExpr->pLeft);
152814 aff2 = sqlite3ExprAffinity(pExpr->pRight);
152815 if( aff1!=aff2
152816 && (!sqlite3IsNumericAffinity(aff1) || !sqlite3IsNumericAffinity(aff2))
152817 ){
@@ -152999,11 +152973,11 @@
152999 sqlite3TreeViewExpr(0,pExpr,0);
153000 abort();
153001 }
153002 #endif
153003
153004 if( ExprHasProperty(pExpr, EP_FromJoin) ){
153005 Bitmask x = sqlite3WhereGetMask(pMaskSet, pExpr->w.iJoin);
153006 prereqAll |= x;
153007 extraRight = x-1; /* ON clause terms may not be used with an index
153008 ** on left table of a LEFT JOIN. Ticket #3015 */
153009 if( (prereqAll>>1)>=x ){
@@ -153074,11 +153048,11 @@
153074 pNew->prereqRight = prereqLeft | extraRight;
153075 pNew->prereqAll = prereqAll;
153076 pNew->eOperator = (operatorMask(pDup->op) + eExtraOp) & opMask;
153077 }else
153078 if( op==TK_ISNULL
153079 && !ExprHasProperty(pExpr,EP_FromJoin)
153080 && 0==sqlite3ExprCanBeNull(pLeft)
153081 ){
153082 assert( !ExprHasProperty(pExpr, EP_IntValue) );
153083 pExpr->op = TK_TRUEFALSE;
153084 pExpr->u.zToken = "false";
@@ -153145,11 +153119,11 @@
153145 ** The virtual term must be tagged with TERM_VNULL.
153146 */
153147 else if( pExpr->op==TK_NOTNULL ){
153148 if( pExpr->pLeft->op==TK_COLUMN
153149 && pExpr->pLeft->iColumn>=0
153150 && !ExprHasProperty(pExpr, EP_FromJoin)
153151 ){
153152 Expr *pNewExpr;
153153 Expr *pLeft = pExpr->pLeft;
153154 int idxNew;
153155 WhereTerm *pNewTerm;
@@ -153349,12 +153323,12 @@
153349 prereqColumn = sqlite3WhereExprUsage(pMaskSet, pLeft);
153350 if( (prereqExpr & prereqColumn)==0 ){
153351 Expr *pNewExpr;
153352 pNewExpr = sqlite3PExpr(pParse, TK_MATCH,
153353 0, sqlite3ExprDup(db, pRight, 0));
153354 if( ExprHasProperty(pExpr, EP_FromJoin) && pNewExpr ){
153355 ExprSetProperty(pNewExpr, EP_FromJoin);
153356 pNewExpr->w.iJoin = pExpr->w.iJoin;
153357 }
153358 idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC);
153359 testcase( idxNew==0 );
153360 pNewTerm = &pWC->a[idxNew];
@@ -153717,13 +153691,13 @@
153717 pItem->colUsed |= sqlite3ExprColUsed(pColRef);
153718 pRhs = sqlite3PExpr(pParse, TK_UPLUS,
153719 sqlite3ExprDup(pParse->db, pArgs->a[j].pExpr, 0), 0);
153720 pTerm = sqlite3PExpr(pParse, TK_EQ, pColRef, pRhs);
153721 if( pItem->fg.jointype & (JT_LEFT|JT_LTORJ) ){
153722 joinType = EP_FromJoin;
153723 }else{
153724 joinType = EP_InnerJoin;
153725 }
153726 sqlite3SetJoinExpr(pTerm, pItem->iCursor, joinType);
153727 whereClauseInsert(pWC, pTerm, TERM_DYNAMIC);
153728 }
153729 }
@@ -154060,11 +154034,11 @@
154060 if( pTerm->leftCursor==iCur
154061 && pTerm->u.x.leftColumn==iColumn
154062 && (iColumn!=XN_EXPR
154063 || sqlite3ExprCompareSkip(pTerm->pExpr->pLeft,
154064 pScan->pIdxExpr,iCur)==0)
154065 && (pScan->iEquiv<=1 || !ExprHasProperty(pTerm->pExpr, EP_FromJoin))
154066 ){
154067 if( (pTerm->eOperator & WO_EQUIV)!=0
154068 && pScan->nEquiv<ArraySize(pScan->aiCur)
154069 && (pX = whereRightSubexprIsColumn(pTerm->pExpr))!=0
154070 ){
@@ -154487,11 +154461,11 @@
154487 ){
154488 char aff;
154489 if( pTerm->leftCursor!=pSrc->iCursor ) return 0;
154490 if( (pTerm->eOperator & (WO_EQ|WO_IS))==0 ) return 0;
154491 if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
154492 && !ExprHasProperty(pTerm->pExpr, EP_FromJoin)
154493 && (pTerm->eOperator & WO_IS)
154494 ){
154495 /* Cannot use an IS term from the WHERE clause as an index driver for
154496 ** the RHS of a LEFT JOIN or for the LHS of a RIGHT JOIN. Such a term
154497 ** can only be used if it is from the ON clause. */
@@ -154911,11 +154885,11 @@
154911 /* tag-20191211-002: WHERE-clause constraints are not useful to the
154912 ** right-hand table of a LEFT JOIN nor to the left-hand table of a
154913 ** RIGHT JOIN. See tag-20191211-001 for the
154914 ** equivalent restriction for ordinary tables. */
154915 if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
154916 && !ExprHasProperty(pTerm->pExpr, EP_FromJoin)
154917 ){
154918 continue;
154919 }
154920 nTerm++;
154921 pTerm->wtFlags |= TERM_OK;
@@ -155789,11 +155763,11 @@
155789 char zType[8];
155790 char zLeft[50];
155791 memcpy(zType, "....", 5);
155792 if( pTerm->wtFlags & TERM_VIRTUAL ) zType[0] = 'V';
155793 if( pTerm->eOperator & WO_EQUIV ) zType[1] = 'E';
155794 if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) zType[2] = 'L';
155795 if( pTerm->wtFlags & TERM_CODED ) zType[3] = 'C';
155796 if( pTerm->eOperator & WO_SINGLE ){
155797 assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
155798 sqlite3_snprintf(sizeof(zLeft),zLeft,"left={%d:%d}",
155799 pTerm->leftCursor, pTerm->u.x.leftColumn);
@@ -156566,11 +156540,11 @@
156566 /* tag-20191211-001: Do not allow constraints from the WHERE clause to
156567 ** be used by the right table of a LEFT JOIN nor by the left table of a
156568 ** RIGHT JOIN. Only constraints in the
156569 ** ON clause are allowed. See tag-20191211-002 for the vtab equivalent. */
156570 if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
156571 && !ExprHasProperty(pTerm->pExpr, EP_FromJoin|EP_InnerJoin)
156572 ){
156573 continue;
156574 }
156575
156576 if( IsUniqueIndex(pProbe) && saved_nEq==pProbe->nKeyCol-1 ){
@@ -156935,12 +156909,12 @@
156935 }
156936 if( pParse->db->flags & SQLITE_EnableQPSG ) pParse = 0;
156937 for(i=0, pTerm=pWC->a; i<pWC->nTerm; i++, pTerm++){
156938 Expr *pExpr;
156939 pExpr = pTerm->pExpr;
156940 if( (!ExprHasProperty(pExpr, EP_FromJoin) || pExpr->w.iJoin==iTab)
156941 && (isLeft==0 || ExprHasProperty(pExpr, EP_FromJoin))
156942 && sqlite3ExprImpliesExpr(pParse, pExpr, pWhere, iTab)
156943 && (pTerm->wtFlags & TERM_VNULL)==0
156944 ){
156945 return 1;
156946 }
@@ -157212,11 +157186,18 @@
157212
157213 pNew->rRun = sqlite3LogEstAdd(pNew->rRun, nLookup);
157214 }
157215 ApplyCostMultiplier(pNew->rRun, pTab->costMult);
157216 whereLoopOutputAdjust(pWC, pNew, rSize);
157217 rc = whereLoopInsert(pBuilder, pNew);
 
 
 
 
 
 
 
157218 pNew->nOut = rSize;
157219 if( rc ) break;
157220 }
157221 }
157222
@@ -158944,11 +158925,11 @@
158944 }
158945 if( (tabUsed & pLoop->maskSelf)!=0 ) continue;
158946 pEnd = pWInfo->sWC.a + pWInfo->sWC.nTerm;
158947 for(pTerm=pWInfo->sWC.a; pTerm<pEnd; pTerm++){
158948 if( (pTerm->prereqAll & pLoop->maskSelf)!=0 ){
158949 if( !ExprHasProperty(pTerm->pExpr, EP_FromJoin)
158950 || pTerm->pExpr->w.iJoin!=pItem->iCursor
158951 ){
158952 break;
158953 }
158954 }
@@ -159898,10 +159879,11 @@
159898 VdbeModuleComment((v, "End WHERE-loop%d: %s", i,
159899 pWInfo->pTabList->a[pLevel->iFrom].pTab->zName));
159900 }
159901
159902 assert( pWInfo->nLevel<=pTabList->nSrc );
 
159903 for(i=0, pLevel=pWInfo->a; i<pWInfo->nLevel; i++, pLevel++){
159904 int k, last;
159905 VdbeOp *pOp, *pLastOp;
159906 Index *pIdx = 0;
159907 SrcItem *pTabItem = &pTabList->a[pLevel->iFrom];
@@ -160034,11 +160016,10 @@
160034 */
160035 sqlite3VdbeResolveLabel(v, pWInfo->iBreak);
160036
160037 /* Final cleanup
160038 */
160039 if( pWInfo->pExprMods ) whereUndoExprMods(pWInfo);
160040 pParse->nQueryLoop = pWInfo->savedNQueryLoop;
160041 whereInfoFree(db, pWInfo);
160042 return;
160043 }
160044
@@ -163662,22 +163643,22 @@
163662 #define sqlite3ParserCTX_PDECL ,Parse *pParse
163663 #define sqlite3ParserCTX_PARAM ,pParse
163664 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
163665 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
163666 #define YYFALLBACK 1
163667 #define YYNSTATE 570
163668 #define YYNRULE 403
163669 #define YYNRULE_WITH_ACTION 340
163670 #define YYNTOKEN 185
163671 #define YY_MAX_SHIFT 569
163672 #define YY_MIN_SHIFTREDUCE 829
163673 #define YY_MAX_SHIFTREDUCE 1231
163674 #define YY_ERROR_ACTION 1232
163675 #define YY_ACCEPT_ACTION 1233
163676 #define YY_NO_ACTION 1234
163677 #define YY_MIN_REDUCE 1235
163678 #define YY_MAX_REDUCE 1637
163679 /************* End control #defines *******************************************/
163680 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
163681
163682 /* Define the yytestcase() macro to be a no-op if is not already defined
163683 ** otherwise.
@@ -163740,219 +163721,222 @@
163740 ** yy_reduce_ofst[] For each state, the offset into yy_action for
163741 ** shifting non-terminals after a reduce.
163742 ** yy_default[] Default action for each state.
163743 **
163744 *********** Begin parsing tables **********************************************/
163745 #define YY_ACTTAB_COUNT (2064)
163746 static const YYACTIONTYPE yy_action[] = {
163747 /* 0 */ 562, 204, 562, 116, 112, 225, 562, 116, 112, 225,
163748 /* 10 */ 562, 1306, 373, 1285, 404, 556, 556, 556, 562, 405,
163749 /* 20 */ 374, 1306, 1268, 41, 41, 41, 41, 204, 1516, 71,
163750 /* 30 */ 71, 965, 415, 41, 41, 487, 299, 275, 299, 966,
163751 /* 40 */ 393, 71, 71, 123, 124, 114, 1209, 1209, 1042, 1045,
163752 /* 50 */ 1034, 1034, 121, 121, 122, 122, 122, 122, 472, 405,
163753 /* 60 */ 1233, 1, 1, 569, 2, 1237, 544, 116, 112, 225,
163754 /* 70 */ 313, 476, 142, 476, 520, 116, 112, 225, 525, 1319,
163755 /* 80 */ 413, 519, 138, 123, 124, 114, 1209, 1209, 1042, 1045,
163756 /* 90 */ 1034, 1034, 121, 121, 122, 122, 122, 122, 116, 112,
163757 /* 100 */ 225, 323, 120, 120, 120, 120, 119, 119, 118, 118,
163758 /* 110 */ 118, 117, 113, 440, 280, 280, 280, 280, 438, 438,
163759 /* 120 */ 438, 1557, 372, 1559, 1184, 371, 1155, 559, 1155, 559,
163760 /* 130 */ 405, 1557, 533, 255, 222, 440, 99, 141, 445, 312,
163761 /* 140 */ 553, 236, 120, 120, 120, 120, 119, 119, 118, 118,
163762 /* 150 */ 118, 117, 113, 440, 123, 124, 114, 1209, 1209, 1042,
163763 /* 160 */ 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, 138,
163764 /* 170 */ 290, 1184, 335, 444, 118, 118, 118, 117, 113, 440,
163765 /* 180 */ 125, 1184, 1185, 1186, 144, 437, 436, 562, 117, 113,
163766 /* 190 */ 440, 122, 122, 122, 122, 115, 120, 120, 120, 120,
163767 /* 200 */ 119, 119, 118, 118, 118, 117, 113, 440, 450, 110,
163768 /* 210 */ 13, 13, 542, 120, 120, 120, 120, 119, 119, 118,
163769 /* 220 */ 118, 118, 117, 113, 440, 418, 312, 553, 1184, 1185,
163770 /* 230 */ 1186, 145, 1216, 405, 1216, 122, 122, 122, 122, 120,
163771 /* 240 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113,
163772 /* 250 */ 440, 461, 338, 1031, 1031, 1043, 1046, 123, 124, 114,
163773 /* 260 */ 1209, 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122,
163774 /* 270 */ 122, 122, 1271, 518, 218, 1184, 562, 405, 220, 510,
163775 /* 280 */ 171, 80, 81, 120, 120, 120, 120, 119, 119, 118,
163776 /* 290 */ 118, 118, 117, 113, 440, 1001, 16, 16, 1184, 55,
163777 /* 300 */ 55, 123, 124, 114, 1209, 1209, 1042, 1045, 1034, 1034,
163778 /* 310 */ 121, 121, 122, 122, 122, 122, 120, 120, 120, 120,
163779 /* 320 */ 119, 119, 118, 118, 118, 117, 113, 440, 1035, 542,
163780 /* 330 */ 1184, 369, 1184, 1185, 1186, 248, 1426, 395, 500, 497,
163781 /* 340 */ 496, 108, 554, 560, 4, 920, 920, 429, 495, 336,
163782 /* 350 */ 456, 324, 356, 390, 1229, 1184, 1185, 1186, 557, 562,
163783 /* 360 */ 120, 120, 120, 120, 119, 119, 118, 118, 118, 117,
163784 /* 370 */ 113, 440, 280, 280, 365, 1570, 1597, 437, 436, 150,
163785 /* 380 */ 405, 441, 71, 71, 1278, 559, 1213, 1184, 1185, 1186,
163786 /* 390 */ 83, 1215, 267, 551, 539, 511, 1551, 562, 96, 1214,
163787 /* 400 */ 6, 1270, 468, 138, 123, 124, 114, 1209, 1209, 1042,
163788 /* 410 */ 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, 544,
163789 /* 420 */ 13, 13, 1021, 503, 1216, 1184, 1216, 543, 106, 106,
163790 /* 430 */ 218, 562, 1230, 171, 562, 423, 107, 193, 441, 564,
163791 /* 440 */ 563, 426, 1542, 1011, 321, 545, 1184, 266, 283, 364,
163792 /* 450 */ 506, 359, 505, 253, 71, 71, 539, 71, 71, 355,
163793 /* 460 */ 312, 553, 1603, 120, 120, 120, 120, 119, 119, 118,
163794 /* 470 */ 118, 118, 117, 113, 440, 1011, 1011, 1013, 1014, 27,
163795 /* 480 */ 280, 280, 1184, 1185, 1186, 1150, 562, 1602, 405, 895,
163796 /* 490 */ 186, 544, 352, 559, 544, 931, 529, 513, 1150, 512,
163797 /* 500 */ 409, 1150, 546, 1184, 1185, 1186, 562, 540, 1544, 51,
163798 /* 510 */ 51, 210, 123, 124, 114, 1209, 1209, 1042, 1045, 1034,
163799 /* 520 */ 1034, 121, 121, 122, 122, 122, 122, 1184, 470, 56,
163800 /* 530 */ 56, 405, 280, 280, 1480, 501, 119, 119, 118, 118,
163801 /* 540 */ 118, 117, 113, 440, 1001, 559, 514, 213, 537, 1551,
163802 /* 550 */ 312, 553, 138, 6, 528, 123, 124, 114, 1209, 1209,
163803 /* 560 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122,
163804 /* 570 */ 1545, 120, 120, 120, 120, 119, 119, 118, 118, 118,
163805 /* 580 */ 117, 113, 440, 481, 1184, 1185, 1186, 478, 277, 1259,
163806 /* 590 */ 951, 248, 1184, 369, 500, 497, 496, 1184, 336, 565,
163807 /* 600 */ 1184, 565, 405, 288, 495, 951, 870, 187, 476, 312,
163808 /* 610 */ 553, 380, 286, 376, 120, 120, 120, 120, 119, 119,
163809 /* 620 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209,
163810 /* 630 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163811 /* 640 */ 122, 405, 390, 1128, 1184, 863, 98, 280, 280, 1184,
163812 /* 650 */ 1185, 1186, 369, 1085, 1184, 1185, 1186, 1184, 1185, 1186,
163813 /* 660 */ 559, 451, 32, 369, 229, 123, 124, 114, 1209, 1209,
163814 /* 670 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122,
163815 /* 680 */ 1425, 953, 562, 224, 952, 120, 120, 120, 120, 119,
163816 /* 690 */ 119, 118, 118, 118, 117, 113, 440, 1150, 224, 1184,
163817 /* 700 */ 153, 1184, 1185, 1186, 1543, 13, 13, 297, 951, 1224,
163818 /* 710 */ 1150, 149, 405, 1150, 369, 1573, 1168, 5, 365, 1570,
163819 /* 720 */ 425, 1230, 3, 951, 120, 120, 120, 120, 119, 119,
163820 /* 730 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209,
163821 /* 740 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163822 /* 750 */ 122, 405, 204, 561, 1184, 1022, 1184, 1185, 1186, 1184,
163823 /* 760 */ 384, 846, 151, 1542, 282, 398, 1090, 1090, 484, 562,
163824 /* 770 */ 461, 338, 1311, 1311, 1542, 123, 124, 114, 1209, 1209,
163825 /* 780 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122,
163826 /* 790 */ 127, 562, 13, 13, 370, 120, 120, 120, 120, 119,
163827 /* 800 */ 119, 118, 118, 118, 117, 113, 440, 298, 562, 449,
163828 /* 810 */ 524, 1184, 1185, 1186, 13, 13, 1184, 1185, 1186, 1289,
163829 /* 820 */ 459, 1259, 405, 1309, 1309, 1542, 1006, 449, 448, 196,
163830 /* 830 */ 295, 71, 71, 1257, 120, 120, 120, 120, 119, 119,
163831 /* 840 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209,
163832 /* 850 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163833 /* 860 */ 122, 405, 223, 1065, 1150, 280, 280, 415, 308, 274,
163834 /* 870 */ 274, 281, 281, 1411, 402, 401, 378, 1150, 559, 562,
163835 /* 880 */ 1150, 1188, 559, 1590, 559, 123, 124, 114, 1209, 1209,
163836 /* 890 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122,
163837 /* 900 */ 449, 1472, 13, 13, 1526, 120, 120, 120, 120, 119,
163838 /* 910 */ 119, 118, 118, 118, 117, 113, 440, 197, 562, 350,
163839 /* 920 */ 1576, 569, 2, 1237, 834, 835, 836, 1552, 313, 1204,
163840 /* 930 */ 142, 6, 405, 251, 250, 249, 202, 1319, 9, 1188,
163841 /* 940 */ 258, 71, 71, 420, 120, 120, 120, 120, 119, 119,
163842 /* 950 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209,
163843 /* 960 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163844 /* 970 */ 122, 562, 280, 280, 562, 1205, 405, 568, 309, 1237,
163845 /* 980 */ 345, 1288, 348, 415, 313, 559, 142, 487, 521, 1633,
163846 /* 990 */ 391, 367, 487, 1319, 70, 70, 1287, 71, 71, 236,
163847 /* 1000 */ 1317, 101, 114, 1209, 1209, 1042, 1045, 1034, 1034, 121,
163848 /* 1010 */ 121, 122, 122, 122, 122, 120, 120, 120, 120, 119,
163849 /* 1020 */ 119, 118, 118, 118, 117, 113, 440, 1106, 280, 280,
163850 /* 1030 */ 424, 444, 1515, 1205, 435, 280, 280, 1479, 1344, 307,
163851 /* 1040 */ 470, 559, 1107, 965, 487, 487, 213, 1255, 559, 1528,
163852 /* 1050 */ 562, 966, 203, 562, 1021, 236, 379, 1108, 515, 120,
163853 /* 1060 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113,
163854 /* 1070 */ 440, 1012, 104, 71, 71, 1011, 13, 13, 906, 562,
163855 /* 1080 */ 1485, 562, 280, 280, 95, 522, 487, 444, 907, 1318,
163856 /* 1090 */ 1314, 541, 405, 280, 280, 559, 147, 205, 1485, 1487,
163857 /* 1100 */ 258, 446, 15, 15, 43, 43, 559, 1011, 1011, 1013,
163858 /* 1110 */ 439, 328, 405, 523, 12, 291, 123, 124, 114, 1209,
163859 /* 1120 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163860 /* 1130 */ 122, 343, 405, 858, 1524, 1205, 123, 124, 114, 1209,
163861 /* 1140 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163862 /* 1150 */ 122, 1129, 1631, 470, 1631, 367, 123, 111, 114, 1209,
163863 /* 1160 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122,
163864 /* 1170 */ 122, 1485, 325, 470, 327, 120, 120, 120, 120, 119,
163865 /* 1180 */ 119, 118, 118, 118, 117, 113, 440, 199, 1411, 562,
163866 /* 1190 */ 1286, 858, 460, 1205, 432, 120, 120, 120, 120, 119,
163867 /* 1200 */ 119, 118, 118, 118, 117, 113, 440, 547, 1129, 1632,
163868 /* 1210 */ 535, 1632, 57, 57, 886, 120, 120, 120, 120, 119,
163869 /* 1220 */ 119, 118, 118, 118, 117, 113, 440, 562, 294, 534,
163870 /* 1230 */ 1127, 1411, 1549, 1550, 1323, 405, 6, 6, 1161, 1260,
163871 /* 1240 */ 411, 316, 280, 280, 1411, 504, 559, 521, 296, 453,
163872 /* 1250 */ 44, 44, 562, 887, 12, 559, 326, 474, 421, 403,
163873 /* 1260 */ 124, 114, 1209, 1209, 1042, 1045, 1034, 1034, 121, 121,
163874 /* 1270 */ 122, 122, 122, 122, 562, 58, 58, 284, 1184, 1411,
163875 /* 1280 */ 492, 454, 388, 388, 387, 269, 385, 1127, 1548, 843,
163876 /* 1290 */ 1161, 403, 6, 562, 317, 1150, 466, 59, 59, 1547,
163877 /* 1300 */ 1106, 422, 230, 6, 319, 252, 536, 252, 1150, 427,
163878 /* 1310 */ 562, 1150, 318, 17, 483, 1107, 60, 60, 120, 120,
163879 /* 1320 */ 120, 120, 119, 119, 118, 118, 118, 117, 113, 440,
163880 /* 1330 */ 1108, 212, 477, 61, 61, 1184, 1185, 1186, 108, 554,
163881 /* 1340 */ 320, 4, 232, 452, 522, 562, 233, 452, 562, 433,
163882 /* 1350 */ 164, 550, 416, 137, 475, 557, 562, 289, 562, 1087,
163883 /* 1360 */ 562, 289, 562, 1087, 527, 562, 866, 8, 62, 62,
163884 /* 1370 */ 231, 45, 45, 562, 410, 562, 410, 562, 441, 46,
163885 /* 1380 */ 46, 47, 47, 49, 49, 50, 50, 195, 63, 63,
163886 /* 1390 */ 551, 562, 355, 562, 98, 482, 64, 64, 65, 65,
163887 /* 1400 */ 14, 14, 555, 411, 531, 406, 562, 1021, 562, 530,
163888 /* 1410 */ 312, 553, 312, 553, 66, 66, 129, 129, 562, 1021,
163889 /* 1420 */ 562, 508, 926, 866, 1012, 106, 106, 925, 1011, 67,
163890 /* 1430 */ 67, 52, 52, 107, 447, 441, 564, 563, 412, 173,
163891 /* 1440 */ 1011, 68, 68, 69, 69, 562, 463, 562, 926, 467,
163892 /* 1450 */ 1356, 279, 222, 925, 311, 1355, 403, 562, 455, 403,
163893 /* 1460 */ 1011, 1011, 1013, 235, 403, 84, 209, 1342, 53, 53,
163894 /* 1470 */ 159, 159, 1011, 1011, 1013, 1014, 27, 1575, 1172, 443,
163895 /* 1480 */ 160, 160, 284, 95, 105, 1531, 103, 388, 388, 387,
163896 /* 1490 */ 269, 385, 562, 873, 843, 877, 562, 108, 554, 462,
163897 /* 1500 */ 4, 562, 148, 30, 38, 562, 1124, 230, 392, 319,
163898 /* 1510 */ 108, 554, 523, 4, 557, 76, 76, 318, 562, 54,
163899 /* 1520 */ 54, 562, 333, 464, 72, 72, 329, 557, 130, 130,
163900 /* 1530 */ 562, 285, 1504, 562, 31, 1503, 562, 441, 334, 479,
163901 /* 1540 */ 98, 73, 73, 340, 157, 157, 292, 232, 1072, 551,
163902 /* 1550 */ 441, 873, 1352, 131, 131, 164, 132, 132, 137, 128,
163903 /* 1560 */ 128, 1564, 551, 531, 562, 315, 562, 344, 532, 1003,
163904 /* 1570 */ 469, 257, 257, 885, 884, 231, 531, 562, 1021, 562,
163905 /* 1580 */ 471, 530, 257, 363, 106, 106, 517, 158, 158, 152,
163906 /* 1590 */ 152, 1021, 107, 362, 441, 564, 563, 106, 106, 1011,
163907 /* 1600 */ 136, 136, 135, 135, 562, 107, 1072, 441, 564, 563,
163908 /* 1610 */ 406, 347, 1011, 562, 349, 312, 553, 562, 339, 562,
163909 /* 1620 */ 98, 493, 353, 254, 98, 892, 893, 133, 133, 351,
163910 /* 1630 */ 1302, 1011, 1011, 1013, 1014, 27, 134, 134, 1015, 447,
163911 /* 1640 */ 75, 75, 77, 77, 1011, 1011, 1013, 1014, 27, 1172,
163912 /* 1650 */ 443, 562, 358, 284, 108, 554, 368, 4, 388, 388,
163913 /* 1660 */ 387, 269, 385, 562, 1133, 843, 562, 1068, 956, 254,
163914 /* 1670 */ 257, 557, 968, 969, 74, 74, 549, 923, 230, 110,
163915 /* 1680 */ 319, 108, 554, 1084, 4, 1084, 42, 42, 318, 48,
163916 /* 1690 */ 48, 1083, 1365, 1083, 441, 856, 1015, 146, 557, 924,
163917 /* 1700 */ 1410, 110, 1338, 1350, 548, 1416, 551, 1267, 207, 1258,
163918 /* 1710 */ 1246, 1245, 1247, 1583, 11, 488, 272, 215, 232, 1335,
163919 /* 1720 */ 304, 441, 305, 306, 389, 228, 164, 1397, 1392, 137,
163920 /* 1730 */ 287, 331, 332, 551, 293, 1021, 1385, 337, 473, 200,
163921 /* 1740 */ 361, 106, 106, 930, 498, 1402, 231, 1401, 1285, 107,
163922 /* 1750 */ 396, 441, 564, 563, 219, 1476, 1011, 1347, 1475, 1348,
163923 /* 1760 */ 1346, 1345, 1021, 1224, 552, 1586, 261, 1221, 106, 106,
163924 /* 1770 */ 1523, 201, 383, 1521, 214, 414, 107, 83, 441, 564,
163925 /* 1780 */ 563, 406, 211, 1011, 175, 1398, 312, 553, 1011, 1011,
163926 /* 1790 */ 1013, 1014, 27, 226, 184, 169, 100, 554, 79, 4,
163927 /* 1800 */ 82, 457, 35, 179, 458, 177, 491, 238, 96, 1481,
163928 /* 1810 */ 447, 180, 1404, 557, 181, 1011, 1011, 1013, 1014, 27,
163929 /* 1820 */ 182, 1403, 394, 36, 465, 1406, 397, 188, 1470, 480,
163930 /* 1830 */ 242, 89, 1492, 486, 342, 244, 441, 273, 192, 346,
163931 /* 1840 */ 489, 245, 399, 1248, 428, 246, 507, 1296, 551, 91,
163932 /* 1850 */ 877, 1305, 1304, 220, 1601, 1295, 1303, 430, 431, 516,
163933 /* 1860 */ 1569, 259, 400, 302, 1600, 1275, 303, 260, 360, 1274,
163934 /* 1870 */ 1273, 1599, 366, 1555, 434, 1554, 1370, 1021, 1369, 542,
163935 /* 1880 */ 126, 10, 1456, 106, 106, 377, 102, 97, 310, 526,
163936 /* 1890 */ 34, 107, 566, 441, 564, 563, 1178, 271, 1011, 268,
163937 /* 1900 */ 270, 567, 1243, 1238, 206, 1328, 375, 381, 1327, 382,
163938 /* 1910 */ 407, 161, 174, 408, 1508, 1509, 143, 300, 830, 162,
163939 /* 1920 */ 1507, 1506, 163, 442, 208, 314, 227, 216, 217, 78,
163940 /* 1930 */ 1011, 1011, 1013, 1014, 27, 140, 1082, 322, 1080, 165,
163941 /* 1940 */ 176, 1204, 234, 178, 909, 330, 237, 1096, 183, 166,
163942 /* 1950 */ 167, 417, 85, 86, 419, 185, 87, 88, 168, 1099,
163943 /* 1960 */ 239, 1095, 240, 154, 18, 241, 341, 1218, 257, 1088,
163944 /* 1970 */ 243, 485, 190, 189, 37, 845, 490, 362, 247, 494,
163945 /* 1980 */ 357, 191, 875, 90, 19, 502, 354, 20, 499, 92,
163946 /* 1990 */ 170, 155, 888, 93, 301, 509, 94, 1166, 156, 1048,
163947 /* 2000 */ 1135, 39, 221, 1134, 276, 278, 256, 194, 110, 960,
163948 /* 2010 */ 954, 1156, 21, 1152, 22, 1160, 1140, 1154, 23, 33,
163949 /* 2020 */ 24, 1159, 25, 538, 26, 198, 98, 1063, 1049, 1047,
163950 /* 2030 */ 1051, 7, 1105, 262, 1104, 263, 1052, 28, 40, 558,
163951 /* 2040 */ 1016, 857, 109, 29, 919, 386, 139, 172, 264, 265,
163952 /* 2050 */ 1174, 1592, 1173, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
163953 /* 2060 */ 1234, 1234, 1234, 1591,
 
 
 
163954 };
163955 static const YYCODETYPE yy_lookahead[] = {
163956 /* 0 */ 193, 193, 193, 274, 275, 276, 193, 274, 275, 276,
163957 /* 10 */ 193, 223, 219, 225, 206, 210, 211, 212, 193, 19,
163958 /* 20 */ 219, 233, 216, 216, 217, 216, 217, 193, 295, 216,
@@ -164114,57 +164098,57 @@
164114 /* 1580 */ 23, 90, 25, 121, 106, 107, 19, 216, 217, 216,
164115 /* 1590 */ 217, 100, 114, 131, 116, 117, 118, 106, 107, 121,
164116 /* 1600 */ 216, 217, 216, 217, 193, 114, 117, 116, 117, 118,
164117 /* 1610 */ 133, 193, 121, 193, 193, 138, 139, 193, 23, 193,
164118 /* 1620 */ 25, 23, 23, 25, 25, 7, 8, 216, 217, 193,
164119 /* 1630 */ 193, 153, 154, 155, 156, 157, 216, 217, 59, 162,
164120 /* 1640 */ 216, 217, 216, 217, 153, 154, 155, 156, 157, 1,
164121 /* 1650 */ 2, 193, 193, 5, 19, 20, 193, 22, 10, 11,
164122 /* 1660 */ 12, 13, 14, 193, 97, 17, 193, 23, 23, 25,
164123 /* 1670 */ 25, 36, 83, 84, 216, 217, 236, 23, 30, 25,
164124 /* 1680 */ 32, 19, 20, 153, 22, 155, 216, 217, 40, 216,
164125 /* 1690 */ 217, 153, 193, 155, 59, 23, 117, 25, 36, 23,
164126 /* 1700 */ 193, 25, 193, 193, 193, 193, 71, 193, 242, 193,
164127 /* 1710 */ 193, 193, 193, 193, 243, 288, 287, 214, 70, 255,
164128 /* 1720 */ 255, 59, 255, 255, 191, 297, 78, 271, 267, 81,
164129 /* 1730 */ 245, 293, 246, 71, 246, 100, 267, 245, 293, 249,
164130 /* 1740 */ 219, 106, 107, 108, 220, 271, 98, 271, 225, 114,
164131 /* 1750 */ 271, 116, 117, 118, 229, 219, 121, 259, 219, 259,
164132 /* 1760 */ 259, 259, 100, 60, 280, 196, 141, 38, 106, 107,
164133 /* 1770 */ 200, 249, 245, 200, 243, 200, 114, 151, 116, 117,
164134 /* 1780 */ 118, 133, 150, 121, 297, 272, 138, 139, 153, 154,
164135 /* 1790 */ 155, 156, 157, 297, 22, 43, 19, 20, 294, 22,
164136 /* 1800 */ 294, 18, 270, 237, 200, 234, 18, 199, 149, 283,
164137 /* 1810 */ 162, 237, 272, 36, 237, 153, 154, 155, 156, 157,
164138 /* 1820 */ 237, 272, 246, 270, 246, 234, 246, 234, 246, 200,
164139 /* 1830 */ 199, 158, 290, 62, 289, 199, 59, 200, 22, 200,
164140 /* 1840 */ 221, 199, 221, 200, 64, 199, 115, 227, 71, 22,
164141 /* 1850 */ 126, 218, 218, 165, 224, 227, 218, 24, 113, 305,
164142 /* 1860 */ 312, 200, 221, 282, 224, 218, 282, 91, 218, 220,
164143 /* 1870 */ 218, 218, 221, 317, 82, 317, 265, 100, 265, 145,
164144 /* 1880 */ 148, 22, 277, 106, 107, 200, 158, 147, 279, 146,
164145 /* 1890 */ 25, 114, 202, 116, 117, 118, 13, 6, 121, 194,
164146 /* 1900 */ 194, 192, 192, 192, 248, 250, 249, 247, 250, 246,
164147 /* 1910 */ 303, 207, 300, 303, 213, 213, 222, 222, 4, 207,
164148 /* 1920 */ 213, 213, 207, 3, 22, 163, 15, 214, 214, 213,
164149 /* 1930 */ 153, 154, 155, 156, 157, 16, 23, 139, 23, 130,
164150 /* 1940 */ 151, 25, 24, 142, 20, 16, 144, 1, 142, 130,
164151 /* 1950 */ 130, 61, 53, 53, 37, 151, 53, 53, 130, 116,
164152 /* 1960 */ 34, 1, 141, 5, 22, 115, 161, 75, 25, 68,
164153 /* 1970 */ 141, 41, 115, 68, 24, 20, 19, 131, 125, 67,
164154 /* 1980 */ 24, 22, 59, 22, 22, 96, 23, 22, 67, 22,
164155 /* 1990 */ 37, 23, 28, 149, 67, 22, 25, 23, 23, 23,
164156 /* 2000 */ 23, 22, 141, 97, 23, 23, 34, 22, 25, 116,
164157 /* 2010 */ 143, 75, 34, 88, 34, 75, 23, 86, 34, 22,
164158 /* 2020 */ 34, 93, 34, 24, 34, 25, 25, 23, 23, 23,
164159 /* 2030 */ 23, 44, 23, 25, 23, 22, 11, 22, 22, 25,
164160 /* 2040 */ 23, 23, 22, 22, 135, 15, 23, 25, 141, 141,
164161 /* 2050 */ 1, 141, 1, 319, 319, 319, 319, 319, 319, 319,
164162 /* 2060 */ 319, 319, 319, 141, 319, 319, 319, 319, 319, 319,
164163 /* 2070 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164164 /* 2080 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164165 /* 2090 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164166 /* 2100 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164167 /* 2110 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164168 /* 2120 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164169 /* 2130 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164170 /* 2140 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
@@ -164175,77 +164159,82 @@
164175 /* 2190 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164176 /* 2200 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164177 /* 2210 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164178 /* 2220 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164179 /* 2230 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164180 /* 2240 */ 319, 319, 319, 319, 319, 319, 319, 319, 319,
 
 
 
 
164181 };
164182 #define YY_SHIFT_COUNT (569)
164183 #define YY_SHIFT_MIN (0)
164184 #define YY_SHIFT_MAX (2051)
164185 static const unsigned short int yy_shift_ofst[] = {
164186 /* 0 */ 1648, 1477, 1272, 322, 322, 1, 1319, 1478, 1491, 1662,
164187 /* 10 */ 1662, 1662, 471, 0, 0, 214, 1093, 1662, 1662, 1662,
164188 /* 20 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
164189 /* 30 */ 271, 271, 1219, 1219, 216, 88, 1, 1, 1, 1,
164190 /* 40 */ 1, 40, 111, 258, 361, 469, 512, 583, 622, 693,
164191 /* 50 */ 732, 803, 842, 913, 1073, 1093, 1093, 1093, 1093, 1093,
164192 /* 60 */ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
164193 /* 70 */ 1093, 1093, 1093, 1113, 1093, 1216, 957, 957, 1635, 1662,
164194 /* 80 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
164195 /* 90 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
164196 /* 100 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
164197 /* 110 */ 1662, 1662, 1662, 1662, 1777, 1662, 1662, 1662, 1662, 1662,
164198 /* 120 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 137, 181,
164199 /* 130 */ 181, 181, 181, 181, 94, 430, 66, 65, 112, 366,
164200 /* 140 */ 533, 533, 740, 1261, 533, 533, 79, 79, 533, 412,
164201 /* 150 */ 412, 412, 77, 412, 123, 113, 113, 22, 22, 2064,
164202 /* 160 */ 2064, 328, 328, 328, 239, 468, 468, 468, 468, 1015,
164203 /* 170 */ 1015, 409, 366, 1129, 1186, 533, 533, 533, 533, 533,
164204 /* 180 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
164205 /* 190 */ 533, 533, 533, 533, 533, 969, 621, 621, 533, 642,
164206 /* 200 */ 788, 788, 1228, 1228, 822, 822, 67, 1274, 2064, 2064,
164207 /* 210 */ 2064, 2064, 2064, 2064, 2064, 1307, 954, 954, 585, 472,
164208 /* 220 */ 640, 387, 695, 538, 541, 700, 533, 533, 533, 533,
164209 /* 230 */ 533, 533, 533, 533, 533, 533, 222, 533, 533, 533,
164210 /* 240 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 1179,
164211 /* 250 */ 1179, 1179, 533, 533, 533, 565, 533, 533, 533, 916,
164212 /* 260 */ 1144, 533, 533, 1288, 533, 533, 533, 533, 533, 533,
164213 /* 270 */ 533, 533, 639, 1330, 209, 1076, 1076, 1076, 1076, 580,
164214 /* 280 */ 209, 209, 1313, 768, 917, 649, 1181, 1316, 405, 1316,
164215 /* 290 */ 1238, 249, 1181, 1181, 249, 1181, 405, 1238, 1369, 464,
164216 /* 300 */ 1259, 1012, 1012, 1012, 1368, 1368, 1368, 1368, 184, 184,
164217 /* 310 */ 1326, 904, 1287, 1480, 1703, 1703, 1625, 1625, 1729, 1729,
164218 /* 320 */ 1625, 1626, 1632, 1772, 1752, 1783, 1783, 1783, 1783, 1625,
164219 /* 330 */ 1788, 1659, 1632, 1632, 1659, 1772, 1752, 1659, 1752, 1659,
164220 /* 340 */ 1625, 1788, 1673, 1771, 1625, 1788, 1816, 1625, 1788, 1625,
164221 /* 350 */ 1788, 1816, 1731, 1731, 1731, 1780, 1827, 1827, 1816, 1731,
164222 /* 360 */ 1724, 1731, 1780, 1731, 1731, 1688, 1833, 1745, 1745, 1816,
164223 /* 370 */ 1625, 1776, 1776, 1792, 1792, 1732, 1734, 1859, 1625, 1728,
164224 /* 380 */ 1732, 1740, 1743, 1659, 1865, 1883, 1883, 1891, 1891, 1891,
164225 /* 390 */ 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064,
164226 /* 400 */ 2064, 2064, 2064, 2064, 2064, 207, 1095, 331, 620, 903,
164227 /* 410 */ 806, 1074, 1483, 1432, 1481, 1322, 1370, 1394, 1515, 1291,
164228 /* 420 */ 1546, 1547, 1557, 1595, 1598, 1599, 1434, 1453, 1618, 1462,
164229 /* 430 */ 1567, 1489, 1644, 1645, 1589, 1654, 1530, 1538, 1672, 1676,
164230 /* 440 */ 1579, 742, 1914, 1920, 1902, 1762, 1911, 1919, 1913, 1915,
164231 /* 450 */ 1798, 1789, 1809, 1916, 1916, 1918, 1801, 1924, 1802, 1929,
164232 /* 460 */ 1946, 1806, 1819, 1916, 1820, 1890, 1917, 1916, 1804, 1899,
164233 /* 470 */ 1900, 1903, 1904, 1828, 1843, 1926, 1821, 1960, 1958, 1942,
164234 /* 480 */ 1850, 1805, 1901, 1943, 1905, 1892, 1930, 1829, 1857, 1950,
164235 /* 490 */ 1955, 1957, 1846, 1853, 1959, 1912, 1961, 1962, 1963, 1965,
164236 /* 500 */ 1921, 1923, 1956, 1889, 1964, 1967, 1927, 1953, 1968, 1844,
164237 /* 510 */ 1973, 1974, 1975, 1976, 1971, 1977, 1979, 1906, 1861, 1981,
164238 /* 520 */ 1982, 1893, 1972, 1985, 1867, 1983, 1978, 1980, 1984, 1986,
164239 /* 530 */ 1925, 1936, 1931, 1987, 1940, 1928, 1988, 1993, 1997, 1999,
164240 /* 540 */ 2000, 2001, 1990, 2004, 1983, 2005, 2006, 2007, 2009, 2008,
164241 /* 550 */ 2011, 2013, 2025, 2015, 2016, 2017, 2018, 2020, 2021, 2014,
164242 /* 560 */ 1909, 1907, 1908, 1910, 1922, 2022, 2023, 2030, 2049, 2051,
 
164243 };
164244 #define YY_REDUCE_COUNT (404)
164245 #define YY_REDUCE_MIN (-271)
164246 #define YY_REDUCE_MAX (1716)
164247 static const short yy_reduce_ofst[] = {
164248 /* 0 */ -125, 733, 789, 241, 293, -123, -193, -191, -183, -187,
164249 /* 10 */ 166, 238, 133, -207, -199, -267, -176, -6, 204, 489,
164250 /* 20 */ 576, -175, 598, 686, 615, 725, 860, 778, 781, 857,
164251 /* 30 */ 616, 887, 87, 240, -192, 408, 626, 796, 843, 854,
@@ -164255,98 +164244,99 @@
164255 /* 70 */ -271, -271, -271, -271, -271, -271, -271, -271, 80, 83,
164256 /* 80 */ 313, 886, 888, 996, 1034, 1059, 1081, 1100, 1117, 1152,
164257 /* 90 */ 1155, 1163, 1165, 1167, 1169, 1172, 1180, 1182, 1184, 1198,
164258 /* 100 */ 1200, 1213, 1215, 1225, 1227, 1252, 1254, 1264, 1299, 1303,
164259 /* 110 */ 1308, 1312, 1325, 1328, 1337, 1340, 1343, 1371, 1373, 1384,
164260 /* 120 */ 1386, 1411, 1420, 1424, 1426, 1458, 1470, 1473, -271, -271,
164261 /* 130 */ -271, -271, -271, -271, -271, -271, -271, 138, 459, 396,
164262 /* 140 */ -158, 470, 302, -212, 521, 201, -195, -92, 559, 630,
164263 /* 150 */ 632, 630, -271, 632, 901, 63, 407, -271, -271, -271,
164264 /* 160 */ -271, 161, 161, 161, 251, 335, 847, 960, 980, 537,
164265 /* 170 */ 588, 618, 628, 688, 688, -166, -161, 674, 790, 794,
164266 /* 180 */ 799, 851, 852, -122, 680, -120, 995, 1038, 415, 1051,
164267 /* 190 */ 893, 798, 962, 400, 1086, 779, 923, 924, 263, 1041,
164268 /* 200 */ 979, 990, 1083, 1097, 1031, 1194, 362, 994, 1139, 1005,
164269 /* 210 */ 1037, 1202, 1205, 1195, 1210, -194, 56, 185, -135, 232,
164270 /* 220 */ 522, 560, 601, 617, 669, 683, 711, 856, 908, 941,
164271 /* 230 */ 1048, 1101, 1147, 1257, 1262, 1265, 392, 1292, 1333, 1339,
164272 /* 240 */ 1342, 1346, 1350, 1359, 1374, 1418, 1421, 1436, 1437, 593,
164273 /* 250 */ 755, 770, 997, 1459, 1463, 1209, 1499, 1507, 1509, 1132,
164274 /* 260 */ 1243, 1510, 1511, 1440, 1512, 560, 1514, 1516, 1517, 1518,
164275 /* 270 */ 1519, 1520, 1427, 1429, 1466, 1464, 1465, 1467, 1468, 1209,
164276 /* 280 */ 1466, 1466, 1471, 1503, 1533, 1428, 1456, 1461, 1485, 1469,
164277 /* 290 */ 1438, 1486, 1474, 1476, 1488, 1479, 1492, 1445, 1524, 1525,
164278 /* 300 */ 1523, 1521, 1536, 1539, 1498, 1500, 1501, 1502, 1490, 1522,
164279 /* 310 */ 1484, 1527, 1531, 1569, 1487, 1496, 1570, 1573, 1504, 1506,
164280 /* 320 */ 1575, 1526, 1513, 1532, 1571, 1566, 1574, 1577, 1583, 1604,
164281 /* 330 */ 1608, 1576, 1540, 1549, 1578, 1553, 1591, 1580, 1593, 1582,
164282 /* 340 */ 1629, 1631, 1542, 1545, 1637, 1636, 1619, 1639, 1642, 1643,
164283 /* 350 */ 1646, 1621, 1633, 1634, 1638, 1620, 1630, 1640, 1641, 1647,
164284 /* 360 */ 1649, 1650, 1628, 1652, 1653, 1548, 1554, 1581, 1584, 1651,
164285 /* 370 */ 1661, 1556, 1558, 1611, 1613, 1655, 1657, 1605, 1685, 1609,
164286 /* 380 */ 1658, 1656, 1660, 1663, 1690, 1705, 1706, 1709, 1710, 1711,
164287 /* 390 */ 1607, 1610, 1612, 1704, 1701, 1702, 1707, 1708, 1712, 1694,
164288 /* 400 */ 1695, 1713, 1714, 1716, 1715,
164289 };
164290 static const YYACTIONTYPE yy_default[] = {
164291 /* 0 */ 1637, 1637, 1637, 1465, 1232, 1343, 1232, 1232, 1232, 1465,
164292 /* 10 */ 1465, 1465, 1232, 1373, 1373, 1518, 1265, 1232, 1232, 1232,
164293 /* 20 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1464, 1232, 1232,
164294 /* 30 */ 1232, 1232, 1553, 1553, 1232, 1232, 1232, 1232, 1232, 1232,
164295 /* 40 */ 1232, 1232, 1382, 1232, 1389, 1232, 1232, 1232, 1232, 1232,
164296 /* 50 */ 1466, 1467, 1232, 1232, 1232, 1517, 1519, 1482, 1396, 1395,
164297 /* 60 */ 1394, 1393, 1500, 1361, 1387, 1380, 1384, 1460, 1461, 1459,
164298 /* 70 */ 1463, 1467, 1466, 1232, 1383, 1430, 1444, 1429, 1232, 1232,
164299 /* 80 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164300 /* 90 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164301 /* 100 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164302 /* 110 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164303 /* 120 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1438, 1443,
164304 /* 130 */ 1450, 1442, 1439, 1432, 1431, 1433, 1434, 1232, 1232, 1256,
164305 /* 140 */ 1232, 1232, 1253, 1307, 1232, 1232, 1232, 1232, 1232, 1537,
164306 /* 150 */ 1536, 1232, 1435, 1232, 1265, 1424, 1423, 1447, 1436, 1446,
164307 /* 160 */ 1445, 1525, 1589, 1588, 1483, 1232, 1232, 1232, 1232, 1232,
164308 /* 170 */ 1232, 1553, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164309 /* 180 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164310 /* 190 */ 1232, 1232, 1232, 1232, 1232, 1363, 1553, 1553, 1232, 1265,
164311 /* 200 */ 1553, 1553, 1364, 1364, 1261, 1261, 1367, 1232, 1532, 1334,
164312 /* 210 */ 1334, 1334, 1334, 1343, 1334, 1232, 1232, 1232, 1232, 1232,
164313 /* 220 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164314 /* 230 */ 1522, 1520, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164315 /* 240 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164316 /* 250 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1339,
164317 /* 260 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164318 /* 270 */ 1232, 1582, 1232, 1495, 1321, 1339, 1339, 1339, 1339, 1341,
164319 /* 280 */ 1322, 1320, 1333, 1266, 1239, 1629, 1399, 1388, 1340, 1388,
164320 /* 290 */ 1626, 1386, 1399, 1399, 1386, 1399, 1340, 1626, 1282, 1605,
164321 /* 300 */ 1277, 1373, 1373, 1373, 1363, 1363, 1363, 1363, 1367, 1367,
164322 /* 310 */ 1462, 1340, 1333, 1232, 1629, 1629, 1349, 1349, 1628, 1628,
164323 /* 320 */ 1349, 1483, 1613, 1408, 1310, 1316, 1316, 1316, 1316, 1349,
164324 /* 330 */ 1250, 1386, 1613, 1613, 1386, 1408, 1310, 1386, 1310, 1386,
164325 /* 340 */ 1349, 1250, 1499, 1623, 1349, 1250, 1473, 1349, 1250, 1349,
164326 /* 350 */ 1250, 1473, 1308, 1308, 1308, 1297, 1232, 1232, 1473, 1308,
164327 /* 360 */ 1282, 1308, 1297, 1308, 1308, 1571, 1232, 1477, 1477, 1473,
164328 /* 370 */ 1349, 1563, 1563, 1376, 1376, 1381, 1367, 1468, 1349, 1232,
164329 /* 380 */ 1381, 1379, 1377, 1386, 1300, 1585, 1585, 1581, 1581, 1581,
164330 /* 390 */ 1634, 1634, 1532, 1598, 1265, 1265, 1265, 1265, 1598, 1284,
164331 /* 400 */ 1284, 1266, 1266, 1265, 1598, 1232, 1232, 1232, 1232, 1232,
164332 /* 410 */ 1232, 1593, 1232, 1527, 1484, 1353, 1232, 1232, 1232, 1232,
164333 /* 420 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164334 /* 430 */ 1538, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164335 /* 440 */ 1232, 1413, 1232, 1235, 1529, 1232, 1232, 1232, 1232, 1232,
164336 /* 450 */ 1232, 1232, 1232, 1390, 1391, 1354, 1232, 1232, 1232, 1232,
164337 /* 460 */ 1232, 1232, 1232, 1405, 1232, 1232, 1232, 1400, 1232, 1232,
164338 /* 470 */ 1232, 1232, 1232, 1232, 1232, 1232, 1625, 1232, 1232, 1232,
164339 /* 480 */ 1232, 1232, 1232, 1498, 1497, 1232, 1232, 1351, 1232, 1232,
164340 /* 490 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164341 /* 500 */ 1232, 1280, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164342 /* 510 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164343 /* 520 */ 1232, 1232, 1232, 1232, 1232, 1378, 1232, 1232, 1232, 1232,
164344 /* 530 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
164345 /* 540 */ 1568, 1368, 1232, 1232, 1616, 1232, 1232, 1232, 1232, 1232,
164346 /* 550 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1609,
164347 /* 560 */ 1324, 1415, 1232, 1414, 1418, 1254, 1232, 1244, 1232, 1232,
 
164348 };
164349 /********** End of lemon-generated parsing tables *****************************/
164350
164351 /* The next table maps tokens (terminal symbols) into fallback tokens.
164352 ** If a construct like the following:
@@ -165170,204 +165160,206 @@
165170 /* 204 */ "expr ::= expr likeop expr ESCAPE expr",
165171 /* 205 */ "expr ::= expr ISNULL|NOTNULL",
165172 /* 206 */ "expr ::= expr NOT NULL",
165173 /* 207 */ "expr ::= expr IS expr",
165174 /* 208 */ "expr ::= expr IS NOT expr",
165175 /* 209 */ "expr ::= NOT expr",
165176 /* 210 */ "expr ::= BITNOT expr",
165177 /* 211 */ "expr ::= PLUS|MINUS expr",
165178 /* 212 */ "expr ::= expr PTR expr",
165179 /* 213 */ "between_op ::= BETWEEN",
165180 /* 214 */ "between_op ::= NOT BETWEEN",
165181 /* 215 */ "expr ::= expr between_op expr AND expr",
165182 /* 216 */ "in_op ::= IN",
165183 /* 217 */ "in_op ::= NOT IN",
165184 /* 218 */ "expr ::= expr in_op LP exprlist RP",
165185 /* 219 */ "expr ::= LP select RP",
165186 /* 220 */ "expr ::= expr in_op LP select RP",
165187 /* 221 */ "expr ::= expr in_op nm dbnm paren_exprlist",
165188 /* 222 */ "expr ::= EXISTS LP select RP",
165189 /* 223 */ "expr ::= CASE case_operand case_exprlist case_else END",
165190 /* 224 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
165191 /* 225 */ "case_exprlist ::= WHEN expr THEN expr",
165192 /* 226 */ "case_else ::= ELSE expr",
165193 /* 227 */ "case_else ::=",
165194 /* 228 */ "case_operand ::= expr",
165195 /* 229 */ "case_operand ::=",
165196 /* 230 */ "exprlist ::=",
165197 /* 231 */ "nexprlist ::= nexprlist COMMA expr",
165198 /* 232 */ "nexprlist ::= expr",
165199 /* 233 */ "paren_exprlist ::=",
165200 /* 234 */ "paren_exprlist ::= LP exprlist RP",
165201 /* 235 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
165202 /* 236 */ "uniqueflag ::= UNIQUE",
165203 /* 237 */ "uniqueflag ::=",
165204 /* 238 */ "eidlist_opt ::=",
165205 /* 239 */ "eidlist_opt ::= LP eidlist RP",
165206 /* 240 */ "eidlist ::= eidlist COMMA nm collate sortorder",
165207 /* 241 */ "eidlist ::= nm collate sortorder",
165208 /* 242 */ "collate ::=",
165209 /* 243 */ "collate ::= COLLATE ID|STRING",
165210 /* 244 */ "cmd ::= DROP INDEX ifexists fullname",
165211 /* 245 */ "cmd ::= VACUUM vinto",
165212 /* 246 */ "cmd ::= VACUUM nm vinto",
165213 /* 247 */ "vinto ::= INTO expr",
165214 /* 248 */ "vinto ::=",
165215 /* 249 */ "cmd ::= PRAGMA nm dbnm",
165216 /* 250 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
165217 /* 251 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
165218 /* 252 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
165219 /* 253 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
165220 /* 254 */ "plus_num ::= PLUS INTEGER|FLOAT",
165221 /* 255 */ "minus_num ::= MINUS INTEGER|FLOAT",
165222 /* 256 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
165223 /* 257 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
165224 /* 258 */ "trigger_time ::= BEFORE|AFTER",
165225 /* 259 */ "trigger_time ::= INSTEAD OF",
165226 /* 260 */ "trigger_time ::=",
165227 /* 261 */ "trigger_event ::= DELETE|INSERT",
165228 /* 262 */ "trigger_event ::= UPDATE",
165229 /* 263 */ "trigger_event ::= UPDATE OF idlist",
165230 /* 264 */ "when_clause ::=",
165231 /* 265 */ "when_clause ::= WHEN expr",
165232 /* 266 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
165233 /* 267 */ "trigger_cmd_list ::= trigger_cmd SEMI",
165234 /* 268 */ "trnm ::= nm DOT nm",
165235 /* 269 */ "tridxby ::= INDEXED BY nm",
165236 /* 270 */ "tridxby ::= NOT INDEXED",
165237 /* 271 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
165238 /* 272 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
165239 /* 273 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
165240 /* 274 */ "trigger_cmd ::= scanpt select scanpt",
165241 /* 275 */ "expr ::= RAISE LP IGNORE RP",
165242 /* 276 */ "expr ::= RAISE LP raisetype COMMA nm RP",
165243 /* 277 */ "raisetype ::= ROLLBACK",
165244 /* 278 */ "raisetype ::= ABORT",
165245 /* 279 */ "raisetype ::= FAIL",
165246 /* 280 */ "cmd ::= DROP TRIGGER ifexists fullname",
165247 /* 281 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
165248 /* 282 */ "cmd ::= DETACH database_kw_opt expr",
165249 /* 283 */ "key_opt ::=",
165250 /* 284 */ "key_opt ::= KEY expr",
165251 /* 285 */ "cmd ::= REINDEX",
165252 /* 286 */ "cmd ::= REINDEX nm dbnm",
165253 /* 287 */ "cmd ::= ANALYZE",
165254 /* 288 */ "cmd ::= ANALYZE nm dbnm",
165255 /* 289 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
165256 /* 290 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
165257 /* 291 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
165258 /* 292 */ "add_column_fullname ::= fullname",
165259 /* 293 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
165260 /* 294 */ "cmd ::= create_vtab",
165261 /* 295 */ "cmd ::= create_vtab LP vtabarglist RP",
165262 /* 296 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
165263 /* 297 */ "vtabarg ::=",
165264 /* 298 */ "vtabargtoken ::= ANY",
165265 /* 299 */ "vtabargtoken ::= lp anylist RP",
165266 /* 300 */ "lp ::= LP",
165267 /* 301 */ "with ::= WITH wqlist",
165268 /* 302 */ "with ::= WITH RECURSIVE wqlist",
165269 /* 303 */ "wqas ::= AS",
165270 /* 304 */ "wqas ::= AS MATERIALIZED",
165271 /* 305 */ "wqas ::= AS NOT MATERIALIZED",
165272 /* 306 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
165273 /* 307 */ "wqlist ::= wqitem",
165274 /* 308 */ "wqlist ::= wqlist COMMA wqitem",
165275 /* 309 */ "windowdefn_list ::= windowdefn",
165276 /* 310 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
165277 /* 311 */ "windowdefn ::= nm AS LP window RP",
165278 /* 312 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
165279 /* 313 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
165280 /* 314 */ "window ::= ORDER BY sortlist frame_opt",
165281 /* 315 */ "window ::= nm ORDER BY sortlist frame_opt",
165282 /* 316 */ "window ::= frame_opt",
165283 /* 317 */ "window ::= nm frame_opt",
165284 /* 318 */ "frame_opt ::=",
165285 /* 319 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
165286 /* 320 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
165287 /* 321 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
165288 /* 322 */ "frame_bound_s ::= frame_bound",
165289 /* 323 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
165290 /* 324 */ "frame_bound_e ::= frame_bound",
165291 /* 325 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
165292 /* 326 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
165293 /* 327 */ "frame_bound ::= CURRENT ROW",
165294 /* 328 */ "frame_exclude_opt ::=",
165295 /* 329 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
165296 /* 330 */ "frame_exclude ::= NO OTHERS",
165297 /* 331 */ "frame_exclude ::= CURRENT ROW",
165298 /* 332 */ "frame_exclude ::= GROUP|TIES",
165299 /* 333 */ "window_clause ::= WINDOW windowdefn_list",
165300 /* 334 */ "filter_over ::= filter_clause over_clause",
165301 /* 335 */ "filter_over ::= over_clause",
165302 /* 336 */ "filter_over ::= filter_clause",
165303 /* 337 */ "over_clause ::= OVER LP window RP",
165304 /* 338 */ "over_clause ::= OVER nm",
165305 /* 339 */ "filter_clause ::= FILTER LP WHERE expr RP",
165306 /* 340 */ "input ::= cmdlist",
165307 /* 341 */ "cmdlist ::= cmdlist ecmd",
165308 /* 342 */ "cmdlist ::= ecmd",
165309 /* 343 */ "ecmd ::= SEMI",
165310 /* 344 */ "ecmd ::= cmdx SEMI",
165311 /* 345 */ "ecmd ::= explain cmdx SEMI",
165312 /* 346 */ "trans_opt ::=",
165313 /* 347 */ "trans_opt ::= TRANSACTION",
165314 /* 348 */ "trans_opt ::= TRANSACTION nm",
165315 /* 349 */ "savepoint_opt ::= SAVEPOINT",
165316 /* 350 */ "savepoint_opt ::=",
165317 /* 351 */ "cmd ::= create_table create_table_args",
165318 /* 352 */ "table_option_set ::= table_option",
165319 /* 353 */ "columnlist ::= columnlist COMMA columnname carglist",
165320 /* 354 */ "columnlist ::= columnname carglist",
165321 /* 355 */ "nm ::= ID|INDEXED",
165322 /* 356 */ "nm ::= STRING",
165323 /* 357 */ "nm ::= JOIN_KW",
165324 /* 358 */ "typetoken ::= typename",
165325 /* 359 */ "typename ::= ID|STRING",
165326 /* 360 */ "signed ::= plus_num",
165327 /* 361 */ "signed ::= minus_num",
165328 /* 362 */ "carglist ::= carglist ccons",
165329 /* 363 */ "carglist ::=",
165330 /* 364 */ "ccons ::= NULL onconf",
165331 /* 365 */ "ccons ::= GENERATED ALWAYS AS generated",
165332 /* 366 */ "ccons ::= AS generated",
165333 /* 367 */ "conslist_opt ::= COMMA conslist",
165334 /* 368 */ "conslist ::= conslist tconscomma tcons",
165335 /* 369 */ "conslist ::= tcons",
165336 /* 370 */ "tconscomma ::=",
165337 /* 371 */ "defer_subclause_opt ::= defer_subclause",
165338 /* 372 */ "resolvetype ::= raisetype",
165339 /* 373 */ "selectnowith ::= oneselect",
165340 /* 374 */ "oneselect ::= values",
165341 /* 375 */ "sclp ::= selcollist COMMA",
165342 /* 376 */ "as ::= ID|STRING",
165343 /* 377 */ "indexed_opt ::= indexed_by",
165344 /* 378 */ "returning ::=",
165345 /* 379 */ "expr ::= term",
165346 /* 380 */ "likeop ::= LIKE_KW|MATCH",
165347 /* 381 */ "exprlist ::= nexprlist",
165348 /* 382 */ "nmnum ::= plus_num",
165349 /* 383 */ "nmnum ::= nm",
165350 /* 384 */ "nmnum ::= ON",
165351 /* 385 */ "nmnum ::= DELETE",
165352 /* 386 */ "nmnum ::= DEFAULT",
165353 /* 387 */ "plus_num ::= INTEGER|FLOAT",
165354 /* 388 */ "foreach_clause ::=",
165355 /* 389 */ "foreach_clause ::= FOR EACH ROW",
165356 /* 390 */ "trnm ::= nm",
165357 /* 391 */ "tridxby ::=",
165358 /* 392 */ "database_kw_opt ::= DATABASE",
165359 /* 393 */ "database_kw_opt ::=",
165360 /* 394 */ "kwcolumn_opt ::=",
165361 /* 395 */ "kwcolumn_opt ::= COLUMNKW",
165362 /* 396 */ "vtabarglist ::= vtabarg",
165363 /* 397 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
165364 /* 398 */ "vtabarg ::= vtabarg vtabargtoken",
165365 /* 399 */ "anylist ::=",
165366 /* 400 */ "anylist ::= anylist LP anylist RP",
165367 /* 401 */ "anylist ::= anylist ANY",
165368 /* 402 */ "with ::=",
 
 
165369 };
165370 #endif /* NDEBUG */
165371
165372
165373 #if YYSTACKDEPTH<=0
@@ -166079,204 +166071,206 @@
166079 217, /* (204) expr ::= expr likeop expr ESCAPE expr */
166080 217, /* (205) expr ::= expr ISNULL|NOTNULL */
166081 217, /* (206) expr ::= expr NOT NULL */
166082 217, /* (207) expr ::= expr IS expr */
166083 217, /* (208) expr ::= expr IS NOT expr */
166084 217, /* (209) expr ::= NOT expr */
166085 217, /* (210) expr ::= BITNOT expr */
166086 217, /* (211) expr ::= PLUS|MINUS expr */
166087 217, /* (212) expr ::= expr PTR expr */
166088 275, /* (213) between_op ::= BETWEEN */
166089 275, /* (214) between_op ::= NOT BETWEEN */
166090 217, /* (215) expr ::= expr between_op expr AND expr */
166091 276, /* (216) in_op ::= IN */
166092 276, /* (217) in_op ::= NOT IN */
166093 217, /* (218) expr ::= expr in_op LP exprlist RP */
166094 217, /* (219) expr ::= LP select RP */
166095 217, /* (220) expr ::= expr in_op LP select RP */
166096 217, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */
166097 217, /* (222) expr ::= EXISTS LP select RP */
166098 217, /* (223) expr ::= CASE case_operand case_exprlist case_else END */
166099 279, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */
166100 279, /* (225) case_exprlist ::= WHEN expr THEN expr */
166101 280, /* (226) case_else ::= ELSE expr */
166102 280, /* (227) case_else ::= */
166103 278, /* (228) case_operand ::= expr */
166104 278, /* (229) case_operand ::= */
166105 261, /* (230) exprlist ::= */
166106 253, /* (231) nexprlist ::= nexprlist COMMA expr */
166107 253, /* (232) nexprlist ::= expr */
166108 277, /* (233) paren_exprlist ::= */
166109 277, /* (234) paren_exprlist ::= LP exprlist RP */
166110 190, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
166111 281, /* (236) uniqueflag ::= UNIQUE */
166112 281, /* (237) uniqueflag ::= */
166113 221, /* (238) eidlist_opt ::= */
166114 221, /* (239) eidlist_opt ::= LP eidlist RP */
166115 232, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */
166116 232, /* (241) eidlist ::= nm collate sortorder */
166117 282, /* (242) collate ::= */
166118 282, /* (243) collate ::= COLLATE ID|STRING */
166119 190, /* (244) cmd ::= DROP INDEX ifexists fullname */
166120 190, /* (245) cmd ::= VACUUM vinto */
166121 190, /* (246) cmd ::= VACUUM nm vinto */
166122 283, /* (247) vinto ::= INTO expr */
166123 283, /* (248) vinto ::= */
166124 190, /* (249) cmd ::= PRAGMA nm dbnm */
166125 190, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */
166126 190, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */
166127 190, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */
166128 190, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */
166129 211, /* (254) plus_num ::= PLUS INTEGER|FLOAT */
166130 212, /* (255) minus_num ::= MINUS INTEGER|FLOAT */
166131 190, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
166132 285, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
166133 287, /* (258) trigger_time ::= BEFORE|AFTER */
166134 287, /* (259) trigger_time ::= INSTEAD OF */
166135 287, /* (260) trigger_time ::= */
166136 288, /* (261) trigger_event ::= DELETE|INSERT */
166137 288, /* (262) trigger_event ::= UPDATE */
166138 288, /* (263) trigger_event ::= UPDATE OF idlist */
166139 290, /* (264) when_clause ::= */
166140 290, /* (265) when_clause ::= WHEN expr */
166141 286, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
166142 286, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */
166143 292, /* (268) trnm ::= nm DOT nm */
166144 293, /* (269) tridxby ::= INDEXED BY nm */
166145 293, /* (270) tridxby ::= NOT INDEXED */
166146 291, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
166147 291, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
166148 291, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
166149 291, /* (274) trigger_cmd ::= scanpt select scanpt */
166150 217, /* (275) expr ::= RAISE LP IGNORE RP */
166151 217, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */
166152 236, /* (277) raisetype ::= ROLLBACK */
166153 236, /* (278) raisetype ::= ABORT */
166154 236, /* (279) raisetype ::= FAIL */
166155 190, /* (280) cmd ::= DROP TRIGGER ifexists fullname */
166156 190, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
166157 190, /* (282) cmd ::= DETACH database_kw_opt expr */
166158 295, /* (283) key_opt ::= */
166159 295, /* (284) key_opt ::= KEY expr */
166160 190, /* (285) cmd ::= REINDEX */
166161 190, /* (286) cmd ::= REINDEX nm dbnm */
166162 190, /* (287) cmd ::= ANALYZE */
166163 190, /* (288) cmd ::= ANALYZE nm dbnm */
166164 190, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */
166165 190, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
166166 190, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
166167 296, /* (292) add_column_fullname ::= fullname */
166168 190, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
166169 190, /* (294) cmd ::= create_vtab */
166170 190, /* (295) cmd ::= create_vtab LP vtabarglist RP */
166171 298, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
166172 300, /* (297) vtabarg ::= */
166173 301, /* (298) vtabargtoken ::= ANY */
166174 301, /* (299) vtabargtoken ::= lp anylist RP */
166175 302, /* (300) lp ::= LP */
166176 266, /* (301) with ::= WITH wqlist */
166177 266, /* (302) with ::= WITH RECURSIVE wqlist */
166178 305, /* (303) wqas ::= AS */
166179 305, /* (304) wqas ::= AS MATERIALIZED */
166180 305, /* (305) wqas ::= AS NOT MATERIALIZED */
166181 304, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
166182 241, /* (307) wqlist ::= wqitem */
166183 241, /* (308) wqlist ::= wqlist COMMA wqitem */
166184 306, /* (309) windowdefn_list ::= windowdefn */
166185 306, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */
166186 307, /* (311) windowdefn ::= nm AS LP window RP */
166187 308, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
166188 308, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
166189 308, /* (314) window ::= ORDER BY sortlist frame_opt */
166190 308, /* (315) window ::= nm ORDER BY sortlist frame_opt */
166191 308, /* (316) window ::= frame_opt */
166192 308, /* (317) window ::= nm frame_opt */
166193 309, /* (318) frame_opt ::= */
166194 309, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
166195 309, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
166196 313, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
166197 315, /* (322) frame_bound_s ::= frame_bound */
166198 315, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
166199 316, /* (324) frame_bound_e ::= frame_bound */
166200 316, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
166201 314, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
166202 314, /* (327) frame_bound ::= CURRENT ROW */
166203 317, /* (328) frame_exclude_opt ::= */
166204 317, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
166205 318, /* (330) frame_exclude ::= NO OTHERS */
166206 318, /* (331) frame_exclude ::= CURRENT ROW */
166207 318, /* (332) frame_exclude ::= GROUP|TIES */
166208 251, /* (333) window_clause ::= WINDOW windowdefn_list */
166209 273, /* (334) filter_over ::= filter_clause over_clause */
166210 273, /* (335) filter_over ::= over_clause */
166211 273, /* (336) filter_over ::= filter_clause */
166212 312, /* (337) over_clause ::= OVER LP window RP */
166213 312, /* (338) over_clause ::= OVER nm */
166214 311, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
166215 185, /* (340) input ::= cmdlist */
166216 186, /* (341) cmdlist ::= cmdlist ecmd */
166217 186, /* (342) cmdlist ::= ecmd */
166218 187, /* (343) ecmd ::= SEMI */
166219 187, /* (344) ecmd ::= cmdx SEMI */
166220 187, /* (345) ecmd ::= explain cmdx SEMI */
166221 192, /* (346) trans_opt ::= */
166222 192, /* (347) trans_opt ::= TRANSACTION */
166223 192, /* (348) trans_opt ::= TRANSACTION nm */
166224 194, /* (349) savepoint_opt ::= SAVEPOINT */
166225 194, /* (350) savepoint_opt ::= */
166226 190, /* (351) cmd ::= create_table create_table_args */
166227 203, /* (352) table_option_set ::= table_option */
166228 201, /* (353) columnlist ::= columnlist COMMA columnname carglist */
166229 201, /* (354) columnlist ::= columnname carglist */
166230 193, /* (355) nm ::= ID|INDEXED */
166231 193, /* (356) nm ::= STRING */
166232 193, /* (357) nm ::= JOIN_KW */
166233 208, /* (358) typetoken ::= typename */
166234 209, /* (359) typename ::= ID|STRING */
166235 210, /* (360) signed ::= plus_num */
166236 210, /* (361) signed ::= minus_num */
166237 207, /* (362) carglist ::= carglist ccons */
166238 207, /* (363) carglist ::= */
166239 215, /* (364) ccons ::= NULL onconf */
166240 215, /* (365) ccons ::= GENERATED ALWAYS AS generated */
166241 215, /* (366) ccons ::= AS generated */
166242 202, /* (367) conslist_opt ::= COMMA conslist */
166243 228, /* (368) conslist ::= conslist tconscomma tcons */
166244 228, /* (369) conslist ::= tcons */
166245 229, /* (370) tconscomma ::= */
166246 233, /* (371) defer_subclause_opt ::= defer_subclause */
166247 235, /* (372) resolvetype ::= raisetype */
166248 239, /* (373) selectnowith ::= oneselect */
166249 240, /* (374) oneselect ::= values */
166250 254, /* (375) sclp ::= selcollist COMMA */
166251 255, /* (376) as ::= ID|STRING */
166252 264, /* (377) indexed_opt ::= indexed_by */
166253 272, /* (378) returning ::= */
166254 217, /* (379) expr ::= term */
166255 274, /* (380) likeop ::= LIKE_KW|MATCH */
166256 261, /* (381) exprlist ::= nexprlist */
166257 284, /* (382) nmnum ::= plus_num */
166258 284, /* (383) nmnum ::= nm */
166259 284, /* (384) nmnum ::= ON */
166260 284, /* (385) nmnum ::= DELETE */
166261 284, /* (386) nmnum ::= DEFAULT */
166262 211, /* (387) plus_num ::= INTEGER|FLOAT */
166263 289, /* (388) foreach_clause ::= */
166264 289, /* (389) foreach_clause ::= FOR EACH ROW */
166265 292, /* (390) trnm ::= nm */
166266 293, /* (391) tridxby ::= */
166267 294, /* (392) database_kw_opt ::= DATABASE */
166268 294, /* (393) database_kw_opt ::= */
166269 297, /* (394) kwcolumn_opt ::= */
166270 297, /* (395) kwcolumn_opt ::= COLUMNKW */
166271 299, /* (396) vtabarglist ::= vtabarg */
166272 299, /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */
166273 300, /* (398) vtabarg ::= vtabarg vtabargtoken */
166274 303, /* (399) anylist ::= */
166275 303, /* (400) anylist ::= anylist LP anylist RP */
166276 303, /* (401) anylist ::= anylist ANY */
166277 266, /* (402) with ::= */
 
 
166278 };
166279
166280 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
166281 ** of symbols on the right-hand side of that rule. */
166282 static const signed char yyRuleInfoNRhs[] = {
@@ -166487,204 +166481,206 @@
166487 -5, /* (204) expr ::= expr likeop expr ESCAPE expr */
166488 -2, /* (205) expr ::= expr ISNULL|NOTNULL */
166489 -3, /* (206) expr ::= expr NOT NULL */
166490 -3, /* (207) expr ::= expr IS expr */
166491 -4, /* (208) expr ::= expr IS NOT expr */
166492 -2, /* (209) expr ::= NOT expr */
166493 -2, /* (210) expr ::= BITNOT expr */
166494 -2, /* (211) expr ::= PLUS|MINUS expr */
166495 -3, /* (212) expr ::= expr PTR expr */
166496 -1, /* (213) between_op ::= BETWEEN */
166497 -2, /* (214) between_op ::= NOT BETWEEN */
166498 -5, /* (215) expr ::= expr between_op expr AND expr */
166499 -1, /* (216) in_op ::= IN */
166500 -2, /* (217) in_op ::= NOT IN */
166501 -5, /* (218) expr ::= expr in_op LP exprlist RP */
166502 -3, /* (219) expr ::= LP select RP */
166503 -5, /* (220) expr ::= expr in_op LP select RP */
166504 -5, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */
166505 -4, /* (222) expr ::= EXISTS LP select RP */
166506 -5, /* (223) expr ::= CASE case_operand case_exprlist case_else END */
166507 -5, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */
166508 -4, /* (225) case_exprlist ::= WHEN expr THEN expr */
166509 -2, /* (226) case_else ::= ELSE expr */
166510 0, /* (227) case_else ::= */
166511 -1, /* (228) case_operand ::= expr */
166512 0, /* (229) case_operand ::= */
166513 0, /* (230) exprlist ::= */
166514 -3, /* (231) nexprlist ::= nexprlist COMMA expr */
166515 -1, /* (232) nexprlist ::= expr */
166516 0, /* (233) paren_exprlist ::= */
166517 -3, /* (234) paren_exprlist ::= LP exprlist RP */
166518 -12, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
166519 -1, /* (236) uniqueflag ::= UNIQUE */
166520 0, /* (237) uniqueflag ::= */
166521 0, /* (238) eidlist_opt ::= */
166522 -3, /* (239) eidlist_opt ::= LP eidlist RP */
166523 -5, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */
166524 -3, /* (241) eidlist ::= nm collate sortorder */
166525 0, /* (242) collate ::= */
166526 -2, /* (243) collate ::= COLLATE ID|STRING */
166527 -4, /* (244) cmd ::= DROP INDEX ifexists fullname */
166528 -2, /* (245) cmd ::= VACUUM vinto */
166529 -3, /* (246) cmd ::= VACUUM nm vinto */
166530 -2, /* (247) vinto ::= INTO expr */
166531 0, /* (248) vinto ::= */
166532 -3, /* (249) cmd ::= PRAGMA nm dbnm */
166533 -5, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */
166534 -6, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */
166535 -5, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */
166536 -6, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */
166537 -2, /* (254) plus_num ::= PLUS INTEGER|FLOAT */
166538 -2, /* (255) minus_num ::= MINUS INTEGER|FLOAT */
166539 -5, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
166540 -11, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
166541 -1, /* (258) trigger_time ::= BEFORE|AFTER */
166542 -2, /* (259) trigger_time ::= INSTEAD OF */
166543 0, /* (260) trigger_time ::= */
166544 -1, /* (261) trigger_event ::= DELETE|INSERT */
166545 -1, /* (262) trigger_event ::= UPDATE */
166546 -3, /* (263) trigger_event ::= UPDATE OF idlist */
166547 0, /* (264) when_clause ::= */
166548 -2, /* (265) when_clause ::= WHEN expr */
166549 -3, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
166550 -2, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */
166551 -3, /* (268) trnm ::= nm DOT nm */
166552 -3, /* (269) tridxby ::= INDEXED BY nm */
166553 -2, /* (270) tridxby ::= NOT INDEXED */
166554 -9, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
166555 -8, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
166556 -6, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
166557 -3, /* (274) trigger_cmd ::= scanpt select scanpt */
166558 -4, /* (275) expr ::= RAISE LP IGNORE RP */
166559 -6, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */
166560 -1, /* (277) raisetype ::= ROLLBACK */
166561 -1, /* (278) raisetype ::= ABORT */
166562 -1, /* (279) raisetype ::= FAIL */
166563 -4, /* (280) cmd ::= DROP TRIGGER ifexists fullname */
166564 -6, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
166565 -3, /* (282) cmd ::= DETACH database_kw_opt expr */
166566 0, /* (283) key_opt ::= */
166567 -2, /* (284) key_opt ::= KEY expr */
166568 -1, /* (285) cmd ::= REINDEX */
166569 -3, /* (286) cmd ::= REINDEX nm dbnm */
166570 -1, /* (287) cmd ::= ANALYZE */
166571 -3, /* (288) cmd ::= ANALYZE nm dbnm */
166572 -6, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */
166573 -7, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
166574 -6, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
166575 -1, /* (292) add_column_fullname ::= fullname */
166576 -8, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
166577 -1, /* (294) cmd ::= create_vtab */
166578 -4, /* (295) cmd ::= create_vtab LP vtabarglist RP */
166579 -8, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
166580 0, /* (297) vtabarg ::= */
166581 -1, /* (298) vtabargtoken ::= ANY */
166582 -3, /* (299) vtabargtoken ::= lp anylist RP */
166583 -1, /* (300) lp ::= LP */
166584 -2, /* (301) with ::= WITH wqlist */
166585 -3, /* (302) with ::= WITH RECURSIVE wqlist */
166586 -1, /* (303) wqas ::= AS */
166587 -2, /* (304) wqas ::= AS MATERIALIZED */
166588 -3, /* (305) wqas ::= AS NOT MATERIALIZED */
166589 -6, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
166590 -1, /* (307) wqlist ::= wqitem */
166591 -3, /* (308) wqlist ::= wqlist COMMA wqitem */
166592 -1, /* (309) windowdefn_list ::= windowdefn */
166593 -3, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */
166594 -5, /* (311) windowdefn ::= nm AS LP window RP */
166595 -5, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
166596 -6, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
166597 -4, /* (314) window ::= ORDER BY sortlist frame_opt */
166598 -5, /* (315) window ::= nm ORDER BY sortlist frame_opt */
166599 -1, /* (316) window ::= frame_opt */
166600 -2, /* (317) window ::= nm frame_opt */
166601 0, /* (318) frame_opt ::= */
166602 -3, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
166603 -6, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
166604 -1, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
166605 -1, /* (322) frame_bound_s ::= frame_bound */
166606 -2, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
166607 -1, /* (324) frame_bound_e ::= frame_bound */
166608 -2, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
166609 -2, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
166610 -2, /* (327) frame_bound ::= CURRENT ROW */
166611 0, /* (328) frame_exclude_opt ::= */
166612 -2, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
166613 -2, /* (330) frame_exclude ::= NO OTHERS */
166614 -2, /* (331) frame_exclude ::= CURRENT ROW */
166615 -1, /* (332) frame_exclude ::= GROUP|TIES */
166616 -2, /* (333) window_clause ::= WINDOW windowdefn_list */
166617 -2, /* (334) filter_over ::= filter_clause over_clause */
166618 -1, /* (335) filter_over ::= over_clause */
166619 -1, /* (336) filter_over ::= filter_clause */
166620 -4, /* (337) over_clause ::= OVER LP window RP */
166621 -2, /* (338) over_clause ::= OVER nm */
166622 -5, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
166623 -1, /* (340) input ::= cmdlist */
166624 -2, /* (341) cmdlist ::= cmdlist ecmd */
166625 -1, /* (342) cmdlist ::= ecmd */
166626 -1, /* (343) ecmd ::= SEMI */
166627 -2, /* (344) ecmd ::= cmdx SEMI */
166628 -3, /* (345) ecmd ::= explain cmdx SEMI */
166629 0, /* (346) trans_opt ::= */
166630 -1, /* (347) trans_opt ::= TRANSACTION */
166631 -2, /* (348) trans_opt ::= TRANSACTION nm */
166632 -1, /* (349) savepoint_opt ::= SAVEPOINT */
166633 0, /* (350) savepoint_opt ::= */
166634 -2, /* (351) cmd ::= create_table create_table_args */
166635 -1, /* (352) table_option_set ::= table_option */
166636 -4, /* (353) columnlist ::= columnlist COMMA columnname carglist */
166637 -2, /* (354) columnlist ::= columnname carglist */
166638 -1, /* (355) nm ::= ID|INDEXED */
166639 -1, /* (356) nm ::= STRING */
166640 -1, /* (357) nm ::= JOIN_KW */
166641 -1, /* (358) typetoken ::= typename */
166642 -1, /* (359) typename ::= ID|STRING */
166643 -1, /* (360) signed ::= plus_num */
166644 -1, /* (361) signed ::= minus_num */
166645 -2, /* (362) carglist ::= carglist ccons */
166646 0, /* (363) carglist ::= */
166647 -2, /* (364) ccons ::= NULL onconf */
166648 -4, /* (365) ccons ::= GENERATED ALWAYS AS generated */
166649 -2, /* (366) ccons ::= AS generated */
166650 -2, /* (367) conslist_opt ::= COMMA conslist */
166651 -3, /* (368) conslist ::= conslist tconscomma tcons */
166652 -1, /* (369) conslist ::= tcons */
166653 0, /* (370) tconscomma ::= */
166654 -1, /* (371) defer_subclause_opt ::= defer_subclause */
166655 -1, /* (372) resolvetype ::= raisetype */
166656 -1, /* (373) selectnowith ::= oneselect */
166657 -1, /* (374) oneselect ::= values */
166658 -2, /* (375) sclp ::= selcollist COMMA */
166659 -1, /* (376) as ::= ID|STRING */
166660 -1, /* (377) indexed_opt ::= indexed_by */
166661 0, /* (378) returning ::= */
166662 -1, /* (379) expr ::= term */
166663 -1, /* (380) likeop ::= LIKE_KW|MATCH */
166664 -1, /* (381) exprlist ::= nexprlist */
166665 -1, /* (382) nmnum ::= plus_num */
166666 -1, /* (383) nmnum ::= nm */
166667 -1, /* (384) nmnum ::= ON */
166668 -1, /* (385) nmnum ::= DELETE */
166669 -1, /* (386) nmnum ::= DEFAULT */
166670 -1, /* (387) plus_num ::= INTEGER|FLOAT */
166671 0, /* (388) foreach_clause ::= */
166672 -3, /* (389) foreach_clause ::= FOR EACH ROW */
166673 -1, /* (390) trnm ::= nm */
166674 0, /* (391) tridxby ::= */
166675 -1, /* (392) database_kw_opt ::= DATABASE */
166676 0, /* (393) database_kw_opt ::= */
166677 0, /* (394) kwcolumn_opt ::= */
166678 -1, /* (395) kwcolumn_opt ::= COLUMNKW */
166679 -1, /* (396) vtabarglist ::= vtabarg */
166680 -3, /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */
166681 -2, /* (398) vtabarg ::= vtabarg vtabargtoken */
166682 0, /* (399) anylist ::= */
166683 -4, /* (400) anylist ::= anylist LP anylist RP */
166684 -2, /* (401) anylist ::= anylist ANY */
166685 0, /* (402) with ::= */
 
 
166686 };
166687
166688 static void yy_accept(yyParser*); /* Forward Declaration */
166689
166690 /*
@@ -166740,11 +166736,11 @@
166740 {yymsp[1].minor.yy394 = TK_DEFERRED;}
166741 break;
166742 case 5: /* transtype ::= DEFERRED */
166743 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
166744 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
166745 case 321: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==321);
166746 {yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/}
166747 break;
166748 case 8: /* cmd ::= COMMIT|END trans_opt */
166749 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
166750 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
@@ -166777,11 +166773,11 @@
166777 case 47: /* autoinc ::= */ yytestcase(yyruleno==47);
166778 case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
166779 case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72);
166780 case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
166781 case 98: /* distinct ::= */ yytestcase(yyruleno==98);
166782 case 242: /* collate ::= */ yytestcase(yyruleno==242);
166783 {yymsp[1].minor.yy394 = 0;}
166784 break;
166785 case 16: /* ifnotexists ::= IF NOT EXISTS */
166786 {yymsp[-2].minor.yy394 = 1;}
166787 break;
@@ -166961,13 +166957,13 @@
166961 case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
166962 {yymsp[-1].minor.yy394 = yymsp[0].minor.yy394;}
166963 break;
166964 case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
166965 case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
166966 case 214: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==214);
166967 case 217: /* in_op ::= NOT IN */ yytestcase(yyruleno==217);
166968 case 243: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==243);
166969 {yymsp[-1].minor.yy394 = 1;}
166970 break;
166971 case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
166972 {yymsp[-1].minor.yy394 = 0;}
166973 break;
@@ -167113,13 +167109,13 @@
167113 {yymsp[0].minor.yy394 = SF_All;}
167114 break;
167115 case 99: /* sclp ::= */
167116 case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132);
167117 case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142);
167118 case 230: /* exprlist ::= */ yytestcase(yyruleno==230);
167119 case 233: /* paren_exprlist ::= */ yytestcase(yyruleno==233);
167120 case 238: /* eidlist_opt ::= */ yytestcase(yyruleno==238);
167121 {yymsp[1].minor.yy322 = 0;}
167122 break;
167123 case 100: /* selcollist ::= sclp scanpt expr scanpt as */
167124 {
167125 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
@@ -167141,12 +167137,12 @@
167141 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot);
167142 }
167143 break;
167144 case 103: /* as ::= AS nm */
167145 case 115: /* dbnm ::= DOT nm */ yytestcase(yyruleno==115);
167146 case 254: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
167147 case 255: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==255);
167148 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
167149 break;
167150 case 105: /* from ::= */
167151 case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108);
167152 {yymsp[1].minor.yy131 = 0;}
@@ -167314,20 +167310,20 @@
167314 break;
167315 case 144: /* having_opt ::= */
167316 case 146: /* limit_opt ::= */ yytestcase(yyruleno==146);
167317 case 151: /* where_opt ::= */ yytestcase(yyruleno==151);
167318 case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153);
167319 case 227: /* case_else ::= */ yytestcase(yyruleno==227);
167320 case 229: /* case_operand ::= */ yytestcase(yyruleno==229);
167321 case 248: /* vinto ::= */ yytestcase(yyruleno==248);
167322 {yymsp[1].minor.yy528 = 0;}
167323 break;
167324 case 145: /* having_opt ::= HAVING expr */
167325 case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
167326 case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
167327 case 226: /* case_else ::= ELSE expr */ yytestcase(yyruleno==226);
167328 case 247: /* vinto ::= INTO expr */ yytestcase(yyruleno==247);
167329 {yymsp[-1].minor.yy528 = yymsp[0].minor.yy528;}
167330 break;
167331 case 147: /* limit_opt ::= LIMIT expr */
167332 {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,0);}
167333 break;
@@ -167597,33 +167593,45 @@
167597 {
167598 yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy528,yymsp[0].minor.yy528);
167599 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-3].minor.yy528, TK_NOTNULL);
167600 }
167601 break;
167602 case 209: /* expr ::= NOT expr */
167603 case 210: /* expr ::= BITNOT expr */ yytestcase(yyruleno==210);
 
 
 
 
 
 
 
 
 
 
 
 
167604 {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy528, 0);/*A-overwrites-B*/}
167605 break;
167606 case 211: /* expr ::= PLUS|MINUS expr */
167607 {
167608 yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy528, 0);
167609 /*A-overwrites-B*/
167610 }
167611 break;
167612 case 212: /* expr ::= expr PTR expr */
167613 {
167614 ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy528);
167615 pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy528);
167616 yylhsminor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
167617 }
167618 yymsp[-2].minor.yy528 = yylhsminor.yy528;
167619 break;
167620 case 213: /* between_op ::= BETWEEN */
167621 case 216: /* in_op ::= IN */ yytestcase(yyruleno==216);
167622 {yymsp[0].minor.yy394 = 0;}
167623 break;
167624 case 215: /* expr ::= expr between_op expr AND expr */
167625 {
167626 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
167627 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528);
167628 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy528, 0);
167629 if( yymsp[-4].minor.yy528 ){
@@ -167632,11 +167640,11 @@
167632 sqlite3ExprListDelete(pParse->db, pList);
167633 }
167634 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167635 }
167636 break;
167637 case 218: /* expr ::= expr in_op LP exprlist RP */
167638 {
167639 if( yymsp[-1].minor.yy322==0 ){
167640 /* Expressions of the form
167641 **
167642 ** expr1 IN ()
@@ -167672,41 +167680,41 @@
167672 }
167673 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167674 }
167675 }
167676 break;
167677 case 219: /* expr ::= LP select RP */
167678 {
167679 yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
167680 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy528, yymsp[-1].minor.yy47);
167681 }
167682 break;
167683 case 220: /* expr ::= expr in_op LP select RP */
167684 {
167685 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
167686 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, yymsp[-1].minor.yy47);
167687 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167688 }
167689 break;
167690 case 221: /* expr ::= expr in_op nm dbnm paren_exprlist */
167691 {
167692 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
167693 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
167694 if( yymsp[0].minor.yy322 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy322);
167695 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
167696 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelect);
167697 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167698 }
167699 break;
167700 case 222: /* expr ::= EXISTS LP select RP */
167701 {
167702 Expr *p;
167703 p = yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
167704 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy47);
167705 }
167706 break;
167707 case 223: /* expr ::= CASE case_operand case_exprlist case_else END */
167708 {
167709 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy528, 0);
167710 if( yymsp[-4].minor.yy528 ){
167711 yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy528 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528) : yymsp[-2].minor.yy322;
167712 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528);
@@ -167714,406 +167722,406 @@
167714 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy322);
167715 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
167716 }
167717 }
167718 break;
167719 case 224: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
167720 {
167721 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
167722 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[0].minor.yy528);
167723 }
167724 break;
167725 case 225: /* case_exprlist ::= WHEN expr THEN expr */
167726 {
167727 yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
167728 yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322, yymsp[0].minor.yy528);
167729 }
167730 break;
167731 case 228: /* case_operand ::= expr */
167732 {yymsp[0].minor.yy528 = yymsp[0].minor.yy528; /*A-overwrites-X*/}
167733 break;
167734 case 231: /* nexprlist ::= nexprlist COMMA expr */
167735 {yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[0].minor.yy528);}
167736 break;
167737 case 232: /* nexprlist ::= expr */
167738 {yymsp[0].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy528); /*A-overwrites-Y*/}
167739 break;
167740 case 234: /* paren_exprlist ::= LP exprlist RP */
167741 case 239: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==239);
167742 {yymsp[-2].minor.yy322 = yymsp[-1].minor.yy322;}
167743 break;
167744 case 235: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
167745 {
167746 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
167747 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy322, yymsp[-10].minor.yy394,
167748 &yymsp[-11].minor.yy0, yymsp[0].minor.yy528, SQLITE_SO_ASC, yymsp[-8].minor.yy394, SQLITE_IDXTYPE_APPDEF);
167749 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
167750 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
167751 }
167752 }
167753 break;
167754 case 236: /* uniqueflag ::= UNIQUE */
167755 case 278: /* raisetype ::= ABORT */ yytestcase(yyruleno==278);
167756 {yymsp[0].minor.yy394 = OE_Abort;}
167757 break;
167758 case 237: /* uniqueflag ::= */
167759 {yymsp[1].minor.yy394 = OE_None;}
167760 break;
167761 case 240: /* eidlist ::= eidlist COMMA nm collate sortorder */
167762 {
167763 yymsp[-4].minor.yy322 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394);
167764 }
167765 break;
167766 case 241: /* eidlist ::= nm collate sortorder */
167767 {
167768 yymsp[-2].minor.yy322 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394); /*A-overwrites-Y*/
167769 }
167770 break;
167771 case 244: /* cmd ::= DROP INDEX ifexists fullname */
167772 {sqlite3DropIndex(pParse, yymsp[0].minor.yy131, yymsp[-1].minor.yy394);}
167773 break;
167774 case 245: /* cmd ::= VACUUM vinto */
167775 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy528);}
167776 break;
167777 case 246: /* cmd ::= VACUUM nm vinto */
167778 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy528);}
167779 break;
167780 case 249: /* cmd ::= PRAGMA nm dbnm */
167781 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
167782 break;
167783 case 250: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
167784 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
167785 break;
167786 case 251: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
167787 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
167788 break;
167789 case 252: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
167790 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
167791 break;
167792 case 253: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
167793 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
167794 break;
167795 case 256: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
167796 {
167797 Token all;
167798 all.z = yymsp[-3].minor.yy0.z;
167799 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
167800 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy33, &all);
167801 }
167802 break;
167803 case 257: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
167804 {
167805 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy394, yymsp[-4].minor.yy180.a, yymsp[-4].minor.yy180.b, yymsp[-2].minor.yy131, yymsp[0].minor.yy528, yymsp[-10].minor.yy394, yymsp[-8].minor.yy394);
167806 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
167807 }
167808 break;
167809 case 258: /* trigger_time ::= BEFORE|AFTER */
167810 { yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/ }
167811 break;
167812 case 259: /* trigger_time ::= INSTEAD OF */
167813 { yymsp[-1].minor.yy394 = TK_INSTEAD;}
167814 break;
167815 case 260: /* trigger_time ::= */
167816 { yymsp[1].minor.yy394 = TK_BEFORE; }
167817 break;
167818 case 261: /* trigger_event ::= DELETE|INSERT */
167819 case 262: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==262);
167820 {yymsp[0].minor.yy180.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy180.b = 0;}
167821 break;
167822 case 263: /* trigger_event ::= UPDATE OF idlist */
167823 {yymsp[-2].minor.yy180.a = TK_UPDATE; yymsp[-2].minor.yy180.b = yymsp[0].minor.yy254;}
167824 break;
167825 case 264: /* when_clause ::= */
167826 case 283: /* key_opt ::= */ yytestcase(yyruleno==283);
167827 { yymsp[1].minor.yy528 = 0; }
167828 break;
167829 case 265: /* when_clause ::= WHEN expr */
167830 case 284: /* key_opt ::= KEY expr */ yytestcase(yyruleno==284);
167831 { yymsp[-1].minor.yy528 = yymsp[0].minor.yy528; }
167832 break;
167833 case 266: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
167834 {
167835 assert( yymsp[-2].minor.yy33!=0 );
167836 yymsp[-2].minor.yy33->pLast->pNext = yymsp[-1].minor.yy33;
167837 yymsp[-2].minor.yy33->pLast = yymsp[-1].minor.yy33;
167838 }
167839 break;
167840 case 267: /* trigger_cmd_list ::= trigger_cmd SEMI */
167841 {
167842 assert( yymsp[-1].minor.yy33!=0 );
167843 yymsp[-1].minor.yy33->pLast = yymsp[-1].minor.yy33;
167844 }
167845 break;
167846 case 268: /* trnm ::= nm DOT nm */
167847 {
167848 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
167849 sqlite3ErrorMsg(pParse,
167850 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
167851 "statements within triggers");
167852 }
167853 break;
167854 case 269: /* tridxby ::= INDEXED BY nm */
167855 {
167856 sqlite3ErrorMsg(pParse,
167857 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
167858 "within triggers");
167859 }
167860 break;
167861 case 270: /* tridxby ::= NOT INDEXED */
167862 {
167863 sqlite3ErrorMsg(pParse,
167864 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
167865 "within triggers");
167866 }
167867 break;
167868 case 271: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
167869 {yylhsminor.yy33 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy131, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528, yymsp[-7].minor.yy394, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy522);}
167870 yymsp[-8].minor.yy33 = yylhsminor.yy33;
167871 break;
167872 case 272: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
167873 {
167874 yylhsminor.yy33 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy254,yymsp[-2].minor.yy47,yymsp[-6].minor.yy394,yymsp[-1].minor.yy444,yymsp[-7].minor.yy522,yymsp[0].minor.yy522);/*yylhsminor.yy33-overwrites-yymsp[-6].minor.yy394*/
167875 }
167876 yymsp[-7].minor.yy33 = yylhsminor.yy33;
167877 break;
167878 case 273: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
167879 {yylhsminor.yy33 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy528, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy522);}
167880 yymsp[-5].minor.yy33 = yylhsminor.yy33;
167881 break;
167882 case 274: /* trigger_cmd ::= scanpt select scanpt */
167883 {yylhsminor.yy33 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy47, yymsp[-2].minor.yy522, yymsp[0].minor.yy522); /*yylhsminor.yy33-overwrites-yymsp[-1].minor.yy47*/}
167884 yymsp[-2].minor.yy33 = yylhsminor.yy33;
167885 break;
167886 case 275: /* expr ::= RAISE LP IGNORE RP */
167887 {
167888 yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
167889 if( yymsp[-3].minor.yy528 ){
167890 yymsp[-3].minor.yy528->affExpr = OE_Ignore;
167891 }
167892 }
167893 break;
167894 case 276: /* expr ::= RAISE LP raisetype COMMA nm RP */
167895 {
167896 yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
167897 if( yymsp[-5].minor.yy528 ) {
167898 yymsp[-5].minor.yy528->affExpr = (char)yymsp[-3].minor.yy394;
167899 }
167900 }
167901 break;
167902 case 277: /* raisetype ::= ROLLBACK */
167903 {yymsp[0].minor.yy394 = OE_Rollback;}
167904 break;
167905 case 279: /* raisetype ::= FAIL */
167906 {yymsp[0].minor.yy394 = OE_Fail;}
167907 break;
167908 case 280: /* cmd ::= DROP TRIGGER ifexists fullname */
167909 {
167910 sqlite3DropTrigger(pParse,yymsp[0].minor.yy131,yymsp[-1].minor.yy394);
167911 }
167912 break;
167913 case 281: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
167914 {
167915 sqlite3Attach(pParse, yymsp[-3].minor.yy528, yymsp[-1].minor.yy528, yymsp[0].minor.yy528);
167916 }
167917 break;
167918 case 282: /* cmd ::= DETACH database_kw_opt expr */
167919 {
167920 sqlite3Detach(pParse, yymsp[0].minor.yy528);
167921 }
167922 break;
167923 case 285: /* cmd ::= REINDEX */
167924 {sqlite3Reindex(pParse, 0, 0);}
167925 break;
167926 case 286: /* cmd ::= REINDEX nm dbnm */
167927 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
167928 break;
167929 case 287: /* cmd ::= ANALYZE */
167930 {sqlite3Analyze(pParse, 0, 0);}
167931 break;
167932 case 288: /* cmd ::= ANALYZE nm dbnm */
167933 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
167934 break;
167935 case 289: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
167936 {
167937 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy131,&yymsp[0].minor.yy0);
167938 }
167939 break;
167940 case 290: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
167941 {
167942 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
167943 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
167944 }
167945 break;
167946 case 291: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
167947 {
167948 sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy131, &yymsp[0].minor.yy0);
167949 }
167950 break;
167951 case 292: /* add_column_fullname ::= fullname */
167952 {
167953 disableLookaside(pParse);
167954 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy131);
167955 }
167956 break;
167957 case 293: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
167958 {
167959 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy131, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
167960 }
167961 break;
167962 case 294: /* cmd ::= create_vtab */
167963 {sqlite3VtabFinishParse(pParse,0);}
167964 break;
167965 case 295: /* cmd ::= create_vtab LP vtabarglist RP */
167966 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
167967 break;
167968 case 296: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
167969 {
167970 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy394);
167971 }
167972 break;
167973 case 297: /* vtabarg ::= */
167974 {sqlite3VtabArgInit(pParse);}
167975 break;
167976 case 298: /* vtabargtoken ::= ANY */
167977 case 299: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==299);
167978 case 300: /* lp ::= LP */ yytestcase(yyruleno==300);
167979 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
167980 break;
167981 case 301: /* with ::= WITH wqlist */
167982 case 302: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==302);
167983 { sqlite3WithPush(pParse, yymsp[0].minor.yy521, 1); }
167984 break;
167985 case 303: /* wqas ::= AS */
167986 {yymsp[0].minor.yy516 = M10d_Any;}
167987 break;
167988 case 304: /* wqas ::= AS MATERIALIZED */
167989 {yymsp[-1].minor.yy516 = M10d_Yes;}
167990 break;
167991 case 305: /* wqas ::= AS NOT MATERIALIZED */
167992 {yymsp[-2].minor.yy516 = M10d_No;}
167993 break;
167994 case 306: /* wqitem ::= nm eidlist_opt wqas LP select RP */
167995 {
167996 yymsp[-5].minor.yy385 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy47, yymsp[-3].minor.yy516); /*A-overwrites-X*/
167997 }
167998 break;
167999 case 307: /* wqlist ::= wqitem */
168000 {
168001 yymsp[0].minor.yy521 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy385); /*A-overwrites-X*/
168002 }
168003 break;
168004 case 308: /* wqlist ::= wqlist COMMA wqitem */
168005 {
168006 yymsp[-2].minor.yy521 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy521, yymsp[0].minor.yy385);
168007 }
168008 break;
168009 case 309: /* windowdefn_list ::= windowdefn */
168010 { yylhsminor.yy41 = yymsp[0].minor.yy41; }
168011 yymsp[0].minor.yy41 = yylhsminor.yy41;
168012 break;
168013 case 310: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
168014 {
168015 assert( yymsp[0].minor.yy41!=0 );
168016 sqlite3WindowChain(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy41);
168017 yymsp[0].minor.yy41->pNextWin = yymsp[-2].minor.yy41;
168018 yylhsminor.yy41 = yymsp[0].minor.yy41;
168019 }
168020 yymsp[-2].minor.yy41 = yylhsminor.yy41;
168021 break;
168022 case 311: /* windowdefn ::= nm AS LP window RP */
168023 {
168024 if( ALWAYS(yymsp[-1].minor.yy41) ){
168025 yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
168026 }
168027 yylhsminor.yy41 = yymsp[-1].minor.yy41;
168028 }
168029 yymsp[-4].minor.yy41 = yylhsminor.yy41;
168030 break;
168031 case 312: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
168032 {
168033 yymsp[-4].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, 0);
168034 }
168035 break;
168036 case 313: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
168037 {
168038 yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, &yymsp[-5].minor.yy0);
168039 }
168040 yymsp[-5].minor.yy41 = yylhsminor.yy41;
168041 break;
168042 case 314: /* window ::= ORDER BY sortlist frame_opt */
168043 {
168044 yymsp[-3].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, 0);
168045 }
168046 break;
168047 case 315: /* window ::= nm ORDER BY sortlist frame_opt */
168048 {
168049 yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0);
168050 }
168051 yymsp[-4].minor.yy41 = yylhsminor.yy41;
168052 break;
168053 case 316: /* window ::= frame_opt */
168054 case 335: /* filter_over ::= over_clause */ yytestcase(yyruleno==335);
168055 {
168056 yylhsminor.yy41 = yymsp[0].minor.yy41;
168057 }
168058 yymsp[0].minor.yy41 = yylhsminor.yy41;
168059 break;
168060 case 317: /* window ::= nm frame_opt */
168061 {
168062 yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, 0, &yymsp[-1].minor.yy0);
168063 }
168064 yymsp[-1].minor.yy41 = yylhsminor.yy41;
168065 break;
168066 case 318: /* frame_opt ::= */
168067 {
168068 yymsp[1].minor.yy41 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
168069 }
168070 break;
168071 case 319: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
168072 {
168073 yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy394, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy516);
168074 }
168075 yymsp[-2].minor.yy41 = yylhsminor.yy41;
168076 break;
168077 case 320: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
168078 {
168079 yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy394, yymsp[-3].minor.yy595.eType, yymsp[-3].minor.yy595.pExpr, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, yymsp[0].minor.yy516);
168080 }
168081 yymsp[-5].minor.yy41 = yylhsminor.yy41;
168082 break;
168083 case 322: /* frame_bound_s ::= frame_bound */
168084 case 324: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==324);
168085 {yylhsminor.yy595 = yymsp[0].minor.yy595;}
168086 yymsp[0].minor.yy595 = yylhsminor.yy595;
168087 break;
168088 case 323: /* frame_bound_s ::= UNBOUNDED PRECEDING */
168089 case 325: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==325);
168090 case 327: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==327);
168091 {yylhsminor.yy595.eType = yymsp[-1].major; yylhsminor.yy595.pExpr = 0;}
168092 yymsp[-1].minor.yy595 = yylhsminor.yy595;
168093 break;
168094 case 326: /* frame_bound ::= expr PRECEDING|FOLLOWING */
168095 {yylhsminor.yy595.eType = yymsp[0].major; yylhsminor.yy595.pExpr = yymsp[-1].minor.yy528;}
168096 yymsp[-1].minor.yy595 = yylhsminor.yy595;
168097 break;
168098 case 328: /* frame_exclude_opt ::= */
168099 {yymsp[1].minor.yy516 = 0;}
168100 break;
168101 case 329: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
168102 {yymsp[-1].minor.yy516 = yymsp[0].minor.yy516;}
168103 break;
168104 case 330: /* frame_exclude ::= NO OTHERS */
168105 case 331: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==331);
168106 {yymsp[-1].minor.yy516 = yymsp[-1].major; /*A-overwrites-X*/}
168107 break;
168108 case 332: /* frame_exclude ::= GROUP|TIES */
168109 {yymsp[0].minor.yy516 = yymsp[0].major; /*A-overwrites-X*/}
168110 break;
168111 case 333: /* window_clause ::= WINDOW windowdefn_list */
168112 { yymsp[-1].minor.yy41 = yymsp[0].minor.yy41; }
168113 break;
168114 case 334: /* filter_over ::= filter_clause over_clause */
168115 {
168116 if( yymsp[0].minor.yy41 ){
168117 yymsp[0].minor.yy41->pFilter = yymsp[-1].minor.yy528;
168118 }else{
168119 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
@@ -168120,11 +168128,11 @@
168120 }
168121 yylhsminor.yy41 = yymsp[0].minor.yy41;
168122 }
168123 yymsp[-1].minor.yy41 = yylhsminor.yy41;
168124 break;
168125 case 336: /* filter_over ::= filter_clause */
168126 {
168127 yylhsminor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
168128 if( yylhsminor.yy41 ){
168129 yylhsminor.yy41->eFrmType = TK_FILTER;
168130 yylhsminor.yy41->pFilter = yymsp[0].minor.yy528;
@@ -168132,91 +168140,91 @@
168132 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy528);
168133 }
168134 }
168135 yymsp[0].minor.yy41 = yylhsminor.yy41;
168136 break;
168137 case 337: /* over_clause ::= OVER LP window RP */
168138 {
168139 yymsp[-3].minor.yy41 = yymsp[-1].minor.yy41;
168140 assert( yymsp[-3].minor.yy41!=0 );
168141 }
168142 break;
168143 case 338: /* over_clause ::= OVER nm */
168144 {
168145 yymsp[-1].minor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
168146 if( yymsp[-1].minor.yy41 ){
168147 yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
168148 }
168149 }
168150 break;
168151 case 339: /* filter_clause ::= FILTER LP WHERE expr RP */
168152 { yymsp[-4].minor.yy528 = yymsp[-1].minor.yy528; }
168153 break;
168154 default:
168155 /* (340) input ::= cmdlist */ yytestcase(yyruleno==340);
168156 /* (341) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==341);
168157 /* (342) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=342);
168158 /* (343) ecmd ::= SEMI */ yytestcase(yyruleno==343);
168159 /* (344) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==344);
168160 /* (345) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=345);
168161 /* (346) trans_opt ::= */ yytestcase(yyruleno==346);
168162 /* (347) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==347);
168163 /* (348) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==348);
168164 /* (349) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==349);
168165 /* (350) savepoint_opt ::= */ yytestcase(yyruleno==350);
168166 /* (351) cmd ::= create_table create_table_args */ yytestcase(yyruleno==351);
168167 /* (352) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=352);
168168 /* (353) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==353);
168169 /* (354) columnlist ::= columnname carglist */ yytestcase(yyruleno==354);
168170 /* (355) nm ::= ID|INDEXED */ yytestcase(yyruleno==355);
168171 /* (356) nm ::= STRING */ yytestcase(yyruleno==356);
168172 /* (357) nm ::= JOIN_KW */ yytestcase(yyruleno==357);
168173 /* (358) typetoken ::= typename */ yytestcase(yyruleno==358);
168174 /* (359) typename ::= ID|STRING */ yytestcase(yyruleno==359);
168175 /* (360) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
168176 /* (361) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=361);
168177 /* (362) carglist ::= carglist ccons */ yytestcase(yyruleno==362);
168178 /* (363) carglist ::= */ yytestcase(yyruleno==363);
168179 /* (364) ccons ::= NULL onconf */ yytestcase(yyruleno==364);
168180 /* (365) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==365);
168181 /* (366) ccons ::= AS generated */ yytestcase(yyruleno==366);
168182 /* (367) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==367);
168183 /* (368) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==368);
168184 /* (369) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=369);
168185 /* (370) tconscomma ::= */ yytestcase(yyruleno==370);
168186 /* (371) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=371);
168187 /* (372) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=372);
168188 /* (373) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=373);
168189 /* (374) oneselect ::= values */ yytestcase(yyruleno==374);
168190 /* (375) sclp ::= selcollist COMMA */ yytestcase(yyruleno==375);
168191 /* (376) as ::= ID|STRING */ yytestcase(yyruleno==376);
168192 /* (377) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=377);
168193 /* (378) returning ::= */ yytestcase(yyruleno==378);
168194 /* (379) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=379);
168195 /* (380) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==380);
168196 /* (381) exprlist ::= nexprlist */ yytestcase(yyruleno==381);
168197 /* (382) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=382);
168198 /* (383) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=383);
168199 /* (384) nmnum ::= ON */ yytestcase(yyruleno==384);
168200 /* (385) nmnum ::= DELETE */ yytestcase(yyruleno==385);
168201 /* (386) nmnum ::= DEFAULT */ yytestcase(yyruleno==386);
168202 /* (387) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==387);
168203 /* (388) foreach_clause ::= */ yytestcase(yyruleno==388);
168204 /* (389) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==389);
168205 /* (390) trnm ::= nm */ yytestcase(yyruleno==390);
168206 /* (391) tridxby ::= */ yytestcase(yyruleno==391);
168207 /* (392) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==392);
168208 /* (393) database_kw_opt ::= */ yytestcase(yyruleno==393);
168209 /* (394) kwcolumn_opt ::= */ yytestcase(yyruleno==394);
168210 /* (395) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==395);
168211 /* (396) vtabarglist ::= vtabarg */ yytestcase(yyruleno==396);
168212 /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==397);
168213 /* (398) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==398);
168214 /* (399) anylist ::= */ yytestcase(yyruleno==399);
168215 /* (400) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==400);
168216 /* (401) anylist ::= anylist ANY */ yytestcase(yyruleno==401);
168217 /* (402) with ::= */ yytestcase(yyruleno==402);
168218 break;
168219 /********** End reduce actions ************************************************/
168220 };
168221 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
168222 yygoto = yyRuleInfoLhs[yyruleno];
@@ -236295,11 +236303,11 @@
236295 int nArg, /* Number of args */
236296 sqlite3_value **apUnused /* Function arguments */
236297 ){
236298 assert( nArg==0 );
236299 UNUSED_PARAM2(nArg, apUnused);
236300 sqlite3_result_text(pCtx, "fts5: 2022-05-10 00:24:01 c6c3115f3a008cf9b0d7c5c812f17e38c8a75a904032c5f05f0bea03a7340527", -1, SQLITE_TRANSIENT);
236301 }
236302
236303 /*
236304 ** Return true if zName is the extension on one of the shadow tables used
236305 ** by this module.
236306
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -452,11 +452,11 @@
452 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453 ** [sqlite_version()] and [sqlite_source_id()].
454 */
455 #define SQLITE_VERSION "3.39.0"
456 #define SQLITE_VERSION_NUMBER 3039000
457 #define SQLITE_SOURCE_ID "2022-05-14 19:05:13 2277f9ba7087dd993ac0f4007c523aa9cf74dba187f53af03d8c164886726fee"
458
459 /*
460 ** CAPI3REF: Run-Time Library Version Numbers
461 ** KEYWORDS: sqlite3_version sqlite3_sourceid
462 **
@@ -16286,10 +16286,17 @@
16286 */
16287 #ifndef SQLITE_MAX_PATHLEN
16288 # define SQLITE_MAX_PATHLEN FILENAME_MAX
16289 #endif
16290
16291 /* Maximum number of symlinks that will be resolved while trying to
16292 ** expand a filename in xFullPathname() in the VFS.
16293 */
16294 #ifndef SQLITE_MAX_SYMLINK
16295 # define SQLITE_MAX_SYMLINK 200
16296 #endif
16297
16298 /*
16299 ** The default size of a disk sector
16300 */
16301 #ifndef SQLITE_DEFAULT_SECTOR_SIZE
16302 # define SQLITE_DEFAULT_SECTOR_SIZE 4096
@@ -18120,11 +18127,11 @@
18127 ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
18128 ** TK_VARIABLE: variable number (always >= 1).
18129 ** TK_SELECT_COLUMN: column of the result vector */
18130 i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
18131 union {
18132 int iJoin; /* If EP_OuterON or EP_InnerON, the right table */
18133 int iOfst; /* else: start of token from start of statement */
18134 } w;
18135 AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
18136 union {
18137 Table *pTab; /* TK_COLUMN: Table containing column. Can be NULL
@@ -18141,33 +18148,33 @@
18148 ** Value restrictions:
18149 **
18150 ** EP_Agg == NC_HasAgg == SF_HasAgg
18151 ** EP_Win == NC_HasWin
18152 */
18153 #define EP_OuterON 0x000001 /* Originates in ON/USING clause of outer join */
18154 #define EP_InnerON 0x000002 /* Originates in ON/USING of an inner join */
18155 #define EP_Distinct 0x000004 /* Aggregate function with DISTINCT keyword */
18156 #define EP_HasFunc 0x000008 /* Contains one or more functions of any kind */
18157 #define EP_Agg 0x000010 /* Contains one or more aggregate functions */
18158 #define EP_FixedCol 0x000020 /* TK_Column with a known fixed value */
18159 #define EP_VarSelect 0x000040 /* pSelect is correlated, not constant */
18160 #define EP_DblQuoted 0x000080 /* token.z was originally in "..." */
18161 #define EP_InfixFunc 0x000100 /* True for an infix function: LIKE, GLOB, etc */
18162 #define EP_Collate 0x000200 /* Tree contains a TK_COLLATE operator */
18163 #define EP_Commuted 0x000400 /* Comparison operator has been commuted */
18164 #define EP_IntValue 0x000800 /* Integer value contained in u.iValue */
18165 #define EP_xIsSelect 0x001000 /* x.pSelect is valid (otherwise x.pList is) */
18166 #define EP_Skip 0x002000 /* Operator does not contribute to affinity */
18167 #define EP_Reduced 0x004000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
18168 #define EP_Win 0x008000 /* Contains window functions */
18169 #define EP_TokenOnly 0x010000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
18170 #define EP_MemToken 0x020000 /* Need to sqlite3DbFree() Expr.zToken */
18171 #define EP_IfNullRow 0x040000 /* The TK_IF_NULL_ROW opcode */
18172 #define EP_Unlikely 0x080000 /* unlikely() or likelihood() function */
18173 #define EP_ConstFunc 0x100000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */
18174 #define EP_CanBeNull 0x200000 /* Can be null despite NOT NULL constraint */
18175 #define EP_Subquery 0x400000 /* Tree contains a TK_SELECT operator */
18176 #define EP_Leaf 0x800000 /* Expr.pLeft, .pRight, .u.pSelect all NULL */
18177 #define EP_WinFunc 0x1000000 /* TK_FUNCTION with Expr.y.pWin set */
18178 #define EP_Subrtn 0x2000000 /* Uses Expr.y.sub. TK_IN, _SELECT, or _EXISTS */
18179 #define EP_Quoted 0x4000000 /* TK_ID was originally quoted */
18180 #define EP_Static 0x8000000 /* Held in memory not obtained from malloc() */
@@ -18186,12 +18193,12 @@
18193 */
18194 #define ExprHasProperty(E,P) (((E)->flags&(P))!=0)
18195 #define ExprHasAllProperty(E,P) (((E)->flags&(P))==(P))
18196 #define ExprSetProperty(E,P) (E)->flags|=(P)
18197 #define ExprClearProperty(E,P) (E)->flags&=~(P)
18198 #define ExprAlwaysTrue(E) (((E)->flags&(EP_OuterON|EP_IsTrue))==EP_IsTrue)
18199 #define ExprAlwaysFalse(E) (((E)->flags&(EP_OuterON|EP_IsFalse))==EP_IsFalse)
18200
18201 /* Macros used to ensure that the correct members of unions are accessed
18202 ** in Expr.
18203 */
18204 #define ExprUseUToken(E) (((E)->flags&EP_IntValue)==0)
@@ -20595,11 +20602,10 @@
20602 ** Allowed flags for the 3rd parameter to sqlite3FindInIndex().
20603 */
20604 #define IN_INDEX_NOOP_OK 0x0001 /* OK to return IN_INDEX_NOOP */
20605 #define IN_INDEX_MEMBERSHIP 0x0002 /* IN operator used for membership test */
20606 #define IN_INDEX_LOOP 0x0004 /* IN operator used as a loop */
 
20607 SQLITE_PRIVATE int sqlite3FindInIndex(Parse *, Expr *, u32, int*, int*, int*);
20608
20609 SQLITE_PRIVATE int sqlite3JournalOpen(sqlite3_vfs *, const char *, sqlite3_file *, int, int);
20610 SQLITE_PRIVATE int sqlite3JournalSize(sqlite3_vfs *);
20611 #if defined(SQLITE_ENABLE_ATOMIC_WRITE) \
@@ -30545,11 +30551,13 @@
30551 /*
30552 ** If pExpr has a byte offset for the start of a token, record that as
30553 ** as the error offset.
30554 */
30555 SQLITE_PRIVATE void sqlite3RecordErrorOffsetOfExpr(sqlite3 *db, const Expr *pExpr){
30556 while( pExpr
30557 && (ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) || pExpr->w.iOfst<=0)
30558 ){
30559 pExpr = pExpr->pLeft;
30560 }
30561 if( pExpr==0 ) return;
30562 db->errByteOffset = pExpr->w.iOfst;
30563 }
@@ -31470,12 +31478,15 @@
31478 if( pExpr->flags || pExpr->affExpr || pExpr->vvaFlags ){
31479 StrAccum x;
31480 sqlite3StrAccumInit(&x, 0, zFlgs, sizeof(zFlgs), 0);
31481 sqlite3_str_appendf(&x, " fg.af=%x.%c",
31482 pExpr->flags, pExpr->affExpr ? pExpr->affExpr : 'n');
31483 if( ExprHasProperty(pExpr, EP_OuterON) ){
31484 sqlite3_str_appendf(&x, " outer.iJoin=%d", pExpr->w.iJoin);
31485 }
31486 if( ExprHasProperty(pExpr, EP_InnerON) ){
31487 sqlite3_str_appendf(&x, " inner.iJoin=%d", pExpr->w.iJoin);
31488 }
31489 if( ExprHasProperty(pExpr, EP_FromDDL) ){
31490 sqlite3_str_appendf(&x, " DDL");
31491 }
31492 if( ExprHasVVAProperty(pExpr, EP_Immutable) ){
@@ -41837,90 +41848,103 @@
41848 }
41849 return SQLITE_OK;
41850 }
41851
41852 /*
41853 ** A pathname under construction
41854 */
41855 typedef struct DbPath DbPath;
41856 struct DbPath {
41857 int rc; /* Non-zero following any error */
41858 int nSymlink; /* Number of symlinks resolved */
41859 char *zOut; /* Write the pathname here */
41860 int nOut; /* Bytes of space available to zOut[] */
41861 int nUsed; /* Bytes of zOut[] currently being used */
41862 };
41863
41864 /* Forward reference */
41865 static void appendAllPathElements(DbPath*,const char*);
41866
41867 /*
41868 ** Append a single path element to the DbPath under construction
41869 */
41870 static void appendOnePathElement(
41871 DbPath *pPath, /* Path under construction, to which to append zName */
41872 const char *zName, /* Name to append to pPath. Not zero-terminated */
41873 int nName /* Number of significant bytes in zName */
41874 ){
41875 assert( nName>0 );
41876 assert( zName!=0 );
41877 if( zName[0]=='.' ){
41878 if( nName==1 ) return;
41879 if( zName[1]=='.' && nName==2 ){
41880 if( pPath->nUsed<=1 ){
41881 pPath->rc = SQLITE_ERROR;
41882 return;
41883 }
41884 assert( pPath->zOut[0]=='/' );
41885 while( pPath->zOut[--pPath->nUsed]!='/' ){}
41886 return;
41887 }
41888 }
41889 if( pPath->nUsed + nName + 2 >= pPath->nOut ){
41890 pPath->rc = SQLITE_ERROR;
41891 return;
41892 }
41893 pPath->zOut[pPath->nUsed++] = '/';
41894 memcpy(&pPath->zOut[pPath->nUsed], zName, nName);
41895 pPath->nUsed += nName;
41896 #if defined(HAVE_READLINK) && defined(HAVE_LSTAT)
41897 if( pPath->rc==SQLITE_OK ){
41898 const char *zIn;
41899 struct stat buf;
41900 pPath->zOut[pPath->nUsed] = 0;
41901 zIn = pPath->zOut;
41902 if( osLstat(zIn, &buf)!=0 ){
41903 if( errno!=ENOENT ){
41904 pPath->rc = unixLogError(SQLITE_CANTOPEN_BKPT, "lstat", zIn);
41905 }
41906 }else if( S_ISLNK(buf.st_mode) ){
41907 ssize_t got;
41908 char zLnk[SQLITE_MAX_PATHLEN+2];
41909 if( pPath->nSymlink++ > SQLITE_MAX_SYMLINK ){
41910 pPath->rc = SQLITE_CANTOPEN_BKPT;
41911 return;
41912 }
41913 got = osReadlink(zIn, zLnk, sizeof(zLnk)-2);
41914 if( got<=0 || got>=sizeof(zLnk)-2 ){
41915 pPath->rc = unixLogError(SQLITE_CANTOPEN_BKPT, "readlink", zIn);
41916 return;
41917 }
41918 zLnk[got] = 0;
41919 if( zLnk[0]=='/' ){
41920 pPath->nUsed = 0;
41921 }else{
41922 pPath->nUsed -= nName + 1;
41923 }
41924 appendAllPathElements(pPath, zLnk);
41925 }
41926 }
41927 #endif
41928 }
41929
41930 /*
41931 ** Append all path elements in zPath to the DbPath under construction.
41932 */
41933 static void appendAllPathElements(
41934 DbPath *pPath, /* Path under construction, to which to append zName */
41935 const char *zPath /* Path to append to pPath. Is zero-terminated */
41936 ){
41937 int i = 0;
41938 int j = 0;
41939 do{
41940 while( zPath[i] && zPath[i]!='/' ){ i++; }
41941 if( i>j ){
41942 appendOnePathElement(pPath, &zPath[j], i-j);
41943 }
41944 j = i+1;
41945 }while( zPath[i++] );
41946 }
41947
41948 /*
41949 ** Turn a relative pathname into a full pathname. The relative path
41950 ** is stored as a nul-terminated string in the buffer pointed to by
@@ -41934,89 +41958,29 @@
41958 sqlite3_vfs *pVfs, /* Pointer to vfs object */
41959 const char *zPath, /* Possibly relative input path */
41960 int nOut, /* Size of output buffer in bytes */
41961 char *zOut /* Output buffer */
41962 ){
41963 DbPath path;
41964 path.rc = 0;
41965 path.nUsed = 0;
41966 path.nSymlink = 0;
41967 path.nOut = nOut;
41968 path.zOut = zOut;
41969 if( zPath[0]!='/' ){
41970 char zPwd[SQLITE_MAX_PATHLEN+2];
41971 if( osGetcwd(zPwd, sizeof(zPwd)-2)==0 ){
41972 return unixLogError(SQLITE_CANTOPEN_BKPT, "getcwd", zPath);
41973 }
41974 appendAllPathElements(&path, zPwd);
41975 }
41976 appendAllPathElements(&path, zPath);
41977 zOut[path.nUsed] = 0;
41978 if( path.rc || path.nUsed<2 ) return SQLITE_CANTOPEN_BKPT;
41979 if( path.nSymlink ) return SQLITE_OK_SYMLINK;
41980 return SQLITE_OK;
41981 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41982
41983 #ifndef SQLITE_OMIT_LOAD_EXTENSION
41984 /*
41985 ** Interfaces for opening a shared library, finding entry points
41986 ** within the shared library, and closing the shared library.
@@ -82215,15 +82179,13 @@
82179 if( c=='4' ){
82180 sqlite3_str_appendall(&x, zP4);
82181 }else if( c=='X' ){
82182 if( pOp->zComment && pOp->zComment[0] ){
82183 sqlite3_str_appendall(&x, pOp->zComment);
82184 seenCom = 1;
82185 break;
82186 }
 
 
82187 }else{
82188 int v1 = translateP(c, pOp);
82189 int v2;
82190 if( strncmp(zSynopsis+ii+1, "@P", 2)==0 ){
82191 ii += 3;
@@ -102345,11 +102307,11 @@
102307 for(i=0, p=pNC; p && i<ArraySize(anRef); p=p->pNext, i++){
102308 anRef[i] = p->nRef;
102309 }
102310 sqlite3WalkExpr(pWalker, pExpr->pLeft);
102311 if( 0==sqlite3ExprCanBeNull(pExpr->pLeft) && !IN_RENAME_OBJECT ){
102312 testcase( ExprHasProperty(pExpr, EP_OuterON) );
102313 assert( !ExprHasProperty(pExpr, EP_IntValue) );
102314 if( pExpr->op==TK_NOTNULL ){
102315 pExpr->u.zToken = "true";
102316 ExprSetProperty(pExpr, EP_IsTrue);
102317 }else{
@@ -104636,10 +104598,11 @@
104598 pNew = sqlite3ExprAlloc(db, TK_FUNCTION, pToken, 1);
104599 if( pNew==0 ){
104600 sqlite3ExprListDelete(db, pList); /* Avoid memory leak when malloc fails */
104601 return 0;
104602 }
104603 assert( !ExprHasProperty(pNew, EP_InnerON|EP_OuterON) );
104604 pNew->w.iOfst = (int)(pToken->z - pParse->zTail);
104605 if( pList
104606 && pList->nExpr > pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG]
104607 && !pParse->nested
104608 ){
@@ -104914,11 +104877,11 @@
104877 #endif
104878 ){
104879 nSize = EXPR_FULLSIZE;
104880 }else{
104881 assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) );
104882 assert( !ExprHasProperty(p, EP_OuterON) );
104883 assert( !ExprHasProperty(p, EP_MemToken) );
104884 assert( !ExprHasVVAProperty(p, EP_NoReduce) );
104885 if( p->pLeft || p->x.pList ){
104886 nSize = EXPR_REDUCEDSIZE | EP_Reduced;
104887 }else{
@@ -105740,11 +105703,11 @@
105703 static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){
105704
105705 /* If pWalker->eCode is 2 then any term of the expression that comes from
105706 ** the ON or USING clauses of an outer join disqualifies the expression
105707 ** from being considered constant. */
105708 if( pWalker->eCode==2 && ExprHasProperty(pExpr, EP_OuterON) ){
105709 pWalker->eCode = 0;
105710 return WRC_Abort;
105711 }
105712
105713 switch( pExpr->op ){
@@ -105887,14 +105850,14 @@
105850 SQLITE_PRIVATE int sqlite3ExprIsTableConstraint(Expr *pExpr, const SrcItem *pSrc){
105851 if( pSrc->fg.jointype & JT_LTORJ ){
105852 return 0; /* rule (3) */
105853 }
105854 if( pSrc->fg.jointype & JT_LEFT ){
105855 if( !ExprHasProperty(pExpr, EP_OuterON) ) return 0; /* rule (4a) */
105856 if( pExpr->w.iJoin!=pSrc->iCursor ) return 0; /* rule (4b) */
105857 }else{
105858 if( ExprHasProperty(pExpr, EP_OuterON) ) return 0; /* rule (5) */
105859 }
105860 return sqlite3ExprIsTableConstant(pExpr, pSrc->iCursor); /* rules (1), (2) */
105861 }
105862
105863
@@ -106312,15 +106275,11 @@
106275 int mustBeUnique; /* True if RHS must be unique */
106276 Vdbe *v = sqlite3GetVdbe(pParse); /* Virtual machine being coded */
106277
106278 assert( pX->op==TK_IN );
106279 mustBeUnique = (inFlags & IN_INDEX_LOOP)!=0;
106280 iTab = pParse->nTab++;
 
 
 
 
106281
106282 /* If the RHS of this IN(...) operator is a SELECT, and if it matters
106283 ** whether or not the SELECT result contains NULL values, check whether
106284 ** or not NULL is actually possible (it may not be, for example, due
106285 ** to NOT NULL constraints in the schema). If no NULL values are possible,
@@ -106650,13 +106609,12 @@
106609 pExpr->x.pSelect->selId));
106610 }
106611 assert( ExprUseYSub(pExpr) );
106612 sqlite3VdbeAddOp2(v, OP_Gosub, pExpr->y.sub.regReturn,
106613 pExpr->y.sub.iAddr);
106614 assert( iTab!=pExpr->iTable );
106615 sqlite3VdbeAddOp2(v, OP_OpenDup, iTab, pExpr->iTable);
 
106616 sqlite3VdbeJumpHere(v, addrOnce);
106617 return;
106618 }
106619
106620 /* Begin coding the subroutine */
@@ -108645,12 +108603,12 @@
108603 }else{
108604 /* Mark the expression is being from the ON or USING clause of a join
108605 ** so that the sqlite3ExprCodeTarget() routine will not attempt to move
108606 ** it into the Parse.pConstExpr list. We should use a new bit for this,
108607 ** for clarity, but we are out of bits in the Expr.flags field so we
108608 ** have to reuse the EP_OuterON bit. Bummer. */
108609 pDel->flags |= EP_OuterON;
108610 sqlite3ExprCodeTarget(pParse, &exprAnd, dest);
108611 }
108612 sqlite3ReleaseTempReg(pParse, regFree1);
108613 }
108614 sqlite3ExprDelete(db, pDel);
@@ -109331,11 +109289,11 @@
109289 ** (never setting pWalker->eCode) is a harmless missed optimization.
109290 */
109291 static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
109292 testcase( pExpr->op==TK_AGG_COLUMN );
109293 testcase( pExpr->op==TK_AGG_FUNCTION );
109294 if( ExprHasProperty(pExpr, EP_OuterON) ) return WRC_Prune;
109295 switch( pExpr->op ){
109296 case TK_ISNOT:
109297 case TK_ISNULL:
109298 case TK_NOTNULL:
109299 case TK_IS:
@@ -109428,11 +109386,11 @@
109386 ** is NULL. A false negative is merely a missed optimization opportunity.
109387 **
109388 ** False positives are not allowed, however. A false positive may result
109389 ** in an incorrect answer.
109390 **
109391 ** Terms of p that are marked with EP_OuterON (and hence that come from
109392 ** the ON or USING clauses of OUTER JOINS) are excluded from the analysis.
109393 **
109394 ** This routine is used to check if a LEFT JOIN can be converted into
109395 ** an ordinary JOIN. The p argument is the WHERE clause. If the WHERE
109396 ** clause requires that some column of the right table of the LEFT JOIN
@@ -135849,15 +135807,15 @@
135807 }
135808 return 0;
135809 }
135810
135811 /*
135812 ** Set the EP_OuterON property on all terms of the given expression.
135813 ** And set the Expr.w.iJoin to iTable for every term in the
135814 ** expression.
135815 **
135816 ** The EP_OuterON property is used on terms of an expression to tell
135817 ** the OUTER JOIN processing logic that this term is part of the
135818 ** join restriction specified in the ON or USING clause and not a part
135819 ** of the more general WHERE clause. These terms are moved over to the
135820 ** WHERE clause during join processing but we need to remember that they
135821 ** originated in the ON or USING clause.
@@ -135875,11 +135833,11 @@
135833 ** defer the handling of t1.x=5, it will be processed immediately
135834 ** after the t1 loop and rows with t1.x!=5 will never appear in
135835 ** the output, which is incorrect.
135836 */
135837 SQLITE_PRIVATE void sqlite3SetJoinExpr(Expr *p, int iTable, u32 joinFlag){
135838 assert( joinFlag==EP_OuterON || joinFlag==EP_InnerON );
135839 while( p ){
135840 ExprSetProperty(p, joinFlag);
135841 assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) );
135842 ExprSetVVAProperty(p, EP_NoReduce);
135843 p->w.iJoin = iTable;
@@ -135896,21 +135854,21 @@
135854 p = p->pRight;
135855 }
135856 }
135857
135858 /* Undo the work of sqlite3SetJoinExpr(). In the expression p, convert every
135859 ** term that is marked with EP_OuterON and w.iJoin==iTable into
135860 ** an ordinary term that omits the EP_OuterON mark.
135861 **
135862 ** This happens when a LEFT JOIN is simplified into an ordinary JOIN.
135863 */
135864 static void unsetJoinExpr(Expr *p, int iTable){
135865 while( p ){
135866 if( ExprHasProperty(p, EP_OuterON)
135867 && (iTable<0 || p->w.iJoin==iTable) ){
135868 ExprClearProperty(p, EP_OuterON);
135869 ExprSetProperty(p, EP_InnerON);
135870 }
135871 if( p->op==TK_COLUMN && p->iTable==iTable ){
135872 ExprClearProperty(p, EP_CanBeNull);
135873 }
135874 if( p->op==TK_FUNCTION ){
@@ -135934,12 +135892,12 @@
135892 ** do not need to be concerned with NATURAL joins and we only have
135893 ** think about USING joins.
135894 **
135895 ** * ON and USING clauses result in extra terms being added to the
135896 ** WHERE clause to enforce the specified constraints. The extra
135897 ** WHERE clause terms will be tagged with EP_OuterON or
135898 ** EP_InnerON so that we know that they originated in ON/USING.
135899 **
135900 ** The terms of a FROM clause are contained in the Select.pSrc structure.
135901 ** The left most table is the first entry in Select.pSrc. The right-most
135902 ** table is the last entry. The join operator is held in the entry to
135903 ** the right. Thus entry 1 contains the join operator for the join between
@@ -135960,11 +135918,11 @@
135918 for(i=0; i<pSrc->nSrc-1; i++, pRight++, pLeft++){
135919 Table *pRightTab = pRight->pTab;
135920 u32 joinType;
135921
135922 if( NEVER(pLeft->pTab==0 || pRightTab==0) ) continue;
135923 joinType = (pRight->fg.jointype & JT_OUTER)!=0 ? EP_OuterON : EP_InnerON;
135924
135925 /* If this is a NATURAL join, synthesize an approprate USING clause
135926 ** to specify which columns should be joined.
135927 */
135928 if( pRight->fg.jointype & JT_NATURAL ){
@@ -139233,11 +139191,11 @@
139191 static Expr *substExpr(
139192 SubstContext *pSubst, /* Description of the substitution */
139193 Expr *pExpr /* Expr in which substitution occurs */
139194 ){
139195 if( pExpr==0 ) return 0;
139196 if( ExprHasProperty(pExpr, EP_OuterON)
139197 && pExpr->w.iJoin==pSubst->iTable
139198 ){
139199 pExpr->w.iJoin = pSubst->iNewTable;
139200 }
139201 if( pExpr->op==TK_COLUMN
@@ -139274,13 +139232,13 @@
139232 return pExpr;
139233 }
139234 if( pSubst->isOuterJoin ){
139235 ExprSetProperty(pNew, EP_CanBeNull);
139236 }
139237 if( ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) ){
139238 sqlite3SetJoinExpr(pNew, pExpr->w.iJoin,
139239 pExpr->flags & (EP_OuterON|EP_InnerON));
139240 }
139241 sqlite3ExprDelete(db, pExpr);
139242 pExpr = pNew;
139243
139244 /* Ensure that the expression now has an implicit collation sequence,
@@ -139440,11 +139398,11 @@
139398 static int renumberCursorsCb(Walker *pWalker, Expr *pExpr){
139399 int op = pExpr->op;
139400 if( op==TK_COLUMN || op==TK_IF_NULL_ROW ){
139401 renumberCursorDoMapping(pWalker, &pExpr->iTable);
139402 }
139403 if( ExprHasProperty(pExpr, EP_OuterON) ){
139404 renumberCursorDoMapping(pWalker, &pExpr->w.iJoin);
139405 }
139406 return WRC_Continue;
139407 }
139408
@@ -140018,11 +139976,11 @@
139976 pSub->pOrderBy = 0;
139977 }
139978 pWhere = pSub->pWhere;
139979 pSub->pWhere = 0;
139980 if( isOuterJoin>0 ){
139981 sqlite3SetJoinExpr(pWhere, iNewParent, EP_OuterON);
139982 }
139983 if( pWhere ){
139984 if( pParent->pWhere ){
139985 pParent->pWhere = sqlite3PExpr(pParse, TK_AND, pWhere, pParent->pWhere);
139986 }else{
@@ -140151,11 +140109,11 @@
140109 ** found, add it to the pConst structure.
140110 */
140111 static void findConstInWhere(WhereConst *pConst, Expr *pExpr){
140112 Expr *pRight, *pLeft;
140113 if( NEVER(pExpr==0) ) return;
140114 if( ExprHasProperty(pExpr, EP_OuterON) ) return;
140115 if( pExpr->op==TK_AND ){
140116 findConstInWhere(pConst, pExpr->pRight);
140117 findConstInWhere(pConst, pExpr->pLeft);
140118 return;
140119 }
@@ -140187,13 +140145,13 @@
140145 int bIgnoreAffBlob
140146 ){
140147 int i;
140148 if( pConst->pOomFault[0] ) return WRC_Prune;
140149 if( pExpr->op!=TK_COLUMN ) return WRC_Continue;
140150 if( ExprHasProperty(pExpr, EP_FixedCol|EP_OuterON) ){
140151 testcase( ExprHasProperty(pExpr, EP_FixedCol) );
140152 testcase( ExprHasProperty(pExpr, EP_OuterON) );
140153 return WRC_Continue;
140154 }
140155 for(i=0; i<pConst->nConst; i++){
140156 Expr *pColumn = pConst->apExpr[i*2];
140157 if( pColumn==pExpr ) continue;
@@ -140474,16 +140432,16 @@
140432 pWhere = pWhere->pLeft;
140433 }
140434
140435 #if 0 /* Legacy code. Checks now done by sqlite3ExprIsTableConstraint() */
140436 if( isLeftJoin
140437 && (ExprHasProperty(pWhere,EP_OuterON)==0
140438 || pWhere->w.iJoin!=iCursor)
140439 ){
140440 return 0; /* restriction (4) */
140441 }
140442 if( ExprHasProperty(pWhere,EP_OuterON)
140443 && pWhere->w.iJoin!=iCursor
140444 ){
140445 return 0; /* restriction (5) */
140446 }
140447 #endif
@@ -143178,11 +143136,11 @@
143136 }
143137 SELECTTRACE(1,pParse,p,("WhereBegin returns\n"));
143138 eDist = sqlite3WhereIsDistinct(pWInfo);
143139 updateAccumulator(pParse, regAcc, pAggInfo, eDist);
143140 if( eDist!=WHERE_DISTINCT_NOOP ){
143141 struct AggInfo_func *pF = pAggInfo->aFunc;
143142 if( pF ){
143143 fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr);
143144 }
143145 }
143146
@@ -148402,11 +148360,11 @@
148360 ** This object is a header on a block of allocated memory that will be
148361 ** automatically freed when its WInfo oject is destructed.
148362 */
148363 struct WhereMemBlock {
148364 WhereMemBlock *pNext; /* Next block in the chain */
148365 u64 sz; /* Bytes of space */
148366 };
148367
148368 /*
148369 ** Extra information attached to a WhereLevel that is a RIGHT JOIN.
148370 */
@@ -149344,11 +149302,11 @@
149302 */
149303 static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){
149304 int nLoop = 0;
149305 assert( pTerm!=0 );
149306 while( (pTerm->wtFlags & TERM_CODED)==0
149307 && (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_OuterON))
149308 && (pLevel->notReady & pTerm->prereqAll)==0
149309 ){
149310 if( nLoop && (pTerm->wtFlags & TERM_LIKE)!=0 ){
149311 pTerm->wtFlags |= TERM_LIKECOND;
149312 }else{
@@ -149617,12 +149575,11 @@
149575 pExpr->iTable = iTab;
149576 }
149577 sqlite3ExprDelete(db, pX);
149578 }else{
149579 aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*nEq);
149580 eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap, &iTab);
 
149581 }
149582 pX = pExpr;
149583 }
149584
149585 if( eType==IN_INDEX_INDEX_DESC ){
@@ -150066,20 +150023,20 @@
150023 **
150024 ** are also excluded. See codeCursorHintIsOrFunction() for details.
150025 */
150026 if( pTabItem->fg.jointype & JT_LEFT ){
150027 Expr *pExpr = pTerm->pExpr;
150028 if( !ExprHasProperty(pExpr, EP_OuterON)
150029 || pExpr->w.iJoin!=pTabItem->iCursor
150030 ){
150031 sWalker.eCode = 0;
150032 sWalker.xExprCallback = codeCursorHintIsOrFunction;
150033 sqlite3WalkExpr(&sWalker, pTerm->pExpr);
150034 if( sWalker.eCode ) continue;
150035 }
150036 }else{
150037 if( ExprHasProperty(pTerm->pExpr, EP_OuterON) ) continue;
150038 }
150039
150040 /* All terms in pWLoop->aLTerm[] except pEndRange are used to initialize
150041 ** the cursor. These terms are not needed as hints for a pure range
150042 ** scan (that has no == terms) so omit them. */
@@ -151406,11 +151363,11 @@
151363 WhereInfo *pSubWInfo; /* Info for single OR-term scan */
151364 Expr *pOrExpr = pOrTerm->pExpr; /* Current OR clause term */
151365 Expr *pDelete; /* Local copy of OR clause term */
151366 int jmp1 = 0; /* Address of jump operation */
151367 testcase( (pTabItem[0].fg.jointype & JT_LEFT)!=0
151368 && !ExprHasProperty(pOrExpr, EP_OuterON)
151369 ); /* See TH3 vtab25.400 and ticket 614b25314c766238 */
151370 pDelete = pOrExpr = sqlite3ExprDup(db, pOrExpr, 0);
151371 if( db->mallocFailed ){
151372 sqlite3ExprDelete(db, pDelete);
151373 continue;
@@ -151614,16 +151571,23 @@
151571 pWInfo->untestedTerms = 1;
151572 continue;
151573 }
151574 pE = pTerm->pExpr;
151575 assert( pE!=0 );
151576 if( pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ|JT_RIGHT) ){
151577 if( !ExprHasProperty(pE,EP_OuterON|EP_InnerON) ){
151578 /* Defer processing WHERE clause constraints until after outer
151579 ** join processing. tag-20220513a */
151580 continue;
151581 }else{
151582 Bitmask m = sqlite3WhereGetMask(&pWInfo->sMaskSet, pE->w.iJoin);
151583 if( m & pLevel->notReady ){
151584 /* An ON clause that is not ripe */
151585 continue;
151586 }
151587 }
151588 }
 
151589 if( iLoop==1 && !sqlite3ExprCoveredByIndex(pE, pLevel->iTabCur, pIdx) ){
151590 iNext = 2;
151591 continue;
151592 }
151593 if( iLoop<3 && (pTerm->wtFlags & TERM_VARSELECT) ){
@@ -151678,19 +151642,19 @@
151642 WhereTerm *pAlt;
151643 if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue;
151644 if( (pTerm->eOperator & (WO_EQ|WO_IS))==0 ) continue;
151645 if( (pTerm->eOperator & WO_EQUIV)==0 ) continue;
151646 if( pTerm->leftCursor!=iCur ) continue;
151647 if( pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ|JT_RIGHT) ) continue;
151648 pE = pTerm->pExpr;
151649 #ifdef WHERETRACE_ENABLED /* 0x800 */
151650 if( sqlite3WhereTrace & 0x800 ){
151651 sqlite3DebugPrintf("Coding transitive constraint:\n");
151652 sqlite3WhereTermPrint(pTerm, pWC->nTerm-j);
151653 }
151654 #endif
151655 assert( !ExprHasProperty(pE, EP_OuterON) );
151656 assert( (pTerm->prereqRight & pLevel->notReady)!=0 );
151657 assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
151658 pAlt = sqlite3WhereFindTerm(pWC, iCur, pTerm->u.x.leftColumn, notReady,
151659 WO_EQ|WO_IN|WO_IS, 0);
151660 if( pAlt==0 ) continue;
@@ -151757,22 +151721,12 @@
151721 */
151722 if( pLevel->iLeftJoin ){
151723 pLevel->addrFirst = sqlite3VdbeCurrentAddr(v);
151724 sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->iLeftJoin);
151725 VdbeComment((v, "record LEFT JOIN hit"));
151726 if( pLevel->pRJ==0 ){
151727 goto code_outer_join_constraints; /* WHERE clause constraints */
 
 
 
 
 
 
 
 
 
 
151728 }
151729 }
151730
151731 if( pLevel->pRJ ){
151732 /* Create a subroutine used to process all interior loops and code
@@ -151784,10 +151738,30 @@
151738 WhereRightJoin *pRJ = pLevel->pRJ;
151739 sqlite3VdbeAddOp2(v, OP_BeginSubrtn, 0, pRJ->regReturn);
151740 pRJ->addrSubrtn = sqlite3VdbeCurrentAddr(v);
151741 assert( pParse->withinRJSubrtn < 255 );
151742 pParse->withinRJSubrtn++;
151743
151744 /* WHERE clause constraints must be deferred until after outer join
151745 ** row elimination has completed, since WHERE clause constraints apply
151746 ** to the results of the OUTER JOIN. The following loop generates the
151747 ** appropriate WHERE clause constraint checks. tag-20220513a.
151748 */
151749 code_outer_join_constraints:
151750 for(pTerm=pWC->a, j=0; j<pWC->nBase; j++, pTerm++){
151751 testcase( pTerm->wtFlags & TERM_VIRTUAL );
151752 testcase( pTerm->wtFlags & TERM_CODED );
151753 if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue;
151754 if( (pTerm->prereqAll & pLevel->notReady)!=0 ){
151755 assert( pWInfo->untestedTerms );
151756 continue;
151757 }
151758 if( pTabItem->fg.jointype & JT_LTORJ ) continue;
151759 assert( pTerm->pExpr );
151760 sqlite3ExprIfFalse(pParse, pTerm->pExpr, addrCont, SQLITE_JUMPIFNULL);
151761 pTerm->wtFlags |= TERM_CODED;
151762 }
151763 }
151764
151765 #if WHERETRACE_ENABLED /* 0x20800 */
151766 if( sqlite3WhereTrace & 0x20000 ){
151767 sqlite3DebugPrintf("All WHERE-clause terms after coding level %d:\n",
@@ -151839,11 +151813,11 @@
151813 mAll |= pLoop->maskSelf;
151814 for(k=0; k<pWC->nTerm; k++){
151815 WhereTerm *pTerm = &pWC->a[k];
151816 if( pTerm->wtFlags & TERM_VIRTUAL ) break;
151817 if( pTerm->prereqAll & ~mAll ) continue;
151818 if( ExprHasProperty(pTerm->pExpr, EP_OuterON|EP_InnerON) ) continue;
151819 pSubWhere = sqlite3ExprAnd(pParse, pSubWhere,
151820 sqlite3ExprDup(pParse->db, pTerm->pExpr, 0));
151821 }
151822 }
151823 sFrom.nSrc = 1;
@@ -152351,12 +152325,12 @@
152325 /*
152326 ** If the pBase expression originated in the ON or USING clause of
152327 ** a join, then transfer the appropriate markings over to derived.
152328 */
152329 static void transferJoinMarkings(Expr *pDerived, Expr *pBase){
152330 if( pDerived && ExprHasProperty(pBase, EP_OuterON|EP_InnerON) ){
152331 pDerived->flags |= pBase->flags & (EP_OuterON|EP_InnerON);
152332 pDerived->w.iJoin = pBase->w.iJoin;
152333 }
152334 }
152335
152336 /*
@@ -152807,11 +152781,11 @@
152781 static int termIsEquivalence(Parse *pParse, Expr *pExpr){
152782 char aff1, aff2;
152783 CollSeq *pColl;
152784 if( !OptimizationEnabled(pParse->db, SQLITE_Transitive) ) return 0;
152785 if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0;
152786 if( ExprHasProperty(pExpr, EP_OuterON) ) return 0;
152787 aff1 = sqlite3ExprAffinity(pExpr->pLeft);
152788 aff2 = sqlite3ExprAffinity(pExpr->pRight);
152789 if( aff1!=aff2
152790 && (!sqlite3IsNumericAffinity(aff1) || !sqlite3IsNumericAffinity(aff2))
152791 ){
@@ -152999,11 +152973,11 @@
152973 sqlite3TreeViewExpr(0,pExpr,0);
152974 abort();
152975 }
152976 #endif
152977
152978 if( ExprHasProperty(pExpr, EP_OuterON) ){
152979 Bitmask x = sqlite3WhereGetMask(pMaskSet, pExpr->w.iJoin);
152980 prereqAll |= x;
152981 extraRight = x-1; /* ON clause terms may not be used with an index
152982 ** on left table of a LEFT JOIN. Ticket #3015 */
152983 if( (prereqAll>>1)>=x ){
@@ -153074,11 +153048,11 @@
153048 pNew->prereqRight = prereqLeft | extraRight;
153049 pNew->prereqAll = prereqAll;
153050 pNew->eOperator = (operatorMask(pDup->op) + eExtraOp) & opMask;
153051 }else
153052 if( op==TK_ISNULL
153053 && !ExprHasProperty(pExpr,EP_OuterON)
153054 && 0==sqlite3ExprCanBeNull(pLeft)
153055 ){
153056 assert( !ExprHasProperty(pExpr, EP_IntValue) );
153057 pExpr->op = TK_TRUEFALSE;
153058 pExpr->u.zToken = "false";
@@ -153145,11 +153119,11 @@
153119 ** The virtual term must be tagged with TERM_VNULL.
153120 */
153121 else if( pExpr->op==TK_NOTNULL ){
153122 if( pExpr->pLeft->op==TK_COLUMN
153123 && pExpr->pLeft->iColumn>=0
153124 && !ExprHasProperty(pExpr, EP_OuterON)
153125 ){
153126 Expr *pNewExpr;
153127 Expr *pLeft = pExpr->pLeft;
153128 int idxNew;
153129 WhereTerm *pNewTerm;
@@ -153349,12 +153323,12 @@
153323 prereqColumn = sqlite3WhereExprUsage(pMaskSet, pLeft);
153324 if( (prereqExpr & prereqColumn)==0 ){
153325 Expr *pNewExpr;
153326 pNewExpr = sqlite3PExpr(pParse, TK_MATCH,
153327 0, sqlite3ExprDup(db, pRight, 0));
153328 if( ExprHasProperty(pExpr, EP_OuterON) && pNewExpr ){
153329 ExprSetProperty(pNewExpr, EP_OuterON);
153330 pNewExpr->w.iJoin = pExpr->w.iJoin;
153331 }
153332 idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC);
153333 testcase( idxNew==0 );
153334 pNewTerm = &pWC->a[idxNew];
@@ -153717,13 +153691,13 @@
153691 pItem->colUsed |= sqlite3ExprColUsed(pColRef);
153692 pRhs = sqlite3PExpr(pParse, TK_UPLUS,
153693 sqlite3ExprDup(pParse->db, pArgs->a[j].pExpr, 0), 0);
153694 pTerm = sqlite3PExpr(pParse, TK_EQ, pColRef, pRhs);
153695 if( pItem->fg.jointype & (JT_LEFT|JT_LTORJ) ){
153696 joinType = EP_OuterON;
153697 }else{
153698 joinType = EP_InnerON;
153699 }
153700 sqlite3SetJoinExpr(pTerm, pItem->iCursor, joinType);
153701 whereClauseInsert(pWC, pTerm, TERM_DYNAMIC);
153702 }
153703 }
@@ -154060,11 +154034,11 @@
154034 if( pTerm->leftCursor==iCur
154035 && pTerm->u.x.leftColumn==iColumn
154036 && (iColumn!=XN_EXPR
154037 || sqlite3ExprCompareSkip(pTerm->pExpr->pLeft,
154038 pScan->pIdxExpr,iCur)==0)
154039 && (pScan->iEquiv<=1 || !ExprHasProperty(pTerm->pExpr, EP_OuterON))
154040 ){
154041 if( (pTerm->eOperator & WO_EQUIV)!=0
154042 && pScan->nEquiv<ArraySize(pScan->aiCur)
154043 && (pX = whereRightSubexprIsColumn(pTerm->pExpr))!=0
154044 ){
@@ -154487,11 +154461,11 @@
154461 ){
154462 char aff;
154463 if( pTerm->leftCursor!=pSrc->iCursor ) return 0;
154464 if( (pTerm->eOperator & (WO_EQ|WO_IS))==0 ) return 0;
154465 if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
154466 && !ExprHasProperty(pTerm->pExpr, EP_OuterON)
154467 && (pTerm->eOperator & WO_IS)
154468 ){
154469 /* Cannot use an IS term from the WHERE clause as an index driver for
154470 ** the RHS of a LEFT JOIN or for the LHS of a RIGHT JOIN. Such a term
154471 ** can only be used if it is from the ON clause. */
@@ -154911,11 +154885,11 @@
154885 /* tag-20191211-002: WHERE-clause constraints are not useful to the
154886 ** right-hand table of a LEFT JOIN nor to the left-hand table of a
154887 ** RIGHT JOIN. See tag-20191211-001 for the
154888 ** equivalent restriction for ordinary tables. */
154889 if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
154890 && !ExprHasProperty(pTerm->pExpr, EP_OuterON)
154891 ){
154892 continue;
154893 }
154894 nTerm++;
154895 pTerm->wtFlags |= TERM_OK;
@@ -155789,11 +155763,11 @@
155763 char zType[8];
155764 char zLeft[50];
155765 memcpy(zType, "....", 5);
155766 if( pTerm->wtFlags & TERM_VIRTUAL ) zType[0] = 'V';
155767 if( pTerm->eOperator & WO_EQUIV ) zType[1] = 'E';
155768 if( ExprHasProperty(pTerm->pExpr, EP_OuterON) ) zType[2] = 'L';
155769 if( pTerm->wtFlags & TERM_CODED ) zType[3] = 'C';
155770 if( pTerm->eOperator & WO_SINGLE ){
155771 assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
155772 sqlite3_snprintf(sizeof(zLeft),zLeft,"left={%d:%d}",
155773 pTerm->leftCursor, pTerm->u.x.leftColumn);
@@ -156566,11 +156540,11 @@
156540 /* tag-20191211-001: Do not allow constraints from the WHERE clause to
156541 ** be used by the right table of a LEFT JOIN nor by the left table of a
156542 ** RIGHT JOIN. Only constraints in the
156543 ** ON clause are allowed. See tag-20191211-002 for the vtab equivalent. */
156544 if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0
156545 && !ExprHasProperty(pTerm->pExpr, EP_OuterON|EP_InnerON)
156546 ){
156547 continue;
156548 }
156549
156550 if( IsUniqueIndex(pProbe) && saved_nEq==pProbe->nKeyCol-1 ){
@@ -156935,12 +156909,12 @@
156909 }
156910 if( pParse->db->flags & SQLITE_EnableQPSG ) pParse = 0;
156911 for(i=0, pTerm=pWC->a; i<pWC->nTerm; i++, pTerm++){
156912 Expr *pExpr;
156913 pExpr = pTerm->pExpr;
156914 if( (!ExprHasProperty(pExpr, EP_OuterON) || pExpr->w.iJoin==iTab)
156915 && (isLeft==0 || ExprHasProperty(pExpr, EP_OuterON))
156916 && sqlite3ExprImpliesExpr(pParse, pExpr, pWhere, iTab)
156917 && (pTerm->wtFlags & TERM_VNULL)==0
156918 ){
156919 return 1;
156920 }
@@ -157212,11 +157186,18 @@
157186
157187 pNew->rRun = sqlite3LogEstAdd(pNew->rRun, nLookup);
157188 }
157189 ApplyCostMultiplier(pNew->rRun, pTab->costMult);
157190 whereLoopOutputAdjust(pWC, pNew, rSize);
157191 if( (pSrc->fg.jointype & JT_RIGHT)!=0 && pProbe->aColExpr ){
157192 /* Do not do an SCAN of a index-on-expression in a RIGHT JOIN
157193 ** because the cursor used to access the index might not be
157194 ** positioned to the correct row during the right-join no-match
157195 ** loop. */
157196 }else{
157197 rc = whereLoopInsert(pBuilder, pNew);
157198 }
157199 pNew->nOut = rSize;
157200 if( rc ) break;
157201 }
157202 }
157203
@@ -158944,11 +158925,11 @@
158925 }
158926 if( (tabUsed & pLoop->maskSelf)!=0 ) continue;
158927 pEnd = pWInfo->sWC.a + pWInfo->sWC.nTerm;
158928 for(pTerm=pWInfo->sWC.a; pTerm<pEnd; pTerm++){
158929 if( (pTerm->prereqAll & pLoop->maskSelf)!=0 ){
158930 if( !ExprHasProperty(pTerm->pExpr, EP_OuterON)
158931 || pTerm->pExpr->w.iJoin!=pItem->iCursor
158932 ){
158933 break;
158934 }
158935 }
@@ -159898,10 +159879,11 @@
159879 VdbeModuleComment((v, "End WHERE-loop%d: %s", i,
159880 pWInfo->pTabList->a[pLevel->iFrom].pTab->zName));
159881 }
159882
159883 assert( pWInfo->nLevel<=pTabList->nSrc );
159884 if( pWInfo->pExprMods ) whereUndoExprMods(pWInfo);
159885 for(i=0, pLevel=pWInfo->a; i<pWInfo->nLevel; i++, pLevel++){
159886 int k, last;
159887 VdbeOp *pOp, *pLastOp;
159888 Index *pIdx = 0;
159889 SrcItem *pTabItem = &pTabList->a[pLevel->iFrom];
@@ -160034,11 +160016,10 @@
160016 */
160017 sqlite3VdbeResolveLabel(v, pWInfo->iBreak);
160018
160019 /* Final cleanup
160020 */
 
160021 pParse->nQueryLoop = pWInfo->savedNQueryLoop;
160022 whereInfoFree(db, pWInfo);
160023 return;
160024 }
160025
@@ -163662,22 +163643,22 @@
163643 #define sqlite3ParserCTX_PDECL ,Parse *pParse
163644 #define sqlite3ParserCTX_PARAM ,pParse
163645 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
163646 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
163647 #define YYFALLBACK 1
163648 #define YYNSTATE 576
163649 #define YYNRULE 405
163650 #define YYNRULE_WITH_ACTION 342
163651 #define YYNTOKEN 185
163652 #define YY_MAX_SHIFT 575
163653 #define YY_MIN_SHIFTREDUCE 835
163654 #define YY_MAX_SHIFTREDUCE 1239
163655 #define YY_ERROR_ACTION 1240
163656 #define YY_ACCEPT_ACTION 1241
163657 #define YY_NO_ACTION 1242
163658 #define YY_MIN_REDUCE 1243
163659 #define YY_MAX_REDUCE 1647
163660 /************* End control #defines *******************************************/
163661 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
163662
163663 /* Define the yytestcase() macro to be a no-op if is not already defined
163664 ** otherwise.
@@ -163740,219 +163721,222 @@
163721 ** yy_reduce_ofst[] For each state, the offset into yy_action for
163722 ** shifting non-terminals after a reduce.
163723 ** yy_default[] Default action for each state.
163724 **
163725 *********** Begin parsing tables **********************************************/
163726 #define YY_ACTTAB_COUNT (2098)
163727 static const YYACTIONTYPE yy_action[] = {
163728 /* 0 */ 568, 208, 568, 118, 115, 229, 568, 118, 115, 229,
163729 /* 10 */ 568, 1314, 377, 1293, 408, 562, 562, 562, 568, 409,
163730 /* 20 */ 378, 1314, 1276, 41, 41, 41, 41, 208, 1526, 71,
163731 /* 30 */ 71, 971, 419, 41, 41, 491, 303, 279, 303, 972,
163732 /* 40 */ 397, 71, 71, 125, 126, 80, 1217, 1217, 1050, 1053,
163733 /* 50 */ 1040, 1040, 123, 123, 124, 124, 124, 124, 476, 409,
163734 /* 60 */ 1241, 1, 1, 575, 2, 1245, 550, 118, 115, 229,
163735 /* 70 */ 317, 480, 146, 480, 524, 118, 115, 229, 529, 1327,
163736 /* 80 */ 417, 523, 142, 125, 126, 80, 1217, 1217, 1050, 1053,
163737 /* 90 */ 1040, 1040, 123, 123, 124, 124, 124, 124, 118, 115,
163738 /* 100 */ 229, 327, 122, 122, 122, 122, 121, 121, 120, 120,
163739 /* 110 */ 120, 119, 116, 444, 284, 284, 284, 284, 442, 442,
163740 /* 120 */ 442, 1567, 376, 1569, 1192, 375, 1163, 565, 1163, 565,
163741 /* 130 */ 409, 1567, 537, 259, 226, 444, 101, 145, 449, 316,
163742 /* 140 */ 559, 240, 122, 122, 122, 122, 121, 121, 120, 120,
163743 /* 150 */ 120, 119, 116, 444, 125, 126, 80, 1217, 1217, 1050,
163744 /* 160 */ 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, 142,
163745 /* 170 */ 294, 1192, 339, 448, 120, 120, 120, 119, 116, 444,
163746 /* 180 */ 127, 1192, 1193, 1194, 148, 441, 440, 568, 119, 116,
163747 /* 190 */ 444, 124, 124, 124, 124, 117, 122, 122, 122, 122,
163748 /* 200 */ 121, 121, 120, 120, 120, 119, 116, 444, 454, 113,
163749 /* 210 */ 13, 13, 546, 122, 122, 122, 122, 121, 121, 120,
163750 /* 220 */ 120, 120, 119, 116, 444, 422, 316, 559, 1192, 1193,
163751 /* 230 */ 1194, 149, 1224, 409, 1224, 124, 124, 124, 124, 122,
163752 /* 240 */ 122, 122, 122, 121, 121, 120, 120, 120, 119, 116,
163753 /* 250 */ 444, 465, 342, 1037, 1037, 1051, 1054, 125, 126, 80,
163754 /* 260 */ 1217, 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124,
163755 /* 270 */ 124, 124, 1279, 522, 222, 1192, 568, 409, 224, 514,
163756 /* 280 */ 175, 82, 83, 122, 122, 122, 122, 121, 121, 120,
163757 /* 290 */ 120, 120, 119, 116, 444, 1007, 16, 16, 1192, 133,
163758 /* 300 */ 133, 125, 126, 80, 1217, 1217, 1050, 1053, 1040, 1040,
163759 /* 310 */ 123, 123, 124, 124, 124, 124, 122, 122, 122, 122,
163760 /* 320 */ 121, 121, 120, 120, 120, 119, 116, 444, 1041, 546,
163761 /* 330 */ 1192, 373, 1192, 1193, 1194, 252, 1434, 399, 504, 501,
163762 /* 340 */ 500, 111, 560, 566, 4, 926, 926, 433, 499, 340,
163763 /* 350 */ 460, 328, 360, 394, 1237, 1192, 1193, 1194, 563, 568,
163764 /* 360 */ 122, 122, 122, 122, 121, 121, 120, 120, 120, 119,
163765 /* 370 */ 116, 444, 284, 284, 369, 1580, 1607, 441, 440, 154,
163766 /* 380 */ 409, 445, 71, 71, 1286, 565, 1221, 1192, 1193, 1194,
163767 /* 390 */ 85, 1223, 271, 557, 543, 515, 1561, 568, 98, 1222,
163768 /* 400 */ 6, 1278, 472, 142, 125, 126, 80, 1217, 1217, 1050,
163769 /* 410 */ 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, 550,
163770 /* 420 */ 13, 13, 1027, 507, 1224, 1192, 1224, 549, 109, 109,
163771 /* 430 */ 222, 568, 1238, 175, 568, 427, 110, 197, 445, 570,
163772 /* 440 */ 569, 430, 1552, 1017, 325, 551, 1192, 270, 287, 368,
163773 /* 450 */ 510, 363, 509, 257, 71, 71, 543, 71, 71, 359,
163774 /* 460 */ 316, 559, 1613, 122, 122, 122, 122, 121, 121, 120,
163775 /* 470 */ 120, 120, 119, 116, 444, 1017, 1017, 1019, 1020, 27,
163776 /* 480 */ 284, 284, 1192, 1193, 1194, 1158, 568, 1612, 409, 901,
163777 /* 490 */ 190, 550, 356, 565, 550, 937, 533, 517, 1158, 516,
163778 /* 500 */ 413, 1158, 552, 1192, 1193, 1194, 568, 544, 1554, 51,
163779 /* 510 */ 51, 214, 125, 126, 80, 1217, 1217, 1050, 1053, 1040,
163780 /* 520 */ 1040, 123, 123, 124, 124, 124, 124, 1192, 474, 135,
163781 /* 530 */ 135, 409, 284, 284, 1490, 505, 121, 121, 120, 120,
163782 /* 540 */ 120, 119, 116, 444, 1007, 565, 518, 217, 541, 1561,
163783 /* 550 */ 316, 559, 142, 6, 532, 125, 126, 80, 1217, 1217,
163784 /* 560 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124,
163785 /* 570 */ 1555, 122, 122, 122, 122, 121, 121, 120, 120, 120,
163786 /* 580 */ 119, 116, 444, 485, 1192, 1193, 1194, 482, 281, 1267,
163787 /* 590 */ 957, 252, 1192, 373, 504, 501, 500, 1192, 340, 571,
163788 /* 600 */ 1192, 571, 409, 292, 499, 957, 876, 191, 480, 316,
163789 /* 610 */ 559, 384, 290, 380, 122, 122, 122, 122, 121, 121,
163790 /* 620 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217,
163791 /* 630 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163792 /* 640 */ 124, 409, 394, 1136, 1192, 869, 100, 284, 284, 1192,
163793 /* 650 */ 1193, 1194, 373, 1093, 1192, 1193, 1194, 1192, 1193, 1194,
163794 /* 660 */ 565, 455, 32, 373, 233, 125, 126, 80, 1217, 1217,
163795 /* 670 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124,
163796 /* 680 */ 1433, 959, 568, 228, 958, 122, 122, 122, 122, 121,
163797 /* 690 */ 121, 120, 120, 120, 119, 116, 444, 1158, 228, 1192,
163798 /* 700 */ 157, 1192, 1193, 1194, 1553, 13, 13, 301, 957, 1232,
163799 /* 710 */ 1158, 153, 409, 1158, 373, 1583, 1176, 5, 369, 1580,
163800 /* 720 */ 429, 1238, 3, 957, 122, 122, 122, 122, 121, 121,
163801 /* 730 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217,
163802 /* 740 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163803 /* 750 */ 124, 409, 208, 567, 1192, 1028, 1192, 1193, 1194, 1192,
163804 /* 760 */ 388, 852, 155, 1552, 286, 402, 1098, 1098, 488, 568,
163805 /* 770 */ 465, 342, 1319, 1319, 1552, 125, 126, 80, 1217, 1217,
163806 /* 780 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124,
163807 /* 790 */ 129, 568, 13, 13, 374, 122, 122, 122, 122, 121,
163808 /* 800 */ 121, 120, 120, 120, 119, 116, 444, 302, 568, 453,
163809 /* 810 */ 528, 1192, 1193, 1194, 13, 13, 1192, 1193, 1194, 1297,
163810 /* 820 */ 463, 1267, 409, 1317, 1317, 1552, 1012, 453, 452, 200,
163811 /* 830 */ 299, 71, 71, 1265, 122, 122, 122, 122, 121, 121,
163812 /* 840 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217,
163813 /* 850 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163814 /* 860 */ 124, 409, 227, 1073, 1158, 284, 284, 419, 312, 278,
163815 /* 870 */ 278, 285, 285, 1419, 406, 405, 382, 1158, 565, 568,
163816 /* 880 */ 1158, 1196, 565, 1600, 565, 125, 126, 80, 1217, 1217,
163817 /* 890 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124,
163818 /* 900 */ 453, 1482, 13, 13, 1536, 122, 122, 122, 122, 121,
163819 /* 910 */ 121, 120, 120, 120, 119, 116, 444, 201, 568, 354,
163820 /* 920 */ 1586, 575, 2, 1245, 840, 841, 842, 1562, 317, 1212,
163821 /* 930 */ 146, 6, 409, 255, 254, 253, 206, 1327, 9, 1196,
163822 /* 940 */ 262, 71, 71, 424, 122, 122, 122, 122, 121, 121,
163823 /* 950 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217,
163824 /* 960 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163825 /* 970 */ 124, 568, 284, 284, 568, 1213, 409, 574, 313, 1245,
163826 /* 980 */ 349, 1296, 352, 419, 317, 565, 146, 491, 525, 1643,
163827 /* 990 */ 395, 371, 491, 1327, 70, 70, 1295, 71, 71, 240,
163828 /* 1000 */ 1325, 104, 80, 1217, 1217, 1050, 1053, 1040, 1040, 123,
163829 /* 1010 */ 123, 124, 124, 124, 124, 122, 122, 122, 122, 121,
163830 /* 1020 */ 121, 120, 120, 120, 119, 116, 444, 1114, 284, 284,
163831 /* 1030 */ 428, 448, 1525, 1213, 439, 284, 284, 1489, 1352, 311,
163832 /* 1040 */ 474, 565, 1115, 971, 491, 491, 217, 1263, 565, 1538,
163833 /* 1050 */ 568, 972, 207, 568, 1027, 240, 383, 1116, 519, 122,
163834 /* 1060 */ 122, 122, 122, 121, 121, 120, 120, 120, 119, 116,
163835 /* 1070 */ 444, 1018, 107, 71, 71, 1017, 13, 13, 912, 568,
163836 /* 1080 */ 1495, 568, 284, 284, 97, 526, 491, 448, 913, 1326,
163837 /* 1090 */ 1322, 545, 409, 284, 284, 565, 151, 209, 1495, 1497,
163838 /* 1100 */ 262, 450, 55, 55, 56, 56, 565, 1017, 1017, 1019,
163839 /* 1110 */ 443, 332, 409, 527, 12, 295, 125, 126, 80, 1217,
163840 /* 1120 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163841 /* 1130 */ 124, 347, 409, 864, 1534, 1213, 125, 126, 80, 1217,
163842 /* 1140 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163843 /* 1150 */ 124, 1137, 1641, 474, 1641, 371, 125, 114, 80, 1217,
163844 /* 1160 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124,
163845 /* 1170 */ 124, 1495, 329, 474, 331, 122, 122, 122, 122, 121,
163846 /* 1180 */ 121, 120, 120, 120, 119, 116, 444, 203, 1419, 568,
163847 /* 1190 */ 1294, 864, 464, 1213, 436, 122, 122, 122, 122, 121,
163848 /* 1200 */ 121, 120, 120, 120, 119, 116, 444, 553, 1137, 1642,
163849 /* 1210 */ 539, 1642, 15, 15, 892, 122, 122, 122, 122, 121,
163850 /* 1220 */ 121, 120, 120, 120, 119, 116, 444, 568, 298, 538,
163851 /* 1230 */ 1135, 1419, 1559, 1560, 1331, 409, 6, 6, 1169, 1268,
163852 /* 1240 */ 415, 320, 284, 284, 1419, 508, 565, 525, 300, 457,
163853 /* 1250 */ 43, 43, 568, 893, 12, 565, 330, 478, 425, 407,
163854 /* 1260 */ 126, 80, 1217, 1217, 1050, 1053, 1040, 1040, 123, 123,
163855 /* 1270 */ 124, 124, 124, 124, 568, 57, 57, 288, 1192, 1419,
163856 /* 1280 */ 496, 458, 392, 392, 391, 273, 389, 1135, 1558, 849,
163857 /* 1290 */ 1169, 407, 6, 568, 321, 1158, 470, 44, 44, 1557,
163858 /* 1300 */ 1114, 426, 234, 6, 323, 256, 540, 256, 1158, 431,
163859 /* 1310 */ 568, 1158, 322, 17, 487, 1115, 58, 58, 122, 122,
163860 /* 1320 */ 122, 122, 121, 121, 120, 120, 120, 119, 116, 444,
163861 /* 1330 */ 1116, 216, 481, 59, 59, 1192, 1193, 1194, 111, 560,
163862 /* 1340 */ 324, 4, 236, 456, 526, 568, 237, 456, 568, 437,
163863 /* 1350 */ 168, 556, 420, 141, 479, 563, 568, 293, 568, 1095,
163864 /* 1360 */ 568, 293, 568, 1095, 531, 568, 872, 8, 60, 60,
163865 /* 1370 */ 235, 61, 61, 568, 414, 568, 414, 568, 445, 62,
163866 /* 1380 */ 62, 45, 45, 46, 46, 47, 47, 199, 49, 49,
163867 /* 1390 */ 557, 568, 359, 568, 100, 486, 50, 50, 63, 63,
163868 /* 1400 */ 64, 64, 561, 415, 535, 410, 568, 1027, 568, 534,
163869 /* 1410 */ 316, 559, 316, 559, 65, 65, 14, 14, 568, 1027,
163870 /* 1420 */ 568, 512, 932, 872, 1018, 109, 109, 931, 1017, 66,
163871 /* 1430 */ 66, 131, 131, 110, 451, 445, 570, 569, 416, 177,
163872 /* 1440 */ 1017, 132, 132, 67, 67, 568, 467, 568, 932, 471,
163873 /* 1450 */ 1364, 283, 226, 931, 315, 1363, 407, 568, 459, 407,
163874 /* 1460 */ 1017, 1017, 1019, 239, 407, 86, 213, 1350, 52, 52,
163875 /* 1470 */ 68, 68, 1017, 1017, 1019, 1020, 27, 1585, 1180, 447,
163876 /* 1480 */ 69, 69, 288, 97, 108, 1541, 106, 392, 392, 391,
163877 /* 1490 */ 273, 389, 568, 879, 849, 883, 568, 111, 560, 466,
163878 /* 1500 */ 4, 568, 152, 30, 38, 568, 1132, 234, 396, 323,
163879 /* 1510 */ 111, 560, 527, 4, 563, 53, 53, 322, 568, 163,
163880 /* 1520 */ 163, 568, 337, 468, 164, 164, 333, 563, 76, 76,
163881 /* 1530 */ 568, 289, 1514, 568, 31, 1513, 568, 445, 338, 483,
163882 /* 1540 */ 100, 54, 54, 344, 72, 72, 296, 236, 1080, 557,
163883 /* 1550 */ 445, 879, 1360, 134, 134, 168, 73, 73, 141, 161,
163884 /* 1560 */ 161, 1574, 557, 535, 568, 319, 568, 348, 536, 1009,
163885 /* 1570 */ 473, 261, 261, 891, 890, 235, 535, 568, 1027, 568,
163886 /* 1580 */ 475, 534, 261, 367, 109, 109, 521, 136, 136, 130,
163887 /* 1590 */ 130, 1027, 110, 366, 445, 570, 569, 109, 109, 1017,
163888 /* 1600 */ 162, 162, 156, 156, 568, 110, 1080, 445, 570, 569,
163889 /* 1610 */ 410, 351, 1017, 568, 353, 316, 559, 568, 343, 568,
163890 /* 1620 */ 100, 497, 357, 258, 100, 898, 899, 140, 140, 355,
163891 /* 1630 */ 1310, 1017, 1017, 1019, 1020, 27, 139, 139, 362, 451,
163892 /* 1640 */ 137, 137, 138, 138, 1017, 1017, 1019, 1020, 27, 1180,
163893 /* 1650 */ 447, 568, 372, 288, 111, 560, 1021, 4, 392, 392,
163894 /* 1660 */ 391, 273, 389, 568, 1141, 849, 568, 1076, 568, 258,
163895 /* 1670 */ 492, 563, 568, 211, 75, 75, 555, 962, 234, 261,
163896 /* 1680 */ 323, 111, 560, 929, 4, 113, 77, 77, 322, 74,
163897 /* 1690 */ 74, 42, 42, 1373, 445, 48, 48, 1418, 563, 974,
163898 /* 1700 */ 975, 1092, 1091, 1092, 1091, 862, 557, 150, 930, 1346,
163899 /* 1710 */ 113, 1358, 554, 1424, 1021, 1275, 1266, 1254, 236, 1253,
163900 /* 1720 */ 1255, 445, 1593, 1343, 308, 276, 168, 309, 11, 141,
163901 /* 1730 */ 393, 310, 232, 557, 1405, 1027, 335, 291, 1400, 219,
163902 /* 1740 */ 336, 109, 109, 936, 297, 1410, 235, 341, 477, 110,
163903 /* 1750 */ 502, 445, 570, 569, 1393, 1409, 1017, 400, 1293, 365,
163904 /* 1760 */ 223, 1486, 1027, 1485, 1355, 1356, 1354, 1353, 109, 109,
163905 /* 1770 */ 204, 1596, 1232, 558, 265, 218, 110, 205, 445, 570,
163906 /* 1780 */ 569, 410, 387, 1017, 1533, 179, 316, 559, 1017, 1017,
163907 /* 1790 */ 1019, 1020, 27, 230, 1531, 1229, 79, 560, 85, 4,
163908 /* 1800 */ 418, 215, 548, 81, 84, 188, 1406, 173, 181, 461,
163909 /* 1810 */ 451, 35, 462, 563, 183, 1017, 1017, 1019, 1020, 27,
163910 /* 1820 */ 184, 1491, 185, 186, 495, 242, 98, 398, 1412, 36,
163911 /* 1830 */ 1411, 484, 91, 469, 401, 1414, 445, 192, 1480, 246,
163912 /* 1840 */ 1502, 490, 346, 277, 248, 196, 493, 511, 557, 350,
163913 /* 1850 */ 1256, 249, 250, 403, 1313, 1312, 111, 560, 432, 4,
163914 /* 1860 */ 1311, 1304, 93, 1611, 883, 1610, 224, 404, 434, 520,
163915 /* 1870 */ 263, 435, 1579, 563, 1283, 1282, 364, 1027, 306, 1281,
163916 /* 1880 */ 264, 1609, 1565, 109, 109, 370, 1303, 307, 1564, 438,
163917 /* 1890 */ 128, 110, 1378, 445, 570, 569, 445, 546, 1017, 10,
163918 /* 1900 */ 1466, 105, 381, 1377, 34, 572, 99, 1336, 557, 314,
163919 /* 1910 */ 1186, 530, 272, 274, 379, 210, 1335, 547, 385, 386,
163920 /* 1920 */ 275, 573, 1251, 1246, 411, 412, 1518, 165, 178, 1519,
163921 /* 1930 */ 1017, 1017, 1019, 1020, 27, 1517, 1516, 1027, 78, 147,
163922 /* 1940 */ 166, 220, 221, 109, 109, 836, 304, 167, 446, 212,
163923 /* 1950 */ 318, 110, 231, 445, 570, 569, 144, 1090, 1017, 1088,
163924 /* 1960 */ 326, 180, 169, 1212, 182, 334, 238, 915, 241, 1104,
163925 /* 1970 */ 187, 170, 171, 421, 87, 88, 423, 189, 89, 90,
163926 /* 1980 */ 172, 1107, 243, 1103, 244, 158, 18, 245, 345, 247,
163927 /* 1990 */ 1017, 1017, 1019, 1020, 27, 261, 1096, 193, 1226, 489,
163928 /* 2000 */ 194, 37, 366, 851, 494, 251, 195, 506, 92, 19,
163929 /* 2010 */ 498, 358, 20, 503, 881, 361, 94, 894, 305, 159,
163930 /* 2020 */ 513, 39, 95, 1174, 160, 1056, 966, 1143, 96, 174,
163931 /* 2030 */ 1142, 225, 280, 282, 198, 960, 113, 1164, 1160, 260,
163932 /* 2040 */ 21, 22, 23, 1162, 1168, 1167, 1148, 24, 33, 25,
163933 /* 2050 */ 202, 542, 26, 100, 1071, 102, 1057, 103, 7, 1055,
163934 /* 2060 */ 1059, 1113, 1060, 1112, 266, 267, 28, 40, 390, 1022,
163935 /* 2070 */ 863, 112, 29, 564, 1182, 1181, 268, 176, 143, 925,
163936 /* 2080 */ 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
163937 /* 2090 */ 1242, 1242, 1242, 1242, 269, 1602, 1242, 1601,
163938 };
163939 static const YYCODETYPE yy_lookahead[] = {
163940 /* 0 */ 193, 193, 193, 274, 275, 276, 193, 274, 275, 276,
163941 /* 10 */ 193, 223, 219, 225, 206, 210, 211, 212, 193, 19,
163942 /* 20 */ 219, 233, 216, 216, 217, 216, 217, 193, 295, 216,
@@ -164114,57 +164098,57 @@
164098 /* 1580 */ 23, 90, 25, 121, 106, 107, 19, 216, 217, 216,
164099 /* 1590 */ 217, 100, 114, 131, 116, 117, 118, 106, 107, 121,
164100 /* 1600 */ 216, 217, 216, 217, 193, 114, 117, 116, 117, 118,
164101 /* 1610 */ 133, 193, 121, 193, 193, 138, 139, 193, 23, 193,
164102 /* 1620 */ 25, 23, 23, 25, 25, 7, 8, 216, 217, 193,
164103 /* 1630 */ 193, 153, 154, 155, 156, 157, 216, 217, 193, 162,
164104 /* 1640 */ 216, 217, 216, 217, 153, 154, 155, 156, 157, 1,
164105 /* 1650 */ 2, 193, 193, 5, 19, 20, 59, 22, 10, 11,
164106 /* 1660 */ 12, 13, 14, 193, 97, 17, 193, 23, 193, 25,
164107 /* 1670 */ 288, 36, 193, 242, 216, 217, 236, 23, 30, 25,
164108 /* 1680 */ 32, 19, 20, 23, 22, 25, 216, 217, 40, 216,
164109 /* 1690 */ 217, 216, 217, 193, 59, 216, 217, 193, 36, 83,
164110 /* 1700 */ 84, 153, 153, 155, 155, 23, 71, 25, 23, 193,
164111 /* 1710 */ 25, 193, 193, 193, 117, 193, 193, 193, 70, 193,
164112 /* 1720 */ 193, 59, 193, 255, 255, 287, 78, 255, 243, 81,
164113 /* 1730 */ 191, 255, 297, 71, 271, 100, 293, 245, 267, 214,
164114 /* 1740 */ 246, 106, 107, 108, 246, 271, 98, 245, 293, 114,
164115 /* 1750 */ 220, 116, 117, 118, 267, 271, 121, 271, 225, 219,
164116 /* 1760 */ 229, 219, 100, 219, 259, 259, 259, 259, 106, 107,
164117 /* 1770 */ 249, 196, 60, 280, 141, 243, 114, 249, 116, 117,
164118 /* 1780 */ 118, 133, 245, 121, 200, 297, 138, 139, 153, 154,
164119 /* 1790 */ 155, 156, 157, 297, 200, 38, 19, 20, 151, 22,
164120 /* 1800 */ 200, 150, 140, 294, 294, 22, 272, 43, 234, 18,
164121 /* 1810 */ 162, 270, 200, 36, 237, 153, 154, 155, 156, 157,
164122 /* 1820 */ 237, 283, 237, 237, 18, 199, 149, 246, 272, 270,
164123 /* 1830 */ 272, 200, 158, 246, 246, 234, 59, 234, 246, 199,
164124 /* 1840 */ 290, 62, 289, 200, 199, 22, 221, 115, 71, 200,
164125 /* 1850 */ 200, 199, 199, 221, 218, 218, 19, 20, 64, 22,
164126 /* 1860 */ 218, 227, 22, 224, 126, 224, 165, 221, 24, 305,
164127 /* 1870 */ 200, 113, 312, 36, 218, 220, 218, 100, 282, 218,
164128 /* 1880 */ 91, 218, 317, 106, 107, 221, 227, 282, 317, 82,
164129 /* 1890 */ 148, 114, 265, 116, 117, 118, 59, 145, 121, 22,
164130 /* 1900 */ 277, 158, 200, 265, 25, 202, 147, 250, 71, 279,
164131 /* 1910 */ 13, 146, 194, 194, 249, 248, 250, 140, 247, 246,
164132 /* 1920 */ 6, 192, 192, 192, 303, 303, 213, 207, 300, 213,
164133 /* 1930 */ 153, 154, 155, 156, 157, 213, 213, 100, 213, 222,
164134 /* 1940 */ 207, 214, 214, 106, 107, 4, 222, 207, 3, 22,
164135 /* 1950 */ 163, 114, 15, 116, 117, 118, 16, 23, 121, 23,
164136 /* 1960 */ 139, 151, 130, 25, 142, 16, 24, 20, 144, 1,
164137 /* 1970 */ 142, 130, 130, 61, 53, 53, 37, 151, 53, 53,
164138 /* 1980 */ 130, 116, 34, 1, 141, 5, 22, 115, 161, 141,
164139 /* 1990 */ 153, 154, 155, 156, 157, 25, 68, 68, 75, 41,
164140 /* 2000 */ 115, 24, 131, 20, 19, 125, 22, 96, 22, 22,
164141 /* 2010 */ 67, 23, 22, 67, 59, 24, 22, 28, 67, 23,
164142 /* 2020 */ 22, 22, 149, 23, 23, 23, 116, 23, 25, 37,
164143 /* 2030 */ 97, 141, 23, 23, 22, 143, 25, 75, 88, 34,
164144 /* 2040 */ 34, 34, 34, 86, 75, 93, 23, 34, 22, 34,
164145 /* 2050 */ 25, 24, 34, 25, 23, 142, 23, 142, 44, 23,
164146 /* 2060 */ 23, 23, 11, 23, 25, 22, 22, 22, 15, 23,
164147 /* 2070 */ 23, 22, 22, 25, 1, 1, 141, 25, 23, 135,
164148 /* 2080 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164149 /* 2090 */ 319, 319, 319, 319, 141, 141, 319, 141, 319, 319,
164150 /* 2100 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164151 /* 2110 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164152 /* 2120 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164153 /* 2130 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164154 /* 2140 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
@@ -164175,77 +164159,82 @@
164159 /* 2190 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164160 /* 2200 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164161 /* 2210 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164162 /* 2220 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164163 /* 2230 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164164 /* 2240 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164165 /* 2250 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164166 /* 2260 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164167 /* 2270 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
164168 /* 2280 */ 319, 319, 319,
164169 };
164170 #define YY_SHIFT_COUNT (575)
164171 #define YY_SHIFT_MIN (0)
164172 #define YY_SHIFT_MAX (2074)
164173 static const unsigned short int yy_shift_ofst[] = {
164174 /* 0 */ 1648, 1477, 1272, 322, 322, 1, 1319, 1478, 1491, 1837,
164175 /* 10 */ 1837, 1837, 471, 0, 0, 214, 1093, 1837, 1837, 1837,
164176 /* 20 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164177 /* 30 */ 271, 271, 1219, 1219, 216, 88, 1, 1, 1, 1,
164178 /* 40 */ 1, 40, 111, 258, 361, 469, 512, 583, 622, 693,
164179 /* 50 */ 732, 803, 842, 913, 1073, 1093, 1093, 1093, 1093, 1093,
164180 /* 60 */ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
164181 /* 70 */ 1093, 1093, 1093, 1113, 1093, 1216, 957, 957, 1635, 1662,
164182 /* 80 */ 1777, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164183 /* 90 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164184 /* 100 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164185 /* 110 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164186 /* 120 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
164187 /* 130 */ 137, 181, 181, 181, 181, 181, 181, 181, 94, 430,
164188 /* 140 */ 66, 65, 112, 366, 533, 533, 740, 1261, 533, 533,
164189 /* 150 */ 79, 79, 533, 412, 412, 412, 77, 412, 123, 113,
164190 /* 160 */ 113, 22, 22, 2098, 2098, 328, 328, 328, 239, 468,
164191 /* 170 */ 468, 468, 468, 1015, 1015, 409, 366, 1129, 1186, 533,
164192 /* 180 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
164193 /* 190 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 969,
164194 /* 200 */ 621, 621, 533, 642, 788, 788, 1228, 1228, 822, 822,
164195 /* 210 */ 67, 1274, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 1307,
164196 /* 220 */ 954, 954, 585, 472, 640, 387, 695, 538, 541, 700,
164197 /* 230 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
164198 /* 240 */ 222, 533, 533, 533, 533, 533, 533, 533, 533, 533,
164199 /* 250 */ 533, 533, 533, 1179, 1179, 1179, 533, 533, 533, 565,
164200 /* 260 */ 533, 533, 533, 916, 1144, 533, 533, 1288, 533, 533,
164201 /* 270 */ 533, 533, 533, 533, 533, 533, 639, 1330, 209, 1076,
164202 /* 280 */ 1076, 1076, 1076, 580, 209, 209, 1313, 768, 917, 649,
164203 /* 290 */ 1181, 1316, 405, 1316, 1238, 249, 1181, 1181, 249, 1181,
164204 /* 300 */ 405, 1238, 1369, 464, 1259, 1012, 1012, 1012, 1368, 1368,
164205 /* 310 */ 1368, 1368, 184, 184, 1326, 904, 1287, 1480, 1712, 1712,
164206 /* 320 */ 1633, 1633, 1757, 1757, 1633, 1647, 1651, 1783, 1764, 1791,
164207 /* 330 */ 1791, 1791, 1791, 1633, 1806, 1677, 1651, 1651, 1677, 1783,
164208 /* 340 */ 1764, 1677, 1764, 1677, 1633, 1806, 1674, 1779, 1633, 1806,
164209 /* 350 */ 1823, 1633, 1806, 1633, 1806, 1823, 1732, 1732, 1732, 1794,
164210 /* 360 */ 1840, 1840, 1823, 1732, 1738, 1732, 1794, 1732, 1732, 1701,
164211 /* 370 */ 1844, 1758, 1758, 1823, 1633, 1789, 1789, 1807, 1807, 1742,
164212 /* 380 */ 1752, 1877, 1633, 1743, 1742, 1759, 1765, 1677, 1879, 1897,
164213 /* 390 */ 1897, 1914, 1914, 1914, 2098, 2098, 2098, 2098, 2098, 2098,
164214 /* 400 */ 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 207,
164215 /* 410 */ 1095, 331, 620, 903, 806, 1074, 1483, 1432, 1481, 1322,
164216 /* 420 */ 1370, 1394, 1515, 1291, 1546, 1547, 1557, 1595, 1598, 1599,
164217 /* 430 */ 1434, 1453, 1618, 1462, 1567, 1489, 1644, 1654, 1616, 1660,
164218 /* 440 */ 1548, 1549, 1682, 1685, 1597, 742, 1941, 1945, 1927, 1787,
164219 /* 450 */ 1937, 1940, 1934, 1936, 1821, 1810, 1832, 1938, 1938, 1942,
164220 /* 460 */ 1822, 1947, 1824, 1949, 1968, 1828, 1841, 1938, 1842, 1912,
164221 /* 470 */ 1939, 1938, 1826, 1921, 1922, 1925, 1926, 1850, 1865, 1948,
164222 /* 480 */ 1843, 1982, 1980, 1964, 1872, 1827, 1928, 1970, 1929, 1923,
164223 /* 490 */ 1958, 1848, 1885, 1977, 1983, 1985, 1871, 1880, 1984, 1943,
164224 /* 500 */ 1986, 1987, 1988, 1990, 1946, 1955, 1991, 1911, 1989, 1994,
164225 /* 510 */ 1951, 1992, 1996, 1873, 1998, 2000, 2001, 2002, 2003, 2004,
164226 /* 520 */ 1999, 1933, 1890, 2009, 2010, 1910, 2005, 2012, 1892, 2011,
164227 /* 530 */ 2006, 2007, 2008, 2013, 1950, 1962, 1957, 2014, 1969, 1952,
164228 /* 540 */ 2015, 2023, 2026, 2027, 2025, 2028, 2018, 1913, 1915, 2031,
164229 /* 550 */ 2011, 2033, 2036, 2037, 2038, 2039, 2040, 2043, 2051, 2044,
164230 /* 560 */ 2045, 2046, 2047, 2049, 2050, 2048, 1944, 1935, 1953, 1954,
164231 /* 570 */ 1956, 2052, 2055, 2053, 2073, 2074,
164232 };
164233 #define YY_REDUCE_COUNT (408)
164234 #define YY_REDUCE_MIN (-271)
164235 #define YY_REDUCE_MAX (1740)
164236 static const short yy_reduce_ofst[] = {
164237 /* 0 */ -125, 733, 789, 241, 293, -123, -193, -191, -183, -187,
164238 /* 10 */ 166, 238, 133, -207, -199, -267, -176, -6, 204, 489,
164239 /* 20 */ 576, -175, 598, 686, 615, 725, 860, 778, 781, 857,
164240 /* 30 */ 616, 887, 87, 240, -192, 408, 626, 796, 843, 854,
@@ -164255,98 +164244,99 @@
164244 /* 70 */ -271, -271, -271, -271, -271, -271, -271, -271, 80, 83,
164245 /* 80 */ 313, 886, 888, 996, 1034, 1059, 1081, 1100, 1117, 1152,
164246 /* 90 */ 1155, 1163, 1165, 1167, 1169, 1172, 1180, 1182, 1184, 1198,
164247 /* 100 */ 1200, 1213, 1215, 1225, 1227, 1252, 1254, 1264, 1299, 1303,
164248 /* 110 */ 1308, 1312, 1325, 1328, 1337, 1340, 1343, 1371, 1373, 1384,
164249 /* 120 */ 1386, 1411, 1420, 1424, 1426, 1458, 1470, 1473, 1475, 1479,
164250 /* 130 */ -271, -271, -271, -271, -271, -271, -271, -271, -271, -271,
164251 /* 140 */ -271, 138, 459, 396, -158, 470, 302, -212, 521, 201,
164252 /* 150 */ -195, -92, 559, 630, 632, 630, -271, 632, 901, 63,
164253 /* 160 */ 407, -271, -271, -271, -271, 161, 161, 161, 251, 335,
164254 /* 170 */ 847, 960, 980, 537, 588, 618, 628, 688, 688, -166,
164255 /* 180 */ -161, 674, 790, 794, 799, 851, 852, -122, 680, -120,
164256 /* 190 */ 995, 1038, 415, 1051, 893, 798, 962, 400, 1086, 779,
164257 /* 200 */ 923, 924, 263, 1041, 979, 990, 1083, 1097, 1031, 1194,
164258 /* 210 */ 362, 994, 1139, 1005, 1037, 1202, 1205, 1195, 1210, -194,
164259 /* 220 */ 56, 185, -135, 232, 522, 560, 601, 617, 669, 683,
164260 /* 230 */ 711, 856, 908, 941, 1048, 1101, 1147, 1257, 1262, 1265,
164261 /* 240 */ 392, 1292, 1333, 1339, 1342, 1346, 1350, 1359, 1374, 1418,
164262 /* 250 */ 1421, 1436, 1437, 593, 755, 770, 997, 1445, 1459, 1209,
164263 /* 260 */ 1500, 1504, 1516, 1132, 1243, 1518, 1519, 1440, 1520, 560,
164264 /* 270 */ 1522, 1523, 1524, 1526, 1527, 1529, 1382, 1438, 1431, 1468,
164265 /* 280 */ 1469, 1472, 1476, 1209, 1431, 1431, 1485, 1525, 1539, 1435,
164266 /* 290 */ 1463, 1471, 1492, 1487, 1443, 1494, 1474, 1484, 1498, 1486,
164267 /* 300 */ 1502, 1455, 1530, 1531, 1533, 1540, 1542, 1544, 1505, 1506,
164268 /* 310 */ 1507, 1508, 1521, 1528, 1493, 1537, 1532, 1575, 1488, 1496,
164269 /* 320 */ 1584, 1594, 1509, 1510, 1600, 1538, 1534, 1541, 1574, 1577,
164270 /* 330 */ 1583, 1585, 1586, 1612, 1626, 1581, 1556, 1558, 1587, 1559,
164271 /* 340 */ 1601, 1588, 1603, 1592, 1631, 1640, 1550, 1553, 1643, 1645,
164272 /* 350 */ 1625, 1649, 1652, 1650, 1653, 1632, 1636, 1637, 1642, 1634,
164273 /* 360 */ 1639, 1641, 1646, 1656, 1655, 1658, 1659, 1661, 1663, 1560,
164274 /* 370 */ 1564, 1596, 1605, 1664, 1670, 1565, 1571, 1627, 1638, 1657,
164275 /* 380 */ 1665, 1623, 1702, 1630, 1666, 1667, 1671, 1673, 1703, 1718,
164276 /* 390 */ 1719, 1729, 1730, 1731, 1621, 1622, 1628, 1720, 1713, 1716,
164277 /* 400 */ 1722, 1723, 1733, 1717, 1724, 1727, 1728, 1725, 1740,
164278 };
164279 static const YYACTIONTYPE yy_default[] = {
164280 /* 0 */ 1647, 1647, 1647, 1475, 1240, 1351, 1240, 1240, 1240, 1475,
164281 /* 10 */ 1475, 1475, 1240, 1381, 1381, 1528, 1273, 1240, 1240, 1240,
164282 /* 20 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1474, 1240, 1240,
164283 /* 30 */ 1240, 1240, 1563, 1563, 1240, 1240, 1240, 1240, 1240, 1240,
164284 /* 40 */ 1240, 1240, 1390, 1240, 1397, 1240, 1240, 1240, 1240, 1240,
164285 /* 50 */ 1476, 1477, 1240, 1240, 1240, 1527, 1529, 1492, 1404, 1403,
164286 /* 60 */ 1402, 1401, 1510, 1369, 1395, 1388, 1392, 1470, 1471, 1469,
164287 /* 70 */ 1473, 1477, 1476, 1240, 1391, 1438, 1454, 1437, 1240, 1240,
164288 /* 80 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164289 /* 90 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164290 /* 100 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164291 /* 110 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164292 /* 120 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164293 /* 130 */ 1446, 1453, 1452, 1451, 1460, 1450, 1447, 1440, 1439, 1441,
164294 /* 140 */ 1442, 1240, 1240, 1264, 1240, 1240, 1261, 1315, 1240, 1240,
164295 /* 150 */ 1240, 1240, 1240, 1547, 1546, 1240, 1443, 1240, 1273, 1432,
164296 /* 160 */ 1431, 1457, 1444, 1456, 1455, 1535, 1599, 1598, 1493, 1240,
164297 /* 170 */ 1240, 1240, 1240, 1240, 1240, 1563, 1240, 1240, 1240, 1240,
164298 /* 180 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164299 /* 190 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1371,
164300 /* 200 */ 1563, 1563, 1240, 1273, 1563, 1563, 1372, 1372, 1269, 1269,
164301 /* 210 */ 1375, 1240, 1542, 1342, 1342, 1342, 1342, 1351, 1342, 1240,
164302 /* 220 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164303 /* 230 */ 1240, 1240, 1240, 1240, 1532, 1530, 1240, 1240, 1240, 1240,
164304 /* 240 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164305 /* 250 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164306 /* 260 */ 1240, 1240, 1240, 1347, 1240, 1240, 1240, 1240, 1240, 1240,
164307 /* 270 */ 1240, 1240, 1240, 1240, 1240, 1592, 1240, 1505, 1329, 1347,
164308 /* 280 */ 1347, 1347, 1347, 1349, 1330, 1328, 1341, 1274, 1247, 1639,
164309 /* 290 */ 1407, 1396, 1348, 1396, 1636, 1394, 1407, 1407, 1394, 1407,
164310 /* 300 */ 1348, 1636, 1290, 1615, 1285, 1381, 1381, 1381, 1371, 1371,
164311 /* 310 */ 1371, 1371, 1375, 1375, 1472, 1348, 1341, 1240, 1639, 1639,
164312 /* 320 */ 1357, 1357, 1638, 1638, 1357, 1493, 1623, 1416, 1318, 1324,
164313 /* 330 */ 1324, 1324, 1324, 1357, 1258, 1394, 1623, 1623, 1394, 1416,
164314 /* 340 */ 1318, 1394, 1318, 1394, 1357, 1258, 1509, 1633, 1357, 1258,
164315 /* 350 */ 1483, 1357, 1258, 1357, 1258, 1483, 1316, 1316, 1316, 1305,
164316 /* 360 */ 1240, 1240, 1483, 1316, 1290, 1316, 1305, 1316, 1316, 1581,
164317 /* 370 */ 1240, 1487, 1487, 1483, 1357, 1573, 1573, 1384, 1384, 1389,
164318 /* 380 */ 1375, 1478, 1357, 1240, 1389, 1387, 1385, 1394, 1308, 1595,
164319 /* 390 */ 1595, 1591, 1591, 1591, 1644, 1644, 1542, 1608, 1273, 1273,
164320 /* 400 */ 1273, 1273, 1608, 1292, 1292, 1274, 1274, 1273, 1608, 1240,
164321 /* 410 */ 1240, 1240, 1240, 1240, 1240, 1603, 1240, 1537, 1494, 1361,
164322 /* 420 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164323 /* 430 */ 1240, 1240, 1240, 1240, 1548, 1240, 1240, 1240, 1240, 1240,
164324 /* 440 */ 1240, 1240, 1240, 1240, 1240, 1421, 1240, 1243, 1539, 1240,
164325 /* 450 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1398, 1399, 1362,
164326 /* 460 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1413, 1240, 1240,
164327 /* 470 */ 1240, 1408, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164328 /* 480 */ 1635, 1240, 1240, 1240, 1240, 1240, 1240, 1508, 1507, 1240,
164329 /* 490 */ 1240, 1359, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164330 /* 500 */ 1240, 1240, 1240, 1240, 1240, 1288, 1240, 1240, 1240, 1240,
164331 /* 510 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164332 /* 520 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1386,
164333 /* 530 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164334 /* 540 */ 1240, 1240, 1240, 1240, 1578, 1376, 1240, 1240, 1240, 1240,
164335 /* 550 */ 1626, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
164336 /* 560 */ 1240, 1240, 1240, 1240, 1240, 1619, 1332, 1423, 1240, 1422,
164337 /* 570 */ 1426, 1262, 1240, 1252, 1240, 1240,
164338 };
164339 /********** End of lemon-generated parsing tables *****************************/
164340
164341 /* The next table maps tokens (terminal symbols) into fallback tokens.
164342 ** If a construct like the following:
@@ -165170,204 +165160,206 @@
165160 /* 204 */ "expr ::= expr likeop expr ESCAPE expr",
165161 /* 205 */ "expr ::= expr ISNULL|NOTNULL",
165162 /* 206 */ "expr ::= expr NOT NULL",
165163 /* 207 */ "expr ::= expr IS expr",
165164 /* 208 */ "expr ::= expr IS NOT expr",
165165 /* 209 */ "expr ::= expr IS NOT DISTINCT FROM expr",
165166 /* 210 */ "expr ::= expr IS DISTINCT FROM expr",
165167 /* 211 */ "expr ::= NOT expr",
165168 /* 212 */ "expr ::= BITNOT expr",
165169 /* 213 */ "expr ::= PLUS|MINUS expr",
165170 /* 214 */ "expr ::= expr PTR expr",
165171 /* 215 */ "between_op ::= BETWEEN",
165172 /* 216 */ "between_op ::= NOT BETWEEN",
165173 /* 217 */ "expr ::= expr between_op expr AND expr",
165174 /* 218 */ "in_op ::= IN",
165175 /* 219 */ "in_op ::= NOT IN",
165176 /* 220 */ "expr ::= expr in_op LP exprlist RP",
165177 /* 221 */ "expr ::= LP select RP",
165178 /* 222 */ "expr ::= expr in_op LP select RP",
165179 /* 223 */ "expr ::= expr in_op nm dbnm paren_exprlist",
165180 /* 224 */ "expr ::= EXISTS LP select RP",
165181 /* 225 */ "expr ::= CASE case_operand case_exprlist case_else END",
165182 /* 226 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
165183 /* 227 */ "case_exprlist ::= WHEN expr THEN expr",
165184 /* 228 */ "case_else ::= ELSE expr",
165185 /* 229 */ "case_else ::=",
165186 /* 230 */ "case_operand ::= expr",
165187 /* 231 */ "case_operand ::=",
165188 /* 232 */ "exprlist ::=",
165189 /* 233 */ "nexprlist ::= nexprlist COMMA expr",
165190 /* 234 */ "nexprlist ::= expr",
165191 /* 235 */ "paren_exprlist ::=",
165192 /* 236 */ "paren_exprlist ::= LP exprlist RP",
165193 /* 237 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
165194 /* 238 */ "uniqueflag ::= UNIQUE",
165195 /* 239 */ "uniqueflag ::=",
165196 /* 240 */ "eidlist_opt ::=",
165197 /* 241 */ "eidlist_opt ::= LP eidlist RP",
165198 /* 242 */ "eidlist ::= eidlist COMMA nm collate sortorder",
165199 /* 243 */ "eidlist ::= nm collate sortorder",
165200 /* 244 */ "collate ::=",
165201 /* 245 */ "collate ::= COLLATE ID|STRING",
165202 /* 246 */ "cmd ::= DROP INDEX ifexists fullname",
165203 /* 247 */ "cmd ::= VACUUM vinto",
165204 /* 248 */ "cmd ::= VACUUM nm vinto",
165205 /* 249 */ "vinto ::= INTO expr",
165206 /* 250 */ "vinto ::=",
165207 /* 251 */ "cmd ::= PRAGMA nm dbnm",
165208 /* 252 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
165209 /* 253 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
165210 /* 254 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
165211 /* 255 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
165212 /* 256 */ "plus_num ::= PLUS INTEGER|FLOAT",
165213 /* 257 */ "minus_num ::= MINUS INTEGER|FLOAT",
165214 /* 258 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
165215 /* 259 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
165216 /* 260 */ "trigger_time ::= BEFORE|AFTER",
165217 /* 261 */ "trigger_time ::= INSTEAD OF",
165218 /* 262 */ "trigger_time ::=",
165219 /* 263 */ "trigger_event ::= DELETE|INSERT",
165220 /* 264 */ "trigger_event ::= UPDATE",
165221 /* 265 */ "trigger_event ::= UPDATE OF idlist",
165222 /* 266 */ "when_clause ::=",
165223 /* 267 */ "when_clause ::= WHEN expr",
165224 /* 268 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
165225 /* 269 */ "trigger_cmd_list ::= trigger_cmd SEMI",
165226 /* 270 */ "trnm ::= nm DOT nm",
165227 /* 271 */ "tridxby ::= INDEXED BY nm",
165228 /* 272 */ "tridxby ::= NOT INDEXED",
165229 /* 273 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
165230 /* 274 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
165231 /* 275 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
165232 /* 276 */ "trigger_cmd ::= scanpt select scanpt",
165233 /* 277 */ "expr ::= RAISE LP IGNORE RP",
165234 /* 278 */ "expr ::= RAISE LP raisetype COMMA nm RP",
165235 /* 279 */ "raisetype ::= ROLLBACK",
165236 /* 280 */ "raisetype ::= ABORT",
165237 /* 281 */ "raisetype ::= FAIL",
165238 /* 282 */ "cmd ::= DROP TRIGGER ifexists fullname",
165239 /* 283 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
165240 /* 284 */ "cmd ::= DETACH database_kw_opt expr",
165241 /* 285 */ "key_opt ::=",
165242 /* 286 */ "key_opt ::= KEY expr",
165243 /* 287 */ "cmd ::= REINDEX",
165244 /* 288 */ "cmd ::= REINDEX nm dbnm",
165245 /* 289 */ "cmd ::= ANALYZE",
165246 /* 290 */ "cmd ::= ANALYZE nm dbnm",
165247 /* 291 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
165248 /* 292 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
165249 /* 293 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
165250 /* 294 */ "add_column_fullname ::= fullname",
165251 /* 295 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
165252 /* 296 */ "cmd ::= create_vtab",
165253 /* 297 */ "cmd ::= create_vtab LP vtabarglist RP",
165254 /* 298 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
165255 /* 299 */ "vtabarg ::=",
165256 /* 300 */ "vtabargtoken ::= ANY",
165257 /* 301 */ "vtabargtoken ::= lp anylist RP",
165258 /* 302 */ "lp ::= LP",
165259 /* 303 */ "with ::= WITH wqlist",
165260 /* 304 */ "with ::= WITH RECURSIVE wqlist",
165261 /* 305 */ "wqas ::= AS",
165262 /* 306 */ "wqas ::= AS MATERIALIZED",
165263 /* 307 */ "wqas ::= AS NOT MATERIALIZED",
165264 /* 308 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
165265 /* 309 */ "wqlist ::= wqitem",
165266 /* 310 */ "wqlist ::= wqlist COMMA wqitem",
165267 /* 311 */ "windowdefn_list ::= windowdefn",
165268 /* 312 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
165269 /* 313 */ "windowdefn ::= nm AS LP window RP",
165270 /* 314 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
165271 /* 315 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
165272 /* 316 */ "window ::= ORDER BY sortlist frame_opt",
165273 /* 317 */ "window ::= nm ORDER BY sortlist frame_opt",
165274 /* 318 */ "window ::= frame_opt",
165275 /* 319 */ "window ::= nm frame_opt",
165276 /* 320 */ "frame_opt ::=",
165277 /* 321 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
165278 /* 322 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
165279 /* 323 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
165280 /* 324 */ "frame_bound_s ::= frame_bound",
165281 /* 325 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
165282 /* 326 */ "frame_bound_e ::= frame_bound",
165283 /* 327 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
165284 /* 328 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
165285 /* 329 */ "frame_bound ::= CURRENT ROW",
165286 /* 330 */ "frame_exclude_opt ::=",
165287 /* 331 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
165288 /* 332 */ "frame_exclude ::= NO OTHERS",
165289 /* 333 */ "frame_exclude ::= CURRENT ROW",
165290 /* 334 */ "frame_exclude ::= GROUP|TIES",
165291 /* 335 */ "window_clause ::= WINDOW windowdefn_list",
165292 /* 336 */ "filter_over ::= filter_clause over_clause",
165293 /* 337 */ "filter_over ::= over_clause",
165294 /* 338 */ "filter_over ::= filter_clause",
165295 /* 339 */ "over_clause ::= OVER LP window RP",
165296 /* 340 */ "over_clause ::= OVER nm",
165297 /* 341 */ "filter_clause ::= FILTER LP WHERE expr RP",
165298 /* 342 */ "input ::= cmdlist",
165299 /* 343 */ "cmdlist ::= cmdlist ecmd",
165300 /* 344 */ "cmdlist ::= ecmd",
165301 /* 345 */ "ecmd ::= SEMI",
165302 /* 346 */ "ecmd ::= cmdx SEMI",
165303 /* 347 */ "ecmd ::= explain cmdx SEMI",
165304 /* 348 */ "trans_opt ::=",
165305 /* 349 */ "trans_opt ::= TRANSACTION",
165306 /* 350 */ "trans_opt ::= TRANSACTION nm",
165307 /* 351 */ "savepoint_opt ::= SAVEPOINT",
165308 /* 352 */ "savepoint_opt ::=",
165309 /* 353 */ "cmd ::= create_table create_table_args",
165310 /* 354 */ "table_option_set ::= table_option",
165311 /* 355 */ "columnlist ::= columnlist COMMA columnname carglist",
165312 /* 356 */ "columnlist ::= columnname carglist",
165313 /* 357 */ "nm ::= ID|INDEXED",
165314 /* 358 */ "nm ::= STRING",
165315 /* 359 */ "nm ::= JOIN_KW",
165316 /* 360 */ "typetoken ::= typename",
165317 /* 361 */ "typename ::= ID|STRING",
165318 /* 362 */ "signed ::= plus_num",
165319 /* 363 */ "signed ::= minus_num",
165320 /* 364 */ "carglist ::= carglist ccons",
165321 /* 365 */ "carglist ::=",
165322 /* 366 */ "ccons ::= NULL onconf",
165323 /* 367 */ "ccons ::= GENERATED ALWAYS AS generated",
165324 /* 368 */ "ccons ::= AS generated",
165325 /* 369 */ "conslist_opt ::= COMMA conslist",
165326 /* 370 */ "conslist ::= conslist tconscomma tcons",
165327 /* 371 */ "conslist ::= tcons",
165328 /* 372 */ "tconscomma ::=",
165329 /* 373 */ "defer_subclause_opt ::= defer_subclause",
165330 /* 374 */ "resolvetype ::= raisetype",
165331 /* 375 */ "selectnowith ::= oneselect",
165332 /* 376 */ "oneselect ::= values",
165333 /* 377 */ "sclp ::= selcollist COMMA",
165334 /* 378 */ "as ::= ID|STRING",
165335 /* 379 */ "indexed_opt ::= indexed_by",
165336 /* 380 */ "returning ::=",
165337 /* 381 */ "expr ::= term",
165338 /* 382 */ "likeop ::= LIKE_KW|MATCH",
165339 /* 383 */ "exprlist ::= nexprlist",
165340 /* 384 */ "nmnum ::= plus_num",
165341 /* 385 */ "nmnum ::= nm",
165342 /* 386 */ "nmnum ::= ON",
165343 /* 387 */ "nmnum ::= DELETE",
165344 /* 388 */ "nmnum ::= DEFAULT",
165345 /* 389 */ "plus_num ::= INTEGER|FLOAT",
165346 /* 390 */ "foreach_clause ::=",
165347 /* 391 */ "foreach_clause ::= FOR EACH ROW",
165348 /* 392 */ "trnm ::= nm",
165349 /* 393 */ "tridxby ::=",
165350 /* 394 */ "database_kw_opt ::= DATABASE",
165351 /* 395 */ "database_kw_opt ::=",
165352 /* 396 */ "kwcolumn_opt ::=",
165353 /* 397 */ "kwcolumn_opt ::= COLUMNKW",
165354 /* 398 */ "vtabarglist ::= vtabarg",
165355 /* 399 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
165356 /* 400 */ "vtabarg ::= vtabarg vtabargtoken",
165357 /* 401 */ "anylist ::=",
165358 /* 402 */ "anylist ::= anylist LP anylist RP",
165359 /* 403 */ "anylist ::= anylist ANY",
165360 /* 404 */ "with ::=",
165361 };
165362 #endif /* NDEBUG */
165363
165364
165365 #if YYSTACKDEPTH<=0
@@ -166079,204 +166071,206 @@
166071 217, /* (204) expr ::= expr likeop expr ESCAPE expr */
166072 217, /* (205) expr ::= expr ISNULL|NOTNULL */
166073 217, /* (206) expr ::= expr NOT NULL */
166074 217, /* (207) expr ::= expr IS expr */
166075 217, /* (208) expr ::= expr IS NOT expr */
166076 217, /* (209) expr ::= expr IS NOT DISTINCT FROM expr */
166077 217, /* (210) expr ::= expr IS DISTINCT FROM expr */
166078 217, /* (211) expr ::= NOT expr */
166079 217, /* (212) expr ::= BITNOT expr */
166080 217, /* (213) expr ::= PLUS|MINUS expr */
166081 217, /* (214) expr ::= expr PTR expr */
166082 275, /* (215) between_op ::= BETWEEN */
166083 275, /* (216) between_op ::= NOT BETWEEN */
166084 217, /* (217) expr ::= expr between_op expr AND expr */
166085 276, /* (218) in_op ::= IN */
166086 276, /* (219) in_op ::= NOT IN */
166087 217, /* (220) expr ::= expr in_op LP exprlist RP */
166088 217, /* (221) expr ::= LP select RP */
166089 217, /* (222) expr ::= expr in_op LP select RP */
166090 217, /* (223) expr ::= expr in_op nm dbnm paren_exprlist */
166091 217, /* (224) expr ::= EXISTS LP select RP */
166092 217, /* (225) expr ::= CASE case_operand case_exprlist case_else END */
166093 279, /* (226) case_exprlist ::= case_exprlist WHEN expr THEN expr */
166094 279, /* (227) case_exprlist ::= WHEN expr THEN expr */
166095 280, /* (228) case_else ::= ELSE expr */
166096 280, /* (229) case_else ::= */
166097 278, /* (230) case_operand ::= expr */
166098 278, /* (231) case_operand ::= */
166099 261, /* (232) exprlist ::= */
166100 253, /* (233) nexprlist ::= nexprlist COMMA expr */
166101 253, /* (234) nexprlist ::= expr */
166102 277, /* (235) paren_exprlist ::= */
166103 277, /* (236) paren_exprlist ::= LP exprlist RP */
166104 190, /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
166105 281, /* (238) uniqueflag ::= UNIQUE */
166106 281, /* (239) uniqueflag ::= */
166107 221, /* (240) eidlist_opt ::= */
166108 221, /* (241) eidlist_opt ::= LP eidlist RP */
166109 232, /* (242) eidlist ::= eidlist COMMA nm collate sortorder */
166110 232, /* (243) eidlist ::= nm collate sortorder */
166111 282, /* (244) collate ::= */
166112 282, /* (245) collate ::= COLLATE ID|STRING */
166113 190, /* (246) cmd ::= DROP INDEX ifexists fullname */
166114 190, /* (247) cmd ::= VACUUM vinto */
166115 190, /* (248) cmd ::= VACUUM nm vinto */
166116 283, /* (249) vinto ::= INTO expr */
166117 283, /* (250) vinto ::= */
166118 190, /* (251) cmd ::= PRAGMA nm dbnm */
166119 190, /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */
166120 190, /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */
166121 190, /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */
166122 190, /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */
166123 211, /* (256) plus_num ::= PLUS INTEGER|FLOAT */
166124 212, /* (257) minus_num ::= MINUS INTEGER|FLOAT */
166125 190, /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
166126 285, /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
166127 287, /* (260) trigger_time ::= BEFORE|AFTER */
166128 287, /* (261) trigger_time ::= INSTEAD OF */
166129 287, /* (262) trigger_time ::= */
166130 288, /* (263) trigger_event ::= DELETE|INSERT */
166131 288, /* (264) trigger_event ::= UPDATE */
166132 288, /* (265) trigger_event ::= UPDATE OF idlist */
166133 290, /* (266) when_clause ::= */
166134 290, /* (267) when_clause ::= WHEN expr */
166135 286, /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
166136 286, /* (269) trigger_cmd_list ::= trigger_cmd SEMI */
166137 292, /* (270) trnm ::= nm DOT nm */
166138 293, /* (271) tridxby ::= INDEXED BY nm */
166139 293, /* (272) tridxby ::= NOT INDEXED */
166140 291, /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
166141 291, /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
166142 291, /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
166143 291, /* (276) trigger_cmd ::= scanpt select scanpt */
166144 217, /* (277) expr ::= RAISE LP IGNORE RP */
166145 217, /* (278) expr ::= RAISE LP raisetype COMMA nm RP */
166146 236, /* (279) raisetype ::= ROLLBACK */
166147 236, /* (280) raisetype ::= ABORT */
166148 236, /* (281) raisetype ::= FAIL */
166149 190, /* (282) cmd ::= DROP TRIGGER ifexists fullname */
166150 190, /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
166151 190, /* (284) cmd ::= DETACH database_kw_opt expr */
166152 295, /* (285) key_opt ::= */
166153 295, /* (286) key_opt ::= KEY expr */
166154 190, /* (287) cmd ::= REINDEX */
166155 190, /* (288) cmd ::= REINDEX nm dbnm */
166156 190, /* (289) cmd ::= ANALYZE */
166157 190, /* (290) cmd ::= ANALYZE nm dbnm */
166158 190, /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */
166159 190, /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
166160 190, /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
166161 296, /* (294) add_column_fullname ::= fullname */
166162 190, /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
166163 190, /* (296) cmd ::= create_vtab */
166164 190, /* (297) cmd ::= create_vtab LP vtabarglist RP */
166165 298, /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
166166 300, /* (299) vtabarg ::= */
166167 301, /* (300) vtabargtoken ::= ANY */
166168 301, /* (301) vtabargtoken ::= lp anylist RP */
166169 302, /* (302) lp ::= LP */
166170 266, /* (303) with ::= WITH wqlist */
166171 266, /* (304) with ::= WITH RECURSIVE wqlist */
166172 305, /* (305) wqas ::= AS */
166173 305, /* (306) wqas ::= AS MATERIALIZED */
166174 305, /* (307) wqas ::= AS NOT MATERIALIZED */
166175 304, /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */
166176 241, /* (309) wqlist ::= wqitem */
166177 241, /* (310) wqlist ::= wqlist COMMA wqitem */
166178 306, /* (311) windowdefn_list ::= windowdefn */
166179 306, /* (312) windowdefn_list ::= windowdefn_list COMMA windowdefn */
166180 307, /* (313) windowdefn ::= nm AS LP window RP */
166181 308, /* (314) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
166182 308, /* (315) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
166183 308, /* (316) window ::= ORDER BY sortlist frame_opt */
166184 308, /* (317) window ::= nm ORDER BY sortlist frame_opt */
166185 308, /* (318) window ::= frame_opt */
166186 308, /* (319) window ::= nm frame_opt */
166187 309, /* (320) frame_opt ::= */
166188 309, /* (321) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
166189 309, /* (322) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
166190 313, /* (323) range_or_rows ::= RANGE|ROWS|GROUPS */
166191 315, /* (324) frame_bound_s ::= frame_bound */
166192 315, /* (325) frame_bound_s ::= UNBOUNDED PRECEDING */
166193 316, /* (326) frame_bound_e ::= frame_bound */
166194 316, /* (327) frame_bound_e ::= UNBOUNDED FOLLOWING */
166195 314, /* (328) frame_bound ::= expr PRECEDING|FOLLOWING */
166196 314, /* (329) frame_bound ::= CURRENT ROW */
166197 317, /* (330) frame_exclude_opt ::= */
166198 317, /* (331) frame_exclude_opt ::= EXCLUDE frame_exclude */
166199 318, /* (332) frame_exclude ::= NO OTHERS */
166200 318, /* (333) frame_exclude ::= CURRENT ROW */
166201 318, /* (334) frame_exclude ::= GROUP|TIES */
166202 251, /* (335) window_clause ::= WINDOW windowdefn_list */
166203 273, /* (336) filter_over ::= filter_clause over_clause */
166204 273, /* (337) filter_over ::= over_clause */
166205 273, /* (338) filter_over ::= filter_clause */
166206 312, /* (339) over_clause ::= OVER LP window RP */
166207 312, /* (340) over_clause ::= OVER nm */
166208 311, /* (341) filter_clause ::= FILTER LP WHERE expr RP */
166209 185, /* (342) input ::= cmdlist */
166210 186, /* (343) cmdlist ::= cmdlist ecmd */
166211 186, /* (344) cmdlist ::= ecmd */
166212 187, /* (345) ecmd ::= SEMI */
166213 187, /* (346) ecmd ::= cmdx SEMI */
166214 187, /* (347) ecmd ::= explain cmdx SEMI */
166215 192, /* (348) trans_opt ::= */
166216 192, /* (349) trans_opt ::= TRANSACTION */
166217 192, /* (350) trans_opt ::= TRANSACTION nm */
166218 194, /* (351) savepoint_opt ::= SAVEPOINT */
166219 194, /* (352) savepoint_opt ::= */
166220 190, /* (353) cmd ::= create_table create_table_args */
166221 203, /* (354) table_option_set ::= table_option */
166222 201, /* (355) columnlist ::= columnlist COMMA columnname carglist */
166223 201, /* (356) columnlist ::= columnname carglist */
166224 193, /* (357) nm ::= ID|INDEXED */
166225 193, /* (358) nm ::= STRING */
166226 193, /* (359) nm ::= JOIN_KW */
166227 208, /* (360) typetoken ::= typename */
166228 209, /* (361) typename ::= ID|STRING */
166229 210, /* (362) signed ::= plus_num */
166230 210, /* (363) signed ::= minus_num */
166231 207, /* (364) carglist ::= carglist ccons */
166232 207, /* (365) carglist ::= */
166233 215, /* (366) ccons ::= NULL onconf */
166234 215, /* (367) ccons ::= GENERATED ALWAYS AS generated */
166235 215, /* (368) ccons ::= AS generated */
166236 202, /* (369) conslist_opt ::= COMMA conslist */
166237 228, /* (370) conslist ::= conslist tconscomma tcons */
166238 228, /* (371) conslist ::= tcons */
166239 229, /* (372) tconscomma ::= */
166240 233, /* (373) defer_subclause_opt ::= defer_subclause */
166241 235, /* (374) resolvetype ::= raisetype */
166242 239, /* (375) selectnowith ::= oneselect */
166243 240, /* (376) oneselect ::= values */
166244 254, /* (377) sclp ::= selcollist COMMA */
166245 255, /* (378) as ::= ID|STRING */
166246 264, /* (379) indexed_opt ::= indexed_by */
166247 272, /* (380) returning ::= */
166248 217, /* (381) expr ::= term */
166249 274, /* (382) likeop ::= LIKE_KW|MATCH */
166250 261, /* (383) exprlist ::= nexprlist */
166251 284, /* (384) nmnum ::= plus_num */
166252 284, /* (385) nmnum ::= nm */
166253 284, /* (386) nmnum ::= ON */
166254 284, /* (387) nmnum ::= DELETE */
166255 284, /* (388) nmnum ::= DEFAULT */
166256 211, /* (389) plus_num ::= INTEGER|FLOAT */
166257 289, /* (390) foreach_clause ::= */
166258 289, /* (391) foreach_clause ::= FOR EACH ROW */
166259 292, /* (392) trnm ::= nm */
166260 293, /* (393) tridxby ::= */
166261 294, /* (394) database_kw_opt ::= DATABASE */
166262 294, /* (395) database_kw_opt ::= */
166263 297, /* (396) kwcolumn_opt ::= */
166264 297, /* (397) kwcolumn_opt ::= COLUMNKW */
166265 299, /* (398) vtabarglist ::= vtabarg */
166266 299, /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */
166267 300, /* (400) vtabarg ::= vtabarg vtabargtoken */
166268 303, /* (401) anylist ::= */
166269 303, /* (402) anylist ::= anylist LP anylist RP */
166270 303, /* (403) anylist ::= anylist ANY */
166271 266, /* (404) with ::= */
166272 };
166273
166274 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
166275 ** of symbols on the right-hand side of that rule. */
166276 static const signed char yyRuleInfoNRhs[] = {
@@ -166487,204 +166481,206 @@
166481 -5, /* (204) expr ::= expr likeop expr ESCAPE expr */
166482 -2, /* (205) expr ::= expr ISNULL|NOTNULL */
166483 -3, /* (206) expr ::= expr NOT NULL */
166484 -3, /* (207) expr ::= expr IS expr */
166485 -4, /* (208) expr ::= expr IS NOT expr */
166486 -6, /* (209) expr ::= expr IS NOT DISTINCT FROM expr */
166487 -5, /* (210) expr ::= expr IS DISTINCT FROM expr */
166488 -2, /* (211) expr ::= NOT expr */
166489 -2, /* (212) expr ::= BITNOT expr */
166490 -2, /* (213) expr ::= PLUS|MINUS expr */
166491 -3, /* (214) expr ::= expr PTR expr */
166492 -1, /* (215) between_op ::= BETWEEN */
166493 -2, /* (216) between_op ::= NOT BETWEEN */
166494 -5, /* (217) expr ::= expr between_op expr AND expr */
166495 -1, /* (218) in_op ::= IN */
166496 -2, /* (219) in_op ::= NOT IN */
166497 -5, /* (220) expr ::= expr in_op LP exprlist RP */
166498 -3, /* (221) expr ::= LP select RP */
166499 -5, /* (222) expr ::= expr in_op LP select RP */
166500 -5, /* (223) expr ::= expr in_op nm dbnm paren_exprlist */
166501 -4, /* (224) expr ::= EXISTS LP select RP */
166502 -5, /* (225) expr ::= CASE case_operand case_exprlist case_else END */
166503 -5, /* (226) case_exprlist ::= case_exprlist WHEN expr THEN expr */
166504 -4, /* (227) case_exprlist ::= WHEN expr THEN expr */
166505 -2, /* (228) case_else ::= ELSE expr */
166506 0, /* (229) case_else ::= */
166507 -1, /* (230) case_operand ::= expr */
166508 0, /* (231) case_operand ::= */
166509 0, /* (232) exprlist ::= */
166510 -3, /* (233) nexprlist ::= nexprlist COMMA expr */
166511 -1, /* (234) nexprlist ::= expr */
166512 0, /* (235) paren_exprlist ::= */
166513 -3, /* (236) paren_exprlist ::= LP exprlist RP */
166514 -12, /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
166515 -1, /* (238) uniqueflag ::= UNIQUE */
166516 0, /* (239) uniqueflag ::= */
166517 0, /* (240) eidlist_opt ::= */
166518 -3, /* (241) eidlist_opt ::= LP eidlist RP */
166519 -5, /* (242) eidlist ::= eidlist COMMA nm collate sortorder */
166520 -3, /* (243) eidlist ::= nm collate sortorder */
166521 0, /* (244) collate ::= */
166522 -2, /* (245) collate ::= COLLATE ID|STRING */
166523 -4, /* (246) cmd ::= DROP INDEX ifexists fullname */
166524 -2, /* (247) cmd ::= VACUUM vinto */
166525 -3, /* (248) cmd ::= VACUUM nm vinto */
166526 -2, /* (249) vinto ::= INTO expr */
166527 0, /* (250) vinto ::= */
166528 -3, /* (251) cmd ::= PRAGMA nm dbnm */
166529 -5, /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */
166530 -6, /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */
166531 -5, /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */
166532 -6, /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */
166533 -2, /* (256) plus_num ::= PLUS INTEGER|FLOAT */
166534 -2, /* (257) minus_num ::= MINUS INTEGER|FLOAT */
166535 -5, /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
166536 -11, /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
166537 -1, /* (260) trigger_time ::= BEFORE|AFTER */
166538 -2, /* (261) trigger_time ::= INSTEAD OF */
166539 0, /* (262) trigger_time ::= */
166540 -1, /* (263) trigger_event ::= DELETE|INSERT */
166541 -1, /* (264) trigger_event ::= UPDATE */
166542 -3, /* (265) trigger_event ::= UPDATE OF idlist */
166543 0, /* (266) when_clause ::= */
166544 -2, /* (267) when_clause ::= WHEN expr */
166545 -3, /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
166546 -2, /* (269) trigger_cmd_list ::= trigger_cmd SEMI */
166547 -3, /* (270) trnm ::= nm DOT nm */
166548 -3, /* (271) tridxby ::= INDEXED BY nm */
166549 -2, /* (272) tridxby ::= NOT INDEXED */
166550 -9, /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
166551 -8, /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
166552 -6, /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
166553 -3, /* (276) trigger_cmd ::= scanpt select scanpt */
166554 -4, /* (277) expr ::= RAISE LP IGNORE RP */
166555 -6, /* (278) expr ::= RAISE LP raisetype COMMA nm RP */
166556 -1, /* (279) raisetype ::= ROLLBACK */
166557 -1, /* (280) raisetype ::= ABORT */
166558 -1, /* (281) raisetype ::= FAIL */
166559 -4, /* (282) cmd ::= DROP TRIGGER ifexists fullname */
166560 -6, /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
166561 -3, /* (284) cmd ::= DETACH database_kw_opt expr */
166562 0, /* (285) key_opt ::= */
166563 -2, /* (286) key_opt ::= KEY expr */
166564 -1, /* (287) cmd ::= REINDEX */
166565 -3, /* (288) cmd ::= REINDEX nm dbnm */
166566 -1, /* (289) cmd ::= ANALYZE */
166567 -3, /* (290) cmd ::= ANALYZE nm dbnm */
166568 -6, /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */
166569 -7, /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
166570 -6, /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
166571 -1, /* (294) add_column_fullname ::= fullname */
166572 -8, /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
166573 -1, /* (296) cmd ::= create_vtab */
166574 -4, /* (297) cmd ::= create_vtab LP vtabarglist RP */
166575 -8, /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
166576 0, /* (299) vtabarg ::= */
166577 -1, /* (300) vtabargtoken ::= ANY */
166578 -3, /* (301) vtabargtoken ::= lp anylist RP */
166579 -1, /* (302) lp ::= LP */
166580 -2, /* (303) with ::= WITH wqlist */
166581 -3, /* (304) with ::= WITH RECURSIVE wqlist */
166582 -1, /* (305) wqas ::= AS */
166583 -2, /* (306) wqas ::= AS MATERIALIZED */
166584 -3, /* (307) wqas ::= AS NOT MATERIALIZED */
166585 -6, /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */
166586 -1, /* (309) wqlist ::= wqitem */
166587 -3, /* (310) wqlist ::= wqlist COMMA wqitem */
166588 -1, /* (311) windowdefn_list ::= windowdefn */
166589 -3, /* (312) windowdefn_list ::= windowdefn_list COMMA windowdefn */
166590 -5, /* (313) windowdefn ::= nm AS LP window RP */
166591 -5, /* (314) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
166592 -6, /* (315) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
166593 -4, /* (316) window ::= ORDER BY sortlist frame_opt */
166594 -5, /* (317) window ::= nm ORDER BY sortlist frame_opt */
166595 -1, /* (318) window ::= frame_opt */
166596 -2, /* (319) window ::= nm frame_opt */
166597 0, /* (320) frame_opt ::= */
166598 -3, /* (321) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
166599 -6, /* (322) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
166600 -1, /* (323) range_or_rows ::= RANGE|ROWS|GROUPS */
166601 -1, /* (324) frame_bound_s ::= frame_bound */
166602 -2, /* (325) frame_bound_s ::= UNBOUNDED PRECEDING */
166603 -1, /* (326) frame_bound_e ::= frame_bound */
166604 -2, /* (327) frame_bound_e ::= UNBOUNDED FOLLOWING */
166605 -2, /* (328) frame_bound ::= expr PRECEDING|FOLLOWING */
166606 -2, /* (329) frame_bound ::= CURRENT ROW */
166607 0, /* (330) frame_exclude_opt ::= */
166608 -2, /* (331) frame_exclude_opt ::= EXCLUDE frame_exclude */
166609 -2, /* (332) frame_exclude ::= NO OTHERS */
166610 -2, /* (333) frame_exclude ::= CURRENT ROW */
166611 -1, /* (334) frame_exclude ::= GROUP|TIES */
166612 -2, /* (335) window_clause ::= WINDOW windowdefn_list */
166613 -2, /* (336) filter_over ::= filter_clause over_clause */
166614 -1, /* (337) filter_over ::= over_clause */
166615 -1, /* (338) filter_over ::= filter_clause */
166616 -4, /* (339) over_clause ::= OVER LP window RP */
166617 -2, /* (340) over_clause ::= OVER nm */
166618 -5, /* (341) filter_clause ::= FILTER LP WHERE expr RP */
166619 -1, /* (342) input ::= cmdlist */
166620 -2, /* (343) cmdlist ::= cmdlist ecmd */
166621 -1, /* (344) cmdlist ::= ecmd */
166622 -1, /* (345) ecmd ::= SEMI */
166623 -2, /* (346) ecmd ::= cmdx SEMI */
166624 -3, /* (347) ecmd ::= explain cmdx SEMI */
166625 0, /* (348) trans_opt ::= */
166626 -1, /* (349) trans_opt ::= TRANSACTION */
166627 -2, /* (350) trans_opt ::= TRANSACTION nm */
166628 -1, /* (351) savepoint_opt ::= SAVEPOINT */
166629 0, /* (352) savepoint_opt ::= */
166630 -2, /* (353) cmd ::= create_table create_table_args */
166631 -1, /* (354) table_option_set ::= table_option */
166632 -4, /* (355) columnlist ::= columnlist COMMA columnname carglist */
166633 -2, /* (356) columnlist ::= columnname carglist */
166634 -1, /* (357) nm ::= ID|INDEXED */
166635 -1, /* (358) nm ::= STRING */
166636 -1, /* (359) nm ::= JOIN_KW */
166637 -1, /* (360) typetoken ::= typename */
166638 -1, /* (361) typename ::= ID|STRING */
166639 -1, /* (362) signed ::= plus_num */
166640 -1, /* (363) signed ::= minus_num */
166641 -2, /* (364) carglist ::= carglist ccons */
166642 0, /* (365) carglist ::= */
166643 -2, /* (366) ccons ::= NULL onconf */
166644 -4, /* (367) ccons ::= GENERATED ALWAYS AS generated */
166645 -2, /* (368) ccons ::= AS generated */
166646 -2, /* (369) conslist_opt ::= COMMA conslist */
166647 -3, /* (370) conslist ::= conslist tconscomma tcons */
166648 -1, /* (371) conslist ::= tcons */
166649 0, /* (372) tconscomma ::= */
166650 -1, /* (373) defer_subclause_opt ::= defer_subclause */
166651 -1, /* (374) resolvetype ::= raisetype */
166652 -1, /* (375) selectnowith ::= oneselect */
166653 -1, /* (376) oneselect ::= values */
166654 -2, /* (377) sclp ::= selcollist COMMA */
166655 -1, /* (378) as ::= ID|STRING */
166656 -1, /* (379) indexed_opt ::= indexed_by */
166657 0, /* (380) returning ::= */
166658 -1, /* (381) expr ::= term */
166659 -1, /* (382) likeop ::= LIKE_KW|MATCH */
166660 -1, /* (383) exprlist ::= nexprlist */
166661 -1, /* (384) nmnum ::= plus_num */
166662 -1, /* (385) nmnum ::= nm */
166663 -1, /* (386) nmnum ::= ON */
166664 -1, /* (387) nmnum ::= DELETE */
166665 -1, /* (388) nmnum ::= DEFAULT */
166666 -1, /* (389) plus_num ::= INTEGER|FLOAT */
166667 0, /* (390) foreach_clause ::= */
166668 -3, /* (391) foreach_clause ::= FOR EACH ROW */
166669 -1, /* (392) trnm ::= nm */
166670 0, /* (393) tridxby ::= */
166671 -1, /* (394) database_kw_opt ::= DATABASE */
166672 0, /* (395) database_kw_opt ::= */
166673 0, /* (396) kwcolumn_opt ::= */
166674 -1, /* (397) kwcolumn_opt ::= COLUMNKW */
166675 -1, /* (398) vtabarglist ::= vtabarg */
166676 -3, /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */
166677 -2, /* (400) vtabarg ::= vtabarg vtabargtoken */
166678 0, /* (401) anylist ::= */
166679 -4, /* (402) anylist ::= anylist LP anylist RP */
166680 -2, /* (403) anylist ::= anylist ANY */
166681 0, /* (404) with ::= */
166682 };
166683
166684 static void yy_accept(yyParser*); /* Forward Declaration */
166685
166686 /*
@@ -166740,11 +166736,11 @@
166736 {yymsp[1].minor.yy394 = TK_DEFERRED;}
166737 break;
166738 case 5: /* transtype ::= DEFERRED */
166739 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
166740 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
166741 case 323: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==323);
166742 {yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/}
166743 break;
166744 case 8: /* cmd ::= COMMIT|END trans_opt */
166745 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
166746 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
@@ -166777,11 +166773,11 @@
166773 case 47: /* autoinc ::= */ yytestcase(yyruleno==47);
166774 case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
166775 case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72);
166776 case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
166777 case 98: /* distinct ::= */ yytestcase(yyruleno==98);
166778 case 244: /* collate ::= */ yytestcase(yyruleno==244);
166779 {yymsp[1].minor.yy394 = 0;}
166780 break;
166781 case 16: /* ifnotexists ::= IF NOT EXISTS */
166782 {yymsp[-2].minor.yy394 = 1;}
166783 break;
@@ -166961,13 +166957,13 @@
166957 case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
166958 {yymsp[-1].minor.yy394 = yymsp[0].minor.yy394;}
166959 break;
166960 case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
166961 case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
166962 case 216: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==216);
166963 case 219: /* in_op ::= NOT IN */ yytestcase(yyruleno==219);
166964 case 245: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==245);
166965 {yymsp[-1].minor.yy394 = 1;}
166966 break;
166967 case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
166968 {yymsp[-1].minor.yy394 = 0;}
166969 break;
@@ -167113,13 +167109,13 @@
167109 {yymsp[0].minor.yy394 = SF_All;}
167110 break;
167111 case 99: /* sclp ::= */
167112 case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132);
167113 case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142);
167114 case 232: /* exprlist ::= */ yytestcase(yyruleno==232);
167115 case 235: /* paren_exprlist ::= */ yytestcase(yyruleno==235);
167116 case 240: /* eidlist_opt ::= */ yytestcase(yyruleno==240);
167117 {yymsp[1].minor.yy322 = 0;}
167118 break;
167119 case 100: /* selcollist ::= sclp scanpt expr scanpt as */
167120 {
167121 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
@@ -167141,12 +167137,12 @@
167137 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot);
167138 }
167139 break;
167140 case 103: /* as ::= AS nm */
167141 case 115: /* dbnm ::= DOT nm */ yytestcase(yyruleno==115);
167142 case 256: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==256);
167143 case 257: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==257);
167144 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
167145 break;
167146 case 105: /* from ::= */
167147 case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108);
167148 {yymsp[1].minor.yy131 = 0;}
@@ -167314,20 +167310,20 @@
167310 break;
167311 case 144: /* having_opt ::= */
167312 case 146: /* limit_opt ::= */ yytestcase(yyruleno==146);
167313 case 151: /* where_opt ::= */ yytestcase(yyruleno==151);
167314 case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153);
167315 case 229: /* case_else ::= */ yytestcase(yyruleno==229);
167316 case 231: /* case_operand ::= */ yytestcase(yyruleno==231);
167317 case 250: /* vinto ::= */ yytestcase(yyruleno==250);
167318 {yymsp[1].minor.yy528 = 0;}
167319 break;
167320 case 145: /* having_opt ::= HAVING expr */
167321 case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
167322 case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
167323 case 228: /* case_else ::= ELSE expr */ yytestcase(yyruleno==228);
167324 case 249: /* vinto ::= INTO expr */ yytestcase(yyruleno==249);
167325 {yymsp[-1].minor.yy528 = yymsp[0].minor.yy528;}
167326 break;
167327 case 147: /* limit_opt ::= LIMIT expr */
167328 {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,0);}
167329 break;
@@ -167597,33 +167593,45 @@
167593 {
167594 yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy528,yymsp[0].minor.yy528);
167595 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-3].minor.yy528, TK_NOTNULL);
167596 }
167597 break;
167598 case 209: /* expr ::= expr IS NOT DISTINCT FROM expr */
167599 {
167600 yymsp[-5].minor.yy528 = sqlite3PExpr(pParse,TK_IS,yymsp[-5].minor.yy528,yymsp[0].minor.yy528);
167601 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-5].minor.yy528, TK_ISNULL);
167602 }
167603 break;
167604 case 210: /* expr ::= expr IS DISTINCT FROM expr */
167605 {
167606 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-4].minor.yy528,yymsp[0].minor.yy528);
167607 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-4].minor.yy528, TK_NOTNULL);
167608 }
167609 break;
167610 case 211: /* expr ::= NOT expr */
167611 case 212: /* expr ::= BITNOT expr */ yytestcase(yyruleno==212);
167612 {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy528, 0);/*A-overwrites-B*/}
167613 break;
167614 case 213: /* expr ::= PLUS|MINUS expr */
167615 {
167616 yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy528, 0);
167617 /*A-overwrites-B*/
167618 }
167619 break;
167620 case 214: /* expr ::= expr PTR expr */
167621 {
167622 ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy528);
167623 pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy528);
167624 yylhsminor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
167625 }
167626 yymsp[-2].minor.yy528 = yylhsminor.yy528;
167627 break;
167628 case 215: /* between_op ::= BETWEEN */
167629 case 218: /* in_op ::= IN */ yytestcase(yyruleno==218);
167630 {yymsp[0].minor.yy394 = 0;}
167631 break;
167632 case 217: /* expr ::= expr between_op expr AND expr */
167633 {
167634 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
167635 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528);
167636 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy528, 0);
167637 if( yymsp[-4].minor.yy528 ){
@@ -167632,11 +167640,11 @@
167640 sqlite3ExprListDelete(pParse->db, pList);
167641 }
167642 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167643 }
167644 break;
167645 case 220: /* expr ::= expr in_op LP exprlist RP */
167646 {
167647 if( yymsp[-1].minor.yy322==0 ){
167648 /* Expressions of the form
167649 **
167650 ** expr1 IN ()
@@ -167672,41 +167680,41 @@
167680 }
167681 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167682 }
167683 }
167684 break;
167685 case 221: /* expr ::= LP select RP */
167686 {
167687 yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
167688 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy528, yymsp[-1].minor.yy47);
167689 }
167690 break;
167691 case 222: /* expr ::= expr in_op LP select RP */
167692 {
167693 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
167694 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, yymsp[-1].minor.yy47);
167695 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167696 }
167697 break;
167698 case 223: /* expr ::= expr in_op nm dbnm paren_exprlist */
167699 {
167700 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
167701 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
167702 if( yymsp[0].minor.yy322 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy322);
167703 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0);
167704 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelect);
167705 if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0);
167706 }
167707 break;
167708 case 224: /* expr ::= EXISTS LP select RP */
167709 {
167710 Expr *p;
167711 p = yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
167712 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy47);
167713 }
167714 break;
167715 case 225: /* expr ::= CASE case_operand case_exprlist case_else END */
167716 {
167717 yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy528, 0);
167718 if( yymsp[-4].minor.yy528 ){
167719 yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy528 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528) : yymsp[-2].minor.yy322;
167720 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528);
@@ -167714,406 +167722,406 @@
167722 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy322);
167723 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
167724 }
167725 }
167726 break;
167727 case 226: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
167728 {
167729 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[-2].minor.yy528);
167730 yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[0].minor.yy528);
167731 }
167732 break;
167733 case 227: /* case_exprlist ::= WHEN expr THEN expr */
167734 {
167735 yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528);
167736 yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322, yymsp[0].minor.yy528);
167737 }
167738 break;
167739 case 230: /* case_operand ::= expr */
167740 {yymsp[0].minor.yy528 = yymsp[0].minor.yy528; /*A-overwrites-X*/}
167741 break;
167742 case 233: /* nexprlist ::= nexprlist COMMA expr */
167743 {yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[0].minor.yy528);}
167744 break;
167745 case 234: /* nexprlist ::= expr */
167746 {yymsp[0].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy528); /*A-overwrites-Y*/}
167747 break;
167748 case 236: /* paren_exprlist ::= LP exprlist RP */
167749 case 241: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==241);
167750 {yymsp[-2].minor.yy322 = yymsp[-1].minor.yy322;}
167751 break;
167752 case 237: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
167753 {
167754 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
167755 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy322, yymsp[-10].minor.yy394,
167756 &yymsp[-11].minor.yy0, yymsp[0].minor.yy528, SQLITE_SO_ASC, yymsp[-8].minor.yy394, SQLITE_IDXTYPE_APPDEF);
167757 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
167758 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
167759 }
167760 }
167761 break;
167762 case 238: /* uniqueflag ::= UNIQUE */
167763 case 280: /* raisetype ::= ABORT */ yytestcase(yyruleno==280);
167764 {yymsp[0].minor.yy394 = OE_Abort;}
167765 break;
167766 case 239: /* uniqueflag ::= */
167767 {yymsp[1].minor.yy394 = OE_None;}
167768 break;
167769 case 242: /* eidlist ::= eidlist COMMA nm collate sortorder */
167770 {
167771 yymsp[-4].minor.yy322 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394);
167772 }
167773 break;
167774 case 243: /* eidlist ::= nm collate sortorder */
167775 {
167776 yymsp[-2].minor.yy322 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394); /*A-overwrites-Y*/
167777 }
167778 break;
167779 case 246: /* cmd ::= DROP INDEX ifexists fullname */
167780 {sqlite3DropIndex(pParse, yymsp[0].minor.yy131, yymsp[-1].minor.yy394);}
167781 break;
167782 case 247: /* cmd ::= VACUUM vinto */
167783 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy528);}
167784 break;
167785 case 248: /* cmd ::= VACUUM nm vinto */
167786 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy528);}
167787 break;
167788 case 251: /* cmd ::= PRAGMA nm dbnm */
167789 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
167790 break;
167791 case 252: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
167792 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
167793 break;
167794 case 253: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
167795 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
167796 break;
167797 case 254: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
167798 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
167799 break;
167800 case 255: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
167801 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
167802 break;
167803 case 258: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
167804 {
167805 Token all;
167806 all.z = yymsp[-3].minor.yy0.z;
167807 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
167808 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy33, &all);
167809 }
167810 break;
167811 case 259: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
167812 {
167813 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy394, yymsp[-4].minor.yy180.a, yymsp[-4].minor.yy180.b, yymsp[-2].minor.yy131, yymsp[0].minor.yy528, yymsp[-10].minor.yy394, yymsp[-8].minor.yy394);
167814 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
167815 }
167816 break;
167817 case 260: /* trigger_time ::= BEFORE|AFTER */
167818 { yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/ }
167819 break;
167820 case 261: /* trigger_time ::= INSTEAD OF */
167821 { yymsp[-1].minor.yy394 = TK_INSTEAD;}
167822 break;
167823 case 262: /* trigger_time ::= */
167824 { yymsp[1].minor.yy394 = TK_BEFORE; }
167825 break;
167826 case 263: /* trigger_event ::= DELETE|INSERT */
167827 case 264: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==264);
167828 {yymsp[0].minor.yy180.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy180.b = 0;}
167829 break;
167830 case 265: /* trigger_event ::= UPDATE OF idlist */
167831 {yymsp[-2].minor.yy180.a = TK_UPDATE; yymsp[-2].minor.yy180.b = yymsp[0].minor.yy254;}
167832 break;
167833 case 266: /* when_clause ::= */
167834 case 285: /* key_opt ::= */ yytestcase(yyruleno==285);
167835 { yymsp[1].minor.yy528 = 0; }
167836 break;
167837 case 267: /* when_clause ::= WHEN expr */
167838 case 286: /* key_opt ::= KEY expr */ yytestcase(yyruleno==286);
167839 { yymsp[-1].minor.yy528 = yymsp[0].minor.yy528; }
167840 break;
167841 case 268: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
167842 {
167843 assert( yymsp[-2].minor.yy33!=0 );
167844 yymsp[-2].minor.yy33->pLast->pNext = yymsp[-1].minor.yy33;
167845 yymsp[-2].minor.yy33->pLast = yymsp[-1].minor.yy33;
167846 }
167847 break;
167848 case 269: /* trigger_cmd_list ::= trigger_cmd SEMI */
167849 {
167850 assert( yymsp[-1].minor.yy33!=0 );
167851 yymsp[-1].minor.yy33->pLast = yymsp[-1].minor.yy33;
167852 }
167853 break;
167854 case 270: /* trnm ::= nm DOT nm */
167855 {
167856 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
167857 sqlite3ErrorMsg(pParse,
167858 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
167859 "statements within triggers");
167860 }
167861 break;
167862 case 271: /* tridxby ::= INDEXED BY nm */
167863 {
167864 sqlite3ErrorMsg(pParse,
167865 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
167866 "within triggers");
167867 }
167868 break;
167869 case 272: /* tridxby ::= NOT INDEXED */
167870 {
167871 sqlite3ErrorMsg(pParse,
167872 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
167873 "within triggers");
167874 }
167875 break;
167876 case 273: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
167877 {yylhsminor.yy33 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy131, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528, yymsp[-7].minor.yy394, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy522);}
167878 yymsp[-8].minor.yy33 = yylhsminor.yy33;
167879 break;
167880 case 274: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
167881 {
167882 yylhsminor.yy33 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy254,yymsp[-2].minor.yy47,yymsp[-6].minor.yy394,yymsp[-1].minor.yy444,yymsp[-7].minor.yy522,yymsp[0].minor.yy522);/*yylhsminor.yy33-overwrites-yymsp[-6].minor.yy394*/
167883 }
167884 yymsp[-7].minor.yy33 = yylhsminor.yy33;
167885 break;
167886 case 275: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
167887 {yylhsminor.yy33 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy528, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy522);}
167888 yymsp[-5].minor.yy33 = yylhsminor.yy33;
167889 break;
167890 case 276: /* trigger_cmd ::= scanpt select scanpt */
167891 {yylhsminor.yy33 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy47, yymsp[-2].minor.yy522, yymsp[0].minor.yy522); /*yylhsminor.yy33-overwrites-yymsp[-1].minor.yy47*/}
167892 yymsp[-2].minor.yy33 = yylhsminor.yy33;
167893 break;
167894 case 277: /* expr ::= RAISE LP IGNORE RP */
167895 {
167896 yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
167897 if( yymsp[-3].minor.yy528 ){
167898 yymsp[-3].minor.yy528->affExpr = OE_Ignore;
167899 }
167900 }
167901 break;
167902 case 278: /* expr ::= RAISE LP raisetype COMMA nm RP */
167903 {
167904 yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
167905 if( yymsp[-5].minor.yy528 ) {
167906 yymsp[-5].minor.yy528->affExpr = (char)yymsp[-3].minor.yy394;
167907 }
167908 }
167909 break;
167910 case 279: /* raisetype ::= ROLLBACK */
167911 {yymsp[0].minor.yy394 = OE_Rollback;}
167912 break;
167913 case 281: /* raisetype ::= FAIL */
167914 {yymsp[0].minor.yy394 = OE_Fail;}
167915 break;
167916 case 282: /* cmd ::= DROP TRIGGER ifexists fullname */
167917 {
167918 sqlite3DropTrigger(pParse,yymsp[0].minor.yy131,yymsp[-1].minor.yy394);
167919 }
167920 break;
167921 case 283: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
167922 {
167923 sqlite3Attach(pParse, yymsp[-3].minor.yy528, yymsp[-1].minor.yy528, yymsp[0].minor.yy528);
167924 }
167925 break;
167926 case 284: /* cmd ::= DETACH database_kw_opt expr */
167927 {
167928 sqlite3Detach(pParse, yymsp[0].minor.yy528);
167929 }
167930 break;
167931 case 287: /* cmd ::= REINDEX */
167932 {sqlite3Reindex(pParse, 0, 0);}
167933 break;
167934 case 288: /* cmd ::= REINDEX nm dbnm */
167935 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
167936 break;
167937 case 289: /* cmd ::= ANALYZE */
167938 {sqlite3Analyze(pParse, 0, 0);}
167939 break;
167940 case 290: /* cmd ::= ANALYZE nm dbnm */
167941 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
167942 break;
167943 case 291: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
167944 {
167945 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy131,&yymsp[0].minor.yy0);
167946 }
167947 break;
167948 case 292: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
167949 {
167950 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
167951 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
167952 }
167953 break;
167954 case 293: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
167955 {
167956 sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy131, &yymsp[0].minor.yy0);
167957 }
167958 break;
167959 case 294: /* add_column_fullname ::= fullname */
167960 {
167961 disableLookaside(pParse);
167962 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy131);
167963 }
167964 break;
167965 case 295: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
167966 {
167967 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy131, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
167968 }
167969 break;
167970 case 296: /* cmd ::= create_vtab */
167971 {sqlite3VtabFinishParse(pParse,0);}
167972 break;
167973 case 297: /* cmd ::= create_vtab LP vtabarglist RP */
167974 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
167975 break;
167976 case 298: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
167977 {
167978 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy394);
167979 }
167980 break;
167981 case 299: /* vtabarg ::= */
167982 {sqlite3VtabArgInit(pParse);}
167983 break;
167984 case 300: /* vtabargtoken ::= ANY */
167985 case 301: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==301);
167986 case 302: /* lp ::= LP */ yytestcase(yyruleno==302);
167987 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
167988 break;
167989 case 303: /* with ::= WITH wqlist */
167990 case 304: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==304);
167991 { sqlite3WithPush(pParse, yymsp[0].minor.yy521, 1); }
167992 break;
167993 case 305: /* wqas ::= AS */
167994 {yymsp[0].minor.yy516 = M10d_Any;}
167995 break;
167996 case 306: /* wqas ::= AS MATERIALIZED */
167997 {yymsp[-1].minor.yy516 = M10d_Yes;}
167998 break;
167999 case 307: /* wqas ::= AS NOT MATERIALIZED */
168000 {yymsp[-2].minor.yy516 = M10d_No;}
168001 break;
168002 case 308: /* wqitem ::= nm eidlist_opt wqas LP select RP */
168003 {
168004 yymsp[-5].minor.yy385 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy47, yymsp[-3].minor.yy516); /*A-overwrites-X*/
168005 }
168006 break;
168007 case 309: /* wqlist ::= wqitem */
168008 {
168009 yymsp[0].minor.yy521 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy385); /*A-overwrites-X*/
168010 }
168011 break;
168012 case 310: /* wqlist ::= wqlist COMMA wqitem */
168013 {
168014 yymsp[-2].minor.yy521 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy521, yymsp[0].minor.yy385);
168015 }
168016 break;
168017 case 311: /* windowdefn_list ::= windowdefn */
168018 { yylhsminor.yy41 = yymsp[0].minor.yy41; }
168019 yymsp[0].minor.yy41 = yylhsminor.yy41;
168020 break;
168021 case 312: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
168022 {
168023 assert( yymsp[0].minor.yy41!=0 );
168024 sqlite3WindowChain(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy41);
168025 yymsp[0].minor.yy41->pNextWin = yymsp[-2].minor.yy41;
168026 yylhsminor.yy41 = yymsp[0].minor.yy41;
168027 }
168028 yymsp[-2].minor.yy41 = yylhsminor.yy41;
168029 break;
168030 case 313: /* windowdefn ::= nm AS LP window RP */
168031 {
168032 if( ALWAYS(yymsp[-1].minor.yy41) ){
168033 yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
168034 }
168035 yylhsminor.yy41 = yymsp[-1].minor.yy41;
168036 }
168037 yymsp[-4].minor.yy41 = yylhsminor.yy41;
168038 break;
168039 case 314: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
168040 {
168041 yymsp[-4].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, 0);
168042 }
168043 break;
168044 case 315: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
168045 {
168046 yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, &yymsp[-5].minor.yy0);
168047 }
168048 yymsp[-5].minor.yy41 = yylhsminor.yy41;
168049 break;
168050 case 316: /* window ::= ORDER BY sortlist frame_opt */
168051 {
168052 yymsp[-3].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, 0);
168053 }
168054 break;
168055 case 317: /* window ::= nm ORDER BY sortlist frame_opt */
168056 {
168057 yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0);
168058 }
168059 yymsp[-4].minor.yy41 = yylhsminor.yy41;
168060 break;
168061 case 318: /* window ::= frame_opt */
168062 case 337: /* filter_over ::= over_clause */ yytestcase(yyruleno==337);
168063 {
168064 yylhsminor.yy41 = yymsp[0].minor.yy41;
168065 }
168066 yymsp[0].minor.yy41 = yylhsminor.yy41;
168067 break;
168068 case 319: /* window ::= nm frame_opt */
168069 {
168070 yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, 0, &yymsp[-1].minor.yy0);
168071 }
168072 yymsp[-1].minor.yy41 = yylhsminor.yy41;
168073 break;
168074 case 320: /* frame_opt ::= */
168075 {
168076 yymsp[1].minor.yy41 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
168077 }
168078 break;
168079 case 321: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
168080 {
168081 yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy394, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy516);
168082 }
168083 yymsp[-2].minor.yy41 = yylhsminor.yy41;
168084 break;
168085 case 322: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
168086 {
168087 yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy394, yymsp[-3].minor.yy595.eType, yymsp[-3].minor.yy595.pExpr, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, yymsp[0].minor.yy516);
168088 }
168089 yymsp[-5].minor.yy41 = yylhsminor.yy41;
168090 break;
168091 case 324: /* frame_bound_s ::= frame_bound */
168092 case 326: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==326);
168093 {yylhsminor.yy595 = yymsp[0].minor.yy595;}
168094 yymsp[0].minor.yy595 = yylhsminor.yy595;
168095 break;
168096 case 325: /* frame_bound_s ::= UNBOUNDED PRECEDING */
168097 case 327: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==327);
168098 case 329: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==329);
168099 {yylhsminor.yy595.eType = yymsp[-1].major; yylhsminor.yy595.pExpr = 0;}
168100 yymsp[-1].minor.yy595 = yylhsminor.yy595;
168101 break;
168102 case 328: /* frame_bound ::= expr PRECEDING|FOLLOWING */
168103 {yylhsminor.yy595.eType = yymsp[0].major; yylhsminor.yy595.pExpr = yymsp[-1].minor.yy528;}
168104 yymsp[-1].minor.yy595 = yylhsminor.yy595;
168105 break;
168106 case 330: /* frame_exclude_opt ::= */
168107 {yymsp[1].minor.yy516 = 0;}
168108 break;
168109 case 331: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
168110 {yymsp[-1].minor.yy516 = yymsp[0].minor.yy516;}
168111 break;
168112 case 332: /* frame_exclude ::= NO OTHERS */
168113 case 333: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==333);
168114 {yymsp[-1].minor.yy516 = yymsp[-1].major; /*A-overwrites-X*/}
168115 break;
168116 case 334: /* frame_exclude ::= GROUP|TIES */
168117 {yymsp[0].minor.yy516 = yymsp[0].major; /*A-overwrites-X*/}
168118 break;
168119 case 335: /* window_clause ::= WINDOW windowdefn_list */
168120 { yymsp[-1].minor.yy41 = yymsp[0].minor.yy41; }
168121 break;
168122 case 336: /* filter_over ::= filter_clause over_clause */
168123 {
168124 if( yymsp[0].minor.yy41 ){
168125 yymsp[0].minor.yy41->pFilter = yymsp[-1].minor.yy528;
168126 }else{
168127 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
@@ -168120,11 +168128,11 @@
168128 }
168129 yylhsminor.yy41 = yymsp[0].minor.yy41;
168130 }
168131 yymsp[-1].minor.yy41 = yylhsminor.yy41;
168132 break;
168133 case 338: /* filter_over ::= filter_clause */
168134 {
168135 yylhsminor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
168136 if( yylhsminor.yy41 ){
168137 yylhsminor.yy41->eFrmType = TK_FILTER;
168138 yylhsminor.yy41->pFilter = yymsp[0].minor.yy528;
@@ -168132,91 +168140,91 @@
168140 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy528);
168141 }
168142 }
168143 yymsp[0].minor.yy41 = yylhsminor.yy41;
168144 break;
168145 case 339: /* over_clause ::= OVER LP window RP */
168146 {
168147 yymsp[-3].minor.yy41 = yymsp[-1].minor.yy41;
168148 assert( yymsp[-3].minor.yy41!=0 );
168149 }
168150 break;
168151 case 340: /* over_clause ::= OVER nm */
168152 {
168153 yymsp[-1].minor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
168154 if( yymsp[-1].minor.yy41 ){
168155 yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
168156 }
168157 }
168158 break;
168159 case 341: /* filter_clause ::= FILTER LP WHERE expr RP */
168160 { yymsp[-4].minor.yy528 = yymsp[-1].minor.yy528; }
168161 break;
168162 default:
168163 /* (342) input ::= cmdlist */ yytestcase(yyruleno==342);
168164 /* (343) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==343);
168165 /* (344) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=344);
168166 /* (345) ecmd ::= SEMI */ yytestcase(yyruleno==345);
168167 /* (346) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==346);
168168 /* (347) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=347);
168169 /* (348) trans_opt ::= */ yytestcase(yyruleno==348);
168170 /* (349) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==349);
168171 /* (350) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==350);
168172 /* (351) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==351);
168173 /* (352) savepoint_opt ::= */ yytestcase(yyruleno==352);
168174 /* (353) cmd ::= create_table create_table_args */ yytestcase(yyruleno==353);
168175 /* (354) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=354);
168176 /* (355) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==355);
168177 /* (356) columnlist ::= columnname carglist */ yytestcase(yyruleno==356);
168178 /* (357) nm ::= ID|INDEXED */ yytestcase(yyruleno==357);
168179 /* (358) nm ::= STRING */ yytestcase(yyruleno==358);
168180 /* (359) nm ::= JOIN_KW */ yytestcase(yyruleno==359);
168181 /* (360) typetoken ::= typename */ yytestcase(yyruleno==360);
168182 /* (361) typename ::= ID|STRING */ yytestcase(yyruleno==361);
168183 /* (362) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=362);
168184 /* (363) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=363);
168185 /* (364) carglist ::= carglist ccons */ yytestcase(yyruleno==364);
168186 /* (365) carglist ::= */ yytestcase(yyruleno==365);
168187 /* (366) ccons ::= NULL onconf */ yytestcase(yyruleno==366);
168188 /* (367) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==367);
168189 /* (368) ccons ::= AS generated */ yytestcase(yyruleno==368);
168190 /* (369) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==369);
168191 /* (370) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==370);
168192 /* (371) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=371);
168193 /* (372) tconscomma ::= */ yytestcase(yyruleno==372);
168194 /* (373) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=373);
168195 /* (374) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=374);
168196 /* (375) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=375);
168197 /* (376) oneselect ::= values */ yytestcase(yyruleno==376);
168198 /* (377) sclp ::= selcollist COMMA */ yytestcase(yyruleno==377);
168199 /* (378) as ::= ID|STRING */ yytestcase(yyruleno==378);
168200 /* (379) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=379);
168201 /* (380) returning ::= */ yytestcase(yyruleno==380);
168202 /* (381) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=381);
168203 /* (382) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==382);
168204 /* (383) exprlist ::= nexprlist */ yytestcase(yyruleno==383);
168205 /* (384) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=384);
168206 /* (385) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=385);
168207 /* (386) nmnum ::= ON */ yytestcase(yyruleno==386);
168208 /* (387) nmnum ::= DELETE */ yytestcase(yyruleno==387);
168209 /* (388) nmnum ::= DEFAULT */ yytestcase(yyruleno==388);
168210 /* (389) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==389);
168211 /* (390) foreach_clause ::= */ yytestcase(yyruleno==390);
168212 /* (391) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==391);
168213 /* (392) trnm ::= nm */ yytestcase(yyruleno==392);
168214 /* (393) tridxby ::= */ yytestcase(yyruleno==393);
168215 /* (394) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==394);
168216 /* (395) database_kw_opt ::= */ yytestcase(yyruleno==395);
168217 /* (396) kwcolumn_opt ::= */ yytestcase(yyruleno==396);
168218 /* (397) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==397);
168219 /* (398) vtabarglist ::= vtabarg */ yytestcase(yyruleno==398);
168220 /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==399);
168221 /* (400) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==400);
168222 /* (401) anylist ::= */ yytestcase(yyruleno==401);
168223 /* (402) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==402);
168224 /* (403) anylist ::= anylist ANY */ yytestcase(yyruleno==403);
168225 /* (404) with ::= */ yytestcase(yyruleno==404);
168226 break;
168227 /********** End reduce actions ************************************************/
168228 };
168229 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
168230 yygoto = yyRuleInfoLhs[yyruleno];
@@ -236295,11 +236303,11 @@
236303 int nArg, /* Number of args */
236304 sqlite3_value **apUnused /* Function arguments */
236305 ){
236306 assert( nArg==0 );
236307 UNUSED_PARAM2(nArg, apUnused);
236308 sqlite3_result_text(pCtx, "fts5: 2022-05-14 19:05:13 2277f9ba7087dd993ac0f4007c523aa9cf74dba187f53af03d8c164886726fee", -1, SQLITE_TRANSIENT);
236309 }
236310
236311 /*
236312 ** Return true if zName is the extension on one of the shadow tables used
236313 ** by this module.
236314
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,11 +146,11 @@
146146
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147
** [sqlite_version()] and [sqlite_source_id()].
148148
*/
149149
#define SQLITE_VERSION "3.39.0"
150150
#define SQLITE_VERSION_NUMBER 3039000
151
-#define SQLITE_SOURCE_ID "2022-05-10 00:24:01 c6c3115f3a008cf9b0d7c5c812f17e38c8a75a904032c5f05f0bea03a7340527"
151
+#define SQLITE_SOURCE_ID "2022-05-14 19:05:13 2277f9ba7087dd993ac0f4007c523aa9cf74dba187f53af03d8c164886726fee"
152152
153153
/*
154154
** CAPI3REF: Run-Time Library Version Numbers
155155
** KEYWORDS: sqlite3_version sqlite3_sourceid
156156
**
157157
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,11 +146,11 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.39.0"
150 #define SQLITE_VERSION_NUMBER 3039000
151 #define SQLITE_SOURCE_ID "2022-05-10 00:24:01 c6c3115f3a008cf9b0d7c5c812f17e38c8a75a904032c5f05f0bea03a7340527"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
157
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,11 +146,11 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.39.0"
150 #define SQLITE_VERSION_NUMBER 3039000
151 #define SQLITE_SOURCE_ID "2022-05-14 19:05:13 2277f9ba7087dd993ac0f4007c523aa9cf74dba187f53af03d8c164886726fee"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
157

Keyboard Shortcuts

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