Fossil SCM

Update the built-in SQLite to the latest 3.35.0 alpha that includes support for RETURNING and the ability to use TEMP triggers even if SQLITE_DBCONFIG_ENABLE_TRIGGER is off.

drh 2021-02-03 13:38 trunk
Commit 60b8c71b0070a7e842006416fcd4b41ca3ec021422bb77811ccb9f3794628c3c
2 files changed +3388 -3039 +8 -2
+3388 -3039
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1186,11 +1186,11 @@
11861186
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
11871187
** [sqlite_version()] and [sqlite_source_id()].
11881188
*/
11891189
#define SQLITE_VERSION "3.35.0"
11901190
#define SQLITE_VERSION_NUMBER 3035000
1191
-#define SQLITE_SOURCE_ID "2021-01-27 19:15:06 9dc7fc9f04d5c14fc436e5ff5b4c06c1969ddde5857ebeb5dccd59b7c748c339"
1191
+#define SQLITE_SOURCE_ID "2021-02-03 13:20:12 1eb69c64ed4a11601698000573c507684bc4b0366336ba0748ebd661644d0902"
11921192
11931193
/*
11941194
** CAPI3REF: Run-Time Library Version Numbers
11951195
** KEYWORDS: sqlite3_version sqlite3_sourceid
11961196
**
@@ -3176,11 +3176,17 @@
31763176
** The first argument is an integer which is 0 to disable triggers,
31773177
** positive to enable triggers or negative to leave the setting unchanged.
31783178
** The second parameter is a pointer to an integer into which
31793179
** is written 0 or 1 to indicate whether triggers are disabled or enabled
31803180
** following this call. The second parameter may be a NULL pointer, in
3181
-** which case the trigger setting is not reported back. </dd>
3181
+** which case the trigger setting is not reported back.
3182
+**
3183
+** <p>Originally this option disabled all triggers. ^(However, since
3184
+** SQLite version 3.35.0, TEMP triggers are still allowed even if
3185
+** this option is off. So, in other words, this option now only disables
3186
+** triggers in the main database schema or in the schemas of ATTACH-ed
3187
+** databases.)^ </dd>
31823188
**
31833189
** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
31843190
** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
31853191
** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
31863192
** There should be two additional arguments.
@@ -14170,43 +14176,44 @@
1417014176
#define TK_ORDER 143
1417114177
#define TK_GROUP 144
1417214178
#define TK_HAVING 145
1417314179
#define TK_LIMIT 146
1417414180
#define TK_WHERE 147
14175
-#define TK_INTO 148
14176
-#define TK_NOTHING 149
14177
-#define TK_FLOAT 150
14178
-#define TK_BLOB 151
14179
-#define TK_INTEGER 152
14180
-#define TK_VARIABLE 153
14181
-#define TK_CASE 154
14182
-#define TK_WHEN 155
14183
-#define TK_THEN 156
14184
-#define TK_ELSE 157
14185
-#define TK_INDEX 158
14186
-#define TK_ALTER 159
14187
-#define TK_ADD 160
14188
-#define TK_WINDOW 161
14189
-#define TK_OVER 162
14190
-#define TK_FILTER 163
14191
-#define TK_COLUMN 164
14192
-#define TK_AGG_FUNCTION 165
14193
-#define TK_AGG_COLUMN 166
14194
-#define TK_TRUEFALSE 167
14195
-#define TK_ISNOT 168
14196
-#define TK_FUNCTION 169
14197
-#define TK_UMINUS 170
14198
-#define TK_UPLUS 171
14199
-#define TK_TRUTH 172
14200
-#define TK_REGISTER 173
14201
-#define TK_VECTOR 174
14202
-#define TK_SELECT_COLUMN 175
14203
-#define TK_IF_NULL_ROW 176
14204
-#define TK_ASTERISK 177
14205
-#define TK_SPAN 178
14206
-#define TK_SPACE 179
14207
-#define TK_ILLEGAL 180
14181
+#define TK_RETURNING 148
14182
+#define TK_INTO 149
14183
+#define TK_NOTHING 150
14184
+#define TK_FLOAT 151
14185
+#define TK_BLOB 152
14186
+#define TK_INTEGER 153
14187
+#define TK_VARIABLE 154
14188
+#define TK_CASE 155
14189
+#define TK_WHEN 156
14190
+#define TK_THEN 157
14191
+#define TK_ELSE 158
14192
+#define TK_INDEX 159
14193
+#define TK_ALTER 160
14194
+#define TK_ADD 161
14195
+#define TK_WINDOW 162
14196
+#define TK_OVER 163
14197
+#define TK_FILTER 164
14198
+#define TK_COLUMN 165
14199
+#define TK_AGG_FUNCTION 166
14200
+#define TK_AGG_COLUMN 167
14201
+#define TK_TRUEFALSE 168
14202
+#define TK_ISNOT 169
14203
+#define TK_FUNCTION 170
14204
+#define TK_UMINUS 171
14205
+#define TK_UPLUS 172
14206
+#define TK_TRUTH 173
14207
+#define TK_REGISTER 174
14208
+#define TK_VECTOR 175
14209
+#define TK_SELECT_COLUMN 176
14210
+#define TK_IF_NULL_ROW 177
14211
+#define TK_ASTERISK 178
14212
+#define TK_SPAN 179
14213
+#define TK_SPACE 180
14214
+#define TK_ILLEGAL 181
1420814215
1420914216
/************** End of parse.h ***********************************************/
1421014217
/************** Continuing where we left off in sqliteInt.h ******************/
1421114218
#include <stdio.h>
1421214219
#include <stdlib.h>
@@ -14780,10 +14787,11 @@
1478014787
typedef struct Parse Parse;
1478114788
typedef struct ParseCleanup ParseCleanup;
1478214789
typedef struct PreUpdate PreUpdate;
1478314790
typedef struct PrintfArguments PrintfArguments;
1478414791
typedef struct RenameToken RenameToken;
14792
+typedef struct Returning Returning;
1478514793
typedef struct RowSet RowSet;
1478614794
typedef struct Savepoint Savepoint;
1478714795
typedef struct Select Select;
1478814796
typedef struct SQLiteThread SQLiteThread;
1478914797
typedef struct SelectDest SelectDest;
@@ -15757,31 +15765,31 @@
1575715765
#define OP_Variable 75 /* synopsis: r[P2]=parameter(P1,P4) */
1575815766
#define OP_Move 76 /* synopsis: r[P2@P3]=r[P1@P3] */
1575915767
#define OP_Copy 77 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
1576015768
#define OP_SCopy 78 /* synopsis: r[P2]=r[P1] */
1576115769
#define OP_IntCopy 79 /* synopsis: r[P2]=r[P1] */
15762
-#define OP_ResultRow 80 /* synopsis: output=r[P1@P2] */
15763
-#define OP_CollSeq 81
15764
-#define OP_AddImm 82 /* synopsis: r[P1]=r[P1]+P2 */
15765
-#define OP_RealAffinity 83
15766
-#define OP_Cast 84 /* synopsis: affinity(r[P1]) */
15767
-#define OP_Permutation 85
15768
-#define OP_Compare 86 /* synopsis: r[P1@P3] <-> r[P2@P3] */
15769
-#define OP_IsTrue 87 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
15770
-#define OP_Offset 88 /* synopsis: r[P3] = sqlite_offset(P1) */
15771
-#define OP_Column 89 /* synopsis: r[P3]=PX */
15772
-#define OP_Affinity 90 /* synopsis: affinity(r[P1@P2]) */
15773
-#define OP_MakeRecord 91 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
15774
-#define OP_Count 92 /* synopsis: r[P2]=count() */
15775
-#define OP_ReadCookie 93
15776
-#define OP_SetCookie 94
15777
-#define OP_ReopenIdx 95 /* synopsis: root=P2 iDb=P3 */
15778
-#define OP_OpenRead 96 /* synopsis: root=P2 iDb=P3 */
15779
-#define OP_OpenWrite 97 /* synopsis: root=P2 iDb=P3 */
15780
-#define OP_OpenDup 98
15781
-#define OP_OpenAutoindex 99 /* synopsis: nColumn=P2 */
15782
-#define OP_OpenEphemeral 100 /* synopsis: nColumn=P2 */
15770
+#define OP_ChngCntRow 80 /* synopsis: output=r[P1] */
15771
+#define OP_ResultRow 81 /* synopsis: output=r[P1@P2] */
15772
+#define OP_CollSeq 82
15773
+#define OP_AddImm 83 /* synopsis: r[P1]=r[P1]+P2 */
15774
+#define OP_RealAffinity 84
15775
+#define OP_Cast 85 /* synopsis: affinity(r[P1]) */
15776
+#define OP_Permutation 86
15777
+#define OP_Compare 87 /* synopsis: r[P1@P3] <-> r[P2@P3] */
15778
+#define OP_IsTrue 88 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
15779
+#define OP_Offset 89 /* synopsis: r[P3] = sqlite_offset(P1) */
15780
+#define OP_Column 90 /* synopsis: r[P3]=PX */
15781
+#define OP_Affinity 91 /* synopsis: affinity(r[P1@P2]) */
15782
+#define OP_MakeRecord 92 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
15783
+#define OP_Count 93 /* synopsis: r[P2]=count() */
15784
+#define OP_ReadCookie 94
15785
+#define OP_SetCookie 95
15786
+#define OP_ReopenIdx 96 /* synopsis: root=P2 iDb=P3 */
15787
+#define OP_OpenRead 97 /* synopsis: root=P2 iDb=P3 */
15788
+#define OP_OpenWrite 98 /* synopsis: root=P2 iDb=P3 */
15789
+#define OP_OpenDup 99
15790
+#define OP_OpenAutoindex 100 /* synopsis: nColumn=P2 */
1578315791
#define OP_BitAnd 101 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
1578415792
#define OP_BitOr 102 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
1578515793
#define OP_ShiftLeft 103 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
1578615794
#define OP_ShiftRight 104 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
1578715795
#define OP_Add 105 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
@@ -15788,77 +15796,78 @@
1578815796
#define OP_Subtract 106 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
1578915797
#define OP_Multiply 107 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
1579015798
#define OP_Divide 108 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
1579115799
#define OP_Remainder 109 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
1579215800
#define OP_Concat 110 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
15793
-#define OP_SorterOpen 111
15801
+#define OP_OpenEphemeral 111 /* synopsis: nColumn=P2 */
1579415802
#define OP_BitNot 112 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
15795
-#define OP_SequenceTest 113 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
15796
-#define OP_OpenPseudo 114 /* synopsis: P3 columns in r[P2] */
15803
+#define OP_SorterOpen 113
15804
+#define OP_SequenceTest 114 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
1579715805
#define OP_String8 115 /* same as TK_STRING, synopsis: r[P2]='P4' */
15798
-#define OP_Close 116
15799
-#define OP_ColumnsUsed 117
15800
-#define OP_SeekScan 118 /* synopsis: Scan-ahead up to P1 rows */
15801
-#define OP_SeekHit 119 /* synopsis: set P2<=seekHit<=P3 */
15802
-#define OP_Sequence 120 /* synopsis: r[P2]=cursor[P1].ctr++ */
15803
-#define OP_NewRowid 121 /* synopsis: r[P2]=rowid */
15804
-#define OP_Insert 122 /* synopsis: intkey=r[P3] data=r[P2] */
15805
-#define OP_RowCell 123
15806
-#define OP_Delete 124
15807
-#define OP_ResetCount 125
15808
-#define OP_SorterCompare 126 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
15809
-#define OP_SorterData 127 /* synopsis: r[P2]=data */
15810
-#define OP_RowData 128 /* synopsis: r[P2]=data */
15811
-#define OP_Rowid 129 /* synopsis: r[P2]=rowid */
15812
-#define OP_NullRow 130
15813
-#define OP_SeekEnd 131
15814
-#define OP_IdxInsert 132 /* synopsis: key=r[P2] */
15815
-#define OP_SorterInsert 133 /* synopsis: key=r[P2] */
15816
-#define OP_IdxDelete 134 /* synopsis: key=r[P2@P3] */
15817
-#define OP_DeferredSeek 135 /* synopsis: Move P3 to P1.rowid if needed */
15818
-#define OP_IdxRowid 136 /* synopsis: r[P2]=rowid */
15819
-#define OP_FinishSeek 137
15820
-#define OP_Destroy 138
15821
-#define OP_Clear 139
15822
-#define OP_ResetSorter 140
15823
-#define OP_CreateBtree 141 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
15824
-#define OP_SqlExec 142
15825
-#define OP_ParseSchema 143
15826
-#define OP_LoadAnalysis 144
15827
-#define OP_DropTable 145
15828
-#define OP_DropIndex 146
15829
-#define OP_DropTrigger 147
15830
-#define OP_IntegrityCk 148
15831
-#define OP_RowSetAdd 149 /* synopsis: rowset(P1)=r[P2] */
15832
-#define OP_Real 150 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15833
-#define OP_Param 151
15834
-#define OP_FkCounter 152 /* synopsis: fkctr[P1]+=P2 */
15835
-#define OP_MemMax 153 /* synopsis: r[P1]=max(r[P1],r[P2]) */
15836
-#define OP_OffsetLimit 154 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
15837
-#define OP_AggInverse 155 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
15838
-#define OP_AggStep 156 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15839
-#define OP_AggStep1 157 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15840
-#define OP_AggValue 158 /* synopsis: r[P3]=value N=P2 */
15841
-#define OP_AggFinal 159 /* synopsis: accum=r[P1] N=P2 */
15842
-#define OP_Expire 160
15843
-#define OP_CursorLock 161
15844
-#define OP_CursorUnlock 162
15845
-#define OP_TableLock 163 /* synopsis: iDb=P1 root=P2 write=P3 */
15846
-#define OP_VBegin 164
15847
-#define OP_VCreate 165
15848
-#define OP_VDestroy 166
15849
-#define OP_VOpen 167
15850
-#define OP_VColumn 168 /* synopsis: r[P3]=vcolumn(P2) */
15851
-#define OP_VRename 169
15852
-#define OP_Pagecount 170
15853
-#define OP_MaxPgcnt 171
15854
-#define OP_Trace 172
15855
-#define OP_CursorHint 173
15856
-#define OP_ReleaseReg 174 /* synopsis: release r[P1@P2] mask P3 */
15857
-#define OP_Noop 175
15858
-#define OP_Explain 176
15859
-#define OP_Abortable 177
15806
+#define OP_OpenPseudo 116 /* synopsis: P3 columns in r[P2] */
15807
+#define OP_Close 117
15808
+#define OP_ColumnsUsed 118
15809
+#define OP_SeekScan 119 /* synopsis: Scan-ahead up to P1 rows */
15810
+#define OP_SeekHit 120 /* synopsis: set P2<=seekHit<=P3 */
15811
+#define OP_Sequence 121 /* synopsis: r[P2]=cursor[P1].ctr++ */
15812
+#define OP_NewRowid 122 /* synopsis: r[P2]=rowid */
15813
+#define OP_Insert 123 /* synopsis: intkey=r[P3] data=r[P2] */
15814
+#define OP_RowCell 124
15815
+#define OP_Delete 125
15816
+#define OP_ResetCount 126
15817
+#define OP_SorterCompare 127 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
15818
+#define OP_SorterData 128 /* synopsis: r[P2]=data */
15819
+#define OP_RowData 129 /* synopsis: r[P2]=data */
15820
+#define OP_Rowid 130 /* synopsis: r[P2]=rowid */
15821
+#define OP_NullRow 131
15822
+#define OP_SeekEnd 132
15823
+#define OP_IdxInsert 133 /* synopsis: key=r[P2] */
15824
+#define OP_SorterInsert 134 /* synopsis: key=r[P2] */
15825
+#define OP_IdxDelete 135 /* synopsis: key=r[P2@P3] */
15826
+#define OP_DeferredSeek 136 /* synopsis: Move P3 to P1.rowid if needed */
15827
+#define OP_IdxRowid 137 /* synopsis: r[P2]=rowid */
15828
+#define OP_FinishSeek 138
15829
+#define OP_Destroy 139
15830
+#define OP_Clear 140
15831
+#define OP_ResetSorter 141
15832
+#define OP_CreateBtree 142 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
15833
+#define OP_SqlExec 143
15834
+#define OP_ParseSchema 144
15835
+#define OP_LoadAnalysis 145
15836
+#define OP_DropTable 146
15837
+#define OP_DropIndex 147
15838
+#define OP_DropTrigger 148
15839
+#define OP_IntegrityCk 149
15840
+#define OP_RowSetAdd 150 /* synopsis: rowset(P1)=r[P2] */
15841
+#define OP_Real 151 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15842
+#define OP_Param 152
15843
+#define OP_FkCounter 153 /* synopsis: fkctr[P1]+=P2 */
15844
+#define OP_MemMax 154 /* synopsis: r[P1]=max(r[P1],r[P2]) */
15845
+#define OP_OffsetLimit 155 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
15846
+#define OP_AggInverse 156 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
15847
+#define OP_AggStep 157 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15848
+#define OP_AggStep1 158 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15849
+#define OP_AggValue 159 /* synopsis: r[P3]=value N=P2 */
15850
+#define OP_AggFinal 160 /* synopsis: accum=r[P1] N=P2 */
15851
+#define OP_Expire 161
15852
+#define OP_CursorLock 162
15853
+#define OP_CursorUnlock 163
15854
+#define OP_TableLock 164 /* synopsis: iDb=P1 root=P2 write=P3 */
15855
+#define OP_VBegin 165
15856
+#define OP_VCreate 166
15857
+#define OP_VDestroy 167
15858
+#define OP_VOpen 168
15859
+#define OP_VColumn 169 /* synopsis: r[P3]=vcolumn(P2) */
15860
+#define OP_VRename 170
15861
+#define OP_Pagecount 171
15862
+#define OP_MaxPgcnt 172
15863
+#define OP_Trace 173
15864
+#define OP_CursorHint 174
15865
+#define OP_ReleaseReg 175 /* synopsis: release r[P1@P2] mask P3 */
15866
+#define OP_Noop 176
15867
+#define OP_Explain 177
15868
+#define OP_Abortable 178
1586015869
1586115870
/* Properties such as "out2" or "jump" that are specified in
1586215871
** comments following the "case" for each opcode in the vdbe.c
1586315872
** are encoded into bitvectors as follows:
1586415873
*/
@@ -15877,23 +15886,23 @@
1587715886
/* 40 */ 0x01, 0x01, 0x23, 0x26, 0x26, 0x0b, 0x01, 0x01,\
1587815887
/* 48 */ 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
1587915888
/* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, 0x00,\
1588015889
/* 64 */ 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10, 0x10,\
1588115890
/* 72 */ 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10,\
15882
-/* 80 */ 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x12,\
15883
-/* 88 */ 0x20, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
15891
+/* 80 */ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00,\
15892
+/* 88 */ 0x12, 0x20, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00,\
1588415893
/* 96 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26, 0x26,\
1588515894
/* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x00,\
1588615895
/* 112 */ 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,\
15887
-/* 120 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15888
-/* 128 */ 0x00, 0x10, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,\
15889
-/* 136 */ 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00,\
15890
-/* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10,\
15891
-/* 152 */ 0x00, 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00,\
15896
+/* 120 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,\
15897
+/* 128 */ 0x00, 0x00, 0x10, 0x00, 0x00, 0x04, 0x04, 0x00,\
15898
+/* 136 */ 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00,\
15899
+/* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10,\
15900
+/* 152 */ 0x10, 0x00, 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00,\
1589215901
/* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15893
-/* 168 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,\
15894
-/* 176 */ 0x00, 0x00,}
15902
+/* 168 */ 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00,\
15903
+/* 176 */ 0x00, 0x00, 0x00,}
1589515904
1589615905
/* The sqlite3P2Values() routine is able to run faster if it knows
1589715906
** the value of the largest JUMP opcode. The smaller the maximum
1589815907
** JUMP opcode the better, so the mkopcodeh.tcl script that
1589915908
** generated this include file strives to group all JUMP opcodes
@@ -15993,10 +16002,11 @@
1599316002
#endif
1599416003
SQLITE_PRIVATE void sqlite3VdbeResetStepResult(Vdbe*);
1599516004
SQLITE_PRIVATE void sqlite3VdbeRewind(Vdbe*);
1599616005
SQLITE_PRIVATE int sqlite3VdbeReset(Vdbe*);
1599716006
SQLITE_PRIVATE void sqlite3VdbeSetNumCols(Vdbe*,int);
16007
+SQLITE_PRIVATE void sqlite3VdbeColumnInfoXfer(Vdbe*,Vdbe*);
1599816008
SQLITE_PRIVATE int sqlite3VdbeSetColName(Vdbe*, int, int, const char *, void(*)(void*));
1599916009
SQLITE_PRIVATE void sqlite3VdbeCountChanges(Vdbe*);
1600016010
SQLITE_PRIVATE sqlite3 *sqlite3VdbeDb(Vdbe*);
1600116011
SQLITE_PRIVATE u8 sqlite3VdbePrepareFlags(Vdbe*);
1600216012
SQLITE_PRIVATE void sqlite3VdbeSetSql(Vdbe*, const char *z, int n, u8);
@@ -18881,10 +18891,11 @@
1888118891
int addrCrTab; /* Address of OP_CreateBtree opcode on CREATE TABLE */
1888218892
u32 nQueryLoop; /* Est number of iterations of a query (10*log2(N)) */
1888318893
u32 oldmask; /* Mask of old.* columns referenced */
1888418894
u32 newmask; /* Mask of new.* columns referenced */
1888518895
u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */
18896
+ u8 bReturning; /* Coding a RETURNING trigger */
1888618897
u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */
1888718898
u8 disableTriggers; /* True to disable triggers */
1888818899
1888918900
/**************************************************************************
1889018901
** Fields above must be initialized to zero. The fields that follow,
@@ -19030,10 +19041,11 @@
1903019041
struct Trigger {
1903119042
char *zName; /* The name of the trigger */
1903219043
char *table; /* The table or view to which the trigger applies */
1903319044
u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT */
1903419045
u8 tr_tm; /* One of TRIGGER_BEFORE, TRIGGER_AFTER */
19046
+ u8 bReturning; /* This trigger implements a RETURNING clause */
1903519047
Expr *pWhen; /* The WHEN clause of the expression (may be NULL) */
1903619048
IdList *pColumns; /* If this is an UPDATE OF <column-list> trigger,
1903719049
the <column-list> is stored here */
1903819050
Schema *pSchema; /* Schema containing the trigger */
1903919051
Schema *pTabSchema; /* Schema containing the table */
@@ -19088,11 +19100,12 @@
1908819100
* them to. See sqlite3Update() documentation of "pChanges"
1908919101
* argument.
1909019102
*
1909119103
*/
1909219104
struct TriggerStep {
19093
- u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
19105
+ u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT,
19106
+ ** or TK_RETURNING */
1909419107
u8 orconf; /* OE_Rollback etc. */
1909519108
Trigger *pTrig; /* The trigger that this step is a part of */
1909619109
Select *pSelect; /* SELECT statement or RHS of INSERT INTO SELECT ... */
1909719110
char *zTarget; /* Target table for DELETE, UPDATE, INSERT */
1909819111
SrcList *pFrom; /* FROM clause for UPDATE statement (if any) */
@@ -19102,10 +19115,22 @@
1910219115
Upsert *pUpsert; /* Upsert clauses on an INSERT */
1910319116
char *zSpan; /* Original SQL text of this command */
1910419117
TriggerStep *pNext; /* Next in the link-list */
1910519118
TriggerStep *pLast; /* Last element in link-list. Valid for 1st elem only */
1910619119
};
19120
+
19121
+/*
19122
+** Information about a RETURNING clause
19123
+*/
19124
+struct Returning {
19125
+ Parse *pParse; /* The parse that includes the RETURNING clause */
19126
+ ExprList *pReturnEL; /* List of expressions to return */
19127
+ Trigger retTrig; /* The transient trigger that implements RETURNING */
19128
+ TriggerStep retTStep; /* The trigger step */
19129
+ Select retSel; /* The SELECT statement that implements RETURNING */
19130
+ u64 retSrcList; /* The empty FROM clause of the SELECT */
19131
+};
1910719132
1910819133
/*
1910919134
** An objected used to accumulate the text of a string where we
1911019135
** do not necessarily know how big the string will be in the end.
1911119136
*/
@@ -19704,10 +19729,11 @@
1970419729
SQLITE_PRIVATE void sqlite3AddCheckConstraint(Parse*, Expr*, const char*, const char*);
1970519730
SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,Expr*,const char*,const char*);
1970619731
SQLITE_PRIVATE void sqlite3AddCollateType(Parse*, Token*);
1970719732
SQLITE_PRIVATE void sqlite3AddGenerated(Parse*,Expr*,Token*);
1970819733
SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u8,Select*);
19734
+SQLITE_PRIVATE void sqlite3AddReturning(Parse*,ExprList*);
1970919735
SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*,
1971019736
sqlite3_vfs**,char**,char **);
1971119737
#define sqlite3CodecQueryParameters(A,B,C) 0
1971219738
SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3*,const char*);
1971319739
@@ -33429,31 +33455,31 @@
3342933455
/* 75 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
3343033456
/* 76 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
3343133457
/* 77 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
3343233458
/* 78 */ "SCopy" OpHelp("r[P2]=r[P1]"),
3343333459
/* 79 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
33434
- /* 80 */ "ResultRow" OpHelp("output=r[P1@P2]"),
33435
- /* 81 */ "CollSeq" OpHelp(""),
33436
- /* 82 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
33437
- /* 83 */ "RealAffinity" OpHelp(""),
33438
- /* 84 */ "Cast" OpHelp("affinity(r[P1])"),
33439
- /* 85 */ "Permutation" OpHelp(""),
33440
- /* 86 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
33441
- /* 87 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
33442
- /* 88 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
33443
- /* 89 */ "Column" OpHelp("r[P3]=PX"),
33444
- /* 90 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
33445
- /* 91 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
33446
- /* 92 */ "Count" OpHelp("r[P2]=count()"),
33447
- /* 93 */ "ReadCookie" OpHelp(""),
33448
- /* 94 */ "SetCookie" OpHelp(""),
33449
- /* 95 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
33450
- /* 96 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
33451
- /* 97 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
33452
- /* 98 */ "OpenDup" OpHelp(""),
33453
- /* 99 */ "OpenAutoindex" OpHelp("nColumn=P2"),
33454
- /* 100 */ "OpenEphemeral" OpHelp("nColumn=P2"),
33460
+ /* 80 */ "ChngCntRow" OpHelp("output=r[P1]"),
33461
+ /* 81 */ "ResultRow" OpHelp("output=r[P1@P2]"),
33462
+ /* 82 */ "CollSeq" OpHelp(""),
33463
+ /* 83 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
33464
+ /* 84 */ "RealAffinity" OpHelp(""),
33465
+ /* 85 */ "Cast" OpHelp("affinity(r[P1])"),
33466
+ /* 86 */ "Permutation" OpHelp(""),
33467
+ /* 87 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
33468
+ /* 88 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
33469
+ /* 89 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
33470
+ /* 90 */ "Column" OpHelp("r[P3]=PX"),
33471
+ /* 91 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
33472
+ /* 92 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
33473
+ /* 93 */ "Count" OpHelp("r[P2]=count()"),
33474
+ /* 94 */ "ReadCookie" OpHelp(""),
33475
+ /* 95 */ "SetCookie" OpHelp(""),
33476
+ /* 96 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
33477
+ /* 97 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
33478
+ /* 98 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
33479
+ /* 99 */ "OpenDup" OpHelp(""),
33480
+ /* 100 */ "OpenAutoindex" OpHelp("nColumn=P2"),
3345533481
/* 101 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
3345633482
/* 102 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
3345733483
/* 103 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
3345833484
/* 104 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
3345933485
/* 105 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -33460,77 +33486,78 @@
3346033486
/* 106 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
3346133487
/* 107 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
3346233488
/* 108 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
3346333489
/* 109 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
3346433490
/* 110 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
33465
- /* 111 */ "SorterOpen" OpHelp(""),
33491
+ /* 111 */ "OpenEphemeral" OpHelp("nColumn=P2"),
3346633492
/* 112 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
33467
- /* 113 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
33468
- /* 114 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
33493
+ /* 113 */ "SorterOpen" OpHelp(""),
33494
+ /* 114 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
3346933495
/* 115 */ "String8" OpHelp("r[P2]='P4'"),
33470
- /* 116 */ "Close" OpHelp(""),
33471
- /* 117 */ "ColumnsUsed" OpHelp(""),
33472
- /* 118 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
33473
- /* 119 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
33474
- /* 120 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
33475
- /* 121 */ "NewRowid" OpHelp("r[P2]=rowid"),
33476
- /* 122 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
33477
- /* 123 */ "RowCell" OpHelp(""),
33478
- /* 124 */ "Delete" OpHelp(""),
33479
- /* 125 */ "ResetCount" OpHelp(""),
33480
- /* 126 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
33481
- /* 127 */ "SorterData" OpHelp("r[P2]=data"),
33482
- /* 128 */ "RowData" OpHelp("r[P2]=data"),
33483
- /* 129 */ "Rowid" OpHelp("r[P2]=rowid"),
33484
- /* 130 */ "NullRow" OpHelp(""),
33485
- /* 131 */ "SeekEnd" OpHelp(""),
33486
- /* 132 */ "IdxInsert" OpHelp("key=r[P2]"),
33487
- /* 133 */ "SorterInsert" OpHelp("key=r[P2]"),
33488
- /* 134 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
33489
- /* 135 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
33490
- /* 136 */ "IdxRowid" OpHelp("r[P2]=rowid"),
33491
- /* 137 */ "FinishSeek" OpHelp(""),
33492
- /* 138 */ "Destroy" OpHelp(""),
33493
- /* 139 */ "Clear" OpHelp(""),
33494
- /* 140 */ "ResetSorter" OpHelp(""),
33495
- /* 141 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
33496
- /* 142 */ "SqlExec" OpHelp(""),
33497
- /* 143 */ "ParseSchema" OpHelp(""),
33498
- /* 144 */ "LoadAnalysis" OpHelp(""),
33499
- /* 145 */ "DropTable" OpHelp(""),
33500
- /* 146 */ "DropIndex" OpHelp(""),
33501
- /* 147 */ "DropTrigger" OpHelp(""),
33502
- /* 148 */ "IntegrityCk" OpHelp(""),
33503
- /* 149 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
33504
- /* 150 */ "Real" OpHelp("r[P2]=P4"),
33505
- /* 151 */ "Param" OpHelp(""),
33506
- /* 152 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
33507
- /* 153 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
33508
- /* 154 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
33509
- /* 155 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
33510
- /* 156 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
33511
- /* 157 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
33512
- /* 158 */ "AggValue" OpHelp("r[P3]=value N=P2"),
33513
- /* 159 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
33514
- /* 160 */ "Expire" OpHelp(""),
33515
- /* 161 */ "CursorLock" OpHelp(""),
33516
- /* 162 */ "CursorUnlock" OpHelp(""),
33517
- /* 163 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
33518
- /* 164 */ "VBegin" OpHelp(""),
33519
- /* 165 */ "VCreate" OpHelp(""),
33520
- /* 166 */ "VDestroy" OpHelp(""),
33521
- /* 167 */ "VOpen" OpHelp(""),
33522
- /* 168 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
33523
- /* 169 */ "VRename" OpHelp(""),
33524
- /* 170 */ "Pagecount" OpHelp(""),
33525
- /* 171 */ "MaxPgcnt" OpHelp(""),
33526
- /* 172 */ "Trace" OpHelp(""),
33527
- /* 173 */ "CursorHint" OpHelp(""),
33528
- /* 174 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
33529
- /* 175 */ "Noop" OpHelp(""),
33530
- /* 176 */ "Explain" OpHelp(""),
33531
- /* 177 */ "Abortable" OpHelp(""),
33496
+ /* 116 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
33497
+ /* 117 */ "Close" OpHelp(""),
33498
+ /* 118 */ "ColumnsUsed" OpHelp(""),
33499
+ /* 119 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
33500
+ /* 120 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
33501
+ /* 121 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
33502
+ /* 122 */ "NewRowid" OpHelp("r[P2]=rowid"),
33503
+ /* 123 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
33504
+ /* 124 */ "RowCell" OpHelp(""),
33505
+ /* 125 */ "Delete" OpHelp(""),
33506
+ /* 126 */ "ResetCount" OpHelp(""),
33507
+ /* 127 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
33508
+ /* 128 */ "SorterData" OpHelp("r[P2]=data"),
33509
+ /* 129 */ "RowData" OpHelp("r[P2]=data"),
33510
+ /* 130 */ "Rowid" OpHelp("r[P2]=rowid"),
33511
+ /* 131 */ "NullRow" OpHelp(""),
33512
+ /* 132 */ "SeekEnd" OpHelp(""),
33513
+ /* 133 */ "IdxInsert" OpHelp("key=r[P2]"),
33514
+ /* 134 */ "SorterInsert" OpHelp("key=r[P2]"),
33515
+ /* 135 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
33516
+ /* 136 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
33517
+ /* 137 */ "IdxRowid" OpHelp("r[P2]=rowid"),
33518
+ /* 138 */ "FinishSeek" OpHelp(""),
33519
+ /* 139 */ "Destroy" OpHelp(""),
33520
+ /* 140 */ "Clear" OpHelp(""),
33521
+ /* 141 */ "ResetSorter" OpHelp(""),
33522
+ /* 142 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
33523
+ /* 143 */ "SqlExec" OpHelp(""),
33524
+ /* 144 */ "ParseSchema" OpHelp(""),
33525
+ /* 145 */ "LoadAnalysis" OpHelp(""),
33526
+ /* 146 */ "DropTable" OpHelp(""),
33527
+ /* 147 */ "DropIndex" OpHelp(""),
33528
+ /* 148 */ "DropTrigger" OpHelp(""),
33529
+ /* 149 */ "IntegrityCk" OpHelp(""),
33530
+ /* 150 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
33531
+ /* 151 */ "Real" OpHelp("r[P2]=P4"),
33532
+ /* 152 */ "Param" OpHelp(""),
33533
+ /* 153 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
33534
+ /* 154 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
33535
+ /* 155 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
33536
+ /* 156 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
33537
+ /* 157 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
33538
+ /* 158 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
33539
+ /* 159 */ "AggValue" OpHelp("r[P3]=value N=P2"),
33540
+ /* 160 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
33541
+ /* 161 */ "Expire" OpHelp(""),
33542
+ /* 162 */ "CursorLock" OpHelp(""),
33543
+ /* 163 */ "CursorUnlock" OpHelp(""),
33544
+ /* 164 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
33545
+ /* 165 */ "VBegin" OpHelp(""),
33546
+ /* 166 */ "VCreate" OpHelp(""),
33547
+ /* 167 */ "VDestroy" OpHelp(""),
33548
+ /* 168 */ "VOpen" OpHelp(""),
33549
+ /* 169 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
33550
+ /* 170 */ "VRename" OpHelp(""),
33551
+ /* 171 */ "Pagecount" OpHelp(""),
33552
+ /* 172 */ "MaxPgcnt" OpHelp(""),
33553
+ /* 173 */ "Trace" OpHelp(""),
33554
+ /* 174 */ "CursorHint" OpHelp(""),
33555
+ /* 175 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
33556
+ /* 176 */ "Noop" OpHelp(""),
33557
+ /* 177 */ "Explain" OpHelp(""),
33558
+ /* 178 */ "Abortable" OpHelp(""),
3353233559
};
3353333560
return azName[i];
3353433561
}
3353533562
#endif
3353633563
@@ -72795,10 +72822,13 @@
7279572822
if( i<nOld ){
7279672823
pNew = apNew[i] = apOld[i];
7279772824
apOld[i] = 0;
7279872825
rc = sqlite3PagerWrite(pNew->pDbPage);
7279972826
nNew++;
72827
+ if( sqlite3PagerPageRefcount(pNew->pDbPage)!=1+(i==(iParentIdx-nxDiv)) ){
72828
+ rc = SQLITE_CORRUPT_BKPT;
72829
+ }
7280072830
if( rc ) goto balance_cleanup;
7280172831
}else{
7280272832
assert( i>0 );
7280372833
rc = allocateBtreePage(pBt, &pNew, &pgno, (bBulk ? 1 : pgno), 0);
7280472834
if( rc ) goto balance_cleanup;
@@ -80821,10 +80851,27 @@
8082180851
p->nResColumn = (u16)nResColumn;
8082280852
p->aColName = (Mem*)sqlite3DbMallocRawNN(db, sizeof(Mem)*n );
8082380853
if( p->aColName==0 ) return;
8082480854
initMemArray(p->aColName, n, db, MEM_Null);
8082580855
}
80856
+
80857
+/*
80858
+** Transfer the column count and name information from one Vdbe to
80859
+** another.
80860
+*/
80861
+SQLITE_PRIVATE void sqlite3VdbeColumnInfoXfer(Vdbe *pTo, Vdbe *pFrom){
80862
+ sqlite3 *db = pTo->db;
80863
+ assert( db==pFrom->db );
80864
+ if( pTo->nResColumn ){
80865
+ releaseMemArray(pTo->aColName, pTo->nResColumn*COLNAME_N);
80866
+ sqlite3DbFree(db, pTo->aColName);
80867
+ }
80868
+ pTo->aColName = pFrom->aColName;
80869
+ pFrom->aColName = 0;
80870
+ pTo->nResColumn = pFrom->nResColumn;
80871
+ pFrom->nResColumn = 0;
80872
+}
8082680873
8082780874
/*
8082880875
** Set the name of the idx'th column to be returned by the SQL statement.
8082980876
** zName must be a pointer to a nul terminated string.
8083080877
**
@@ -87264,10 +87311,30 @@
8726487311
assert( (pIn1->flags & MEM_Int)!=0 );
8726587312
pOut = &aMem[pOp->p2];
8726687313
sqlite3VdbeMemSetInt64(pOut, pIn1->u.i);
8726787314
break;
8726887315
}
87316
+
87317
+/* Opcode: ChngCntRow P1 P2 * * *
87318
+** Synopsis: output=r[P1]
87319
+**
87320
+** Output value in register P1 as the chance count for a DML statement,
87321
+** due to the "PRAGMA count_changes=ON" setting. Or, if there was a
87322
+** foreign key error in the statement, trigger the error now.
87323
+**
87324
+** This opcode is a variant of OP_ResultRow that checks the foreign key
87325
+** immediate constraint count and throws an error if the count is
87326
+** non-zero. The P2 opcode must be 1.
87327
+*/
87328
+case OP_ChngCntRow: {
87329
+ assert( pOp->p2==1 );
87330
+ if( (rc = sqlite3VdbeCheckFk(p,0))!=SQLITE_OK ){
87331
+ goto abort_due_to_error;
87332
+ }
87333
+ /* Fall through to the next case, OP_String */
87334
+ /* no break */ deliberate_fall_through
87335
+}
8726987336
8727087337
/* Opcode: ResultRow P1 P2 * * *
8727187338
** Synopsis: output=r[P1@P2]
8727287339
**
8727387340
** The registers P1 through P1+P2-1 contain a single row of
@@ -87281,38 +87348,10 @@
8728187348
int i;
8728287349
assert( p->nResColumn==pOp->p2 );
8728387350
assert( pOp->p1>0 );
8728487351
assert( pOp->p1+pOp->p2<=(p->nMem+1 - p->nCursor)+1 );
8728587352
87286
- /* If this statement has violated immediate foreign key constraints, do
87287
- ** not return the number of rows modified. And do not RELEASE the statement
87288
- ** transaction. It needs to be rolled back. */
87289
- if( SQLITE_OK!=(rc = sqlite3VdbeCheckFk(p, 0)) ){
87290
- assert( db->flags&SQLITE_CountRows );
87291
- assert( p->usesStmtJournal );
87292
- goto abort_due_to_error;
87293
- }
87294
-
87295
- /* If the SQLITE_CountRows flag is set in sqlite3.flags mask, then
87296
- ** DML statements invoke this opcode to return the number of rows
87297
- ** modified to the user. This is the only way that a VM that
87298
- ** opens a statement transaction may invoke this opcode.
87299
- **
87300
- ** In case this is such a statement, close any statement transaction
87301
- ** opened by this VM before returning control to the user. This is to
87302
- ** ensure that statement-transactions are always nested, not overlapping.
87303
- ** If the open statement-transaction is not closed here, then the user
87304
- ** may step another VM that opens its own statement transaction. This
87305
- ** may lead to overlapping statement transactions.
87306
- **
87307
- ** The statement transaction is never a top-level transaction. Hence
87308
- ** the RELEASE call below can never fail.
87309
- */
87310
- assert( p->iStatement==0 || db->flags&SQLITE_CountRows );
87311
- rc = sqlite3VdbeCloseStatement(p, SAVEPOINT_RELEASE);
87312
- assert( rc==SQLITE_OK );
87313
-
8731487353
/* Invalidate all ephemeral cursor row caches */
8731587354
p->cacheCtr = (p->cacheCtr + 2)|1;
8731687355
8731787356
/* Make sure the results of the current row are \000 terminated
8731887357
** and have an assigned type. The results are de-ephemeralized as
@@ -98849,27 +98888,30 @@
9884998888
#if !defined(SQLITE_OMIT_TRIGGER) || !defined(SQLITE_OMIT_UPSERT)
9885098889
/* If we have not already resolved the name, then maybe
9885198890
** it is a new.* or old.* trigger argument reference. Or
9885298891
** maybe it is an excluded.* from an upsert.
9885398892
*/
98854
- if( zDb==0 && zTab!=0 && cntTab==0 ){
98893
+ if( zDb==0 && cntTab==0 ){
9885598894
pTab = 0;
9885698895
#ifndef SQLITE_OMIT_TRIGGER
9885798896
if( pParse->pTriggerTab!=0 ){
9885898897
int op = pParse->eTriggerOp;
9885998898
assert( op==TK_DELETE || op==TK_UPDATE || op==TK_INSERT );
98860
- if( op!=TK_DELETE && sqlite3StrICmp("new",zTab) == 0 ){
98899
+ if( op!=TK_DELETE && zTab && sqlite3StrICmp("new",zTab) == 0 ){
9886198900
pExpr->iTable = 1;
9886298901
pTab = pParse->pTriggerTab;
98863
- }else if( op!=TK_INSERT && sqlite3StrICmp("old",zTab)==0 ){
98902
+ }else if( op!=TK_INSERT && zTab && sqlite3StrICmp("old",zTab)==0 ){
9886498903
pExpr->iTable = 0;
9886598904
pTab = pParse->pTriggerTab;
98905
+ }else if( pParse->bReturning ){
98906
+ pExpr->iTable = op!=TK_DELETE;
98907
+ pTab = pParse->pTriggerTab;
9886698908
}
9886798909
}
9886898910
#endif /* SQLITE_OMIT_TRIGGER */
9886998911
#ifndef SQLITE_OMIT_UPSERT
98870
- if( (pNC->ncFlags & NC_UUpsert)!=0 ){
98912
+ if( (pNC->ncFlags & NC_UUpsert)!=0 && ALWAYS(zTab) ){
9887198913
Upsert *pUpsert = pNC->uNC.pUpsert;
9887298914
if( pUpsert && sqlite3StrICmp("excluded",zTab)==0 ){
9887398915
pTab = pUpsert->pUpsertSrc->a[0].pTab;
9887498916
pExpr->iTable = EXCLUDED_TABLE_NUMBER;
9887598917
}
@@ -110733,11 +110775,10 @@
110733110775
#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER)
110734110776
if( sqlite3WalkExpr(&pFix->w, pList->a[i].pOn) ) return WRC_Abort;
110735110777
#endif
110736110778
}
110737110779
if( pSelect->pWith ){
110738
- int i;
110739110780
for(i=0; i<pSelect->pWith->nCte; i++){
110740110781
if( sqlite3WalkSelect(p, pSelect->pWith->a[i].pSelect) ){
110741110782
return WRC_Abort;
110742110783
}
110743110784
}
@@ -112364,10 +112405,79 @@
112364112405
pTab->tabFlags |= TF_OOOHidden;
112365112406
}
112366112407
}
112367112408
#endif
112368112409
112410
+/*
112411
+** Name of the special TEMP trigger used to implement RETURNING. The
112412
+** name begins with "sqlite_" so that it is guaranteed not to collide
112413
+** with any application-generated triggers.
112414
+*/
112415
+#define RETURNING_TRIGGER_NAME "sqlite_returning"
112416
+
112417
+/*
112418
+** Clean up the data structures associated with the RETURNING clause.
112419
+*/
112420
+static void sqlite3DeleteReturning(sqlite3 *db, Returning *pRet){
112421
+ Hash *pHash;
112422
+ pHash = &(db->aDb[1].pSchema->trigHash);
112423
+ sqlite3HashInsert(pHash, RETURNING_TRIGGER_NAME, 0);
112424
+ sqlite3ExprListDelete(db, pRet->pReturnEL);
112425
+ sqlite3DbFree(db, pRet);
112426
+}
112427
+
112428
+/*
112429
+** Add the RETURNING clause to the parse currently underway.
112430
+**
112431
+** This routine creates a special TEMP trigger that will fire for each row
112432
+** of the DML statement. That TEMP trigger contains a single SELECT
112433
+** statement with a result set that is the argument of the RETURNING clause.
112434
+** The trigger has the Trigger.bReturning flag and an opcode of
112435
+** TK_RETURNING instead of TK_SELECT, so that the trigger code generator
112436
+** knows to handle it specially. The TEMP trigger is automatically
112437
+** removed at the end of the parse.
112438
+**
112439
+** When this routine is called, we do not yet know if the RETURNING clause
112440
+** is attached to a DELETE, INSERT, or UPDATE, so construct it as a
112441
+** RETURNING trigger instead. It will then be converted into the appropriate
112442
+** type on the first call to sqlite3TriggersExist().
112443
+*/
112444
+SQLITE_PRIVATE void sqlite3AddReturning(Parse *pParse, ExprList *pList){
112445
+ Returning *pRet;
112446
+ Hash *pHash;
112447
+ sqlite3 *db = pParse->db;
112448
+ assert( !pParse->bReturning );
112449
+ pParse->bReturning = 1;
112450
+ pRet = sqlite3DbMallocZero(db, sizeof(*pRet));
112451
+ if( pRet==0 ){
112452
+ sqlite3ExprListDelete(db, pList);
112453
+ return;
112454
+ }
112455
+ pRet->pParse = pParse;
112456
+ pRet->pReturnEL = pList;
112457
+ sqlite3ParserAddCleanup(pParse,
112458
+ (void(*)(sqlite3*,void*))sqlite3DeleteReturning, pRet);
112459
+ if( db->mallocFailed ) return;
112460
+ pRet->retTrig.zName = RETURNING_TRIGGER_NAME;
112461
+ pRet->retTrig.op = TK_RETURNING;
112462
+ pRet->retTrig.tr_tm = TRIGGER_AFTER;
112463
+ pRet->retTrig.bReturning = 1;
112464
+ pRet->retTrig.pSchema = db->aDb[1].pSchema;
112465
+ pRet->retTrig.step_list = &pRet->retTStep;
112466
+ pRet->retTStep.op = TK_RETURNING;
112467
+ pRet->retTStep.pTrig = &pRet->retTrig;
112468
+ pRet->retTStep.pSelect = &pRet->retSel;
112469
+ pRet->retSel.op = TK_ALL;
112470
+ pRet->retSel.pEList = pList;
112471
+ pRet->retSel.pSrc = (SrcList*)&pRet->retSrcList;
112472
+ pHash = &(db->aDb[1].pSchema->trigHash);
112473
+ assert( sqlite3HashFind(pHash, RETURNING_TRIGGER_NAME)==0 );
112474
+ if( sqlite3HashInsert(pHash, RETURNING_TRIGGER_NAME, &pRet->retTrig)
112475
+ ==&pRet->retTrig ){
112476
+ sqlite3OomFault(db);
112477
+ }
112478
+}
112369112479
112370112480
/*
112371112481
** Add a new column to the table currently being constructed.
112372112482
**
112373112483
** The parser calls this routine once for each column declaration
@@ -117226,10 +117336,11 @@
117226117336
** we are counting rows.
117227117337
*/
117228117338
if( (db->flags & SQLITE_CountRows)!=0
117229117339
&& !pParse->nested
117230117340
&& !pParse->pTriggerTab
117341
+ && !pParse->bReturning
117231117342
){
117232117343
memCnt = ++pParse->nMem;
117233117344
sqlite3VdbeAddOp2(v, OP_Integer, 0, memCnt);
117234117345
}
117235117346
@@ -117447,11 +117558,11 @@
117447117558
/* Return the number of rows that were deleted. If this routine is
117448117559
** generating code because of a call to sqlite3NestedParse(), do not
117449117560
** invoke the callback function.
117450117561
*/
117451117562
if( memCnt ){
117452
- sqlite3VdbeAddOp2(v, OP_ResultRow, memCnt, 1);
117563
+ sqlite3VdbeAddOp2(v, OP_ChngCntRow, memCnt, 1);
117453117564
sqlite3VdbeSetNumCols(v, 1);
117454117565
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows deleted", SQLITE_STATIC);
117455117566
}
117456117567
117457117568
delete_from_cleanup:
@@ -119781,27 +119892,28 @@
119781119892
assert( argc==1 || argc==2 );
119782119893
switch( sqlite3_value_numeric_type(argv[0]) ){
119783119894
case SQLITE_INTEGER:
119784119895
case SQLITE_FLOAT:
119785119896
x = sqlite3_value_double(argv[0]);
119786
- if( x<0.0 ) return;
119897
+ if( x<=0.0 ) return;
119787119898
break;
119788119899
default:
119789119900
return;
119790119901
}
119791119902
if( argc==2 ){
119792119903
switch( sqlite3_value_numeric_type(argv[0]) ){
119793119904
case SQLITE_INTEGER:
119794119905
case SQLITE_FLOAT:
119795
- b = x;
119906
+ b = log(x);
119907
+ if( b<=0.0 ) return;
119796119908
x = sqlite3_value_double(argv[1]);
119797
- if( x<0.0 ) return;
119909
+ if( x<=0.0 ) return;
119798119910
break;
119799119911
default:
119800119912
return;
119801119913
}
119802
- ans = log(x)/log(b);
119914
+ ans = log(x)/b;
119803119915
}else{
119804119916
ans = log(x);
119805119917
switch( SQLITE_PTR_TO_INT(sqlite3_user_data(context)) ){
119806119918
case 1:
119807119919
/* Convert from natural logarithm to log base 10 */
@@ -122495,10 +122607,11 @@
122495122607
/* Initialize the count of rows to be inserted
122496122608
*/
122497122609
if( (db->flags & SQLITE_CountRows)!=0
122498122610
&& !pParse->nested
122499122611
&& !pParse->pTriggerTab
122612
+ && !pParse->bReturning
122500122613
){
122501122614
regRowCount = ++pParse->nMem;
122502122615
sqlite3VdbeAddOp2(v, OP_Integer, 0, regRowCount);
122503122616
}
122504122617
@@ -122859,11 +122972,11 @@
122859122972
** Return the number of rows inserted. If this routine is
122860122973
** generating code because of a call to sqlite3NestedParse(), do not
122861122974
** invoke the callback function.
122862122975
*/
122863122976
if( regRowCount ){
122864
- sqlite3VdbeAddOp2(v, OP_ResultRow, regRowCount, 1);
122977
+ sqlite3VdbeAddOp2(v, OP_ChngCntRow, regRowCount, 1);
122865122978
sqlite3VdbeSetNumCols(v, 1);
122866122979
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows inserted", SQLITE_STATIC);
122867122980
}
122868122981
122869122982
insert_cleanup:
@@ -137763,32 +137876,41 @@
137763137876
** To state it another way: This routine returns a list of all triggers
137764137877
** that fire off of pTab. The list will include any TEMP triggers on
137765137878
** pTab as well as the triggers lised in pTab->pTrigger.
137766137879
*/
137767137880
SQLITE_PRIVATE Trigger *sqlite3TriggerList(Parse *pParse, Table *pTab){
137768
- Schema * const pTmpSchema = pParse->db->aDb[1].pSchema;
137769
- Trigger *pList = 0; /* List of triggers to return */
137881
+ Schema *pTmpSchema; /* Schema of the pTab table */
137882
+ Trigger *pList; /* List of triggers to return */
137883
+ HashElem *p; /* Loop variable for TEMP triggers */
137770137884
137771137885
if( pParse->disableTriggers ){
137772137886
return 0;
137773137887
}
137774
-
137888
+ pTmpSchema = pParse->db->aDb[1].pSchema;
137889
+ p = sqliteHashFirst(&pTmpSchema->trigHash);
137890
+ if( p==0 ){
137891
+ return pTab->pTrigger;
137892
+ }
137893
+ pList = pTab->pTrigger;
137775137894
if( pTmpSchema!=pTab->pSchema ){
137776
- HashElem *p;
137777
- assert( sqlite3SchemaMutexHeld(pParse->db, 0, pTmpSchema) );
137778
- for(p=sqliteHashFirst(&pTmpSchema->trigHash); p; p=sqliteHashNext(p)){
137895
+ while( p ){
137779137896
Trigger *pTrig = (Trigger *)sqliteHashData(p);
137780137897
if( pTrig->pTabSchema==pTab->pSchema
137781137898
&& 0==sqlite3StrICmp(pTrig->table, pTab->zName)
137782137899
){
137783
- pTrig->pNext = (pList ? pList : pTab->pTrigger);
137900
+ pTrig->pNext = pList;
137901
+ pList = pTrig;
137902
+ }else if( pTrig->op==TK_RETURNING ){
137903
+ pTrig->table = pTab->zName;
137904
+ pTrig->pTabSchema = pTab->pSchema;
137905
+ pTrig->pNext = pList;
137784137906
pList = pTrig;
137785137907
}
137908
+ p = sqliteHashNext(p);
137786137909
}
137787137910
}
137788
-
137789
- return (pList ? pList : pTab->pTrigger);
137911
+ return pList;
137790137912
}
137791137913
137792137914
/*
137793137915
** This is called by the parser when it sees a CREATE TRIGGER statement
137794137916
** up to the point of the BEGIN before the trigger actions. A Trigger
@@ -138273,11 +138395,11 @@
138273138395
138274138396
/*
138275138397
** Recursively delete a Trigger structure
138276138398
*/
138277138399
SQLITE_PRIVATE void sqlite3DeleteTrigger(sqlite3 *db, Trigger *pTrigger){
138278
- if( pTrigger==0 ) return;
138400
+ if( pTrigger==0 || pTrigger->bReturning ) return;
138279138401
sqlite3DeleteTriggerStep(db, pTrigger->step_list);
138280138402
sqlite3DbFree(db, pTrigger->zName);
138281138403
sqlite3DbFree(db, pTrigger->table);
138282138404
sqlite3ExprDelete(db, pTrigger->pWhen);
138283138405
sqlite3IdListDelete(db, pTrigger->pColumns);
@@ -138438,19 +138560,52 @@
138438138560
){
138439138561
int mask = 0;
138440138562
Trigger *pList = 0;
138441138563
Trigger *p;
138442138564
138443
- if( (pParse->db->flags & SQLITE_EnableTrigger)!=0 ){
138444
- pList = sqlite3TriggerList(pParse, pTab);
138445
- }
138446
- assert( pList==0 || IsVirtual(pTab)==0 );
138447
- for(p=pList; p; p=p->pNext){
138448
- if( p->op==op && checkColumnOverlap(p->pColumns, pChanges) ){
138449
- mask |= p->tr_tm;
138450
- }
138451
- }
138565
+ pList = sqlite3TriggerList(pParse, pTab);
138566
+ assert( pList==0 || IsVirtual(pTab)==0
138567
+ || (pList->bReturning && pList->pNext==0) );
138568
+ if( pList!=0 ){
138569
+ p = pList;
138570
+ if( (pParse->db->flags & SQLITE_EnableTrigger)==0
138571
+ && pTab->pTrigger!=0
138572
+ ){
138573
+ /* The SQLITE_DBCONFIG_ENABLE_TRIGGER setting is off. That means that
138574
+ ** only TEMP triggers are allowed. Truncate the pList so that it
138575
+ ** includes only TEMP triggers */
138576
+ if( pList==pTab->pTrigger ){
138577
+ pList = 0;
138578
+ goto exit_triggers_exist;
138579
+ }
138580
+ while( ALWAYS(p->pNext) && p->pNext!=pTab->pTrigger ) p = p->pNext;
138581
+ p->pNext = 0;
138582
+ p = pList;
138583
+ }
138584
+ do{
138585
+ if( p->op==op && checkColumnOverlap(p->pColumns, pChanges) ){
138586
+ mask |= p->tr_tm;
138587
+ }else if( p->op==TK_RETURNING ){
138588
+ /* The first time a RETURNING trigger is seen, the "op" value tells
138589
+ ** us what time of trigger it should be. */
138590
+ assert( sqlite3IsToplevel(pParse) );
138591
+ p->op = op;
138592
+ mask |= TRIGGER_AFTER;
138593
+ if( IsVirtual(pTab) && op!=TK_INSERT ){
138594
+ sqlite3ErrorMsg(pParse,
138595
+ "%s RETURNING is not available on virtual tables",
138596
+ op==TK_DELETE ? "DELETE" : "UPDATE");
138597
+ }
138598
+ }else if( p->bReturning && p->op==TK_INSERT && op==TK_UPDATE
138599
+ && sqlite3IsToplevel(pParse) ){
138600
+ /* Also fire a RETURNING trigger for an UPSERT */
138601
+ mask |= TRIGGER_AFTER;
138602
+ }
138603
+ p = p->pNext;
138604
+ }while( p );
138605
+ }
138606
+exit_triggers_exist:
138452138607
if( pMask ){
138453138608
*pMask = mask;
138454138609
}
138455138610
return (mask ? pList : 0);
138456138611
}
@@ -138488,10 +138643,51 @@
138488138643
}else{
138489138644
sqlite3DbFree(db, zName);
138490138645
}
138491138646
return pSrc;
138492138647
}
138648
+
138649
+/* The input list pList is the list of result set terms from a RETURNING
138650
+** clause. The table that we are returning from is pTab.
138651
+**
138652
+** This routine makes a copy of the pList, and at the same time expands
138653
+** any "*" wildcards to be the complete set of columns from pTab.
138654
+*/
138655
+static ExprList *sqlite3ExpandReturning(
138656
+ Parse *pParse, /* Parsing context */
138657
+ ExprList *pList, /* The arguments to RETURNING */
138658
+ Table *pTab /* The table being updated */
138659
+){
138660
+ ExprList *pNew = 0;
138661
+ sqlite3 *db = pParse->db;
138662
+ int i;
138663
+ for(i=0; i<pList->nExpr; i++){
138664
+ Expr *pOldExpr = pList->a[i].pExpr;
138665
+ if( ALWAYS(pOldExpr!=0) && pOldExpr->op==TK_ASTERISK ){
138666
+ int jj;
138667
+ for(jj=0; jj<pTab->nCol; jj++){
138668
+ if( IsHiddenColumn(pTab->aCol+jj) ) continue;
138669
+ Expr *pNewExpr = sqlite3Expr(db, TK_ID, pTab->aCol[jj].zName);
138670
+ pNew = sqlite3ExprListAppend(pParse, pNew, pNewExpr);
138671
+ if( !db->mallocFailed ){
138672
+ struct ExprList_item *pItem = &pNew->a[pNew->nExpr-1];
138673
+ pItem->zEName = sqlite3DbStrDup(db, pTab->aCol[jj].zName);
138674
+ pItem->eEName = ENAME_NAME;
138675
+ }
138676
+ }
138677
+ }else{
138678
+ Expr *pNewExpr = sqlite3ExprDup(db, pOldExpr, 0);
138679
+ pNew = sqlite3ExprListAppend(pParse, pNew, pNewExpr);
138680
+ if( !db->mallocFailed && ALWAYS(pList->a[i].zEName!=0) ){
138681
+ struct ExprList_item *pItem = &pNew->a[pNew->nExpr-1];
138682
+ pItem->zEName = sqlite3DbStrDup(db, pList->a[i].zEName);
138683
+ pItem->eEName = pList->a[i].eEName;
138684
+ }
138685
+ }
138686
+ }
138687
+ return pNew;
138688
+}
138493138689
138494138690
/*
138495138691
** Generate VDBE code for the statements inside the body of a single
138496138692
** trigger.
138497138693
*/
@@ -138538,10 +138734,11 @@
138538138734
sqlite3TriggerStepSrc(pParse, pStep),
138539138735
sqlite3ExprListDup(db, pStep->pExprList, 0),
138540138736
sqlite3ExprDup(db, pStep->pWhere, 0),
138541138737
pParse->eOrconf, 0, 0, 0
138542138738
);
138739
+ sqlite3VdbeAddOp0(v, OP_ResetCount);
138543138740
break;
138544138741
}
138545138742
case TK_INSERT: {
138546138743
sqlite3Insert(pParse,
138547138744
sqlite3TriggerStepSrc(pParse, pStep),
@@ -138548,30 +138745,49 @@
138548138745
sqlite3SelectDup(db, pStep->pSelect, 0),
138549138746
sqlite3IdListDup(db, pStep->pIdList),
138550138747
pParse->eOrconf,
138551138748
sqlite3UpsertDup(db, pStep->pUpsert)
138552138749
);
138750
+ sqlite3VdbeAddOp0(v, OP_ResetCount);
138553138751
break;
138554138752
}
138555138753
case TK_DELETE: {
138556138754
sqlite3DeleteFrom(pParse,
138557138755
sqlite3TriggerStepSrc(pParse, pStep),
138558138756
sqlite3ExprDup(db, pStep->pWhere, 0), 0, 0
138559138757
);
138758
+ sqlite3VdbeAddOp0(v, OP_ResetCount);
138560138759
break;
138561138760
}
138562
- default: assert( pStep->op==TK_SELECT ); {
138761
+ case TK_SELECT: {
138563138762
SelectDest sDest;
138564138763
Select *pSelect = sqlite3SelectDup(db, pStep->pSelect, 0);
138565138764
sqlite3SelectDestInit(&sDest, SRT_Discard, 0);
138566138765
sqlite3Select(pParse, pSelect, &sDest);
138567138766
sqlite3SelectDelete(db, pSelect);
138568138767
break;
138569138768
}
138570
- }
138571
- if( pStep->op!=TK_SELECT ){
138572
- sqlite3VdbeAddOp0(v, OP_ResetCount);
138769
+ default: assert( pStep->op==TK_RETURNING ); {
138770
+ Select *pSelect = pStep->pSelect;
138771
+ ExprList *pList = pSelect->pEList;
138772
+ SelectDest sDest;
138773
+ Select *pNew;
138774
+ pSelect->pEList =
138775
+ sqlite3ExpandReturning(pParse, pList, pParse->pTriggerTab);
138776
+ sqlite3SelectDestInit(&sDest, SRT_Output, 0);
138777
+ pNew = sqlite3SelectDup(db, pSelect, 0);
138778
+ if( pNew ){
138779
+ sqlite3Select(pParse, pNew, &sDest);
138780
+ if( pNew->selFlags & (SF_Aggregate|SF_HasAgg|SF_WinRewrite) ){
138781
+ sqlite3ErrorMsg(pParse, "aggregates not allowed in RETURNING");
138782
+ }
138783
+ sqlite3SelectDelete(db, pNew);
138784
+ }
138785
+ sqlite3ExprListDelete(db, pSelect->pEList);
138786
+ pStep->pSelect->pEList = pList;
138787
+ break;
138788
+ }
138573138789
}
138574138790
}
138575138791
138576138792
return 0;
138577138793
}
@@ -138658,10 +138874,11 @@
138658138874
pSubParse->db = db;
138659138875
pSubParse->pTriggerTab = pTab;
138660138876
pSubParse->pToplevel = pTop;
138661138877
pSubParse->zAuthContext = pTrigger->zName;
138662138878
pSubParse->eTriggerOp = pTrigger->op;
138879
+ pSubParse->bReturning = pTrigger->bReturning;
138663138880
pSubParse->nQueryLoop = pParse->nQueryLoop;
138664138881
pSubParse->disableVtab = pParse->disableVtab;
138665138882
138666138883
v = sqlite3GetVdbe(pSubParse);
138667138884
if( v ){
@@ -138707,10 +138924,13 @@
138707138924
138708138925
transferParseError(pParse, pSubParse);
138709138926
if( db->mallocFailed==0 && pParse->nErr==0 ){
138710138927
pProgram->aOp = sqlite3VdbeTakeOpArray(v, &pProgram->nOp, &pTop->nMaxArg);
138711138928
}
138929
+ if( pTrigger->bReturning ){
138930
+ sqlite3VdbeColumnInfoXfer(sqlite3ParseToplevel(pParse)->pVdbe, v);
138931
+ }
138712138932
pProgram->nMem = pSubParse->nMem;
138713138933
pProgram->nCsr = pSubParse->nTab;
138714138934
pProgram->token = (void *)pTrigger;
138715138935
pPrg->aColmask[0] = pSubParse->oldmask;
138716138936
pPrg->aColmask[1] = pSubParse->newmask;
@@ -138861,16 +139081,24 @@
138861139081
assert( p->pSchema!=0 );
138862139082
assert( p->pTabSchema!=0 );
138863139083
assert( p->pSchema==p->pTabSchema
138864139084
|| p->pSchema==pParse->db->aDb[1].pSchema );
138865139085
138866
- /* Determine whether we should code this trigger */
138867
- if( p->op==op
139086
+ /* Determine whether we should code this trigger. One of two choices:
139087
+ ** 1. The trigger is an exact match to the current DML statement
139088
+ ** 2. This is a RETURNING trigger for INSERT but we are currently
139089
+ ** doing the UPDATE part of an UPSERT.
139090
+ */
139091
+ if( (p->op==op || (p->bReturning && p->op==TK_INSERT && op==TK_UPDATE))
138868139092
&& p->tr_tm==tr_tm
138869139093
&& checkColumnOverlap(p->pColumns, pChanges)
139094
+ && (sqlite3IsToplevel(pParse) || !p->bReturning)
138870139095
){
139096
+ u8 origOp = p->op;
139097
+ p->op = op;
138871139098
sqlite3CodeRowTriggerDirect(pParse, p, pTab, reg, orconf, ignoreJump);
139099
+ p->op = origOp;
138872139100
}
138873139101
}
138874139102
}
138875139103
138876139104
/*
@@ -139574,10 +139802,11 @@
139574139802
/* Not an UPSERT. Normal processing. Begin by
139575139803
** initialize the count of updated rows */
139576139804
if( (db->flags&SQLITE_CountRows)!=0
139577139805
&& !pParse->pTriggerTab
139578139806
&& !pParse->nested
139807
+ && !pParse->bReturning
139579139808
&& pUpsert==0
139580139809
){
139581139810
regRowCount = ++pParse->nMem;
139582139811
sqlite3VdbeAddOp2(v, OP_Integer, 0, regRowCount);
139583139812
}
@@ -140037,11 +140266,11 @@
140037140266
/*
140038140267
** Return the number of rows that were changed, if we are tracking
140039140268
** that information.
140040140269
*/
140041140270
if( regRowCount ){
140042
- sqlite3VdbeAddOp2(v, OP_ResultRow, regRowCount, 1);
140271
+ sqlite3VdbeAddOp2(v, OP_ChngCntRow, regRowCount, 1);
140043140272
sqlite3VdbeSetNumCols(v, 1);
140044140273
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows updated", SQLITE_STATIC);
140045140274
}
140046140275
140047140276
update_cleanup:
@@ -152864,11 +153093,11 @@
152864153093
assert( pOp->opcode!=OP_Rowid || pOp->p1!=pLevel->iTabCur );
152865153094
assert( pOp->opcode!=OP_IfNullRow || pOp->p1!=pLevel->iTabCur );
152866153095
#endif
152867153096
pOp = sqlite3VdbeGetOp(v, k);
152868153097
pLastOp = pOp + (last - k);
152869
- assert( pOp<pLastOp );
153098
+ assert( pOp<pLastOp || (pParse->nErr>0 && pOp==pLastOp) );
152870153099
do{
152871153100
if( pOp->p1!=pLevel->iTabCur ){
152872153101
/* no-op */
152873153102
}else if( pOp->opcode==OP_Column
152874153103
#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
@@ -156326,43 +156555,44 @@
156326156555
#define TK_ORDER 143
156327156556
#define TK_GROUP 144
156328156557
#define TK_HAVING 145
156329156558
#define TK_LIMIT 146
156330156559
#define TK_WHERE 147
156331
-#define TK_INTO 148
156332
-#define TK_NOTHING 149
156333
-#define TK_FLOAT 150
156334
-#define TK_BLOB 151
156335
-#define TK_INTEGER 152
156336
-#define TK_VARIABLE 153
156337
-#define TK_CASE 154
156338
-#define TK_WHEN 155
156339
-#define TK_THEN 156
156340
-#define TK_ELSE 157
156341
-#define TK_INDEX 158
156342
-#define TK_ALTER 159
156343
-#define TK_ADD 160
156344
-#define TK_WINDOW 161
156345
-#define TK_OVER 162
156346
-#define TK_FILTER 163
156347
-#define TK_COLUMN 164
156348
-#define TK_AGG_FUNCTION 165
156349
-#define TK_AGG_COLUMN 166
156350
-#define TK_TRUEFALSE 167
156351
-#define TK_ISNOT 168
156352
-#define TK_FUNCTION 169
156353
-#define TK_UMINUS 170
156354
-#define TK_UPLUS 171
156355
-#define TK_TRUTH 172
156356
-#define TK_REGISTER 173
156357
-#define TK_VECTOR 174
156358
-#define TK_SELECT_COLUMN 175
156359
-#define TK_IF_NULL_ROW 176
156360
-#define TK_ASTERISK 177
156361
-#define TK_SPAN 178
156362
-#define TK_SPACE 179
156363
-#define TK_ILLEGAL 180
156560
+#define TK_RETURNING 148
156561
+#define TK_INTO 149
156562
+#define TK_NOTHING 150
156563
+#define TK_FLOAT 151
156564
+#define TK_BLOB 152
156565
+#define TK_INTEGER 153
156566
+#define TK_VARIABLE 154
156567
+#define TK_CASE 155
156568
+#define TK_WHEN 156
156569
+#define TK_THEN 157
156570
+#define TK_ELSE 158
156571
+#define TK_INDEX 159
156572
+#define TK_ALTER 160
156573
+#define TK_ADD 161
156574
+#define TK_WINDOW 162
156575
+#define TK_OVER 163
156576
+#define TK_FILTER 164
156577
+#define TK_COLUMN 165
156578
+#define TK_AGG_FUNCTION 166
156579
+#define TK_AGG_COLUMN 167
156580
+#define TK_TRUEFALSE 168
156581
+#define TK_ISNOT 169
156582
+#define TK_FUNCTION 170
156583
+#define TK_UMINUS 171
156584
+#define TK_UPLUS 172
156585
+#define TK_TRUTH 173
156586
+#define TK_REGISTER 174
156587
+#define TK_VECTOR 175
156588
+#define TK_SELECT_COLUMN 176
156589
+#define TK_IF_NULL_ROW 177
156590
+#define TK_ASTERISK 178
156591
+#define TK_SPAN 179
156592
+#define TK_SPACE 180
156593
+#define TK_ILLEGAL 181
156364156594
#endif
156365156595
/**************** End token definitions ***************************************/
156366156596
156367156597
/* The next sections is a series of control #defines.
156368156598
** various aspects of the generated parser.
@@ -156418,32 +156648,32 @@
156418156648
#ifndef INTERFACE
156419156649
# define INTERFACE 1
156420156650
#endif
156421156651
/************* Begin control #defines *****************************************/
156422156652
#define YYCODETYPE unsigned short int
156423
-#define YYNOCODE 310
156653
+#define YYNOCODE 313
156424156654
#define YYACTIONTYPE unsigned short int
156425156655
#define YYWILDCARD 100
156426156656
#define sqlite3ParserTOKENTYPE Token
156427156657
typedef union {
156428156658
int yyinit;
156429156659
sqlite3ParserTOKENTYPE yy0;
156430
- SrcList* yy47;
156431
- u8 yy58;
156432
- struct FrameBound yy77;
156433
- With* yy131;
156434
- int yy192;
156435
- Expr* yy202;
156436
- struct {int value; int mask;} yy207;
156437
- struct TrigEvent yy230;
156438
- ExprList* yy242;
156439
- Window* yy303;
156440
- Upsert* yy318;
156441
- const char* yy436;
156442
- TriggerStep* yy447;
156443
- Select* yy539;
156444
- IdList* yy600;
156660
+ Upsert* yy40;
156661
+ TriggerStep* yy51;
156662
+ With* yy105;
156663
+ Select* yy293;
156664
+ struct TrigEvent yy298;
156665
+ struct FrameBound yy341;
156666
+ ExprList* yy350;
156667
+ Expr* yy354;
156668
+ int yy412;
156669
+ SrcList* yy457;
156670
+ struct {int value; int mask;} yy463;
156671
+ IdList* yy498;
156672
+ Window* yy503;
156673
+ const char* yy504;
156674
+ u8 yy624;
156445156675
} YYMINORTYPE;
156446156676
#ifndef YYSTACKDEPTH
156447156677
#define YYSTACKDEPTH 100
156448156678
#endif
156449156679
#define sqlite3ParserARG_SDECL
@@ -156455,22 +156685,22 @@
156455156685
#define sqlite3ParserCTX_PDECL ,Parse *pParse
156456156686
#define sqlite3ParserCTX_PARAM ,pParse
156457156687
#define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
156458156688
#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
156459156689
#define YYFALLBACK 1
156460
-#define YYNSTATE 558
156461
-#define YYNRULE 386
156462
-#define YYNRULE_WITH_ACTION 326
156463
-#define YYNTOKEN 181
156464
-#define YY_MAX_SHIFT 557
156465
-#define YY_MIN_SHIFTREDUCE 809
156466
-#define YY_MAX_SHIFTREDUCE 1194
156467
-#define YY_ERROR_ACTION 1195
156468
-#define YY_ACCEPT_ACTION 1196
156469
-#define YY_NO_ACTION 1197
156470
-#define YY_MIN_REDUCE 1198
156471
-#define YY_MAX_REDUCE 1583
156690
+#define YYNSTATE 571
156691
+#define YYNRULE 393
156692
+#define YYNRULE_WITH_ACTION 332
156693
+#define YYNTOKEN 182
156694
+#define YY_MAX_SHIFT 570
156695
+#define YY_MIN_SHIFTREDUCE 822
156696
+#define YY_MAX_SHIFTREDUCE 1214
156697
+#define YY_ERROR_ACTION 1215
156698
+#define YY_ACCEPT_ACTION 1216
156699
+#define YY_NO_ACTION 1217
156700
+#define YY_MIN_REDUCE 1218
156701
+#define YY_MAX_REDUCE 1610
156472156702
/************* End control #defines *******************************************/
156473156703
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
156474156704
156475156705
/* Define the yytestcase() macro to be a no-op if is not already defined
156476156706
** otherwise.
@@ -156533,590 +156763,605 @@
156533156763
** yy_reduce_ofst[] For each state, the offset into yy_action for
156534156764
** shifting non-terminals after a reduce.
156535156765
** yy_default[] Default action for each state.
156536156766
**
156537156767
*********** Begin parsing tables **********************************************/
156538
-#define YY_ACTTAB_COUNT (1968)
156768
+#define YY_ACTTAB_COUNT (2017)
156539156769
static const YYACTIONTYPE yy_action[] = {
156540
- /* 0 */ 551, 1229, 551, 456, 1267, 551, 1246, 551, 114, 111,
156541
- /* 10 */ 212, 551, 1545, 551, 1267, 528, 114, 111, 212, 396,
156542
- /* 20 */ 1239, 348, 42, 42, 42, 42, 1232, 42, 42, 71,
156543
- /* 30 */ 71, 943, 1231, 71, 71, 71, 71, 1470, 1501, 944,
156544
- /* 40 */ 826, 458, 6, 121, 122, 112, 1172, 1172, 1013, 1016,
156545
- /* 50 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 1551, 396,
156546
- /* 60 */ 1366, 1525, 557, 2, 1200, 195, 533, 441, 143, 293,
156547
- /* 70 */ 533, 136, 533, 375, 262, 509, 273, 389, 1280, 532,
156548
- /* 80 */ 508, 498, 165, 121, 122, 112, 1172, 1172, 1013, 1016,
156549
- /* 90 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 1366, 447,
156550
- /* 100 */ 1522, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156551
- /* 110 */ 115, 429, 267, 267, 267, 267, 1506, 362, 1508, 440,
156552
- /* 120 */ 361, 1506, 522, 529, 1493, 548, 1121, 548, 1121, 396,
156553
- /* 130 */ 410, 242, 209, 114, 111, 212, 98, 292, 542, 222,
156554
- /* 140 */ 1036, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156555
- /* 150 */ 115, 429, 1149, 121, 122, 112, 1172, 1172, 1013, 1016,
156556
- /* 160 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 411, 433,
156557
- /* 170 */ 117, 117, 116, 116, 116, 115, 429, 1426, 473, 123,
156558
- /* 180 */ 118, 118, 118, 118, 117, 117, 116, 116, 116, 115,
156559
- /* 190 */ 429, 116, 116, 116, 115, 429, 545, 545, 545, 396,
156560
- /* 200 */ 510, 120, 120, 120, 120, 113, 1058, 1149, 1150, 1151,
156561
- /* 210 */ 1058, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156562
- /* 220 */ 115, 429, 1469, 121, 122, 112, 1172, 1172, 1013, 1016,
156563
- /* 230 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 396, 449,
156564
- /* 240 */ 320, 83, 468, 81, 363, 386, 1149, 80, 118, 118,
156565
- /* 250 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 180,
156566
- /* 260 */ 439, 429, 121, 122, 112, 1172, 1172, 1013, 1016, 1006,
156567
- /* 270 */ 1006, 119, 119, 120, 120, 120, 120, 439, 438, 267,
156568
- /* 280 */ 267, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156569
- /* 290 */ 115, 429, 548, 1116, 909, 511, 1149, 114, 111, 212,
156570
- /* 300 */ 1439, 1149, 1150, 1151, 207, 496, 1116, 396, 454, 1116,
156571
- /* 310 */ 550, 334, 120, 120, 120, 120, 300, 1439, 1441, 17,
156572
- /* 320 */ 118, 118, 118, 118, 117, 117, 116, 116, 116, 115,
156573
- /* 330 */ 429, 121, 122, 112, 1172, 1172, 1013, 1016, 1006, 1006,
156574
- /* 340 */ 119, 119, 120, 120, 120, 120, 396, 1366, 439, 1149,
156575
- /* 350 */ 487, 1149, 1150, 1151, 1003, 1003, 1014, 1017, 406, 118,
156576
- /* 360 */ 118, 118, 118, 117, 117, 116, 116, 116, 115, 429,
156577
- /* 370 */ 121, 122, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119,
156578
- /* 380 */ 119, 120, 120, 120, 120, 1061, 1061, 470, 1439, 118,
156579
- /* 390 */ 118, 118, 118, 117, 117, 116, 116, 116, 115, 429,
156580
- /* 400 */ 1149, 456, 551, 1434, 1149, 1150, 1151, 234, 973, 1149,
156581
- /* 410 */ 486, 483, 482, 172, 364, 396, 165, 412, 419, 848,
156582
- /* 420 */ 481, 165, 186, 338, 71, 71, 1250, 1007, 118, 118,
156583
- /* 430 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 121,
156584
- /* 440 */ 122, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119, 119,
156585
- /* 450 */ 120, 120, 120, 120, 396, 1149, 1150, 1151, 841, 12,
156586
- /* 460 */ 318, 514, 164, 360, 1149, 1150, 1151, 114, 111, 212,
156587
- /* 470 */ 513, 292, 542, 551, 277, 181, 292, 542, 121, 122,
156588
- /* 480 */ 112, 1172, 1172, 1013, 1016, 1006, 1006, 119, 119, 120,
156589
- /* 490 */ 120, 120, 120, 349, 489, 71, 71, 118, 118, 118,
156590
- /* 500 */ 118, 117, 117, 116, 116, 116, 115, 429, 1149, 210,
156591
- /* 510 */ 416, 528, 1149, 1116, 1579, 382, 253, 270, 346, 492,
156592
- /* 520 */ 341, 491, 239, 396, 518, 368, 1116, 1134, 337, 1116,
156593
- /* 530 */ 192, 414, 288, 32, 462, 448, 118, 118, 118, 118,
156594
- /* 540 */ 117, 117, 116, 116, 116, 115, 429, 121, 122, 112,
156595
- /* 550 */ 1172, 1172, 1013, 1016, 1006, 1006, 119, 119, 120, 120,
156596
- /* 560 */ 120, 120, 396, 1149, 1150, 1151, 994, 1149, 1150, 1151,
156597
- /* 570 */ 1149, 234, 497, 1500, 486, 483, 482, 6, 164, 551,
156598
- /* 580 */ 517, 551, 115, 429, 481, 5, 121, 122, 112, 1172,
156599
- /* 590 */ 1172, 1013, 1016, 1006, 1006, 119, 119, 120, 120, 120,
156600
- /* 600 */ 120, 13, 13, 13, 13, 118, 118, 118, 118, 117,
156601
- /* 610 */ 117, 116, 116, 116, 115, 429, 408, 507, 413, 551,
156602
- /* 620 */ 1494, 549, 1149, 898, 898, 1149, 1150, 1151, 1481, 1149,
156603
- /* 630 */ 276, 396, 814, 815, 816, 978, 427, 427, 427, 16,
156604
- /* 640 */ 16, 55, 55, 1249, 118, 118, 118, 118, 117, 117,
156605
- /* 650 */ 116, 116, 116, 115, 429, 121, 122, 112, 1172, 1172,
156606
- /* 660 */ 1013, 1016, 1006, 1006, 119, 119, 120, 120, 120, 120,
156607
- /* 670 */ 396, 1196, 1, 1, 557, 2, 1200, 1149, 1150, 1151,
156608
- /* 680 */ 195, 293, 904, 136, 1149, 1150, 1151, 903, 526, 1500,
156609
- /* 690 */ 1280, 3, 384, 6, 121, 122, 112, 1172, 1172, 1013,
156610
- /* 700 */ 1016, 1006, 1006, 119, 119, 120, 120, 120, 120, 864,
156611
- /* 710 */ 551, 930, 551, 118, 118, 118, 118, 117, 117, 116,
156612
- /* 720 */ 116, 116, 115, 429, 267, 267, 1099, 1577, 1149, 556,
156613
- /* 730 */ 1577, 1200, 13, 13, 13, 13, 293, 548, 136, 396,
156614
- /* 740 */ 490, 426, 425, 973, 348, 1280, 473, 415, 865, 281,
156615
- /* 750 */ 140, 222, 118, 118, 118, 118, 117, 117, 116, 116,
156616
- /* 760 */ 116, 115, 429, 121, 122, 112, 1172, 1172, 1013, 1016,
156617
- /* 770 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 551, 267,
156618
- /* 780 */ 267, 433, 396, 1149, 1150, 1151, 1179, 836, 1179, 473,
156619
- /* 790 */ 436, 145, 548, 1153, 405, 318, 444, 304, 844, 1498,
156620
- /* 800 */ 71, 71, 417, 6, 1097, 478, 222, 100, 112, 1172,
156621
- /* 810 */ 1172, 1013, 1016, 1006, 1006, 119, 119, 120, 120, 120,
156622
- /* 820 */ 120, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156623
- /* 830 */ 115, 429, 238, 1433, 551, 456, 433, 289, 993, 551,
156624
- /* 840 */ 237, 236, 235, 836, 97, 534, 434, 1272, 1272, 1153,
156625
- /* 850 */ 499, 309, 435, 844, 984, 551, 71, 71, 983, 1248,
156626
- /* 860 */ 551, 51, 51, 302, 118, 118, 118, 118, 117, 117,
156627
- /* 870 */ 116, 116, 116, 115, 429, 195, 103, 70, 70, 267,
156628
- /* 880 */ 267, 551, 71, 71, 267, 267, 30, 395, 348, 983,
156629
- /* 890 */ 983, 985, 548, 533, 1116, 332, 396, 548, 500, 401,
156630
- /* 900 */ 460, 196, 535, 13, 13, 1366, 241, 1116, 278, 282,
156631
- /* 910 */ 1116, 282, 306, 462, 308, 337, 396, 31, 189, 424,
156632
- /* 920 */ 121, 122, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119,
156633
- /* 930 */ 119, 120, 120, 120, 120, 142, 396, 369, 456, 993,
156634
- /* 940 */ 121, 122, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119,
156635
- /* 950 */ 119, 120, 120, 120, 120, 984, 327, 1149, 330, 983,
156636
- /* 960 */ 121, 110, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119,
156637
- /* 970 */ 119, 120, 120, 120, 120, 469, 381, 1192, 118, 118,
156638
- /* 980 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 1149,
156639
- /* 990 */ 983, 983, 985, 307, 9, 461, 245, 462, 118, 118,
156640
- /* 1000 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 317,
156641
- /* 1010 */ 551, 279, 1149, 1150, 1151, 301, 292, 542, 118, 118,
156642
- /* 1020 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 1270,
156643
- /* 1030 */ 1270, 1170, 13, 13, 531, 426, 425, 473, 396, 929,
156644
- /* 1040 */ 261, 261, 97, 1176, 1149, 1150, 1151, 190, 1178, 267,
156645
- /* 1050 */ 267, 473, 138, 548, 1193, 551, 1177, 264, 348, 494,
156646
- /* 1060 */ 928, 551, 548, 122, 112, 1172, 1172, 1013, 1016, 1006,
156647
- /* 1070 */ 1006, 119, 119, 120, 120, 120, 120, 71, 71, 1149,
156648
- /* 1080 */ 1179, 1279, 1179, 13, 13, 904, 1077, 1170, 551, 473,
156649
- /* 1090 */ 903, 107, 543, 280, 4, 1275, 1116, 450, 530, 1056,
156650
- /* 1100 */ 12, 1078, 1099, 1578, 316, 144, 1578, 525, 546, 1116,
156651
- /* 1110 */ 56, 56, 1116, 1499, 428, 1366, 1079, 6, 349, 970,
156652
- /* 1120 */ 118, 118, 118, 118, 117, 117, 116, 116, 116, 115,
156653
- /* 1130 */ 429, 430, 1278, 325, 1149, 1150, 1151, 884, 267, 267,
156654
- /* 1140 */ 855, 107, 543, 540, 4, 1497, 238, 885, 1218, 6,
156655
- /* 1150 */ 211, 548, 370, 165, 366, 501, 421, 1496, 546, 268,
156656
- /* 1160 */ 268, 6, 1550, 516, 504, 873, 267, 267, 400, 536,
156657
- /* 1170 */ 8, 993, 548, 524, 551, 928, 463, 105, 105, 548,
156658
- /* 1180 */ 1097, 430, 267, 267, 106, 422, 430, 553, 552, 267,
156659
- /* 1190 */ 267, 983, 523, 540, 1381, 548, 15, 15, 267, 267,
156660
- /* 1200 */ 1478, 1127, 548, 267, 267, 1077, 1380, 520, 292, 542,
156661
- /* 1210 */ 551, 548, 519, 401, 449, 320, 548, 551, 928, 125,
156662
- /* 1220 */ 1078, 993, 983, 983, 985, 986, 27, 105, 105, 405,
156663
- /* 1230 */ 347, 1519, 44, 44, 106, 1079, 430, 553, 552, 57,
156664
- /* 1240 */ 57, 983, 347, 1519, 107, 543, 551, 4, 467, 405,
156665
- /* 1250 */ 215, 1127, 464, 295, 381, 1098, 539, 296, 551, 1221,
156666
- /* 1260 */ 402, 546, 544, 402, 299, 245, 292, 542, 58, 58,
156667
- /* 1270 */ 551, 1284, 983, 983, 985, 986, 27, 1524, 1138, 432,
156668
- /* 1280 */ 59, 59, 271, 548, 430, 403, 166, 379, 379, 378,
156669
- /* 1290 */ 256, 376, 60, 60, 823, 1187, 540, 551, 274, 551,
156670
- /* 1300 */ 1170, 851, 393, 392, 551, 205, 551, 216, 211, 298,
156671
- /* 1310 */ 520, 1303, 551, 266, 209, 521, 1316, 297, 275, 61,
156672
- /* 1320 */ 61, 62, 62, 451, 993, 205, 45, 45, 46, 46,
156673
- /* 1330 */ 105, 105, 1193, 928, 47, 47, 291, 106, 551, 430,
156674
- /* 1340 */ 553, 552, 943, 551, 983, 313, 394, 218, 551, 109,
156675
- /* 1350 */ 944, 107, 543, 219, 4, 156, 1170, 851, 158, 551,
156676
- /* 1360 */ 49, 49, 104, 551, 102, 50, 50, 551, 546, 1315,
156677
- /* 1370 */ 63, 63, 551, 443, 217, 983, 983, 985, 986, 27,
156678
- /* 1380 */ 1484, 64, 64, 551, 310, 65, 65, 551, 1458, 14,
156679
- /* 1390 */ 14, 430, 1457, 551, 66, 66, 1094, 551, 1169, 383,
156680
- /* 1400 */ 141, 551, 38, 540, 269, 127, 127, 551, 397, 67,
156681
- /* 1410 */ 67, 551, 465, 292, 542, 52, 52, 520, 551, 68,
156682
- /* 1420 */ 68, 1043, 519, 69, 69, 315, 95, 322, 97, 53,
156683
- /* 1430 */ 53, 993, 975, 151, 151, 244, 437, 105, 105, 200,
156684
- /* 1440 */ 152, 152, 455, 1312, 106, 244, 430, 553, 552, 1138,
156685
- /* 1450 */ 432, 983, 457, 271, 321, 244, 326, 97, 379, 379,
156686
- /* 1460 */ 378, 256, 376, 863, 862, 823, 531, 551, 221, 551,
156687
- /* 1470 */ 107, 543, 551, 4, 551, 329, 479, 1043, 216, 240,
156688
- /* 1480 */ 298, 331, 983, 983, 985, 986, 27, 546, 297, 76,
156689
- /* 1490 */ 76, 54, 54, 333, 72, 72, 128, 128, 870, 871,
156690
- /* 1500 */ 107, 543, 551, 4, 1263, 551, 946, 947, 1247, 551,
156691
- /* 1510 */ 430, 551, 200, 1055, 551, 1055, 551, 546, 218, 551,
156692
- /* 1520 */ 335, 1538, 540, 97, 73, 73, 156, 129, 129, 158,
156693
- /* 1530 */ 340, 130, 130, 126, 126, 350, 150, 150, 149, 149,
156694
- /* 1540 */ 430, 134, 134, 345, 1039, 217, 937, 240, 901, 244,
156695
- /* 1550 */ 993, 109, 540, 344, 987, 551, 105, 105, 908, 351,
156696
- /* 1560 */ 551, 1513, 1054, 106, 1054, 430, 553, 552, 551, 1324,
156697
- /* 1570 */ 983, 834, 99, 543, 139, 4, 551, 133, 133, 397,
156698
- /* 1580 */ 993, 1365, 131, 131, 292, 542, 105, 105, 1299, 546,
156699
- /* 1590 */ 132, 132, 287, 106, 1310, 430, 553, 552, 75, 75,
156700
- /* 1600 */ 983, 983, 983, 985, 986, 27, 551, 437, 902, 537,
156701
- /* 1610 */ 987, 109, 430, 259, 551, 538, 1371, 1228, 474, 551,
156702
- /* 1620 */ 198, 551, 1220, 1209, 540, 1208, 1210, 1532, 77, 77,
156703
- /* 1630 */ 202, 983, 983, 985, 986, 27, 74, 74, 1296, 353,
156704
- /* 1640 */ 355, 43, 43, 48, 48, 357, 11, 380, 214, 343,
156705
- /* 1650 */ 303, 442, 993, 312, 305, 1360, 314, 484, 105, 105,
156706
- /* 1660 */ 459, 1246, 319, 206, 1430, 106, 1429, 430, 553, 552,
156707
- /* 1670 */ 359, 541, 983, 271, 1535, 1187, 168, 248, 379, 379,
156708
- /* 1680 */ 378, 256, 376, 201, 193, 823, 373, 194, 1477, 1475,
156709
- /* 1690 */ 1184, 79, 404, 82, 83, 453, 178, 95, 216, 1349,
156710
- /* 1700 */ 298, 162, 1435, 983, 983, 985, 986, 27, 297, 1354,
156711
- /* 1710 */ 1346, 35, 170, 445, 446, 477, 173, 174, 175, 176,
156712
- /* 1720 */ 385, 224, 1358, 1361, 1357, 466, 387, 36, 182, 452,
156713
- /* 1730 */ 388, 1424, 228, 88, 472, 260, 230, 1446, 218, 187,
156714
- /* 1740 */ 475, 328, 231, 390, 324, 1211, 156, 232, 493, 158,
156715
- /* 1750 */ 418, 90, 1257, 1266, 1549, 1265, 1264, 855, 1256, 207,
156716
- /* 1760 */ 420, 512, 1307, 1548, 94, 217, 352, 391, 1236, 1235,
156717
- /* 1770 */ 342, 1234, 1547, 1518, 354, 285, 503, 286, 506, 246,
156718
- /* 1780 */ 247, 1504, 1503, 423, 1308, 124, 531, 1306, 356, 10,
156719
- /* 1790 */ 1305, 367, 1331, 101, 290, 96, 254, 515, 1217, 397,
156720
- /* 1800 */ 34, 554, 1144, 255, 292, 542, 257, 372, 1289, 365,
156721
- /* 1810 */ 371, 358, 1288, 197, 258, 555, 1206, 1201, 1462, 153,
156722
- /* 1820 */ 1463, 1330, 1461, 154, 137, 283, 1460, 437, 155, 203,
156723
- /* 1830 */ 810, 204, 78, 431, 1410, 199, 294, 213, 272, 135,
156724
- /* 1840 */ 1053, 1051, 966, 157, 169, 220, 171, 887, 311, 223,
156725
- /* 1850 */ 1067, 177, 159, 160, 407, 84, 409, 179, 85, 86,
156726
- /* 1860 */ 87, 161, 1070, 225, 1066, 398, 167, 399, 18, 226,
156727
- /* 1870 */ 146, 227, 323, 244, 1181, 471, 229, 1059, 183, 184,
156728
- /* 1880 */ 37, 825, 344, 476, 233, 336, 488, 480, 185, 89,
156729
- /* 1890 */ 19, 20, 485, 92, 853, 339, 91, 163, 866, 147,
156730
- /* 1900 */ 284, 495, 502, 1132, 148, 1019, 936, 1102, 39, 93,
156731
- /* 1910 */ 1103, 40, 505, 263, 208, 265, 188, 931, 1122, 243,
156732
- /* 1920 */ 1126, 109, 33, 1120, 1118, 21, 1106, 22, 527, 1034,
156733
- /* 1930 */ 23, 24, 1125, 25, 191, 97, 26, 1020, 1018, 1022,
156734
- /* 1940 */ 1076, 250, 7, 1075, 249, 1023, 28, 41, 547, 988,
156735
- /* 1950 */ 835, 108, 29, 251, 252, 1540, 374, 897, 377, 1140,
156736
- /* 1960 */ 1139, 1197, 1197, 1197, 1197, 1197, 1197, 1539,
156770
+ /* 0 */ 564, 1249, 564, 197, 1571, 564, 1252, 564, 116, 113,
156771
+ /* 10 */ 218, 564, 1259, 564, 486, 393, 116, 113, 218, 405,
156772
+ /* 20 */ 357, 357, 42, 42, 42, 42, 469, 42, 42, 72,
156773
+ /* 30 */ 72, 956, 1251, 72, 72, 72, 72, 1496, 1576, 957,
156774
+ /* 40 */ 9, 886, 251, 123, 124, 114, 1192, 1192, 1032, 1035,
156775
+ /* 50 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 445, 405,
156776
+ /* 60 */ 471, 1551, 570, 2, 1220, 1577, 546, 145, 147, 305,
156777
+ /* 70 */ 546, 138, 546, 1292, 1292, 522, 564, 1189, 1300, 545,
156778
+ /* 80 */ 521, 511, 167, 123, 124, 114, 1192, 1192, 1032, 1035,
156779
+ /* 90 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 72, 72,
156780
+ /* 100 */ 281, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156781
+ /* 110 */ 117, 438, 273, 273, 273, 273, 443, 1168, 1532, 371,
156782
+ /* 120 */ 1534, 1168, 370, 1532, 535, 561, 1140, 561, 1140, 405,
156783
+ /* 130 */ 1075, 248, 215, 1189, 174, 527, 100, 304, 555, 228,
156784
+ /* 140 */ 438, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156785
+ /* 150 */ 117, 438, 448, 123, 124, 114, 1192, 1192, 1032, 1035,
156786
+ /* 160 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 541, 448,
156787
+ /* 170 */ 447, 442, 1168, 1169, 1170, 395, 1168, 1169, 1170, 125,
156788
+ /* 180 */ 120, 120, 120, 120, 119, 119, 118, 118, 118, 117,
156789
+ /* 190 */ 438, 119, 119, 118, 118, 118, 117, 438, 268, 405,
156790
+ /* 200 */ 1548, 122, 122, 122, 122, 115, 379, 84, 375, 273,
156791
+ /* 210 */ 273, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156792
+ /* 220 */ 117, 438, 561, 123, 124, 114, 1192, 1192, 1032, 1035,
156793
+ /* 230 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 405, 467,
156794
+ /* 240 */ 1118, 1604, 448, 82, 1604, 460, 329, 81, 120, 120,
156795
+ /* 250 */ 120, 120, 119, 119, 118, 118, 118, 117, 438, 116,
156796
+ /* 260 */ 113, 218, 123, 124, 114, 1192, 1192, 1032, 1035, 1025,
156797
+ /* 270 */ 1025, 121, 121, 122, 122, 122, 122, 564, 542, 1519,
156798
+ /* 280 */ 877, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156799
+ /* 290 */ 117, 438, 118, 118, 118, 117, 438, 12, 197, 71,
156800
+ /* 300 */ 71, 1135, 122, 122, 122, 122, 384, 405, 428, 1168,
156801
+ /* 310 */ 398, 503, 531, 347, 1135, 166, 312, 1135, 1116, 878,
156802
+ /* 320 */ 120, 120, 120, 120, 119, 119, 118, 118, 118, 117,
156803
+ /* 330 */ 438, 123, 124, 114, 1192, 1192, 1032, 1035, 1025, 1025,
156804
+ /* 340 */ 121, 121, 122, 122, 122, 122, 1168, 267, 267, 120,
156805
+ /* 350 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156806
+ /* 360 */ 561, 378, 1012, 1135, 1168, 1169, 1170, 240, 530, 563,
156807
+ /* 370 */ 499, 496, 495, 426, 538, 476, 1135, 1527, 1003, 1135,
156808
+ /* 380 */ 494, 6, 1002, 1392, 502, 1022, 1022, 1033, 1036, 120,
156809
+ /* 390 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156810
+ /* 400 */ 425, 1168, 1169, 1170, 1096, 1460, 259, 276, 355, 505,
156811
+ /* 410 */ 350, 504, 245, 405, 1002, 1002, 1004, 343, 346, 1097,
156812
+ /* 420 */ 240, 460, 329, 499, 496, 495, 369, 510, 1526, 357,
156813
+ /* 430 */ 529, 358, 6, 494, 1098, 450, 203, 123, 124, 114,
156814
+ /* 440 */ 1192, 1192, 1032, 1035, 1025, 1025, 121, 121, 122, 122,
156815
+ /* 450 */ 122, 122, 520, 419, 1168, 897, 405, 569, 1026, 1220,
156816
+ /* 460 */ 500, 319, 1270, 992, 305, 898, 138, 188, 1287, 423,
156817
+ /* 470 */ 1266, 167, 486, 1300, 16, 16, 144, 857, 1287, 1269,
156818
+ /* 480 */ 123, 124, 114, 1192, 1192, 1032, 1035, 1025, 1025, 121,
156819
+ /* 490 */ 121, 122, 122, 122, 122, 120, 120, 120, 120, 119,
156820
+ /* 500 */ 119, 118, 118, 118, 117, 438, 526, 273, 273, 1168,
156821
+ /* 510 */ 1169, 1170, 1392, 564, 166, 327, 1495, 1012, 414, 372,
156822
+ /* 520 */ 561, 486, 316, 1168, 318, 405, 304, 555, 373, 861,
156823
+ /* 530 */ 182, 216, 857, 1003, 228, 72, 72, 1002, 120, 120,
156824
+ /* 540 */ 120, 120, 119, 119, 118, 118, 118, 117, 438, 123,
156825
+ /* 550 */ 124, 114, 1192, 1192, 1032, 1035, 1025, 1025, 121, 121,
156826
+ /* 560 */ 122, 122, 122, 122, 405, 1459, 442, 1168, 854, 1002,
156827
+ /* 570 */ 1002, 1004, 300, 1524, 116, 113, 218, 6, 1168, 1169,
156828
+ /* 580 */ 1170, 183, 420, 116, 113, 218, 1168, 314, 123, 124,
156829
+ /* 590 */ 114, 1192, 1192, 1032, 1035, 1025, 1025, 121, 121, 122,
156830
+ /* 600 */ 122, 122, 122, 1465, 317, 943, 469, 120, 120, 120,
156831
+ /* 610 */ 120, 119, 119, 118, 118, 118, 117, 438, 1168, 211,
156832
+ /* 620 */ 1465, 1467, 1168, 1169, 1170, 917, 539, 1526, 475, 1168,
156833
+ /* 630 */ 916, 6, 1168, 405, 922, 435, 434, 1153, 213, 509,
156834
+ /* 640 */ 32, 1168, 1169, 1170, 279, 5, 120, 120, 120, 120,
156835
+ /* 650 */ 119, 119, 118, 118, 118, 117, 438, 123, 124, 114,
156836
+ /* 660 */ 1192, 1192, 1032, 1035, 1025, 1025, 121, 121, 122, 122,
156837
+ /* 670 */ 122, 122, 405, 1168, 1169, 1170, 1013, 1168, 273, 273,
156838
+ /* 680 */ 286, 1199, 1168, 1199, 1168, 1169, 1170, 1168, 1169, 1170,
156839
+ /* 690 */ 564, 561, 167, 1465, 117, 438, 123, 124, 114, 1192,
156840
+ /* 700 */ 1192, 1032, 1035, 1025, 1025, 121, 121, 122, 122, 122,
156841
+ /* 710 */ 122, 942, 13, 13, 127, 120, 120, 120, 120, 119,
156842
+ /* 720 */ 119, 118, 118, 118, 117, 438, 285, 417, 564, 449,
156843
+ /* 730 */ 564, 1392, 1168, 1169, 1170, 1290, 1290, 1168, 1169, 1170,
156844
+ /* 740 */ 97, 405, 992, 1606, 391, 997, 486, 304, 555, 17,
156845
+ /* 750 */ 72, 72, 72, 72, 120, 120, 120, 120, 119, 119,
156846
+ /* 760 */ 118, 118, 118, 117, 438, 123, 124, 114, 1192, 1192,
156847
+ /* 770 */ 1032, 1035, 1025, 1025, 121, 121, 122, 122, 122, 122,
156848
+ /* 780 */ 405, 1216, 1, 1, 570, 2, 1220, 301, 415, 433,
156849
+ /* 790 */ 1299, 305, 839, 138, 327, 455, 315, 402, 401, 564,
156850
+ /* 800 */ 1300, 421, 3, 290, 123, 124, 114, 1192, 1192, 1032,
156851
+ /* 810 */ 1035, 1025, 1025, 121, 121, 122, 122, 122, 122, 377,
156852
+ /* 820 */ 564, 13, 13, 120, 120, 120, 120, 119, 119, 118,
156853
+ /* 830 */ 118, 118, 117, 438, 273, 273, 422, 273, 273, 1168,
156854
+ /* 840 */ 1304, 357, 13, 13, 1118, 1605, 12, 561, 1605, 405,
156855
+ /* 850 */ 561, 458, 561, 1168, 558, 558, 558, 424, 436, 436,
156856
+ /* 860 */ 436, 228, 120, 120, 120, 120, 119, 119, 118, 118,
156857
+ /* 870 */ 118, 117, 438, 123, 124, 114, 1192, 1192, 1032, 1035,
156858
+ /* 880 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 146, 197,
156859
+ /* 890 */ 414, 564, 1055, 442, 1168, 1169, 1170, 414, 469, 435,
156860
+ /* 900 */ 434, 404, 562, 247, 911, 911, 564, 1196, 1168, 1169,
156861
+ /* 910 */ 1170, 486, 1198, 72, 72, 491, 1507, 547, 102, 194,
156862
+ /* 920 */ 1197, 564, 1116, 294, 459, 294, 1298, 251, 72, 72,
156863
+ /* 930 */ 1452, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156864
+ /* 940 */ 117, 438, 244, 56, 56, 1199, 564, 1199, 564, 1238,
156865
+ /* 950 */ 437, 273, 273, 564, 514, 1295, 564, 512, 564, 282,
156866
+ /* 960 */ 273, 273, 1189, 517, 561, 546, 284, 341, 52, 52,
156867
+ /* 970 */ 13, 13, 289, 561, 548, 13, 13, 564, 13, 13,
156868
+ /* 980 */ 13, 13, 549, 273, 273, 293, 1407, 105, 273, 273,
156869
+ /* 990 */ 191, 273, 273, 192, 444, 543, 561, 273, 273, 57,
156870
+ /* 1000 */ 57, 561, 274, 274, 561, 513, 1504, 405, 270, 410,
156871
+ /* 1010 */ 561, 941, 198, 304, 555, 561, 273, 273, 1189, 106,
156872
+ /* 1020 */ 409, 104, 356, 1545, 307, 346, 564, 405, 336, 561,
156873
+ /* 1030 */ 339, 123, 124, 114, 1192, 1192, 1032, 1035, 1025, 1025,
156874
+ /* 1040 */ 121, 121, 122, 122, 122, 122, 469, 405, 15, 15,
156875
+ /* 1050 */ 475, 123, 124, 114, 1192, 1192, 1032, 1035, 1025, 1025,
156876
+ /* 1060 */ 121, 121, 122, 122, 122, 122, 1080, 1080, 483, 358,
156877
+ /* 1070 */ 475, 123, 112, 114, 1192, 1192, 1032, 1035, 1025, 1025,
156878
+ /* 1080 */ 121, 121, 122, 122, 122, 122, 390, 1212, 308, 120,
156879
+ /* 1090 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156880
+ /* 1100 */ 99, 217, 480, 1172, 1406, 564, 477, 430, 541, 120,
156881
+ /* 1110 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156882
+ /* 1120 */ 291, 1077, 564, 1392, 564, 1077, 941, 44, 44, 120,
156883
+ /* 1130 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156884
+ /* 1140 */ 356, 1545, 537, 1096, 58, 58, 45, 45, 326, 405,
156885
+ /* 1150 */ 1135, 827, 828, 829, 243, 242, 241, 481, 1097, 1172,
156886
+ /* 1160 */ 1392, 536, 311, 1135, 1213, 486, 1135, 564, 292, 405,
156887
+ /* 1170 */ 1146, 1241, 411, 1098, 124, 114, 1192, 1192, 1032, 1035,
156888
+ /* 1180 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 564, 59,
156889
+ /* 1190 */ 59, 564, 507, 482, 552, 114, 1192, 1192, 1032, 1035,
156890
+ /* 1200 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 1525, 334,
156891
+ /* 1210 */ 60, 60, 6, 61, 61, 390, 1117, 1523, 917, 1520,
156892
+ /* 1220 */ 1146, 6, 564, 916, 564, 109, 556, 564, 4, 941,
156893
+ /* 1230 */ 431, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156894
+ /* 1240 */ 117, 438, 559, 864, 62, 62, 63, 63, 564, 46,
156895
+ /* 1250 */ 46, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156896
+ /* 1260 */ 117, 438, 564, 1135, 1522, 439, 1323, 564, 6, 564,
156897
+ /* 1270 */ 47, 47, 564, 557, 411, 1268, 1135, 553, 142, 1135,
156898
+ /* 1280 */ 564, 465, 304, 555, 48, 48, 564, 167, 544, 50,
156899
+ /* 1290 */ 50, 51, 51, 1213, 64, 64, 956, 109, 556, 864,
156900
+ /* 1300 */ 4, 564, 65, 65, 957, 1012, 564, 140, 66, 66,
156901
+ /* 1310 */ 564, 107, 107, 564, 559, 849, 205, 564, 108, 217,
156902
+ /* 1320 */ 439, 566, 565, 14, 14, 1002, 8, 523, 67, 67,
156903
+ /* 1330 */ 564, 452, 129, 129, 221, 68, 68, 439, 453, 53,
156904
+ /* 1340 */ 53, 403, 304, 555, 941, 412, 168, 211, 403, 553,
156905
+ /* 1350 */ 111, 1188, 69, 69, 99, 462, 244, 1002, 1002, 1004,
156906
+ /* 1360 */ 1005, 27, 466, 533, 564, 403, 564, 1336, 532, 272,
156907
+ /* 1370 */ 215, 849, 403, 564, 85, 202, 564, 1012, 564, 1207,
156908
+ /* 1380 */ 564, 303, 564, 107, 107, 564, 70, 70, 54, 54,
156909
+ /* 1390 */ 108, 403, 439, 566, 565, 153, 153, 1002, 154, 154,
156910
+ /* 1400 */ 77, 77, 55, 55, 73, 73, 1113, 130, 130, 392,
156911
+ /* 1410 */ 109, 556, 143, 4, 38, 564, 473, 299, 564, 461,
156912
+ /* 1420 */ 225, 1335, 524, 410, 30, 876, 875, 559, 454, 1002,
156913
+ /* 1430 */ 1002, 1004, 1005, 27, 1550, 1157, 441, 74, 74, 277,
156914
+ /* 1440 */ 131, 131, 324, 1510, 388, 388, 387, 262, 385, 564,
156915
+ /* 1450 */ 439, 836, 868, 320, 463, 31, 564, 883, 884, 354,
156916
+ /* 1460 */ 325, 206, 553, 99, 222, 206, 310, 544, 1539, 353,
156917
+ /* 1470 */ 994, 132, 132, 250, 309, 1484, 533, 287, 128, 128,
156918
+ /* 1480 */ 1062, 534, 109, 556, 468, 4, 564, 250, 1483, 470,
156919
+ /* 1490 */ 1012, 564, 250, 275, 564, 330, 107, 107, 99, 559,
156920
+ /* 1500 */ 1074, 564, 1074, 108, 224, 439, 566, 565, 152, 152,
156921
+ /* 1510 */ 1002, 474, 158, 151, 151, 160, 136, 136, 492, 959,
156922
+ /* 1520 */ 960, 246, 439, 135, 135, 344, 478, 564, 99, 1058,
156923
+ /* 1530 */ 487, 223, 246, 564, 553, 227, 1062, 950, 914, 1006,
156924
+ /* 1540 */ 250, 111, 1002, 1002, 1004, 1005, 27, 331, 533, 133,
156925
+ /* 1550 */ 133, 564, 1073, 532, 1073, 134, 134, 847, 915, 1332,
156926
+ /* 1560 */ 141, 111, 1012, 335, 338, 406, 340, 342, 107, 107,
156927
+ /* 1570 */ 304, 555, 1283, 76, 76, 108, 564, 439, 566, 565,
156928
+ /* 1580 */ 1157, 441, 1002, 564, 277, 109, 556, 551, 4, 388,
156929
+ /* 1590 */ 388, 387, 262, 385, 446, 1006, 836, 1267, 78, 78,
156930
+ /* 1600 */ 349, 564, 559, 359, 564, 75, 75, 360, 1330, 222,
156931
+ /* 1610 */ 1564, 310, 1344, 1391, 1002, 1002, 1004, 1005, 27, 309,
156932
+ /* 1620 */ 1319, 550, 1397, 43, 43, 439, 49, 49, 1248, 1240,
156933
+ /* 1630 */ 1229, 1228, 1230, 1558, 265, 1316, 200, 553, 362, 364,
156934
+ /* 1640 */ 366, 389, 11, 208, 1373, 220, 1378, 280, 1366, 224,
156935
+ /* 1650 */ 451, 322, 472, 328, 283, 1561, 1266, 158, 323, 1383,
156936
+ /* 1660 */ 160, 1382, 288, 368, 497, 1012, 352, 396, 382, 212,
156937
+ /* 1670 */ 1456, 107, 107, 921, 1455, 1207, 223, 254, 108, 1503,
156938
+ /* 1680 */ 439, 566, 565, 1501, 1204, 1002, 413, 204, 207, 84,
156939
+ /* 1690 */ 195, 109, 556, 1379, 4, 554, 180, 196, 170, 80,
156940
+ /* 1700 */ 164, 456, 175, 1461, 172, 83, 176, 457, 559, 177,
156941
+ /* 1710 */ 406, 178, 35, 490, 230, 304, 555, 1002, 1002, 1004,
156942
+ /* 1720 */ 1005, 27, 97, 394, 1385, 1384, 464, 1387, 184, 397,
156943
+ /* 1730 */ 36, 439, 1450, 479, 90, 485, 189, 234, 236, 446,
156944
+ /* 1740 */ 1472, 266, 488, 553, 337, 333, 237, 399, 1231, 238,
156945
+ /* 1750 */ 506, 1286, 427, 92, 1277, 868, 1276, 1285, 213, 101,
156946
+ /* 1760 */ 556, 429, 4, 1284, 1255, 1575, 1574, 525, 1256, 400,
156947
+ /* 1770 */ 351, 1012, 1254, 1573, 1544, 96, 559, 107, 107, 516,
156948
+ /* 1780 */ 519, 297, 298, 1327, 108, 361, 439, 566, 565, 1328,
156949
+ /* 1790 */ 252, 1002, 253, 432, 1530, 126, 1529, 544, 10, 439,
156950
+ /* 1800 */ 1436, 376, 528, 103, 98, 260, 1237, 34, 567, 1163,
156951
+ /* 1810 */ 374, 553, 1326, 363, 199, 1309, 365, 1308, 1325, 380,
156952
+ /* 1820 */ 367, 261, 381, 1002, 1002, 1004, 1005, 27, 1351, 1350,
156953
+ /* 1830 */ 263, 264, 568, 1226, 1221, 155, 1488, 1489, 1487, 1012,
156954
+ /* 1840 */ 139, 156, 1486, 79, 295, 107, 107, 302, 823, 440,
156955
+ /* 1850 */ 209, 210, 108, 201, 439, 566, 565, 306, 157, 1002,
156956
+ /* 1860 */ 219, 277, 278, 137, 1072, 1070, 388, 388, 387, 262,
156957
+ /* 1870 */ 385, 313, 407, 836, 171, 159, 408, 169, 1188, 226,
156958
+ /* 1880 */ 900, 173, 321, 1086, 229, 179, 222, 161, 310, 162,
156959
+ /* 1890 */ 416, 1002, 1002, 1004, 1005, 27, 309, 181, 418, 163,
156960
+ /* 1900 */ 1089, 86, 87, 88, 89, 231, 232, 1085, 148, 18,
156961
+ /* 1910 */ 233, 332, 250, 1201, 484, 186, 235, 37, 838, 489,
156962
+ /* 1920 */ 353, 1078, 185, 239, 187, 493, 224, 91, 866, 19,
156963
+ /* 1930 */ 498, 345, 20, 348, 158, 501, 93, 160, 165, 879,
156964
+ /* 1940 */ 149, 296, 94, 508, 95, 1151, 150, 1038, 1121, 39,
156965
+ /* 1950 */ 515, 1122, 40, 223, 214, 518, 269, 271, 190, 944,
156966
+ /* 1960 */ 1137, 111, 1139, 249, 1141, 1145, 21, 1125, 1144, 33,
156967
+ /* 1970 */ 540, 949, 22, 23, 24, 25, 193, 99, 1053, 26,
156968
+ /* 1980 */ 1039, 7, 1037, 1041, 1095, 1042, 1094, 406, 255, 256,
156969
+ /* 1990 */ 28, 41, 304, 555, 1007, 848, 560, 110, 29, 386,
156970
+ /* 2000 */ 910, 257, 383, 258, 1566, 1159, 1158, 1565, 1217, 1217,
156971
+ /* 2010 */ 1217, 1217, 1217, 1217, 1217, 1217, 446,
156737156972
};
156738156973
static const YYCODETYPE yy_lookahead[] = {
156739
- /* 0 */ 189, 211, 189, 189, 218, 189, 220, 189, 267, 268,
156740
- /* 10 */ 269, 189, 210, 189, 228, 189, 267, 268, 269, 19,
156741
- /* 20 */ 218, 189, 211, 212, 211, 212, 211, 211, 212, 211,
156742
- /* 30 */ 212, 31, 211, 211, 212, 211, 212, 288, 300, 39,
156743
- /* 40 */ 21, 189, 304, 43, 44, 45, 46, 47, 48, 49,
156744
- /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 225, 19,
156745
- /* 60 */ 189, 183, 184, 185, 186, 189, 248, 263, 236, 191,
156746
- /* 70 */ 248, 193, 248, 197, 208, 257, 262, 201, 200, 257,
156747
- /* 80 */ 200, 257, 81, 43, 44, 45, 46, 47, 48, 49,
156748
- /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 189, 80,
156749
- /* 100 */ 189, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156750
- /* 110 */ 110, 111, 234, 235, 234, 235, 305, 306, 305, 118,
156751
- /* 120 */ 307, 305, 306, 297, 298, 247, 86, 247, 88, 19,
156752
- /* 130 */ 259, 251, 252, 267, 268, 269, 26, 136, 137, 261,
156753
- /* 140 */ 121, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156754
- /* 150 */ 110, 111, 59, 43, 44, 45, 46, 47, 48, 49,
156755
- /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 259, 291,
156756
- /* 170 */ 105, 106, 107, 108, 109, 110, 111, 158, 189, 69,
156974
+ /* 0 */ 190, 212, 190, 190, 211, 190, 212, 190, 270, 271,
156975
+ /* 10 */ 272, 190, 219, 190, 190, 202, 270, 271, 272, 19,
156976
+ /* 20 */ 190, 190, 212, 213, 212, 213, 190, 212, 213, 212,
156977
+ /* 30 */ 213, 31, 212, 212, 213, 212, 213, 291, 23, 39,
156978
+ /* 40 */ 22, 26, 24, 43, 44, 45, 46, 47, 48, 49,
156979
+ /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 234, 19,
156980
+ /* 60 */ 190, 184, 185, 186, 187, 226, 249, 237, 237, 192,
156981
+ /* 70 */ 249, 194, 249, 231, 232, 258, 190, 59, 201, 258,
156982
+ /* 80 */ 201, 258, 81, 43, 44, 45, 46, 47, 48, 49,
156983
+ /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 212, 213,
156984
+ /* 100 */ 264, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156985
+ /* 110 */ 110, 111, 235, 236, 235, 236, 292, 59, 308, 309,
156986
+ /* 120 */ 308, 59, 310, 308, 309, 248, 86, 248, 88, 19,
156987
+ /* 130 */ 11, 252, 253, 115, 72, 249, 26, 136, 137, 262,
156988
+ /* 140 */ 111, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156989
+ /* 150 */ 110, 111, 190, 43, 44, 45, 46, 47, 48, 49,
156990
+ /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 190, 207,
156991
+ /* 170 */ 208, 294, 114, 115, 116, 201, 114, 115, 116, 69,
156757156992
/* 180 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
156758
- /* 190 */ 111, 107, 108, 109, 110, 111, 205, 206, 207, 19,
156759
- /* 200 */ 19, 54, 55, 56, 57, 58, 29, 114, 115, 116,
156760
- /* 210 */ 33, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156761
- /* 220 */ 110, 111, 233, 43, 44, 45, 46, 47, 48, 49,
156762
- /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 126,
156763
- /* 240 */ 127, 148, 65, 24, 214, 200, 59, 67, 101, 102,
156764
- /* 250 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 22,
156765
- /* 260 */ 189, 111, 43, 44, 45, 46, 47, 48, 49, 50,
156766
- /* 270 */ 51, 52, 53, 54, 55, 56, 57, 206, 207, 234,
156767
- /* 280 */ 235, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156768
- /* 290 */ 110, 111, 247, 76, 107, 114, 59, 267, 268, 269,
156769
- /* 300 */ 189, 114, 115, 116, 162, 163, 89, 19, 263, 92,
156770
- /* 310 */ 189, 23, 54, 55, 56, 57, 189, 206, 207, 22,
156993
+ /* 190 */ 111, 105, 106, 107, 108, 109, 110, 111, 209, 19,
156994
+ /* 200 */ 190, 54, 55, 56, 57, 58, 245, 149, 247, 235,
156995
+ /* 210 */ 236, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156996
+ /* 220 */ 110, 111, 248, 43, 44, 45, 46, 47, 48, 49,
156997
+ /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 265,
156998
+ /* 240 */ 22, 23, 280, 24, 26, 126, 127, 67, 101, 102,
156999
+ /* 250 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 270,
157000
+ /* 260 */ 271, 272, 43, 44, 45, 46, 47, 48, 49, 50,
157001
+ /* 270 */ 51, 52, 53, 54, 55, 56, 57, 190, 300, 301,
157002
+ /* 280 */ 35, 101, 102, 103, 104, 105, 106, 107, 108, 109,
157003
+ /* 290 */ 110, 111, 107, 108, 109, 110, 111, 209, 190, 212,
157004
+ /* 300 */ 213, 76, 54, 55, 56, 57, 198, 19, 19, 59,
157005
+ /* 310 */ 202, 66, 87, 24, 89, 190, 190, 92, 100, 74,
156771157006
/* 320 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
156772157007
/* 330 */ 111, 43, 44, 45, 46, 47, 48, 49, 50, 51,
156773
- /* 340 */ 52, 53, 54, 55, 56, 57, 19, 189, 277, 59,
156774
- /* 350 */ 23, 114, 115, 116, 46, 47, 48, 49, 61, 101,
156775
- /* 360 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
156776
- /* 370 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
156777
- /* 380 */ 53, 54, 55, 56, 57, 125, 126, 127, 277, 101,
157008
+ /* 340 */ 52, 53, 54, 55, 56, 57, 59, 235, 236, 101,
157009
+ /* 350 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
157010
+ /* 360 */ 248, 274, 99, 76, 114, 115, 116, 117, 143, 190,
157011
+ /* 370 */ 120, 121, 122, 128, 87, 287, 89, 303, 115, 92,
157012
+ /* 380 */ 130, 307, 119, 190, 95, 46, 47, 48, 49, 101,
156778157013
/* 390 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
156779
- /* 400 */ 59, 189, 189, 276, 114, 115, 116, 117, 73, 59,
156780
- /* 410 */ 120, 121, 122, 72, 214, 19, 81, 259, 19, 23,
156781
- /* 420 */ 130, 81, 72, 24, 211, 212, 221, 119, 101, 102,
156782
- /* 430 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 43,
156783
- /* 440 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
156784
- /* 450 */ 54, 55, 56, 57, 19, 114, 115, 116, 23, 208,
156785
- /* 460 */ 125, 248, 189, 189, 114, 115, 116, 267, 268, 269,
156786
- /* 470 */ 189, 136, 137, 189, 262, 22, 136, 137, 43, 44,
156787
- /* 480 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
156788
- /* 490 */ 55, 56, 57, 189, 95, 211, 212, 101, 102, 103,
156789
- /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 59, 189,
156790
- /* 510 */ 111, 189, 59, 76, 294, 295, 117, 118, 119, 120,
156791
- /* 520 */ 121, 122, 123, 19, 87, 189, 89, 23, 129, 92,
156792
- /* 530 */ 279, 227, 248, 22, 189, 284, 101, 102, 103, 104,
156793
- /* 540 */ 105, 106, 107, 108, 109, 110, 111, 43, 44, 45,
156794
- /* 550 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
156795
- /* 560 */ 56, 57, 19, 114, 115, 116, 23, 114, 115, 116,
156796
- /* 570 */ 59, 117, 299, 300, 120, 121, 122, 304, 189, 189,
156797
- /* 580 */ 143, 189, 110, 111, 130, 22, 43, 44, 45, 46,
156798
- /* 590 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
156799
- /* 600 */ 57, 211, 212, 211, 212, 101, 102, 103, 104, 105,
156800
- /* 610 */ 106, 107, 108, 109, 110, 111, 226, 189, 226, 189,
156801
- /* 620 */ 298, 132, 59, 134, 135, 114, 115, 116, 189, 59,
156802
- /* 630 */ 285, 19, 7, 8, 9, 23, 205, 206, 207, 211,
156803
- /* 640 */ 212, 211, 212, 221, 101, 102, 103, 104, 105, 106,
156804
- /* 650 */ 107, 108, 109, 110, 111, 43, 44, 45, 46, 47,
156805
- /* 660 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
156806
- /* 670 */ 19, 181, 182, 183, 184, 185, 186, 114, 115, 116,
156807
- /* 680 */ 189, 191, 133, 193, 114, 115, 116, 138, 299, 300,
156808
- /* 690 */ 200, 22, 201, 304, 43, 44, 45, 46, 47, 48,
156809
- /* 700 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 35,
156810
- /* 710 */ 189, 141, 189, 101, 102, 103, 104, 105, 106, 107,
156811
- /* 720 */ 108, 109, 110, 111, 234, 235, 22, 23, 59, 184,
156812
- /* 730 */ 26, 186, 211, 212, 211, 212, 191, 247, 193, 19,
156813
- /* 740 */ 66, 105, 106, 73, 189, 200, 189, 226, 74, 226,
156814
- /* 750 */ 22, 261, 101, 102, 103, 104, 105, 106, 107, 108,
156815
- /* 760 */ 109, 110, 111, 43, 44, 45, 46, 47, 48, 49,
156816
- /* 770 */ 50, 51, 52, 53, 54, 55, 56, 57, 189, 234,
156817
- /* 780 */ 235, 291, 19, 114, 115, 116, 150, 59, 152, 189,
156818
- /* 790 */ 233, 236, 247, 59, 189, 125, 126, 127, 59, 300,
156819
- /* 800 */ 211, 212, 128, 304, 100, 19, 261, 156, 45, 46,
156820
- /* 810 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
156821
- /* 820 */ 57, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156822
- /* 830 */ 110, 111, 46, 233, 189, 189, 291, 248, 99, 189,
156823
- /* 840 */ 125, 126, 127, 115, 26, 200, 289, 230, 231, 115,
156824
- /* 850 */ 200, 16, 189, 114, 115, 189, 211, 212, 119, 221,
156825
- /* 860 */ 189, 211, 212, 258, 101, 102, 103, 104, 105, 106,
156826
- /* 870 */ 107, 108, 109, 110, 111, 189, 156, 211, 212, 234,
156827
- /* 880 */ 235, 189, 211, 212, 234, 235, 22, 201, 189, 150,
156828
- /* 890 */ 151, 152, 247, 248, 76, 16, 19, 247, 248, 113,
156829
- /* 900 */ 19, 24, 257, 211, 212, 189, 26, 89, 262, 223,
156830
- /* 910 */ 92, 225, 77, 189, 79, 129, 19, 53, 226, 248,
156831
- /* 920 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
156832
- /* 930 */ 53, 54, 55, 56, 57, 236, 19, 271, 189, 99,
156833
- /* 940 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
156834
- /* 950 */ 53, 54, 55, 56, 57, 115, 77, 59, 79, 119,
156835
- /* 960 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
156836
- /* 970 */ 53, 54, 55, 56, 57, 259, 22, 23, 101, 102,
156837
- /* 980 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 59,
156838
- /* 990 */ 150, 151, 152, 158, 22, 114, 24, 189, 101, 102,
156839
- /* 1000 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 285,
156840
- /* 1010 */ 189, 262, 114, 115, 116, 200, 136, 137, 101, 102,
156841
- /* 1020 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 230,
156842
- /* 1030 */ 231, 59, 211, 212, 143, 105, 106, 189, 19, 141,
156843
- /* 1040 */ 234, 235, 26, 113, 114, 115, 116, 226, 118, 234,
156844
- /* 1050 */ 235, 189, 161, 247, 100, 189, 126, 23, 189, 107,
156845
- /* 1060 */ 26, 189, 247, 44, 45, 46, 47, 48, 49, 50,
156846
- /* 1070 */ 51, 52, 53, 54, 55, 56, 57, 211, 212, 59,
156847
- /* 1080 */ 150, 233, 152, 211, 212, 133, 12, 115, 189, 189,
156848
- /* 1090 */ 138, 19, 20, 285, 22, 233, 76, 127, 226, 11,
156849
- /* 1100 */ 208, 27, 22, 23, 200, 236, 26, 87, 36, 89,
156850
- /* 1110 */ 211, 212, 92, 300, 248, 189, 42, 304, 189, 149,
156851
- /* 1120 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
156852
- /* 1130 */ 111, 59, 200, 233, 114, 115, 116, 63, 234, 235,
156853
- /* 1140 */ 124, 19, 20, 71, 22, 300, 46, 73, 200, 304,
156854
- /* 1150 */ 116, 247, 244, 81, 246, 200, 227, 300, 36, 234,
156855
- /* 1160 */ 235, 304, 23, 143, 200, 26, 234, 235, 194, 200,
156856
- /* 1170 */ 48, 99, 247, 66, 189, 141, 284, 105, 106, 247,
156857
- /* 1180 */ 100, 59, 234, 235, 112, 259, 114, 115, 116, 234,
156858
- /* 1190 */ 235, 119, 85, 71, 266, 247, 211, 212, 234, 235,
156859
- /* 1200 */ 189, 94, 247, 234, 235, 12, 266, 85, 136, 137,
156860
- /* 1210 */ 189, 247, 90, 113, 126, 127, 247, 189, 26, 22,
156861
- /* 1220 */ 27, 99, 150, 151, 152, 153, 154, 105, 106, 189,
156862
- /* 1230 */ 302, 303, 211, 212, 112, 42, 114, 115, 116, 211,
156863
- /* 1240 */ 212, 119, 302, 303, 19, 20, 189, 22, 274, 189,
156864
- /* 1250 */ 15, 144, 278, 189, 22, 23, 63, 189, 189, 203,
156865
- /* 1260 */ 204, 36, 203, 204, 189, 24, 136, 137, 211, 212,
156866
- /* 1270 */ 189, 235, 150, 151, 152, 153, 154, 0, 1, 2,
156867
- /* 1280 */ 211, 212, 5, 247, 59, 292, 293, 10, 11, 12,
156868
- /* 1290 */ 13, 14, 211, 212, 17, 60, 71, 189, 258, 189,
156869
- /* 1300 */ 59, 59, 105, 106, 189, 26, 189, 30, 116, 32,
156870
- /* 1310 */ 85, 253, 189, 251, 252, 90, 189, 40, 258, 211,
156871
- /* 1320 */ 212, 211, 212, 127, 99, 26, 211, 212, 211, 212,
156872
- /* 1330 */ 105, 106, 100, 141, 211, 212, 239, 112, 189, 114,
156873
- /* 1340 */ 115, 116, 31, 189, 119, 149, 249, 70, 189, 26,
156874
- /* 1350 */ 39, 19, 20, 24, 22, 78, 115, 115, 81, 189,
156875
- /* 1360 */ 211, 212, 155, 189, 157, 211, 212, 189, 36, 189,
156876
- /* 1370 */ 211, 212, 189, 189, 97, 150, 151, 152, 153, 154,
156877
- /* 1380 */ 189, 211, 212, 189, 189, 211, 212, 189, 189, 211,
156878
- /* 1390 */ 212, 59, 189, 189, 211, 212, 23, 189, 26, 26,
156879
- /* 1400 */ 22, 189, 24, 71, 22, 211, 212, 189, 131, 211,
156880
- /* 1410 */ 212, 189, 189, 136, 137, 211, 212, 85, 189, 211,
156881
- /* 1420 */ 212, 59, 90, 211, 212, 23, 147, 189, 26, 211,
156882
- /* 1430 */ 212, 99, 23, 211, 212, 26, 159, 105, 106, 140,
156883
- /* 1440 */ 211, 212, 23, 189, 112, 26, 114, 115, 116, 1,
156884
- /* 1450 */ 2, 119, 23, 5, 23, 26, 189, 26, 10, 11,
156885
- /* 1460 */ 12, 13, 14, 118, 119, 17, 143, 189, 139, 189,
156886
- /* 1470 */ 19, 20, 189, 22, 189, 189, 23, 115, 30, 26,
156887
- /* 1480 */ 32, 189, 150, 151, 152, 153, 154, 36, 40, 211,
156888
- /* 1490 */ 212, 211, 212, 189, 211, 212, 211, 212, 7, 8,
156889
- /* 1500 */ 19, 20, 189, 22, 189, 189, 83, 84, 189, 189,
156890
- /* 1510 */ 59, 189, 140, 150, 189, 152, 189, 36, 70, 189,
156891
- /* 1520 */ 23, 139, 71, 26, 211, 212, 78, 211, 212, 81,
156892
- /* 1530 */ 189, 211, 212, 211, 212, 189, 211, 212, 211, 212,
156893
- /* 1540 */ 59, 211, 212, 119, 23, 97, 23, 26, 23, 26,
156894
- /* 1550 */ 99, 26, 71, 129, 59, 189, 105, 106, 107, 189,
156895
- /* 1560 */ 189, 309, 150, 112, 152, 114, 115, 116, 189, 189,
156896
- /* 1570 */ 119, 23, 19, 20, 26, 22, 189, 211, 212, 131,
156897
- /* 1580 */ 99, 189, 211, 212, 136, 137, 105, 106, 189, 36,
156898
- /* 1590 */ 211, 212, 250, 112, 189, 114, 115, 116, 211, 212,
156899
- /* 1600 */ 119, 150, 151, 152, 153, 154, 189, 159, 23, 189,
156900
- /* 1610 */ 115, 26, 59, 280, 189, 231, 189, 189, 281, 189,
156901
- /* 1620 */ 237, 189, 189, 189, 71, 189, 189, 189, 211, 212,
156902
- /* 1630 */ 209, 150, 151, 152, 153, 154, 211, 212, 250, 250,
156903
- /* 1640 */ 250, 211, 212, 211, 212, 250, 238, 187, 290, 214,
156904
- /* 1650 */ 240, 254, 99, 286, 254, 241, 241, 215, 105, 106,
156905
- /* 1660 */ 286, 220, 240, 224, 214, 112, 214, 114, 115, 116,
156906
- /* 1670 */ 254, 273, 119, 5, 192, 60, 290, 139, 10, 11,
156907
- /* 1680 */ 12, 13, 14, 238, 244, 17, 240, 244, 196, 196,
156908
- /* 1690 */ 38, 287, 196, 287, 148, 113, 22, 147, 30, 241,
156909
- /* 1700 */ 32, 43, 276, 150, 151, 152, 153, 154, 40, 265,
156910
- /* 1710 */ 241, 264, 229, 18, 196, 18, 232, 232, 232, 232,
156911
- /* 1720 */ 241, 195, 265, 229, 265, 196, 265, 264, 229, 241,
156912
- /* 1730 */ 241, 241, 195, 155, 62, 196, 195, 283, 70, 22,
156913
- /* 1740 */ 216, 196, 195, 216, 282, 196, 78, 195, 113, 81,
156914
- /* 1750 */ 64, 22, 222, 213, 219, 213, 213, 124, 222, 162,
156915
- /* 1760 */ 111, 142, 256, 219, 113, 97, 255, 216, 213, 215,
156916
- /* 1770 */ 213, 213, 213, 303, 255, 275, 216, 275, 216, 196,
156917
- /* 1780 */ 91, 308, 308, 82, 256, 146, 143, 256, 255, 22,
156918
- /* 1790 */ 256, 196, 260, 155, 272, 145, 25, 144, 199, 131,
156919
- /* 1800 */ 26, 198, 13, 190, 136, 137, 190, 241, 245, 244,
156920
- /* 1810 */ 242, 255, 245, 243, 6, 188, 188, 188, 208, 202,
156921
- /* 1820 */ 208, 260, 208, 202, 217, 217, 208, 159, 202, 209,
156922
- /* 1830 */ 4, 209, 208, 3, 270, 22, 160, 15, 98, 16,
156923
- /* 1840 */ 23, 23, 137, 128, 148, 24, 140, 20, 16, 142,
156924
- /* 1850 */ 1, 140, 128, 128, 61, 53, 37, 148, 53, 53,
156925
- /* 1860 */ 53, 128, 114, 34, 1, 296, 293, 296, 22, 139,
156926
- /* 1870 */ 5, 113, 158, 26, 75, 41, 139, 68, 68, 113,
156927
- /* 1880 */ 24, 20, 129, 19, 123, 23, 96, 67, 22, 22,
156928
- /* 1890 */ 22, 22, 67, 147, 59, 24, 22, 37, 28, 23,
156929
- /* 1900 */ 67, 22, 24, 23, 23, 23, 114, 23, 22, 26,
156930
- /* 1910 */ 23, 22, 24, 23, 139, 23, 22, 141, 75, 34,
156931
- /* 1920 */ 75, 26, 22, 86, 88, 34, 23, 34, 24, 23,
156932
- /* 1930 */ 34, 34, 93, 34, 26, 26, 34, 23, 23, 23,
156933
- /* 1940 */ 23, 22, 44, 23, 26, 11, 22, 22, 26, 23,
156934
- /* 1950 */ 23, 22, 22, 139, 139, 139, 23, 133, 15, 1,
156935
- /* 1960 */ 1, 310, 310, 310, 310, 310, 310, 139, 310, 310,
156936
- /* 1970 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156937
- /* 1980 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156938
- /* 1990 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156939
- /* 2000 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156940
- /* 2010 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156941
- /* 2020 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156942
- /* 2030 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156943
- /* 2040 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156944
- /* 2050 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156945
- /* 2060 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156946
- /* 2070 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156947
- /* 2080 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156948
- /* 2090 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156949
- /* 2100 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156950
- /* 2110 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156951
- /* 2120 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156952
- /* 2130 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156953
- /* 2140 */ 310, 310, 310, 310, 310, 310, 310, 310, 310,
156954
-};
156955
-#define YY_SHIFT_COUNT (557)
157014
+ /* 400 */ 111, 114, 115, 116, 12, 279, 117, 118, 119, 120,
157015
+ /* 410 */ 121, 122, 123, 19, 151, 152, 153, 23, 129, 27,
157016
+ /* 420 */ 117, 126, 127, 120, 121, 122, 190, 302, 303, 190,
157017
+ /* 430 */ 143, 190, 307, 130, 42, 265, 148, 43, 44, 45,
157018
+ /* 440 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
157019
+ /* 450 */ 56, 57, 190, 260, 59, 63, 19, 185, 119, 187,
157020
+ /* 460 */ 23, 16, 222, 73, 192, 73, 194, 72, 219, 228,
157021
+ /* 470 */ 221, 81, 190, 201, 212, 213, 237, 59, 229, 222,
157022
+ /* 480 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
157023
+ /* 490 */ 53, 54, 55, 56, 57, 101, 102, 103, 104, 105,
157024
+ /* 500 */ 106, 107, 108, 109, 110, 111, 190, 235, 236, 114,
157025
+ /* 510 */ 115, 116, 190, 190, 190, 125, 234, 99, 190, 215,
157026
+ /* 520 */ 248, 190, 77, 59, 79, 19, 136, 137, 215, 23,
157027
+ /* 530 */ 22, 190, 114, 115, 262, 212, 213, 119, 101, 102,
157028
+ /* 540 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 43,
157029
+ /* 550 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
157030
+ /* 560 */ 54, 55, 56, 57, 19, 234, 294, 59, 23, 151,
157031
+ /* 570 */ 152, 153, 249, 303, 270, 271, 272, 307, 114, 115,
157032
+ /* 580 */ 116, 22, 260, 270, 271, 272, 59, 259, 43, 44,
157033
+ /* 590 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
157034
+ /* 600 */ 55, 56, 57, 190, 159, 141, 190, 101, 102, 103,
157035
+ /* 610 */ 104, 105, 106, 107, 108, 109, 110, 111, 59, 26,
157036
+ /* 620 */ 207, 208, 114, 115, 116, 133, 302, 303, 190, 59,
157037
+ /* 630 */ 138, 307, 59, 19, 107, 105, 106, 23, 163, 164,
157038
+ /* 640 */ 22, 114, 115, 116, 201, 22, 101, 102, 103, 104,
157039
+ /* 650 */ 105, 106, 107, 108, 109, 110, 111, 43, 44, 45,
157040
+ /* 660 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
157041
+ /* 670 */ 56, 57, 19, 114, 115, 116, 23, 59, 235, 236,
157042
+ /* 680 */ 264, 151, 59, 153, 114, 115, 116, 114, 115, 116,
157043
+ /* 690 */ 190, 248, 81, 280, 110, 111, 43, 44, 45, 46,
157044
+ /* 700 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
157045
+ /* 710 */ 57, 141, 212, 213, 22, 101, 102, 103, 104, 105,
157046
+ /* 720 */ 106, 107, 108, 109, 110, 111, 288, 227, 190, 118,
157047
+ /* 730 */ 190, 190, 114, 115, 116, 231, 232, 114, 115, 116,
157048
+ /* 740 */ 147, 19, 73, 297, 298, 23, 190, 136, 137, 22,
157049
+ /* 750 */ 212, 213, 212, 213, 101, 102, 103, 104, 105, 106,
157050
+ /* 760 */ 107, 108, 109, 110, 111, 43, 44, 45, 46, 47,
157051
+ /* 770 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
157052
+ /* 780 */ 19, 182, 183, 184, 185, 186, 187, 249, 61, 249,
157053
+ /* 790 */ 234, 192, 21, 194, 125, 126, 127, 105, 106, 190,
157054
+ /* 800 */ 201, 260, 22, 201, 43, 44, 45, 46, 47, 48,
157055
+ /* 810 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 190,
157056
+ /* 820 */ 190, 212, 213, 101, 102, 103, 104, 105, 106, 107,
157057
+ /* 830 */ 108, 109, 110, 111, 235, 236, 227, 235, 236, 59,
157058
+ /* 840 */ 236, 190, 212, 213, 22, 23, 209, 248, 26, 19,
157059
+ /* 850 */ 248, 80, 248, 59, 206, 207, 208, 227, 206, 207,
157060
+ /* 860 */ 208, 262, 101, 102, 103, 104, 105, 106, 107, 108,
157061
+ /* 870 */ 109, 110, 111, 43, 44, 45, 46, 47, 48, 49,
157062
+ /* 880 */ 50, 51, 52, 53, 54, 55, 56, 57, 237, 190,
157063
+ /* 890 */ 190, 190, 121, 294, 114, 115, 116, 190, 190, 105,
157064
+ /* 900 */ 106, 202, 132, 26, 134, 135, 190, 113, 114, 115,
157065
+ /* 910 */ 116, 190, 118, 212, 213, 19, 190, 201, 157, 282,
157066
+ /* 920 */ 126, 190, 100, 224, 287, 226, 201, 24, 212, 213,
157067
+ /* 930 */ 159, 101, 102, 103, 104, 105, 106, 107, 108, 109,
157068
+ /* 940 */ 110, 111, 46, 212, 213, 151, 190, 153, 190, 201,
157069
+ /* 950 */ 249, 235, 236, 190, 201, 234, 190, 201, 190, 259,
157070
+ /* 960 */ 235, 236, 59, 201, 248, 249, 259, 16, 212, 213,
157071
+ /* 970 */ 212, 213, 264, 248, 258, 212, 213, 190, 212, 213,
157072
+ /* 980 */ 212, 213, 201, 235, 236, 227, 269, 157, 235, 236,
157073
+ /* 990 */ 227, 235, 236, 227, 190, 227, 248, 235, 236, 212,
157074
+ /* 1000 */ 213, 248, 235, 236, 248, 249, 190, 19, 23, 113,
157075
+ /* 1010 */ 248, 26, 24, 136, 137, 248, 235, 236, 115, 156,
157076
+ /* 1020 */ 195, 158, 305, 306, 190, 129, 190, 19, 77, 248,
157077
+ /* 1030 */ 79, 43, 44, 45, 46, 47, 48, 49, 50, 51,
157078
+ /* 1040 */ 52, 53, 54, 55, 56, 57, 190, 19, 212, 213,
157079
+ /* 1050 */ 190, 43, 44, 45, 46, 47, 48, 49, 50, 51,
157080
+ /* 1060 */ 52, 53, 54, 55, 56, 57, 125, 126, 127, 190,
157081
+ /* 1070 */ 190, 43, 44, 45, 46, 47, 48, 49, 50, 51,
157082
+ /* 1080 */ 52, 53, 54, 55, 56, 57, 22, 23, 190, 101,
157083
+ /* 1090 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
157084
+ /* 1100 */ 26, 116, 277, 59, 269, 190, 281, 228, 190, 101,
157085
+ /* 1110 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
157086
+ /* 1120 */ 264, 29, 190, 190, 190, 33, 141, 212, 213, 101,
157087
+ /* 1130 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
157088
+ /* 1140 */ 305, 306, 66, 12, 212, 213, 212, 213, 288, 19,
157089
+ /* 1150 */ 76, 7, 8, 9, 125, 126, 127, 65, 27, 115,
157090
+ /* 1160 */ 190, 85, 190, 89, 100, 190, 92, 190, 288, 19,
157091
+ /* 1170 */ 94, 204, 205, 42, 44, 45, 46, 47, 48, 49,
157092
+ /* 1180 */ 50, 51, 52, 53, 54, 55, 56, 57, 190, 212,
157093
+ /* 1190 */ 213, 190, 107, 260, 63, 45, 46, 47, 48, 49,
157094
+ /* 1200 */ 50, 51, 52, 53, 54, 55, 56, 57, 303, 234,
157095
+ /* 1210 */ 212, 213, 307, 212, 213, 22, 23, 303, 133, 301,
157096
+ /* 1220 */ 144, 307, 190, 138, 190, 19, 20, 190, 22, 26,
157097
+ /* 1230 */ 260, 101, 102, 103, 104, 105, 106, 107, 108, 109,
157098
+ /* 1240 */ 110, 111, 36, 59, 212, 213, 212, 213, 190, 212,
157099
+ /* 1250 */ 213, 101, 102, 103, 104, 105, 106, 107, 108, 109,
157100
+ /* 1260 */ 110, 111, 190, 76, 303, 59, 254, 190, 307, 190,
157101
+ /* 1270 */ 212, 213, 190, 204, 205, 222, 89, 71, 22, 92,
157102
+ /* 1280 */ 190, 113, 136, 137, 212, 213, 190, 81, 143, 212,
157103
+ /* 1290 */ 213, 212, 213, 100, 212, 213, 31, 19, 20, 115,
157104
+ /* 1300 */ 22, 190, 212, 213, 39, 99, 190, 162, 212, 213,
157105
+ /* 1310 */ 190, 105, 106, 190, 36, 59, 148, 190, 112, 116,
157106
+ /* 1320 */ 114, 115, 116, 212, 213, 119, 48, 19, 212, 213,
157107
+ /* 1330 */ 190, 240, 212, 213, 15, 212, 213, 59, 240, 212,
157108
+ /* 1340 */ 213, 250, 136, 137, 141, 295, 296, 26, 250, 71,
157109
+ /* 1350 */ 26, 26, 212, 213, 26, 240, 46, 151, 152, 153,
157110
+ /* 1360 */ 154, 155, 240, 85, 190, 250, 190, 190, 90, 252,
157111
+ /* 1370 */ 253, 115, 250, 190, 147, 148, 190, 99, 190, 60,
157112
+ /* 1380 */ 190, 240, 190, 105, 106, 190, 212, 213, 212, 213,
157113
+ /* 1390 */ 112, 250, 114, 115, 116, 212, 213, 119, 212, 213,
157114
+ /* 1400 */ 212, 213, 212, 213, 212, 213, 23, 212, 213, 26,
157115
+ /* 1410 */ 19, 20, 22, 22, 24, 190, 19, 251, 190, 127,
157116
+ /* 1420 */ 24, 190, 114, 113, 22, 118, 119, 36, 190, 151,
157117
+ /* 1430 */ 152, 153, 154, 155, 0, 1, 2, 212, 213, 5,
157118
+ /* 1440 */ 212, 213, 150, 190, 10, 11, 12, 13, 14, 190,
157119
+ /* 1450 */ 59, 17, 124, 190, 127, 53, 190, 7, 8, 119,
157120
+ /* 1460 */ 23, 140, 71, 26, 30, 140, 32, 143, 312, 129,
157121
+ /* 1470 */ 23, 212, 213, 26, 40, 190, 85, 150, 212, 213,
157122
+ /* 1480 */ 59, 90, 19, 20, 23, 22, 190, 26, 190, 23,
157123
+ /* 1490 */ 99, 190, 26, 22, 190, 23, 105, 106, 26, 36,
157124
+ /* 1500 */ 151, 190, 153, 112, 70, 114, 115, 116, 212, 213,
157125
+ /* 1510 */ 119, 114, 78, 212, 213, 81, 212, 213, 23, 83,
157126
+ /* 1520 */ 84, 26, 59, 212, 213, 23, 190, 190, 26, 23,
157127
+ /* 1530 */ 284, 97, 26, 190, 71, 139, 115, 23, 23, 59,
157128
+ /* 1540 */ 26, 26, 151, 152, 153, 154, 155, 190, 85, 212,
157129
+ /* 1550 */ 213, 190, 151, 90, 153, 212, 213, 23, 23, 190,
157130
+ /* 1560 */ 26, 26, 99, 190, 190, 131, 190, 190, 105, 106,
157131
+ /* 1570 */ 136, 137, 190, 212, 213, 112, 190, 114, 115, 116,
157132
+ /* 1580 */ 1, 2, 119, 190, 5, 19, 20, 232, 22, 10,
157133
+ /* 1590 */ 11, 12, 13, 14, 160, 115, 17, 190, 212, 213,
157134
+ /* 1600 */ 190, 190, 36, 190, 190, 212, 213, 190, 190, 30,
157135
+ /* 1610 */ 139, 32, 190, 190, 151, 152, 153, 154, 155, 40,
157136
+ /* 1620 */ 190, 190, 190, 212, 213, 59, 212, 213, 190, 190,
157137
+ /* 1630 */ 190, 190, 190, 190, 283, 251, 238, 71, 251, 251,
157138
+ /* 1640 */ 251, 188, 239, 210, 263, 293, 267, 241, 263, 70,
157139
+ /* 1650 */ 255, 289, 289, 241, 255, 193, 221, 78, 242, 267,
157140
+ /* 1660 */ 81, 267, 242, 255, 216, 99, 215, 267, 241, 225,
157141
+ /* 1670 */ 215, 105, 106, 107, 215, 60, 97, 139, 112, 197,
157142
+ /* 1680 */ 114, 115, 116, 197, 38, 119, 197, 148, 239, 149,
157143
+ /* 1690 */ 245, 19, 20, 268, 22, 276, 22, 245, 293, 290,
157144
+ /* 1700 */ 43, 18, 233, 279, 230, 290, 233, 197, 36, 233,
157145
+ /* 1710 */ 131, 233, 266, 18, 196, 136, 137, 151, 152, 153,
157146
+ /* 1720 */ 154, 155, 147, 242, 268, 268, 242, 230, 230, 242,
157147
+ /* 1730 */ 266, 59, 242, 197, 156, 62, 22, 196, 196, 160,
157148
+ /* 1740 */ 286, 197, 217, 71, 197, 285, 196, 217, 197, 196,
157149
+ /* 1750 */ 113, 214, 64, 22, 223, 124, 223, 214, 163, 19,
157150
+ /* 1760 */ 20, 111, 22, 214, 216, 220, 220, 142, 214, 217,
157151
+ /* 1770 */ 214, 99, 214, 214, 306, 113, 36, 105, 106, 217,
157152
+ /* 1780 */ 217, 278, 278, 257, 112, 256, 114, 115, 116, 257,
157153
+ /* 1790 */ 197, 119, 91, 82, 311, 146, 311, 143, 22, 59,
157154
+ /* 1800 */ 273, 197, 144, 156, 145, 25, 200, 26, 199, 13,
157155
+ /* 1810 */ 245, 71, 257, 256, 244, 246, 256, 246, 257, 243,
157156
+ /* 1820 */ 256, 191, 242, 151, 152, 153, 154, 155, 261, 261,
157157
+ /* 1830 */ 191, 6, 189, 189, 189, 203, 209, 209, 209, 99,
157158
+ /* 1840 */ 218, 203, 209, 209, 218, 105, 106, 275, 4, 3,
157159
+ /* 1850 */ 210, 210, 112, 22, 114, 115, 116, 161, 203, 119,
157160
+ /* 1860 */ 15, 5, 98, 16, 23, 23, 10, 11, 12, 13,
157161
+ /* 1870 */ 14, 137, 299, 17, 149, 128, 299, 296, 26, 24,
157162
+ /* 1880 */ 20, 140, 16, 1, 142, 140, 30, 128, 32, 128,
157163
+ /* 1890 */ 61, 151, 152, 153, 154, 155, 40, 149, 37, 128,
157164
+ /* 1900 */ 114, 53, 53, 53, 53, 34, 139, 1, 5, 22,
157165
+ /* 1910 */ 113, 159, 26, 75, 41, 113, 139, 24, 20, 19,
157166
+ /* 1920 */ 129, 68, 68, 123, 22, 67, 70, 22, 59, 22,
157167
+ /* 1930 */ 67, 23, 22, 24, 78, 96, 22, 81, 37, 28,
157168
+ /* 1940 */ 23, 67, 147, 22, 26, 23, 23, 23, 23, 22,
157169
+ /* 1950 */ 24, 23, 22, 97, 139, 24, 23, 23, 22, 141,
157170
+ /* 1960 */ 88, 26, 86, 34, 75, 75, 34, 23, 93, 22,
157171
+ /* 1970 */ 24, 114, 34, 34, 34, 34, 26, 26, 23, 34,
157172
+ /* 1980 */ 23, 44, 23, 23, 23, 11, 23, 131, 26, 22,
157173
+ /* 1990 */ 22, 22, 136, 137, 23, 23, 26, 22, 22, 15,
157174
+ /* 2000 */ 133, 139, 23, 139, 139, 1, 1, 139, 313, 313,
157175
+ /* 2010 */ 313, 313, 313, 313, 313, 313, 160, 313, 313, 313,
157176
+ /* 2020 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157177
+ /* 2030 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157178
+ /* 2040 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157179
+ /* 2050 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157180
+ /* 2060 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157181
+ /* 2070 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157182
+ /* 2080 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157183
+ /* 2090 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157184
+ /* 2100 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157185
+ /* 2110 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157186
+ /* 2120 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157187
+ /* 2130 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157188
+ /* 2140 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157189
+ /* 2150 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157190
+ /* 2160 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157191
+ /* 2170 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157192
+ /* 2180 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157193
+ /* 2190 */ 182, 182, 182, 182, 182, 182, 182, 182, 182,
157194
+};
157195
+#define YY_SHIFT_COUNT (570)
156956157196
#define YY_SHIFT_MIN (0)
156957
-#define YY_SHIFT_MAX (1959)
157197
+#define YY_SHIFT_MAX (2005)
156958157198
static const unsigned short int yy_shift_ofst[] = {
156959
- /* 0 */ 1448, 1277, 1668, 1072, 1072, 340, 1122, 1225, 1332, 1481,
156960
- /* 10 */ 1481, 1481, 335, 0, 0, 180, 897, 1481, 1481, 1481,
156961
- /* 20 */ 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156962
- /* 30 */ 930, 930, 1020, 1020, 290, 1, 340, 340, 340, 340,
156963
- /* 40 */ 340, 340, 40, 110, 219, 288, 327, 396, 435, 504,
156964
- /* 50 */ 543, 612, 651, 720, 877, 897, 897, 897, 897, 897,
156965
- /* 60 */ 897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
156966
- /* 70 */ 897, 897, 897, 917, 897, 1019, 763, 763, 1451, 1481,
156967
- /* 80 */ 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156968
- /* 90 */ 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156969
- /* 100 */ 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156970
- /* 110 */ 1481, 1481, 1553, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156971
- /* 120 */ 1481, 1481, 1481, 1481, 1481, 1481, 147, 258, 258, 258,
156972
- /* 130 */ 258, 258, 79, 65, 84, 449, 19, 786, 449, 636,
156973
- /* 140 */ 636, 449, 880, 880, 880, 880, 113, 142, 142, 472,
156974
- /* 150 */ 150, 1968, 1968, 399, 399, 399, 93, 237, 341, 237,
156975
- /* 160 */ 237, 237, 1074, 1074, 437, 350, 704, 1080, 449, 449,
156976
- /* 170 */ 449, 449, 449, 449, 449, 449, 449, 449, 449, 449,
156977
- /* 180 */ 449, 449, 449, 449, 449, 449, 449, 449, 449, 818,
156978
- /* 190 */ 818, 449, 1088, 217, 217, 734, 734, 891, 1130, 1968,
156979
- /* 200 */ 1968, 1968, 739, 840, 840, 453, 454, 511, 187, 563,
156980
- /* 210 */ 570, 898, 669, 449, 449, 449, 449, 449, 449, 449,
156981
- /* 220 */ 449, 449, 670, 449, 449, 449, 449, 449, 449, 449,
156982
- /* 230 */ 449, 449, 449, 449, 449, 674, 674, 674, 449, 449,
156983
- /* 240 */ 449, 449, 1034, 449, 449, 449, 972, 1107, 449, 449,
156984
- /* 250 */ 1193, 449, 449, 449, 449, 449, 449, 449, 449, 260,
156985
- /* 260 */ 177, 489, 1241, 1241, 1241, 1241, 1192, 489, 489, 952,
156986
- /* 270 */ 1197, 625, 1235, 1299, 181, 181, 881, 1279, 1279, 1299,
156987
- /* 280 */ 881, 1016, 1139, 1100, 1311, 1311, 1311, 181, 1323, 1323,
156988
- /* 290 */ 1207, 1372, 549, 1378, 1615, 1538, 1538, 1652, 1652, 1538,
156989
- /* 300 */ 1546, 1582, 1674, 1550, 1658, 1550, 1695, 1695, 1695, 1695,
156990
- /* 310 */ 1538, 1697, 1550, 1582, 1582, 1550, 1582, 1674, 1658, 1550,
156991
- /* 320 */ 1658, 1550, 1538, 1697, 1578, 1672, 1538, 1697, 1717, 1538,
156992
- /* 330 */ 1697, 1538, 1697, 1717, 1635, 1635, 1635, 1686, 1729, 1729,
156993
- /* 340 */ 1717, 1635, 1633, 1635, 1686, 1635, 1635, 1597, 1717, 1649,
156994
- /* 350 */ 1649, 1717, 1619, 1651, 1619, 1651, 1619, 1651, 1619, 1651,
156995
- /* 360 */ 1538, 1689, 1689, 1701, 1701, 1639, 1643, 1767, 1538, 1638,
156996
- /* 370 */ 1639, 1650, 1653, 1550, 1771, 1774, 1789, 1789, 1808, 1808,
156997
- /* 380 */ 1808, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
156998
- /* 390 */ 1968, 1968, 1968, 1968, 1968, 1968, 308, 835, 954, 1232,
156999
- /* 400 */ 879, 715, 728, 1373, 864, 1329, 970, 1196, 1402, 297,
157000
- /* 410 */ 1409, 1419, 1429, 1431, 1453, 1497, 1242, 1345, 1491, 1424,
157001
- /* 420 */ 1362, 1521, 1523, 1423, 1525, 1363, 1412, 1548, 1585, 1495,
157002
- /* 430 */ 1382, 1826, 1830, 1813, 1676, 1822, 1740, 1823, 1817, 1818,
157003
- /* 440 */ 1705, 1696, 1715, 1821, 1706, 1827, 1707, 1832, 1849, 1711,
157004
- /* 450 */ 1724, 1725, 1793, 1819, 1709, 1802, 1805, 1806, 1807, 1733,
157005
- /* 460 */ 1748, 1829, 1730, 1863, 1865, 1846, 1758, 1714, 1809, 1847,
157006
- /* 470 */ 1810, 1799, 1834, 1737, 1766, 1856, 1861, 1864, 1753, 1761,
157007
- /* 480 */ 1866, 1820, 1867, 1868, 1862, 1869, 1825, 1835, 1871, 1790,
157008
- /* 490 */ 1870, 1874, 1833, 1860, 1876, 1746, 1879, 1880, 1881, 1882,
157009
- /* 500 */ 1883, 1884, 1886, 1878, 1887, 1889, 1888, 1775, 1890, 1892,
157010
- /* 510 */ 1792, 1885, 1894, 1776, 1895, 1891, 1893, 1896, 1897, 1836,
157011
- /* 520 */ 1843, 1837, 1898, 1845, 1839, 1899, 1903, 1900, 1904, 1908,
157012
- /* 530 */ 1909, 1902, 1906, 1895, 1914, 1915, 1916, 1917, 1918, 1920,
157013
- /* 540 */ 1919, 1934, 1924, 1925, 1926, 1927, 1929, 1930, 1922, 1824,
157014
- /* 550 */ 1814, 1815, 1816, 1828, 1933, 1943, 1958, 1959,
157015
-};
157016
-#define YY_REDUCE_COUNT (395)
157199
+ /* 0 */ 1579, 1434, 1856, 1206, 1206, 1, 1278, 1391, 1463, 1672,
157200
+ /* 10 */ 1672, 1672, 390, 0, 0, 180, 1008, 1672, 1672, 1672,
157201
+ /* 20 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
157202
+ /* 30 */ 794, 794, 287, 287, 250, 611, 1, 1, 1, 1,
157203
+ /* 40 */ 1, 1, 40, 110, 219, 288, 394, 437, 506, 545,
157204
+ /* 50 */ 614, 653, 722, 761, 830, 988, 1008, 1008, 1008, 1008,
157205
+ /* 60 */ 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
157206
+ /* 70 */ 1008, 1008, 1008, 1008, 1028, 1008, 1130, 1150, 1150, 1566,
157207
+ /* 80 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
157208
+ /* 90 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
157209
+ /* 100 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
157210
+ /* 110 */ 1672, 1672, 1672, 1672, 1740, 1672, 1672, 1672, 1672, 1672,
157211
+ /* 120 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 147, 248,
157212
+ /* 130 */ 248, 248, 248, 248, 79, 86, 185, 573, 771, 896,
157213
+ /* 140 */ 573, 530, 530, 573, 877, 877, 877, 877, 295, 475,
157214
+ /* 150 */ 475, 584, 29, 2017, 2017, 289, 289, 289, 58, 508,
157215
+ /* 160 */ 62, 508, 508, 508, 392, 392, 225, 395, 218, 822,
157216
+ /* 170 */ 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
157217
+ /* 180 */ 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
157218
+ /* 190 */ 573, 1074, 1074, 573, 119, 1187, 1187, 1044, 1044, 1145,
157219
+ /* 200 */ 1146, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 418, 263,
157220
+ /* 210 */ 263, 559, 303, 618, 527, 623, 464, 570, 780, 573,
157221
+ /* 220 */ 573, 573, 573, 573, 573, 573, 573, 573, 669, 573,
157222
+ /* 230 */ 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
157223
+ /* 240 */ 573, 245, 245, 245, 573, 573, 573, 573, 985, 573,
157224
+ /* 250 */ 573, 573, 18, 1076, 573, 573, 1131, 573, 573, 573,
157225
+ /* 260 */ 573, 573, 573, 573, 573, 941, 1092, 770, 903, 903,
157226
+ /* 270 */ 903, 903, 1203, 770, 770, 1085, 692, 1144, 1319, 1168,
157227
+ /* 280 */ 1227, 1321, 1308, 1227, 1308, 1397, 593, 1168, 1168, 593,
157228
+ /* 290 */ 1168, 1321, 1397, 1328, 15, 1310, 1265, 1265, 1265, 1308,
157229
+ /* 300 */ 1324, 1324, 863, 1325, 492, 1390, 1615, 1538, 1538, 1646,
157230
+ /* 310 */ 1646, 1538, 1540, 1539, 1674, 1657, 1683, 1683, 1683, 1683,
157231
+ /* 320 */ 1538, 1695, 1575, 1539, 1539, 1575, 1674, 1657, 1575, 1657,
157232
+ /* 330 */ 1575, 1538, 1695, 1578, 1673, 1538, 1695, 1714, 1538, 1695,
157233
+ /* 340 */ 1538, 1695, 1714, 1637, 1637, 1637, 1688, 1731, 1731, 1714,
157234
+ /* 350 */ 1637, 1631, 1637, 1688, 1637, 1637, 1595, 1714, 1650, 1650,
157235
+ /* 360 */ 1714, 1625, 1662, 1625, 1662, 1625, 1662, 1625, 1662, 1538,
157236
+ /* 370 */ 1701, 1701, 1711, 1711, 1649, 1654, 1776, 1538, 1647, 1649,
157237
+ /* 380 */ 1659, 1658, 1575, 1780, 1781, 1796, 1796, 1825, 1825, 1825,
157238
+ /* 390 */ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
157239
+ /* 400 */ 2017, 2017, 2017, 2017, 2017, 339, 445, 1064, 1193, 951,
157240
+ /* 410 */ 1029, 1256, 1383, 1402, 1396, 1292, 1327, 1437, 727, 1447,
157241
+ /* 420 */ 1461, 1466, 1472, 1495, 1502, 1184, 1307, 1450, 1340, 1421,
157242
+ /* 430 */ 1506, 1514, 1436, 1515, 1349, 1401, 1534, 1535, 1480, 1471,
157243
+ /* 440 */ 1844, 1846, 1831, 1696, 1845, 1764, 1847, 1841, 1842, 1734,
157244
+ /* 450 */ 1725, 1747, 1852, 1852, 1855, 1741, 1860, 1742, 1866, 1882,
157245
+ /* 460 */ 1745, 1759, 1852, 1761, 1829, 1861, 1852, 1748, 1848, 1849,
157246
+ /* 470 */ 1850, 1851, 1771, 1786, 1871, 1767, 1906, 1903, 1887, 1797,
157247
+ /* 480 */ 1752, 1853, 1886, 1854, 1838, 1873, 1777, 1802, 1893, 1898,
157248
+ /* 490 */ 1900, 1791, 1800, 1902, 1858, 1905, 1907, 1908, 1910, 1863,
157249
+ /* 500 */ 1869, 1909, 1839, 1911, 1914, 1874, 1901, 1917, 1795, 1921,
157250
+ /* 510 */ 1922, 1923, 1924, 1918, 1925, 1927, 1926, 1928, 1930, 1931,
157251
+ /* 520 */ 1815, 1933, 1934, 1857, 1929, 1936, 1818, 1935, 1932, 1938,
157252
+ /* 530 */ 1939, 1940, 1872, 1889, 1876, 1937, 1890, 1875, 1941, 1944,
157253
+ /* 540 */ 1947, 1946, 1950, 1951, 1945, 1955, 1935, 1957, 1959, 1960,
157254
+ /* 550 */ 1961, 1962, 1963, 1967, 1974, 1968, 1969, 1971, 1972, 1975,
157255
+ /* 560 */ 1976, 1970, 1867, 1862, 1864, 1865, 1868, 1979, 1984, 2004,
157256
+ /* 570 */ 2005,
157257
+};
157258
+#define YY_REDUCE_COUNT (404)
157017157259
#define YY_REDUCE_MIN (-262)
157018
-#define YY_REDUCE_MAX (1629)
157260
+#define YY_REDUCE_MAX (1655)
157019157261
static const short yy_reduce_ofst[] = {
157020
- /* 0 */ 490, -122, 545, 645, 650, -120, -189, -187, -184, -182,
157021
- /* 10 */ -178, -176, 45, 30, 200, -251, -134, 390, 392, 521,
157022
- /* 20 */ 523, 213, 692, 821, 284, 589, 872, 666, 671, 866,
157023
- /* 30 */ 71, 111, 273, 389, 686, 815, 904, 932, 948, 955,
157024
- /* 40 */ 964, 969, -259, -259, -259, -259, -259, -259, -259, -259,
157025
- /* 50 */ -259, -259, -259, -259, -259, -259, -259, -259, -259, -259,
157026
- /* 60 */ -259, -259, -259, -259, -259, -259, -259, -259, -259, -259,
157027
- /* 70 */ -259, -259, -259, -259, -259, -259, -259, -259, 428, 430,
157028
- /* 80 */ 899, 985, 1021, 1028, 1057, 1069, 1081, 1108, 1110, 1115,
157029
- /* 90 */ 1117, 1123, 1149, 1154, 1159, 1170, 1174, 1178, 1183, 1194,
157030
- /* 100 */ 1198, 1204, 1208, 1212, 1218, 1222, 1229, 1278, 1280, 1283,
157031
- /* 110 */ 1285, 1313, 1316, 1320, 1322, 1325, 1327, 1330, 1366, 1371,
157032
- /* 120 */ 1379, 1387, 1417, 1425, 1430, 1432, -259, -259, -259, -259,
157033
- /* 130 */ -259, -259, -259, -259, -259, 557, 974, -214, -174, -9,
157034
- /* 140 */ 431, -124, 806, 925, 806, 925, 251, 928, 940, -259,
157035
- /* 150 */ -259, -259, -259, -198, -198, -198, 127, -186, -168, 212,
157036
- /* 160 */ 646, 749, 617, 799, -262, 555, 220, 220, 491, 605,
157037
- /* 170 */ 1040, 1060, 699, -11, 600, 848, 862, 345, -129, 724,
157038
- /* 180 */ -91, 158, 808, 716, 900, 304, 869, 929, 926, 499,
157039
- /* 190 */ 813, 322, 892, 845, 857, 1056, 1059, 908, 1036, 993,
157040
- /* 200 */ 1062, 1097, -210, -185, -179, -148, -167, -89, 121, 274,
157041
- /* 210 */ 281, 320, 336, 439, 663, 1011, 1064, 1068, 1075, 1127,
157042
- /* 220 */ 1180, 1184, -196, 1191, 1195, 1199, 1203, 1223, 1238, 1254,
157043
- /* 230 */ 1267, 1286, 1292, 1304, 1315, 205, 422, 638, 1319, 1341,
157044
- /* 240 */ 1346, 1370, 1058, 1380, 1392, 1399, 1342, 1252, 1405, 1420,
157045
- /* 250 */ 1384, 1427, 121, 1428, 1433, 1434, 1436, 1437, 1438, 1337,
157046
- /* 260 */ 1333, 1383, 1388, 1389, 1390, 1395, 1058, 1383, 1383, 1408,
157047
- /* 270 */ 1421, 1460, 1358, 1410, 1397, 1400, 1367, 1414, 1415, 1422,
157048
- /* 280 */ 1374, 1442, 1439, 1441, 1435, 1450, 1452, 1416, 1440, 1443,
157049
- /* 290 */ 1398, 1446, 1445, 1482, 1386, 1492, 1493, 1404, 1406, 1496,
157050
- /* 300 */ 1426, 1444, 1447, 1458, 1483, 1469, 1484, 1485, 1486, 1487,
157051
- /* 310 */ 1518, 1526, 1479, 1457, 1459, 1488, 1461, 1463, 1494, 1489,
157052
- /* 320 */ 1499, 1490, 1529, 1537, 1454, 1462, 1539, 1541, 1524, 1545,
157053
- /* 330 */ 1547, 1549, 1552, 1527, 1540, 1542, 1543, 1530, 1535, 1544,
157054
- /* 340 */ 1551, 1555, 1554, 1557, 1536, 1558, 1559, 1470, 1560, 1500,
157055
- /* 350 */ 1502, 1562, 1506, 1511, 1528, 1519, 1531, 1533, 1534, 1556,
157056
- /* 360 */ 1583, 1473, 1474, 1532, 1561, 1563, 1565, 1564, 1595, 1522,
157057
- /* 370 */ 1567, 1570, 1568, 1566, 1599, 1603, 1613, 1616, 1627, 1628,
157058
- /* 380 */ 1629, 1569, 1571, 1573, 1617, 1610, 1612, 1614, 1618, 1621,
157059
- /* 390 */ 1607, 1608, 1620, 1622, 1624, 1626,
157262
+ /* 0 */ 599, -123, 272, 716, 756, -121, -190, -188, -185, -183,
157263
+ /* 10 */ -179, -177, -26, 304, 313, -254, -11, 500, 609, 630,
157264
+ /* 20 */ 758, -114, 763, 766, 323, 538, 768, 87, 540, 701,
157265
+ /* 30 */ -38, 413, 125, 324, 699, 443, 602, 725, 748, 753,
157266
+ /* 40 */ 762, 781, -262, -262, -262, -262, -262, -262, -262, -262,
157267
+ /* 50 */ -262, -262, -262, -262, -262, -262, -262, -262, -262, -262,
157268
+ /* 60 */ -262, -262, -262, -262, -262, -262, -262, -262, -262, -262,
157269
+ /* 70 */ -262, -262, -262, -262, -262, -262, -262, -262, -262, 262,
157270
+ /* 80 */ 731, 787, 836, 915, 932, 934, 977, 998, 1001, 1032,
157271
+ /* 90 */ 1034, 1037, 1058, 1072, 1077, 1079, 1082, 1090, 1096, 1111,
157272
+ /* 100 */ 1116, 1120, 1123, 1127, 1140, 1174, 1176, 1183, 1186, 1188,
157273
+ /* 110 */ 1190, 1192, 1195, 1225, 1228, 1259, 1266, 1296, 1301, 1304,
157274
+ /* 120 */ 1311, 1337, 1343, 1361, 1386, 1393, 1411, 1414, -262, -262,
157275
+ /* 130 */ -262, -262, -262, -262, -262, -262, -262, -176, 825, 249,
157276
+ /* 140 */ -22, 648, 652, 108, 112, 767, 112, 767, 637, 717,
157277
+ /* 150 */ 835, -262, -262, -262, -262, -207, -207, -207, 126, -164,
157278
+ /* 160 */ -170, 416, 708, 856, -158, 504, 74, -169, 446, 446,
157279
+ /* 170 */ -187, 328, 700, 707, 239, 282, 331, 556, 721, 438,
157280
+ /* 180 */ 193, 860, 322, 541, 880, 933, 975, 241, 651, 879,
157281
+ /* 190 */ 970, 270, 905, 918, 88, 914, 961, 967, 1069, -39,
157282
+ /* 200 */ 604, 1050, 1091, 1098, 1115, 1122, 1117, 1141, -211, -206,
157283
+ /* 210 */ -180, -130, -161, 10, 179, 236, 316, 341, 629, 726,
157284
+ /* 220 */ 804, 816, 834, 898, 972, 1177, 1231, 1238, 170, 1253,
157285
+ /* 230 */ 1263, 1285, 1298, 1336, 1357, 1369, 1373, 1374, 1376, 1377,
157286
+ /* 240 */ 1382, 240, 257, 1053, 1407, 1410, 1413, 1417, 1012, 1422,
157287
+ /* 250 */ 1423, 1430, 1166, 1156, 1418, 1431, 1355, 1432, 179, 1438,
157288
+ /* 260 */ 1439, 1440, 1441, 1442, 1443, 1246, 1351, 1398, 1384, 1387,
157289
+ /* 270 */ 1388, 1389, 1012, 1398, 1398, 1403, 1433, 1453, 1352, 1379,
157290
+ /* 280 */ 1381, 1406, 1395, 1385, 1399, 1362, 1416, 1392, 1394, 1420,
157291
+ /* 290 */ 1400, 1412, 1363, 1448, 1444, 1435, 1451, 1455, 1459, 1408,
157292
+ /* 300 */ 1445, 1452, 1419, 1427, 1449, 1462, 1405, 1482, 1486, 1409,
157293
+ /* 310 */ 1415, 1489, 1424, 1425, 1446, 1474, 1469, 1473, 1476, 1478,
157294
+ /* 320 */ 1510, 1518, 1481, 1456, 1457, 1484, 1464, 1497, 1487, 1498,
157295
+ /* 330 */ 1490, 1536, 1541, 1454, 1460, 1544, 1542, 1525, 1547, 1550,
157296
+ /* 340 */ 1551, 1553, 1530, 1537, 1543, 1549, 1531, 1545, 1546, 1552,
157297
+ /* 350 */ 1554, 1548, 1556, 1533, 1558, 1559, 1468, 1562, 1503, 1504,
157298
+ /* 360 */ 1563, 1526, 1529, 1532, 1557, 1555, 1560, 1561, 1564, 1593,
157299
+ /* 370 */ 1483, 1485, 1567, 1568, 1569, 1565, 1527, 1604, 1572, 1571,
157300
+ /* 380 */ 1570, 1576, 1580, 1606, 1609, 1630, 1639, 1643, 1644, 1645,
157301
+ /* 390 */ 1573, 1577, 1581, 1632, 1627, 1628, 1629, 1633, 1638, 1622,
157302
+ /* 400 */ 1626, 1640, 1641, 1634, 1655,
157060157303
};
157061157304
static const YYACTIONTYPE yy_default[] = {
157062
- /* 0 */ 1583, 1583, 1583, 1419, 1195, 1304, 1195, 1195, 1195, 1419,
157063
- /* 10 */ 1419, 1419, 1195, 1334, 1334, 1472, 1226, 1195, 1195, 1195,
157064
- /* 20 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1418, 1195, 1195,
157065
- /* 30 */ 1195, 1195, 1502, 1502, 1195, 1195, 1195, 1195, 1195, 1195,
157066
- /* 40 */ 1195, 1195, 1195, 1343, 1195, 1195, 1195, 1195, 1195, 1195,
157067
- /* 50 */ 1420, 1421, 1195, 1195, 1195, 1471, 1473, 1436, 1353, 1352,
157068
- /* 60 */ 1351, 1350, 1454, 1321, 1348, 1341, 1345, 1414, 1415, 1413,
157069
- /* 70 */ 1417, 1421, 1420, 1195, 1344, 1385, 1399, 1384, 1195, 1195,
157070
- /* 80 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157071
- /* 90 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157072
- /* 100 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157073
- /* 110 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157074
- /* 120 */ 1195, 1195, 1195, 1195, 1195, 1195, 1393, 1398, 1404, 1397,
157075
- /* 130 */ 1394, 1387, 1386, 1388, 1389, 1195, 1216, 1268, 1195, 1195,
157076
- /* 140 */ 1195, 1195, 1490, 1489, 1195, 1195, 1226, 1379, 1378, 1390,
157077
- /* 150 */ 1391, 1401, 1400, 1479, 1537, 1536, 1437, 1195, 1195, 1195,
157078
- /* 160 */ 1195, 1195, 1195, 1195, 1502, 1195, 1195, 1195, 1195, 1195,
157079
- /* 170 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157080
- /* 180 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1502,
157081
- /* 190 */ 1502, 1195, 1226, 1502, 1502, 1222, 1222, 1328, 1195, 1485,
157082
- /* 200 */ 1304, 1295, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157083
- /* 210 */ 1195, 1195, 1195, 1195, 1195, 1195, 1476, 1474, 1195, 1195,
157084
- /* 220 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157085
- /* 230 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157086
- /* 240 */ 1195, 1195, 1195, 1195, 1195, 1195, 1300, 1195, 1195, 1195,
157087
- /* 250 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1531, 1195,
157088
- /* 260 */ 1449, 1282, 1300, 1300, 1300, 1300, 1302, 1283, 1281, 1294,
157089
- /* 270 */ 1227, 1202, 1575, 1301, 1323, 1323, 1572, 1347, 1347, 1301,
157090
- /* 280 */ 1572, 1243, 1553, 1238, 1334, 1334, 1334, 1323, 1328, 1328,
157091
- /* 290 */ 1416, 1301, 1294, 1195, 1575, 1309, 1309, 1574, 1574, 1309,
157092
- /* 300 */ 1437, 1356, 1363, 1347, 1271, 1347, 1277, 1277, 1277, 1277,
157093
- /* 310 */ 1309, 1213, 1347, 1356, 1356, 1347, 1356, 1363, 1271, 1347,
157094
- /* 320 */ 1271, 1347, 1309, 1213, 1453, 1569, 1309, 1213, 1427, 1309,
157095
- /* 330 */ 1213, 1309, 1213, 1427, 1269, 1269, 1269, 1258, 1195, 1195,
157096
- /* 340 */ 1427, 1269, 1243, 1269, 1258, 1269, 1269, 1520, 1427, 1431,
157097
- /* 350 */ 1431, 1427, 1327, 1322, 1327, 1322, 1327, 1322, 1327, 1322,
157098
- /* 360 */ 1309, 1512, 1512, 1337, 1337, 1342, 1328, 1422, 1309, 1195,
157099
- /* 370 */ 1342, 1340, 1338, 1347, 1219, 1261, 1534, 1534, 1530, 1530,
157100
- /* 380 */ 1530, 1580, 1580, 1485, 1546, 1226, 1226, 1226, 1226, 1546,
157101
- /* 390 */ 1245, 1245, 1227, 1227, 1226, 1546, 1195, 1195, 1195, 1195,
157102
- /* 400 */ 1195, 1195, 1541, 1195, 1438, 1313, 1195, 1195, 1195, 1195,
157103
- /* 410 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157104
- /* 420 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157105
- /* 430 */ 1368, 1195, 1198, 1482, 1195, 1195, 1480, 1195, 1195, 1195,
157106
- /* 440 */ 1195, 1195, 1195, 1314, 1195, 1195, 1195, 1195, 1195, 1195,
157107
- /* 450 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157108
- /* 460 */ 1195, 1195, 1571, 1195, 1195, 1195, 1195, 1195, 1195, 1452,
157109
- /* 470 */ 1451, 1195, 1195, 1311, 1195, 1195, 1195, 1195, 1195, 1195,
157110
- /* 480 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1241, 1195, 1195,
157111
- /* 490 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157112
- /* 500 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157113
- /* 510 */ 1195, 1195, 1195, 1195, 1339, 1195, 1195, 1195, 1195, 1195,
157114
- /* 520 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1517,
157115
- /* 530 */ 1329, 1195, 1195, 1562, 1195, 1195, 1195, 1195, 1195, 1195,
157116
- /* 540 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1557, 1285,
157117
- /* 550 */ 1370, 1195, 1369, 1373, 1195, 1207, 1195, 1195,
157305
+ /* 0 */ 1610, 1610, 1610, 1445, 1215, 1324, 1215, 1215, 1215, 1445,
157306
+ /* 10 */ 1445, 1445, 1215, 1354, 1354, 1498, 1246, 1215, 1215, 1215,
157307
+ /* 20 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1444, 1215, 1215,
157308
+ /* 30 */ 1215, 1215, 1528, 1528, 1215, 1215, 1215, 1215, 1215, 1215,
157309
+ /* 40 */ 1215, 1215, 1215, 1363, 1215, 1370, 1215, 1215, 1215, 1215,
157310
+ /* 50 */ 1215, 1446, 1447, 1215, 1215, 1215, 1497, 1499, 1462, 1377,
157311
+ /* 60 */ 1376, 1375, 1374, 1480, 1341, 1368, 1361, 1365, 1440, 1441,
157312
+ /* 70 */ 1439, 1443, 1447, 1446, 1215, 1364, 1411, 1425, 1410, 1215,
157313
+ /* 80 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157314
+ /* 90 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157315
+ /* 100 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157316
+ /* 110 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157317
+ /* 120 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1419, 1424,
157318
+ /* 130 */ 1430, 1423, 1420, 1413, 1412, 1414, 1415, 1215, 1236, 1288,
157319
+ /* 140 */ 1215, 1215, 1215, 1215, 1516, 1515, 1215, 1215, 1246, 1405,
157320
+ /* 150 */ 1404, 1416, 1417, 1427, 1426, 1505, 1563, 1562, 1463, 1215,
157321
+ /* 160 */ 1215, 1215, 1215, 1215, 1215, 1215, 1528, 1215, 1215, 1215,
157322
+ /* 170 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157323
+ /* 180 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157324
+ /* 190 */ 1215, 1528, 1528, 1215, 1246, 1528, 1528, 1242, 1242, 1348,
157325
+ /* 200 */ 1215, 1511, 1315, 1315, 1315, 1315, 1324, 1315, 1215, 1215,
157326
+ /* 210 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157327
+ /* 220 */ 1215, 1215, 1502, 1500, 1215, 1215, 1215, 1215, 1215, 1215,
157328
+ /* 230 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157329
+ /* 240 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157330
+ /* 250 */ 1215, 1215, 1320, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157331
+ /* 260 */ 1215, 1215, 1215, 1215, 1557, 1215, 1475, 1302, 1320, 1320,
157332
+ /* 270 */ 1320, 1320, 1322, 1303, 1301, 1314, 1247, 1222, 1602, 1380,
157333
+ /* 280 */ 1369, 1321, 1343, 1369, 1343, 1599, 1367, 1380, 1380, 1367,
157334
+ /* 290 */ 1380, 1321, 1599, 1263, 1579, 1258, 1354, 1354, 1354, 1343,
157335
+ /* 300 */ 1348, 1348, 1442, 1321, 1314, 1215, 1602, 1329, 1329, 1601,
157336
+ /* 310 */ 1601, 1329, 1463, 1586, 1389, 1291, 1297, 1297, 1297, 1297,
157337
+ /* 320 */ 1329, 1233, 1367, 1586, 1586, 1367, 1389, 1291, 1367, 1291,
157338
+ /* 330 */ 1367, 1329, 1233, 1479, 1596, 1329, 1233, 1453, 1329, 1233,
157339
+ /* 340 */ 1329, 1233, 1453, 1289, 1289, 1289, 1278, 1215, 1215, 1453,
157340
+ /* 350 */ 1289, 1263, 1289, 1278, 1289, 1289, 1546, 1453, 1457, 1457,
157341
+ /* 360 */ 1453, 1347, 1342, 1347, 1342, 1347, 1342, 1347, 1342, 1329,
157342
+ /* 370 */ 1538, 1538, 1357, 1357, 1362, 1348, 1448, 1329, 1215, 1362,
157343
+ /* 380 */ 1360, 1358, 1367, 1239, 1281, 1560, 1560, 1556, 1556, 1556,
157344
+ /* 390 */ 1607, 1607, 1511, 1572, 1246, 1246, 1246, 1246, 1572, 1265,
157345
+ /* 400 */ 1265, 1247, 1247, 1246, 1572, 1215, 1215, 1215, 1215, 1215,
157346
+ /* 410 */ 1215, 1567, 1215, 1464, 1333, 1215, 1215, 1215, 1215, 1215,
157347
+ /* 420 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157348
+ /* 430 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1394,
157349
+ /* 440 */ 1215, 1218, 1508, 1215, 1215, 1506, 1215, 1215, 1215, 1215,
157350
+ /* 450 */ 1215, 1215, 1371, 1372, 1334, 1215, 1215, 1215, 1215, 1215,
157351
+ /* 460 */ 1215, 1215, 1386, 1215, 1215, 1215, 1381, 1215, 1215, 1215,
157352
+ /* 470 */ 1215, 1215, 1215, 1215, 1215, 1598, 1215, 1215, 1215, 1215,
157353
+ /* 480 */ 1215, 1215, 1478, 1477, 1215, 1215, 1331, 1215, 1215, 1215,
157354
+ /* 490 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157355
+ /* 500 */ 1261, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157356
+ /* 510 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157357
+ /* 520 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1359, 1215, 1215,
157358
+ /* 530 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157359
+ /* 540 */ 1215, 1215, 1543, 1349, 1215, 1215, 1589, 1215, 1215, 1215,
157360
+ /* 550 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157361
+ /* 560 */ 1215, 1583, 1305, 1396, 1215, 1395, 1399, 1215, 1227, 1215,
157362
+ /* 570 */ 1215,
157118157363
};
157119157364
/********** End of lemon-generated parsing tables *****************************/
157120157365
157121157366
/* The next table maps tokens (terminal symbols) into fallback tokens.
157122157367
** If a construct like the following:
@@ -157280,10 +157525,11 @@
157280157525
0, /* ORDER => nothing */
157281157526
0, /* GROUP => nothing */
157282157527
0, /* HAVING => nothing */
157283157528
0, /* LIMIT => nothing */
157284157529
0, /* WHERE => nothing */
157530
+ 0, /* RETURNING => nothing */
157285157531
0, /* INTO => nothing */
157286157532
0, /* NOTHING => nothing */
157287157533
0, /* FLOAT => nothing */
157288157534
0, /* BLOB => nothing */
157289157535
0, /* INTEGER => nothing */
@@ -157549,172 +157795,175 @@
157549157795
/* 143 */ "ORDER",
157550157796
/* 144 */ "GROUP",
157551157797
/* 145 */ "HAVING",
157552157798
/* 146 */ "LIMIT",
157553157799
/* 147 */ "WHERE",
157554
- /* 148 */ "INTO",
157555
- /* 149 */ "NOTHING",
157556
- /* 150 */ "FLOAT",
157557
- /* 151 */ "BLOB",
157558
- /* 152 */ "INTEGER",
157559
- /* 153 */ "VARIABLE",
157560
- /* 154 */ "CASE",
157561
- /* 155 */ "WHEN",
157562
- /* 156 */ "THEN",
157563
- /* 157 */ "ELSE",
157564
- /* 158 */ "INDEX",
157565
- /* 159 */ "ALTER",
157566
- /* 160 */ "ADD",
157567
- /* 161 */ "WINDOW",
157568
- /* 162 */ "OVER",
157569
- /* 163 */ "FILTER",
157570
- /* 164 */ "COLUMN",
157571
- /* 165 */ "AGG_FUNCTION",
157572
- /* 166 */ "AGG_COLUMN",
157573
- /* 167 */ "TRUEFALSE",
157574
- /* 168 */ "ISNOT",
157575
- /* 169 */ "FUNCTION",
157576
- /* 170 */ "UMINUS",
157577
- /* 171 */ "UPLUS",
157578
- /* 172 */ "TRUTH",
157579
- /* 173 */ "REGISTER",
157580
- /* 174 */ "VECTOR",
157581
- /* 175 */ "SELECT_COLUMN",
157582
- /* 176 */ "IF_NULL_ROW",
157583
- /* 177 */ "ASTERISK",
157584
- /* 178 */ "SPAN",
157585
- /* 179 */ "SPACE",
157586
- /* 180 */ "ILLEGAL",
157587
- /* 181 */ "input",
157588
- /* 182 */ "cmdlist",
157589
- /* 183 */ "ecmd",
157590
- /* 184 */ "cmdx",
157591
- /* 185 */ "explain",
157592
- /* 186 */ "cmd",
157593
- /* 187 */ "transtype",
157594
- /* 188 */ "trans_opt",
157595
- /* 189 */ "nm",
157596
- /* 190 */ "savepoint_opt",
157597
- /* 191 */ "create_table",
157598
- /* 192 */ "create_table_args",
157599
- /* 193 */ "createkw",
157600
- /* 194 */ "temp",
157601
- /* 195 */ "ifnotexists",
157602
- /* 196 */ "dbnm",
157603
- /* 197 */ "columnlist",
157604
- /* 198 */ "conslist_opt",
157605
- /* 199 */ "table_options",
157606
- /* 200 */ "select",
157607
- /* 201 */ "columnname",
157608
- /* 202 */ "carglist",
157609
- /* 203 */ "typetoken",
157610
- /* 204 */ "typename",
157611
- /* 205 */ "signed",
157612
- /* 206 */ "plus_num",
157613
- /* 207 */ "minus_num",
157614
- /* 208 */ "scanpt",
157615
- /* 209 */ "scantok",
157616
- /* 210 */ "ccons",
157617
- /* 211 */ "term",
157618
- /* 212 */ "expr",
157619
- /* 213 */ "onconf",
157620
- /* 214 */ "sortorder",
157621
- /* 215 */ "autoinc",
157622
- /* 216 */ "eidlist_opt",
157623
- /* 217 */ "refargs",
157624
- /* 218 */ "defer_subclause",
157625
- /* 219 */ "generated",
157626
- /* 220 */ "refarg",
157627
- /* 221 */ "refact",
157628
- /* 222 */ "init_deferred_pred_opt",
157629
- /* 223 */ "conslist",
157630
- /* 224 */ "tconscomma",
157631
- /* 225 */ "tcons",
157632
- /* 226 */ "sortlist",
157633
- /* 227 */ "eidlist",
157634
- /* 228 */ "defer_subclause_opt",
157635
- /* 229 */ "orconf",
157636
- /* 230 */ "resolvetype",
157637
- /* 231 */ "raisetype",
157638
- /* 232 */ "ifexists",
157639
- /* 233 */ "fullname",
157640
- /* 234 */ "selectnowith",
157641
- /* 235 */ "oneselect",
157642
- /* 236 */ "wqlist",
157643
- /* 237 */ "multiselect_op",
157644
- /* 238 */ "distinct",
157645
- /* 239 */ "selcollist",
157646
- /* 240 */ "from",
157647
- /* 241 */ "where_opt",
157648
- /* 242 */ "groupby_opt",
157649
- /* 243 */ "having_opt",
157650
- /* 244 */ "orderby_opt",
157651
- /* 245 */ "limit_opt",
157652
- /* 246 */ "window_clause",
157653
- /* 247 */ "values",
157654
- /* 248 */ "nexprlist",
157655
- /* 249 */ "sclp",
157656
- /* 250 */ "as",
157657
- /* 251 */ "seltablist",
157658
- /* 252 */ "stl_prefix",
157659
- /* 253 */ "joinop",
157660
- /* 254 */ "indexed_opt",
157661
- /* 255 */ "on_opt",
157662
- /* 256 */ "using_opt",
157663
- /* 257 */ "exprlist",
157664
- /* 258 */ "xfullname",
157665
- /* 259 */ "idlist",
157666
- /* 260 */ "nulls",
157667
- /* 261 */ "with",
157668
- /* 262 */ "setlist",
157669
- /* 263 */ "insert_cmd",
157670
- /* 264 */ "idlist_opt",
157671
- /* 265 */ "upsert",
157672
- /* 266 */ "filter_over",
157673
- /* 267 */ "likeop",
157674
- /* 268 */ "between_op",
157675
- /* 269 */ "in_op",
157676
- /* 270 */ "paren_exprlist",
157677
- /* 271 */ "case_operand",
157678
- /* 272 */ "case_exprlist",
157679
- /* 273 */ "case_else",
157680
- /* 274 */ "uniqueflag",
157681
- /* 275 */ "collate",
157682
- /* 276 */ "vinto",
157683
- /* 277 */ "nmnum",
157684
- /* 278 */ "trigger_decl",
157685
- /* 279 */ "trigger_cmd_list",
157686
- /* 280 */ "trigger_time",
157687
- /* 281 */ "trigger_event",
157688
- /* 282 */ "foreach_clause",
157689
- /* 283 */ "when_clause",
157690
- /* 284 */ "trigger_cmd",
157691
- /* 285 */ "trnm",
157692
- /* 286 */ "tridxby",
157693
- /* 287 */ "database_kw_opt",
157694
- /* 288 */ "key_opt",
157695
- /* 289 */ "add_column_fullname",
157696
- /* 290 */ "kwcolumn_opt",
157697
- /* 291 */ "create_vtab",
157698
- /* 292 */ "vtabarglist",
157699
- /* 293 */ "vtabarg",
157700
- /* 294 */ "vtabargtoken",
157701
- /* 295 */ "lp",
157702
- /* 296 */ "anylist",
157703
- /* 297 */ "windowdefn_list",
157704
- /* 298 */ "windowdefn",
157705
- /* 299 */ "window",
157706
- /* 300 */ "frame_opt",
157707
- /* 301 */ "part_opt",
157708
- /* 302 */ "filter_clause",
157709
- /* 303 */ "over_clause",
157710
- /* 304 */ "range_or_rows",
157711
- /* 305 */ "frame_bound",
157712
- /* 306 */ "frame_bound_s",
157713
- /* 307 */ "frame_bound_e",
157714
- /* 308 */ "frame_exclude_opt",
157715
- /* 309 */ "frame_exclude",
157800
+ /* 148 */ "RETURNING",
157801
+ /* 149 */ "INTO",
157802
+ /* 150 */ "NOTHING",
157803
+ /* 151 */ "FLOAT",
157804
+ /* 152 */ "BLOB",
157805
+ /* 153 */ "INTEGER",
157806
+ /* 154 */ "VARIABLE",
157807
+ /* 155 */ "CASE",
157808
+ /* 156 */ "WHEN",
157809
+ /* 157 */ "THEN",
157810
+ /* 158 */ "ELSE",
157811
+ /* 159 */ "INDEX",
157812
+ /* 160 */ "ALTER",
157813
+ /* 161 */ "ADD",
157814
+ /* 162 */ "WINDOW",
157815
+ /* 163 */ "OVER",
157816
+ /* 164 */ "FILTER",
157817
+ /* 165 */ "COLUMN",
157818
+ /* 166 */ "AGG_FUNCTION",
157819
+ /* 167 */ "AGG_COLUMN",
157820
+ /* 168 */ "TRUEFALSE",
157821
+ /* 169 */ "ISNOT",
157822
+ /* 170 */ "FUNCTION",
157823
+ /* 171 */ "UMINUS",
157824
+ /* 172 */ "UPLUS",
157825
+ /* 173 */ "TRUTH",
157826
+ /* 174 */ "REGISTER",
157827
+ /* 175 */ "VECTOR",
157828
+ /* 176 */ "SELECT_COLUMN",
157829
+ /* 177 */ "IF_NULL_ROW",
157830
+ /* 178 */ "ASTERISK",
157831
+ /* 179 */ "SPAN",
157832
+ /* 180 */ "SPACE",
157833
+ /* 181 */ "ILLEGAL",
157834
+ /* 182 */ "input",
157835
+ /* 183 */ "cmdlist",
157836
+ /* 184 */ "ecmd",
157837
+ /* 185 */ "cmdx",
157838
+ /* 186 */ "explain",
157839
+ /* 187 */ "cmd",
157840
+ /* 188 */ "transtype",
157841
+ /* 189 */ "trans_opt",
157842
+ /* 190 */ "nm",
157843
+ /* 191 */ "savepoint_opt",
157844
+ /* 192 */ "create_table",
157845
+ /* 193 */ "create_table_args",
157846
+ /* 194 */ "createkw",
157847
+ /* 195 */ "temp",
157848
+ /* 196 */ "ifnotexists",
157849
+ /* 197 */ "dbnm",
157850
+ /* 198 */ "columnlist",
157851
+ /* 199 */ "conslist_opt",
157852
+ /* 200 */ "table_options",
157853
+ /* 201 */ "select",
157854
+ /* 202 */ "columnname",
157855
+ /* 203 */ "carglist",
157856
+ /* 204 */ "typetoken",
157857
+ /* 205 */ "typename",
157858
+ /* 206 */ "signed",
157859
+ /* 207 */ "plus_num",
157860
+ /* 208 */ "minus_num",
157861
+ /* 209 */ "scanpt",
157862
+ /* 210 */ "scantok",
157863
+ /* 211 */ "ccons",
157864
+ /* 212 */ "term",
157865
+ /* 213 */ "expr",
157866
+ /* 214 */ "onconf",
157867
+ /* 215 */ "sortorder",
157868
+ /* 216 */ "autoinc",
157869
+ /* 217 */ "eidlist_opt",
157870
+ /* 218 */ "refargs",
157871
+ /* 219 */ "defer_subclause",
157872
+ /* 220 */ "generated",
157873
+ /* 221 */ "refarg",
157874
+ /* 222 */ "refact",
157875
+ /* 223 */ "init_deferred_pred_opt",
157876
+ /* 224 */ "conslist",
157877
+ /* 225 */ "tconscomma",
157878
+ /* 226 */ "tcons",
157879
+ /* 227 */ "sortlist",
157880
+ /* 228 */ "eidlist",
157881
+ /* 229 */ "defer_subclause_opt",
157882
+ /* 230 */ "orconf",
157883
+ /* 231 */ "resolvetype",
157884
+ /* 232 */ "raisetype",
157885
+ /* 233 */ "ifexists",
157886
+ /* 234 */ "fullname",
157887
+ /* 235 */ "selectnowith",
157888
+ /* 236 */ "oneselect",
157889
+ /* 237 */ "wqlist",
157890
+ /* 238 */ "multiselect_op",
157891
+ /* 239 */ "distinct",
157892
+ /* 240 */ "selcollist",
157893
+ /* 241 */ "from",
157894
+ /* 242 */ "where_opt",
157895
+ /* 243 */ "groupby_opt",
157896
+ /* 244 */ "having_opt",
157897
+ /* 245 */ "orderby_opt",
157898
+ /* 246 */ "limit_opt",
157899
+ /* 247 */ "window_clause",
157900
+ /* 248 */ "values",
157901
+ /* 249 */ "nexprlist",
157902
+ /* 250 */ "sclp",
157903
+ /* 251 */ "as",
157904
+ /* 252 */ "seltablist",
157905
+ /* 253 */ "stl_prefix",
157906
+ /* 254 */ "joinop",
157907
+ /* 255 */ "indexed_opt",
157908
+ /* 256 */ "on_opt",
157909
+ /* 257 */ "using_opt",
157910
+ /* 258 */ "exprlist",
157911
+ /* 259 */ "xfullname",
157912
+ /* 260 */ "idlist",
157913
+ /* 261 */ "nulls",
157914
+ /* 262 */ "with",
157915
+ /* 263 */ "where_opt_ret",
157916
+ /* 264 */ "setlist",
157917
+ /* 265 */ "insert_cmd",
157918
+ /* 266 */ "idlist_opt",
157919
+ /* 267 */ "upsert",
157920
+ /* 268 */ "returning",
157921
+ /* 269 */ "filter_over",
157922
+ /* 270 */ "likeop",
157923
+ /* 271 */ "between_op",
157924
+ /* 272 */ "in_op",
157925
+ /* 273 */ "paren_exprlist",
157926
+ /* 274 */ "case_operand",
157927
+ /* 275 */ "case_exprlist",
157928
+ /* 276 */ "case_else",
157929
+ /* 277 */ "uniqueflag",
157930
+ /* 278 */ "collate",
157931
+ /* 279 */ "vinto",
157932
+ /* 280 */ "nmnum",
157933
+ /* 281 */ "trigger_decl",
157934
+ /* 282 */ "trigger_cmd_list",
157935
+ /* 283 */ "trigger_time",
157936
+ /* 284 */ "trigger_event",
157937
+ /* 285 */ "foreach_clause",
157938
+ /* 286 */ "when_clause",
157939
+ /* 287 */ "trigger_cmd",
157940
+ /* 288 */ "trnm",
157941
+ /* 289 */ "tridxby",
157942
+ /* 290 */ "database_kw_opt",
157943
+ /* 291 */ "key_opt",
157944
+ /* 292 */ "add_column_fullname",
157945
+ /* 293 */ "kwcolumn_opt",
157946
+ /* 294 */ "create_vtab",
157947
+ /* 295 */ "vtabarglist",
157948
+ /* 296 */ "vtabarg",
157949
+ /* 297 */ "vtabargtoken",
157950
+ /* 298 */ "lp",
157951
+ /* 299 */ "anylist",
157952
+ /* 300 */ "windowdefn_list",
157953
+ /* 301 */ "windowdefn",
157954
+ /* 302 */ "window",
157955
+ /* 303 */ "frame_opt",
157956
+ /* 304 */ "part_opt",
157957
+ /* 305 */ "filter_clause",
157958
+ /* 306 */ "over_clause",
157959
+ /* 307 */ "range_or_rows",
157960
+ /* 308 */ "frame_bound",
157961
+ /* 309 */ "frame_bound_s",
157962
+ /* 310 */ "frame_bound_e",
157963
+ /* 311 */ "frame_exclude_opt",
157964
+ /* 312 */ "frame_exclude",
157716157965
};
157717157966
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
157718157967
157719157968
#ifndef NDEBUG
157720157969
/* For tracing reduce actions, the names of all rules are required.
@@ -157866,248 +158115,255 @@
157866158115
/* 143 */ "having_opt ::= HAVING expr",
157867158116
/* 144 */ "limit_opt ::=",
157868158117
/* 145 */ "limit_opt ::= LIMIT expr",
157869158118
/* 146 */ "limit_opt ::= LIMIT expr OFFSET expr",
157870158119
/* 147 */ "limit_opt ::= LIMIT expr COMMA expr",
157871
- /* 148 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt",
158120
+ /* 148 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret",
157872158121
/* 149 */ "where_opt ::=",
157873158122
/* 150 */ "where_opt ::= WHERE expr",
157874
- /* 151 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt",
157875
- /* 152 */ "setlist ::= setlist COMMA nm EQ expr",
157876
- /* 153 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
157877
- /* 154 */ "setlist ::= nm EQ expr",
157878
- /* 155 */ "setlist ::= LP idlist RP EQ expr",
157879
- /* 156 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
157880
- /* 157 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES",
157881
- /* 158 */ "upsert ::=",
157882
- /* 159 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
157883
- /* 160 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
157884
- /* 161 */ "upsert ::= ON CONFLICT DO NOTHING",
157885
- /* 162 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt",
157886
- /* 163 */ "insert_cmd ::= INSERT orconf",
157887
- /* 164 */ "insert_cmd ::= REPLACE",
157888
- /* 165 */ "idlist_opt ::=",
157889
- /* 166 */ "idlist_opt ::= LP idlist RP",
157890
- /* 167 */ "idlist ::= idlist COMMA nm",
157891
- /* 168 */ "idlist ::= nm",
157892
- /* 169 */ "expr ::= LP expr RP",
157893
- /* 170 */ "expr ::= ID|INDEXED",
157894
- /* 171 */ "expr ::= JOIN_KW",
157895
- /* 172 */ "expr ::= nm DOT nm",
157896
- /* 173 */ "expr ::= nm DOT nm DOT nm",
157897
- /* 174 */ "term ::= NULL|FLOAT|BLOB",
157898
- /* 175 */ "term ::= STRING",
157899
- /* 176 */ "term ::= INTEGER",
157900
- /* 177 */ "expr ::= VARIABLE",
157901
- /* 178 */ "expr ::= expr COLLATE ID|STRING",
157902
- /* 179 */ "expr ::= CAST LP expr AS typetoken RP",
157903
- /* 180 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
157904
- /* 181 */ "expr ::= ID|INDEXED LP STAR RP",
157905
- /* 182 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
157906
- /* 183 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
157907
- /* 184 */ "term ::= CTIME_KW",
157908
- /* 185 */ "expr ::= LP nexprlist COMMA expr RP",
157909
- /* 186 */ "expr ::= expr AND expr",
157910
- /* 187 */ "expr ::= expr OR expr",
157911
- /* 188 */ "expr ::= expr LT|GT|GE|LE expr",
157912
- /* 189 */ "expr ::= expr EQ|NE expr",
157913
- /* 190 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
157914
- /* 191 */ "expr ::= expr PLUS|MINUS expr",
157915
- /* 192 */ "expr ::= expr STAR|SLASH|REM expr",
157916
- /* 193 */ "expr ::= expr CONCAT expr",
157917
- /* 194 */ "likeop ::= NOT LIKE_KW|MATCH",
157918
- /* 195 */ "expr ::= expr likeop expr",
157919
- /* 196 */ "expr ::= expr likeop expr ESCAPE expr",
157920
- /* 197 */ "expr ::= expr ISNULL|NOTNULL",
157921
- /* 198 */ "expr ::= expr NOT NULL",
157922
- /* 199 */ "expr ::= expr IS expr",
157923
- /* 200 */ "expr ::= expr IS NOT expr",
157924
- /* 201 */ "expr ::= NOT expr",
157925
- /* 202 */ "expr ::= BITNOT expr",
157926
- /* 203 */ "expr ::= PLUS|MINUS expr",
157927
- /* 204 */ "between_op ::= BETWEEN",
157928
- /* 205 */ "between_op ::= NOT BETWEEN",
157929
- /* 206 */ "expr ::= expr between_op expr AND expr",
157930
- /* 207 */ "in_op ::= IN",
157931
- /* 208 */ "in_op ::= NOT IN",
157932
- /* 209 */ "expr ::= expr in_op LP exprlist RP",
157933
- /* 210 */ "expr ::= LP select RP",
157934
- /* 211 */ "expr ::= expr in_op LP select RP",
157935
- /* 212 */ "expr ::= expr in_op nm dbnm paren_exprlist",
157936
- /* 213 */ "expr ::= EXISTS LP select RP",
157937
- /* 214 */ "expr ::= CASE case_operand case_exprlist case_else END",
157938
- /* 215 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
157939
- /* 216 */ "case_exprlist ::= WHEN expr THEN expr",
157940
- /* 217 */ "case_else ::= ELSE expr",
157941
- /* 218 */ "case_else ::=",
157942
- /* 219 */ "case_operand ::= expr",
157943
- /* 220 */ "case_operand ::=",
157944
- /* 221 */ "exprlist ::=",
157945
- /* 222 */ "nexprlist ::= nexprlist COMMA expr",
157946
- /* 223 */ "nexprlist ::= expr",
157947
- /* 224 */ "paren_exprlist ::=",
157948
- /* 225 */ "paren_exprlist ::= LP exprlist RP",
157949
- /* 226 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
157950
- /* 227 */ "uniqueflag ::= UNIQUE",
157951
- /* 228 */ "uniqueflag ::=",
157952
- /* 229 */ "eidlist_opt ::=",
157953
- /* 230 */ "eidlist_opt ::= LP eidlist RP",
157954
- /* 231 */ "eidlist ::= eidlist COMMA nm collate sortorder",
157955
- /* 232 */ "eidlist ::= nm collate sortorder",
157956
- /* 233 */ "collate ::=",
157957
- /* 234 */ "collate ::= COLLATE ID|STRING",
157958
- /* 235 */ "cmd ::= DROP INDEX ifexists fullname",
157959
- /* 236 */ "cmd ::= VACUUM vinto",
157960
- /* 237 */ "cmd ::= VACUUM nm vinto",
157961
- /* 238 */ "vinto ::= INTO expr",
157962
- /* 239 */ "vinto ::=",
157963
- /* 240 */ "cmd ::= PRAGMA nm dbnm",
157964
- /* 241 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
157965
- /* 242 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
157966
- /* 243 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
157967
- /* 244 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
157968
- /* 245 */ "plus_num ::= PLUS INTEGER|FLOAT",
157969
- /* 246 */ "minus_num ::= MINUS INTEGER|FLOAT",
157970
- /* 247 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
157971
- /* 248 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
157972
- /* 249 */ "trigger_time ::= BEFORE|AFTER",
157973
- /* 250 */ "trigger_time ::= INSTEAD OF",
157974
- /* 251 */ "trigger_time ::=",
157975
- /* 252 */ "trigger_event ::= DELETE|INSERT",
157976
- /* 253 */ "trigger_event ::= UPDATE",
157977
- /* 254 */ "trigger_event ::= UPDATE OF idlist",
157978
- /* 255 */ "when_clause ::=",
157979
- /* 256 */ "when_clause ::= WHEN expr",
157980
- /* 257 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
157981
- /* 258 */ "trigger_cmd_list ::= trigger_cmd SEMI",
157982
- /* 259 */ "trnm ::= nm DOT nm",
157983
- /* 260 */ "tridxby ::= INDEXED BY nm",
157984
- /* 261 */ "tridxby ::= NOT INDEXED",
157985
- /* 262 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
157986
- /* 263 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
157987
- /* 264 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
157988
- /* 265 */ "trigger_cmd ::= scanpt select scanpt",
157989
- /* 266 */ "expr ::= RAISE LP IGNORE RP",
157990
- /* 267 */ "expr ::= RAISE LP raisetype COMMA nm RP",
157991
- /* 268 */ "raisetype ::= ROLLBACK",
157992
- /* 269 */ "raisetype ::= ABORT",
157993
- /* 270 */ "raisetype ::= FAIL",
157994
- /* 271 */ "cmd ::= DROP TRIGGER ifexists fullname",
157995
- /* 272 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
157996
- /* 273 */ "cmd ::= DETACH database_kw_opt expr",
157997
- /* 274 */ "key_opt ::=",
157998
- /* 275 */ "key_opt ::= KEY expr",
157999
- /* 276 */ "cmd ::= REINDEX",
158000
- /* 277 */ "cmd ::= REINDEX nm dbnm",
158001
- /* 278 */ "cmd ::= ANALYZE",
158002
- /* 279 */ "cmd ::= ANALYZE nm dbnm",
158003
- /* 280 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
158004
- /* 281 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
158005
- /* 282 */ "add_column_fullname ::= fullname",
158006
- /* 283 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
158007
- /* 284 */ "cmd ::= create_vtab",
158008
- /* 285 */ "cmd ::= create_vtab LP vtabarglist RP",
158009
- /* 286 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
158010
- /* 287 */ "vtabarg ::=",
158011
- /* 288 */ "vtabargtoken ::= ANY",
158012
- /* 289 */ "vtabargtoken ::= lp anylist RP",
158013
- /* 290 */ "lp ::= LP",
158014
- /* 291 */ "with ::= WITH wqlist",
158015
- /* 292 */ "with ::= WITH RECURSIVE wqlist",
158016
- /* 293 */ "wqlist ::= nm eidlist_opt AS LP select RP",
158017
- /* 294 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
158018
- /* 295 */ "windowdefn_list ::= windowdefn",
158019
- /* 296 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
158020
- /* 297 */ "windowdefn ::= nm AS LP window RP",
158021
- /* 298 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
158022
- /* 299 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
158023
- /* 300 */ "window ::= ORDER BY sortlist frame_opt",
158024
- /* 301 */ "window ::= nm ORDER BY sortlist frame_opt",
158025
- /* 302 */ "window ::= frame_opt",
158026
- /* 303 */ "window ::= nm frame_opt",
158027
- /* 304 */ "frame_opt ::=",
158028
- /* 305 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
158029
- /* 306 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
158030
- /* 307 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
158031
- /* 308 */ "frame_bound_s ::= frame_bound",
158032
- /* 309 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
158033
- /* 310 */ "frame_bound_e ::= frame_bound",
158034
- /* 311 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
158035
- /* 312 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
158036
- /* 313 */ "frame_bound ::= CURRENT ROW",
158037
- /* 314 */ "frame_exclude_opt ::=",
158038
- /* 315 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
158039
- /* 316 */ "frame_exclude ::= NO OTHERS",
158040
- /* 317 */ "frame_exclude ::= CURRENT ROW",
158041
- /* 318 */ "frame_exclude ::= GROUP|TIES",
158042
- /* 319 */ "window_clause ::= WINDOW windowdefn_list",
158043
- /* 320 */ "filter_over ::= filter_clause over_clause",
158044
- /* 321 */ "filter_over ::= over_clause",
158045
- /* 322 */ "filter_over ::= filter_clause",
158046
- /* 323 */ "over_clause ::= OVER LP window RP",
158047
- /* 324 */ "over_clause ::= OVER nm",
158048
- /* 325 */ "filter_clause ::= FILTER LP WHERE expr RP",
158049
- /* 326 */ "input ::= cmdlist",
158050
- /* 327 */ "cmdlist ::= cmdlist ecmd",
158051
- /* 328 */ "cmdlist ::= ecmd",
158052
- /* 329 */ "ecmd ::= SEMI",
158053
- /* 330 */ "ecmd ::= cmdx SEMI",
158054
- /* 331 */ "ecmd ::= explain cmdx SEMI",
158055
- /* 332 */ "trans_opt ::=",
158056
- /* 333 */ "trans_opt ::= TRANSACTION",
158057
- /* 334 */ "trans_opt ::= TRANSACTION nm",
158058
- /* 335 */ "savepoint_opt ::= SAVEPOINT",
158059
- /* 336 */ "savepoint_opt ::=",
158060
- /* 337 */ "cmd ::= create_table create_table_args",
158061
- /* 338 */ "columnlist ::= columnlist COMMA columnname carglist",
158062
- /* 339 */ "columnlist ::= columnname carglist",
158063
- /* 340 */ "nm ::= ID|INDEXED",
158064
- /* 341 */ "nm ::= STRING",
158065
- /* 342 */ "nm ::= JOIN_KW",
158066
- /* 343 */ "typetoken ::= typename",
158067
- /* 344 */ "typename ::= ID|STRING",
158068
- /* 345 */ "signed ::= plus_num",
158069
- /* 346 */ "signed ::= minus_num",
158070
- /* 347 */ "carglist ::= carglist ccons",
158071
- /* 348 */ "carglist ::=",
158072
- /* 349 */ "ccons ::= NULL onconf",
158073
- /* 350 */ "ccons ::= GENERATED ALWAYS AS generated",
158074
- /* 351 */ "ccons ::= AS generated",
158075
- /* 352 */ "conslist_opt ::= COMMA conslist",
158076
- /* 353 */ "conslist ::= conslist tconscomma tcons",
158077
- /* 354 */ "conslist ::= tcons",
158078
- /* 355 */ "tconscomma ::=",
158079
- /* 356 */ "defer_subclause_opt ::= defer_subclause",
158080
- /* 357 */ "resolvetype ::= raisetype",
158081
- /* 358 */ "selectnowith ::= oneselect",
158082
- /* 359 */ "oneselect ::= values",
158083
- /* 360 */ "sclp ::= selcollist COMMA",
158084
- /* 361 */ "as ::= ID|STRING",
158085
- /* 362 */ "expr ::= term",
158086
- /* 363 */ "likeop ::= LIKE_KW|MATCH",
158087
- /* 364 */ "exprlist ::= nexprlist",
158088
- /* 365 */ "nmnum ::= plus_num",
158089
- /* 366 */ "nmnum ::= nm",
158090
- /* 367 */ "nmnum ::= ON",
158091
- /* 368 */ "nmnum ::= DELETE",
158092
- /* 369 */ "nmnum ::= DEFAULT",
158093
- /* 370 */ "plus_num ::= INTEGER|FLOAT",
158094
- /* 371 */ "foreach_clause ::=",
158095
- /* 372 */ "foreach_clause ::= FOR EACH ROW",
158096
- /* 373 */ "trnm ::= nm",
158097
- /* 374 */ "tridxby ::=",
158098
- /* 375 */ "database_kw_opt ::= DATABASE",
158099
- /* 376 */ "database_kw_opt ::=",
158100
- /* 377 */ "kwcolumn_opt ::=",
158101
- /* 378 */ "kwcolumn_opt ::= COLUMNKW",
158102
- /* 379 */ "vtabarglist ::= vtabarg",
158103
- /* 380 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
158104
- /* 381 */ "vtabarg ::= vtabarg vtabargtoken",
158105
- /* 382 */ "anylist ::=",
158106
- /* 383 */ "anylist ::= anylist LP anylist RP",
158107
- /* 384 */ "anylist ::= anylist ANY",
158108
- /* 385 */ "with ::=",
158123
+ /* 151 */ "where_opt_ret ::=",
158124
+ /* 152 */ "where_opt_ret ::= WHERE expr",
158125
+ /* 153 */ "where_opt_ret ::= RETURNING selcollist",
158126
+ /* 154 */ "where_opt_ret ::= WHERE expr RETURNING selcollist",
158127
+ /* 155 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret",
158128
+ /* 156 */ "setlist ::= setlist COMMA nm EQ expr",
158129
+ /* 157 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
158130
+ /* 158 */ "setlist ::= nm EQ expr",
158131
+ /* 159 */ "setlist ::= LP idlist RP EQ expr",
158132
+ /* 160 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
158133
+ /* 161 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
158134
+ /* 162 */ "upsert ::=",
158135
+ /* 163 */ "upsert ::= RETURNING selcollist",
158136
+ /* 164 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
158137
+ /* 165 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
158138
+ /* 166 */ "upsert ::= ON CONFLICT DO NOTHING returning",
158139
+ /* 167 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
158140
+ /* 168 */ "returning ::= RETURNING selcollist",
158141
+ /* 169 */ "insert_cmd ::= INSERT orconf",
158142
+ /* 170 */ "insert_cmd ::= REPLACE",
158143
+ /* 171 */ "idlist_opt ::=",
158144
+ /* 172 */ "idlist_opt ::= LP idlist RP",
158145
+ /* 173 */ "idlist ::= idlist COMMA nm",
158146
+ /* 174 */ "idlist ::= nm",
158147
+ /* 175 */ "expr ::= LP expr RP",
158148
+ /* 176 */ "expr ::= ID|INDEXED",
158149
+ /* 177 */ "expr ::= JOIN_KW",
158150
+ /* 178 */ "expr ::= nm DOT nm",
158151
+ /* 179 */ "expr ::= nm DOT nm DOT nm",
158152
+ /* 180 */ "term ::= NULL|FLOAT|BLOB",
158153
+ /* 181 */ "term ::= STRING",
158154
+ /* 182 */ "term ::= INTEGER",
158155
+ /* 183 */ "expr ::= VARIABLE",
158156
+ /* 184 */ "expr ::= expr COLLATE ID|STRING",
158157
+ /* 185 */ "expr ::= CAST LP expr AS typetoken RP",
158158
+ /* 186 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
158159
+ /* 187 */ "expr ::= ID|INDEXED LP STAR RP",
158160
+ /* 188 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
158161
+ /* 189 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
158162
+ /* 190 */ "term ::= CTIME_KW",
158163
+ /* 191 */ "expr ::= LP nexprlist COMMA expr RP",
158164
+ /* 192 */ "expr ::= expr AND expr",
158165
+ /* 193 */ "expr ::= expr OR expr",
158166
+ /* 194 */ "expr ::= expr LT|GT|GE|LE expr",
158167
+ /* 195 */ "expr ::= expr EQ|NE expr",
158168
+ /* 196 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
158169
+ /* 197 */ "expr ::= expr PLUS|MINUS expr",
158170
+ /* 198 */ "expr ::= expr STAR|SLASH|REM expr",
158171
+ /* 199 */ "expr ::= expr CONCAT expr",
158172
+ /* 200 */ "likeop ::= NOT LIKE_KW|MATCH",
158173
+ /* 201 */ "expr ::= expr likeop expr",
158174
+ /* 202 */ "expr ::= expr likeop expr ESCAPE expr",
158175
+ /* 203 */ "expr ::= expr ISNULL|NOTNULL",
158176
+ /* 204 */ "expr ::= expr NOT NULL",
158177
+ /* 205 */ "expr ::= expr IS expr",
158178
+ /* 206 */ "expr ::= expr IS NOT expr",
158179
+ /* 207 */ "expr ::= NOT expr",
158180
+ /* 208 */ "expr ::= BITNOT expr",
158181
+ /* 209 */ "expr ::= PLUS|MINUS expr",
158182
+ /* 210 */ "between_op ::= BETWEEN",
158183
+ /* 211 */ "between_op ::= NOT BETWEEN",
158184
+ /* 212 */ "expr ::= expr between_op expr AND expr",
158185
+ /* 213 */ "in_op ::= IN",
158186
+ /* 214 */ "in_op ::= NOT IN",
158187
+ /* 215 */ "expr ::= expr in_op LP exprlist RP",
158188
+ /* 216 */ "expr ::= LP select RP",
158189
+ /* 217 */ "expr ::= expr in_op LP select RP",
158190
+ /* 218 */ "expr ::= expr in_op nm dbnm paren_exprlist",
158191
+ /* 219 */ "expr ::= EXISTS LP select RP",
158192
+ /* 220 */ "expr ::= CASE case_operand case_exprlist case_else END",
158193
+ /* 221 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
158194
+ /* 222 */ "case_exprlist ::= WHEN expr THEN expr",
158195
+ /* 223 */ "case_else ::= ELSE expr",
158196
+ /* 224 */ "case_else ::=",
158197
+ /* 225 */ "case_operand ::= expr",
158198
+ /* 226 */ "case_operand ::=",
158199
+ /* 227 */ "exprlist ::=",
158200
+ /* 228 */ "nexprlist ::= nexprlist COMMA expr",
158201
+ /* 229 */ "nexprlist ::= expr",
158202
+ /* 230 */ "paren_exprlist ::=",
158203
+ /* 231 */ "paren_exprlist ::= LP exprlist RP",
158204
+ /* 232 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
158205
+ /* 233 */ "uniqueflag ::= UNIQUE",
158206
+ /* 234 */ "uniqueflag ::=",
158207
+ /* 235 */ "eidlist_opt ::=",
158208
+ /* 236 */ "eidlist_opt ::= LP eidlist RP",
158209
+ /* 237 */ "eidlist ::= eidlist COMMA nm collate sortorder",
158210
+ /* 238 */ "eidlist ::= nm collate sortorder",
158211
+ /* 239 */ "collate ::=",
158212
+ /* 240 */ "collate ::= COLLATE ID|STRING",
158213
+ /* 241 */ "cmd ::= DROP INDEX ifexists fullname",
158214
+ /* 242 */ "cmd ::= VACUUM vinto",
158215
+ /* 243 */ "cmd ::= VACUUM nm vinto",
158216
+ /* 244 */ "vinto ::= INTO expr",
158217
+ /* 245 */ "vinto ::=",
158218
+ /* 246 */ "cmd ::= PRAGMA nm dbnm",
158219
+ /* 247 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
158220
+ /* 248 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
158221
+ /* 249 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
158222
+ /* 250 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
158223
+ /* 251 */ "plus_num ::= PLUS INTEGER|FLOAT",
158224
+ /* 252 */ "minus_num ::= MINUS INTEGER|FLOAT",
158225
+ /* 253 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
158226
+ /* 254 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
158227
+ /* 255 */ "trigger_time ::= BEFORE|AFTER",
158228
+ /* 256 */ "trigger_time ::= INSTEAD OF",
158229
+ /* 257 */ "trigger_time ::=",
158230
+ /* 258 */ "trigger_event ::= DELETE|INSERT",
158231
+ /* 259 */ "trigger_event ::= UPDATE",
158232
+ /* 260 */ "trigger_event ::= UPDATE OF idlist",
158233
+ /* 261 */ "when_clause ::=",
158234
+ /* 262 */ "when_clause ::= WHEN expr",
158235
+ /* 263 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
158236
+ /* 264 */ "trigger_cmd_list ::= trigger_cmd SEMI",
158237
+ /* 265 */ "trnm ::= nm DOT nm",
158238
+ /* 266 */ "tridxby ::= INDEXED BY nm",
158239
+ /* 267 */ "tridxby ::= NOT INDEXED",
158240
+ /* 268 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
158241
+ /* 269 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
158242
+ /* 270 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
158243
+ /* 271 */ "trigger_cmd ::= scanpt select scanpt",
158244
+ /* 272 */ "expr ::= RAISE LP IGNORE RP",
158245
+ /* 273 */ "expr ::= RAISE LP raisetype COMMA nm RP",
158246
+ /* 274 */ "raisetype ::= ROLLBACK",
158247
+ /* 275 */ "raisetype ::= ABORT",
158248
+ /* 276 */ "raisetype ::= FAIL",
158249
+ /* 277 */ "cmd ::= DROP TRIGGER ifexists fullname",
158250
+ /* 278 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
158251
+ /* 279 */ "cmd ::= DETACH database_kw_opt expr",
158252
+ /* 280 */ "key_opt ::=",
158253
+ /* 281 */ "key_opt ::= KEY expr",
158254
+ /* 282 */ "cmd ::= REINDEX",
158255
+ /* 283 */ "cmd ::= REINDEX nm dbnm",
158256
+ /* 284 */ "cmd ::= ANALYZE",
158257
+ /* 285 */ "cmd ::= ANALYZE nm dbnm",
158258
+ /* 286 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
158259
+ /* 287 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
158260
+ /* 288 */ "add_column_fullname ::= fullname",
158261
+ /* 289 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
158262
+ /* 290 */ "cmd ::= create_vtab",
158263
+ /* 291 */ "cmd ::= create_vtab LP vtabarglist RP",
158264
+ /* 292 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
158265
+ /* 293 */ "vtabarg ::=",
158266
+ /* 294 */ "vtabargtoken ::= ANY",
158267
+ /* 295 */ "vtabargtoken ::= lp anylist RP",
158268
+ /* 296 */ "lp ::= LP",
158269
+ /* 297 */ "with ::= WITH wqlist",
158270
+ /* 298 */ "with ::= WITH RECURSIVE wqlist",
158271
+ /* 299 */ "wqlist ::= nm eidlist_opt AS LP select RP",
158272
+ /* 300 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
158273
+ /* 301 */ "windowdefn_list ::= windowdefn",
158274
+ /* 302 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
158275
+ /* 303 */ "windowdefn ::= nm AS LP window RP",
158276
+ /* 304 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
158277
+ /* 305 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
158278
+ /* 306 */ "window ::= ORDER BY sortlist frame_opt",
158279
+ /* 307 */ "window ::= nm ORDER BY sortlist frame_opt",
158280
+ /* 308 */ "window ::= frame_opt",
158281
+ /* 309 */ "window ::= nm frame_opt",
158282
+ /* 310 */ "frame_opt ::=",
158283
+ /* 311 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
158284
+ /* 312 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
158285
+ /* 313 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
158286
+ /* 314 */ "frame_bound_s ::= frame_bound",
158287
+ /* 315 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
158288
+ /* 316 */ "frame_bound_e ::= frame_bound",
158289
+ /* 317 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
158290
+ /* 318 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
158291
+ /* 319 */ "frame_bound ::= CURRENT ROW",
158292
+ /* 320 */ "frame_exclude_opt ::=",
158293
+ /* 321 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
158294
+ /* 322 */ "frame_exclude ::= NO OTHERS",
158295
+ /* 323 */ "frame_exclude ::= CURRENT ROW",
158296
+ /* 324 */ "frame_exclude ::= GROUP|TIES",
158297
+ /* 325 */ "window_clause ::= WINDOW windowdefn_list",
158298
+ /* 326 */ "filter_over ::= filter_clause over_clause",
158299
+ /* 327 */ "filter_over ::= over_clause",
158300
+ /* 328 */ "filter_over ::= filter_clause",
158301
+ /* 329 */ "over_clause ::= OVER LP window RP",
158302
+ /* 330 */ "over_clause ::= OVER nm",
158303
+ /* 331 */ "filter_clause ::= FILTER LP WHERE expr RP",
158304
+ /* 332 */ "input ::= cmdlist",
158305
+ /* 333 */ "cmdlist ::= cmdlist ecmd",
158306
+ /* 334 */ "cmdlist ::= ecmd",
158307
+ /* 335 */ "ecmd ::= SEMI",
158308
+ /* 336 */ "ecmd ::= cmdx SEMI",
158309
+ /* 337 */ "ecmd ::= explain cmdx SEMI",
158310
+ /* 338 */ "trans_opt ::=",
158311
+ /* 339 */ "trans_opt ::= TRANSACTION",
158312
+ /* 340 */ "trans_opt ::= TRANSACTION nm",
158313
+ /* 341 */ "savepoint_opt ::= SAVEPOINT",
158314
+ /* 342 */ "savepoint_opt ::=",
158315
+ /* 343 */ "cmd ::= create_table create_table_args",
158316
+ /* 344 */ "columnlist ::= columnlist COMMA columnname carglist",
158317
+ /* 345 */ "columnlist ::= columnname carglist",
158318
+ /* 346 */ "nm ::= ID|INDEXED",
158319
+ /* 347 */ "nm ::= STRING",
158320
+ /* 348 */ "nm ::= JOIN_KW",
158321
+ /* 349 */ "typetoken ::= typename",
158322
+ /* 350 */ "typename ::= ID|STRING",
158323
+ /* 351 */ "signed ::= plus_num",
158324
+ /* 352 */ "signed ::= minus_num",
158325
+ /* 353 */ "carglist ::= carglist ccons",
158326
+ /* 354 */ "carglist ::=",
158327
+ /* 355 */ "ccons ::= NULL onconf",
158328
+ /* 356 */ "ccons ::= GENERATED ALWAYS AS generated",
158329
+ /* 357 */ "ccons ::= AS generated",
158330
+ /* 358 */ "conslist_opt ::= COMMA conslist",
158331
+ /* 359 */ "conslist ::= conslist tconscomma tcons",
158332
+ /* 360 */ "conslist ::= tcons",
158333
+ /* 361 */ "tconscomma ::=",
158334
+ /* 362 */ "defer_subclause_opt ::= defer_subclause",
158335
+ /* 363 */ "resolvetype ::= raisetype",
158336
+ /* 364 */ "selectnowith ::= oneselect",
158337
+ /* 365 */ "oneselect ::= values",
158338
+ /* 366 */ "sclp ::= selcollist COMMA",
158339
+ /* 367 */ "as ::= ID|STRING",
158340
+ /* 368 */ "returning ::=",
158341
+ /* 369 */ "expr ::= term",
158342
+ /* 370 */ "likeop ::= LIKE_KW|MATCH",
158343
+ /* 371 */ "exprlist ::= nexprlist",
158344
+ /* 372 */ "nmnum ::= plus_num",
158345
+ /* 373 */ "nmnum ::= nm",
158346
+ /* 374 */ "nmnum ::= ON",
158347
+ /* 375 */ "nmnum ::= DELETE",
158348
+ /* 376 */ "nmnum ::= DEFAULT",
158349
+ /* 377 */ "plus_num ::= INTEGER|FLOAT",
158350
+ /* 378 */ "foreach_clause ::=",
158351
+ /* 379 */ "foreach_clause ::= FOR EACH ROW",
158352
+ /* 380 */ "trnm ::= nm",
158353
+ /* 381 */ "tridxby ::=",
158354
+ /* 382 */ "database_kw_opt ::= DATABASE",
158355
+ /* 383 */ "database_kw_opt ::=",
158356
+ /* 384 */ "kwcolumn_opt ::=",
158357
+ /* 385 */ "kwcolumn_opt ::= COLUMNKW",
158358
+ /* 386 */ "vtabarglist ::= vtabarg",
158359
+ /* 387 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
158360
+ /* 388 */ "vtabarg ::= vtabarg vtabargtoken",
158361
+ /* 389 */ "anylist ::=",
158362
+ /* 390 */ "anylist ::= anylist LP anylist RP",
158363
+ /* 391 */ "anylist ::= anylist ANY",
158364
+ /* 392 */ "with ::=",
158109158365
};
158110158366
#endif /* NDEBUG */
158111158367
158112158368
158113158369
#if YYSTACKDEPTH<=0
@@ -158229,102 +158485,103 @@
158229158485
** Note: during a reduce, the only symbols destroyed are those
158230158486
** which appear on the RHS of the rule, but which are *not* used
158231158487
** inside the C code.
158232158488
*/
158233158489
/********* Begin destructor definitions ***************************************/
158234
- case 200: /* select */
158235
- case 234: /* selectnowith */
158236
- case 235: /* oneselect */
158237
- case 247: /* values */
158238
-{
158239
-sqlite3SelectDelete(pParse->db, (yypminor->yy539));
158240
-}
158241
- break;
158242
- case 211: /* term */
158243
- case 212: /* expr */
158244
- case 241: /* where_opt */
158245
- case 243: /* having_opt */
158246
- case 255: /* on_opt */
158247
- case 271: /* case_operand */
158248
- case 273: /* case_else */
158249
- case 276: /* vinto */
158250
- case 283: /* when_clause */
158251
- case 288: /* key_opt */
158252
- case 302: /* filter_clause */
158253
-{
158254
-sqlite3ExprDelete(pParse->db, (yypminor->yy202));
158255
-}
158256
- break;
158257
- case 216: /* eidlist_opt */
158258
- case 226: /* sortlist */
158259
- case 227: /* eidlist */
158260
- case 239: /* selcollist */
158261
- case 242: /* groupby_opt */
158262
- case 244: /* orderby_opt */
158263
- case 248: /* nexprlist */
158264
- case 249: /* sclp */
158265
- case 257: /* exprlist */
158266
- case 262: /* setlist */
158267
- case 270: /* paren_exprlist */
158268
- case 272: /* case_exprlist */
158269
- case 301: /* part_opt */
158270
-{
158271
-sqlite3ExprListDelete(pParse->db, (yypminor->yy242));
158272
-}
158273
- break;
158274
- case 233: /* fullname */
158275
- case 240: /* from */
158276
- case 251: /* seltablist */
158277
- case 252: /* stl_prefix */
158278
- case 258: /* xfullname */
158279
-{
158280
-sqlite3SrcListDelete(pParse->db, (yypminor->yy47));
158281
-}
158282
- break;
158283
- case 236: /* wqlist */
158284
-{
158285
-sqlite3WithDelete(pParse->db, (yypminor->yy131));
158286
-}
158287
- break;
158288
- case 246: /* window_clause */
158289
- case 297: /* windowdefn_list */
158290
-{
158291
-sqlite3WindowListDelete(pParse->db, (yypminor->yy303));
158292
-}
158293
- break;
158294
- case 256: /* using_opt */
158295
- case 259: /* idlist */
158296
- case 264: /* idlist_opt */
158297
-{
158298
-sqlite3IdListDelete(pParse->db, (yypminor->yy600));
158299
-}
158300
- break;
158301
- case 266: /* filter_over */
158302
- case 298: /* windowdefn */
158303
- case 299: /* window */
158304
- case 300: /* frame_opt */
158305
- case 303: /* over_clause */
158306
-{
158307
-sqlite3WindowDelete(pParse->db, (yypminor->yy303));
158308
-}
158309
- break;
158310
- case 279: /* trigger_cmd_list */
158311
- case 284: /* trigger_cmd */
158312
-{
158313
-sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy447));
158314
-}
158315
- break;
158316
- case 281: /* trigger_event */
158317
-{
158318
-sqlite3IdListDelete(pParse->db, (yypminor->yy230).b);
158319
-}
158320
- break;
158321
- case 305: /* frame_bound */
158322
- case 306: /* frame_bound_s */
158323
- case 307: /* frame_bound_e */
158324
-{
158325
-sqlite3ExprDelete(pParse->db, (yypminor->yy77).pExpr);
158490
+ case 201: /* select */
158491
+ case 235: /* selectnowith */
158492
+ case 236: /* oneselect */
158493
+ case 248: /* values */
158494
+{
158495
+sqlite3SelectDelete(pParse->db, (yypminor->yy293));
158496
+}
158497
+ break;
158498
+ case 212: /* term */
158499
+ case 213: /* expr */
158500
+ case 242: /* where_opt */
158501
+ case 244: /* having_opt */
158502
+ case 256: /* on_opt */
158503
+ case 263: /* where_opt_ret */
158504
+ case 274: /* case_operand */
158505
+ case 276: /* case_else */
158506
+ case 279: /* vinto */
158507
+ case 286: /* when_clause */
158508
+ case 291: /* key_opt */
158509
+ case 305: /* filter_clause */
158510
+{
158511
+sqlite3ExprDelete(pParse->db, (yypminor->yy354));
158512
+}
158513
+ break;
158514
+ case 217: /* eidlist_opt */
158515
+ case 227: /* sortlist */
158516
+ case 228: /* eidlist */
158517
+ case 240: /* selcollist */
158518
+ case 243: /* groupby_opt */
158519
+ case 245: /* orderby_opt */
158520
+ case 249: /* nexprlist */
158521
+ case 250: /* sclp */
158522
+ case 258: /* exprlist */
158523
+ case 264: /* setlist */
158524
+ case 273: /* paren_exprlist */
158525
+ case 275: /* case_exprlist */
158526
+ case 304: /* part_opt */
158527
+{
158528
+sqlite3ExprListDelete(pParse->db, (yypminor->yy350));
158529
+}
158530
+ break;
158531
+ case 234: /* fullname */
158532
+ case 241: /* from */
158533
+ case 252: /* seltablist */
158534
+ case 253: /* stl_prefix */
158535
+ case 259: /* xfullname */
158536
+{
158537
+sqlite3SrcListDelete(pParse->db, (yypminor->yy457));
158538
+}
158539
+ break;
158540
+ case 237: /* wqlist */
158541
+{
158542
+sqlite3WithDelete(pParse->db, (yypminor->yy105));
158543
+}
158544
+ break;
158545
+ case 247: /* window_clause */
158546
+ case 300: /* windowdefn_list */
158547
+{
158548
+sqlite3WindowListDelete(pParse->db, (yypminor->yy503));
158549
+}
158550
+ break;
158551
+ case 257: /* using_opt */
158552
+ case 260: /* idlist */
158553
+ case 266: /* idlist_opt */
158554
+{
158555
+sqlite3IdListDelete(pParse->db, (yypminor->yy498));
158556
+}
158557
+ break;
158558
+ case 269: /* filter_over */
158559
+ case 301: /* windowdefn */
158560
+ case 302: /* window */
158561
+ case 303: /* frame_opt */
158562
+ case 306: /* over_clause */
158563
+{
158564
+sqlite3WindowDelete(pParse->db, (yypminor->yy503));
158565
+}
158566
+ break;
158567
+ case 282: /* trigger_cmd_list */
158568
+ case 287: /* trigger_cmd */
158569
+{
158570
+sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy51));
158571
+}
158572
+ break;
158573
+ case 284: /* trigger_event */
158574
+{
158575
+sqlite3IdListDelete(pParse->db, (yypminor->yy298).b);
158576
+}
158577
+ break;
158578
+ case 308: /* frame_bound */
158579
+ case 309: /* frame_bound_s */
158580
+ case 310: /* frame_bound_e */
158581
+{
158582
+sqlite3ExprDelete(pParse->db, (yypminor->yy341).pExpr);
158326158583
}
158327158584
break;
158328158585
/********* End destructor definitions *****************************************/
158329158586
default: break; /* If no destructor action specified: do nothing */
158330158587
}
@@ -158611,396 +158868,403 @@
158611158868
}
158612158869
158613158870
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
158614158871
** of that rule */
158615158872
static const YYCODETYPE yyRuleInfoLhs[] = {
158616
- 185, /* (0) explain ::= EXPLAIN */
158617
- 185, /* (1) explain ::= EXPLAIN QUERY PLAN */
158618
- 184, /* (2) cmdx ::= cmd */
158619
- 186, /* (3) cmd ::= BEGIN transtype trans_opt */
158620
- 187, /* (4) transtype ::= */
158621
- 187, /* (5) transtype ::= DEFERRED */
158622
- 187, /* (6) transtype ::= IMMEDIATE */
158623
- 187, /* (7) transtype ::= EXCLUSIVE */
158624
- 186, /* (8) cmd ::= COMMIT|END trans_opt */
158625
- 186, /* (9) cmd ::= ROLLBACK trans_opt */
158626
- 186, /* (10) cmd ::= SAVEPOINT nm */
158627
- 186, /* (11) cmd ::= RELEASE savepoint_opt nm */
158628
- 186, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
158629
- 191, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
158630
- 193, /* (14) createkw ::= CREATE */
158631
- 195, /* (15) ifnotexists ::= */
158632
- 195, /* (16) ifnotexists ::= IF NOT EXISTS */
158633
- 194, /* (17) temp ::= TEMP */
158634
- 194, /* (18) temp ::= */
158635
- 192, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
158636
- 192, /* (20) create_table_args ::= AS select */
158637
- 199, /* (21) table_options ::= */
158638
- 199, /* (22) table_options ::= WITHOUT nm */
158639
- 201, /* (23) columnname ::= nm typetoken */
158640
- 203, /* (24) typetoken ::= */
158641
- 203, /* (25) typetoken ::= typename LP signed RP */
158642
- 203, /* (26) typetoken ::= typename LP signed COMMA signed RP */
158643
- 204, /* (27) typename ::= typename ID|STRING */
158644
- 208, /* (28) scanpt ::= */
158645
- 209, /* (29) scantok ::= */
158646
- 210, /* (30) ccons ::= CONSTRAINT nm */
158647
- 210, /* (31) ccons ::= DEFAULT scantok term */
158648
- 210, /* (32) ccons ::= DEFAULT LP expr RP */
158649
- 210, /* (33) ccons ::= DEFAULT PLUS scantok term */
158650
- 210, /* (34) ccons ::= DEFAULT MINUS scantok term */
158651
- 210, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
158652
- 210, /* (36) ccons ::= NOT NULL onconf */
158653
- 210, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
158654
- 210, /* (38) ccons ::= UNIQUE onconf */
158655
- 210, /* (39) ccons ::= CHECK LP expr RP */
158656
- 210, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
158657
- 210, /* (41) ccons ::= defer_subclause */
158658
- 210, /* (42) ccons ::= COLLATE ID|STRING */
158659
- 219, /* (43) generated ::= LP expr RP */
158660
- 219, /* (44) generated ::= LP expr RP ID */
158661
- 215, /* (45) autoinc ::= */
158662
- 215, /* (46) autoinc ::= AUTOINCR */
158663
- 217, /* (47) refargs ::= */
158664
- 217, /* (48) refargs ::= refargs refarg */
158665
- 220, /* (49) refarg ::= MATCH nm */
158666
- 220, /* (50) refarg ::= ON INSERT refact */
158667
- 220, /* (51) refarg ::= ON DELETE refact */
158668
- 220, /* (52) refarg ::= ON UPDATE refact */
158669
- 221, /* (53) refact ::= SET NULL */
158670
- 221, /* (54) refact ::= SET DEFAULT */
158671
- 221, /* (55) refact ::= CASCADE */
158672
- 221, /* (56) refact ::= RESTRICT */
158673
- 221, /* (57) refact ::= NO ACTION */
158674
- 218, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
158675
- 218, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
158676
- 222, /* (60) init_deferred_pred_opt ::= */
158677
- 222, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
158678
- 222, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
158679
- 198, /* (63) conslist_opt ::= */
158680
- 224, /* (64) tconscomma ::= COMMA */
158681
- 225, /* (65) tcons ::= CONSTRAINT nm */
158682
- 225, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
158683
- 225, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
158684
- 225, /* (68) tcons ::= CHECK LP expr RP onconf */
158685
- 225, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
158686
- 228, /* (70) defer_subclause_opt ::= */
158687
- 213, /* (71) onconf ::= */
158688
- 213, /* (72) onconf ::= ON CONFLICT resolvetype */
158689
- 229, /* (73) orconf ::= */
158690
- 229, /* (74) orconf ::= OR resolvetype */
158691
- 230, /* (75) resolvetype ::= IGNORE */
158692
- 230, /* (76) resolvetype ::= REPLACE */
158693
- 186, /* (77) cmd ::= DROP TABLE ifexists fullname */
158694
- 232, /* (78) ifexists ::= IF EXISTS */
158695
- 232, /* (79) ifexists ::= */
158696
- 186, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
158697
- 186, /* (81) cmd ::= DROP VIEW ifexists fullname */
158698
- 186, /* (82) cmd ::= select */
158699
- 200, /* (83) select ::= WITH wqlist selectnowith */
158700
- 200, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
158701
- 200, /* (85) select ::= selectnowith */
158702
- 234, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
158703
- 237, /* (87) multiselect_op ::= UNION */
158704
- 237, /* (88) multiselect_op ::= UNION ALL */
158705
- 237, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
158706
- 235, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
158707
- 235, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
158708
- 247, /* (92) values ::= VALUES LP nexprlist RP */
158709
- 247, /* (93) values ::= values COMMA LP nexprlist RP */
158710
- 238, /* (94) distinct ::= DISTINCT */
158711
- 238, /* (95) distinct ::= ALL */
158712
- 238, /* (96) distinct ::= */
158713
- 249, /* (97) sclp ::= */
158714
- 239, /* (98) selcollist ::= sclp scanpt expr scanpt as */
158715
- 239, /* (99) selcollist ::= sclp scanpt STAR */
158716
- 239, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
158717
- 250, /* (101) as ::= AS nm */
158718
- 250, /* (102) as ::= */
158719
- 240, /* (103) from ::= */
158720
- 240, /* (104) from ::= FROM seltablist */
158721
- 252, /* (105) stl_prefix ::= seltablist joinop */
158722
- 252, /* (106) stl_prefix ::= */
158723
- 251, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
158724
- 251, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
158725
- 251, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
158726
- 251, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
158727
- 196, /* (111) dbnm ::= */
158728
- 196, /* (112) dbnm ::= DOT nm */
158729
- 233, /* (113) fullname ::= nm */
158730
- 233, /* (114) fullname ::= nm DOT nm */
158731
- 258, /* (115) xfullname ::= nm */
158732
- 258, /* (116) xfullname ::= nm DOT nm */
158733
- 258, /* (117) xfullname ::= nm DOT nm AS nm */
158734
- 258, /* (118) xfullname ::= nm AS nm */
158735
- 253, /* (119) joinop ::= COMMA|JOIN */
158736
- 253, /* (120) joinop ::= JOIN_KW JOIN */
158737
- 253, /* (121) joinop ::= JOIN_KW nm JOIN */
158738
- 253, /* (122) joinop ::= JOIN_KW nm nm JOIN */
158739
- 255, /* (123) on_opt ::= ON expr */
158740
- 255, /* (124) on_opt ::= */
158741
- 254, /* (125) indexed_opt ::= */
158742
- 254, /* (126) indexed_opt ::= INDEXED BY nm */
158743
- 254, /* (127) indexed_opt ::= NOT INDEXED */
158744
- 256, /* (128) using_opt ::= USING LP idlist RP */
158745
- 256, /* (129) using_opt ::= */
158746
- 244, /* (130) orderby_opt ::= */
158747
- 244, /* (131) orderby_opt ::= ORDER BY sortlist */
158748
- 226, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
158749
- 226, /* (133) sortlist ::= expr sortorder nulls */
158750
- 214, /* (134) sortorder ::= ASC */
158751
- 214, /* (135) sortorder ::= DESC */
158752
- 214, /* (136) sortorder ::= */
158753
- 260, /* (137) nulls ::= NULLS FIRST */
158754
- 260, /* (138) nulls ::= NULLS LAST */
158755
- 260, /* (139) nulls ::= */
158756
- 242, /* (140) groupby_opt ::= */
158757
- 242, /* (141) groupby_opt ::= GROUP BY nexprlist */
158758
- 243, /* (142) having_opt ::= */
158759
- 243, /* (143) having_opt ::= HAVING expr */
158760
- 245, /* (144) limit_opt ::= */
158761
- 245, /* (145) limit_opt ::= LIMIT expr */
158762
- 245, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
158763
- 245, /* (147) limit_opt ::= LIMIT expr COMMA expr */
158764
- 186, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
158765
- 241, /* (149) where_opt ::= */
158766
- 241, /* (150) where_opt ::= WHERE expr */
158767
- 186, /* (151) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt */
158768
- 262, /* (152) setlist ::= setlist COMMA nm EQ expr */
158769
- 262, /* (153) setlist ::= setlist COMMA LP idlist RP EQ expr */
158770
- 262, /* (154) setlist ::= nm EQ expr */
158771
- 262, /* (155) setlist ::= LP idlist RP EQ expr */
158772
- 186, /* (156) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
158773
- 186, /* (157) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
158774
- 265, /* (158) upsert ::= */
158775
- 265, /* (159) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
158776
- 265, /* (160) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
158777
- 265, /* (161) upsert ::= ON CONFLICT DO NOTHING */
158778
- 265, /* (162) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt */
158779
- 263, /* (163) insert_cmd ::= INSERT orconf */
158780
- 263, /* (164) insert_cmd ::= REPLACE */
158781
- 264, /* (165) idlist_opt ::= */
158782
- 264, /* (166) idlist_opt ::= LP idlist RP */
158783
- 259, /* (167) idlist ::= idlist COMMA nm */
158784
- 259, /* (168) idlist ::= nm */
158785
- 212, /* (169) expr ::= LP expr RP */
158786
- 212, /* (170) expr ::= ID|INDEXED */
158787
- 212, /* (171) expr ::= JOIN_KW */
158788
- 212, /* (172) expr ::= nm DOT nm */
158789
- 212, /* (173) expr ::= nm DOT nm DOT nm */
158790
- 211, /* (174) term ::= NULL|FLOAT|BLOB */
158791
- 211, /* (175) term ::= STRING */
158792
- 211, /* (176) term ::= INTEGER */
158793
- 212, /* (177) expr ::= VARIABLE */
158794
- 212, /* (178) expr ::= expr COLLATE ID|STRING */
158795
- 212, /* (179) expr ::= CAST LP expr AS typetoken RP */
158796
- 212, /* (180) expr ::= ID|INDEXED LP distinct exprlist RP */
158797
- 212, /* (181) expr ::= ID|INDEXED LP STAR RP */
158798
- 212, /* (182) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
158799
- 212, /* (183) expr ::= ID|INDEXED LP STAR RP filter_over */
158800
- 211, /* (184) term ::= CTIME_KW */
158801
- 212, /* (185) expr ::= LP nexprlist COMMA expr RP */
158802
- 212, /* (186) expr ::= expr AND expr */
158803
- 212, /* (187) expr ::= expr OR expr */
158804
- 212, /* (188) expr ::= expr LT|GT|GE|LE expr */
158805
- 212, /* (189) expr ::= expr EQ|NE expr */
158806
- 212, /* (190) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
158807
- 212, /* (191) expr ::= expr PLUS|MINUS expr */
158808
- 212, /* (192) expr ::= expr STAR|SLASH|REM expr */
158809
- 212, /* (193) expr ::= expr CONCAT expr */
158810
- 267, /* (194) likeop ::= NOT LIKE_KW|MATCH */
158811
- 212, /* (195) expr ::= expr likeop expr */
158812
- 212, /* (196) expr ::= expr likeop expr ESCAPE expr */
158813
- 212, /* (197) expr ::= expr ISNULL|NOTNULL */
158814
- 212, /* (198) expr ::= expr NOT NULL */
158815
- 212, /* (199) expr ::= expr IS expr */
158816
- 212, /* (200) expr ::= expr IS NOT expr */
158817
- 212, /* (201) expr ::= NOT expr */
158818
- 212, /* (202) expr ::= BITNOT expr */
158819
- 212, /* (203) expr ::= PLUS|MINUS expr */
158820
- 268, /* (204) between_op ::= BETWEEN */
158821
- 268, /* (205) between_op ::= NOT BETWEEN */
158822
- 212, /* (206) expr ::= expr between_op expr AND expr */
158823
- 269, /* (207) in_op ::= IN */
158824
- 269, /* (208) in_op ::= NOT IN */
158825
- 212, /* (209) expr ::= expr in_op LP exprlist RP */
158826
- 212, /* (210) expr ::= LP select RP */
158827
- 212, /* (211) expr ::= expr in_op LP select RP */
158828
- 212, /* (212) expr ::= expr in_op nm dbnm paren_exprlist */
158829
- 212, /* (213) expr ::= EXISTS LP select RP */
158830
- 212, /* (214) expr ::= CASE case_operand case_exprlist case_else END */
158831
- 272, /* (215) case_exprlist ::= case_exprlist WHEN expr THEN expr */
158832
- 272, /* (216) case_exprlist ::= WHEN expr THEN expr */
158833
- 273, /* (217) case_else ::= ELSE expr */
158834
- 273, /* (218) case_else ::= */
158835
- 271, /* (219) case_operand ::= expr */
158836
- 271, /* (220) case_operand ::= */
158837
- 257, /* (221) exprlist ::= */
158838
- 248, /* (222) nexprlist ::= nexprlist COMMA expr */
158839
- 248, /* (223) nexprlist ::= expr */
158840
- 270, /* (224) paren_exprlist ::= */
158841
- 270, /* (225) paren_exprlist ::= LP exprlist RP */
158842
- 186, /* (226) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
158843
- 274, /* (227) uniqueflag ::= UNIQUE */
158844
- 274, /* (228) uniqueflag ::= */
158845
- 216, /* (229) eidlist_opt ::= */
158846
- 216, /* (230) eidlist_opt ::= LP eidlist RP */
158847
- 227, /* (231) eidlist ::= eidlist COMMA nm collate sortorder */
158848
- 227, /* (232) eidlist ::= nm collate sortorder */
158849
- 275, /* (233) collate ::= */
158850
- 275, /* (234) collate ::= COLLATE ID|STRING */
158851
- 186, /* (235) cmd ::= DROP INDEX ifexists fullname */
158852
- 186, /* (236) cmd ::= VACUUM vinto */
158853
- 186, /* (237) cmd ::= VACUUM nm vinto */
158854
- 276, /* (238) vinto ::= INTO expr */
158855
- 276, /* (239) vinto ::= */
158856
- 186, /* (240) cmd ::= PRAGMA nm dbnm */
158857
- 186, /* (241) cmd ::= PRAGMA nm dbnm EQ nmnum */
158858
- 186, /* (242) cmd ::= PRAGMA nm dbnm LP nmnum RP */
158859
- 186, /* (243) cmd ::= PRAGMA nm dbnm EQ minus_num */
158860
- 186, /* (244) cmd ::= PRAGMA nm dbnm LP minus_num RP */
158861
- 206, /* (245) plus_num ::= PLUS INTEGER|FLOAT */
158862
- 207, /* (246) minus_num ::= MINUS INTEGER|FLOAT */
158863
- 186, /* (247) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
158864
- 278, /* (248) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
158865
- 280, /* (249) trigger_time ::= BEFORE|AFTER */
158866
- 280, /* (250) trigger_time ::= INSTEAD OF */
158867
- 280, /* (251) trigger_time ::= */
158868
- 281, /* (252) trigger_event ::= DELETE|INSERT */
158869
- 281, /* (253) trigger_event ::= UPDATE */
158870
- 281, /* (254) trigger_event ::= UPDATE OF idlist */
158871
- 283, /* (255) when_clause ::= */
158872
- 283, /* (256) when_clause ::= WHEN expr */
158873
- 279, /* (257) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
158874
- 279, /* (258) trigger_cmd_list ::= trigger_cmd SEMI */
158875
- 285, /* (259) trnm ::= nm DOT nm */
158876
- 286, /* (260) tridxby ::= INDEXED BY nm */
158877
- 286, /* (261) tridxby ::= NOT INDEXED */
158878
- 284, /* (262) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
158879
- 284, /* (263) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
158880
- 284, /* (264) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
158881
- 284, /* (265) trigger_cmd ::= scanpt select scanpt */
158882
- 212, /* (266) expr ::= RAISE LP IGNORE RP */
158883
- 212, /* (267) expr ::= RAISE LP raisetype COMMA nm RP */
158884
- 231, /* (268) raisetype ::= ROLLBACK */
158885
- 231, /* (269) raisetype ::= ABORT */
158886
- 231, /* (270) raisetype ::= FAIL */
158887
- 186, /* (271) cmd ::= DROP TRIGGER ifexists fullname */
158888
- 186, /* (272) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
158889
- 186, /* (273) cmd ::= DETACH database_kw_opt expr */
158890
- 288, /* (274) key_opt ::= */
158891
- 288, /* (275) key_opt ::= KEY expr */
158892
- 186, /* (276) cmd ::= REINDEX */
158893
- 186, /* (277) cmd ::= REINDEX nm dbnm */
158894
- 186, /* (278) cmd ::= ANALYZE */
158895
- 186, /* (279) cmd ::= ANALYZE nm dbnm */
158896
- 186, /* (280) cmd ::= ALTER TABLE fullname RENAME TO nm */
158897
- 186, /* (281) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
158898
- 289, /* (282) add_column_fullname ::= fullname */
158899
- 186, /* (283) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
158900
- 186, /* (284) cmd ::= create_vtab */
158901
- 186, /* (285) cmd ::= create_vtab LP vtabarglist RP */
158902
- 291, /* (286) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
158903
- 293, /* (287) vtabarg ::= */
158904
- 294, /* (288) vtabargtoken ::= ANY */
158905
- 294, /* (289) vtabargtoken ::= lp anylist RP */
158906
- 295, /* (290) lp ::= LP */
158907
- 261, /* (291) with ::= WITH wqlist */
158908
- 261, /* (292) with ::= WITH RECURSIVE wqlist */
158909
- 236, /* (293) wqlist ::= nm eidlist_opt AS LP select RP */
158910
- 236, /* (294) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
158911
- 297, /* (295) windowdefn_list ::= windowdefn */
158912
- 297, /* (296) windowdefn_list ::= windowdefn_list COMMA windowdefn */
158913
- 298, /* (297) windowdefn ::= nm AS LP window RP */
158914
- 299, /* (298) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
158915
- 299, /* (299) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
158916
- 299, /* (300) window ::= ORDER BY sortlist frame_opt */
158917
- 299, /* (301) window ::= nm ORDER BY sortlist frame_opt */
158918
- 299, /* (302) window ::= frame_opt */
158919
- 299, /* (303) window ::= nm frame_opt */
158920
- 300, /* (304) frame_opt ::= */
158921
- 300, /* (305) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
158922
- 300, /* (306) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
158923
- 304, /* (307) range_or_rows ::= RANGE|ROWS|GROUPS */
158924
- 306, /* (308) frame_bound_s ::= frame_bound */
158925
- 306, /* (309) frame_bound_s ::= UNBOUNDED PRECEDING */
158926
- 307, /* (310) frame_bound_e ::= frame_bound */
158927
- 307, /* (311) frame_bound_e ::= UNBOUNDED FOLLOWING */
158928
- 305, /* (312) frame_bound ::= expr PRECEDING|FOLLOWING */
158929
- 305, /* (313) frame_bound ::= CURRENT ROW */
158930
- 308, /* (314) frame_exclude_opt ::= */
158931
- 308, /* (315) frame_exclude_opt ::= EXCLUDE frame_exclude */
158932
- 309, /* (316) frame_exclude ::= NO OTHERS */
158933
- 309, /* (317) frame_exclude ::= CURRENT ROW */
158934
- 309, /* (318) frame_exclude ::= GROUP|TIES */
158935
- 246, /* (319) window_clause ::= WINDOW windowdefn_list */
158936
- 266, /* (320) filter_over ::= filter_clause over_clause */
158937
- 266, /* (321) filter_over ::= over_clause */
158938
- 266, /* (322) filter_over ::= filter_clause */
158939
- 303, /* (323) over_clause ::= OVER LP window RP */
158940
- 303, /* (324) over_clause ::= OVER nm */
158941
- 302, /* (325) filter_clause ::= FILTER LP WHERE expr RP */
158942
- 181, /* (326) input ::= cmdlist */
158943
- 182, /* (327) cmdlist ::= cmdlist ecmd */
158944
- 182, /* (328) cmdlist ::= ecmd */
158945
- 183, /* (329) ecmd ::= SEMI */
158946
- 183, /* (330) ecmd ::= cmdx SEMI */
158947
- 183, /* (331) ecmd ::= explain cmdx SEMI */
158948
- 188, /* (332) trans_opt ::= */
158949
- 188, /* (333) trans_opt ::= TRANSACTION */
158950
- 188, /* (334) trans_opt ::= TRANSACTION nm */
158951
- 190, /* (335) savepoint_opt ::= SAVEPOINT */
158952
- 190, /* (336) savepoint_opt ::= */
158953
- 186, /* (337) cmd ::= create_table create_table_args */
158954
- 197, /* (338) columnlist ::= columnlist COMMA columnname carglist */
158955
- 197, /* (339) columnlist ::= columnname carglist */
158956
- 189, /* (340) nm ::= ID|INDEXED */
158957
- 189, /* (341) nm ::= STRING */
158958
- 189, /* (342) nm ::= JOIN_KW */
158959
- 203, /* (343) typetoken ::= typename */
158960
- 204, /* (344) typename ::= ID|STRING */
158961
- 205, /* (345) signed ::= plus_num */
158962
- 205, /* (346) signed ::= minus_num */
158963
- 202, /* (347) carglist ::= carglist ccons */
158964
- 202, /* (348) carglist ::= */
158965
- 210, /* (349) ccons ::= NULL onconf */
158966
- 210, /* (350) ccons ::= GENERATED ALWAYS AS generated */
158967
- 210, /* (351) ccons ::= AS generated */
158968
- 198, /* (352) conslist_opt ::= COMMA conslist */
158969
- 223, /* (353) conslist ::= conslist tconscomma tcons */
158970
- 223, /* (354) conslist ::= tcons */
158971
- 224, /* (355) tconscomma ::= */
158972
- 228, /* (356) defer_subclause_opt ::= defer_subclause */
158973
- 230, /* (357) resolvetype ::= raisetype */
158974
- 234, /* (358) selectnowith ::= oneselect */
158975
- 235, /* (359) oneselect ::= values */
158976
- 249, /* (360) sclp ::= selcollist COMMA */
158977
- 250, /* (361) as ::= ID|STRING */
158978
- 212, /* (362) expr ::= term */
158979
- 267, /* (363) likeop ::= LIKE_KW|MATCH */
158980
- 257, /* (364) exprlist ::= nexprlist */
158981
- 277, /* (365) nmnum ::= plus_num */
158982
- 277, /* (366) nmnum ::= nm */
158983
- 277, /* (367) nmnum ::= ON */
158984
- 277, /* (368) nmnum ::= DELETE */
158985
- 277, /* (369) nmnum ::= DEFAULT */
158986
- 206, /* (370) plus_num ::= INTEGER|FLOAT */
158987
- 282, /* (371) foreach_clause ::= */
158988
- 282, /* (372) foreach_clause ::= FOR EACH ROW */
158989
- 285, /* (373) trnm ::= nm */
158990
- 286, /* (374) tridxby ::= */
158991
- 287, /* (375) database_kw_opt ::= DATABASE */
158992
- 287, /* (376) database_kw_opt ::= */
158993
- 290, /* (377) kwcolumn_opt ::= */
158994
- 290, /* (378) kwcolumn_opt ::= COLUMNKW */
158995
- 292, /* (379) vtabarglist ::= vtabarg */
158996
- 292, /* (380) vtabarglist ::= vtabarglist COMMA vtabarg */
158997
- 293, /* (381) vtabarg ::= vtabarg vtabargtoken */
158998
- 296, /* (382) anylist ::= */
158999
- 296, /* (383) anylist ::= anylist LP anylist RP */
159000
- 296, /* (384) anylist ::= anylist ANY */
159001
- 261, /* (385) with ::= */
158873
+ 186, /* (0) explain ::= EXPLAIN */
158874
+ 186, /* (1) explain ::= EXPLAIN QUERY PLAN */
158875
+ 185, /* (2) cmdx ::= cmd */
158876
+ 187, /* (3) cmd ::= BEGIN transtype trans_opt */
158877
+ 188, /* (4) transtype ::= */
158878
+ 188, /* (5) transtype ::= DEFERRED */
158879
+ 188, /* (6) transtype ::= IMMEDIATE */
158880
+ 188, /* (7) transtype ::= EXCLUSIVE */
158881
+ 187, /* (8) cmd ::= COMMIT|END trans_opt */
158882
+ 187, /* (9) cmd ::= ROLLBACK trans_opt */
158883
+ 187, /* (10) cmd ::= SAVEPOINT nm */
158884
+ 187, /* (11) cmd ::= RELEASE savepoint_opt nm */
158885
+ 187, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
158886
+ 192, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
158887
+ 194, /* (14) createkw ::= CREATE */
158888
+ 196, /* (15) ifnotexists ::= */
158889
+ 196, /* (16) ifnotexists ::= IF NOT EXISTS */
158890
+ 195, /* (17) temp ::= TEMP */
158891
+ 195, /* (18) temp ::= */
158892
+ 193, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
158893
+ 193, /* (20) create_table_args ::= AS select */
158894
+ 200, /* (21) table_options ::= */
158895
+ 200, /* (22) table_options ::= WITHOUT nm */
158896
+ 202, /* (23) columnname ::= nm typetoken */
158897
+ 204, /* (24) typetoken ::= */
158898
+ 204, /* (25) typetoken ::= typename LP signed RP */
158899
+ 204, /* (26) typetoken ::= typename LP signed COMMA signed RP */
158900
+ 205, /* (27) typename ::= typename ID|STRING */
158901
+ 209, /* (28) scanpt ::= */
158902
+ 210, /* (29) scantok ::= */
158903
+ 211, /* (30) ccons ::= CONSTRAINT nm */
158904
+ 211, /* (31) ccons ::= DEFAULT scantok term */
158905
+ 211, /* (32) ccons ::= DEFAULT LP expr RP */
158906
+ 211, /* (33) ccons ::= DEFAULT PLUS scantok term */
158907
+ 211, /* (34) ccons ::= DEFAULT MINUS scantok term */
158908
+ 211, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
158909
+ 211, /* (36) ccons ::= NOT NULL onconf */
158910
+ 211, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
158911
+ 211, /* (38) ccons ::= UNIQUE onconf */
158912
+ 211, /* (39) ccons ::= CHECK LP expr RP */
158913
+ 211, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
158914
+ 211, /* (41) ccons ::= defer_subclause */
158915
+ 211, /* (42) ccons ::= COLLATE ID|STRING */
158916
+ 220, /* (43) generated ::= LP expr RP */
158917
+ 220, /* (44) generated ::= LP expr RP ID */
158918
+ 216, /* (45) autoinc ::= */
158919
+ 216, /* (46) autoinc ::= AUTOINCR */
158920
+ 218, /* (47) refargs ::= */
158921
+ 218, /* (48) refargs ::= refargs refarg */
158922
+ 221, /* (49) refarg ::= MATCH nm */
158923
+ 221, /* (50) refarg ::= ON INSERT refact */
158924
+ 221, /* (51) refarg ::= ON DELETE refact */
158925
+ 221, /* (52) refarg ::= ON UPDATE refact */
158926
+ 222, /* (53) refact ::= SET NULL */
158927
+ 222, /* (54) refact ::= SET DEFAULT */
158928
+ 222, /* (55) refact ::= CASCADE */
158929
+ 222, /* (56) refact ::= RESTRICT */
158930
+ 222, /* (57) refact ::= NO ACTION */
158931
+ 219, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
158932
+ 219, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
158933
+ 223, /* (60) init_deferred_pred_opt ::= */
158934
+ 223, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
158935
+ 223, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
158936
+ 199, /* (63) conslist_opt ::= */
158937
+ 225, /* (64) tconscomma ::= COMMA */
158938
+ 226, /* (65) tcons ::= CONSTRAINT nm */
158939
+ 226, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
158940
+ 226, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
158941
+ 226, /* (68) tcons ::= CHECK LP expr RP onconf */
158942
+ 226, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
158943
+ 229, /* (70) defer_subclause_opt ::= */
158944
+ 214, /* (71) onconf ::= */
158945
+ 214, /* (72) onconf ::= ON CONFLICT resolvetype */
158946
+ 230, /* (73) orconf ::= */
158947
+ 230, /* (74) orconf ::= OR resolvetype */
158948
+ 231, /* (75) resolvetype ::= IGNORE */
158949
+ 231, /* (76) resolvetype ::= REPLACE */
158950
+ 187, /* (77) cmd ::= DROP TABLE ifexists fullname */
158951
+ 233, /* (78) ifexists ::= IF EXISTS */
158952
+ 233, /* (79) ifexists ::= */
158953
+ 187, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
158954
+ 187, /* (81) cmd ::= DROP VIEW ifexists fullname */
158955
+ 187, /* (82) cmd ::= select */
158956
+ 201, /* (83) select ::= WITH wqlist selectnowith */
158957
+ 201, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
158958
+ 201, /* (85) select ::= selectnowith */
158959
+ 235, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
158960
+ 238, /* (87) multiselect_op ::= UNION */
158961
+ 238, /* (88) multiselect_op ::= UNION ALL */
158962
+ 238, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
158963
+ 236, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
158964
+ 236, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
158965
+ 248, /* (92) values ::= VALUES LP nexprlist RP */
158966
+ 248, /* (93) values ::= values COMMA LP nexprlist RP */
158967
+ 239, /* (94) distinct ::= DISTINCT */
158968
+ 239, /* (95) distinct ::= ALL */
158969
+ 239, /* (96) distinct ::= */
158970
+ 250, /* (97) sclp ::= */
158971
+ 240, /* (98) selcollist ::= sclp scanpt expr scanpt as */
158972
+ 240, /* (99) selcollist ::= sclp scanpt STAR */
158973
+ 240, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
158974
+ 251, /* (101) as ::= AS nm */
158975
+ 251, /* (102) as ::= */
158976
+ 241, /* (103) from ::= */
158977
+ 241, /* (104) from ::= FROM seltablist */
158978
+ 253, /* (105) stl_prefix ::= seltablist joinop */
158979
+ 253, /* (106) stl_prefix ::= */
158980
+ 252, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
158981
+ 252, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
158982
+ 252, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
158983
+ 252, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
158984
+ 197, /* (111) dbnm ::= */
158985
+ 197, /* (112) dbnm ::= DOT nm */
158986
+ 234, /* (113) fullname ::= nm */
158987
+ 234, /* (114) fullname ::= nm DOT nm */
158988
+ 259, /* (115) xfullname ::= nm */
158989
+ 259, /* (116) xfullname ::= nm DOT nm */
158990
+ 259, /* (117) xfullname ::= nm DOT nm AS nm */
158991
+ 259, /* (118) xfullname ::= nm AS nm */
158992
+ 254, /* (119) joinop ::= COMMA|JOIN */
158993
+ 254, /* (120) joinop ::= JOIN_KW JOIN */
158994
+ 254, /* (121) joinop ::= JOIN_KW nm JOIN */
158995
+ 254, /* (122) joinop ::= JOIN_KW nm nm JOIN */
158996
+ 256, /* (123) on_opt ::= ON expr */
158997
+ 256, /* (124) on_opt ::= */
158998
+ 255, /* (125) indexed_opt ::= */
158999
+ 255, /* (126) indexed_opt ::= INDEXED BY nm */
159000
+ 255, /* (127) indexed_opt ::= NOT INDEXED */
159001
+ 257, /* (128) using_opt ::= USING LP idlist RP */
159002
+ 257, /* (129) using_opt ::= */
159003
+ 245, /* (130) orderby_opt ::= */
159004
+ 245, /* (131) orderby_opt ::= ORDER BY sortlist */
159005
+ 227, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
159006
+ 227, /* (133) sortlist ::= expr sortorder nulls */
159007
+ 215, /* (134) sortorder ::= ASC */
159008
+ 215, /* (135) sortorder ::= DESC */
159009
+ 215, /* (136) sortorder ::= */
159010
+ 261, /* (137) nulls ::= NULLS FIRST */
159011
+ 261, /* (138) nulls ::= NULLS LAST */
159012
+ 261, /* (139) nulls ::= */
159013
+ 243, /* (140) groupby_opt ::= */
159014
+ 243, /* (141) groupby_opt ::= GROUP BY nexprlist */
159015
+ 244, /* (142) having_opt ::= */
159016
+ 244, /* (143) having_opt ::= HAVING expr */
159017
+ 246, /* (144) limit_opt ::= */
159018
+ 246, /* (145) limit_opt ::= LIMIT expr */
159019
+ 246, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
159020
+ 246, /* (147) limit_opt ::= LIMIT expr COMMA expr */
159021
+ 187, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
159022
+ 242, /* (149) where_opt ::= */
159023
+ 242, /* (150) where_opt ::= WHERE expr */
159024
+ 263, /* (151) where_opt_ret ::= */
159025
+ 263, /* (152) where_opt_ret ::= WHERE expr */
159026
+ 263, /* (153) where_opt_ret ::= RETURNING selcollist */
159027
+ 263, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
159028
+ 187, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
159029
+ 264, /* (156) setlist ::= setlist COMMA nm EQ expr */
159030
+ 264, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
159031
+ 264, /* (158) setlist ::= nm EQ expr */
159032
+ 264, /* (159) setlist ::= LP idlist RP EQ expr */
159033
+ 187, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
159034
+ 187, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
159035
+ 267, /* (162) upsert ::= */
159036
+ 267, /* (163) upsert ::= RETURNING selcollist */
159037
+ 267, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
159038
+ 267, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
159039
+ 267, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
159040
+ 267, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
159041
+ 268, /* (168) returning ::= RETURNING selcollist */
159042
+ 265, /* (169) insert_cmd ::= INSERT orconf */
159043
+ 265, /* (170) insert_cmd ::= REPLACE */
159044
+ 266, /* (171) idlist_opt ::= */
159045
+ 266, /* (172) idlist_opt ::= LP idlist RP */
159046
+ 260, /* (173) idlist ::= idlist COMMA nm */
159047
+ 260, /* (174) idlist ::= nm */
159048
+ 213, /* (175) expr ::= LP expr RP */
159049
+ 213, /* (176) expr ::= ID|INDEXED */
159050
+ 213, /* (177) expr ::= JOIN_KW */
159051
+ 213, /* (178) expr ::= nm DOT nm */
159052
+ 213, /* (179) expr ::= nm DOT nm DOT nm */
159053
+ 212, /* (180) term ::= NULL|FLOAT|BLOB */
159054
+ 212, /* (181) term ::= STRING */
159055
+ 212, /* (182) term ::= INTEGER */
159056
+ 213, /* (183) expr ::= VARIABLE */
159057
+ 213, /* (184) expr ::= expr COLLATE ID|STRING */
159058
+ 213, /* (185) expr ::= CAST LP expr AS typetoken RP */
159059
+ 213, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
159060
+ 213, /* (187) expr ::= ID|INDEXED LP STAR RP */
159061
+ 213, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
159062
+ 213, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
159063
+ 212, /* (190) term ::= CTIME_KW */
159064
+ 213, /* (191) expr ::= LP nexprlist COMMA expr RP */
159065
+ 213, /* (192) expr ::= expr AND expr */
159066
+ 213, /* (193) expr ::= expr OR expr */
159067
+ 213, /* (194) expr ::= expr LT|GT|GE|LE expr */
159068
+ 213, /* (195) expr ::= expr EQ|NE expr */
159069
+ 213, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
159070
+ 213, /* (197) expr ::= expr PLUS|MINUS expr */
159071
+ 213, /* (198) expr ::= expr STAR|SLASH|REM expr */
159072
+ 213, /* (199) expr ::= expr CONCAT expr */
159073
+ 270, /* (200) likeop ::= NOT LIKE_KW|MATCH */
159074
+ 213, /* (201) expr ::= expr likeop expr */
159075
+ 213, /* (202) expr ::= expr likeop expr ESCAPE expr */
159076
+ 213, /* (203) expr ::= expr ISNULL|NOTNULL */
159077
+ 213, /* (204) expr ::= expr NOT NULL */
159078
+ 213, /* (205) expr ::= expr IS expr */
159079
+ 213, /* (206) expr ::= expr IS NOT expr */
159080
+ 213, /* (207) expr ::= NOT expr */
159081
+ 213, /* (208) expr ::= BITNOT expr */
159082
+ 213, /* (209) expr ::= PLUS|MINUS expr */
159083
+ 271, /* (210) between_op ::= BETWEEN */
159084
+ 271, /* (211) between_op ::= NOT BETWEEN */
159085
+ 213, /* (212) expr ::= expr between_op expr AND expr */
159086
+ 272, /* (213) in_op ::= IN */
159087
+ 272, /* (214) in_op ::= NOT IN */
159088
+ 213, /* (215) expr ::= expr in_op LP exprlist RP */
159089
+ 213, /* (216) expr ::= LP select RP */
159090
+ 213, /* (217) expr ::= expr in_op LP select RP */
159091
+ 213, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
159092
+ 213, /* (219) expr ::= EXISTS LP select RP */
159093
+ 213, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
159094
+ 275, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
159095
+ 275, /* (222) case_exprlist ::= WHEN expr THEN expr */
159096
+ 276, /* (223) case_else ::= ELSE expr */
159097
+ 276, /* (224) case_else ::= */
159098
+ 274, /* (225) case_operand ::= expr */
159099
+ 274, /* (226) case_operand ::= */
159100
+ 258, /* (227) exprlist ::= */
159101
+ 249, /* (228) nexprlist ::= nexprlist COMMA expr */
159102
+ 249, /* (229) nexprlist ::= expr */
159103
+ 273, /* (230) paren_exprlist ::= */
159104
+ 273, /* (231) paren_exprlist ::= LP exprlist RP */
159105
+ 187, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
159106
+ 277, /* (233) uniqueflag ::= UNIQUE */
159107
+ 277, /* (234) uniqueflag ::= */
159108
+ 217, /* (235) eidlist_opt ::= */
159109
+ 217, /* (236) eidlist_opt ::= LP eidlist RP */
159110
+ 228, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
159111
+ 228, /* (238) eidlist ::= nm collate sortorder */
159112
+ 278, /* (239) collate ::= */
159113
+ 278, /* (240) collate ::= COLLATE ID|STRING */
159114
+ 187, /* (241) cmd ::= DROP INDEX ifexists fullname */
159115
+ 187, /* (242) cmd ::= VACUUM vinto */
159116
+ 187, /* (243) cmd ::= VACUUM nm vinto */
159117
+ 279, /* (244) vinto ::= INTO expr */
159118
+ 279, /* (245) vinto ::= */
159119
+ 187, /* (246) cmd ::= PRAGMA nm dbnm */
159120
+ 187, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
159121
+ 187, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
159122
+ 187, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
159123
+ 187, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
159124
+ 207, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
159125
+ 208, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
159126
+ 187, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
159127
+ 281, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
159128
+ 283, /* (255) trigger_time ::= BEFORE|AFTER */
159129
+ 283, /* (256) trigger_time ::= INSTEAD OF */
159130
+ 283, /* (257) trigger_time ::= */
159131
+ 284, /* (258) trigger_event ::= DELETE|INSERT */
159132
+ 284, /* (259) trigger_event ::= UPDATE */
159133
+ 284, /* (260) trigger_event ::= UPDATE OF idlist */
159134
+ 286, /* (261) when_clause ::= */
159135
+ 286, /* (262) when_clause ::= WHEN expr */
159136
+ 282, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
159137
+ 282, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
159138
+ 288, /* (265) trnm ::= nm DOT nm */
159139
+ 289, /* (266) tridxby ::= INDEXED BY nm */
159140
+ 289, /* (267) tridxby ::= NOT INDEXED */
159141
+ 287, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
159142
+ 287, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
159143
+ 287, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
159144
+ 287, /* (271) trigger_cmd ::= scanpt select scanpt */
159145
+ 213, /* (272) expr ::= RAISE LP IGNORE RP */
159146
+ 213, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
159147
+ 232, /* (274) raisetype ::= ROLLBACK */
159148
+ 232, /* (275) raisetype ::= ABORT */
159149
+ 232, /* (276) raisetype ::= FAIL */
159150
+ 187, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
159151
+ 187, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
159152
+ 187, /* (279) cmd ::= DETACH database_kw_opt expr */
159153
+ 291, /* (280) key_opt ::= */
159154
+ 291, /* (281) key_opt ::= KEY expr */
159155
+ 187, /* (282) cmd ::= REINDEX */
159156
+ 187, /* (283) cmd ::= REINDEX nm dbnm */
159157
+ 187, /* (284) cmd ::= ANALYZE */
159158
+ 187, /* (285) cmd ::= ANALYZE nm dbnm */
159159
+ 187, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
159160
+ 187, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
159161
+ 292, /* (288) add_column_fullname ::= fullname */
159162
+ 187, /* (289) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
159163
+ 187, /* (290) cmd ::= create_vtab */
159164
+ 187, /* (291) cmd ::= create_vtab LP vtabarglist RP */
159165
+ 294, /* (292) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
159166
+ 296, /* (293) vtabarg ::= */
159167
+ 297, /* (294) vtabargtoken ::= ANY */
159168
+ 297, /* (295) vtabargtoken ::= lp anylist RP */
159169
+ 298, /* (296) lp ::= LP */
159170
+ 262, /* (297) with ::= WITH wqlist */
159171
+ 262, /* (298) with ::= WITH RECURSIVE wqlist */
159172
+ 237, /* (299) wqlist ::= nm eidlist_opt AS LP select RP */
159173
+ 237, /* (300) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
159174
+ 300, /* (301) windowdefn_list ::= windowdefn */
159175
+ 300, /* (302) windowdefn_list ::= windowdefn_list COMMA windowdefn */
159176
+ 301, /* (303) windowdefn ::= nm AS LP window RP */
159177
+ 302, /* (304) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
159178
+ 302, /* (305) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
159179
+ 302, /* (306) window ::= ORDER BY sortlist frame_opt */
159180
+ 302, /* (307) window ::= nm ORDER BY sortlist frame_opt */
159181
+ 302, /* (308) window ::= frame_opt */
159182
+ 302, /* (309) window ::= nm frame_opt */
159183
+ 303, /* (310) frame_opt ::= */
159184
+ 303, /* (311) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
159185
+ 303, /* (312) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
159186
+ 307, /* (313) range_or_rows ::= RANGE|ROWS|GROUPS */
159187
+ 309, /* (314) frame_bound_s ::= frame_bound */
159188
+ 309, /* (315) frame_bound_s ::= UNBOUNDED PRECEDING */
159189
+ 310, /* (316) frame_bound_e ::= frame_bound */
159190
+ 310, /* (317) frame_bound_e ::= UNBOUNDED FOLLOWING */
159191
+ 308, /* (318) frame_bound ::= expr PRECEDING|FOLLOWING */
159192
+ 308, /* (319) frame_bound ::= CURRENT ROW */
159193
+ 311, /* (320) frame_exclude_opt ::= */
159194
+ 311, /* (321) frame_exclude_opt ::= EXCLUDE frame_exclude */
159195
+ 312, /* (322) frame_exclude ::= NO OTHERS */
159196
+ 312, /* (323) frame_exclude ::= CURRENT ROW */
159197
+ 312, /* (324) frame_exclude ::= GROUP|TIES */
159198
+ 247, /* (325) window_clause ::= WINDOW windowdefn_list */
159199
+ 269, /* (326) filter_over ::= filter_clause over_clause */
159200
+ 269, /* (327) filter_over ::= over_clause */
159201
+ 269, /* (328) filter_over ::= filter_clause */
159202
+ 306, /* (329) over_clause ::= OVER LP window RP */
159203
+ 306, /* (330) over_clause ::= OVER nm */
159204
+ 305, /* (331) filter_clause ::= FILTER LP WHERE expr RP */
159205
+ 182, /* (332) input ::= cmdlist */
159206
+ 183, /* (333) cmdlist ::= cmdlist ecmd */
159207
+ 183, /* (334) cmdlist ::= ecmd */
159208
+ 184, /* (335) ecmd ::= SEMI */
159209
+ 184, /* (336) ecmd ::= cmdx SEMI */
159210
+ 184, /* (337) ecmd ::= explain cmdx SEMI */
159211
+ 189, /* (338) trans_opt ::= */
159212
+ 189, /* (339) trans_opt ::= TRANSACTION */
159213
+ 189, /* (340) trans_opt ::= TRANSACTION nm */
159214
+ 191, /* (341) savepoint_opt ::= SAVEPOINT */
159215
+ 191, /* (342) savepoint_opt ::= */
159216
+ 187, /* (343) cmd ::= create_table create_table_args */
159217
+ 198, /* (344) columnlist ::= columnlist COMMA columnname carglist */
159218
+ 198, /* (345) columnlist ::= columnname carglist */
159219
+ 190, /* (346) nm ::= ID|INDEXED */
159220
+ 190, /* (347) nm ::= STRING */
159221
+ 190, /* (348) nm ::= JOIN_KW */
159222
+ 204, /* (349) typetoken ::= typename */
159223
+ 205, /* (350) typename ::= ID|STRING */
159224
+ 206, /* (351) signed ::= plus_num */
159225
+ 206, /* (352) signed ::= minus_num */
159226
+ 203, /* (353) carglist ::= carglist ccons */
159227
+ 203, /* (354) carglist ::= */
159228
+ 211, /* (355) ccons ::= NULL onconf */
159229
+ 211, /* (356) ccons ::= GENERATED ALWAYS AS generated */
159230
+ 211, /* (357) ccons ::= AS generated */
159231
+ 199, /* (358) conslist_opt ::= COMMA conslist */
159232
+ 224, /* (359) conslist ::= conslist tconscomma tcons */
159233
+ 224, /* (360) conslist ::= tcons */
159234
+ 225, /* (361) tconscomma ::= */
159235
+ 229, /* (362) defer_subclause_opt ::= defer_subclause */
159236
+ 231, /* (363) resolvetype ::= raisetype */
159237
+ 235, /* (364) selectnowith ::= oneselect */
159238
+ 236, /* (365) oneselect ::= values */
159239
+ 250, /* (366) sclp ::= selcollist COMMA */
159240
+ 251, /* (367) as ::= ID|STRING */
159241
+ 268, /* (368) returning ::= */
159242
+ 213, /* (369) expr ::= term */
159243
+ 270, /* (370) likeop ::= LIKE_KW|MATCH */
159244
+ 258, /* (371) exprlist ::= nexprlist */
159245
+ 280, /* (372) nmnum ::= plus_num */
159246
+ 280, /* (373) nmnum ::= nm */
159247
+ 280, /* (374) nmnum ::= ON */
159248
+ 280, /* (375) nmnum ::= DELETE */
159249
+ 280, /* (376) nmnum ::= DEFAULT */
159250
+ 207, /* (377) plus_num ::= INTEGER|FLOAT */
159251
+ 285, /* (378) foreach_clause ::= */
159252
+ 285, /* (379) foreach_clause ::= FOR EACH ROW */
159253
+ 288, /* (380) trnm ::= nm */
159254
+ 289, /* (381) tridxby ::= */
159255
+ 290, /* (382) database_kw_opt ::= DATABASE */
159256
+ 290, /* (383) database_kw_opt ::= */
159257
+ 293, /* (384) kwcolumn_opt ::= */
159258
+ 293, /* (385) kwcolumn_opt ::= COLUMNKW */
159259
+ 295, /* (386) vtabarglist ::= vtabarg */
159260
+ 295, /* (387) vtabarglist ::= vtabarglist COMMA vtabarg */
159261
+ 296, /* (388) vtabarg ::= vtabarg vtabargtoken */
159262
+ 299, /* (389) anylist ::= */
159263
+ 299, /* (390) anylist ::= anylist LP anylist RP */
159264
+ 299, /* (391) anylist ::= anylist ANY */
159265
+ 262, /* (392) with ::= */
159002159266
};
159003159267
159004159268
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
159005159269
** of symbols on the right-hand side of that rule. */
159006159270
static const signed char yyRuleInfoNRhs[] = {
@@ -159150,248 +159414,255 @@
159150159414
-2, /* (143) having_opt ::= HAVING expr */
159151159415
0, /* (144) limit_opt ::= */
159152159416
-2, /* (145) limit_opt ::= LIMIT expr */
159153159417
-4, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
159154159418
-4, /* (147) limit_opt ::= LIMIT expr COMMA expr */
159155
- -6, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
159419
+ -6, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
159156159420
0, /* (149) where_opt ::= */
159157159421
-2, /* (150) where_opt ::= WHERE expr */
159158
- -9, /* (151) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt */
159159
- -5, /* (152) setlist ::= setlist COMMA nm EQ expr */
159160
- -7, /* (153) setlist ::= setlist COMMA LP idlist RP EQ expr */
159161
- -3, /* (154) setlist ::= nm EQ expr */
159162
- -5, /* (155) setlist ::= LP idlist RP EQ expr */
159163
- -7, /* (156) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
159164
- -7, /* (157) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
159165
- 0, /* (158) upsert ::= */
159166
- -12, /* (159) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
159167
- -9, /* (160) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
159168
- -4, /* (161) upsert ::= ON CONFLICT DO NOTHING */
159169
- -7, /* (162) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt */
159170
- -2, /* (163) insert_cmd ::= INSERT orconf */
159171
- -1, /* (164) insert_cmd ::= REPLACE */
159172
- 0, /* (165) idlist_opt ::= */
159173
- -3, /* (166) idlist_opt ::= LP idlist RP */
159174
- -3, /* (167) idlist ::= idlist COMMA nm */
159175
- -1, /* (168) idlist ::= nm */
159176
- -3, /* (169) expr ::= LP expr RP */
159177
- -1, /* (170) expr ::= ID|INDEXED */
159178
- -1, /* (171) expr ::= JOIN_KW */
159179
- -3, /* (172) expr ::= nm DOT nm */
159180
- -5, /* (173) expr ::= nm DOT nm DOT nm */
159181
- -1, /* (174) term ::= NULL|FLOAT|BLOB */
159182
- -1, /* (175) term ::= STRING */
159183
- -1, /* (176) term ::= INTEGER */
159184
- -1, /* (177) expr ::= VARIABLE */
159185
- -3, /* (178) expr ::= expr COLLATE ID|STRING */
159186
- -6, /* (179) expr ::= CAST LP expr AS typetoken RP */
159187
- -5, /* (180) expr ::= ID|INDEXED LP distinct exprlist RP */
159188
- -4, /* (181) expr ::= ID|INDEXED LP STAR RP */
159189
- -6, /* (182) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
159190
- -5, /* (183) expr ::= ID|INDEXED LP STAR RP filter_over */
159191
- -1, /* (184) term ::= CTIME_KW */
159192
- -5, /* (185) expr ::= LP nexprlist COMMA expr RP */
159193
- -3, /* (186) expr ::= expr AND expr */
159194
- -3, /* (187) expr ::= expr OR expr */
159195
- -3, /* (188) expr ::= expr LT|GT|GE|LE expr */
159196
- -3, /* (189) expr ::= expr EQ|NE expr */
159197
- -3, /* (190) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
159198
- -3, /* (191) expr ::= expr PLUS|MINUS expr */
159199
- -3, /* (192) expr ::= expr STAR|SLASH|REM expr */
159200
- -3, /* (193) expr ::= expr CONCAT expr */
159201
- -2, /* (194) likeop ::= NOT LIKE_KW|MATCH */
159202
- -3, /* (195) expr ::= expr likeop expr */
159203
- -5, /* (196) expr ::= expr likeop expr ESCAPE expr */
159204
- -2, /* (197) expr ::= expr ISNULL|NOTNULL */
159205
- -3, /* (198) expr ::= expr NOT NULL */
159206
- -3, /* (199) expr ::= expr IS expr */
159207
- -4, /* (200) expr ::= expr IS NOT expr */
159208
- -2, /* (201) expr ::= NOT expr */
159209
- -2, /* (202) expr ::= BITNOT expr */
159210
- -2, /* (203) expr ::= PLUS|MINUS expr */
159211
- -1, /* (204) between_op ::= BETWEEN */
159212
- -2, /* (205) between_op ::= NOT BETWEEN */
159213
- -5, /* (206) expr ::= expr between_op expr AND expr */
159214
- -1, /* (207) in_op ::= IN */
159215
- -2, /* (208) in_op ::= NOT IN */
159216
- -5, /* (209) expr ::= expr in_op LP exprlist RP */
159217
- -3, /* (210) expr ::= LP select RP */
159218
- -5, /* (211) expr ::= expr in_op LP select RP */
159219
- -5, /* (212) expr ::= expr in_op nm dbnm paren_exprlist */
159220
- -4, /* (213) expr ::= EXISTS LP select RP */
159221
- -5, /* (214) expr ::= CASE case_operand case_exprlist case_else END */
159222
- -5, /* (215) case_exprlist ::= case_exprlist WHEN expr THEN expr */
159223
- -4, /* (216) case_exprlist ::= WHEN expr THEN expr */
159224
- -2, /* (217) case_else ::= ELSE expr */
159225
- 0, /* (218) case_else ::= */
159226
- -1, /* (219) case_operand ::= expr */
159227
- 0, /* (220) case_operand ::= */
159228
- 0, /* (221) exprlist ::= */
159229
- -3, /* (222) nexprlist ::= nexprlist COMMA expr */
159230
- -1, /* (223) nexprlist ::= expr */
159231
- 0, /* (224) paren_exprlist ::= */
159232
- -3, /* (225) paren_exprlist ::= LP exprlist RP */
159233
- -12, /* (226) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
159234
- -1, /* (227) uniqueflag ::= UNIQUE */
159235
- 0, /* (228) uniqueflag ::= */
159236
- 0, /* (229) eidlist_opt ::= */
159237
- -3, /* (230) eidlist_opt ::= LP eidlist RP */
159238
- -5, /* (231) eidlist ::= eidlist COMMA nm collate sortorder */
159239
- -3, /* (232) eidlist ::= nm collate sortorder */
159240
- 0, /* (233) collate ::= */
159241
- -2, /* (234) collate ::= COLLATE ID|STRING */
159242
- -4, /* (235) cmd ::= DROP INDEX ifexists fullname */
159243
- -2, /* (236) cmd ::= VACUUM vinto */
159244
- -3, /* (237) cmd ::= VACUUM nm vinto */
159245
- -2, /* (238) vinto ::= INTO expr */
159246
- 0, /* (239) vinto ::= */
159247
- -3, /* (240) cmd ::= PRAGMA nm dbnm */
159248
- -5, /* (241) cmd ::= PRAGMA nm dbnm EQ nmnum */
159249
- -6, /* (242) cmd ::= PRAGMA nm dbnm LP nmnum RP */
159250
- -5, /* (243) cmd ::= PRAGMA nm dbnm EQ minus_num */
159251
- -6, /* (244) cmd ::= PRAGMA nm dbnm LP minus_num RP */
159252
- -2, /* (245) plus_num ::= PLUS INTEGER|FLOAT */
159253
- -2, /* (246) minus_num ::= MINUS INTEGER|FLOAT */
159254
- -5, /* (247) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
159255
- -11, /* (248) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
159256
- -1, /* (249) trigger_time ::= BEFORE|AFTER */
159257
- -2, /* (250) trigger_time ::= INSTEAD OF */
159258
- 0, /* (251) trigger_time ::= */
159259
- -1, /* (252) trigger_event ::= DELETE|INSERT */
159260
- -1, /* (253) trigger_event ::= UPDATE */
159261
- -3, /* (254) trigger_event ::= UPDATE OF idlist */
159262
- 0, /* (255) when_clause ::= */
159263
- -2, /* (256) when_clause ::= WHEN expr */
159264
- -3, /* (257) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
159265
- -2, /* (258) trigger_cmd_list ::= trigger_cmd SEMI */
159266
- -3, /* (259) trnm ::= nm DOT nm */
159267
- -3, /* (260) tridxby ::= INDEXED BY nm */
159268
- -2, /* (261) tridxby ::= NOT INDEXED */
159269
- -9, /* (262) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
159270
- -8, /* (263) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
159271
- -6, /* (264) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
159272
- -3, /* (265) trigger_cmd ::= scanpt select scanpt */
159273
- -4, /* (266) expr ::= RAISE LP IGNORE RP */
159274
- -6, /* (267) expr ::= RAISE LP raisetype COMMA nm RP */
159275
- -1, /* (268) raisetype ::= ROLLBACK */
159276
- -1, /* (269) raisetype ::= ABORT */
159277
- -1, /* (270) raisetype ::= FAIL */
159278
- -4, /* (271) cmd ::= DROP TRIGGER ifexists fullname */
159279
- -6, /* (272) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
159280
- -3, /* (273) cmd ::= DETACH database_kw_opt expr */
159281
- 0, /* (274) key_opt ::= */
159282
- -2, /* (275) key_opt ::= KEY expr */
159283
- -1, /* (276) cmd ::= REINDEX */
159284
- -3, /* (277) cmd ::= REINDEX nm dbnm */
159285
- -1, /* (278) cmd ::= ANALYZE */
159286
- -3, /* (279) cmd ::= ANALYZE nm dbnm */
159287
- -6, /* (280) cmd ::= ALTER TABLE fullname RENAME TO nm */
159288
- -7, /* (281) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
159289
- -1, /* (282) add_column_fullname ::= fullname */
159290
- -8, /* (283) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
159291
- -1, /* (284) cmd ::= create_vtab */
159292
- -4, /* (285) cmd ::= create_vtab LP vtabarglist RP */
159293
- -8, /* (286) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
159294
- 0, /* (287) vtabarg ::= */
159295
- -1, /* (288) vtabargtoken ::= ANY */
159296
- -3, /* (289) vtabargtoken ::= lp anylist RP */
159297
- -1, /* (290) lp ::= LP */
159298
- -2, /* (291) with ::= WITH wqlist */
159299
- -3, /* (292) with ::= WITH RECURSIVE wqlist */
159300
- -6, /* (293) wqlist ::= nm eidlist_opt AS LP select RP */
159301
- -8, /* (294) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
159302
- -1, /* (295) windowdefn_list ::= windowdefn */
159303
- -3, /* (296) windowdefn_list ::= windowdefn_list COMMA windowdefn */
159304
- -5, /* (297) windowdefn ::= nm AS LP window RP */
159305
- -5, /* (298) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
159306
- -6, /* (299) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
159307
- -4, /* (300) window ::= ORDER BY sortlist frame_opt */
159308
- -5, /* (301) window ::= nm ORDER BY sortlist frame_opt */
159309
- -1, /* (302) window ::= frame_opt */
159310
- -2, /* (303) window ::= nm frame_opt */
159311
- 0, /* (304) frame_opt ::= */
159312
- -3, /* (305) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
159313
- -6, /* (306) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
159314
- -1, /* (307) range_or_rows ::= RANGE|ROWS|GROUPS */
159315
- -1, /* (308) frame_bound_s ::= frame_bound */
159316
- -2, /* (309) frame_bound_s ::= UNBOUNDED PRECEDING */
159317
- -1, /* (310) frame_bound_e ::= frame_bound */
159318
- -2, /* (311) frame_bound_e ::= UNBOUNDED FOLLOWING */
159319
- -2, /* (312) frame_bound ::= expr PRECEDING|FOLLOWING */
159320
- -2, /* (313) frame_bound ::= CURRENT ROW */
159321
- 0, /* (314) frame_exclude_opt ::= */
159322
- -2, /* (315) frame_exclude_opt ::= EXCLUDE frame_exclude */
159323
- -2, /* (316) frame_exclude ::= NO OTHERS */
159324
- -2, /* (317) frame_exclude ::= CURRENT ROW */
159325
- -1, /* (318) frame_exclude ::= GROUP|TIES */
159326
- -2, /* (319) window_clause ::= WINDOW windowdefn_list */
159327
- -2, /* (320) filter_over ::= filter_clause over_clause */
159328
- -1, /* (321) filter_over ::= over_clause */
159329
- -1, /* (322) filter_over ::= filter_clause */
159330
- -4, /* (323) over_clause ::= OVER LP window RP */
159331
- -2, /* (324) over_clause ::= OVER nm */
159332
- -5, /* (325) filter_clause ::= FILTER LP WHERE expr RP */
159333
- -1, /* (326) input ::= cmdlist */
159334
- -2, /* (327) cmdlist ::= cmdlist ecmd */
159335
- -1, /* (328) cmdlist ::= ecmd */
159336
- -1, /* (329) ecmd ::= SEMI */
159337
- -2, /* (330) ecmd ::= cmdx SEMI */
159338
- -3, /* (331) ecmd ::= explain cmdx SEMI */
159339
- 0, /* (332) trans_opt ::= */
159340
- -1, /* (333) trans_opt ::= TRANSACTION */
159341
- -2, /* (334) trans_opt ::= TRANSACTION nm */
159342
- -1, /* (335) savepoint_opt ::= SAVEPOINT */
159343
- 0, /* (336) savepoint_opt ::= */
159344
- -2, /* (337) cmd ::= create_table create_table_args */
159345
- -4, /* (338) columnlist ::= columnlist COMMA columnname carglist */
159346
- -2, /* (339) columnlist ::= columnname carglist */
159347
- -1, /* (340) nm ::= ID|INDEXED */
159348
- -1, /* (341) nm ::= STRING */
159349
- -1, /* (342) nm ::= JOIN_KW */
159350
- -1, /* (343) typetoken ::= typename */
159351
- -1, /* (344) typename ::= ID|STRING */
159352
- -1, /* (345) signed ::= plus_num */
159353
- -1, /* (346) signed ::= minus_num */
159354
- -2, /* (347) carglist ::= carglist ccons */
159355
- 0, /* (348) carglist ::= */
159356
- -2, /* (349) ccons ::= NULL onconf */
159357
- -4, /* (350) ccons ::= GENERATED ALWAYS AS generated */
159358
- -2, /* (351) ccons ::= AS generated */
159359
- -2, /* (352) conslist_opt ::= COMMA conslist */
159360
- -3, /* (353) conslist ::= conslist tconscomma tcons */
159361
- -1, /* (354) conslist ::= tcons */
159362
- 0, /* (355) tconscomma ::= */
159363
- -1, /* (356) defer_subclause_opt ::= defer_subclause */
159364
- -1, /* (357) resolvetype ::= raisetype */
159365
- -1, /* (358) selectnowith ::= oneselect */
159366
- -1, /* (359) oneselect ::= values */
159367
- -2, /* (360) sclp ::= selcollist COMMA */
159368
- -1, /* (361) as ::= ID|STRING */
159369
- -1, /* (362) expr ::= term */
159370
- -1, /* (363) likeop ::= LIKE_KW|MATCH */
159371
- -1, /* (364) exprlist ::= nexprlist */
159372
- -1, /* (365) nmnum ::= plus_num */
159373
- -1, /* (366) nmnum ::= nm */
159374
- -1, /* (367) nmnum ::= ON */
159375
- -1, /* (368) nmnum ::= DELETE */
159376
- -1, /* (369) nmnum ::= DEFAULT */
159377
- -1, /* (370) plus_num ::= INTEGER|FLOAT */
159378
- 0, /* (371) foreach_clause ::= */
159379
- -3, /* (372) foreach_clause ::= FOR EACH ROW */
159380
- -1, /* (373) trnm ::= nm */
159381
- 0, /* (374) tridxby ::= */
159382
- -1, /* (375) database_kw_opt ::= DATABASE */
159383
- 0, /* (376) database_kw_opt ::= */
159384
- 0, /* (377) kwcolumn_opt ::= */
159385
- -1, /* (378) kwcolumn_opt ::= COLUMNKW */
159386
- -1, /* (379) vtabarglist ::= vtabarg */
159387
- -3, /* (380) vtabarglist ::= vtabarglist COMMA vtabarg */
159388
- -2, /* (381) vtabarg ::= vtabarg vtabargtoken */
159389
- 0, /* (382) anylist ::= */
159390
- -4, /* (383) anylist ::= anylist LP anylist RP */
159391
- -2, /* (384) anylist ::= anylist ANY */
159392
- 0, /* (385) with ::= */
159422
+ 0, /* (151) where_opt_ret ::= */
159423
+ -2, /* (152) where_opt_ret ::= WHERE expr */
159424
+ -2, /* (153) where_opt_ret ::= RETURNING selcollist */
159425
+ -4, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
159426
+ -9, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
159427
+ -5, /* (156) setlist ::= setlist COMMA nm EQ expr */
159428
+ -7, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
159429
+ -3, /* (158) setlist ::= nm EQ expr */
159430
+ -5, /* (159) setlist ::= LP idlist RP EQ expr */
159431
+ -7, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
159432
+ -8, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
159433
+ 0, /* (162) upsert ::= */
159434
+ -2, /* (163) upsert ::= RETURNING selcollist */
159435
+ -12, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
159436
+ -9, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
159437
+ -5, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
159438
+ -8, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
159439
+ -2, /* (168) returning ::= RETURNING selcollist */
159440
+ -2, /* (169) insert_cmd ::= INSERT orconf */
159441
+ -1, /* (170) insert_cmd ::= REPLACE */
159442
+ 0, /* (171) idlist_opt ::= */
159443
+ -3, /* (172) idlist_opt ::= LP idlist RP */
159444
+ -3, /* (173) idlist ::= idlist COMMA nm */
159445
+ -1, /* (174) idlist ::= nm */
159446
+ -3, /* (175) expr ::= LP expr RP */
159447
+ -1, /* (176) expr ::= ID|INDEXED */
159448
+ -1, /* (177) expr ::= JOIN_KW */
159449
+ -3, /* (178) expr ::= nm DOT nm */
159450
+ -5, /* (179) expr ::= nm DOT nm DOT nm */
159451
+ -1, /* (180) term ::= NULL|FLOAT|BLOB */
159452
+ -1, /* (181) term ::= STRING */
159453
+ -1, /* (182) term ::= INTEGER */
159454
+ -1, /* (183) expr ::= VARIABLE */
159455
+ -3, /* (184) expr ::= expr COLLATE ID|STRING */
159456
+ -6, /* (185) expr ::= CAST LP expr AS typetoken RP */
159457
+ -5, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
159458
+ -4, /* (187) expr ::= ID|INDEXED LP STAR RP */
159459
+ -6, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
159460
+ -5, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
159461
+ -1, /* (190) term ::= CTIME_KW */
159462
+ -5, /* (191) expr ::= LP nexprlist COMMA expr RP */
159463
+ -3, /* (192) expr ::= expr AND expr */
159464
+ -3, /* (193) expr ::= expr OR expr */
159465
+ -3, /* (194) expr ::= expr LT|GT|GE|LE expr */
159466
+ -3, /* (195) expr ::= expr EQ|NE expr */
159467
+ -3, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
159468
+ -3, /* (197) expr ::= expr PLUS|MINUS expr */
159469
+ -3, /* (198) expr ::= expr STAR|SLASH|REM expr */
159470
+ -3, /* (199) expr ::= expr CONCAT expr */
159471
+ -2, /* (200) likeop ::= NOT LIKE_KW|MATCH */
159472
+ -3, /* (201) expr ::= expr likeop expr */
159473
+ -5, /* (202) expr ::= expr likeop expr ESCAPE expr */
159474
+ -2, /* (203) expr ::= expr ISNULL|NOTNULL */
159475
+ -3, /* (204) expr ::= expr NOT NULL */
159476
+ -3, /* (205) expr ::= expr IS expr */
159477
+ -4, /* (206) expr ::= expr IS NOT expr */
159478
+ -2, /* (207) expr ::= NOT expr */
159479
+ -2, /* (208) expr ::= BITNOT expr */
159480
+ -2, /* (209) expr ::= PLUS|MINUS expr */
159481
+ -1, /* (210) between_op ::= BETWEEN */
159482
+ -2, /* (211) between_op ::= NOT BETWEEN */
159483
+ -5, /* (212) expr ::= expr between_op expr AND expr */
159484
+ -1, /* (213) in_op ::= IN */
159485
+ -2, /* (214) in_op ::= NOT IN */
159486
+ -5, /* (215) expr ::= expr in_op LP exprlist RP */
159487
+ -3, /* (216) expr ::= LP select RP */
159488
+ -5, /* (217) expr ::= expr in_op LP select RP */
159489
+ -5, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
159490
+ -4, /* (219) expr ::= EXISTS LP select RP */
159491
+ -5, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
159492
+ -5, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
159493
+ -4, /* (222) case_exprlist ::= WHEN expr THEN expr */
159494
+ -2, /* (223) case_else ::= ELSE expr */
159495
+ 0, /* (224) case_else ::= */
159496
+ -1, /* (225) case_operand ::= expr */
159497
+ 0, /* (226) case_operand ::= */
159498
+ 0, /* (227) exprlist ::= */
159499
+ -3, /* (228) nexprlist ::= nexprlist COMMA expr */
159500
+ -1, /* (229) nexprlist ::= expr */
159501
+ 0, /* (230) paren_exprlist ::= */
159502
+ -3, /* (231) paren_exprlist ::= LP exprlist RP */
159503
+ -12, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
159504
+ -1, /* (233) uniqueflag ::= UNIQUE */
159505
+ 0, /* (234) uniqueflag ::= */
159506
+ 0, /* (235) eidlist_opt ::= */
159507
+ -3, /* (236) eidlist_opt ::= LP eidlist RP */
159508
+ -5, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
159509
+ -3, /* (238) eidlist ::= nm collate sortorder */
159510
+ 0, /* (239) collate ::= */
159511
+ -2, /* (240) collate ::= COLLATE ID|STRING */
159512
+ -4, /* (241) cmd ::= DROP INDEX ifexists fullname */
159513
+ -2, /* (242) cmd ::= VACUUM vinto */
159514
+ -3, /* (243) cmd ::= VACUUM nm vinto */
159515
+ -2, /* (244) vinto ::= INTO expr */
159516
+ 0, /* (245) vinto ::= */
159517
+ -3, /* (246) cmd ::= PRAGMA nm dbnm */
159518
+ -5, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
159519
+ -6, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
159520
+ -5, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
159521
+ -6, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
159522
+ -2, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
159523
+ -2, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
159524
+ -5, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
159525
+ -11, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
159526
+ -1, /* (255) trigger_time ::= BEFORE|AFTER */
159527
+ -2, /* (256) trigger_time ::= INSTEAD OF */
159528
+ 0, /* (257) trigger_time ::= */
159529
+ -1, /* (258) trigger_event ::= DELETE|INSERT */
159530
+ -1, /* (259) trigger_event ::= UPDATE */
159531
+ -3, /* (260) trigger_event ::= UPDATE OF idlist */
159532
+ 0, /* (261) when_clause ::= */
159533
+ -2, /* (262) when_clause ::= WHEN expr */
159534
+ -3, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
159535
+ -2, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
159536
+ -3, /* (265) trnm ::= nm DOT nm */
159537
+ -3, /* (266) tridxby ::= INDEXED BY nm */
159538
+ -2, /* (267) tridxby ::= NOT INDEXED */
159539
+ -9, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
159540
+ -8, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
159541
+ -6, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
159542
+ -3, /* (271) trigger_cmd ::= scanpt select scanpt */
159543
+ -4, /* (272) expr ::= RAISE LP IGNORE RP */
159544
+ -6, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
159545
+ -1, /* (274) raisetype ::= ROLLBACK */
159546
+ -1, /* (275) raisetype ::= ABORT */
159547
+ -1, /* (276) raisetype ::= FAIL */
159548
+ -4, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
159549
+ -6, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
159550
+ -3, /* (279) cmd ::= DETACH database_kw_opt expr */
159551
+ 0, /* (280) key_opt ::= */
159552
+ -2, /* (281) key_opt ::= KEY expr */
159553
+ -1, /* (282) cmd ::= REINDEX */
159554
+ -3, /* (283) cmd ::= REINDEX nm dbnm */
159555
+ -1, /* (284) cmd ::= ANALYZE */
159556
+ -3, /* (285) cmd ::= ANALYZE nm dbnm */
159557
+ -6, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
159558
+ -7, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
159559
+ -1, /* (288) add_column_fullname ::= fullname */
159560
+ -8, /* (289) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
159561
+ -1, /* (290) cmd ::= create_vtab */
159562
+ -4, /* (291) cmd ::= create_vtab LP vtabarglist RP */
159563
+ -8, /* (292) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
159564
+ 0, /* (293) vtabarg ::= */
159565
+ -1, /* (294) vtabargtoken ::= ANY */
159566
+ -3, /* (295) vtabargtoken ::= lp anylist RP */
159567
+ -1, /* (296) lp ::= LP */
159568
+ -2, /* (297) with ::= WITH wqlist */
159569
+ -3, /* (298) with ::= WITH RECURSIVE wqlist */
159570
+ -6, /* (299) wqlist ::= nm eidlist_opt AS LP select RP */
159571
+ -8, /* (300) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
159572
+ -1, /* (301) windowdefn_list ::= windowdefn */
159573
+ -3, /* (302) windowdefn_list ::= windowdefn_list COMMA windowdefn */
159574
+ -5, /* (303) windowdefn ::= nm AS LP window RP */
159575
+ -5, /* (304) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
159576
+ -6, /* (305) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
159577
+ -4, /* (306) window ::= ORDER BY sortlist frame_opt */
159578
+ -5, /* (307) window ::= nm ORDER BY sortlist frame_opt */
159579
+ -1, /* (308) window ::= frame_opt */
159580
+ -2, /* (309) window ::= nm frame_opt */
159581
+ 0, /* (310) frame_opt ::= */
159582
+ -3, /* (311) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
159583
+ -6, /* (312) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
159584
+ -1, /* (313) range_or_rows ::= RANGE|ROWS|GROUPS */
159585
+ -1, /* (314) frame_bound_s ::= frame_bound */
159586
+ -2, /* (315) frame_bound_s ::= UNBOUNDED PRECEDING */
159587
+ -1, /* (316) frame_bound_e ::= frame_bound */
159588
+ -2, /* (317) frame_bound_e ::= UNBOUNDED FOLLOWING */
159589
+ -2, /* (318) frame_bound ::= expr PRECEDING|FOLLOWING */
159590
+ -2, /* (319) frame_bound ::= CURRENT ROW */
159591
+ 0, /* (320) frame_exclude_opt ::= */
159592
+ -2, /* (321) frame_exclude_opt ::= EXCLUDE frame_exclude */
159593
+ -2, /* (322) frame_exclude ::= NO OTHERS */
159594
+ -2, /* (323) frame_exclude ::= CURRENT ROW */
159595
+ -1, /* (324) frame_exclude ::= GROUP|TIES */
159596
+ -2, /* (325) window_clause ::= WINDOW windowdefn_list */
159597
+ -2, /* (326) filter_over ::= filter_clause over_clause */
159598
+ -1, /* (327) filter_over ::= over_clause */
159599
+ -1, /* (328) filter_over ::= filter_clause */
159600
+ -4, /* (329) over_clause ::= OVER LP window RP */
159601
+ -2, /* (330) over_clause ::= OVER nm */
159602
+ -5, /* (331) filter_clause ::= FILTER LP WHERE expr RP */
159603
+ -1, /* (332) input ::= cmdlist */
159604
+ -2, /* (333) cmdlist ::= cmdlist ecmd */
159605
+ -1, /* (334) cmdlist ::= ecmd */
159606
+ -1, /* (335) ecmd ::= SEMI */
159607
+ -2, /* (336) ecmd ::= cmdx SEMI */
159608
+ -3, /* (337) ecmd ::= explain cmdx SEMI */
159609
+ 0, /* (338) trans_opt ::= */
159610
+ -1, /* (339) trans_opt ::= TRANSACTION */
159611
+ -2, /* (340) trans_opt ::= TRANSACTION nm */
159612
+ -1, /* (341) savepoint_opt ::= SAVEPOINT */
159613
+ 0, /* (342) savepoint_opt ::= */
159614
+ -2, /* (343) cmd ::= create_table create_table_args */
159615
+ -4, /* (344) columnlist ::= columnlist COMMA columnname carglist */
159616
+ -2, /* (345) columnlist ::= columnname carglist */
159617
+ -1, /* (346) nm ::= ID|INDEXED */
159618
+ -1, /* (347) nm ::= STRING */
159619
+ -1, /* (348) nm ::= JOIN_KW */
159620
+ -1, /* (349) typetoken ::= typename */
159621
+ -1, /* (350) typename ::= ID|STRING */
159622
+ -1, /* (351) signed ::= plus_num */
159623
+ -1, /* (352) signed ::= minus_num */
159624
+ -2, /* (353) carglist ::= carglist ccons */
159625
+ 0, /* (354) carglist ::= */
159626
+ -2, /* (355) ccons ::= NULL onconf */
159627
+ -4, /* (356) ccons ::= GENERATED ALWAYS AS generated */
159628
+ -2, /* (357) ccons ::= AS generated */
159629
+ -2, /* (358) conslist_opt ::= COMMA conslist */
159630
+ -3, /* (359) conslist ::= conslist tconscomma tcons */
159631
+ -1, /* (360) conslist ::= tcons */
159632
+ 0, /* (361) tconscomma ::= */
159633
+ -1, /* (362) defer_subclause_opt ::= defer_subclause */
159634
+ -1, /* (363) resolvetype ::= raisetype */
159635
+ -1, /* (364) selectnowith ::= oneselect */
159636
+ -1, /* (365) oneselect ::= values */
159637
+ -2, /* (366) sclp ::= selcollist COMMA */
159638
+ -1, /* (367) as ::= ID|STRING */
159639
+ 0, /* (368) returning ::= */
159640
+ -1, /* (369) expr ::= term */
159641
+ -1, /* (370) likeop ::= LIKE_KW|MATCH */
159642
+ -1, /* (371) exprlist ::= nexprlist */
159643
+ -1, /* (372) nmnum ::= plus_num */
159644
+ -1, /* (373) nmnum ::= nm */
159645
+ -1, /* (374) nmnum ::= ON */
159646
+ -1, /* (375) nmnum ::= DELETE */
159647
+ -1, /* (376) nmnum ::= DEFAULT */
159648
+ -1, /* (377) plus_num ::= INTEGER|FLOAT */
159649
+ 0, /* (378) foreach_clause ::= */
159650
+ -3, /* (379) foreach_clause ::= FOR EACH ROW */
159651
+ -1, /* (380) trnm ::= nm */
159652
+ 0, /* (381) tridxby ::= */
159653
+ -1, /* (382) database_kw_opt ::= DATABASE */
159654
+ 0, /* (383) database_kw_opt ::= */
159655
+ 0, /* (384) kwcolumn_opt ::= */
159656
+ -1, /* (385) kwcolumn_opt ::= COLUMNKW */
159657
+ -1, /* (386) vtabarglist ::= vtabarg */
159658
+ -3, /* (387) vtabarglist ::= vtabarglist COMMA vtabarg */
159659
+ -2, /* (388) vtabarg ::= vtabarg vtabargtoken */
159660
+ 0, /* (389) anylist ::= */
159661
+ -4, /* (390) anylist ::= anylist LP anylist RP */
159662
+ -2, /* (391) anylist ::= anylist ANY */
159663
+ 0, /* (392) with ::= */
159393159664
};
159394159665
159395159666
static void yy_accept(yyParser*); /* Forward Declaration */
159396159667
159397159668
/*
@@ -159439,20 +159710,20 @@
159439159710
break;
159440159711
case 2: /* cmdx ::= cmd */
159441159712
{ sqlite3FinishCoding(pParse); }
159442159713
break;
159443159714
case 3: /* cmd ::= BEGIN transtype trans_opt */
159444
-{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy192);}
159715
+{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy412);}
159445159716
break;
159446159717
case 4: /* transtype ::= */
159447
-{yymsp[1].minor.yy192 = TK_DEFERRED;}
159718
+{yymsp[1].minor.yy412 = TK_DEFERRED;}
159448159719
break;
159449159720
case 5: /* transtype ::= DEFERRED */
159450159721
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
159451159722
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
159452
- case 307: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==307);
159453
-{yymsp[0].minor.yy192 = yymsp[0].major; /*A-overwrites-X*/}
159723
+ case 313: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==313);
159724
+{yymsp[0].minor.yy412 = yymsp[0].major; /*A-overwrites-X*/}
159454159725
break;
159455159726
case 8: /* cmd ::= COMMIT|END trans_opt */
159456159727
case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
159457159728
{sqlite3EndTransaction(pParse,yymsp[-1].major);}
159458159729
break;
@@ -159471,11 +159742,11 @@
159471159742
sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
159472159743
}
159473159744
break;
159474159745
case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
159475159746
{
159476
- sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy192,0,0,yymsp[-2].minor.yy192);
159747
+ sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy412,0,0,yymsp[-2].minor.yy412);
159477159748
}
159478159749
break;
159479159750
case 14: /* createkw ::= CREATE */
159480159751
{disableLookaside(pParse);}
159481159752
break;
@@ -159485,37 +159756,37 @@
159485159756
case 45: /* autoinc ::= */ yytestcase(yyruleno==45);
159486159757
case 60: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==60);
159487159758
case 70: /* defer_subclause_opt ::= */ yytestcase(yyruleno==70);
159488159759
case 79: /* ifexists ::= */ yytestcase(yyruleno==79);
159489159760
case 96: /* distinct ::= */ yytestcase(yyruleno==96);
159490
- case 233: /* collate ::= */ yytestcase(yyruleno==233);
159491
-{yymsp[1].minor.yy192 = 0;}
159761
+ case 239: /* collate ::= */ yytestcase(yyruleno==239);
159762
+{yymsp[1].minor.yy412 = 0;}
159492159763
break;
159493159764
case 16: /* ifnotexists ::= IF NOT EXISTS */
159494
-{yymsp[-2].minor.yy192 = 1;}
159765
+{yymsp[-2].minor.yy412 = 1;}
159495159766
break;
159496159767
case 17: /* temp ::= TEMP */
159497159768
case 46: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==46);
159498
-{yymsp[0].minor.yy192 = 1;}
159769
+{yymsp[0].minor.yy412 = 1;}
159499159770
break;
159500159771
case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
159501159772
{
159502
- sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy192,0);
159773
+ sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy412,0);
159503159774
}
159504159775
break;
159505159776
case 20: /* create_table_args ::= AS select */
159506159777
{
159507
- sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy539);
159508
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy539);
159778
+ sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy293);
159779
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy293);
159509159780
}
159510159781
break;
159511159782
case 22: /* table_options ::= WITHOUT nm */
159512159783
{
159513159784
if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
159514
- yymsp[-1].minor.yy192 = TF_WithoutRowid | TF_NoVisibleRowid;
159785
+ yymsp[-1].minor.yy412 = TF_WithoutRowid | TF_NoVisibleRowid;
159515159786
}else{
159516
- yymsp[-1].minor.yy192 = 0;
159787
+ yymsp[-1].minor.yy412 = 0;
159517159788
sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
159518159789
}
159519159790
}
159520159791
break;
159521159792
case 23: /* columnname ::= nm typetoken */
@@ -159540,11 +159811,11 @@
159540159811
{yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
159541159812
break;
159542159813
case 28: /* scanpt ::= */
159543159814
{
159544159815
assert( yyLookahead!=YYNOCODE );
159545
- yymsp[1].minor.yy436 = yyLookaheadToken.z;
159816
+ yymsp[1].minor.yy504 = yyLookaheadToken.z;
159546159817
}
159547159818
break;
159548159819
case 29: /* scantok ::= */
159549159820
{
159550159821
assert( yyLookahead!=YYNOCODE );
@@ -159554,21 +159825,21 @@
159554159825
case 30: /* ccons ::= CONSTRAINT nm */
159555159826
case 65: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==65);
159556159827
{pParse->constraintName = yymsp[0].minor.yy0;}
159557159828
break;
159558159829
case 31: /* ccons ::= DEFAULT scantok term */
159559
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy202,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
159830
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy354,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
159560159831
break;
159561159832
case 32: /* ccons ::= DEFAULT LP expr RP */
159562
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy202,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
159833
+{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy354,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
159563159834
break;
159564159835
case 33: /* ccons ::= DEFAULT PLUS scantok term */
159565
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy202,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
159836
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy354,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
159566159837
break;
159567159838
case 34: /* ccons ::= DEFAULT MINUS scantok term */
159568159839
{
159569
- Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy202, 0);
159840
+ Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy354, 0);
159570159841
sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
159571159842
}
159572159843
break;
159573159844
case 35: /* ccons ::= DEFAULT scantok ID|INDEXED */
159574159845
{
@@ -159579,323 +159850,323 @@
159579159850
}
159580159851
sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
159581159852
}
159582159853
break;
159583159854
case 36: /* ccons ::= NOT NULL onconf */
159584
-{sqlite3AddNotNull(pParse, yymsp[0].minor.yy192);}
159855
+{sqlite3AddNotNull(pParse, yymsp[0].minor.yy412);}
159585159856
break;
159586159857
case 37: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
159587
-{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy192,yymsp[0].minor.yy192,yymsp[-2].minor.yy192);}
159858
+{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy412,yymsp[0].minor.yy412,yymsp[-2].minor.yy412);}
159588159859
break;
159589159860
case 38: /* ccons ::= UNIQUE onconf */
159590
-{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy192,0,0,0,0,
159861
+{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy412,0,0,0,0,
159591159862
SQLITE_IDXTYPE_UNIQUE);}
159592159863
break;
159593159864
case 39: /* ccons ::= CHECK LP expr RP */
159594
-{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy202,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
159865
+{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy354,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
159595159866
break;
159596159867
case 40: /* ccons ::= REFERENCES nm eidlist_opt refargs */
159597
-{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy242,yymsp[0].minor.yy192);}
159868
+{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy350,yymsp[0].minor.yy412);}
159598159869
break;
159599159870
case 41: /* ccons ::= defer_subclause */
159600
-{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy192);}
159871
+{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy412);}
159601159872
break;
159602159873
case 42: /* ccons ::= COLLATE ID|STRING */
159603159874
{sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
159604159875
break;
159605159876
case 43: /* generated ::= LP expr RP */
159606
-{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy202,0);}
159877
+{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy354,0);}
159607159878
break;
159608159879
case 44: /* generated ::= LP expr RP ID */
159609
-{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy202,&yymsp[0].minor.yy0);}
159880
+{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy354,&yymsp[0].minor.yy0);}
159610159881
break;
159611159882
case 47: /* refargs ::= */
159612
-{ yymsp[1].minor.yy192 = OE_None*0x0101; /* EV: R-19803-45884 */}
159883
+{ yymsp[1].minor.yy412 = OE_None*0x0101; /* EV: R-19803-45884 */}
159613159884
break;
159614159885
case 48: /* refargs ::= refargs refarg */
159615
-{ yymsp[-1].minor.yy192 = (yymsp[-1].minor.yy192 & ~yymsp[0].minor.yy207.mask) | yymsp[0].minor.yy207.value; }
159886
+{ yymsp[-1].minor.yy412 = (yymsp[-1].minor.yy412 & ~yymsp[0].minor.yy463.mask) | yymsp[0].minor.yy463.value; }
159616159887
break;
159617159888
case 49: /* refarg ::= MATCH nm */
159618
-{ yymsp[-1].minor.yy207.value = 0; yymsp[-1].minor.yy207.mask = 0x000000; }
159889
+{ yymsp[-1].minor.yy463.value = 0; yymsp[-1].minor.yy463.mask = 0x000000; }
159619159890
break;
159620159891
case 50: /* refarg ::= ON INSERT refact */
159621
-{ yymsp[-2].minor.yy207.value = 0; yymsp[-2].minor.yy207.mask = 0x000000; }
159892
+{ yymsp[-2].minor.yy463.value = 0; yymsp[-2].minor.yy463.mask = 0x000000; }
159622159893
break;
159623159894
case 51: /* refarg ::= ON DELETE refact */
159624
-{ yymsp[-2].minor.yy207.value = yymsp[0].minor.yy192; yymsp[-2].minor.yy207.mask = 0x0000ff; }
159895
+{ yymsp[-2].minor.yy463.value = yymsp[0].minor.yy412; yymsp[-2].minor.yy463.mask = 0x0000ff; }
159625159896
break;
159626159897
case 52: /* refarg ::= ON UPDATE refact */
159627
-{ yymsp[-2].minor.yy207.value = yymsp[0].minor.yy192<<8; yymsp[-2].minor.yy207.mask = 0x00ff00; }
159898
+{ yymsp[-2].minor.yy463.value = yymsp[0].minor.yy412<<8; yymsp[-2].minor.yy463.mask = 0x00ff00; }
159628159899
break;
159629159900
case 53: /* refact ::= SET NULL */
159630
-{ yymsp[-1].minor.yy192 = OE_SetNull; /* EV: R-33326-45252 */}
159901
+{ yymsp[-1].minor.yy412 = OE_SetNull; /* EV: R-33326-45252 */}
159631159902
break;
159632159903
case 54: /* refact ::= SET DEFAULT */
159633
-{ yymsp[-1].minor.yy192 = OE_SetDflt; /* EV: R-33326-45252 */}
159904
+{ yymsp[-1].minor.yy412 = OE_SetDflt; /* EV: R-33326-45252 */}
159634159905
break;
159635159906
case 55: /* refact ::= CASCADE */
159636
-{ yymsp[0].minor.yy192 = OE_Cascade; /* EV: R-33326-45252 */}
159907
+{ yymsp[0].minor.yy412 = OE_Cascade; /* EV: R-33326-45252 */}
159637159908
break;
159638159909
case 56: /* refact ::= RESTRICT */
159639
-{ yymsp[0].minor.yy192 = OE_Restrict; /* EV: R-33326-45252 */}
159910
+{ yymsp[0].minor.yy412 = OE_Restrict; /* EV: R-33326-45252 */}
159640159911
break;
159641159912
case 57: /* refact ::= NO ACTION */
159642
-{ yymsp[-1].minor.yy192 = OE_None; /* EV: R-33326-45252 */}
159913
+{ yymsp[-1].minor.yy412 = OE_None; /* EV: R-33326-45252 */}
159643159914
break;
159644159915
case 58: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
159645
-{yymsp[-2].minor.yy192 = 0;}
159916
+{yymsp[-2].minor.yy412 = 0;}
159646159917
break;
159647159918
case 59: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
159648159919
case 74: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==74);
159649
- case 163: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==163);
159650
-{yymsp[-1].minor.yy192 = yymsp[0].minor.yy192;}
159920
+ case 169: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==169);
159921
+{yymsp[-1].minor.yy412 = yymsp[0].minor.yy412;}
159651159922
break;
159652159923
case 61: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
159653159924
case 78: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==78);
159654
- case 205: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==205);
159655
- case 208: /* in_op ::= NOT IN */ yytestcase(yyruleno==208);
159656
- case 234: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==234);
159657
-{yymsp[-1].minor.yy192 = 1;}
159925
+ case 211: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==211);
159926
+ case 214: /* in_op ::= NOT IN */ yytestcase(yyruleno==214);
159927
+ case 240: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==240);
159928
+{yymsp[-1].minor.yy412 = 1;}
159658159929
break;
159659159930
case 62: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
159660
-{yymsp[-1].minor.yy192 = 0;}
159931
+{yymsp[-1].minor.yy412 = 0;}
159661159932
break;
159662159933
case 64: /* tconscomma ::= COMMA */
159663159934
{pParse->constraintName.n = 0;}
159664159935
break;
159665159936
case 66: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
159666
-{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy242,yymsp[0].minor.yy192,yymsp[-2].minor.yy192,0);}
159937
+{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy350,yymsp[0].minor.yy412,yymsp[-2].minor.yy412,0);}
159667159938
break;
159668159939
case 67: /* tcons ::= UNIQUE LP sortlist RP onconf */
159669
-{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy242,yymsp[0].minor.yy192,0,0,0,0,
159940
+{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy350,yymsp[0].minor.yy412,0,0,0,0,
159670159941
SQLITE_IDXTYPE_UNIQUE);}
159671159942
break;
159672159943
case 68: /* tcons ::= CHECK LP expr RP onconf */
159673
-{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy202,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
159944
+{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy354,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
159674159945
break;
159675159946
case 69: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
159676159947
{
159677
- sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy242, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy242, yymsp[-1].minor.yy192);
159678
- sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy192);
159948
+ sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy350, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy350, yymsp[-1].minor.yy412);
159949
+ sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy412);
159679159950
}
159680159951
break;
159681159952
case 71: /* onconf ::= */
159682159953
case 73: /* orconf ::= */ yytestcase(yyruleno==73);
159683
-{yymsp[1].minor.yy192 = OE_Default;}
159954
+{yymsp[1].minor.yy412 = OE_Default;}
159684159955
break;
159685159956
case 72: /* onconf ::= ON CONFLICT resolvetype */
159686
-{yymsp[-2].minor.yy192 = yymsp[0].minor.yy192;}
159957
+{yymsp[-2].minor.yy412 = yymsp[0].minor.yy412;}
159687159958
break;
159688159959
case 75: /* resolvetype ::= IGNORE */
159689
-{yymsp[0].minor.yy192 = OE_Ignore;}
159960
+{yymsp[0].minor.yy412 = OE_Ignore;}
159690159961
break;
159691159962
case 76: /* resolvetype ::= REPLACE */
159692
- case 164: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==164);
159693
-{yymsp[0].minor.yy192 = OE_Replace;}
159963
+ case 170: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==170);
159964
+{yymsp[0].minor.yy412 = OE_Replace;}
159694159965
break;
159695159966
case 77: /* cmd ::= DROP TABLE ifexists fullname */
159696159967
{
159697
- sqlite3DropTable(pParse, yymsp[0].minor.yy47, 0, yymsp[-1].minor.yy192);
159968
+ sqlite3DropTable(pParse, yymsp[0].minor.yy457, 0, yymsp[-1].minor.yy412);
159698159969
}
159699159970
break;
159700159971
case 80: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
159701159972
{
159702
- sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy242, yymsp[0].minor.yy539, yymsp[-7].minor.yy192, yymsp[-5].minor.yy192);
159973
+ sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy350, yymsp[0].minor.yy293, yymsp[-7].minor.yy412, yymsp[-5].minor.yy412);
159703159974
}
159704159975
break;
159705159976
case 81: /* cmd ::= DROP VIEW ifexists fullname */
159706159977
{
159707
- sqlite3DropTable(pParse, yymsp[0].minor.yy47, 1, yymsp[-1].minor.yy192);
159978
+ sqlite3DropTable(pParse, yymsp[0].minor.yy457, 1, yymsp[-1].minor.yy412);
159708159979
}
159709159980
break;
159710159981
case 82: /* cmd ::= select */
159711159982
{
159712159983
SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
159713
- sqlite3Select(pParse, yymsp[0].minor.yy539, &dest);
159714
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy539);
159984
+ sqlite3Select(pParse, yymsp[0].minor.yy293, &dest);
159985
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy293);
159715159986
}
159716159987
break;
159717159988
case 83: /* select ::= WITH wqlist selectnowith */
159718159989
{
159719
- Select *p = yymsp[0].minor.yy539;
159990
+ Select *p = yymsp[0].minor.yy293;
159720159991
if( p ){
159721
- p->pWith = yymsp[-1].minor.yy131;
159992
+ p->pWith = yymsp[-1].minor.yy105;
159722159993
parserDoubleLinkSelect(pParse, p);
159723159994
}else{
159724
- sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy131);
159995
+ sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy105);
159725159996
}
159726
- yymsp[-2].minor.yy539 = p;
159997
+ yymsp[-2].minor.yy293 = p;
159727159998
}
159728159999
break;
159729160000
case 84: /* select ::= WITH RECURSIVE wqlist selectnowith */
159730160001
{
159731
- Select *p = yymsp[0].minor.yy539;
160002
+ Select *p = yymsp[0].minor.yy293;
159732160003
if( p ){
159733
- p->pWith = yymsp[-1].minor.yy131;
160004
+ p->pWith = yymsp[-1].minor.yy105;
159734160005
parserDoubleLinkSelect(pParse, p);
159735160006
}else{
159736
- sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy131);
160007
+ sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy105);
159737160008
}
159738
- yymsp[-3].minor.yy539 = p;
160009
+ yymsp[-3].minor.yy293 = p;
159739160010
}
159740160011
break;
159741160012
case 85: /* select ::= selectnowith */
159742160013
{
159743
- Select *p = yymsp[0].minor.yy539;
160014
+ Select *p = yymsp[0].minor.yy293;
159744160015
if( p ){
159745160016
parserDoubleLinkSelect(pParse, p);
159746160017
}
159747
- yymsp[0].minor.yy539 = p; /*A-overwrites-X*/
160018
+ yymsp[0].minor.yy293 = p; /*A-overwrites-X*/
159748160019
}
159749160020
break;
159750160021
case 86: /* selectnowith ::= selectnowith multiselect_op oneselect */
159751160022
{
159752
- Select *pRhs = yymsp[0].minor.yy539;
159753
- Select *pLhs = yymsp[-2].minor.yy539;
160023
+ Select *pRhs = yymsp[0].minor.yy293;
160024
+ Select *pLhs = yymsp[-2].minor.yy293;
159754160025
if( pRhs && pRhs->pPrior ){
159755160026
SrcList *pFrom;
159756160027
Token x;
159757160028
x.n = 0;
159758160029
parserDoubleLinkSelect(pParse, pRhs);
159759160030
pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
159760160031
pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
159761160032
}
159762160033
if( pRhs ){
159763
- pRhs->op = (u8)yymsp[-1].minor.yy192;
160034
+ pRhs->op = (u8)yymsp[-1].minor.yy412;
159764160035
pRhs->pPrior = pLhs;
159765160036
if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
159766160037
pRhs->selFlags &= ~SF_MultiValue;
159767
- if( yymsp[-1].minor.yy192!=TK_ALL ) pParse->hasCompound = 1;
160038
+ if( yymsp[-1].minor.yy412!=TK_ALL ) pParse->hasCompound = 1;
159768160039
}else{
159769160040
sqlite3SelectDelete(pParse->db, pLhs);
159770160041
}
159771
- yymsp[-2].minor.yy539 = pRhs;
160042
+ yymsp[-2].minor.yy293 = pRhs;
159772160043
}
159773160044
break;
159774160045
case 87: /* multiselect_op ::= UNION */
159775160046
case 89: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==89);
159776
-{yymsp[0].minor.yy192 = yymsp[0].major; /*A-overwrites-OP*/}
160047
+{yymsp[0].minor.yy412 = yymsp[0].major; /*A-overwrites-OP*/}
159777160048
break;
159778160049
case 88: /* multiselect_op ::= UNION ALL */
159779
-{yymsp[-1].minor.yy192 = TK_ALL;}
160050
+{yymsp[-1].minor.yy412 = TK_ALL;}
159780160051
break;
159781160052
case 90: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
159782160053
{
159783
- yymsp[-8].minor.yy539 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy242,yymsp[-5].minor.yy47,yymsp[-4].minor.yy202,yymsp[-3].minor.yy242,yymsp[-2].minor.yy202,yymsp[-1].minor.yy242,yymsp[-7].minor.yy192,yymsp[0].minor.yy202);
160054
+ yymsp[-8].minor.yy293 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy350,yymsp[-5].minor.yy457,yymsp[-4].minor.yy354,yymsp[-3].minor.yy350,yymsp[-2].minor.yy354,yymsp[-1].minor.yy350,yymsp[-7].minor.yy412,yymsp[0].minor.yy354);
159784160055
}
159785160056
break;
159786160057
case 91: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
159787160058
{
159788
- yymsp[-9].minor.yy539 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy242,yymsp[-6].minor.yy47,yymsp[-5].minor.yy202,yymsp[-4].minor.yy242,yymsp[-3].minor.yy202,yymsp[-1].minor.yy242,yymsp[-8].minor.yy192,yymsp[0].minor.yy202);
159789
- if( yymsp[-9].minor.yy539 ){
159790
- yymsp[-9].minor.yy539->pWinDefn = yymsp[-2].minor.yy303;
160059
+ yymsp[-9].minor.yy293 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy350,yymsp[-6].minor.yy457,yymsp[-5].minor.yy354,yymsp[-4].minor.yy350,yymsp[-3].minor.yy354,yymsp[-1].minor.yy350,yymsp[-8].minor.yy412,yymsp[0].minor.yy354);
160060
+ if( yymsp[-9].minor.yy293 ){
160061
+ yymsp[-9].minor.yy293->pWinDefn = yymsp[-2].minor.yy503;
159791160062
}else{
159792
- sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy303);
160063
+ sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy503);
159793160064
}
159794160065
}
159795160066
break;
159796160067
case 92: /* values ::= VALUES LP nexprlist RP */
159797160068
{
159798
- yymsp[-3].minor.yy539 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy242,0,0,0,0,0,SF_Values,0);
160069
+ yymsp[-3].minor.yy293 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy350,0,0,0,0,0,SF_Values,0);
159799160070
}
159800160071
break;
159801160072
case 93: /* values ::= values COMMA LP nexprlist RP */
159802160073
{
159803
- Select *pRight, *pLeft = yymsp[-4].minor.yy539;
159804
- pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy242,0,0,0,0,0,SF_Values|SF_MultiValue,0);
160074
+ Select *pRight, *pLeft = yymsp[-4].minor.yy293;
160075
+ pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy350,0,0,0,0,0,SF_Values|SF_MultiValue,0);
159805160076
if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
159806160077
if( pRight ){
159807160078
pRight->op = TK_ALL;
159808160079
pRight->pPrior = pLeft;
159809
- yymsp[-4].minor.yy539 = pRight;
160080
+ yymsp[-4].minor.yy293 = pRight;
159810160081
}else{
159811
- yymsp[-4].minor.yy539 = pLeft;
160082
+ yymsp[-4].minor.yy293 = pLeft;
159812160083
}
159813160084
}
159814160085
break;
159815160086
case 94: /* distinct ::= DISTINCT */
159816
-{yymsp[0].minor.yy192 = SF_Distinct;}
160087
+{yymsp[0].minor.yy412 = SF_Distinct;}
159817160088
break;
159818160089
case 95: /* distinct ::= ALL */
159819
-{yymsp[0].minor.yy192 = SF_All;}
160090
+{yymsp[0].minor.yy412 = SF_All;}
159820160091
break;
159821160092
case 97: /* sclp ::= */
159822160093
case 130: /* orderby_opt ::= */ yytestcase(yyruleno==130);
159823160094
case 140: /* groupby_opt ::= */ yytestcase(yyruleno==140);
159824
- case 221: /* exprlist ::= */ yytestcase(yyruleno==221);
159825
- case 224: /* paren_exprlist ::= */ yytestcase(yyruleno==224);
159826
- case 229: /* eidlist_opt ::= */ yytestcase(yyruleno==229);
159827
-{yymsp[1].minor.yy242 = 0;}
160095
+ case 227: /* exprlist ::= */ yytestcase(yyruleno==227);
160096
+ case 230: /* paren_exprlist ::= */ yytestcase(yyruleno==230);
160097
+ case 235: /* eidlist_opt ::= */ yytestcase(yyruleno==235);
160098
+{yymsp[1].minor.yy350 = 0;}
159828160099
break;
159829160100
case 98: /* selcollist ::= sclp scanpt expr scanpt as */
159830160101
{
159831
- yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy242, yymsp[-2].minor.yy202);
159832
- if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy242, &yymsp[0].minor.yy0, 1);
159833
- sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy242,yymsp[-3].minor.yy436,yymsp[-1].minor.yy436);
160102
+ yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy350, yymsp[-2].minor.yy354);
160103
+ if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy350, &yymsp[0].minor.yy0, 1);
160104
+ sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy350,yymsp[-3].minor.yy504,yymsp[-1].minor.yy504);
159834160105
}
159835160106
break;
159836160107
case 99: /* selcollist ::= sclp scanpt STAR */
159837160108
{
159838160109
Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
159839
- yymsp[-2].minor.yy242 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy242, p);
160110
+ yymsp[-2].minor.yy350 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy350, p);
159840160111
}
159841160112
break;
159842160113
case 100: /* selcollist ::= sclp scanpt nm DOT STAR */
159843160114
{
159844160115
Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
159845160116
Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
159846160117
Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
159847
- yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy242, pDot);
160118
+ yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy350, pDot);
159848160119
}
159849160120
break;
159850160121
case 101: /* as ::= AS nm */
159851160122
case 112: /* dbnm ::= DOT nm */ yytestcase(yyruleno==112);
159852
- case 245: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==245);
159853
- case 246: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==246);
160123
+ case 251: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==251);
160124
+ case 252: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==252);
159854160125
{yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
159855160126
break;
159856160127
case 103: /* from ::= */
159857160128
case 106: /* stl_prefix ::= */ yytestcase(yyruleno==106);
159858
-{yymsp[1].minor.yy47 = 0;}
160129
+{yymsp[1].minor.yy457 = 0;}
159859160130
break;
159860160131
case 104: /* from ::= FROM seltablist */
159861160132
{
159862
- yymsp[-1].minor.yy47 = yymsp[0].minor.yy47;
159863
- sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy47);
160133
+ yymsp[-1].minor.yy457 = yymsp[0].minor.yy457;
160134
+ sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy457);
159864160135
}
159865160136
break;
159866160137
case 105: /* stl_prefix ::= seltablist joinop */
159867160138
{
159868
- if( ALWAYS(yymsp[-1].minor.yy47 && yymsp[-1].minor.yy47->nSrc>0) ) yymsp[-1].minor.yy47->a[yymsp[-1].minor.yy47->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy192;
160139
+ if( ALWAYS(yymsp[-1].minor.yy457 && yymsp[-1].minor.yy457->nSrc>0) ) yymsp[-1].minor.yy457->a[yymsp[-1].minor.yy457->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy412;
159869160140
}
159870160141
break;
159871160142
case 107: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
159872160143
{
159873
- yymsp[-6].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy47,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
159874
- sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy47, &yymsp[-2].minor.yy0);
160144
+ yymsp[-6].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy457,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
160145
+ sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy457, &yymsp[-2].minor.yy0);
159875160146
}
159876160147
break;
159877160148
case 108: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
159878160149
{
159879
- yymsp[-8].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy47,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
159880
- sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy47, yymsp[-4].minor.yy242);
160150
+ yymsp[-8].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy457,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
160151
+ sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy457, yymsp[-4].minor.yy350);
159881160152
}
159882160153
break;
159883160154
case 109: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
159884160155
{
159885
- yymsp[-6].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy47,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy539,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
160156
+ yymsp[-6].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy457,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy293,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
159886160157
}
159887160158
break;
159888160159
case 110: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
159889160160
{
159890
- if( yymsp[-6].minor.yy47==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy202==0 && yymsp[0].minor.yy600==0 ){
159891
- yymsp[-6].minor.yy47 = yymsp[-4].minor.yy47;
159892
- }else if( yymsp[-4].minor.yy47->nSrc==1 ){
159893
- yymsp[-6].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy47,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
159894
- if( yymsp[-6].minor.yy47 ){
159895
- struct SrcList_item *pNew = &yymsp[-6].minor.yy47->a[yymsp[-6].minor.yy47->nSrc-1];
159896
- struct SrcList_item *pOld = yymsp[-4].minor.yy47->a;
160161
+ if( yymsp[-6].minor.yy457==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy354==0 && yymsp[0].minor.yy498==0 ){
160162
+ yymsp[-6].minor.yy457 = yymsp[-4].minor.yy457;
160163
+ }else if( yymsp[-4].minor.yy457->nSrc==1 ){
160164
+ yymsp[-6].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy457,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
160165
+ if( yymsp[-6].minor.yy457 ){
160166
+ struct SrcList_item *pNew = &yymsp[-6].minor.yy457->a[yymsp[-6].minor.yy457->nSrc-1];
160167
+ struct SrcList_item *pOld = yymsp[-4].minor.yy457->a;
159897160168
pNew->zName = pOld->zName;
159898160169
pNew->zDatabase = pOld->zDatabase;
159899160170
pNew->pSelect = pOld->pSelect;
159900160171
if( pOld->fg.isTabFunc ){
159901160172
pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -159904,962 +160175,977 @@
159904160175
pNew->fg.isTabFunc = 1;
159905160176
}
159906160177
pOld->zName = pOld->zDatabase = 0;
159907160178
pOld->pSelect = 0;
159908160179
}
159909
- sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy47);
160180
+ sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy457);
159910160181
}else{
159911160182
Select *pSubquery;
159912
- sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy47);
159913
- pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy47,0,0,0,0,SF_NestedFrom,0);
159914
- yymsp[-6].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy47,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
160183
+ sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy457);
160184
+ pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy457,0,0,0,0,SF_NestedFrom,0);
160185
+ yymsp[-6].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy457,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
159915160186
}
159916160187
}
159917160188
break;
159918160189
case 111: /* dbnm ::= */
159919160190
case 125: /* indexed_opt ::= */ yytestcase(yyruleno==125);
159920160191
{yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
159921160192
break;
159922160193
case 113: /* fullname ::= nm */
159923160194
{
159924
- yylhsminor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
159925
- if( IN_RENAME_OBJECT && yylhsminor.yy47 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy47->a[0].zName, &yymsp[0].minor.yy0);
160195
+ yylhsminor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
160196
+ if( IN_RENAME_OBJECT && yylhsminor.yy457 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy457->a[0].zName, &yymsp[0].minor.yy0);
159926160197
}
159927
- yymsp[0].minor.yy47 = yylhsminor.yy47;
160198
+ yymsp[0].minor.yy457 = yylhsminor.yy457;
159928160199
break;
159929160200
case 114: /* fullname ::= nm DOT nm */
159930160201
{
159931
- yylhsminor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
159932
- if( IN_RENAME_OBJECT && yylhsminor.yy47 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy47->a[0].zName, &yymsp[0].minor.yy0);
160202
+ yylhsminor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
160203
+ if( IN_RENAME_OBJECT && yylhsminor.yy457 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy457->a[0].zName, &yymsp[0].minor.yy0);
159933160204
}
159934
- yymsp[-2].minor.yy47 = yylhsminor.yy47;
160205
+ yymsp[-2].minor.yy457 = yylhsminor.yy457;
159935160206
break;
159936160207
case 115: /* xfullname ::= nm */
159937
-{yymsp[0].minor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
160208
+{yymsp[0].minor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
159938160209
break;
159939160210
case 116: /* xfullname ::= nm DOT nm */
159940
-{yymsp[-2].minor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
160211
+{yymsp[-2].minor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
159941160212
break;
159942160213
case 117: /* xfullname ::= nm DOT nm AS nm */
159943160214
{
159944
- yymsp[-4].minor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
159945
- if( yymsp[-4].minor.yy47 ) yymsp[-4].minor.yy47->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
160215
+ yymsp[-4].minor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
160216
+ if( yymsp[-4].minor.yy457 ) yymsp[-4].minor.yy457->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
159946160217
}
159947160218
break;
159948160219
case 118: /* xfullname ::= nm AS nm */
159949160220
{
159950
- yymsp[-2].minor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
159951
- if( yymsp[-2].minor.yy47 ) yymsp[-2].minor.yy47->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
160221
+ yymsp[-2].minor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
160222
+ if( yymsp[-2].minor.yy457 ) yymsp[-2].minor.yy457->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
159952160223
}
159953160224
break;
159954160225
case 119: /* joinop ::= COMMA|JOIN */
159955
-{ yymsp[0].minor.yy192 = JT_INNER; }
160226
+{ yymsp[0].minor.yy412 = JT_INNER; }
159956160227
break;
159957160228
case 120: /* joinop ::= JOIN_KW JOIN */
159958
-{yymsp[-1].minor.yy192 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
160229
+{yymsp[-1].minor.yy412 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
159959160230
break;
159960160231
case 121: /* joinop ::= JOIN_KW nm JOIN */
159961
-{yymsp[-2].minor.yy192 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
160232
+{yymsp[-2].minor.yy412 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
159962160233
break;
159963160234
case 122: /* joinop ::= JOIN_KW nm nm JOIN */
159964
-{yymsp[-3].minor.yy192 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
160235
+{yymsp[-3].minor.yy412 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
159965160236
break;
159966160237
case 123: /* on_opt ::= ON expr */
159967160238
case 143: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==143);
159968160239
case 150: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==150);
159969
- case 217: /* case_else ::= ELSE expr */ yytestcase(yyruleno==217);
159970
- case 238: /* vinto ::= INTO expr */ yytestcase(yyruleno==238);
159971
-{yymsp[-1].minor.yy202 = yymsp[0].minor.yy202;}
160240
+ case 152: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==152);
160241
+ case 223: /* case_else ::= ELSE expr */ yytestcase(yyruleno==223);
160242
+ case 244: /* vinto ::= INTO expr */ yytestcase(yyruleno==244);
160243
+{yymsp[-1].minor.yy354 = yymsp[0].minor.yy354;}
159972160244
break;
159973160245
case 124: /* on_opt ::= */
159974160246
case 142: /* having_opt ::= */ yytestcase(yyruleno==142);
159975160247
case 144: /* limit_opt ::= */ yytestcase(yyruleno==144);
159976160248
case 149: /* where_opt ::= */ yytestcase(yyruleno==149);
159977
- case 218: /* case_else ::= */ yytestcase(yyruleno==218);
159978
- case 220: /* case_operand ::= */ yytestcase(yyruleno==220);
159979
- case 239: /* vinto ::= */ yytestcase(yyruleno==239);
159980
-{yymsp[1].minor.yy202 = 0;}
160249
+ case 151: /* where_opt_ret ::= */ yytestcase(yyruleno==151);
160250
+ case 224: /* case_else ::= */ yytestcase(yyruleno==224);
160251
+ case 226: /* case_operand ::= */ yytestcase(yyruleno==226);
160252
+ case 245: /* vinto ::= */ yytestcase(yyruleno==245);
160253
+{yymsp[1].minor.yy354 = 0;}
159981160254
break;
159982160255
case 126: /* indexed_opt ::= INDEXED BY nm */
159983160256
{yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
159984160257
break;
159985160258
case 127: /* indexed_opt ::= NOT INDEXED */
159986160259
{yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
159987160260
break;
159988160261
case 128: /* using_opt ::= USING LP idlist RP */
159989
-{yymsp[-3].minor.yy600 = yymsp[-1].minor.yy600;}
160262
+{yymsp[-3].minor.yy498 = yymsp[-1].minor.yy498;}
159990160263
break;
159991160264
case 129: /* using_opt ::= */
159992
- case 165: /* idlist_opt ::= */ yytestcase(yyruleno==165);
159993
-{yymsp[1].minor.yy600 = 0;}
160265
+ case 171: /* idlist_opt ::= */ yytestcase(yyruleno==171);
160266
+{yymsp[1].minor.yy498 = 0;}
159994160267
break;
159995160268
case 131: /* orderby_opt ::= ORDER BY sortlist */
159996160269
case 141: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==141);
159997
-{yymsp[-2].minor.yy242 = yymsp[0].minor.yy242;}
160270
+{yymsp[-2].minor.yy350 = yymsp[0].minor.yy350;}
159998160271
break;
159999160272
case 132: /* sortlist ::= sortlist COMMA expr sortorder nulls */
160000160273
{
160001
- yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy242,yymsp[-2].minor.yy202);
160002
- sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy242,yymsp[-1].minor.yy192,yymsp[0].minor.yy192);
160274
+ yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy350,yymsp[-2].minor.yy354);
160275
+ sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy350,yymsp[-1].minor.yy412,yymsp[0].minor.yy412);
160003160276
}
160004160277
break;
160005160278
case 133: /* sortlist ::= expr sortorder nulls */
160006160279
{
160007
- yymsp[-2].minor.yy242 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy202); /*A-overwrites-Y*/
160008
- sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy242,yymsp[-1].minor.yy192,yymsp[0].minor.yy192);
160280
+ yymsp[-2].minor.yy350 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy354); /*A-overwrites-Y*/
160281
+ sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy350,yymsp[-1].minor.yy412,yymsp[0].minor.yy412);
160009160282
}
160010160283
break;
160011160284
case 134: /* sortorder ::= ASC */
160012
-{yymsp[0].minor.yy192 = SQLITE_SO_ASC;}
160285
+{yymsp[0].minor.yy412 = SQLITE_SO_ASC;}
160013160286
break;
160014160287
case 135: /* sortorder ::= DESC */
160015
-{yymsp[0].minor.yy192 = SQLITE_SO_DESC;}
160288
+{yymsp[0].minor.yy412 = SQLITE_SO_DESC;}
160016160289
break;
160017160290
case 136: /* sortorder ::= */
160018160291
case 139: /* nulls ::= */ yytestcase(yyruleno==139);
160019
-{yymsp[1].minor.yy192 = SQLITE_SO_UNDEFINED;}
160292
+{yymsp[1].minor.yy412 = SQLITE_SO_UNDEFINED;}
160020160293
break;
160021160294
case 137: /* nulls ::= NULLS FIRST */
160022
-{yymsp[-1].minor.yy192 = SQLITE_SO_ASC;}
160295
+{yymsp[-1].minor.yy412 = SQLITE_SO_ASC;}
160023160296
break;
160024160297
case 138: /* nulls ::= NULLS LAST */
160025
-{yymsp[-1].minor.yy192 = SQLITE_SO_DESC;}
160298
+{yymsp[-1].minor.yy412 = SQLITE_SO_DESC;}
160026160299
break;
160027160300
case 145: /* limit_opt ::= LIMIT expr */
160028
-{yymsp[-1].minor.yy202 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy202,0);}
160301
+{yymsp[-1].minor.yy354 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy354,0);}
160029160302
break;
160030160303
case 146: /* limit_opt ::= LIMIT expr OFFSET expr */
160031
-{yymsp[-3].minor.yy202 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy202,yymsp[0].minor.yy202);}
160304
+{yymsp[-3].minor.yy354 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy354,yymsp[0].minor.yy354);}
160032160305
break;
160033160306
case 147: /* limit_opt ::= LIMIT expr COMMA expr */
160034
-{yymsp[-3].minor.yy202 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy202,yymsp[-2].minor.yy202);}
160035
- break;
160036
- case 148: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
160037
-{
160038
- sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy47, &yymsp[-1].minor.yy0);
160039
- sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy47,yymsp[0].minor.yy202,0,0);
160040
-}
160041
- break;
160042
- case 151: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt */
160043
-{
160044
- sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy47, &yymsp[-4].minor.yy0);
160045
- sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy242,"set list");
160046
- yymsp[-5].minor.yy47 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy47, yymsp[-1].minor.yy47);
160047
- sqlite3Update(pParse,yymsp[-5].minor.yy47,yymsp[-2].minor.yy242,yymsp[0].minor.yy202,yymsp[-6].minor.yy192,0,0,0);
160048
-}
160049
- break;
160050
- case 152: /* setlist ::= setlist COMMA nm EQ expr */
160051
-{
160052
- yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy242, yymsp[0].minor.yy202);
160053
- sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy242, &yymsp[-2].minor.yy0, 1);
160054
-}
160055
- break;
160056
- case 153: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
160057
-{
160058
- yymsp[-6].minor.yy242 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy242, yymsp[-3].minor.yy600, yymsp[0].minor.yy202);
160059
-}
160060
- break;
160061
- case 154: /* setlist ::= nm EQ expr */
160062
-{
160063
- yylhsminor.yy242 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy202);
160064
- sqlite3ExprListSetName(pParse, yylhsminor.yy242, &yymsp[-2].minor.yy0, 1);
160065
-}
160066
- yymsp[-2].minor.yy242 = yylhsminor.yy242;
160067
- break;
160068
- case 155: /* setlist ::= LP idlist RP EQ expr */
160069
-{
160070
- yymsp[-4].minor.yy242 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy600, yymsp[0].minor.yy202);
160071
-}
160072
- break;
160073
- case 156: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
160074
-{
160075
- sqlite3Insert(pParse, yymsp[-3].minor.yy47, yymsp[-1].minor.yy539, yymsp[-2].minor.yy600, yymsp[-5].minor.yy192, yymsp[0].minor.yy318);
160076
-}
160077
- break;
160078
- case 157: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
160079
-{
160080
- sqlite3Insert(pParse, yymsp[-3].minor.yy47, 0, yymsp[-2].minor.yy600, yymsp[-5].minor.yy192, 0);
160081
-}
160082
- break;
160083
- case 158: /* upsert ::= */
160084
-{ yymsp[1].minor.yy318 = 0; }
160085
- break;
160086
- case 159: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
160087
-{ yymsp[-11].minor.yy318 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy242,yymsp[-6].minor.yy202,yymsp[-2].minor.yy242,yymsp[-1].minor.yy202,yymsp[0].minor.yy318);}
160088
- break;
160089
- case 160: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
160090
-{ yymsp[-8].minor.yy318 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy242,yymsp[-3].minor.yy202,0,0,yymsp[0].minor.yy318); }
160091
- break;
160092
- case 161: /* upsert ::= ON CONFLICT DO NOTHING */
160093
-{ yymsp[-3].minor.yy318 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
160094
- break;
160095
- case 162: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt */
160096
-{ yymsp[-6].minor.yy318 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-1].minor.yy242,yymsp[0].minor.yy202,0);}
160097
- break;
160098
- case 166: /* idlist_opt ::= LP idlist RP */
160099
-{yymsp[-2].minor.yy600 = yymsp[-1].minor.yy600;}
160100
- break;
160101
- case 167: /* idlist ::= idlist COMMA nm */
160102
-{yymsp[-2].minor.yy600 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy600,&yymsp[0].minor.yy0);}
160103
- break;
160104
- case 168: /* idlist ::= nm */
160105
-{yymsp[0].minor.yy600 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
160106
- break;
160107
- case 169: /* expr ::= LP expr RP */
160108
-{yymsp[-2].minor.yy202 = yymsp[-1].minor.yy202;}
160109
- break;
160110
- case 170: /* expr ::= ID|INDEXED */
160111
- case 171: /* expr ::= JOIN_KW */ yytestcase(yyruleno==171);
160112
-{yymsp[0].minor.yy202=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
160113
- break;
160114
- case 172: /* expr ::= nm DOT nm */
160307
+{yymsp[-3].minor.yy354 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy354,yymsp[-2].minor.yy354);}
160308
+ break;
160309
+ case 148: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
160310
+{
160311
+ sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy457, &yymsp[-1].minor.yy0);
160312
+ sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy457,yymsp[0].minor.yy354,0,0);
160313
+}
160314
+ break;
160315
+ case 153: /* where_opt_ret ::= RETURNING selcollist */
160316
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy350); yymsp[-1].minor.yy354 = 0;}
160317
+ break;
160318
+ case 154: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
160319
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy350); yymsp[-3].minor.yy354 = yymsp[-2].minor.yy354;}
160320
+ break;
160321
+ case 155: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
160322
+{
160323
+ sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy457, &yymsp[-4].minor.yy0);
160324
+ sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy350,"set list");
160325
+ yymsp[-5].minor.yy457 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy457, yymsp[-1].minor.yy457);
160326
+ sqlite3Update(pParse,yymsp[-5].minor.yy457,yymsp[-2].minor.yy350,yymsp[0].minor.yy354,yymsp[-6].minor.yy412,0,0,0);
160327
+}
160328
+ break;
160329
+ case 156: /* setlist ::= setlist COMMA nm EQ expr */
160330
+{
160331
+ yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy350, yymsp[0].minor.yy354);
160332
+ sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy350, &yymsp[-2].minor.yy0, 1);
160333
+}
160334
+ break;
160335
+ case 157: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
160336
+{
160337
+ yymsp[-6].minor.yy350 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy350, yymsp[-3].minor.yy498, yymsp[0].minor.yy354);
160338
+}
160339
+ break;
160340
+ case 158: /* setlist ::= nm EQ expr */
160341
+{
160342
+ yylhsminor.yy350 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy354);
160343
+ sqlite3ExprListSetName(pParse, yylhsminor.yy350, &yymsp[-2].minor.yy0, 1);
160344
+}
160345
+ yymsp[-2].minor.yy350 = yylhsminor.yy350;
160346
+ break;
160347
+ case 159: /* setlist ::= LP idlist RP EQ expr */
160348
+{
160349
+ yymsp[-4].minor.yy350 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy498, yymsp[0].minor.yy354);
160350
+}
160351
+ break;
160352
+ case 160: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
160353
+{
160354
+ sqlite3Insert(pParse, yymsp[-3].minor.yy457, yymsp[-1].minor.yy293, yymsp[-2].minor.yy498, yymsp[-5].minor.yy412, yymsp[0].minor.yy40);
160355
+}
160356
+ break;
160357
+ case 161: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
160358
+{
160359
+ sqlite3Insert(pParse, yymsp[-4].minor.yy457, 0, yymsp[-3].minor.yy498, yymsp[-6].minor.yy412, 0);
160360
+}
160361
+ break;
160362
+ case 162: /* upsert ::= */
160363
+{ yymsp[1].minor.yy40 = 0; }
160364
+ break;
160365
+ case 163: /* upsert ::= RETURNING selcollist */
160366
+{ yymsp[-1].minor.yy40 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy350); }
160367
+ break;
160368
+ case 164: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
160369
+{ yymsp[-11].minor.yy40 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy350,yymsp[-6].minor.yy354,yymsp[-2].minor.yy350,yymsp[-1].minor.yy354,yymsp[0].minor.yy40);}
160370
+ break;
160371
+ case 165: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
160372
+{ yymsp[-8].minor.yy40 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy350,yymsp[-3].minor.yy354,0,0,yymsp[0].minor.yy40); }
160373
+ break;
160374
+ case 166: /* upsert ::= ON CONFLICT DO NOTHING returning */
160375
+{ yymsp[-4].minor.yy40 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
160376
+ break;
160377
+ case 167: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
160378
+{ yymsp[-7].minor.yy40 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy350,yymsp[-1].minor.yy354,0);}
160379
+ break;
160380
+ case 168: /* returning ::= RETURNING selcollist */
160381
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy350);}
160382
+ break;
160383
+ case 172: /* idlist_opt ::= LP idlist RP */
160384
+{yymsp[-2].minor.yy498 = yymsp[-1].minor.yy498;}
160385
+ break;
160386
+ case 173: /* idlist ::= idlist COMMA nm */
160387
+{yymsp[-2].minor.yy498 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy498,&yymsp[0].minor.yy0);}
160388
+ break;
160389
+ case 174: /* idlist ::= nm */
160390
+{yymsp[0].minor.yy498 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
160391
+ break;
160392
+ case 175: /* expr ::= LP expr RP */
160393
+{yymsp[-2].minor.yy354 = yymsp[-1].minor.yy354;}
160394
+ break;
160395
+ case 176: /* expr ::= ID|INDEXED */
160396
+ case 177: /* expr ::= JOIN_KW */ yytestcase(yyruleno==177);
160397
+{yymsp[0].minor.yy354=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
160398
+ break;
160399
+ case 178: /* expr ::= nm DOT nm */
160115160400
{
160116160401
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
160117160402
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
160118160403
if( IN_RENAME_OBJECT ){
160119160404
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
160120160405
sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
160121160406
}
160122
- yylhsminor.yy202 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
160407
+ yylhsminor.yy354 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
160123160408
}
160124
- yymsp[-2].minor.yy202 = yylhsminor.yy202;
160409
+ yymsp[-2].minor.yy354 = yylhsminor.yy354;
160125160410
break;
160126
- case 173: /* expr ::= nm DOT nm DOT nm */
160411
+ case 179: /* expr ::= nm DOT nm DOT nm */
160127160412
{
160128160413
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
160129160414
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
160130160415
Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
160131160416
Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
160132160417
if( IN_RENAME_OBJECT ){
160133160418
sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
160134160419
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
160135160420
}
160136
- yylhsminor.yy202 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
160137
-}
160138
- yymsp[-4].minor.yy202 = yylhsminor.yy202;
160139
- break;
160140
- case 174: /* term ::= NULL|FLOAT|BLOB */
160141
- case 175: /* term ::= STRING */ yytestcase(yyruleno==175);
160142
-{yymsp[0].minor.yy202=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
160143
- break;
160144
- case 176: /* term ::= INTEGER */
160145
-{
160146
- yylhsminor.yy202 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
160147
-}
160148
- yymsp[0].minor.yy202 = yylhsminor.yy202;
160149
- break;
160150
- case 177: /* expr ::= VARIABLE */
160421
+ yylhsminor.yy354 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
160422
+}
160423
+ yymsp[-4].minor.yy354 = yylhsminor.yy354;
160424
+ break;
160425
+ case 180: /* term ::= NULL|FLOAT|BLOB */
160426
+ case 181: /* term ::= STRING */ yytestcase(yyruleno==181);
160427
+{yymsp[0].minor.yy354=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
160428
+ break;
160429
+ case 182: /* term ::= INTEGER */
160430
+{
160431
+ yylhsminor.yy354 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
160432
+}
160433
+ yymsp[0].minor.yy354 = yylhsminor.yy354;
160434
+ break;
160435
+ case 183: /* expr ::= VARIABLE */
160151160436
{
160152160437
if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
160153160438
u32 n = yymsp[0].minor.yy0.n;
160154
- yymsp[0].minor.yy202 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
160155
- sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy202, n);
160439
+ yymsp[0].minor.yy354 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
160440
+ sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy354, n);
160156160441
}else{
160157160442
/* When doing a nested parse, one can include terms in an expression
160158160443
** that look like this: #1 #2 ... These terms refer to registers
160159160444
** in the virtual machine. #N is the N-th register. */
160160160445
Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
160161160446
assert( t.n>=2 );
160162160447
if( pParse->nested==0 ){
160163160448
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
160164
- yymsp[0].minor.yy202 = 0;
160165
- }else{
160166
- yymsp[0].minor.yy202 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
160167
- if( yymsp[0].minor.yy202 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy202->iTable);
160168
- }
160169
- }
160170
-}
160171
- break;
160172
- case 178: /* expr ::= expr COLLATE ID|STRING */
160173
-{
160174
- yymsp[-2].minor.yy202 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy202, &yymsp[0].minor.yy0, 1);
160175
-}
160176
- break;
160177
- case 179: /* expr ::= CAST LP expr AS typetoken RP */
160178
-{
160179
- yymsp[-5].minor.yy202 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
160180
- sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy202, yymsp[-3].minor.yy202, 0);
160181
-}
160182
- break;
160183
- case 180: /* expr ::= ID|INDEXED LP distinct exprlist RP */
160184
-{
160185
- yylhsminor.yy202 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy242, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy192);
160186
-}
160187
- yymsp[-4].minor.yy202 = yylhsminor.yy202;
160188
- break;
160189
- case 181: /* expr ::= ID|INDEXED LP STAR RP */
160190
-{
160191
- yylhsminor.yy202 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
160192
-}
160193
- yymsp[-3].minor.yy202 = yylhsminor.yy202;
160194
- break;
160195
- case 182: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
160196
-{
160197
- yylhsminor.yy202 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy242, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy192);
160198
- sqlite3WindowAttach(pParse, yylhsminor.yy202, yymsp[0].minor.yy303);
160199
-}
160200
- yymsp[-5].minor.yy202 = yylhsminor.yy202;
160201
- break;
160202
- case 183: /* expr ::= ID|INDEXED LP STAR RP filter_over */
160203
-{
160204
- yylhsminor.yy202 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
160205
- sqlite3WindowAttach(pParse, yylhsminor.yy202, yymsp[0].minor.yy303);
160206
-}
160207
- yymsp[-4].minor.yy202 = yylhsminor.yy202;
160208
- break;
160209
- case 184: /* term ::= CTIME_KW */
160210
-{
160211
- yylhsminor.yy202 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
160212
-}
160213
- yymsp[0].minor.yy202 = yylhsminor.yy202;
160214
- break;
160215
- case 185: /* expr ::= LP nexprlist COMMA expr RP */
160216
-{
160217
- ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy242, yymsp[-1].minor.yy202);
160218
- yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
160219
- if( yymsp[-4].minor.yy202 ){
160220
- yymsp[-4].minor.yy202->x.pList = pList;
160449
+ yymsp[0].minor.yy354 = 0;
160450
+ }else{
160451
+ yymsp[0].minor.yy354 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
160452
+ if( yymsp[0].minor.yy354 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy354->iTable);
160453
+ }
160454
+ }
160455
+}
160456
+ break;
160457
+ case 184: /* expr ::= expr COLLATE ID|STRING */
160458
+{
160459
+ yymsp[-2].minor.yy354 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy354, &yymsp[0].minor.yy0, 1);
160460
+}
160461
+ break;
160462
+ case 185: /* expr ::= CAST LP expr AS typetoken RP */
160463
+{
160464
+ yymsp[-5].minor.yy354 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
160465
+ sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy354, yymsp[-3].minor.yy354, 0);
160466
+}
160467
+ break;
160468
+ case 186: /* expr ::= ID|INDEXED LP distinct exprlist RP */
160469
+{
160470
+ yylhsminor.yy354 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy350, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy412);
160471
+}
160472
+ yymsp[-4].minor.yy354 = yylhsminor.yy354;
160473
+ break;
160474
+ case 187: /* expr ::= ID|INDEXED LP STAR RP */
160475
+{
160476
+ yylhsminor.yy354 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
160477
+}
160478
+ yymsp[-3].minor.yy354 = yylhsminor.yy354;
160479
+ break;
160480
+ case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
160481
+{
160482
+ yylhsminor.yy354 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy350, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy412);
160483
+ sqlite3WindowAttach(pParse, yylhsminor.yy354, yymsp[0].minor.yy503);
160484
+}
160485
+ yymsp[-5].minor.yy354 = yylhsminor.yy354;
160486
+ break;
160487
+ case 189: /* expr ::= ID|INDEXED LP STAR RP filter_over */
160488
+{
160489
+ yylhsminor.yy354 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
160490
+ sqlite3WindowAttach(pParse, yylhsminor.yy354, yymsp[0].minor.yy503);
160491
+}
160492
+ yymsp[-4].minor.yy354 = yylhsminor.yy354;
160493
+ break;
160494
+ case 190: /* term ::= CTIME_KW */
160495
+{
160496
+ yylhsminor.yy354 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
160497
+}
160498
+ yymsp[0].minor.yy354 = yylhsminor.yy354;
160499
+ break;
160500
+ case 191: /* expr ::= LP nexprlist COMMA expr RP */
160501
+{
160502
+ ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy350, yymsp[-1].minor.yy354);
160503
+ yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
160504
+ if( yymsp[-4].minor.yy354 ){
160505
+ yymsp[-4].minor.yy354->x.pList = pList;
160221160506
if( ALWAYS(pList->nExpr) ){
160222
- yymsp[-4].minor.yy202->flags |= pList->a[0].pExpr->flags & EP_Propagate;
160507
+ yymsp[-4].minor.yy354->flags |= pList->a[0].pExpr->flags & EP_Propagate;
160223160508
}
160224160509
}else{
160225160510
sqlite3ExprListDelete(pParse->db, pList);
160226160511
}
160227160512
}
160228160513
break;
160229
- case 186: /* expr ::= expr AND expr */
160230
-{yymsp[-2].minor.yy202=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy202,yymsp[0].minor.yy202);}
160231
- break;
160232
- case 187: /* expr ::= expr OR expr */
160233
- case 188: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==188);
160234
- case 189: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==189);
160235
- case 190: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==190);
160236
- case 191: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==191);
160237
- case 192: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==192);
160238
- case 193: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==193);
160239
-{yymsp[-2].minor.yy202=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy202,yymsp[0].minor.yy202);}
160240
- break;
160241
- case 194: /* likeop ::= NOT LIKE_KW|MATCH */
160514
+ case 192: /* expr ::= expr AND expr */
160515
+{yymsp[-2].minor.yy354=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy354,yymsp[0].minor.yy354);}
160516
+ break;
160517
+ case 193: /* expr ::= expr OR expr */
160518
+ case 194: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==194);
160519
+ case 195: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==195);
160520
+ case 196: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==196);
160521
+ case 197: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==197);
160522
+ case 198: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==198);
160523
+ case 199: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==199);
160524
+{yymsp[-2].minor.yy354=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy354,yymsp[0].minor.yy354);}
160525
+ break;
160526
+ case 200: /* likeop ::= NOT LIKE_KW|MATCH */
160242160527
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
160243160528
break;
160244
- case 195: /* expr ::= expr likeop expr */
160529
+ case 201: /* expr ::= expr likeop expr */
160245160530
{
160246160531
ExprList *pList;
160247160532
int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
160248160533
yymsp[-1].minor.yy0.n &= 0x7fffffff;
160249
- pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy202);
160250
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy202);
160251
- yymsp[-2].minor.yy202 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
160252
- if( bNot ) yymsp[-2].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy202, 0);
160253
- if( yymsp[-2].minor.yy202 ) yymsp[-2].minor.yy202->flags |= EP_InfixFunc;
160534
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy354);
160535
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy354);
160536
+ yymsp[-2].minor.yy354 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
160537
+ if( bNot ) yymsp[-2].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy354, 0);
160538
+ if( yymsp[-2].minor.yy354 ) yymsp[-2].minor.yy354->flags |= EP_InfixFunc;
160254160539
}
160255160540
break;
160256
- case 196: /* expr ::= expr likeop expr ESCAPE expr */
160541
+ case 202: /* expr ::= expr likeop expr ESCAPE expr */
160257160542
{
160258160543
ExprList *pList;
160259160544
int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
160260160545
yymsp[-3].minor.yy0.n &= 0x7fffffff;
160261
- pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy202);
160262
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy202);
160263
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy202);
160264
- yymsp[-4].minor.yy202 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
160265
- if( bNot ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160266
- if( yymsp[-4].minor.yy202 ) yymsp[-4].minor.yy202->flags |= EP_InfixFunc;
160267
-}
160268
- break;
160269
- case 197: /* expr ::= expr ISNULL|NOTNULL */
160270
-{yymsp[-1].minor.yy202 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy202,0);}
160271
- break;
160272
- case 198: /* expr ::= expr NOT NULL */
160273
-{yymsp[-2].minor.yy202 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy202,0);}
160274
- break;
160275
- case 199: /* expr ::= expr IS expr */
160276
-{
160277
- yymsp[-2].minor.yy202 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy202,yymsp[0].minor.yy202);
160278
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy202, yymsp[-2].minor.yy202, TK_ISNULL);
160279
-}
160280
- break;
160281
- case 200: /* expr ::= expr IS NOT expr */
160282
-{
160283
- yymsp[-3].minor.yy202 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy202,yymsp[0].minor.yy202);
160284
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy202, yymsp[-3].minor.yy202, TK_NOTNULL);
160285
-}
160286
- break;
160287
- case 201: /* expr ::= NOT expr */
160288
- case 202: /* expr ::= BITNOT expr */ yytestcase(yyruleno==202);
160289
-{yymsp[-1].minor.yy202 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy202, 0);/*A-overwrites-B*/}
160290
- break;
160291
- case 203: /* expr ::= PLUS|MINUS expr */
160292
-{
160293
- yymsp[-1].minor.yy202 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy202, 0);
160546
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy354);
160547
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy354);
160548
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy354);
160549
+ yymsp[-4].minor.yy354 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
160550
+ if( bNot ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160551
+ if( yymsp[-4].minor.yy354 ) yymsp[-4].minor.yy354->flags |= EP_InfixFunc;
160552
+}
160553
+ break;
160554
+ case 203: /* expr ::= expr ISNULL|NOTNULL */
160555
+{yymsp[-1].minor.yy354 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy354,0);}
160556
+ break;
160557
+ case 204: /* expr ::= expr NOT NULL */
160558
+{yymsp[-2].minor.yy354 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy354,0);}
160559
+ break;
160560
+ case 205: /* expr ::= expr IS expr */
160561
+{
160562
+ yymsp[-2].minor.yy354 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy354,yymsp[0].minor.yy354);
160563
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy354, yymsp[-2].minor.yy354, TK_ISNULL);
160564
+}
160565
+ break;
160566
+ case 206: /* expr ::= expr IS NOT expr */
160567
+{
160568
+ yymsp[-3].minor.yy354 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy354,yymsp[0].minor.yy354);
160569
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy354, yymsp[-3].minor.yy354, TK_NOTNULL);
160570
+}
160571
+ break;
160572
+ case 207: /* expr ::= NOT expr */
160573
+ case 208: /* expr ::= BITNOT expr */ yytestcase(yyruleno==208);
160574
+{yymsp[-1].minor.yy354 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy354, 0);/*A-overwrites-B*/}
160575
+ break;
160576
+ case 209: /* expr ::= PLUS|MINUS expr */
160577
+{
160578
+ yymsp[-1].minor.yy354 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy354, 0);
160294160579
/*A-overwrites-B*/
160295160580
}
160296160581
break;
160297
- case 204: /* between_op ::= BETWEEN */
160298
- case 207: /* in_op ::= IN */ yytestcase(yyruleno==207);
160299
-{yymsp[0].minor.yy192 = 0;}
160582
+ case 210: /* between_op ::= BETWEEN */
160583
+ case 213: /* in_op ::= IN */ yytestcase(yyruleno==213);
160584
+{yymsp[0].minor.yy412 = 0;}
160300160585
break;
160301
- case 206: /* expr ::= expr between_op expr AND expr */
160586
+ case 212: /* expr ::= expr between_op expr AND expr */
160302160587
{
160303
- ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy202);
160304
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy202);
160305
- yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy202, 0);
160306
- if( yymsp[-4].minor.yy202 ){
160307
- yymsp[-4].minor.yy202->x.pList = pList;
160588
+ ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy354);
160589
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy354);
160590
+ yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy354, 0);
160591
+ if( yymsp[-4].minor.yy354 ){
160592
+ yymsp[-4].minor.yy354->x.pList = pList;
160308160593
}else{
160309160594
sqlite3ExprListDelete(pParse->db, pList);
160310160595
}
160311
- if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160596
+ if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160312160597
}
160313160598
break;
160314
- case 209: /* expr ::= expr in_op LP exprlist RP */
160599
+ case 215: /* expr ::= expr in_op LP exprlist RP */
160315160600
{
160316
- if( yymsp[-1].minor.yy242==0 ){
160601
+ if( yymsp[-1].minor.yy350==0 ){
160317160602
/* Expressions of the form
160318160603
**
160319160604
** expr1 IN ()
160320160605
** expr1 NOT IN ()
160321160606
**
160322160607
** simplify to constants 0 (false) and 1 (true), respectively,
160323160608
** regardless of the value of expr1.
160324160609
*/
160325
- sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy202);
160326
- yymsp[-4].minor.yy202 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy192 ? "1" : "0");
160327
- }else if( yymsp[-1].minor.yy242->nExpr==1 && sqlite3ExprIsConstant(yymsp[-1].minor.yy242->a[0].pExpr) ){
160328
- Expr *pRHS = yymsp[-1].minor.yy242->a[0].pExpr;
160329
- yymsp[-1].minor.yy242->a[0].pExpr = 0;
160330
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy242);
160610
+ sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy354);
160611
+ yymsp[-4].minor.yy354 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy412 ? "1" : "0");
160612
+ }else if( yymsp[-1].minor.yy350->nExpr==1 && sqlite3ExprIsConstant(yymsp[-1].minor.yy350->a[0].pExpr) ){
160613
+ Expr *pRHS = yymsp[-1].minor.yy350->a[0].pExpr;
160614
+ yymsp[-1].minor.yy350->a[0].pExpr = 0;
160615
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy350);
160331160616
pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
160332
- yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy202, pRHS);
160333
- if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160334
- }else{
160335
- yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy202, 0);
160336
- if( yymsp[-4].minor.yy202 ){
160337
- yymsp[-4].minor.yy202->x.pList = yymsp[-1].minor.yy242;
160338
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy202);
160339
- }else{
160340
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy242);
160341
- }
160342
- if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160343
- }
160344
- }
160345
- break;
160346
- case 210: /* expr ::= LP select RP */
160347
-{
160348
- yymsp[-2].minor.yy202 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
160349
- sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy202, yymsp[-1].minor.yy539);
160350
- }
160351
- break;
160352
- case 211: /* expr ::= expr in_op LP select RP */
160353
-{
160354
- yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy202, 0);
160355
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy202, yymsp[-1].minor.yy539);
160356
- if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160357
- }
160358
- break;
160359
- case 212: /* expr ::= expr in_op nm dbnm paren_exprlist */
160617
+ yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy354, pRHS);
160618
+ if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160619
+ }else{
160620
+ yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy354, 0);
160621
+ if( yymsp[-4].minor.yy354 ){
160622
+ yymsp[-4].minor.yy354->x.pList = yymsp[-1].minor.yy350;
160623
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy354);
160624
+ }else{
160625
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy350);
160626
+ }
160627
+ if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160628
+ }
160629
+ }
160630
+ break;
160631
+ case 216: /* expr ::= LP select RP */
160632
+{
160633
+ yymsp[-2].minor.yy354 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
160634
+ sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy354, yymsp[-1].minor.yy293);
160635
+ }
160636
+ break;
160637
+ case 217: /* expr ::= expr in_op LP select RP */
160638
+{
160639
+ yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy354, 0);
160640
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy354, yymsp[-1].minor.yy293);
160641
+ if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160642
+ }
160643
+ break;
160644
+ case 218: /* expr ::= expr in_op nm dbnm paren_exprlist */
160360160645
{
160361160646
SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
160362160647
Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
160363
- if( yymsp[0].minor.yy242 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy242);
160364
- yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy202, 0);
160365
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy202, pSelect);
160366
- if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160648
+ if( yymsp[0].minor.yy350 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy350);
160649
+ yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy354, 0);
160650
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy354, pSelect);
160651
+ if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160367160652
}
160368160653
break;
160369
- case 213: /* expr ::= EXISTS LP select RP */
160654
+ case 219: /* expr ::= EXISTS LP select RP */
160370160655
{
160371160656
Expr *p;
160372
- p = yymsp[-3].minor.yy202 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
160373
- sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy539);
160374
- }
160375
- break;
160376
- case 214: /* expr ::= CASE case_operand case_exprlist case_else END */
160377
-{
160378
- yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy202, 0);
160379
- if( yymsp[-4].minor.yy202 ){
160380
- yymsp[-4].minor.yy202->x.pList = yymsp[-1].minor.yy202 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy242,yymsp[-1].minor.yy202) : yymsp[-2].minor.yy242;
160381
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy202);
160382
- }else{
160383
- sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy242);
160384
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy202);
160385
- }
160386
-}
160387
- break;
160388
- case 215: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
160389
-{
160390
- yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy242, yymsp[-2].minor.yy202);
160391
- yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy242, yymsp[0].minor.yy202);
160392
-}
160393
- break;
160394
- case 216: /* case_exprlist ::= WHEN expr THEN expr */
160395
-{
160396
- yymsp[-3].minor.yy242 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy202);
160397
- yymsp[-3].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy242, yymsp[0].minor.yy202);
160398
-}
160399
- break;
160400
- case 219: /* case_operand ::= expr */
160401
-{yymsp[0].minor.yy202 = yymsp[0].minor.yy202; /*A-overwrites-X*/}
160402
- break;
160403
- case 222: /* nexprlist ::= nexprlist COMMA expr */
160404
-{yymsp[-2].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy242,yymsp[0].minor.yy202);}
160405
- break;
160406
- case 223: /* nexprlist ::= expr */
160407
-{yymsp[0].minor.yy242 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy202); /*A-overwrites-Y*/}
160408
- break;
160409
- case 225: /* paren_exprlist ::= LP exprlist RP */
160410
- case 230: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==230);
160411
-{yymsp[-2].minor.yy242 = yymsp[-1].minor.yy242;}
160412
- break;
160413
- case 226: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
160657
+ p = yymsp[-3].minor.yy354 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
160658
+ sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy293);
160659
+ }
160660
+ break;
160661
+ case 220: /* expr ::= CASE case_operand case_exprlist case_else END */
160662
+{
160663
+ yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy354, 0);
160664
+ if( yymsp[-4].minor.yy354 ){
160665
+ yymsp[-4].minor.yy354->x.pList = yymsp[-1].minor.yy354 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy350,yymsp[-1].minor.yy354) : yymsp[-2].minor.yy350;
160666
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy354);
160667
+ }else{
160668
+ sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy350);
160669
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy354);
160670
+ }
160671
+}
160672
+ break;
160673
+ case 221: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
160674
+{
160675
+ yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy350, yymsp[-2].minor.yy354);
160676
+ yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy350, yymsp[0].minor.yy354);
160677
+}
160678
+ break;
160679
+ case 222: /* case_exprlist ::= WHEN expr THEN expr */
160680
+{
160681
+ yymsp[-3].minor.yy350 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy354);
160682
+ yymsp[-3].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy350, yymsp[0].minor.yy354);
160683
+}
160684
+ break;
160685
+ case 225: /* case_operand ::= expr */
160686
+{yymsp[0].minor.yy354 = yymsp[0].minor.yy354; /*A-overwrites-X*/}
160687
+ break;
160688
+ case 228: /* nexprlist ::= nexprlist COMMA expr */
160689
+{yymsp[-2].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy350,yymsp[0].minor.yy354);}
160690
+ break;
160691
+ case 229: /* nexprlist ::= expr */
160692
+{yymsp[0].minor.yy350 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy354); /*A-overwrites-Y*/}
160693
+ break;
160694
+ case 231: /* paren_exprlist ::= LP exprlist RP */
160695
+ case 236: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==236);
160696
+{yymsp[-2].minor.yy350 = yymsp[-1].minor.yy350;}
160697
+ break;
160698
+ case 232: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
160414160699
{
160415160700
sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
160416
- sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy242, yymsp[-10].minor.yy192,
160417
- &yymsp[-11].minor.yy0, yymsp[0].minor.yy202, SQLITE_SO_ASC, yymsp[-8].minor.yy192, SQLITE_IDXTYPE_APPDEF);
160701
+ sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy350, yymsp[-10].minor.yy412,
160702
+ &yymsp[-11].minor.yy0, yymsp[0].minor.yy354, SQLITE_SO_ASC, yymsp[-8].minor.yy412, SQLITE_IDXTYPE_APPDEF);
160418160703
if( IN_RENAME_OBJECT && pParse->pNewIndex ){
160419160704
sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
160420160705
}
160421160706
}
160422160707
break;
160423
- case 227: /* uniqueflag ::= UNIQUE */
160424
- case 269: /* raisetype ::= ABORT */ yytestcase(yyruleno==269);
160425
-{yymsp[0].minor.yy192 = OE_Abort;}
160426
- break;
160427
- case 228: /* uniqueflag ::= */
160428
-{yymsp[1].minor.yy192 = OE_None;}
160429
- break;
160430
- case 231: /* eidlist ::= eidlist COMMA nm collate sortorder */
160431
-{
160432
- yymsp[-4].minor.yy242 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy242, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy192, yymsp[0].minor.yy192);
160433
-}
160434
- break;
160435
- case 232: /* eidlist ::= nm collate sortorder */
160436
-{
160437
- yymsp[-2].minor.yy242 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy192, yymsp[0].minor.yy192); /*A-overwrites-Y*/
160438
-}
160439
- break;
160440
- case 235: /* cmd ::= DROP INDEX ifexists fullname */
160441
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy47, yymsp[-1].minor.yy192);}
160442
- break;
160443
- case 236: /* cmd ::= VACUUM vinto */
160444
-{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy202);}
160445
- break;
160446
- case 237: /* cmd ::= VACUUM nm vinto */
160447
-{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy202);}
160448
- break;
160449
- case 240: /* cmd ::= PRAGMA nm dbnm */
160708
+ case 233: /* uniqueflag ::= UNIQUE */
160709
+ case 275: /* raisetype ::= ABORT */ yytestcase(yyruleno==275);
160710
+{yymsp[0].minor.yy412 = OE_Abort;}
160711
+ break;
160712
+ case 234: /* uniqueflag ::= */
160713
+{yymsp[1].minor.yy412 = OE_None;}
160714
+ break;
160715
+ case 237: /* eidlist ::= eidlist COMMA nm collate sortorder */
160716
+{
160717
+ yymsp[-4].minor.yy350 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy350, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy412, yymsp[0].minor.yy412);
160718
+}
160719
+ break;
160720
+ case 238: /* eidlist ::= nm collate sortorder */
160721
+{
160722
+ yymsp[-2].minor.yy350 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy412, yymsp[0].minor.yy412); /*A-overwrites-Y*/
160723
+}
160724
+ break;
160725
+ case 241: /* cmd ::= DROP INDEX ifexists fullname */
160726
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy457, yymsp[-1].minor.yy412);}
160727
+ break;
160728
+ case 242: /* cmd ::= VACUUM vinto */
160729
+{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy354);}
160730
+ break;
160731
+ case 243: /* cmd ::= VACUUM nm vinto */
160732
+{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy354);}
160733
+ break;
160734
+ case 246: /* cmd ::= PRAGMA nm dbnm */
160450160735
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
160451160736
break;
160452
- case 241: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
160737
+ case 247: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
160453160738
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
160454160739
break;
160455
- case 242: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
160740
+ case 248: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
160456160741
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
160457160742
break;
160458
- case 243: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
160743
+ case 249: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
160459160744
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
160460160745
break;
160461
- case 244: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
160746
+ case 250: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
160462160747
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
160463160748
break;
160464
- case 247: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
160749
+ case 253: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
160465160750
{
160466160751
Token all;
160467160752
all.z = yymsp[-3].minor.yy0.z;
160468160753
all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
160469
- sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy447, &all);
160754
+ sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy51, &all);
160470160755
}
160471160756
break;
160472
- case 248: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
160757
+ case 254: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
160473160758
{
160474
- sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy192, yymsp[-4].minor.yy230.a, yymsp[-4].minor.yy230.b, yymsp[-2].minor.yy47, yymsp[0].minor.yy202, yymsp[-10].minor.yy192, yymsp[-8].minor.yy192);
160759
+ sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy412, yymsp[-4].minor.yy298.a, yymsp[-4].minor.yy298.b, yymsp[-2].minor.yy457, yymsp[0].minor.yy354, yymsp[-10].minor.yy412, yymsp[-8].minor.yy412);
160475160760
yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
160476160761
}
160477160762
break;
160478
- case 249: /* trigger_time ::= BEFORE|AFTER */
160479
-{ yymsp[0].minor.yy192 = yymsp[0].major; /*A-overwrites-X*/ }
160480
- break;
160481
- case 250: /* trigger_time ::= INSTEAD OF */
160482
-{ yymsp[-1].minor.yy192 = TK_INSTEAD;}
160483
- break;
160484
- case 251: /* trigger_time ::= */
160485
-{ yymsp[1].minor.yy192 = TK_BEFORE; }
160486
- break;
160487
- case 252: /* trigger_event ::= DELETE|INSERT */
160488
- case 253: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==253);
160489
-{yymsp[0].minor.yy230.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy230.b = 0;}
160490
- break;
160491
- case 254: /* trigger_event ::= UPDATE OF idlist */
160492
-{yymsp[-2].minor.yy230.a = TK_UPDATE; yymsp[-2].minor.yy230.b = yymsp[0].minor.yy600;}
160493
- break;
160494
- case 255: /* when_clause ::= */
160495
- case 274: /* key_opt ::= */ yytestcase(yyruleno==274);
160496
-{ yymsp[1].minor.yy202 = 0; }
160497
- break;
160498
- case 256: /* when_clause ::= WHEN expr */
160499
- case 275: /* key_opt ::= KEY expr */ yytestcase(yyruleno==275);
160500
-{ yymsp[-1].minor.yy202 = yymsp[0].minor.yy202; }
160501
- break;
160502
- case 257: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
160503
-{
160504
- assert( yymsp[-2].minor.yy447!=0 );
160505
- yymsp[-2].minor.yy447->pLast->pNext = yymsp[-1].minor.yy447;
160506
- yymsp[-2].minor.yy447->pLast = yymsp[-1].minor.yy447;
160507
-}
160508
- break;
160509
- case 258: /* trigger_cmd_list ::= trigger_cmd SEMI */
160510
-{
160511
- assert( yymsp[-1].minor.yy447!=0 );
160512
- yymsp[-1].minor.yy447->pLast = yymsp[-1].minor.yy447;
160513
-}
160514
- break;
160515
- case 259: /* trnm ::= nm DOT nm */
160763
+ case 255: /* trigger_time ::= BEFORE|AFTER */
160764
+{ yymsp[0].minor.yy412 = yymsp[0].major; /*A-overwrites-X*/ }
160765
+ break;
160766
+ case 256: /* trigger_time ::= INSTEAD OF */
160767
+{ yymsp[-1].minor.yy412 = TK_INSTEAD;}
160768
+ break;
160769
+ case 257: /* trigger_time ::= */
160770
+{ yymsp[1].minor.yy412 = TK_BEFORE; }
160771
+ break;
160772
+ case 258: /* trigger_event ::= DELETE|INSERT */
160773
+ case 259: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==259);
160774
+{yymsp[0].minor.yy298.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy298.b = 0;}
160775
+ break;
160776
+ case 260: /* trigger_event ::= UPDATE OF idlist */
160777
+{yymsp[-2].minor.yy298.a = TK_UPDATE; yymsp[-2].minor.yy298.b = yymsp[0].minor.yy498;}
160778
+ break;
160779
+ case 261: /* when_clause ::= */
160780
+ case 280: /* key_opt ::= */ yytestcase(yyruleno==280);
160781
+{ yymsp[1].minor.yy354 = 0; }
160782
+ break;
160783
+ case 262: /* when_clause ::= WHEN expr */
160784
+ case 281: /* key_opt ::= KEY expr */ yytestcase(yyruleno==281);
160785
+{ yymsp[-1].minor.yy354 = yymsp[0].minor.yy354; }
160786
+ break;
160787
+ case 263: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
160788
+{
160789
+ assert( yymsp[-2].minor.yy51!=0 );
160790
+ yymsp[-2].minor.yy51->pLast->pNext = yymsp[-1].minor.yy51;
160791
+ yymsp[-2].minor.yy51->pLast = yymsp[-1].minor.yy51;
160792
+}
160793
+ break;
160794
+ case 264: /* trigger_cmd_list ::= trigger_cmd SEMI */
160795
+{
160796
+ assert( yymsp[-1].minor.yy51!=0 );
160797
+ yymsp[-1].minor.yy51->pLast = yymsp[-1].minor.yy51;
160798
+}
160799
+ break;
160800
+ case 265: /* trnm ::= nm DOT nm */
160516160801
{
160517160802
yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
160518160803
sqlite3ErrorMsg(pParse,
160519160804
"qualified table names are not allowed on INSERT, UPDATE, and DELETE "
160520160805
"statements within triggers");
160521160806
}
160522160807
break;
160523
- case 260: /* tridxby ::= INDEXED BY nm */
160808
+ case 266: /* tridxby ::= INDEXED BY nm */
160524160809
{
160525160810
sqlite3ErrorMsg(pParse,
160526160811
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
160527160812
"within triggers");
160528160813
}
160529160814
break;
160530
- case 261: /* tridxby ::= NOT INDEXED */
160815
+ case 267: /* tridxby ::= NOT INDEXED */
160531160816
{
160532160817
sqlite3ErrorMsg(pParse,
160533160818
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
160534160819
"within triggers");
160535160820
}
160536160821
break;
160537
- case 262: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
160538
-{yylhsminor.yy447 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy47, yymsp[-3].minor.yy242, yymsp[-1].minor.yy202, yymsp[-7].minor.yy192, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy436);}
160539
- yymsp[-8].minor.yy447 = yylhsminor.yy447;
160540
- break;
160541
- case 263: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
160542
-{
160543
- yylhsminor.yy447 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy600,yymsp[-2].minor.yy539,yymsp[-6].minor.yy192,yymsp[-1].minor.yy318,yymsp[-7].minor.yy436,yymsp[0].minor.yy436);/*yylhsminor.yy447-overwrites-yymsp[-6].minor.yy192*/
160544
-}
160545
- yymsp[-7].minor.yy447 = yylhsminor.yy447;
160546
- break;
160547
- case 264: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
160548
-{yylhsminor.yy447 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy202, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy436);}
160549
- yymsp[-5].minor.yy447 = yylhsminor.yy447;
160550
- break;
160551
- case 265: /* trigger_cmd ::= scanpt select scanpt */
160552
-{yylhsminor.yy447 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy539, yymsp[-2].minor.yy436, yymsp[0].minor.yy436); /*yylhsminor.yy447-overwrites-yymsp[-1].minor.yy539*/}
160553
- yymsp[-2].minor.yy447 = yylhsminor.yy447;
160554
- break;
160555
- case 266: /* expr ::= RAISE LP IGNORE RP */
160556
-{
160557
- yymsp[-3].minor.yy202 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
160558
- if( yymsp[-3].minor.yy202 ){
160559
- yymsp[-3].minor.yy202->affExpr = OE_Ignore;
160560
- }
160561
-}
160562
- break;
160563
- case 267: /* expr ::= RAISE LP raisetype COMMA nm RP */
160564
-{
160565
- yymsp[-5].minor.yy202 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
160566
- if( yymsp[-5].minor.yy202 ) {
160567
- yymsp[-5].minor.yy202->affExpr = (char)yymsp[-3].minor.yy192;
160568
- }
160569
-}
160570
- break;
160571
- case 268: /* raisetype ::= ROLLBACK */
160572
-{yymsp[0].minor.yy192 = OE_Rollback;}
160573
- break;
160574
- case 270: /* raisetype ::= FAIL */
160575
-{yymsp[0].minor.yy192 = OE_Fail;}
160576
- break;
160577
- case 271: /* cmd ::= DROP TRIGGER ifexists fullname */
160578
-{
160579
- sqlite3DropTrigger(pParse,yymsp[0].minor.yy47,yymsp[-1].minor.yy192);
160580
-}
160581
- break;
160582
- case 272: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
160583
-{
160584
- sqlite3Attach(pParse, yymsp[-3].minor.yy202, yymsp[-1].minor.yy202, yymsp[0].minor.yy202);
160585
-}
160586
- break;
160587
- case 273: /* cmd ::= DETACH database_kw_opt expr */
160588
-{
160589
- sqlite3Detach(pParse, yymsp[0].minor.yy202);
160590
-}
160591
- break;
160592
- case 276: /* cmd ::= REINDEX */
160822
+ case 268: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
160823
+{yylhsminor.yy51 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy457, yymsp[-3].minor.yy350, yymsp[-1].minor.yy354, yymsp[-7].minor.yy412, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy504);}
160824
+ yymsp[-8].minor.yy51 = yylhsminor.yy51;
160825
+ break;
160826
+ case 269: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
160827
+{
160828
+ yylhsminor.yy51 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy498,yymsp[-2].minor.yy293,yymsp[-6].minor.yy412,yymsp[-1].minor.yy40,yymsp[-7].minor.yy504,yymsp[0].minor.yy504);/*yylhsminor.yy51-overwrites-yymsp[-6].minor.yy412*/
160829
+}
160830
+ yymsp[-7].minor.yy51 = yylhsminor.yy51;
160831
+ break;
160832
+ case 270: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
160833
+{yylhsminor.yy51 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy354, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy504);}
160834
+ yymsp[-5].minor.yy51 = yylhsminor.yy51;
160835
+ break;
160836
+ case 271: /* trigger_cmd ::= scanpt select scanpt */
160837
+{yylhsminor.yy51 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy293, yymsp[-2].minor.yy504, yymsp[0].minor.yy504); /*yylhsminor.yy51-overwrites-yymsp[-1].minor.yy293*/}
160838
+ yymsp[-2].minor.yy51 = yylhsminor.yy51;
160839
+ break;
160840
+ case 272: /* expr ::= RAISE LP IGNORE RP */
160841
+{
160842
+ yymsp[-3].minor.yy354 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
160843
+ if( yymsp[-3].minor.yy354 ){
160844
+ yymsp[-3].minor.yy354->affExpr = OE_Ignore;
160845
+ }
160846
+}
160847
+ break;
160848
+ case 273: /* expr ::= RAISE LP raisetype COMMA nm RP */
160849
+{
160850
+ yymsp[-5].minor.yy354 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
160851
+ if( yymsp[-5].minor.yy354 ) {
160852
+ yymsp[-5].minor.yy354->affExpr = (char)yymsp[-3].minor.yy412;
160853
+ }
160854
+}
160855
+ break;
160856
+ case 274: /* raisetype ::= ROLLBACK */
160857
+{yymsp[0].minor.yy412 = OE_Rollback;}
160858
+ break;
160859
+ case 276: /* raisetype ::= FAIL */
160860
+{yymsp[0].minor.yy412 = OE_Fail;}
160861
+ break;
160862
+ case 277: /* cmd ::= DROP TRIGGER ifexists fullname */
160863
+{
160864
+ sqlite3DropTrigger(pParse,yymsp[0].minor.yy457,yymsp[-1].minor.yy412);
160865
+}
160866
+ break;
160867
+ case 278: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
160868
+{
160869
+ sqlite3Attach(pParse, yymsp[-3].minor.yy354, yymsp[-1].minor.yy354, yymsp[0].minor.yy354);
160870
+}
160871
+ break;
160872
+ case 279: /* cmd ::= DETACH database_kw_opt expr */
160873
+{
160874
+ sqlite3Detach(pParse, yymsp[0].minor.yy354);
160875
+}
160876
+ break;
160877
+ case 282: /* cmd ::= REINDEX */
160593160878
{sqlite3Reindex(pParse, 0, 0);}
160594160879
break;
160595
- case 277: /* cmd ::= REINDEX nm dbnm */
160880
+ case 283: /* cmd ::= REINDEX nm dbnm */
160596160881
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
160597160882
break;
160598
- case 278: /* cmd ::= ANALYZE */
160883
+ case 284: /* cmd ::= ANALYZE */
160599160884
{sqlite3Analyze(pParse, 0, 0);}
160600160885
break;
160601
- case 279: /* cmd ::= ANALYZE nm dbnm */
160886
+ case 285: /* cmd ::= ANALYZE nm dbnm */
160602160887
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
160603160888
break;
160604
- case 280: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
160889
+ case 286: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
160605160890
{
160606
- sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy47,&yymsp[0].minor.yy0);
160891
+ sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy457,&yymsp[0].minor.yy0);
160607160892
}
160608160893
break;
160609
- case 281: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
160894
+ case 287: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
160610160895
{
160611160896
yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
160612160897
sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
160613160898
}
160614160899
break;
160615
- case 282: /* add_column_fullname ::= fullname */
160900
+ case 288: /* add_column_fullname ::= fullname */
160616160901
{
160617160902
disableLookaside(pParse);
160618
- sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy47);
160619
-}
160620
- break;
160621
- case 283: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
160622
-{
160623
- sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy47, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
160624
-}
160625
- break;
160626
- case 284: /* cmd ::= create_vtab */
160903
+ sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy457);
160904
+}
160905
+ break;
160906
+ case 289: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
160907
+{
160908
+ sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy457, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
160909
+}
160910
+ break;
160911
+ case 290: /* cmd ::= create_vtab */
160627160912
{sqlite3VtabFinishParse(pParse,0);}
160628160913
break;
160629
- case 285: /* cmd ::= create_vtab LP vtabarglist RP */
160914
+ case 291: /* cmd ::= create_vtab LP vtabarglist RP */
160630160915
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
160631160916
break;
160632
- case 286: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
160917
+ case 292: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
160633160918
{
160634
- sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy192);
160919
+ sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy412);
160635160920
}
160636160921
break;
160637
- case 287: /* vtabarg ::= */
160922
+ case 293: /* vtabarg ::= */
160638160923
{sqlite3VtabArgInit(pParse);}
160639160924
break;
160640
- case 288: /* vtabargtoken ::= ANY */
160641
- case 289: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==289);
160642
- case 290: /* lp ::= LP */ yytestcase(yyruleno==290);
160925
+ case 294: /* vtabargtoken ::= ANY */
160926
+ case 295: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==295);
160927
+ case 296: /* lp ::= LP */ yytestcase(yyruleno==296);
160643160928
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
160644160929
break;
160645
- case 291: /* with ::= WITH wqlist */
160646
- case 292: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==292);
160647
-{ sqlite3WithPush(pParse, yymsp[0].minor.yy131, 1); }
160648
- break;
160649
- case 293: /* wqlist ::= nm eidlist_opt AS LP select RP */
160650
-{
160651
- yymsp[-5].minor.yy131 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy242, yymsp[-1].minor.yy539); /*A-overwrites-X*/
160652
-}
160653
- break;
160654
- case 294: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
160655
-{
160656
- yymsp[-7].minor.yy131 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy131, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy242, yymsp[-1].minor.yy539);
160657
-}
160658
- break;
160659
- case 295: /* windowdefn_list ::= windowdefn */
160660
-{ yylhsminor.yy303 = yymsp[0].minor.yy303; }
160661
- yymsp[0].minor.yy303 = yylhsminor.yy303;
160662
- break;
160663
- case 296: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
160664
-{
160665
- assert( yymsp[0].minor.yy303!=0 );
160666
- sqlite3WindowChain(pParse, yymsp[0].minor.yy303, yymsp[-2].minor.yy303);
160667
- yymsp[0].minor.yy303->pNextWin = yymsp[-2].minor.yy303;
160668
- yylhsminor.yy303 = yymsp[0].minor.yy303;
160669
-}
160670
- yymsp[-2].minor.yy303 = yylhsminor.yy303;
160671
- break;
160672
- case 297: /* windowdefn ::= nm AS LP window RP */
160673
-{
160674
- if( ALWAYS(yymsp[-1].minor.yy303) ){
160675
- yymsp[-1].minor.yy303->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
160676
- }
160677
- yylhsminor.yy303 = yymsp[-1].minor.yy303;
160678
-}
160679
- yymsp[-4].minor.yy303 = yylhsminor.yy303;
160680
- break;
160681
- case 298: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
160682
-{
160683
- yymsp[-4].minor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, yymsp[-2].minor.yy242, yymsp[-1].minor.yy242, 0);
160684
-}
160685
- break;
160686
- case 299: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
160687
-{
160688
- yylhsminor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, yymsp[-2].minor.yy242, yymsp[-1].minor.yy242, &yymsp[-5].minor.yy0);
160689
-}
160690
- yymsp[-5].minor.yy303 = yylhsminor.yy303;
160691
- break;
160692
- case 300: /* window ::= ORDER BY sortlist frame_opt */
160693
-{
160694
- yymsp[-3].minor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, 0, yymsp[-1].minor.yy242, 0);
160695
-}
160696
- break;
160697
- case 301: /* window ::= nm ORDER BY sortlist frame_opt */
160698
-{
160699
- yylhsminor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, 0, yymsp[-1].minor.yy242, &yymsp[-4].minor.yy0);
160700
-}
160701
- yymsp[-4].minor.yy303 = yylhsminor.yy303;
160702
- break;
160703
- case 302: /* window ::= frame_opt */
160704
- case 321: /* filter_over ::= over_clause */ yytestcase(yyruleno==321);
160705
-{
160706
- yylhsminor.yy303 = yymsp[0].minor.yy303;
160707
-}
160708
- yymsp[0].minor.yy303 = yylhsminor.yy303;
160709
- break;
160710
- case 303: /* window ::= nm frame_opt */
160711
-{
160712
- yylhsminor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, 0, 0, &yymsp[-1].minor.yy0);
160713
-}
160714
- yymsp[-1].minor.yy303 = yylhsminor.yy303;
160715
- break;
160716
- case 304: /* frame_opt ::= */
160717
-{
160718
- yymsp[1].minor.yy303 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
160719
-}
160720
- break;
160721
- case 305: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
160722
-{
160723
- yylhsminor.yy303 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy192, yymsp[-1].minor.yy77.eType, yymsp[-1].minor.yy77.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy58);
160724
-}
160725
- yymsp[-2].minor.yy303 = yylhsminor.yy303;
160726
- break;
160727
- case 306: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
160728
-{
160729
- yylhsminor.yy303 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy192, yymsp[-3].minor.yy77.eType, yymsp[-3].minor.yy77.pExpr, yymsp[-1].minor.yy77.eType, yymsp[-1].minor.yy77.pExpr, yymsp[0].minor.yy58);
160730
-}
160731
- yymsp[-5].minor.yy303 = yylhsminor.yy303;
160732
- break;
160733
- case 308: /* frame_bound_s ::= frame_bound */
160734
- case 310: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==310);
160735
-{yylhsminor.yy77 = yymsp[0].minor.yy77;}
160736
- yymsp[0].minor.yy77 = yylhsminor.yy77;
160737
- break;
160738
- case 309: /* frame_bound_s ::= UNBOUNDED PRECEDING */
160739
- case 311: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==311);
160740
- case 313: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==313);
160741
-{yylhsminor.yy77.eType = yymsp[-1].major; yylhsminor.yy77.pExpr = 0;}
160742
- yymsp[-1].minor.yy77 = yylhsminor.yy77;
160743
- break;
160744
- case 312: /* frame_bound ::= expr PRECEDING|FOLLOWING */
160745
-{yylhsminor.yy77.eType = yymsp[0].major; yylhsminor.yy77.pExpr = yymsp[-1].minor.yy202;}
160746
- yymsp[-1].minor.yy77 = yylhsminor.yy77;
160747
- break;
160748
- case 314: /* frame_exclude_opt ::= */
160749
-{yymsp[1].minor.yy58 = 0;}
160750
- break;
160751
- case 315: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
160752
-{yymsp[-1].minor.yy58 = yymsp[0].minor.yy58;}
160753
- break;
160754
- case 316: /* frame_exclude ::= NO OTHERS */
160755
- case 317: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==317);
160756
-{yymsp[-1].minor.yy58 = yymsp[-1].major; /*A-overwrites-X*/}
160757
- break;
160758
- case 318: /* frame_exclude ::= GROUP|TIES */
160759
-{yymsp[0].minor.yy58 = yymsp[0].major; /*A-overwrites-X*/}
160760
- break;
160761
- case 319: /* window_clause ::= WINDOW windowdefn_list */
160762
-{ yymsp[-1].minor.yy303 = yymsp[0].minor.yy303; }
160763
- break;
160764
- case 320: /* filter_over ::= filter_clause over_clause */
160765
-{
160766
- yymsp[0].minor.yy303->pFilter = yymsp[-1].minor.yy202;
160767
- yylhsminor.yy303 = yymsp[0].minor.yy303;
160768
-}
160769
- yymsp[-1].minor.yy303 = yylhsminor.yy303;
160770
- break;
160771
- case 322: /* filter_over ::= filter_clause */
160772
-{
160773
- yylhsminor.yy303 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
160774
- if( yylhsminor.yy303 ){
160775
- yylhsminor.yy303->eFrmType = TK_FILTER;
160776
- yylhsminor.yy303->pFilter = yymsp[0].minor.yy202;
160777
- }else{
160778
- sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy202);
160779
- }
160780
-}
160781
- yymsp[0].minor.yy303 = yylhsminor.yy303;
160782
- break;
160783
- case 323: /* over_clause ::= OVER LP window RP */
160784
-{
160785
- yymsp[-3].minor.yy303 = yymsp[-1].minor.yy303;
160786
- assert( yymsp[-3].minor.yy303!=0 );
160787
-}
160788
- break;
160789
- case 324: /* over_clause ::= OVER nm */
160790
-{
160791
- yymsp[-1].minor.yy303 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
160792
- if( yymsp[-1].minor.yy303 ){
160793
- yymsp[-1].minor.yy303->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
160794
- }
160795
-}
160796
- break;
160797
- case 325: /* filter_clause ::= FILTER LP WHERE expr RP */
160798
-{ yymsp[-4].minor.yy202 = yymsp[-1].minor.yy202; }
160930
+ case 297: /* with ::= WITH wqlist */
160931
+ case 298: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==298);
160932
+{ sqlite3WithPush(pParse, yymsp[0].minor.yy105, 1); }
160933
+ break;
160934
+ case 299: /* wqlist ::= nm eidlist_opt AS LP select RP */
160935
+{
160936
+ yymsp[-5].minor.yy105 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy350, yymsp[-1].minor.yy293); /*A-overwrites-X*/
160937
+}
160938
+ break;
160939
+ case 300: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
160940
+{
160941
+ yymsp[-7].minor.yy105 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy105, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy350, yymsp[-1].minor.yy293);
160942
+}
160943
+ break;
160944
+ case 301: /* windowdefn_list ::= windowdefn */
160945
+{ yylhsminor.yy503 = yymsp[0].minor.yy503; }
160946
+ yymsp[0].minor.yy503 = yylhsminor.yy503;
160947
+ break;
160948
+ case 302: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
160949
+{
160950
+ assert( yymsp[0].minor.yy503!=0 );
160951
+ sqlite3WindowChain(pParse, yymsp[0].minor.yy503, yymsp[-2].minor.yy503);
160952
+ yymsp[0].minor.yy503->pNextWin = yymsp[-2].minor.yy503;
160953
+ yylhsminor.yy503 = yymsp[0].minor.yy503;
160954
+}
160955
+ yymsp[-2].minor.yy503 = yylhsminor.yy503;
160956
+ break;
160957
+ case 303: /* windowdefn ::= nm AS LP window RP */
160958
+{
160959
+ if( ALWAYS(yymsp[-1].minor.yy503) ){
160960
+ yymsp[-1].minor.yy503->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
160961
+ }
160962
+ yylhsminor.yy503 = yymsp[-1].minor.yy503;
160963
+}
160964
+ yymsp[-4].minor.yy503 = yylhsminor.yy503;
160965
+ break;
160966
+ case 304: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
160967
+{
160968
+ yymsp[-4].minor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, yymsp[-2].minor.yy350, yymsp[-1].minor.yy350, 0);
160969
+}
160970
+ break;
160971
+ case 305: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
160972
+{
160973
+ yylhsminor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, yymsp[-2].minor.yy350, yymsp[-1].minor.yy350, &yymsp[-5].minor.yy0);
160974
+}
160975
+ yymsp[-5].minor.yy503 = yylhsminor.yy503;
160976
+ break;
160977
+ case 306: /* window ::= ORDER BY sortlist frame_opt */
160978
+{
160979
+ yymsp[-3].minor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, 0, yymsp[-1].minor.yy350, 0);
160980
+}
160981
+ break;
160982
+ case 307: /* window ::= nm ORDER BY sortlist frame_opt */
160983
+{
160984
+ yylhsminor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, 0, yymsp[-1].minor.yy350, &yymsp[-4].minor.yy0);
160985
+}
160986
+ yymsp[-4].minor.yy503 = yylhsminor.yy503;
160987
+ break;
160988
+ case 308: /* window ::= frame_opt */
160989
+ case 327: /* filter_over ::= over_clause */ yytestcase(yyruleno==327);
160990
+{
160991
+ yylhsminor.yy503 = yymsp[0].minor.yy503;
160992
+}
160993
+ yymsp[0].minor.yy503 = yylhsminor.yy503;
160994
+ break;
160995
+ case 309: /* window ::= nm frame_opt */
160996
+{
160997
+ yylhsminor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, 0, 0, &yymsp[-1].minor.yy0);
160998
+}
160999
+ yymsp[-1].minor.yy503 = yylhsminor.yy503;
161000
+ break;
161001
+ case 310: /* frame_opt ::= */
161002
+{
161003
+ yymsp[1].minor.yy503 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
161004
+}
161005
+ break;
161006
+ case 311: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161007
+{
161008
+ yylhsminor.yy503 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy412, yymsp[-1].minor.yy341.eType, yymsp[-1].minor.yy341.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy624);
161009
+}
161010
+ yymsp[-2].minor.yy503 = yylhsminor.yy503;
161011
+ break;
161012
+ case 312: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161013
+{
161014
+ yylhsminor.yy503 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy412, yymsp[-3].minor.yy341.eType, yymsp[-3].minor.yy341.pExpr, yymsp[-1].minor.yy341.eType, yymsp[-1].minor.yy341.pExpr, yymsp[0].minor.yy624);
161015
+}
161016
+ yymsp[-5].minor.yy503 = yylhsminor.yy503;
161017
+ break;
161018
+ case 314: /* frame_bound_s ::= frame_bound */
161019
+ case 316: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==316);
161020
+{yylhsminor.yy341 = yymsp[0].minor.yy341;}
161021
+ yymsp[0].minor.yy341 = yylhsminor.yy341;
161022
+ break;
161023
+ case 315: /* frame_bound_s ::= UNBOUNDED PRECEDING */
161024
+ case 317: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==317);
161025
+ case 319: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==319);
161026
+{yylhsminor.yy341.eType = yymsp[-1].major; yylhsminor.yy341.pExpr = 0;}
161027
+ yymsp[-1].minor.yy341 = yylhsminor.yy341;
161028
+ break;
161029
+ case 318: /* frame_bound ::= expr PRECEDING|FOLLOWING */
161030
+{yylhsminor.yy341.eType = yymsp[0].major; yylhsminor.yy341.pExpr = yymsp[-1].minor.yy354;}
161031
+ yymsp[-1].minor.yy341 = yylhsminor.yy341;
161032
+ break;
161033
+ case 320: /* frame_exclude_opt ::= */
161034
+{yymsp[1].minor.yy624 = 0;}
161035
+ break;
161036
+ case 321: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
161037
+{yymsp[-1].minor.yy624 = yymsp[0].minor.yy624;}
161038
+ break;
161039
+ case 322: /* frame_exclude ::= NO OTHERS */
161040
+ case 323: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==323);
161041
+{yymsp[-1].minor.yy624 = yymsp[-1].major; /*A-overwrites-X*/}
161042
+ break;
161043
+ case 324: /* frame_exclude ::= GROUP|TIES */
161044
+{yymsp[0].minor.yy624 = yymsp[0].major; /*A-overwrites-X*/}
161045
+ break;
161046
+ case 325: /* window_clause ::= WINDOW windowdefn_list */
161047
+{ yymsp[-1].minor.yy503 = yymsp[0].minor.yy503; }
161048
+ break;
161049
+ case 326: /* filter_over ::= filter_clause over_clause */
161050
+{
161051
+ yymsp[0].minor.yy503->pFilter = yymsp[-1].minor.yy354;
161052
+ yylhsminor.yy503 = yymsp[0].minor.yy503;
161053
+}
161054
+ yymsp[-1].minor.yy503 = yylhsminor.yy503;
161055
+ break;
161056
+ case 328: /* filter_over ::= filter_clause */
161057
+{
161058
+ yylhsminor.yy503 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
161059
+ if( yylhsminor.yy503 ){
161060
+ yylhsminor.yy503->eFrmType = TK_FILTER;
161061
+ yylhsminor.yy503->pFilter = yymsp[0].minor.yy354;
161062
+ }else{
161063
+ sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy354);
161064
+ }
161065
+}
161066
+ yymsp[0].minor.yy503 = yylhsminor.yy503;
161067
+ break;
161068
+ case 329: /* over_clause ::= OVER LP window RP */
161069
+{
161070
+ yymsp[-3].minor.yy503 = yymsp[-1].minor.yy503;
161071
+ assert( yymsp[-3].minor.yy503!=0 );
161072
+}
161073
+ break;
161074
+ case 330: /* over_clause ::= OVER nm */
161075
+{
161076
+ yymsp[-1].minor.yy503 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
161077
+ if( yymsp[-1].minor.yy503 ){
161078
+ yymsp[-1].minor.yy503->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
161079
+ }
161080
+}
161081
+ break;
161082
+ case 331: /* filter_clause ::= FILTER LP WHERE expr RP */
161083
+{ yymsp[-4].minor.yy354 = yymsp[-1].minor.yy354; }
160799161084
break;
160800161085
default:
160801
- /* (326) input ::= cmdlist */ yytestcase(yyruleno==326);
160802
- /* (327) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==327);
160803
- /* (328) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=328);
160804
- /* (329) ecmd ::= SEMI */ yytestcase(yyruleno==329);
160805
- /* (330) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==330);
160806
- /* (331) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=331);
160807
- /* (332) trans_opt ::= */ yytestcase(yyruleno==332);
160808
- /* (333) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==333);
160809
- /* (334) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==334);
160810
- /* (335) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==335);
160811
- /* (336) savepoint_opt ::= */ yytestcase(yyruleno==336);
160812
- /* (337) cmd ::= create_table create_table_args */ yytestcase(yyruleno==337);
160813
- /* (338) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==338);
160814
- /* (339) columnlist ::= columnname carglist */ yytestcase(yyruleno==339);
160815
- /* (340) nm ::= ID|INDEXED */ yytestcase(yyruleno==340);
160816
- /* (341) nm ::= STRING */ yytestcase(yyruleno==341);
160817
- /* (342) nm ::= JOIN_KW */ yytestcase(yyruleno==342);
160818
- /* (343) typetoken ::= typename */ yytestcase(yyruleno==343);
160819
- /* (344) typename ::= ID|STRING */ yytestcase(yyruleno==344);
160820
- /* (345) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=345);
160821
- /* (346) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=346);
160822
- /* (347) carglist ::= carglist ccons */ yytestcase(yyruleno==347);
160823
- /* (348) carglist ::= */ yytestcase(yyruleno==348);
160824
- /* (349) ccons ::= NULL onconf */ yytestcase(yyruleno==349);
160825
- /* (350) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==350);
160826
- /* (351) ccons ::= AS generated */ yytestcase(yyruleno==351);
160827
- /* (352) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==352);
160828
- /* (353) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==353);
160829
- /* (354) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=354);
160830
- /* (355) tconscomma ::= */ yytestcase(yyruleno==355);
160831
- /* (356) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=356);
160832
- /* (357) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=357);
160833
- /* (358) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=358);
160834
- /* (359) oneselect ::= values */ yytestcase(yyruleno==359);
160835
- /* (360) sclp ::= selcollist COMMA */ yytestcase(yyruleno==360);
160836
- /* (361) as ::= ID|STRING */ yytestcase(yyruleno==361);
160837
- /* (362) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=362);
160838
- /* (363) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==363);
160839
- /* (364) exprlist ::= nexprlist */ yytestcase(yyruleno==364);
160840
- /* (365) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=365);
160841
- /* (366) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=366);
160842
- /* (367) nmnum ::= ON */ yytestcase(yyruleno==367);
160843
- /* (368) nmnum ::= DELETE */ yytestcase(yyruleno==368);
160844
- /* (369) nmnum ::= DEFAULT */ yytestcase(yyruleno==369);
160845
- /* (370) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==370);
160846
- /* (371) foreach_clause ::= */ yytestcase(yyruleno==371);
160847
- /* (372) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==372);
160848
- /* (373) trnm ::= nm */ yytestcase(yyruleno==373);
160849
- /* (374) tridxby ::= */ yytestcase(yyruleno==374);
160850
- /* (375) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==375);
160851
- /* (376) database_kw_opt ::= */ yytestcase(yyruleno==376);
160852
- /* (377) kwcolumn_opt ::= */ yytestcase(yyruleno==377);
160853
- /* (378) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==378);
160854
- /* (379) vtabarglist ::= vtabarg */ yytestcase(yyruleno==379);
160855
- /* (380) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==380);
160856
- /* (381) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==381);
160857
- /* (382) anylist ::= */ yytestcase(yyruleno==382);
160858
- /* (383) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==383);
160859
- /* (384) anylist ::= anylist ANY */ yytestcase(yyruleno==384);
160860
- /* (385) with ::= */ yytestcase(yyruleno==385);
161086
+ /* (332) input ::= cmdlist */ yytestcase(yyruleno==332);
161087
+ /* (333) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==333);
161088
+ /* (334) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=334);
161089
+ /* (335) ecmd ::= SEMI */ yytestcase(yyruleno==335);
161090
+ /* (336) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==336);
161091
+ /* (337) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=337);
161092
+ /* (338) trans_opt ::= */ yytestcase(yyruleno==338);
161093
+ /* (339) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==339);
161094
+ /* (340) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==340);
161095
+ /* (341) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==341);
161096
+ /* (342) savepoint_opt ::= */ yytestcase(yyruleno==342);
161097
+ /* (343) cmd ::= create_table create_table_args */ yytestcase(yyruleno==343);
161098
+ /* (344) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==344);
161099
+ /* (345) columnlist ::= columnname carglist */ yytestcase(yyruleno==345);
161100
+ /* (346) nm ::= ID|INDEXED */ yytestcase(yyruleno==346);
161101
+ /* (347) nm ::= STRING */ yytestcase(yyruleno==347);
161102
+ /* (348) nm ::= JOIN_KW */ yytestcase(yyruleno==348);
161103
+ /* (349) typetoken ::= typename */ yytestcase(yyruleno==349);
161104
+ /* (350) typename ::= ID|STRING */ yytestcase(yyruleno==350);
161105
+ /* (351) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=351);
161106
+ /* (352) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=352);
161107
+ /* (353) carglist ::= carglist ccons */ yytestcase(yyruleno==353);
161108
+ /* (354) carglist ::= */ yytestcase(yyruleno==354);
161109
+ /* (355) ccons ::= NULL onconf */ yytestcase(yyruleno==355);
161110
+ /* (356) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==356);
161111
+ /* (357) ccons ::= AS generated */ yytestcase(yyruleno==357);
161112
+ /* (358) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==358);
161113
+ /* (359) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==359);
161114
+ /* (360) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=360);
161115
+ /* (361) tconscomma ::= */ yytestcase(yyruleno==361);
161116
+ /* (362) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=362);
161117
+ /* (363) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=363);
161118
+ /* (364) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=364);
161119
+ /* (365) oneselect ::= values */ yytestcase(yyruleno==365);
161120
+ /* (366) sclp ::= selcollist COMMA */ yytestcase(yyruleno==366);
161121
+ /* (367) as ::= ID|STRING */ yytestcase(yyruleno==367);
161122
+ /* (368) returning ::= */ yytestcase(yyruleno==368);
161123
+ /* (369) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=369);
161124
+ /* (370) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==370);
161125
+ /* (371) exprlist ::= nexprlist */ yytestcase(yyruleno==371);
161126
+ /* (372) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=372);
161127
+ /* (373) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=373);
161128
+ /* (374) nmnum ::= ON */ yytestcase(yyruleno==374);
161129
+ /* (375) nmnum ::= DELETE */ yytestcase(yyruleno==375);
161130
+ /* (376) nmnum ::= DEFAULT */ yytestcase(yyruleno==376);
161131
+ /* (377) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==377);
161132
+ /* (378) foreach_clause ::= */ yytestcase(yyruleno==378);
161133
+ /* (379) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==379);
161134
+ /* (380) trnm ::= nm */ yytestcase(yyruleno==380);
161135
+ /* (381) tridxby ::= */ yytestcase(yyruleno==381);
161136
+ /* (382) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==382);
161137
+ /* (383) database_kw_opt ::= */ yytestcase(yyruleno==383);
161138
+ /* (384) kwcolumn_opt ::= */ yytestcase(yyruleno==384);
161139
+ /* (385) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==385);
161140
+ /* (386) vtabarglist ::= vtabarg */ yytestcase(yyruleno==386);
161141
+ /* (387) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==387);
161142
+ /* (388) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==388);
161143
+ /* (389) anylist ::= */ yytestcase(yyruleno==389);
161144
+ /* (390) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==390);
161145
+ /* (391) anylist ::= anylist ANY */ yytestcase(yyruleno==391);
161146
+ /* (392) with ::= */ yytestcase(yyruleno==392);
160861161147
break;
160862161148
/********** End reduce actions ************************************************/
160863161149
};
160864161150
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
160865161151
yygoto = yyRuleInfoLhs[yyruleno];
@@ -161362,24 +161648,25 @@
161362161648
** might be implemented more directly using a hand-written hash table.
161363161649
** But by using this automatically generated code, the size of the code
161364161650
** is substantially reduced. This is important for embedded applications
161365161651
** on platforms with limited memory.
161366161652
*/
161367
-/* Hash score: 227 */
161368
-/* zKWText[] encodes 984 bytes of keyword text in 648 bytes */
161653
+/* Hash score: 229 */
161654
+/* zKWText[] encodes 994 bytes of keyword text in 657 bytes */
161369161655
/* REINDEXEDESCAPEACHECKEYBEFOREIGNOREGEXPLAINSTEADDATABASELECT */
161370161656
/* ABLEFTHENDEFERRABLELSEXCLUDELETEMPORARYISNULLSAVEPOINTERSECT */
161371161657
/* IESNOTNULLIKEXCEPTRANSACTIONATURALTERAISEXCLUSIVEXISTS */
161372161658
/* CONSTRAINTOFFSETRIGGERANGENERATEDETACHAVINGLOBEGINNEREFERENCES */
161373161659
/* UNIQUERYWITHOUTERELEASEATTACHBETWEENOTHINGROUPSCASCADEFAULT */
161374161660
/* CASECOLLATECREATECURRENT_DATEIMMEDIATEJOINSERTMATCHPLANALYZE */
161375161661
/* PRAGMABORTUPDATEVALUESVIRTUALWAYSWHENWHERECURSIVEAFTERENAMEAND */
161376161662
/* EFERREDISTINCTAUTOINCREMENTCASTCOLUMNCOMMITCONFLICTCROSS */
161377161663
/* CURRENT_TIMESTAMPARTITIONDROPRECEDINGFAILASTFILTEREPLACEFIRST */
161378
-/* FOLLOWINGFROMFULLIMITIFORDERESTRICTOTHERSOVERIGHTROLLBACKROWS */
161379
-/* UNBOUNDEDUNIONUSINGVACUUMVIEWINDOWBYINITIALLYPRIMARY */
161380
-static const char zKWText[647] = {
161664
+/* FOLLOWINGFROMFULLIMITIFORDERESTRICTOTHERSOVERETURNINGRIGHT */
161665
+/* ROLLBACKROWSUNBOUNDEDUNIONUSINGVACUUMVIEWINDOWBYINITIALLY */
161666
+/* PRIMARY */
161667
+static const char zKWText[656] = {
161381161668
'R','E','I','N','D','E','X','E','D','E','S','C','A','P','E','A','C','H',
161382161669
'E','C','K','E','Y','B','E','F','O','R','E','I','G','N','O','R','E','G',
161383161670
'E','X','P','L','A','I','N','S','T','E','A','D','D','A','T','A','B','A',
161384161671
'S','E','L','E','C','T','A','B','L','E','F','T','H','E','N','D','E','F',
161385161672
'E','R','R','A','B','L','E','L','S','E','X','C','L','U','D','E','L','E',
@@ -161408,47 +161695,48 @@
161408161695
'T','A','M','P','A','R','T','I','T','I','O','N','D','R','O','P','R','E',
161409161696
'C','E','D','I','N','G','F','A','I','L','A','S','T','F','I','L','T','E',
161410161697
'R','E','P','L','A','C','E','F','I','R','S','T','F','O','L','L','O','W',
161411161698
'I','N','G','F','R','O','M','F','U','L','L','I','M','I','T','I','F','O',
161412161699
'R','D','E','R','E','S','T','R','I','C','T','O','T','H','E','R','S','O',
161413
- 'V','E','R','I','G','H','T','R','O','L','L','B','A','C','K','R','O','W',
161414
- 'S','U','N','B','O','U','N','D','E','D','U','N','I','O','N','U','S','I',
161415
- 'N','G','V','A','C','U','U','M','V','I','E','W','I','N','D','O','W','B',
161416
- 'Y','I','N','I','T','I','A','L','L','Y','P','R','I','M','A','R','Y',
161700
+ 'V','E','R','E','T','U','R','N','I','N','G','R','I','G','H','T','R','O',
161701
+ 'L','L','B','A','C','K','R','O','W','S','U','N','B','O','U','N','D','E',
161702
+ 'D','U','N','I','O','N','U','S','I','N','G','V','A','C','U','U','M','V',
161703
+ 'I','E','W','I','N','D','O','W','B','Y','I','N','I','T','I','A','L','L',
161704
+ 'Y','P','R','I','M','A','R','Y',
161417161705
};
161418161706
/* aKWHash[i] is the hash value for the i-th keyword */
161419161707
static const unsigned char aKWHash[127] = {
161420
- 84, 102, 132, 82, 114, 29, 0, 0, 91, 0, 85, 72, 0,
161421
- 53, 35, 86, 15, 0, 42, 94, 54, 126, 133, 19, 0, 0,
161422
- 138, 0, 40, 128, 0, 22, 104, 0, 9, 0, 0, 122, 80,
161423
- 0, 78, 6, 0, 65, 99, 145, 0, 134, 112, 0, 0, 48,
161424
- 0, 100, 24, 0, 17, 0, 27, 70, 23, 26, 5, 60, 140,
161425
- 107, 121, 0, 73, 101, 71, 143, 61, 119, 74, 0, 49, 0,
161708
+ 84, 102, 133, 82, 114, 29, 0, 0, 91, 0, 85, 72, 0,
161709
+ 53, 35, 86, 15, 0, 42, 94, 54, 126, 134, 19, 0, 0,
161710
+ 139, 0, 40, 128, 0, 22, 104, 0, 9, 0, 0, 122, 80,
161711
+ 0, 78, 6, 0, 65, 99, 146, 0, 135, 112, 0, 0, 48,
161712
+ 0, 100, 24, 0, 17, 0, 27, 70, 23, 26, 5, 60, 141,
161713
+ 107, 121, 0, 73, 101, 71, 144, 61, 119, 74, 0, 49, 0,
161426161714
11, 41, 0, 110, 0, 0, 0, 106, 10, 108, 113, 124, 14,
161427
- 50, 123, 0, 89, 0, 18, 120, 142, 56, 129, 137, 88, 83,
161715
+ 50, 123, 0, 89, 0, 18, 120, 143, 56, 129, 138, 88, 83,
161428161716
37, 30, 125, 0, 0, 105, 51, 130, 127, 0, 34, 0, 0,
161429
- 44, 0, 95, 38, 39, 0, 20, 45, 116, 90,
161717
+ 131, 0, 95, 38, 39, 0, 20, 45, 116, 90,
161430161718
};
161431161719
/* aKWNext[] forms the hash collision chain. If aKWHash[i]==0
161432161720
** then the i-th keyword has no more hash collisions. Otherwise,
161433161721
** the next keyword with the same hash is aKWHash[i]-1. */
161434
-static const unsigned char aKWNext[145] = {
161722
+static const unsigned char aKWNext[146] = {
161435161723
0, 0, 0, 0, 4, 0, 43, 0, 0, 103, 111, 0, 0,
161436
- 0, 2, 0, 0, 141, 0, 0, 0, 13, 0, 0, 0, 0,
161437
- 139, 0, 0, 118, 52, 0, 0, 135, 12, 0, 0, 62, 0,
161438
- 136, 0, 131, 0, 0, 36, 0, 0, 28, 77, 0, 0, 0,
161724
+ 0, 2, 0, 0, 142, 0, 0, 0, 13, 0, 0, 0, 0,
161725
+ 140, 0, 0, 118, 52, 0, 0, 136, 12, 0, 0, 62, 0,
161726
+ 137, 0, 132, 0, 0, 36, 0, 0, 28, 77, 0, 0, 0,
161439161727
0, 59, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
161440
- 0, 69, 0, 0, 0, 0, 0, 144, 3, 0, 58, 0, 1,
161728
+ 0, 69, 0, 0, 0, 0, 0, 145, 3, 0, 58, 0, 1,
161441161729
75, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 64, 66,
161442161730
63, 0, 0, 0, 0, 46, 0, 16, 0, 115, 0, 0, 0,
161443161731
0, 0, 0, 0, 0, 0, 0, 81, 97, 0, 8, 0, 109,
161444161732
21, 7, 67, 0, 79, 93, 117, 0, 0, 68, 0, 0, 96,
161445
- 0, 55, 0, 76, 0, 92, 32, 33, 57, 25, 0, 98, 0,
161446
- 0, 87,
161733
+ 44, 0, 55, 0, 76, 0, 92, 32, 33, 57, 25, 0, 98,
161734
+ 0, 0, 87,
161447161735
};
161448161736
/* aKWLen[i] is the length (in bytes) of the i-th keyword */
161449
-static const unsigned char aKWLen[145] = {
161737
+static const unsigned char aKWLen[146] = {
161450161738
7, 7, 5, 4, 6, 4, 5, 3, 6, 7, 3, 6, 6,
161451161739
7, 7, 3, 8, 2, 6, 5, 4, 4, 3, 10, 4, 7,
161452161740
6, 9, 4, 2, 6, 5, 9, 9, 4, 7, 3, 2, 4,
161453161741
4, 6, 11, 6, 2, 7, 5, 5, 9, 6, 10, 4, 6,
161454161742
2, 3, 7, 5, 9, 6, 6, 4, 5, 5, 10, 6, 5,
@@ -161455,16 +161743,16 @@
161455161743
7, 4, 5, 7, 6, 7, 7, 6, 5, 7, 3, 7, 4,
161456161744
7, 6, 12, 9, 4, 6, 5, 4, 7, 6, 5, 6, 6,
161457161745
7, 6, 4, 5, 9, 5, 6, 3, 8, 8, 2, 13, 2,
161458161746
2, 4, 6, 6, 8, 5, 17, 12, 7, 9, 4, 9, 4,
161459161747
4, 6, 7, 5, 9, 4, 4, 5, 2, 5, 8, 6, 4,
161460
- 5, 8, 4, 3, 9, 5, 5, 6, 4, 6, 2, 2, 9,
161461
- 3, 7,
161748
+ 9, 5, 8, 4, 3, 9, 5, 5, 6, 4, 6, 2, 2,
161749
+ 9, 3, 7,
161462161750
};
161463161751
/* aKWOffset[i] is the index into zKWText[] of the start of
161464161752
** the text for the i-th keyword. */
161465
-static const unsigned short int aKWOffset[145] = {
161753
+static const unsigned short int aKWOffset[146] = {
161466161754
0, 2, 2, 8, 9, 14, 16, 20, 23, 25, 25, 29, 33,
161467161755
36, 41, 46, 48, 53, 54, 59, 62, 65, 67, 69, 78, 81,
161468161756
86, 90, 90, 94, 99, 101, 105, 111, 119, 123, 123, 123, 126,
161469161757
129, 132, 137, 142, 146, 147, 152, 156, 160, 168, 174, 181, 184,
161470161758
184, 187, 189, 195, 198, 206, 211, 216, 219, 222, 226, 236, 239,
@@ -161471,15 +161759,15 @@
161471161759
244, 244, 248, 252, 259, 265, 271, 277, 277, 283, 284, 288, 295,
161472161760
299, 306, 312, 324, 333, 335, 341, 346, 348, 355, 360, 365, 371,
161473161761
377, 382, 388, 392, 395, 404, 408, 414, 416, 423, 424, 431, 433,
161474161762
435, 444, 448, 454, 460, 468, 473, 473, 473, 489, 498, 501, 510,
161475161763
513, 517, 522, 529, 534, 543, 547, 550, 555, 557, 561, 569, 575,
161476
- 578, 583, 591, 591, 595, 604, 609, 614, 620, 623, 626, 629, 631,
161477
- 636, 640,
161764
+ 578, 587, 592, 600, 600, 604, 613, 618, 623, 629, 632, 635, 638,
161765
+ 640, 645, 649,
161478161766
};
161479161767
/* aKWCode[i] is the parser symbol code for the i-th keyword */
161480
-static const unsigned char aKWCode[145] = {
161768
+static const unsigned char aKWCode[146] = {
161481161769
TK_REINDEX, TK_INDEXED, TK_INDEX, TK_DESC, TK_ESCAPE,
161482161770
TK_EACH, TK_CHECK, TK_KEY, TK_BEFORE, TK_FOREIGN,
161483161771
TK_FOR, TK_IGNORE, TK_LIKE_KW, TK_EXPLAIN, TK_INSTEAD,
161484161772
TK_ADD, TK_DATABASE, TK_AS, TK_SELECT, TK_TABLE,
161485161773
TK_JOIN_KW, TK_THEN, TK_END, TK_DEFERRABLE, TK_ELSE,
@@ -161502,13 +161790,14 @@
161502161790
TK_CAST, TK_COLUMNKW, TK_COMMIT, TK_CONFLICT, TK_JOIN_KW,
161503161791
TK_CTIME_KW, TK_CTIME_KW, TK_CURRENT, TK_PARTITION, TK_DROP,
161504161792
TK_PRECEDING, TK_FAIL, TK_LAST, TK_FILTER, TK_REPLACE,
161505161793
TK_FIRST, TK_FOLLOWING, TK_FROM, TK_JOIN_KW, TK_LIMIT,
161506161794
TK_IF, TK_ORDER, TK_RESTRICT, TK_OTHERS, TK_OVER,
161507
- TK_JOIN_KW, TK_ROLLBACK, TK_ROWS, TK_ROW, TK_UNBOUNDED,
161508
- TK_UNION, TK_USING, TK_VACUUM, TK_VIEW, TK_WINDOW,
161509
- TK_DO, TK_BY, TK_INITIALLY, TK_ALL, TK_PRIMARY,
161795
+ TK_RETURNING, TK_JOIN_KW, TK_ROLLBACK, TK_ROWS, TK_ROW,
161796
+ TK_UNBOUNDED, TK_UNION, TK_USING, TK_VACUUM, TK_VIEW,
161797
+ TK_WINDOW, TK_DO, TK_BY, TK_INITIALLY, TK_ALL,
161798
+ TK_PRIMARY,
161510161799
};
161511161800
/* Hash table decoded:
161512161801
** 0: INSERT
161513161802
** 1: IS
161514161803
** 2: ROLLBACK TRIGGER
@@ -161624,11 +161913,11 @@
161624161913
** 112: ORDER OUTER
161625161914
** 113:
161626161915
** 114: INTERSECT UNBOUNDED
161627161916
** 115:
161628161917
** 116:
161629
-** 117: ON
161918
+** 117: RETURNING ON
161630161919
** 118:
161631161920
** 119: WHERE
161632161921
** 120: NO INNER
161633161922
** 121: NULL
161634161923
** 122:
@@ -161789,25 +162078,26 @@
161789162078
testcase( i==125 ); /* IF */
161790162079
testcase( i==126 ); /* ORDER */
161791162080
testcase( i==127 ); /* RESTRICT */
161792162081
testcase( i==128 ); /* OTHERS */
161793162082
testcase( i==129 ); /* OVER */
161794
- testcase( i==130 ); /* RIGHT */
161795
- testcase( i==131 ); /* ROLLBACK */
161796
- testcase( i==132 ); /* ROWS */
161797
- testcase( i==133 ); /* ROW */
161798
- testcase( i==134 ); /* UNBOUNDED */
161799
- testcase( i==135 ); /* UNION */
161800
- testcase( i==136 ); /* USING */
161801
- testcase( i==137 ); /* VACUUM */
161802
- testcase( i==138 ); /* VIEW */
161803
- testcase( i==139 ); /* WINDOW */
161804
- testcase( i==140 ); /* DO */
161805
- testcase( i==141 ); /* BY */
161806
- testcase( i==142 ); /* INITIALLY */
161807
- testcase( i==143 ); /* ALL */
161808
- testcase( i==144 ); /* PRIMARY */
162083
+ testcase( i==130 ); /* RETURNING */
162084
+ testcase( i==131 ); /* RIGHT */
162085
+ testcase( i==132 ); /* ROLLBACK */
162086
+ testcase( i==133 ); /* ROWS */
162087
+ testcase( i==134 ); /* ROW */
162088
+ testcase( i==135 ); /* UNBOUNDED */
162089
+ testcase( i==136 ); /* UNION */
162090
+ testcase( i==137 ); /* USING */
162091
+ testcase( i==138 ); /* VACUUM */
162092
+ testcase( i==139 ); /* VIEW */
162093
+ testcase( i==140 ); /* WINDOW */
162094
+ testcase( i==141 ); /* DO */
162095
+ testcase( i==142 ); /* BY */
162096
+ testcase( i==143 ); /* INITIALLY */
162097
+ testcase( i==144 ); /* ALL */
162098
+ testcase( i==145 ); /* PRIMARY */
161809162099
*pType = aKWCode[i];
161810162100
break;
161811162101
}
161812162102
}
161813162103
return n;
@@ -161815,11 +162105,11 @@
161815162105
SQLITE_PRIVATE int sqlite3KeywordCode(const unsigned char *z, int n){
161816162106
int id = TK_ID;
161817162107
keywordCode((char*)z, n, &id);
161818162108
return id;
161819162109
}
161820
-#define SQLITE_N_KEYWORD 145
162110
+#define SQLITE_N_KEYWORD 146
161821162111
SQLITE_API int sqlite3_keyword_name(int i,const char **pzName,int *pnName){
161822162112
if( i<0 || i>=SQLITE_N_KEYWORD ) return SQLITE_ERROR;
161823162113
*pzName = zKWText + aKWOffset[i];
161824162114
*pnName = aKWLen[i];
161825162115
return SQLITE_OK;
@@ -207945,28 +208235,198 @@
207945208235
rc = sessionChangesetInvert(&sInput, xOutput, pOut, 0, 0);
207946208236
sqlite3_free(sInput.buf.aBuf);
207947208237
return rc;
207948208238
}
207949208239
208240
+
208241
+typedef struct SessionUpdate SessionUpdate;
208242
+struct SessionUpdate {
208243
+ sqlite3_stmt *pStmt;
208244
+ u32 *aMask;
208245
+ SessionUpdate *pNext;
208246
+};
208247
+
207950208248
typedef struct SessionApplyCtx SessionApplyCtx;
207951208249
struct SessionApplyCtx {
207952208250
sqlite3 *db;
207953208251
sqlite3_stmt *pDelete; /* DELETE statement */
207954
- sqlite3_stmt *pUpdate; /* UPDATE statement */
207955208252
sqlite3_stmt *pInsert; /* INSERT statement */
207956208253
sqlite3_stmt *pSelect; /* SELECT statement */
207957208254
int nCol; /* Size of azCol[] and abPK[] arrays */
207958208255
const char **azCol; /* Array of column names */
207959208256
u8 *abPK; /* Boolean array - true if column is in PK */
208257
+ u32 *aUpdateMask; /* Used by sessionUpdateFind */
208258
+ SessionUpdate *pUp;
207960208259
int bStat1; /* True if table is sqlite_stat1 */
207961208260
int bDeferConstraints; /* True to defer constraints */
207962208261
int bInvertConstraints; /* Invert when iterating constraints buffer */
207963208262
SessionBuffer constraints; /* Deferred constraints are stored here */
207964208263
SessionBuffer rebase; /* Rebase information (if any) here */
207965208264
u8 bRebaseStarted; /* If table header is already in rebase */
207966208265
u8 bRebase; /* True to collect rebase information */
207967208266
};
208267
+
208268
+/* Number of prepared UPDATE statements to cache. */
208269
+#define SESSION_UPDATE_CACHE_SZ 12
208270
+
208271
+/*
208272
+** Find a prepared UPDATE statement suitable for the UPDATE step currently
208273
+** being visited by the iterator. The UPDATE is of the form:
208274
+**
208275
+** UPDATE tbl SET col = ?, col2 = ? WHERE pk1 IS ? AND pk2 IS ?
208276
+*/
208277
+static int sessionUpdateFind(
208278
+ sqlite3_changeset_iter *pIter,
208279
+ SessionApplyCtx *p,
208280
+ int bPatchset,
208281
+ sqlite3_stmt **ppStmt
208282
+){
208283
+ int rc = SQLITE_OK;
208284
+ SessionUpdate *pUp = 0;
208285
+ int nCol = pIter->nCol;
208286
+ int nU32 = (pIter->nCol+33)/32;
208287
+ int ii;
208288
+
208289
+ if( p->aUpdateMask==0 ){
208290
+ p->aUpdateMask = sqlite3_malloc(nU32*sizeof(u32));
208291
+ if( p->aUpdateMask==0 ){
208292
+ rc = SQLITE_NOMEM;
208293
+ }
208294
+ }
208295
+
208296
+ if( rc==SQLITE_OK ){
208297
+ memset(p->aUpdateMask, 0, nU32*sizeof(u32));
208298
+ rc = SQLITE_CORRUPT;
208299
+ for(ii=0; ii<pIter->nCol; ii++){
208300
+ if( sessionChangesetNew(pIter, ii) ){
208301
+ p->aUpdateMask[ii/32] |= (1<<(ii%32));
208302
+ rc = SQLITE_OK;
208303
+ }
208304
+ }
208305
+ }
208306
+
208307
+ if( rc==SQLITE_OK ){
208308
+ if( bPatchset ) p->aUpdateMask[nCol/32] |= (1<<(nCol%32));
208309
+
208310
+ if( p->pUp ){
208311
+ int nUp = 0;
208312
+ SessionUpdate **pp = &p->pUp;
208313
+ while( 1 ){
208314
+ nUp++;
208315
+ if( 0==memcmp(p->aUpdateMask, (*pp)->aMask, nU32*sizeof(u32)) ){
208316
+ pUp = *pp;
208317
+ *pp = pUp->pNext;
208318
+ pUp->pNext = p->pUp;
208319
+ p->pUp = pUp;
208320
+ break;
208321
+ }
208322
+
208323
+ if( (*pp)->pNext ){
208324
+ pp = &(*pp)->pNext;
208325
+ }else{
208326
+ if( nUp>=SESSION_UPDATE_CACHE_SZ ){
208327
+ sqlite3_finalize((*pp)->pStmt);
208328
+ sqlite3_free(*pp);
208329
+ *pp = 0;
208330
+ }
208331
+ break;
208332
+ }
208333
+ }
208334
+ }
208335
+
208336
+ if( pUp==0 ){
208337
+ int nByte = sizeof(SessionUpdate) * nU32*sizeof(u32);
208338
+ int bStat1 = (sqlite3_stricmp(pIter->zTab, "sqlite_stat1")==0);
208339
+ pUp = (SessionUpdate*)sqlite3_malloc(nByte);
208340
+ if( pUp==0 ){
208341
+ rc = SQLITE_NOMEM;
208342
+ }else{
208343
+ const char *zSep = "";
208344
+ SessionBuffer buf;
208345
+
208346
+ memset(&buf, 0, sizeof(buf));
208347
+ pUp->aMask = (u32*)&pUp[1];
208348
+ memcpy(pUp->aMask, p->aUpdateMask, nU32*sizeof(u32));
208349
+
208350
+ sessionAppendStr(&buf, "UPDATE main.", &rc);
208351
+ sessionAppendIdent(&buf, pIter->zTab, &rc);
208352
+ sessionAppendStr(&buf, " SET ", &rc);
208353
+
208354
+ /* Create the assignments part of the UPDATE */
208355
+ for(ii=0; ii<pIter->nCol; ii++){
208356
+ if( p->abPK[ii]==0 && sessionChangesetNew(pIter, ii) ){
208357
+ sessionAppendStr(&buf, zSep, &rc);
208358
+ sessionAppendIdent(&buf, p->azCol[ii], &rc);
208359
+ sessionAppendStr(&buf, " = ?", &rc);
208360
+ sessionAppendInteger(&buf, ii*2+1, &rc);
208361
+ zSep = ", ";
208362
+ }
208363
+ }
208364
+
208365
+ /* Create the WHERE clause part of the UPDATE */
208366
+ zSep = "";
208367
+ sessionAppendStr(&buf, " WHERE ", &rc);
208368
+ for(ii=0; ii<pIter->nCol; ii++){
208369
+ if( p->abPK[ii] || (bPatchset==0 && sessionChangesetOld(pIter, ii)) ){
208370
+ sessionAppendStr(&buf, zSep, &rc);
208371
+ if( bStat1 && ii==1 ){
208372
+ assert( sqlite3_stricmp(p->azCol[ii], "idx")==0 );
208373
+ sessionAppendStr(&buf,
208374
+ "idx IS CASE "
208375
+ "WHEN length(?4)=0 AND typeof(?4)='blob' THEN NULL "
208376
+ "ELSE ?4 END ", &rc
208377
+ );
208378
+ }else{
208379
+ sessionAppendIdent(&buf, p->azCol[ii], &rc);
208380
+ sessionAppendStr(&buf, " IS ?", &rc);
208381
+ sessionAppendInteger(&buf, ii*2+2, &rc);
208382
+ }
208383
+ zSep = " AND ";
208384
+ }
208385
+ }
208386
+
208387
+ if( rc==SQLITE_OK ){
208388
+ char *zSql = (char*)buf.aBuf;
208389
+ rc = sqlite3_prepare_v2(p->db, zSql, buf.nBuf, &pUp->pStmt, 0);
208390
+ }
208391
+
208392
+ if( rc!=SQLITE_OK ){
208393
+ sqlite3_free(pUp);
208394
+ pUp = 0;
208395
+ }else{
208396
+ pUp->pNext = p->pUp;
208397
+ p->pUp = pUp;
208398
+ }
208399
+ sqlite3_free(buf.aBuf);
208400
+ }
208401
+ }
208402
+ }
208403
+
208404
+ assert( (rc==SQLITE_OK)==(pUp!=0) );
208405
+ if( pUp ){
208406
+ *ppStmt = pUp->pStmt;
208407
+ }else{
208408
+ *ppStmt = 0;
208409
+ }
208410
+ return rc;
208411
+}
208412
+
208413
+/*
208414
+** Free all cached UPDATE statements.
208415
+*/
208416
+static void sessionUpdateFree(SessionApplyCtx *p){
208417
+ SessionUpdate *pUp;
208418
+ SessionUpdate *pNext;
208419
+ for(pUp=p->pUp; pUp; pUp=pNext){
208420
+ pNext = pUp->pNext;
208421
+ sqlite3_finalize(pUp->pStmt);
208422
+ sqlite3_free(pUp);
208423
+ }
208424
+ p->pUp = 0;
208425
+ sqlite3_free(p->aUpdateMask);
208426
+ p->aUpdateMask = 0;
208427
+}
207968208428
207969208429
/*
207970208430
** Formulate a statement to DELETE a row from database db. Assuming a table
207971208431
** structure like this:
207972208432
**
@@ -208032,107 +208492,10 @@
208032208492
}
208033208493
sqlite3_free(buf.aBuf);
208034208494
208035208495
return rc;
208036208496
}
208037
-
208038
-/*
208039
-** Formulate and prepare a statement to UPDATE a row from database db.
208040
-** Assuming a table structure like this:
208041
-**
208042
-** CREATE TABLE x(a, b, c, d, PRIMARY KEY(a, c));
208043
-**
208044
-** The UPDATE statement looks like this:
208045
-**
208046
-** UPDATE x SET
208047
-** a = CASE WHEN ?2 THEN ?3 ELSE a END,
208048
-** b = CASE WHEN ?5 THEN ?6 ELSE b END,
208049
-** c = CASE WHEN ?8 THEN ?9 ELSE c END,
208050
-** d = CASE WHEN ?11 THEN ?12 ELSE d END
208051
-** WHERE a = ?1 AND c = ?7 AND (?13 OR
208052
-** (?5==0 OR b IS ?4) AND (?11==0 OR d IS ?10) AND
208053
-** )
208054
-**
208055
-** For each column in the table, there are three variables to bind:
208056
-**
208057
-** ?(i*3+1) The old.* value of the column, if any.
208058
-** ?(i*3+2) A boolean flag indicating that the value is being modified.
208059
-** ?(i*3+3) The new.* value of the column, if any.
208060
-**
208061
-** Also, a boolean flag that, if set to true, causes the statement to update
208062
-** a row even if the non-PK values do not match. This is required if the
208063
-** conflict-handler is invoked with CHANGESET_DATA and returns
208064
-** CHANGESET_REPLACE. This is variable "?(nCol*3+1)".
208065
-**
208066
-** If successful, SQLITE_OK is returned and SessionApplyCtx.pUpdate is left
208067
-** pointing to the prepared version of the SQL statement.
208068
-*/
208069
-static int sessionUpdateRow(
208070
- sqlite3 *db, /* Database handle */
208071
- const char *zTab, /* Table name */
208072
- SessionApplyCtx *p /* Session changeset-apply context */
208073
-){
208074
- int rc = SQLITE_OK;
208075
- int i;
208076
- const char *zSep = "";
208077
- SessionBuffer buf = {0, 0, 0};
208078
-
208079
- /* Append "UPDATE tbl SET " */
208080
- sessionAppendStr(&buf, "UPDATE main.", &rc);
208081
- sessionAppendIdent(&buf, zTab, &rc);
208082
- sessionAppendStr(&buf, " SET ", &rc);
208083
-
208084
- /* Append the assignments */
208085
- for(i=0; i<p->nCol; i++){
208086
- sessionAppendStr(&buf, zSep, &rc);
208087
- sessionAppendIdent(&buf, p->azCol[i], &rc);
208088
- sessionAppendStr(&buf, " = CASE WHEN ?", &rc);
208089
- sessionAppendInteger(&buf, i*3+2, &rc);
208090
- sessionAppendStr(&buf, " THEN ?", &rc);
208091
- sessionAppendInteger(&buf, i*3+3, &rc);
208092
- sessionAppendStr(&buf, " ELSE ", &rc);
208093
- sessionAppendIdent(&buf, p->azCol[i], &rc);
208094
- sessionAppendStr(&buf, " END", &rc);
208095
- zSep = ", ";
208096
- }
208097
-
208098
- /* Append the PK part of the WHERE clause */
208099
- sessionAppendStr(&buf, " WHERE ", &rc);
208100
- for(i=0; i<p->nCol; i++){
208101
- if( p->abPK[i] ){
208102
- sessionAppendIdent(&buf, p->azCol[i], &rc);
208103
- sessionAppendStr(&buf, " = ?", &rc);
208104
- sessionAppendInteger(&buf, i*3+1, &rc);
208105
- sessionAppendStr(&buf, " AND ", &rc);
208106
- }
208107
- }
208108
-
208109
- /* Append the non-PK part of the WHERE clause */
208110
- sessionAppendStr(&buf, " (?", &rc);
208111
- sessionAppendInteger(&buf, p->nCol*3+1, &rc);
208112
- sessionAppendStr(&buf, " OR 1", &rc);
208113
- for(i=0; i<p->nCol; i++){
208114
- if( !p->abPK[i] ){
208115
- sessionAppendStr(&buf, " AND (?", &rc);
208116
- sessionAppendInteger(&buf, i*3+2, &rc);
208117
- sessionAppendStr(&buf, "=0 OR ", &rc);
208118
- sessionAppendIdent(&buf, p->azCol[i], &rc);
208119
- sessionAppendStr(&buf, " IS ?", &rc);
208120
- sessionAppendInteger(&buf, i*3+1, &rc);
208121
- sessionAppendStr(&buf, ")", &rc);
208122
- }
208123
- }
208124
- sessionAppendStr(&buf, ")", &rc);
208125
-
208126
- if( rc==SQLITE_OK ){
208127
- rc = sqlite3_prepare_v2(db, (char *)buf.aBuf, buf.nBuf, &p->pUpdate, 0);
208128
- }
208129
- sqlite3_free(buf.aBuf);
208130
-
208131
- return rc;
208132
-}
208133
-
208134208497
208135208498
/*
208136208499
** Formulate and prepare an SQL statement to query table zTab by primary
208137208500
** key. Assuming the following table structure:
208138208501
**
@@ -208210,21 +208573,10 @@
208210208573
"INSERT INTO main.sqlite_stat1 VALUES(?1, "
208211208574
"CASE WHEN length(?2)=0 AND typeof(?2)='blob' THEN NULL ELSE ?2 END, "
208212208575
"?3)"
208213208576
);
208214208577
}
208215
- if( rc==SQLITE_OK ){
208216
- rc = sessionPrepare(db, &p->pUpdate,
208217
- "UPDATE main.sqlite_stat1 SET "
208218
- "tbl = CASE WHEN ?2 THEN ?3 ELSE tbl END, "
208219
- "idx = CASE WHEN ?5 THEN ?6 ELSE idx END, "
208220
- "stat = CASE WHEN ?8 THEN ?9 ELSE stat END "
208221
- "WHERE tbl=?1 AND idx IS "
208222
- "CASE WHEN length(?4)=0 AND typeof(?4)='blob' THEN NULL ELSE ?4 END "
208223
- "AND (?10 OR ?8=0 OR stat IS ?7)"
208224
- );
208225
- }
208226208578
if( rc==SQLITE_OK ){
208227208579
rc = sessionPrepare(db, &p->pDelete,
208228208580
"DELETE FROM main.sqlite_stat1 WHERE tbl=?1 AND idx IS "
208229208581
"CASE WHEN length(?2)=0 AND typeof(?2)='blob' THEN NULL ELSE ?2 END "
208230208582
"AND (?4 OR stat IS ?3)"
@@ -208537,11 +208889,11 @@
208537208889
const char *zDummy;
208538208890
int op;
208539208891
int nCol;
208540208892
int rc = SQLITE_OK;
208541208893
208542
- assert( p->pDelete && p->pUpdate && p->pInsert && p->pSelect );
208894
+ assert( p->pDelete && p->pInsert && p->pSelect );
208543208895
assert( p->azCol && p->abPK );
208544208896
assert( !pbReplace || *pbReplace==0 );
208545208897
208546208898
sqlite3changeset_op(pIter, &zDummy, &nCol, &op, 0);
208547208899
@@ -208577,33 +208929,32 @@
208577208929
);
208578208930
}
208579208931
208580208932
}else if( op==SQLITE_UPDATE ){
208581208933
int i;
208934
+ sqlite3_stmt *pUp = 0;
208935
+ int bPatchset = (pbRetry==0 || pIter->bPatchset);
208936
+
208937
+ rc = sessionUpdateFind(pIter, p, bPatchset, &pUp);
208582208938
208583208939
/* Bind values to the UPDATE statement. */
208584208940
for(i=0; rc==SQLITE_OK && i<nCol; i++){
208585208941
sqlite3_value *pOld = sessionChangesetOld(pIter, i);
208586208942
sqlite3_value *pNew = sessionChangesetNew(pIter, i);
208587
-
208588
- sqlite3_bind_int(p->pUpdate, i*3+2, !!pNew);
208589
- if( pOld ){
208590
- rc = sessionBindValue(p->pUpdate, i*3+1, pOld);
208943
+ if( p->abPK[i] || (bPatchset==0 && pOld) ){
208944
+ rc = sessionBindValue(pUp, i*2+2, pOld);
208591208945
}
208592208946
if( rc==SQLITE_OK && pNew ){
208593
- rc = sessionBindValue(p->pUpdate, i*3+3, pNew);
208947
+ rc = sessionBindValue(pUp, i*2+1, pNew);
208594208948
}
208595208949
}
208596
- if( rc==SQLITE_OK ){
208597
- sqlite3_bind_int(p->pUpdate, nCol*3+1, pbRetry==0 || pIter->bPatchset);
208598
- }
208599208950
if( rc!=SQLITE_OK ) return rc;
208600208951
208601208952
/* Attempt the UPDATE. In the case of a NOTFOUND or DATA conflict,
208602208953
** the result will be SQLITE_OK with 0 rows modified. */
208603
- sqlite3_step(p->pUpdate);
208604
- rc = sqlite3_reset(p->pUpdate);
208954
+ sqlite3_step(pUp);
208955
+ rc = sqlite3_reset(pUp);
208605208956
208606208957
if( rc==SQLITE_OK && sqlite3_changes(p->db)==0 ){
208607208958
/* A NOTFOUND or DATA error. Search the table to see if it contains
208608208959
** a row with a matching primary key. If so, this is a DATA conflict.
208609208960
** Otherwise, if there is no primary key match, it is a NOTFOUND. */
@@ -208822,18 +209173,17 @@
208822209173
rc = sessionRetryConstraints(
208823209174
db, pIter->bPatchset, zTab, &sApply, xConflict, pCtx
208824209175
);
208825209176
if( rc!=SQLITE_OK ) break;
208826209177
209178
+ sessionUpdateFree(&sApply);
208827209179
sqlite3_free((char*)sApply.azCol); /* cast works around VC++ bug */
208828209180
sqlite3_finalize(sApply.pDelete);
208829
- sqlite3_finalize(sApply.pUpdate);
208830209181
sqlite3_finalize(sApply.pInsert);
208831209182
sqlite3_finalize(sApply.pSelect);
208832209183
sApply.db = db;
208833209184
sApply.pDelete = 0;
208834
- sApply.pUpdate = 0;
208835209185
sApply.pInsert = 0;
208836209186
sApply.pSelect = 0;
208837209187
sApply.nCol = 0;
208838209188
sApply.azCol = 0;
208839209189
sApply.abPK = 0;
@@ -208893,15 +209243,14 @@
208893209243
if( (rc = sessionStat1Sql(db, &sApply) ) ){
208894209244
break;
208895209245
}
208896209246
sApply.bStat1 = 1;
208897209247
}else{
208898
- if((rc = sessionSelectRow(db, zTab, &sApply))
208899
- || (rc = sessionUpdateRow(db, zTab, &sApply))
208900
- || (rc = sessionDeleteRow(db, zTab, &sApply))
208901
- || (rc = sessionInsertRow(db, zTab, &sApply))
208902
- ){
209248
+ if( (rc = sessionSelectRow(db, zTab, &sApply))
209249
+ || (rc = sessionDeleteRow(db, zTab, &sApply))
209250
+ || (rc = sessionInsertRow(db, zTab, &sApply))
209251
+ ){
208903209252
break;
208904209253
}
208905209254
sApply.bStat1 = 0;
208906209255
}
208907209256
}
@@ -208956,13 +209305,13 @@
208956209305
if( rc==SQLITE_OK && bPatchset==0 && sApply.bRebase ){
208957209306
*ppRebase = (void*)sApply.rebase.aBuf;
208958209307
*pnRebase = sApply.rebase.nBuf;
208959209308
sApply.rebase.aBuf = 0;
208960209309
}
209310
+ sessionUpdateFree(&sApply);
208961209311
sqlite3_finalize(sApply.pInsert);
208962209312
sqlite3_finalize(sApply.pDelete);
208963
- sqlite3_finalize(sApply.pUpdate);
208964209313
sqlite3_finalize(sApply.pSelect);
208965209314
sqlite3_free((char*)sApply.azCol); /* cast works around VC++ bug */
208966209315
sqlite3_free((char*)sApply.constraints.aBuf);
208967209316
sqlite3_free((char*)sApply.rebase.aBuf);
208968209317
sqlite3_mutex_leave(sqlite3_db_mutex(db));
@@ -228066,11 +228415,11 @@
228066228415
int nArg, /* Number of args */
228067228416
sqlite3_value **apUnused /* Function arguments */
228068228417
){
228069228418
assert( nArg==0 );
228070228419
UNUSED_PARAM2(nArg, apUnused);
228071
- sqlite3_result_text(pCtx, "fts5: 2021-01-27 19:15:06 9dc7fc9f04d5c14fc436e5ff5b4c06c1969ddde5857ebeb5dccd59b7c748c339", -1, SQLITE_TRANSIENT);
228420
+ sqlite3_result_text(pCtx, "fts5: 2021-02-03 13:20:12 1eb69c64ed4a11601698000573c507684bc4b0366336ba0748ebd661644d0902", -1, SQLITE_TRANSIENT);
228072228421
}
228073228422
228074228423
/*
228075228424
** Return true if zName is the extension on one of the shadow tables used
228076228425
** by this module.
@@ -232992,12 +233341,12 @@
232992233341
}
232993233342
#endif /* SQLITE_CORE */
232994233343
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
232995233344
232996233345
/************** End of stmt.c ************************************************/
232997
-#if __LINE__!=232997
233346
+#if __LINE__!=233346
232998233347
#undef SQLITE_SOURCE_ID
232999
-#define SQLITE_SOURCE_ID "2021-01-27 19:15:06 9dc7fc9f04d5c14fc436e5ff5b4c06c1969ddde5857ebeb5dccd59b7c748alt2"
233348
+#define SQLITE_SOURCE_ID "2021-02-03 13:20:12 1eb69c64ed4a11601698000573c507684bc4b0366336ba0748ebd661644dalt2"
233000233349
#endif
233001233350
/* Return the source-id for this library */
233002233351
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
233003233352
/************************** End of sqlite3.c ******************************/
233004233353
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1186,11 +1186,11 @@
1186 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1187 ** [sqlite_version()] and [sqlite_source_id()].
1188 */
1189 #define SQLITE_VERSION "3.35.0"
1190 #define SQLITE_VERSION_NUMBER 3035000
1191 #define SQLITE_SOURCE_ID "2021-01-27 19:15:06 9dc7fc9f04d5c14fc436e5ff5b4c06c1969ddde5857ebeb5dccd59b7c748c339"
1192
1193 /*
1194 ** CAPI3REF: Run-Time Library Version Numbers
1195 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1196 **
@@ -3176,11 +3176,17 @@
3176 ** The first argument is an integer which is 0 to disable triggers,
3177 ** positive to enable triggers or negative to leave the setting unchanged.
3178 ** The second parameter is a pointer to an integer into which
3179 ** is written 0 or 1 to indicate whether triggers are disabled or enabled
3180 ** following this call. The second parameter may be a NULL pointer, in
3181 ** which case the trigger setting is not reported back. </dd>
 
 
 
 
 
 
3182 **
3183 ** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
3184 ** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
3185 ** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
3186 ** There should be two additional arguments.
@@ -14170,43 +14176,44 @@
14170 #define TK_ORDER 143
14171 #define TK_GROUP 144
14172 #define TK_HAVING 145
14173 #define TK_LIMIT 146
14174 #define TK_WHERE 147
14175 #define TK_INTO 148
14176 #define TK_NOTHING 149
14177 #define TK_FLOAT 150
14178 #define TK_BLOB 151
14179 #define TK_INTEGER 152
14180 #define TK_VARIABLE 153
14181 #define TK_CASE 154
14182 #define TK_WHEN 155
14183 #define TK_THEN 156
14184 #define TK_ELSE 157
14185 #define TK_INDEX 158
14186 #define TK_ALTER 159
14187 #define TK_ADD 160
14188 #define TK_WINDOW 161
14189 #define TK_OVER 162
14190 #define TK_FILTER 163
14191 #define TK_COLUMN 164
14192 #define TK_AGG_FUNCTION 165
14193 #define TK_AGG_COLUMN 166
14194 #define TK_TRUEFALSE 167
14195 #define TK_ISNOT 168
14196 #define TK_FUNCTION 169
14197 #define TK_UMINUS 170
14198 #define TK_UPLUS 171
14199 #define TK_TRUTH 172
14200 #define TK_REGISTER 173
14201 #define TK_VECTOR 174
14202 #define TK_SELECT_COLUMN 175
14203 #define TK_IF_NULL_ROW 176
14204 #define TK_ASTERISK 177
14205 #define TK_SPAN 178
14206 #define TK_SPACE 179
14207 #define TK_ILLEGAL 180
 
14208
14209 /************** End of parse.h ***********************************************/
14210 /************** Continuing where we left off in sqliteInt.h ******************/
14211 #include <stdio.h>
14212 #include <stdlib.h>
@@ -14780,10 +14787,11 @@
14780 typedef struct Parse Parse;
14781 typedef struct ParseCleanup ParseCleanup;
14782 typedef struct PreUpdate PreUpdate;
14783 typedef struct PrintfArguments PrintfArguments;
14784 typedef struct RenameToken RenameToken;
 
14785 typedef struct RowSet RowSet;
14786 typedef struct Savepoint Savepoint;
14787 typedef struct Select Select;
14788 typedef struct SQLiteThread SQLiteThread;
14789 typedef struct SelectDest SelectDest;
@@ -15757,31 +15765,31 @@
15757 #define OP_Variable 75 /* synopsis: r[P2]=parameter(P1,P4) */
15758 #define OP_Move 76 /* synopsis: r[P2@P3]=r[P1@P3] */
15759 #define OP_Copy 77 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
15760 #define OP_SCopy 78 /* synopsis: r[P2]=r[P1] */
15761 #define OP_IntCopy 79 /* synopsis: r[P2]=r[P1] */
15762 #define OP_ResultRow 80 /* synopsis: output=r[P1@P2] */
15763 #define OP_CollSeq 81
15764 #define OP_AddImm 82 /* synopsis: r[P1]=r[P1]+P2 */
15765 #define OP_RealAffinity 83
15766 #define OP_Cast 84 /* synopsis: affinity(r[P1]) */
15767 #define OP_Permutation 85
15768 #define OP_Compare 86 /* synopsis: r[P1@P3] <-> r[P2@P3] */
15769 #define OP_IsTrue 87 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
15770 #define OP_Offset 88 /* synopsis: r[P3] = sqlite_offset(P1) */
15771 #define OP_Column 89 /* synopsis: r[P3]=PX */
15772 #define OP_Affinity 90 /* synopsis: affinity(r[P1@P2]) */
15773 #define OP_MakeRecord 91 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
15774 #define OP_Count 92 /* synopsis: r[P2]=count() */
15775 #define OP_ReadCookie 93
15776 #define OP_SetCookie 94
15777 #define OP_ReopenIdx 95 /* synopsis: root=P2 iDb=P3 */
15778 #define OP_OpenRead 96 /* synopsis: root=P2 iDb=P3 */
15779 #define OP_OpenWrite 97 /* synopsis: root=P2 iDb=P3 */
15780 #define OP_OpenDup 98
15781 #define OP_OpenAutoindex 99 /* synopsis: nColumn=P2 */
15782 #define OP_OpenEphemeral 100 /* synopsis: nColumn=P2 */
15783 #define OP_BitAnd 101 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
15784 #define OP_BitOr 102 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
15785 #define OP_ShiftLeft 103 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
15786 #define OP_ShiftRight 104 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
15787 #define OP_Add 105 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
@@ -15788,77 +15796,78 @@
15788 #define OP_Subtract 106 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
15789 #define OP_Multiply 107 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
15790 #define OP_Divide 108 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
15791 #define OP_Remainder 109 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
15792 #define OP_Concat 110 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
15793 #define OP_SorterOpen 111
15794 #define OP_BitNot 112 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
15795 #define OP_SequenceTest 113 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
15796 #define OP_OpenPseudo 114 /* synopsis: P3 columns in r[P2] */
15797 #define OP_String8 115 /* same as TK_STRING, synopsis: r[P2]='P4' */
15798 #define OP_Close 116
15799 #define OP_ColumnsUsed 117
15800 #define OP_SeekScan 118 /* synopsis: Scan-ahead up to P1 rows */
15801 #define OP_SeekHit 119 /* synopsis: set P2<=seekHit<=P3 */
15802 #define OP_Sequence 120 /* synopsis: r[P2]=cursor[P1].ctr++ */
15803 #define OP_NewRowid 121 /* synopsis: r[P2]=rowid */
15804 #define OP_Insert 122 /* synopsis: intkey=r[P3] data=r[P2] */
15805 #define OP_RowCell 123
15806 #define OP_Delete 124
15807 #define OP_ResetCount 125
15808 #define OP_SorterCompare 126 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
15809 #define OP_SorterData 127 /* synopsis: r[P2]=data */
15810 #define OP_RowData 128 /* synopsis: r[P2]=data */
15811 #define OP_Rowid 129 /* synopsis: r[P2]=rowid */
15812 #define OP_NullRow 130
15813 #define OP_SeekEnd 131
15814 #define OP_IdxInsert 132 /* synopsis: key=r[P2] */
15815 #define OP_SorterInsert 133 /* synopsis: key=r[P2] */
15816 #define OP_IdxDelete 134 /* synopsis: key=r[P2@P3] */
15817 #define OP_DeferredSeek 135 /* synopsis: Move P3 to P1.rowid if needed */
15818 #define OP_IdxRowid 136 /* synopsis: r[P2]=rowid */
15819 #define OP_FinishSeek 137
15820 #define OP_Destroy 138
15821 #define OP_Clear 139
15822 #define OP_ResetSorter 140
15823 #define OP_CreateBtree 141 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
15824 #define OP_SqlExec 142
15825 #define OP_ParseSchema 143
15826 #define OP_LoadAnalysis 144
15827 #define OP_DropTable 145
15828 #define OP_DropIndex 146
15829 #define OP_DropTrigger 147
15830 #define OP_IntegrityCk 148
15831 #define OP_RowSetAdd 149 /* synopsis: rowset(P1)=r[P2] */
15832 #define OP_Real 150 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15833 #define OP_Param 151
15834 #define OP_FkCounter 152 /* synopsis: fkctr[P1]+=P2 */
15835 #define OP_MemMax 153 /* synopsis: r[P1]=max(r[P1],r[P2]) */
15836 #define OP_OffsetLimit 154 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
15837 #define OP_AggInverse 155 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
15838 #define OP_AggStep 156 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15839 #define OP_AggStep1 157 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15840 #define OP_AggValue 158 /* synopsis: r[P3]=value N=P2 */
15841 #define OP_AggFinal 159 /* synopsis: accum=r[P1] N=P2 */
15842 #define OP_Expire 160
15843 #define OP_CursorLock 161
15844 #define OP_CursorUnlock 162
15845 #define OP_TableLock 163 /* synopsis: iDb=P1 root=P2 write=P3 */
15846 #define OP_VBegin 164
15847 #define OP_VCreate 165
15848 #define OP_VDestroy 166
15849 #define OP_VOpen 167
15850 #define OP_VColumn 168 /* synopsis: r[P3]=vcolumn(P2) */
15851 #define OP_VRename 169
15852 #define OP_Pagecount 170
15853 #define OP_MaxPgcnt 171
15854 #define OP_Trace 172
15855 #define OP_CursorHint 173
15856 #define OP_ReleaseReg 174 /* synopsis: release r[P1@P2] mask P3 */
15857 #define OP_Noop 175
15858 #define OP_Explain 176
15859 #define OP_Abortable 177
 
15860
15861 /* Properties such as "out2" or "jump" that are specified in
15862 ** comments following the "case" for each opcode in the vdbe.c
15863 ** are encoded into bitvectors as follows:
15864 */
@@ -15877,23 +15886,23 @@
15877 /* 40 */ 0x01, 0x01, 0x23, 0x26, 0x26, 0x0b, 0x01, 0x01,\
15878 /* 48 */ 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
15879 /* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, 0x00,\
15880 /* 64 */ 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10, 0x10,\
15881 /* 72 */ 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10,\
15882 /* 80 */ 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x12,\
15883 /* 88 */ 0x20, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
15884 /* 96 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26, 0x26,\
15885 /* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x00,\
15886 /* 112 */ 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,\
15887 /* 120 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15888 /* 128 */ 0x00, 0x10, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,\
15889 /* 136 */ 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00,\
15890 /* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10,\
15891 /* 152 */ 0x00, 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00,\
15892 /* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15893 /* 168 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,\
15894 /* 176 */ 0x00, 0x00,}
15895
15896 /* The sqlite3P2Values() routine is able to run faster if it knows
15897 ** the value of the largest JUMP opcode. The smaller the maximum
15898 ** JUMP opcode the better, so the mkopcodeh.tcl script that
15899 ** generated this include file strives to group all JUMP opcodes
@@ -15993,10 +16002,11 @@
15993 #endif
15994 SQLITE_PRIVATE void sqlite3VdbeResetStepResult(Vdbe*);
15995 SQLITE_PRIVATE void sqlite3VdbeRewind(Vdbe*);
15996 SQLITE_PRIVATE int sqlite3VdbeReset(Vdbe*);
15997 SQLITE_PRIVATE void sqlite3VdbeSetNumCols(Vdbe*,int);
 
15998 SQLITE_PRIVATE int sqlite3VdbeSetColName(Vdbe*, int, int, const char *, void(*)(void*));
15999 SQLITE_PRIVATE void sqlite3VdbeCountChanges(Vdbe*);
16000 SQLITE_PRIVATE sqlite3 *sqlite3VdbeDb(Vdbe*);
16001 SQLITE_PRIVATE u8 sqlite3VdbePrepareFlags(Vdbe*);
16002 SQLITE_PRIVATE void sqlite3VdbeSetSql(Vdbe*, const char *z, int n, u8);
@@ -18881,10 +18891,11 @@
18881 int addrCrTab; /* Address of OP_CreateBtree opcode on CREATE TABLE */
18882 u32 nQueryLoop; /* Est number of iterations of a query (10*log2(N)) */
18883 u32 oldmask; /* Mask of old.* columns referenced */
18884 u32 newmask; /* Mask of new.* columns referenced */
18885 u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */
 
18886 u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */
18887 u8 disableTriggers; /* True to disable triggers */
18888
18889 /**************************************************************************
18890 ** Fields above must be initialized to zero. The fields that follow,
@@ -19030,10 +19041,11 @@
19030 struct Trigger {
19031 char *zName; /* The name of the trigger */
19032 char *table; /* The table or view to which the trigger applies */
19033 u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT */
19034 u8 tr_tm; /* One of TRIGGER_BEFORE, TRIGGER_AFTER */
 
19035 Expr *pWhen; /* The WHEN clause of the expression (may be NULL) */
19036 IdList *pColumns; /* If this is an UPDATE OF <column-list> trigger,
19037 the <column-list> is stored here */
19038 Schema *pSchema; /* Schema containing the trigger */
19039 Schema *pTabSchema; /* Schema containing the table */
@@ -19088,11 +19100,12 @@
19088 * them to. See sqlite3Update() documentation of "pChanges"
19089 * argument.
19090 *
19091 */
19092 struct TriggerStep {
19093 u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
 
19094 u8 orconf; /* OE_Rollback etc. */
19095 Trigger *pTrig; /* The trigger that this step is a part of */
19096 Select *pSelect; /* SELECT statement or RHS of INSERT INTO SELECT ... */
19097 char *zTarget; /* Target table for DELETE, UPDATE, INSERT */
19098 SrcList *pFrom; /* FROM clause for UPDATE statement (if any) */
@@ -19102,10 +19115,22 @@
19102 Upsert *pUpsert; /* Upsert clauses on an INSERT */
19103 char *zSpan; /* Original SQL text of this command */
19104 TriggerStep *pNext; /* Next in the link-list */
19105 TriggerStep *pLast; /* Last element in link-list. Valid for 1st elem only */
19106 };
 
 
 
 
 
 
 
 
 
 
 
 
19107
19108 /*
19109 ** An objected used to accumulate the text of a string where we
19110 ** do not necessarily know how big the string will be in the end.
19111 */
@@ -19704,10 +19729,11 @@
19704 SQLITE_PRIVATE void sqlite3AddCheckConstraint(Parse*, Expr*, const char*, const char*);
19705 SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,Expr*,const char*,const char*);
19706 SQLITE_PRIVATE void sqlite3AddCollateType(Parse*, Token*);
19707 SQLITE_PRIVATE void sqlite3AddGenerated(Parse*,Expr*,Token*);
19708 SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u8,Select*);
 
19709 SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*,
19710 sqlite3_vfs**,char**,char **);
19711 #define sqlite3CodecQueryParameters(A,B,C) 0
19712 SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3*,const char*);
19713
@@ -33429,31 +33455,31 @@
33429 /* 75 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
33430 /* 76 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
33431 /* 77 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
33432 /* 78 */ "SCopy" OpHelp("r[P2]=r[P1]"),
33433 /* 79 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
33434 /* 80 */ "ResultRow" OpHelp("output=r[P1@P2]"),
33435 /* 81 */ "CollSeq" OpHelp(""),
33436 /* 82 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
33437 /* 83 */ "RealAffinity" OpHelp(""),
33438 /* 84 */ "Cast" OpHelp("affinity(r[P1])"),
33439 /* 85 */ "Permutation" OpHelp(""),
33440 /* 86 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
33441 /* 87 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
33442 /* 88 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
33443 /* 89 */ "Column" OpHelp("r[P3]=PX"),
33444 /* 90 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
33445 /* 91 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
33446 /* 92 */ "Count" OpHelp("r[P2]=count()"),
33447 /* 93 */ "ReadCookie" OpHelp(""),
33448 /* 94 */ "SetCookie" OpHelp(""),
33449 /* 95 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
33450 /* 96 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
33451 /* 97 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
33452 /* 98 */ "OpenDup" OpHelp(""),
33453 /* 99 */ "OpenAutoindex" OpHelp("nColumn=P2"),
33454 /* 100 */ "OpenEphemeral" OpHelp("nColumn=P2"),
33455 /* 101 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
33456 /* 102 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
33457 /* 103 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
33458 /* 104 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
33459 /* 105 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -33460,77 +33486,78 @@
33460 /* 106 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
33461 /* 107 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
33462 /* 108 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
33463 /* 109 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
33464 /* 110 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
33465 /* 111 */ "SorterOpen" OpHelp(""),
33466 /* 112 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
33467 /* 113 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
33468 /* 114 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
33469 /* 115 */ "String8" OpHelp("r[P2]='P4'"),
33470 /* 116 */ "Close" OpHelp(""),
33471 /* 117 */ "ColumnsUsed" OpHelp(""),
33472 /* 118 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
33473 /* 119 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
33474 /* 120 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
33475 /* 121 */ "NewRowid" OpHelp("r[P2]=rowid"),
33476 /* 122 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
33477 /* 123 */ "RowCell" OpHelp(""),
33478 /* 124 */ "Delete" OpHelp(""),
33479 /* 125 */ "ResetCount" OpHelp(""),
33480 /* 126 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
33481 /* 127 */ "SorterData" OpHelp("r[P2]=data"),
33482 /* 128 */ "RowData" OpHelp("r[P2]=data"),
33483 /* 129 */ "Rowid" OpHelp("r[P2]=rowid"),
33484 /* 130 */ "NullRow" OpHelp(""),
33485 /* 131 */ "SeekEnd" OpHelp(""),
33486 /* 132 */ "IdxInsert" OpHelp("key=r[P2]"),
33487 /* 133 */ "SorterInsert" OpHelp("key=r[P2]"),
33488 /* 134 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
33489 /* 135 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
33490 /* 136 */ "IdxRowid" OpHelp("r[P2]=rowid"),
33491 /* 137 */ "FinishSeek" OpHelp(""),
33492 /* 138 */ "Destroy" OpHelp(""),
33493 /* 139 */ "Clear" OpHelp(""),
33494 /* 140 */ "ResetSorter" OpHelp(""),
33495 /* 141 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
33496 /* 142 */ "SqlExec" OpHelp(""),
33497 /* 143 */ "ParseSchema" OpHelp(""),
33498 /* 144 */ "LoadAnalysis" OpHelp(""),
33499 /* 145 */ "DropTable" OpHelp(""),
33500 /* 146 */ "DropIndex" OpHelp(""),
33501 /* 147 */ "DropTrigger" OpHelp(""),
33502 /* 148 */ "IntegrityCk" OpHelp(""),
33503 /* 149 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
33504 /* 150 */ "Real" OpHelp("r[P2]=P4"),
33505 /* 151 */ "Param" OpHelp(""),
33506 /* 152 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
33507 /* 153 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
33508 /* 154 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
33509 /* 155 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
33510 /* 156 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
33511 /* 157 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
33512 /* 158 */ "AggValue" OpHelp("r[P3]=value N=P2"),
33513 /* 159 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
33514 /* 160 */ "Expire" OpHelp(""),
33515 /* 161 */ "CursorLock" OpHelp(""),
33516 /* 162 */ "CursorUnlock" OpHelp(""),
33517 /* 163 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
33518 /* 164 */ "VBegin" OpHelp(""),
33519 /* 165 */ "VCreate" OpHelp(""),
33520 /* 166 */ "VDestroy" OpHelp(""),
33521 /* 167 */ "VOpen" OpHelp(""),
33522 /* 168 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
33523 /* 169 */ "VRename" OpHelp(""),
33524 /* 170 */ "Pagecount" OpHelp(""),
33525 /* 171 */ "MaxPgcnt" OpHelp(""),
33526 /* 172 */ "Trace" OpHelp(""),
33527 /* 173 */ "CursorHint" OpHelp(""),
33528 /* 174 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
33529 /* 175 */ "Noop" OpHelp(""),
33530 /* 176 */ "Explain" OpHelp(""),
33531 /* 177 */ "Abortable" OpHelp(""),
 
33532 };
33533 return azName[i];
33534 }
33535 #endif
33536
@@ -72795,10 +72822,13 @@
72795 if( i<nOld ){
72796 pNew = apNew[i] = apOld[i];
72797 apOld[i] = 0;
72798 rc = sqlite3PagerWrite(pNew->pDbPage);
72799 nNew++;
 
 
 
72800 if( rc ) goto balance_cleanup;
72801 }else{
72802 assert( i>0 );
72803 rc = allocateBtreePage(pBt, &pNew, &pgno, (bBulk ? 1 : pgno), 0);
72804 if( rc ) goto balance_cleanup;
@@ -80821,10 +80851,27 @@
80821 p->nResColumn = (u16)nResColumn;
80822 p->aColName = (Mem*)sqlite3DbMallocRawNN(db, sizeof(Mem)*n );
80823 if( p->aColName==0 ) return;
80824 initMemArray(p->aColName, n, db, MEM_Null);
80825 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80826
80827 /*
80828 ** Set the name of the idx'th column to be returned by the SQL statement.
80829 ** zName must be a pointer to a nul terminated string.
80830 **
@@ -87264,10 +87311,30 @@
87264 assert( (pIn1->flags & MEM_Int)!=0 );
87265 pOut = &aMem[pOp->p2];
87266 sqlite3VdbeMemSetInt64(pOut, pIn1->u.i);
87267 break;
87268 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87269
87270 /* Opcode: ResultRow P1 P2 * * *
87271 ** Synopsis: output=r[P1@P2]
87272 **
87273 ** The registers P1 through P1+P2-1 contain a single row of
@@ -87281,38 +87348,10 @@
87281 int i;
87282 assert( p->nResColumn==pOp->p2 );
87283 assert( pOp->p1>0 );
87284 assert( pOp->p1+pOp->p2<=(p->nMem+1 - p->nCursor)+1 );
87285
87286 /* If this statement has violated immediate foreign key constraints, do
87287 ** not return the number of rows modified. And do not RELEASE the statement
87288 ** transaction. It needs to be rolled back. */
87289 if( SQLITE_OK!=(rc = sqlite3VdbeCheckFk(p, 0)) ){
87290 assert( db->flags&SQLITE_CountRows );
87291 assert( p->usesStmtJournal );
87292 goto abort_due_to_error;
87293 }
87294
87295 /* If the SQLITE_CountRows flag is set in sqlite3.flags mask, then
87296 ** DML statements invoke this opcode to return the number of rows
87297 ** modified to the user. This is the only way that a VM that
87298 ** opens a statement transaction may invoke this opcode.
87299 **
87300 ** In case this is such a statement, close any statement transaction
87301 ** opened by this VM before returning control to the user. This is to
87302 ** ensure that statement-transactions are always nested, not overlapping.
87303 ** If the open statement-transaction is not closed here, then the user
87304 ** may step another VM that opens its own statement transaction. This
87305 ** may lead to overlapping statement transactions.
87306 **
87307 ** The statement transaction is never a top-level transaction. Hence
87308 ** the RELEASE call below can never fail.
87309 */
87310 assert( p->iStatement==0 || db->flags&SQLITE_CountRows );
87311 rc = sqlite3VdbeCloseStatement(p, SAVEPOINT_RELEASE);
87312 assert( rc==SQLITE_OK );
87313
87314 /* Invalidate all ephemeral cursor row caches */
87315 p->cacheCtr = (p->cacheCtr + 2)|1;
87316
87317 /* Make sure the results of the current row are \000 terminated
87318 ** and have an assigned type. The results are de-ephemeralized as
@@ -98849,27 +98888,30 @@
98849 #if !defined(SQLITE_OMIT_TRIGGER) || !defined(SQLITE_OMIT_UPSERT)
98850 /* If we have not already resolved the name, then maybe
98851 ** it is a new.* or old.* trigger argument reference. Or
98852 ** maybe it is an excluded.* from an upsert.
98853 */
98854 if( zDb==0 && zTab!=0 && cntTab==0 ){
98855 pTab = 0;
98856 #ifndef SQLITE_OMIT_TRIGGER
98857 if( pParse->pTriggerTab!=0 ){
98858 int op = pParse->eTriggerOp;
98859 assert( op==TK_DELETE || op==TK_UPDATE || op==TK_INSERT );
98860 if( op!=TK_DELETE && sqlite3StrICmp("new",zTab) == 0 ){
98861 pExpr->iTable = 1;
98862 pTab = pParse->pTriggerTab;
98863 }else if( op!=TK_INSERT && sqlite3StrICmp("old",zTab)==0 ){
98864 pExpr->iTable = 0;
98865 pTab = pParse->pTriggerTab;
 
 
 
98866 }
98867 }
98868 #endif /* SQLITE_OMIT_TRIGGER */
98869 #ifndef SQLITE_OMIT_UPSERT
98870 if( (pNC->ncFlags & NC_UUpsert)!=0 ){
98871 Upsert *pUpsert = pNC->uNC.pUpsert;
98872 if( pUpsert && sqlite3StrICmp("excluded",zTab)==0 ){
98873 pTab = pUpsert->pUpsertSrc->a[0].pTab;
98874 pExpr->iTable = EXCLUDED_TABLE_NUMBER;
98875 }
@@ -110733,11 +110775,10 @@
110733 #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER)
110734 if( sqlite3WalkExpr(&pFix->w, pList->a[i].pOn) ) return WRC_Abort;
110735 #endif
110736 }
110737 if( pSelect->pWith ){
110738 int i;
110739 for(i=0; i<pSelect->pWith->nCte; i++){
110740 if( sqlite3WalkSelect(p, pSelect->pWith->a[i].pSelect) ){
110741 return WRC_Abort;
110742 }
110743 }
@@ -112364,10 +112405,79 @@
112364 pTab->tabFlags |= TF_OOOHidden;
112365 }
112366 }
112367 #endif
112368
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112369
112370 /*
112371 ** Add a new column to the table currently being constructed.
112372 **
112373 ** The parser calls this routine once for each column declaration
@@ -117226,10 +117336,11 @@
117226 ** we are counting rows.
117227 */
117228 if( (db->flags & SQLITE_CountRows)!=0
117229 && !pParse->nested
117230 && !pParse->pTriggerTab
 
117231 ){
117232 memCnt = ++pParse->nMem;
117233 sqlite3VdbeAddOp2(v, OP_Integer, 0, memCnt);
117234 }
117235
@@ -117447,11 +117558,11 @@
117447 /* Return the number of rows that were deleted. If this routine is
117448 ** generating code because of a call to sqlite3NestedParse(), do not
117449 ** invoke the callback function.
117450 */
117451 if( memCnt ){
117452 sqlite3VdbeAddOp2(v, OP_ResultRow, memCnt, 1);
117453 sqlite3VdbeSetNumCols(v, 1);
117454 sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows deleted", SQLITE_STATIC);
117455 }
117456
117457 delete_from_cleanup:
@@ -119781,27 +119892,28 @@
119781 assert( argc==1 || argc==2 );
119782 switch( sqlite3_value_numeric_type(argv[0]) ){
119783 case SQLITE_INTEGER:
119784 case SQLITE_FLOAT:
119785 x = sqlite3_value_double(argv[0]);
119786 if( x<0.0 ) return;
119787 break;
119788 default:
119789 return;
119790 }
119791 if( argc==2 ){
119792 switch( sqlite3_value_numeric_type(argv[0]) ){
119793 case SQLITE_INTEGER:
119794 case SQLITE_FLOAT:
119795 b = x;
 
119796 x = sqlite3_value_double(argv[1]);
119797 if( x<0.0 ) return;
119798 break;
119799 default:
119800 return;
119801 }
119802 ans = log(x)/log(b);
119803 }else{
119804 ans = log(x);
119805 switch( SQLITE_PTR_TO_INT(sqlite3_user_data(context)) ){
119806 case 1:
119807 /* Convert from natural logarithm to log base 10 */
@@ -122495,10 +122607,11 @@
122495 /* Initialize the count of rows to be inserted
122496 */
122497 if( (db->flags & SQLITE_CountRows)!=0
122498 && !pParse->nested
122499 && !pParse->pTriggerTab
 
122500 ){
122501 regRowCount = ++pParse->nMem;
122502 sqlite3VdbeAddOp2(v, OP_Integer, 0, regRowCount);
122503 }
122504
@@ -122859,11 +122972,11 @@
122859 ** Return the number of rows inserted. If this routine is
122860 ** generating code because of a call to sqlite3NestedParse(), do not
122861 ** invoke the callback function.
122862 */
122863 if( regRowCount ){
122864 sqlite3VdbeAddOp2(v, OP_ResultRow, regRowCount, 1);
122865 sqlite3VdbeSetNumCols(v, 1);
122866 sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows inserted", SQLITE_STATIC);
122867 }
122868
122869 insert_cleanup:
@@ -137763,32 +137876,41 @@
137763 ** To state it another way: This routine returns a list of all triggers
137764 ** that fire off of pTab. The list will include any TEMP triggers on
137765 ** pTab as well as the triggers lised in pTab->pTrigger.
137766 */
137767 SQLITE_PRIVATE Trigger *sqlite3TriggerList(Parse *pParse, Table *pTab){
137768 Schema * const pTmpSchema = pParse->db->aDb[1].pSchema;
137769 Trigger *pList = 0; /* List of triggers to return */
 
137770
137771 if( pParse->disableTriggers ){
137772 return 0;
137773 }
137774
 
 
 
 
 
137775 if( pTmpSchema!=pTab->pSchema ){
137776 HashElem *p;
137777 assert( sqlite3SchemaMutexHeld(pParse->db, 0, pTmpSchema) );
137778 for(p=sqliteHashFirst(&pTmpSchema->trigHash); p; p=sqliteHashNext(p)){
137779 Trigger *pTrig = (Trigger *)sqliteHashData(p);
137780 if( pTrig->pTabSchema==pTab->pSchema
137781 && 0==sqlite3StrICmp(pTrig->table, pTab->zName)
137782 ){
137783 pTrig->pNext = (pList ? pList : pTab->pTrigger);
 
 
 
 
 
137784 pList = pTrig;
137785 }
 
137786 }
137787 }
137788
137789 return (pList ? pList : pTab->pTrigger);
137790 }
137791
137792 /*
137793 ** This is called by the parser when it sees a CREATE TRIGGER statement
137794 ** up to the point of the BEGIN before the trigger actions. A Trigger
@@ -138273,11 +138395,11 @@
138273
138274 /*
138275 ** Recursively delete a Trigger structure
138276 */
138277 SQLITE_PRIVATE void sqlite3DeleteTrigger(sqlite3 *db, Trigger *pTrigger){
138278 if( pTrigger==0 ) return;
138279 sqlite3DeleteTriggerStep(db, pTrigger->step_list);
138280 sqlite3DbFree(db, pTrigger->zName);
138281 sqlite3DbFree(db, pTrigger->table);
138282 sqlite3ExprDelete(db, pTrigger->pWhen);
138283 sqlite3IdListDelete(db, pTrigger->pColumns);
@@ -138438,19 +138560,52 @@
138438 ){
138439 int mask = 0;
138440 Trigger *pList = 0;
138441 Trigger *p;
138442
138443 if( (pParse->db->flags & SQLITE_EnableTrigger)!=0 ){
138444 pList = sqlite3TriggerList(pParse, pTab);
138445 }
138446 assert( pList==0 || IsVirtual(pTab)==0 );
138447 for(p=pList; p; p=p->pNext){
138448 if( p->op==op && checkColumnOverlap(p->pColumns, pChanges) ){
138449 mask |= p->tr_tm;
138450 }
138451 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138452 if( pMask ){
138453 *pMask = mask;
138454 }
138455 return (mask ? pList : 0);
138456 }
@@ -138488,10 +138643,51 @@
138488 }else{
138489 sqlite3DbFree(db, zName);
138490 }
138491 return pSrc;
138492 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138493
138494 /*
138495 ** Generate VDBE code for the statements inside the body of a single
138496 ** trigger.
138497 */
@@ -138538,10 +138734,11 @@
138538 sqlite3TriggerStepSrc(pParse, pStep),
138539 sqlite3ExprListDup(db, pStep->pExprList, 0),
138540 sqlite3ExprDup(db, pStep->pWhere, 0),
138541 pParse->eOrconf, 0, 0, 0
138542 );
 
138543 break;
138544 }
138545 case TK_INSERT: {
138546 sqlite3Insert(pParse,
138547 sqlite3TriggerStepSrc(pParse, pStep),
@@ -138548,30 +138745,49 @@
138548 sqlite3SelectDup(db, pStep->pSelect, 0),
138549 sqlite3IdListDup(db, pStep->pIdList),
138550 pParse->eOrconf,
138551 sqlite3UpsertDup(db, pStep->pUpsert)
138552 );
 
138553 break;
138554 }
138555 case TK_DELETE: {
138556 sqlite3DeleteFrom(pParse,
138557 sqlite3TriggerStepSrc(pParse, pStep),
138558 sqlite3ExprDup(db, pStep->pWhere, 0), 0, 0
138559 );
 
138560 break;
138561 }
138562 default: assert( pStep->op==TK_SELECT ); {
138563 SelectDest sDest;
138564 Select *pSelect = sqlite3SelectDup(db, pStep->pSelect, 0);
138565 sqlite3SelectDestInit(&sDest, SRT_Discard, 0);
138566 sqlite3Select(pParse, pSelect, &sDest);
138567 sqlite3SelectDelete(db, pSelect);
138568 break;
138569 }
138570 }
138571 if( pStep->op!=TK_SELECT ){
138572 sqlite3VdbeAddOp0(v, OP_ResetCount);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138573 }
138574 }
138575
138576 return 0;
138577 }
@@ -138658,10 +138874,11 @@
138658 pSubParse->db = db;
138659 pSubParse->pTriggerTab = pTab;
138660 pSubParse->pToplevel = pTop;
138661 pSubParse->zAuthContext = pTrigger->zName;
138662 pSubParse->eTriggerOp = pTrigger->op;
 
138663 pSubParse->nQueryLoop = pParse->nQueryLoop;
138664 pSubParse->disableVtab = pParse->disableVtab;
138665
138666 v = sqlite3GetVdbe(pSubParse);
138667 if( v ){
@@ -138707,10 +138924,13 @@
138707
138708 transferParseError(pParse, pSubParse);
138709 if( db->mallocFailed==0 && pParse->nErr==0 ){
138710 pProgram->aOp = sqlite3VdbeTakeOpArray(v, &pProgram->nOp, &pTop->nMaxArg);
138711 }
 
 
 
138712 pProgram->nMem = pSubParse->nMem;
138713 pProgram->nCsr = pSubParse->nTab;
138714 pProgram->token = (void *)pTrigger;
138715 pPrg->aColmask[0] = pSubParse->oldmask;
138716 pPrg->aColmask[1] = pSubParse->newmask;
@@ -138861,16 +139081,24 @@
138861 assert( p->pSchema!=0 );
138862 assert( p->pTabSchema!=0 );
138863 assert( p->pSchema==p->pTabSchema
138864 || p->pSchema==pParse->db->aDb[1].pSchema );
138865
138866 /* Determine whether we should code this trigger */
138867 if( p->op==op
 
 
 
 
138868 && p->tr_tm==tr_tm
138869 && checkColumnOverlap(p->pColumns, pChanges)
 
138870 ){
 
 
138871 sqlite3CodeRowTriggerDirect(pParse, p, pTab, reg, orconf, ignoreJump);
 
138872 }
138873 }
138874 }
138875
138876 /*
@@ -139574,10 +139802,11 @@
139574 /* Not an UPSERT. Normal processing. Begin by
139575 ** initialize the count of updated rows */
139576 if( (db->flags&SQLITE_CountRows)!=0
139577 && !pParse->pTriggerTab
139578 && !pParse->nested
 
139579 && pUpsert==0
139580 ){
139581 regRowCount = ++pParse->nMem;
139582 sqlite3VdbeAddOp2(v, OP_Integer, 0, regRowCount);
139583 }
@@ -140037,11 +140266,11 @@
140037 /*
140038 ** Return the number of rows that were changed, if we are tracking
140039 ** that information.
140040 */
140041 if( regRowCount ){
140042 sqlite3VdbeAddOp2(v, OP_ResultRow, regRowCount, 1);
140043 sqlite3VdbeSetNumCols(v, 1);
140044 sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows updated", SQLITE_STATIC);
140045 }
140046
140047 update_cleanup:
@@ -152864,11 +153093,11 @@
152864 assert( pOp->opcode!=OP_Rowid || pOp->p1!=pLevel->iTabCur );
152865 assert( pOp->opcode!=OP_IfNullRow || pOp->p1!=pLevel->iTabCur );
152866 #endif
152867 pOp = sqlite3VdbeGetOp(v, k);
152868 pLastOp = pOp + (last - k);
152869 assert( pOp<pLastOp );
152870 do{
152871 if( pOp->p1!=pLevel->iTabCur ){
152872 /* no-op */
152873 }else if( pOp->opcode==OP_Column
152874 #ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
@@ -156326,43 +156555,44 @@
156326 #define TK_ORDER 143
156327 #define TK_GROUP 144
156328 #define TK_HAVING 145
156329 #define TK_LIMIT 146
156330 #define TK_WHERE 147
156331 #define TK_INTO 148
156332 #define TK_NOTHING 149
156333 #define TK_FLOAT 150
156334 #define TK_BLOB 151
156335 #define TK_INTEGER 152
156336 #define TK_VARIABLE 153
156337 #define TK_CASE 154
156338 #define TK_WHEN 155
156339 #define TK_THEN 156
156340 #define TK_ELSE 157
156341 #define TK_INDEX 158
156342 #define TK_ALTER 159
156343 #define TK_ADD 160
156344 #define TK_WINDOW 161
156345 #define TK_OVER 162
156346 #define TK_FILTER 163
156347 #define TK_COLUMN 164
156348 #define TK_AGG_FUNCTION 165
156349 #define TK_AGG_COLUMN 166
156350 #define TK_TRUEFALSE 167
156351 #define TK_ISNOT 168
156352 #define TK_FUNCTION 169
156353 #define TK_UMINUS 170
156354 #define TK_UPLUS 171
156355 #define TK_TRUTH 172
156356 #define TK_REGISTER 173
156357 #define TK_VECTOR 174
156358 #define TK_SELECT_COLUMN 175
156359 #define TK_IF_NULL_ROW 176
156360 #define TK_ASTERISK 177
156361 #define TK_SPAN 178
156362 #define TK_SPACE 179
156363 #define TK_ILLEGAL 180
 
156364 #endif
156365 /**************** End token definitions ***************************************/
156366
156367 /* The next sections is a series of control #defines.
156368 ** various aspects of the generated parser.
@@ -156418,32 +156648,32 @@
156418 #ifndef INTERFACE
156419 # define INTERFACE 1
156420 #endif
156421 /************* Begin control #defines *****************************************/
156422 #define YYCODETYPE unsigned short int
156423 #define YYNOCODE 310
156424 #define YYACTIONTYPE unsigned short int
156425 #define YYWILDCARD 100
156426 #define sqlite3ParserTOKENTYPE Token
156427 typedef union {
156428 int yyinit;
156429 sqlite3ParserTOKENTYPE yy0;
156430 SrcList* yy47;
156431 u8 yy58;
156432 struct FrameBound yy77;
156433 With* yy131;
156434 int yy192;
156435 Expr* yy202;
156436 struct {int value; int mask;} yy207;
156437 struct TrigEvent yy230;
156438 ExprList* yy242;
156439 Window* yy303;
156440 Upsert* yy318;
156441 const char* yy436;
156442 TriggerStep* yy447;
156443 Select* yy539;
156444 IdList* yy600;
156445 } YYMINORTYPE;
156446 #ifndef YYSTACKDEPTH
156447 #define YYSTACKDEPTH 100
156448 #endif
156449 #define sqlite3ParserARG_SDECL
@@ -156455,22 +156685,22 @@
156455 #define sqlite3ParserCTX_PDECL ,Parse *pParse
156456 #define sqlite3ParserCTX_PARAM ,pParse
156457 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
156458 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
156459 #define YYFALLBACK 1
156460 #define YYNSTATE 558
156461 #define YYNRULE 386
156462 #define YYNRULE_WITH_ACTION 326
156463 #define YYNTOKEN 181
156464 #define YY_MAX_SHIFT 557
156465 #define YY_MIN_SHIFTREDUCE 809
156466 #define YY_MAX_SHIFTREDUCE 1194
156467 #define YY_ERROR_ACTION 1195
156468 #define YY_ACCEPT_ACTION 1196
156469 #define YY_NO_ACTION 1197
156470 #define YY_MIN_REDUCE 1198
156471 #define YY_MAX_REDUCE 1583
156472 /************* End control #defines *******************************************/
156473 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
156474
156475 /* Define the yytestcase() macro to be a no-op if is not already defined
156476 ** otherwise.
@@ -156533,590 +156763,605 @@
156533 ** yy_reduce_ofst[] For each state, the offset into yy_action for
156534 ** shifting non-terminals after a reduce.
156535 ** yy_default[] Default action for each state.
156536 **
156537 *********** Begin parsing tables **********************************************/
156538 #define YY_ACTTAB_COUNT (1968)
156539 static const YYACTIONTYPE yy_action[] = {
156540 /* 0 */ 551, 1229, 551, 456, 1267, 551, 1246, 551, 114, 111,
156541 /* 10 */ 212, 551, 1545, 551, 1267, 528, 114, 111, 212, 396,
156542 /* 20 */ 1239, 348, 42, 42, 42, 42, 1232, 42, 42, 71,
156543 /* 30 */ 71, 943, 1231, 71, 71, 71, 71, 1470, 1501, 944,
156544 /* 40 */ 826, 458, 6, 121, 122, 112, 1172, 1172, 1013, 1016,
156545 /* 50 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 1551, 396,
156546 /* 60 */ 1366, 1525, 557, 2, 1200, 195, 533, 441, 143, 293,
156547 /* 70 */ 533, 136, 533, 375, 262, 509, 273, 389, 1280, 532,
156548 /* 80 */ 508, 498, 165, 121, 122, 112, 1172, 1172, 1013, 1016,
156549 /* 90 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 1366, 447,
156550 /* 100 */ 1522, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156551 /* 110 */ 115, 429, 267, 267, 267, 267, 1506, 362, 1508, 440,
156552 /* 120 */ 361, 1506, 522, 529, 1493, 548, 1121, 548, 1121, 396,
156553 /* 130 */ 410, 242, 209, 114, 111, 212, 98, 292, 542, 222,
156554 /* 140 */ 1036, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156555 /* 150 */ 115, 429, 1149, 121, 122, 112, 1172, 1172, 1013, 1016,
156556 /* 160 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 411, 433,
156557 /* 170 */ 117, 117, 116, 116, 116, 115, 429, 1426, 473, 123,
156558 /* 180 */ 118, 118, 118, 118, 117, 117, 116, 116, 116, 115,
156559 /* 190 */ 429, 116, 116, 116, 115, 429, 545, 545, 545, 396,
156560 /* 200 */ 510, 120, 120, 120, 120, 113, 1058, 1149, 1150, 1151,
156561 /* 210 */ 1058, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156562 /* 220 */ 115, 429, 1469, 121, 122, 112, 1172, 1172, 1013, 1016,
156563 /* 230 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 396, 449,
156564 /* 240 */ 320, 83, 468, 81, 363, 386, 1149, 80, 118, 118,
156565 /* 250 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 180,
156566 /* 260 */ 439, 429, 121, 122, 112, 1172, 1172, 1013, 1016, 1006,
156567 /* 270 */ 1006, 119, 119, 120, 120, 120, 120, 439, 438, 267,
156568 /* 280 */ 267, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156569 /* 290 */ 115, 429, 548, 1116, 909, 511, 1149, 114, 111, 212,
156570 /* 300 */ 1439, 1149, 1150, 1151, 207, 496, 1116, 396, 454, 1116,
156571 /* 310 */ 550, 334, 120, 120, 120, 120, 300, 1439, 1441, 17,
156572 /* 320 */ 118, 118, 118, 118, 117, 117, 116, 116, 116, 115,
156573 /* 330 */ 429, 121, 122, 112, 1172, 1172, 1013, 1016, 1006, 1006,
156574 /* 340 */ 119, 119, 120, 120, 120, 120, 396, 1366, 439, 1149,
156575 /* 350 */ 487, 1149, 1150, 1151, 1003, 1003, 1014, 1017, 406, 118,
156576 /* 360 */ 118, 118, 118, 117, 117, 116, 116, 116, 115, 429,
156577 /* 370 */ 121, 122, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119,
156578 /* 380 */ 119, 120, 120, 120, 120, 1061, 1061, 470, 1439, 118,
156579 /* 390 */ 118, 118, 118, 117, 117, 116, 116, 116, 115, 429,
156580 /* 400 */ 1149, 456, 551, 1434, 1149, 1150, 1151, 234, 973, 1149,
156581 /* 410 */ 486, 483, 482, 172, 364, 396, 165, 412, 419, 848,
156582 /* 420 */ 481, 165, 186, 338, 71, 71, 1250, 1007, 118, 118,
156583 /* 430 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 121,
156584 /* 440 */ 122, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119, 119,
156585 /* 450 */ 120, 120, 120, 120, 396, 1149, 1150, 1151, 841, 12,
156586 /* 460 */ 318, 514, 164, 360, 1149, 1150, 1151, 114, 111, 212,
156587 /* 470 */ 513, 292, 542, 551, 277, 181, 292, 542, 121, 122,
156588 /* 480 */ 112, 1172, 1172, 1013, 1016, 1006, 1006, 119, 119, 120,
156589 /* 490 */ 120, 120, 120, 349, 489, 71, 71, 118, 118, 118,
156590 /* 500 */ 118, 117, 117, 116, 116, 116, 115, 429, 1149, 210,
156591 /* 510 */ 416, 528, 1149, 1116, 1579, 382, 253, 270, 346, 492,
156592 /* 520 */ 341, 491, 239, 396, 518, 368, 1116, 1134, 337, 1116,
156593 /* 530 */ 192, 414, 288, 32, 462, 448, 118, 118, 118, 118,
156594 /* 540 */ 117, 117, 116, 116, 116, 115, 429, 121, 122, 112,
156595 /* 550 */ 1172, 1172, 1013, 1016, 1006, 1006, 119, 119, 120, 120,
156596 /* 560 */ 120, 120, 396, 1149, 1150, 1151, 994, 1149, 1150, 1151,
156597 /* 570 */ 1149, 234, 497, 1500, 486, 483, 482, 6, 164, 551,
156598 /* 580 */ 517, 551, 115, 429, 481, 5, 121, 122, 112, 1172,
156599 /* 590 */ 1172, 1013, 1016, 1006, 1006, 119, 119, 120, 120, 120,
156600 /* 600 */ 120, 13, 13, 13, 13, 118, 118, 118, 118, 117,
156601 /* 610 */ 117, 116, 116, 116, 115, 429, 408, 507, 413, 551,
156602 /* 620 */ 1494, 549, 1149, 898, 898, 1149, 1150, 1151, 1481, 1149,
156603 /* 630 */ 276, 396, 814, 815, 816, 978, 427, 427, 427, 16,
156604 /* 640 */ 16, 55, 55, 1249, 118, 118, 118, 118, 117, 117,
156605 /* 650 */ 116, 116, 116, 115, 429, 121, 122, 112, 1172, 1172,
156606 /* 660 */ 1013, 1016, 1006, 1006, 119, 119, 120, 120, 120, 120,
156607 /* 670 */ 396, 1196, 1, 1, 557, 2, 1200, 1149, 1150, 1151,
156608 /* 680 */ 195, 293, 904, 136, 1149, 1150, 1151, 903, 526, 1500,
156609 /* 690 */ 1280, 3, 384, 6, 121, 122, 112, 1172, 1172, 1013,
156610 /* 700 */ 1016, 1006, 1006, 119, 119, 120, 120, 120, 120, 864,
156611 /* 710 */ 551, 930, 551, 118, 118, 118, 118, 117, 117, 116,
156612 /* 720 */ 116, 116, 115, 429, 267, 267, 1099, 1577, 1149, 556,
156613 /* 730 */ 1577, 1200, 13, 13, 13, 13, 293, 548, 136, 396,
156614 /* 740 */ 490, 426, 425, 973, 348, 1280, 473, 415, 865, 281,
156615 /* 750 */ 140, 222, 118, 118, 118, 118, 117, 117, 116, 116,
156616 /* 760 */ 116, 115, 429, 121, 122, 112, 1172, 1172, 1013, 1016,
156617 /* 770 */ 1006, 1006, 119, 119, 120, 120, 120, 120, 551, 267,
156618 /* 780 */ 267, 433, 396, 1149, 1150, 1151, 1179, 836, 1179, 473,
156619 /* 790 */ 436, 145, 548, 1153, 405, 318, 444, 304, 844, 1498,
156620 /* 800 */ 71, 71, 417, 6, 1097, 478, 222, 100, 112, 1172,
156621 /* 810 */ 1172, 1013, 1016, 1006, 1006, 119, 119, 120, 120, 120,
156622 /* 820 */ 120, 118, 118, 118, 118, 117, 117, 116, 116, 116,
156623 /* 830 */ 115, 429, 238, 1433, 551, 456, 433, 289, 993, 551,
156624 /* 840 */ 237, 236, 235, 836, 97, 534, 434, 1272, 1272, 1153,
156625 /* 850 */ 499, 309, 435, 844, 984, 551, 71, 71, 983, 1248,
156626 /* 860 */ 551, 51, 51, 302, 118, 118, 118, 118, 117, 117,
156627 /* 870 */ 116, 116, 116, 115, 429, 195, 103, 70, 70, 267,
156628 /* 880 */ 267, 551, 71, 71, 267, 267, 30, 395, 348, 983,
156629 /* 890 */ 983, 985, 548, 533, 1116, 332, 396, 548, 500, 401,
156630 /* 900 */ 460, 196, 535, 13, 13, 1366, 241, 1116, 278, 282,
156631 /* 910 */ 1116, 282, 306, 462, 308, 337, 396, 31, 189, 424,
156632 /* 920 */ 121, 122, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119,
156633 /* 930 */ 119, 120, 120, 120, 120, 142, 396, 369, 456, 993,
156634 /* 940 */ 121, 122, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119,
156635 /* 950 */ 119, 120, 120, 120, 120, 984, 327, 1149, 330, 983,
156636 /* 960 */ 121, 110, 112, 1172, 1172, 1013, 1016, 1006, 1006, 119,
156637 /* 970 */ 119, 120, 120, 120, 120, 469, 381, 1192, 118, 118,
156638 /* 980 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 1149,
156639 /* 990 */ 983, 983, 985, 307, 9, 461, 245, 462, 118, 118,
156640 /* 1000 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 317,
156641 /* 1010 */ 551, 279, 1149, 1150, 1151, 301, 292, 542, 118, 118,
156642 /* 1020 */ 118, 118, 117, 117, 116, 116, 116, 115, 429, 1270,
156643 /* 1030 */ 1270, 1170, 13, 13, 531, 426, 425, 473, 396, 929,
156644 /* 1040 */ 261, 261, 97, 1176, 1149, 1150, 1151, 190, 1178, 267,
156645 /* 1050 */ 267, 473, 138, 548, 1193, 551, 1177, 264, 348, 494,
156646 /* 1060 */ 928, 551, 548, 122, 112, 1172, 1172, 1013, 1016, 1006,
156647 /* 1070 */ 1006, 119, 119, 120, 120, 120, 120, 71, 71, 1149,
156648 /* 1080 */ 1179, 1279, 1179, 13, 13, 904, 1077, 1170, 551, 473,
156649 /* 1090 */ 903, 107, 543, 280, 4, 1275, 1116, 450, 530, 1056,
156650 /* 1100 */ 12, 1078, 1099, 1578, 316, 144, 1578, 525, 546, 1116,
156651 /* 1110 */ 56, 56, 1116, 1499, 428, 1366, 1079, 6, 349, 970,
156652 /* 1120 */ 118, 118, 118, 118, 117, 117, 116, 116, 116, 115,
156653 /* 1130 */ 429, 430, 1278, 325, 1149, 1150, 1151, 884, 267, 267,
156654 /* 1140 */ 855, 107, 543, 540, 4, 1497, 238, 885, 1218, 6,
156655 /* 1150 */ 211, 548, 370, 165, 366, 501, 421, 1496, 546, 268,
156656 /* 1160 */ 268, 6, 1550, 516, 504, 873, 267, 267, 400, 536,
156657 /* 1170 */ 8, 993, 548, 524, 551, 928, 463, 105, 105, 548,
156658 /* 1180 */ 1097, 430, 267, 267, 106, 422, 430, 553, 552, 267,
156659 /* 1190 */ 267, 983, 523, 540, 1381, 548, 15, 15, 267, 267,
156660 /* 1200 */ 1478, 1127, 548, 267, 267, 1077, 1380, 520, 292, 542,
156661 /* 1210 */ 551, 548, 519, 401, 449, 320, 548, 551, 928, 125,
156662 /* 1220 */ 1078, 993, 983, 983, 985, 986, 27, 105, 105, 405,
156663 /* 1230 */ 347, 1519, 44, 44, 106, 1079, 430, 553, 552, 57,
156664 /* 1240 */ 57, 983, 347, 1519, 107, 543, 551, 4, 467, 405,
156665 /* 1250 */ 215, 1127, 464, 295, 381, 1098, 539, 296, 551, 1221,
156666 /* 1260 */ 402, 546, 544, 402, 299, 245, 292, 542, 58, 58,
156667 /* 1270 */ 551, 1284, 983, 983, 985, 986, 27, 1524, 1138, 432,
156668 /* 1280 */ 59, 59, 271, 548, 430, 403, 166, 379, 379, 378,
156669 /* 1290 */ 256, 376, 60, 60, 823, 1187, 540, 551, 274, 551,
156670 /* 1300 */ 1170, 851, 393, 392, 551, 205, 551, 216, 211, 298,
156671 /* 1310 */ 520, 1303, 551, 266, 209, 521, 1316, 297, 275, 61,
156672 /* 1320 */ 61, 62, 62, 451, 993, 205, 45, 45, 46, 46,
156673 /* 1330 */ 105, 105, 1193, 928, 47, 47, 291, 106, 551, 430,
156674 /* 1340 */ 553, 552, 943, 551, 983, 313, 394, 218, 551, 109,
156675 /* 1350 */ 944, 107, 543, 219, 4, 156, 1170, 851, 158, 551,
156676 /* 1360 */ 49, 49, 104, 551, 102, 50, 50, 551, 546, 1315,
156677 /* 1370 */ 63, 63, 551, 443, 217, 983, 983, 985, 986, 27,
156678 /* 1380 */ 1484, 64, 64, 551, 310, 65, 65, 551, 1458, 14,
156679 /* 1390 */ 14, 430, 1457, 551, 66, 66, 1094, 551, 1169, 383,
156680 /* 1400 */ 141, 551, 38, 540, 269, 127, 127, 551, 397, 67,
156681 /* 1410 */ 67, 551, 465, 292, 542, 52, 52, 520, 551, 68,
156682 /* 1420 */ 68, 1043, 519, 69, 69, 315, 95, 322, 97, 53,
156683 /* 1430 */ 53, 993, 975, 151, 151, 244, 437, 105, 105, 200,
156684 /* 1440 */ 152, 152, 455, 1312, 106, 244, 430, 553, 552, 1138,
156685 /* 1450 */ 432, 983, 457, 271, 321, 244, 326, 97, 379, 379,
156686 /* 1460 */ 378, 256, 376, 863, 862, 823, 531, 551, 221, 551,
156687 /* 1470 */ 107, 543, 551, 4, 551, 329, 479, 1043, 216, 240,
156688 /* 1480 */ 298, 331, 983, 983, 985, 986, 27, 546, 297, 76,
156689 /* 1490 */ 76, 54, 54, 333, 72, 72, 128, 128, 870, 871,
156690 /* 1500 */ 107, 543, 551, 4, 1263, 551, 946, 947, 1247, 551,
156691 /* 1510 */ 430, 551, 200, 1055, 551, 1055, 551, 546, 218, 551,
156692 /* 1520 */ 335, 1538, 540, 97, 73, 73, 156, 129, 129, 158,
156693 /* 1530 */ 340, 130, 130, 126, 126, 350, 150, 150, 149, 149,
156694 /* 1540 */ 430, 134, 134, 345, 1039, 217, 937, 240, 901, 244,
156695 /* 1550 */ 993, 109, 540, 344, 987, 551, 105, 105, 908, 351,
156696 /* 1560 */ 551, 1513, 1054, 106, 1054, 430, 553, 552, 551, 1324,
156697 /* 1570 */ 983, 834, 99, 543, 139, 4, 551, 133, 133, 397,
156698 /* 1580 */ 993, 1365, 131, 131, 292, 542, 105, 105, 1299, 546,
156699 /* 1590 */ 132, 132, 287, 106, 1310, 430, 553, 552, 75, 75,
156700 /* 1600 */ 983, 983, 983, 985, 986, 27, 551, 437, 902, 537,
156701 /* 1610 */ 987, 109, 430, 259, 551, 538, 1371, 1228, 474, 551,
156702 /* 1620 */ 198, 551, 1220, 1209, 540, 1208, 1210, 1532, 77, 77,
156703 /* 1630 */ 202, 983, 983, 985, 986, 27, 74, 74, 1296, 353,
156704 /* 1640 */ 355, 43, 43, 48, 48, 357, 11, 380, 214, 343,
156705 /* 1650 */ 303, 442, 993, 312, 305, 1360, 314, 484, 105, 105,
156706 /* 1660 */ 459, 1246, 319, 206, 1430, 106, 1429, 430, 553, 552,
156707 /* 1670 */ 359, 541, 983, 271, 1535, 1187, 168, 248, 379, 379,
156708 /* 1680 */ 378, 256, 376, 201, 193, 823, 373, 194, 1477, 1475,
156709 /* 1690 */ 1184, 79, 404, 82, 83, 453, 178, 95, 216, 1349,
156710 /* 1700 */ 298, 162, 1435, 983, 983, 985, 986, 27, 297, 1354,
156711 /* 1710 */ 1346, 35, 170, 445, 446, 477, 173, 174, 175, 176,
156712 /* 1720 */ 385, 224, 1358, 1361, 1357, 466, 387, 36, 182, 452,
156713 /* 1730 */ 388, 1424, 228, 88, 472, 260, 230, 1446, 218, 187,
156714 /* 1740 */ 475, 328, 231, 390, 324, 1211, 156, 232, 493, 158,
156715 /* 1750 */ 418, 90, 1257, 1266, 1549, 1265, 1264, 855, 1256, 207,
156716 /* 1760 */ 420, 512, 1307, 1548, 94, 217, 352, 391, 1236, 1235,
156717 /* 1770 */ 342, 1234, 1547, 1518, 354, 285, 503, 286, 506, 246,
156718 /* 1780 */ 247, 1504, 1503, 423, 1308, 124, 531, 1306, 356, 10,
156719 /* 1790 */ 1305, 367, 1331, 101, 290, 96, 254, 515, 1217, 397,
156720 /* 1800 */ 34, 554, 1144, 255, 292, 542, 257, 372, 1289, 365,
156721 /* 1810 */ 371, 358, 1288, 197, 258, 555, 1206, 1201, 1462, 153,
156722 /* 1820 */ 1463, 1330, 1461, 154, 137, 283, 1460, 437, 155, 203,
156723 /* 1830 */ 810, 204, 78, 431, 1410, 199, 294, 213, 272, 135,
156724 /* 1840 */ 1053, 1051, 966, 157, 169, 220, 171, 887, 311, 223,
156725 /* 1850 */ 1067, 177, 159, 160, 407, 84, 409, 179, 85, 86,
156726 /* 1860 */ 87, 161, 1070, 225, 1066, 398, 167, 399, 18, 226,
156727 /* 1870 */ 146, 227, 323, 244, 1181, 471, 229, 1059, 183, 184,
156728 /* 1880 */ 37, 825, 344, 476, 233, 336, 488, 480, 185, 89,
156729 /* 1890 */ 19, 20, 485, 92, 853, 339, 91, 163, 866, 147,
156730 /* 1900 */ 284, 495, 502, 1132, 148, 1019, 936, 1102, 39, 93,
156731 /* 1910 */ 1103, 40, 505, 263, 208, 265, 188, 931, 1122, 243,
156732 /* 1920 */ 1126, 109, 33, 1120, 1118, 21, 1106, 22, 527, 1034,
156733 /* 1930 */ 23, 24, 1125, 25, 191, 97, 26, 1020, 1018, 1022,
156734 /* 1940 */ 1076, 250, 7, 1075, 249, 1023, 28, 41, 547, 988,
156735 /* 1950 */ 835, 108, 29, 251, 252, 1540, 374, 897, 377, 1140,
156736 /* 1960 */ 1139, 1197, 1197, 1197, 1197, 1197, 1197, 1539,
 
 
 
 
 
156737 };
156738 static const YYCODETYPE yy_lookahead[] = {
156739 /* 0 */ 189, 211, 189, 189, 218, 189, 220, 189, 267, 268,
156740 /* 10 */ 269, 189, 210, 189, 228, 189, 267, 268, 269, 19,
156741 /* 20 */ 218, 189, 211, 212, 211, 212, 211, 211, 212, 211,
156742 /* 30 */ 212, 31, 211, 211, 212, 211, 212, 288, 300, 39,
156743 /* 40 */ 21, 189, 304, 43, 44, 45, 46, 47, 48, 49,
156744 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 225, 19,
156745 /* 60 */ 189, 183, 184, 185, 186, 189, 248, 263, 236, 191,
156746 /* 70 */ 248, 193, 248, 197, 208, 257, 262, 201, 200, 257,
156747 /* 80 */ 200, 257, 81, 43, 44, 45, 46, 47, 48, 49,
156748 /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 189, 80,
156749 /* 100 */ 189, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156750 /* 110 */ 110, 111, 234, 235, 234, 235, 305, 306, 305, 118,
156751 /* 120 */ 307, 305, 306, 297, 298, 247, 86, 247, 88, 19,
156752 /* 130 */ 259, 251, 252, 267, 268, 269, 26, 136, 137, 261,
156753 /* 140 */ 121, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156754 /* 150 */ 110, 111, 59, 43, 44, 45, 46, 47, 48, 49,
156755 /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 259, 291,
156756 /* 170 */ 105, 106, 107, 108, 109, 110, 111, 158, 189, 69,
156757 /* 180 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
156758 /* 190 */ 111, 107, 108, 109, 110, 111, 205, 206, 207, 19,
156759 /* 200 */ 19, 54, 55, 56, 57, 58, 29, 114, 115, 116,
156760 /* 210 */ 33, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156761 /* 220 */ 110, 111, 233, 43, 44, 45, 46, 47, 48, 49,
156762 /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 126,
156763 /* 240 */ 127, 148, 65, 24, 214, 200, 59, 67, 101, 102,
156764 /* 250 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 22,
156765 /* 260 */ 189, 111, 43, 44, 45, 46, 47, 48, 49, 50,
156766 /* 270 */ 51, 52, 53, 54, 55, 56, 57, 206, 207, 234,
156767 /* 280 */ 235, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156768 /* 290 */ 110, 111, 247, 76, 107, 114, 59, 267, 268, 269,
156769 /* 300 */ 189, 114, 115, 116, 162, 163, 89, 19, 263, 92,
156770 /* 310 */ 189, 23, 54, 55, 56, 57, 189, 206, 207, 22,
156771 /* 320 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
156772 /* 330 */ 111, 43, 44, 45, 46, 47, 48, 49, 50, 51,
156773 /* 340 */ 52, 53, 54, 55, 56, 57, 19, 189, 277, 59,
156774 /* 350 */ 23, 114, 115, 116, 46, 47, 48, 49, 61, 101,
156775 /* 360 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
156776 /* 370 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
156777 /* 380 */ 53, 54, 55, 56, 57, 125, 126, 127, 277, 101,
156778 /* 390 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
156779 /* 400 */ 59, 189, 189, 276, 114, 115, 116, 117, 73, 59,
156780 /* 410 */ 120, 121, 122, 72, 214, 19, 81, 259, 19, 23,
156781 /* 420 */ 130, 81, 72, 24, 211, 212, 221, 119, 101, 102,
156782 /* 430 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 43,
156783 /* 440 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
156784 /* 450 */ 54, 55, 56, 57, 19, 114, 115, 116, 23, 208,
156785 /* 460 */ 125, 248, 189, 189, 114, 115, 116, 267, 268, 269,
156786 /* 470 */ 189, 136, 137, 189, 262, 22, 136, 137, 43, 44,
156787 /* 480 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
156788 /* 490 */ 55, 56, 57, 189, 95, 211, 212, 101, 102, 103,
156789 /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 59, 189,
156790 /* 510 */ 111, 189, 59, 76, 294, 295, 117, 118, 119, 120,
156791 /* 520 */ 121, 122, 123, 19, 87, 189, 89, 23, 129, 92,
156792 /* 530 */ 279, 227, 248, 22, 189, 284, 101, 102, 103, 104,
156793 /* 540 */ 105, 106, 107, 108, 109, 110, 111, 43, 44, 45,
156794 /* 550 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
156795 /* 560 */ 56, 57, 19, 114, 115, 116, 23, 114, 115, 116,
156796 /* 570 */ 59, 117, 299, 300, 120, 121, 122, 304, 189, 189,
156797 /* 580 */ 143, 189, 110, 111, 130, 22, 43, 44, 45, 46,
156798 /* 590 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
156799 /* 600 */ 57, 211, 212, 211, 212, 101, 102, 103, 104, 105,
156800 /* 610 */ 106, 107, 108, 109, 110, 111, 226, 189, 226, 189,
156801 /* 620 */ 298, 132, 59, 134, 135, 114, 115, 116, 189, 59,
156802 /* 630 */ 285, 19, 7, 8, 9, 23, 205, 206, 207, 211,
156803 /* 640 */ 212, 211, 212, 221, 101, 102, 103, 104, 105, 106,
156804 /* 650 */ 107, 108, 109, 110, 111, 43, 44, 45, 46, 47,
156805 /* 660 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
156806 /* 670 */ 19, 181, 182, 183, 184, 185, 186, 114, 115, 116,
156807 /* 680 */ 189, 191, 133, 193, 114, 115, 116, 138, 299, 300,
156808 /* 690 */ 200, 22, 201, 304, 43, 44, 45, 46, 47, 48,
156809 /* 700 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 35,
156810 /* 710 */ 189, 141, 189, 101, 102, 103, 104, 105, 106, 107,
156811 /* 720 */ 108, 109, 110, 111, 234, 235, 22, 23, 59, 184,
156812 /* 730 */ 26, 186, 211, 212, 211, 212, 191, 247, 193, 19,
156813 /* 740 */ 66, 105, 106, 73, 189, 200, 189, 226, 74, 226,
156814 /* 750 */ 22, 261, 101, 102, 103, 104, 105, 106, 107, 108,
156815 /* 760 */ 109, 110, 111, 43, 44, 45, 46, 47, 48, 49,
156816 /* 770 */ 50, 51, 52, 53, 54, 55, 56, 57, 189, 234,
156817 /* 780 */ 235, 291, 19, 114, 115, 116, 150, 59, 152, 189,
156818 /* 790 */ 233, 236, 247, 59, 189, 125, 126, 127, 59, 300,
156819 /* 800 */ 211, 212, 128, 304, 100, 19, 261, 156, 45, 46,
156820 /* 810 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
156821 /* 820 */ 57, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156822 /* 830 */ 110, 111, 46, 233, 189, 189, 291, 248, 99, 189,
156823 /* 840 */ 125, 126, 127, 115, 26, 200, 289, 230, 231, 115,
156824 /* 850 */ 200, 16, 189, 114, 115, 189, 211, 212, 119, 221,
156825 /* 860 */ 189, 211, 212, 258, 101, 102, 103, 104, 105, 106,
156826 /* 870 */ 107, 108, 109, 110, 111, 189, 156, 211, 212, 234,
156827 /* 880 */ 235, 189, 211, 212, 234, 235, 22, 201, 189, 150,
156828 /* 890 */ 151, 152, 247, 248, 76, 16, 19, 247, 248, 113,
156829 /* 900 */ 19, 24, 257, 211, 212, 189, 26, 89, 262, 223,
156830 /* 910 */ 92, 225, 77, 189, 79, 129, 19, 53, 226, 248,
156831 /* 920 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
156832 /* 930 */ 53, 54, 55, 56, 57, 236, 19, 271, 189, 99,
156833 /* 940 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
156834 /* 950 */ 53, 54, 55, 56, 57, 115, 77, 59, 79, 119,
156835 /* 960 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
156836 /* 970 */ 53, 54, 55, 56, 57, 259, 22, 23, 101, 102,
156837 /* 980 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 59,
156838 /* 990 */ 150, 151, 152, 158, 22, 114, 24, 189, 101, 102,
156839 /* 1000 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 285,
156840 /* 1010 */ 189, 262, 114, 115, 116, 200, 136, 137, 101, 102,
156841 /* 1020 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 230,
156842 /* 1030 */ 231, 59, 211, 212, 143, 105, 106, 189, 19, 141,
156843 /* 1040 */ 234, 235, 26, 113, 114, 115, 116, 226, 118, 234,
156844 /* 1050 */ 235, 189, 161, 247, 100, 189, 126, 23, 189, 107,
156845 /* 1060 */ 26, 189, 247, 44, 45, 46, 47, 48, 49, 50,
156846 /* 1070 */ 51, 52, 53, 54, 55, 56, 57, 211, 212, 59,
156847 /* 1080 */ 150, 233, 152, 211, 212, 133, 12, 115, 189, 189,
156848 /* 1090 */ 138, 19, 20, 285, 22, 233, 76, 127, 226, 11,
156849 /* 1100 */ 208, 27, 22, 23, 200, 236, 26, 87, 36, 89,
156850 /* 1110 */ 211, 212, 92, 300, 248, 189, 42, 304, 189, 149,
156851 /* 1120 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
156852 /* 1130 */ 111, 59, 200, 233, 114, 115, 116, 63, 234, 235,
156853 /* 1140 */ 124, 19, 20, 71, 22, 300, 46, 73, 200, 304,
156854 /* 1150 */ 116, 247, 244, 81, 246, 200, 227, 300, 36, 234,
156855 /* 1160 */ 235, 304, 23, 143, 200, 26, 234, 235, 194, 200,
156856 /* 1170 */ 48, 99, 247, 66, 189, 141, 284, 105, 106, 247,
156857 /* 1180 */ 100, 59, 234, 235, 112, 259, 114, 115, 116, 234,
156858 /* 1190 */ 235, 119, 85, 71, 266, 247, 211, 212, 234, 235,
156859 /* 1200 */ 189, 94, 247, 234, 235, 12, 266, 85, 136, 137,
156860 /* 1210 */ 189, 247, 90, 113, 126, 127, 247, 189, 26, 22,
156861 /* 1220 */ 27, 99, 150, 151, 152, 153, 154, 105, 106, 189,
156862 /* 1230 */ 302, 303, 211, 212, 112, 42, 114, 115, 116, 211,
156863 /* 1240 */ 212, 119, 302, 303, 19, 20, 189, 22, 274, 189,
156864 /* 1250 */ 15, 144, 278, 189, 22, 23, 63, 189, 189, 203,
156865 /* 1260 */ 204, 36, 203, 204, 189, 24, 136, 137, 211, 212,
156866 /* 1270 */ 189, 235, 150, 151, 152, 153, 154, 0, 1, 2,
156867 /* 1280 */ 211, 212, 5, 247, 59, 292, 293, 10, 11, 12,
156868 /* 1290 */ 13, 14, 211, 212, 17, 60, 71, 189, 258, 189,
156869 /* 1300 */ 59, 59, 105, 106, 189, 26, 189, 30, 116, 32,
156870 /* 1310 */ 85, 253, 189, 251, 252, 90, 189, 40, 258, 211,
156871 /* 1320 */ 212, 211, 212, 127, 99, 26, 211, 212, 211, 212,
156872 /* 1330 */ 105, 106, 100, 141, 211, 212, 239, 112, 189, 114,
156873 /* 1340 */ 115, 116, 31, 189, 119, 149, 249, 70, 189, 26,
156874 /* 1350 */ 39, 19, 20, 24, 22, 78, 115, 115, 81, 189,
156875 /* 1360 */ 211, 212, 155, 189, 157, 211, 212, 189, 36, 189,
156876 /* 1370 */ 211, 212, 189, 189, 97, 150, 151, 152, 153, 154,
156877 /* 1380 */ 189, 211, 212, 189, 189, 211, 212, 189, 189, 211,
156878 /* 1390 */ 212, 59, 189, 189, 211, 212, 23, 189, 26, 26,
156879 /* 1400 */ 22, 189, 24, 71, 22, 211, 212, 189, 131, 211,
156880 /* 1410 */ 212, 189, 189, 136, 137, 211, 212, 85, 189, 211,
156881 /* 1420 */ 212, 59, 90, 211, 212, 23, 147, 189, 26, 211,
156882 /* 1430 */ 212, 99, 23, 211, 212, 26, 159, 105, 106, 140,
156883 /* 1440 */ 211, 212, 23, 189, 112, 26, 114, 115, 116, 1,
156884 /* 1450 */ 2, 119, 23, 5, 23, 26, 189, 26, 10, 11,
156885 /* 1460 */ 12, 13, 14, 118, 119, 17, 143, 189, 139, 189,
156886 /* 1470 */ 19, 20, 189, 22, 189, 189, 23, 115, 30, 26,
156887 /* 1480 */ 32, 189, 150, 151, 152, 153, 154, 36, 40, 211,
156888 /* 1490 */ 212, 211, 212, 189, 211, 212, 211, 212, 7, 8,
156889 /* 1500 */ 19, 20, 189, 22, 189, 189, 83, 84, 189, 189,
156890 /* 1510 */ 59, 189, 140, 150, 189, 152, 189, 36, 70, 189,
156891 /* 1520 */ 23, 139, 71, 26, 211, 212, 78, 211, 212, 81,
156892 /* 1530 */ 189, 211, 212, 211, 212, 189, 211, 212, 211, 212,
156893 /* 1540 */ 59, 211, 212, 119, 23, 97, 23, 26, 23, 26,
156894 /* 1550 */ 99, 26, 71, 129, 59, 189, 105, 106, 107, 189,
156895 /* 1560 */ 189, 309, 150, 112, 152, 114, 115, 116, 189, 189,
156896 /* 1570 */ 119, 23, 19, 20, 26, 22, 189, 211, 212, 131,
156897 /* 1580 */ 99, 189, 211, 212, 136, 137, 105, 106, 189, 36,
156898 /* 1590 */ 211, 212, 250, 112, 189, 114, 115, 116, 211, 212,
156899 /* 1600 */ 119, 150, 151, 152, 153, 154, 189, 159, 23, 189,
156900 /* 1610 */ 115, 26, 59, 280, 189, 231, 189, 189, 281, 189,
156901 /* 1620 */ 237, 189, 189, 189, 71, 189, 189, 189, 211, 212,
156902 /* 1630 */ 209, 150, 151, 152, 153, 154, 211, 212, 250, 250,
156903 /* 1640 */ 250, 211, 212, 211, 212, 250, 238, 187, 290, 214,
156904 /* 1650 */ 240, 254, 99, 286, 254, 241, 241, 215, 105, 106,
156905 /* 1660 */ 286, 220, 240, 224, 214, 112, 214, 114, 115, 116,
156906 /* 1670 */ 254, 273, 119, 5, 192, 60, 290, 139, 10, 11,
156907 /* 1680 */ 12, 13, 14, 238, 244, 17, 240, 244, 196, 196,
156908 /* 1690 */ 38, 287, 196, 287, 148, 113, 22, 147, 30, 241,
156909 /* 1700 */ 32, 43, 276, 150, 151, 152, 153, 154, 40, 265,
156910 /* 1710 */ 241, 264, 229, 18, 196, 18, 232, 232, 232, 232,
156911 /* 1720 */ 241, 195, 265, 229, 265, 196, 265, 264, 229, 241,
156912 /* 1730 */ 241, 241, 195, 155, 62, 196, 195, 283, 70, 22,
156913 /* 1740 */ 216, 196, 195, 216, 282, 196, 78, 195, 113, 81,
156914 /* 1750 */ 64, 22, 222, 213, 219, 213, 213, 124, 222, 162,
156915 /* 1760 */ 111, 142, 256, 219, 113, 97, 255, 216, 213, 215,
156916 /* 1770 */ 213, 213, 213, 303, 255, 275, 216, 275, 216, 196,
156917 /* 1780 */ 91, 308, 308, 82, 256, 146, 143, 256, 255, 22,
156918 /* 1790 */ 256, 196, 260, 155, 272, 145, 25, 144, 199, 131,
156919 /* 1800 */ 26, 198, 13, 190, 136, 137, 190, 241, 245, 244,
156920 /* 1810 */ 242, 255, 245, 243, 6, 188, 188, 188, 208, 202,
156921 /* 1820 */ 208, 260, 208, 202, 217, 217, 208, 159, 202, 209,
156922 /* 1830 */ 4, 209, 208, 3, 270, 22, 160, 15, 98, 16,
156923 /* 1840 */ 23, 23, 137, 128, 148, 24, 140, 20, 16, 142,
156924 /* 1850 */ 1, 140, 128, 128, 61, 53, 37, 148, 53, 53,
156925 /* 1860 */ 53, 128, 114, 34, 1, 296, 293, 296, 22, 139,
156926 /* 1870 */ 5, 113, 158, 26, 75, 41, 139, 68, 68, 113,
156927 /* 1880 */ 24, 20, 129, 19, 123, 23, 96, 67, 22, 22,
156928 /* 1890 */ 22, 22, 67, 147, 59, 24, 22, 37, 28, 23,
156929 /* 1900 */ 67, 22, 24, 23, 23, 23, 114, 23, 22, 26,
156930 /* 1910 */ 23, 22, 24, 23, 139, 23, 22, 141, 75, 34,
156931 /* 1920 */ 75, 26, 22, 86, 88, 34, 23, 34, 24, 23,
156932 /* 1930 */ 34, 34, 93, 34, 26, 26, 34, 23, 23, 23,
156933 /* 1940 */ 23, 22, 44, 23, 26, 11, 22, 22, 26, 23,
156934 /* 1950 */ 23, 22, 22, 139, 139, 139, 23, 133, 15, 1,
156935 /* 1960 */ 1, 310, 310, 310, 310, 310, 310, 139, 310, 310,
156936 /* 1970 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156937 /* 1980 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156938 /* 1990 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156939 /* 2000 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156940 /* 2010 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156941 /* 2020 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156942 /* 2030 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156943 /* 2040 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156944 /* 2050 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156945 /* 2060 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156946 /* 2070 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156947 /* 2080 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156948 /* 2090 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156949 /* 2100 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156950 /* 2110 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156951 /* 2120 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156952 /* 2130 */ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
156953 /* 2140 */ 310, 310, 310, 310, 310, 310, 310, 310, 310,
156954 };
156955 #define YY_SHIFT_COUNT (557)
 
 
 
 
 
156956 #define YY_SHIFT_MIN (0)
156957 #define YY_SHIFT_MAX (1959)
156958 static const unsigned short int yy_shift_ofst[] = {
156959 /* 0 */ 1448, 1277, 1668, 1072, 1072, 340, 1122, 1225, 1332, 1481,
156960 /* 10 */ 1481, 1481, 335, 0, 0, 180, 897, 1481, 1481, 1481,
156961 /* 20 */ 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156962 /* 30 */ 930, 930, 1020, 1020, 290, 1, 340, 340, 340, 340,
156963 /* 40 */ 340, 340, 40, 110, 219, 288, 327, 396, 435, 504,
156964 /* 50 */ 543, 612, 651, 720, 877, 897, 897, 897, 897, 897,
156965 /* 60 */ 897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
156966 /* 70 */ 897, 897, 897, 917, 897, 1019, 763, 763, 1451, 1481,
156967 /* 80 */ 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156968 /* 90 */ 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156969 /* 100 */ 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156970 /* 110 */ 1481, 1481, 1553, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
156971 /* 120 */ 1481, 1481, 1481, 1481, 1481, 1481, 147, 258, 258, 258,
156972 /* 130 */ 258, 258, 79, 65, 84, 449, 19, 786, 449, 636,
156973 /* 140 */ 636, 449, 880, 880, 880, 880, 113, 142, 142, 472,
156974 /* 150 */ 150, 1968, 1968, 399, 399, 399, 93, 237, 341, 237,
156975 /* 160 */ 237, 237, 1074, 1074, 437, 350, 704, 1080, 449, 449,
156976 /* 170 */ 449, 449, 449, 449, 449, 449, 449, 449, 449, 449,
156977 /* 180 */ 449, 449, 449, 449, 449, 449, 449, 449, 449, 818,
156978 /* 190 */ 818, 449, 1088, 217, 217, 734, 734, 891, 1130, 1968,
156979 /* 200 */ 1968, 1968, 739, 840, 840, 453, 454, 511, 187, 563,
156980 /* 210 */ 570, 898, 669, 449, 449, 449, 449, 449, 449, 449,
156981 /* 220 */ 449, 449, 670, 449, 449, 449, 449, 449, 449, 449,
156982 /* 230 */ 449, 449, 449, 449, 449, 674, 674, 674, 449, 449,
156983 /* 240 */ 449, 449, 1034, 449, 449, 449, 972, 1107, 449, 449,
156984 /* 250 */ 1193, 449, 449, 449, 449, 449, 449, 449, 449, 260,
156985 /* 260 */ 177, 489, 1241, 1241, 1241, 1241, 1192, 489, 489, 952,
156986 /* 270 */ 1197, 625, 1235, 1299, 181, 181, 881, 1279, 1279, 1299,
156987 /* 280 */ 881, 1016, 1139, 1100, 1311, 1311, 1311, 181, 1323, 1323,
156988 /* 290 */ 1207, 1372, 549, 1378, 1615, 1538, 1538, 1652, 1652, 1538,
156989 /* 300 */ 1546, 1582, 1674, 1550, 1658, 1550, 1695, 1695, 1695, 1695,
156990 /* 310 */ 1538, 1697, 1550, 1582, 1582, 1550, 1582, 1674, 1658, 1550,
156991 /* 320 */ 1658, 1550, 1538, 1697, 1578, 1672, 1538, 1697, 1717, 1538,
156992 /* 330 */ 1697, 1538, 1697, 1717, 1635, 1635, 1635, 1686, 1729, 1729,
156993 /* 340 */ 1717, 1635, 1633, 1635, 1686, 1635, 1635, 1597, 1717, 1649,
156994 /* 350 */ 1649, 1717, 1619, 1651, 1619, 1651, 1619, 1651, 1619, 1651,
156995 /* 360 */ 1538, 1689, 1689, 1701, 1701, 1639, 1643, 1767, 1538, 1638,
156996 /* 370 */ 1639, 1650, 1653, 1550, 1771, 1774, 1789, 1789, 1808, 1808,
156997 /* 380 */ 1808, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
156998 /* 390 */ 1968, 1968, 1968, 1968, 1968, 1968, 308, 835, 954, 1232,
156999 /* 400 */ 879, 715, 728, 1373, 864, 1329, 970, 1196, 1402, 297,
157000 /* 410 */ 1409, 1419, 1429, 1431, 1453, 1497, 1242, 1345, 1491, 1424,
157001 /* 420 */ 1362, 1521, 1523, 1423, 1525, 1363, 1412, 1548, 1585, 1495,
157002 /* 430 */ 1382, 1826, 1830, 1813, 1676, 1822, 1740, 1823, 1817, 1818,
157003 /* 440 */ 1705, 1696, 1715, 1821, 1706, 1827, 1707, 1832, 1849, 1711,
157004 /* 450 */ 1724, 1725, 1793, 1819, 1709, 1802, 1805, 1806, 1807, 1733,
157005 /* 460 */ 1748, 1829, 1730, 1863, 1865, 1846, 1758, 1714, 1809, 1847,
157006 /* 470 */ 1810, 1799, 1834, 1737, 1766, 1856, 1861, 1864, 1753, 1761,
157007 /* 480 */ 1866, 1820, 1867, 1868, 1862, 1869, 1825, 1835, 1871, 1790,
157008 /* 490 */ 1870, 1874, 1833, 1860, 1876, 1746, 1879, 1880, 1881, 1882,
157009 /* 500 */ 1883, 1884, 1886, 1878, 1887, 1889, 1888, 1775, 1890, 1892,
157010 /* 510 */ 1792, 1885, 1894, 1776, 1895, 1891, 1893, 1896, 1897, 1836,
157011 /* 520 */ 1843, 1837, 1898, 1845, 1839, 1899, 1903, 1900, 1904, 1908,
157012 /* 530 */ 1909, 1902, 1906, 1895, 1914, 1915, 1916, 1917, 1918, 1920,
157013 /* 540 */ 1919, 1934, 1924, 1925, 1926, 1927, 1929, 1930, 1922, 1824,
157014 /* 550 */ 1814, 1815, 1816, 1828, 1933, 1943, 1958, 1959,
157015 };
157016 #define YY_REDUCE_COUNT (395)
 
 
157017 #define YY_REDUCE_MIN (-262)
157018 #define YY_REDUCE_MAX (1629)
157019 static const short yy_reduce_ofst[] = {
157020 /* 0 */ 490, -122, 545, 645, 650, -120, -189, -187, -184, -182,
157021 /* 10 */ -178, -176, 45, 30, 200, -251, -134, 390, 392, 521,
157022 /* 20 */ 523, 213, 692, 821, 284, 589, 872, 666, 671, 866,
157023 /* 30 */ 71, 111, 273, 389, 686, 815, 904, 932, 948, 955,
157024 /* 40 */ 964, 969, -259, -259, -259, -259, -259, -259, -259, -259,
157025 /* 50 */ -259, -259, -259, -259, -259, -259, -259, -259, -259, -259,
157026 /* 60 */ -259, -259, -259, -259, -259, -259, -259, -259, -259, -259,
157027 /* 70 */ -259, -259, -259, -259, -259, -259, -259, -259, 428, 430,
157028 /* 80 */ 899, 985, 1021, 1028, 1057, 1069, 1081, 1108, 1110, 1115,
157029 /* 90 */ 1117, 1123, 1149, 1154, 1159, 1170, 1174, 1178, 1183, 1194,
157030 /* 100 */ 1198, 1204, 1208, 1212, 1218, 1222, 1229, 1278, 1280, 1283,
157031 /* 110 */ 1285, 1313, 1316, 1320, 1322, 1325, 1327, 1330, 1366, 1371,
157032 /* 120 */ 1379, 1387, 1417, 1425, 1430, 1432, -259, -259, -259, -259,
157033 /* 130 */ -259, -259, -259, -259, -259, 557, 974, -214, -174, -9,
157034 /* 140 */ 431, -124, 806, 925, 806, 925, 251, 928, 940, -259,
157035 /* 150 */ -259, -259, -259, -198, -198, -198, 127, -186, -168, 212,
157036 /* 160 */ 646, 749, 617, 799, -262, 555, 220, 220, 491, 605,
157037 /* 170 */ 1040, 1060, 699, -11, 600, 848, 862, 345, -129, 724,
157038 /* 180 */ -91, 158, 808, 716, 900, 304, 869, 929, 926, 499,
157039 /* 190 */ 813, 322, 892, 845, 857, 1056, 1059, 908, 1036, 993,
157040 /* 200 */ 1062, 1097, -210, -185, -179, -148, -167, -89, 121, 274,
157041 /* 210 */ 281, 320, 336, 439, 663, 1011, 1064, 1068, 1075, 1127,
157042 /* 220 */ 1180, 1184, -196, 1191, 1195, 1199, 1203, 1223, 1238, 1254,
157043 /* 230 */ 1267, 1286, 1292, 1304, 1315, 205, 422, 638, 1319, 1341,
157044 /* 240 */ 1346, 1370, 1058, 1380, 1392, 1399, 1342, 1252, 1405, 1420,
157045 /* 250 */ 1384, 1427, 121, 1428, 1433, 1434, 1436, 1437, 1438, 1337,
157046 /* 260 */ 1333, 1383, 1388, 1389, 1390, 1395, 1058, 1383, 1383, 1408,
157047 /* 270 */ 1421, 1460, 1358, 1410, 1397, 1400, 1367, 1414, 1415, 1422,
157048 /* 280 */ 1374, 1442, 1439, 1441, 1435, 1450, 1452, 1416, 1440, 1443,
157049 /* 290 */ 1398, 1446, 1445, 1482, 1386, 1492, 1493, 1404, 1406, 1496,
157050 /* 300 */ 1426, 1444, 1447, 1458, 1483, 1469, 1484, 1485, 1486, 1487,
157051 /* 310 */ 1518, 1526, 1479, 1457, 1459, 1488, 1461, 1463, 1494, 1489,
157052 /* 320 */ 1499, 1490, 1529, 1537, 1454, 1462, 1539, 1541, 1524, 1545,
157053 /* 330 */ 1547, 1549, 1552, 1527, 1540, 1542, 1543, 1530, 1535, 1544,
157054 /* 340 */ 1551, 1555, 1554, 1557, 1536, 1558, 1559, 1470, 1560, 1500,
157055 /* 350 */ 1502, 1562, 1506, 1511, 1528, 1519, 1531, 1533, 1534, 1556,
157056 /* 360 */ 1583, 1473, 1474, 1532, 1561, 1563, 1565, 1564, 1595, 1522,
157057 /* 370 */ 1567, 1570, 1568, 1566, 1599, 1603, 1613, 1616, 1627, 1628,
157058 /* 380 */ 1629, 1569, 1571, 1573, 1617, 1610, 1612, 1614, 1618, 1621,
157059 /* 390 */ 1607, 1608, 1620, 1622, 1624, 1626,
 
157060 };
157061 static const YYACTIONTYPE yy_default[] = {
157062 /* 0 */ 1583, 1583, 1583, 1419, 1195, 1304, 1195, 1195, 1195, 1419,
157063 /* 10 */ 1419, 1419, 1195, 1334, 1334, 1472, 1226, 1195, 1195, 1195,
157064 /* 20 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1418, 1195, 1195,
157065 /* 30 */ 1195, 1195, 1502, 1502, 1195, 1195, 1195, 1195, 1195, 1195,
157066 /* 40 */ 1195, 1195, 1195, 1343, 1195, 1195, 1195, 1195, 1195, 1195,
157067 /* 50 */ 1420, 1421, 1195, 1195, 1195, 1471, 1473, 1436, 1353, 1352,
157068 /* 60 */ 1351, 1350, 1454, 1321, 1348, 1341, 1345, 1414, 1415, 1413,
157069 /* 70 */ 1417, 1421, 1420, 1195, 1344, 1385, 1399, 1384, 1195, 1195,
157070 /* 80 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157071 /* 90 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157072 /* 100 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157073 /* 110 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157074 /* 120 */ 1195, 1195, 1195, 1195, 1195, 1195, 1393, 1398, 1404, 1397,
157075 /* 130 */ 1394, 1387, 1386, 1388, 1389, 1195, 1216, 1268, 1195, 1195,
157076 /* 140 */ 1195, 1195, 1490, 1489, 1195, 1195, 1226, 1379, 1378, 1390,
157077 /* 150 */ 1391, 1401, 1400, 1479, 1537, 1536, 1437, 1195, 1195, 1195,
157078 /* 160 */ 1195, 1195, 1195, 1195, 1502, 1195, 1195, 1195, 1195, 1195,
157079 /* 170 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157080 /* 180 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1502,
157081 /* 190 */ 1502, 1195, 1226, 1502, 1502, 1222, 1222, 1328, 1195, 1485,
157082 /* 200 */ 1304, 1295, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157083 /* 210 */ 1195, 1195, 1195, 1195, 1195, 1195, 1476, 1474, 1195, 1195,
157084 /* 220 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157085 /* 230 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157086 /* 240 */ 1195, 1195, 1195, 1195, 1195, 1195, 1300, 1195, 1195, 1195,
157087 /* 250 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1531, 1195,
157088 /* 260 */ 1449, 1282, 1300, 1300, 1300, 1300, 1302, 1283, 1281, 1294,
157089 /* 270 */ 1227, 1202, 1575, 1301, 1323, 1323, 1572, 1347, 1347, 1301,
157090 /* 280 */ 1572, 1243, 1553, 1238, 1334, 1334, 1334, 1323, 1328, 1328,
157091 /* 290 */ 1416, 1301, 1294, 1195, 1575, 1309, 1309, 1574, 1574, 1309,
157092 /* 300 */ 1437, 1356, 1363, 1347, 1271, 1347, 1277, 1277, 1277, 1277,
157093 /* 310 */ 1309, 1213, 1347, 1356, 1356, 1347, 1356, 1363, 1271, 1347,
157094 /* 320 */ 1271, 1347, 1309, 1213, 1453, 1569, 1309, 1213, 1427, 1309,
157095 /* 330 */ 1213, 1309, 1213, 1427, 1269, 1269, 1269, 1258, 1195, 1195,
157096 /* 340 */ 1427, 1269, 1243, 1269, 1258, 1269, 1269, 1520, 1427, 1431,
157097 /* 350 */ 1431, 1427, 1327, 1322, 1327, 1322, 1327, 1322, 1327, 1322,
157098 /* 360 */ 1309, 1512, 1512, 1337, 1337, 1342, 1328, 1422, 1309, 1195,
157099 /* 370 */ 1342, 1340, 1338, 1347, 1219, 1261, 1534, 1534, 1530, 1530,
157100 /* 380 */ 1530, 1580, 1580, 1485, 1546, 1226, 1226, 1226, 1226, 1546,
157101 /* 390 */ 1245, 1245, 1227, 1227, 1226, 1546, 1195, 1195, 1195, 1195,
157102 /* 400 */ 1195, 1195, 1541, 1195, 1438, 1313, 1195, 1195, 1195, 1195,
157103 /* 410 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157104 /* 420 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157105 /* 430 */ 1368, 1195, 1198, 1482, 1195, 1195, 1480, 1195, 1195, 1195,
157106 /* 440 */ 1195, 1195, 1195, 1314, 1195, 1195, 1195, 1195, 1195, 1195,
157107 /* 450 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157108 /* 460 */ 1195, 1195, 1571, 1195, 1195, 1195, 1195, 1195, 1195, 1452,
157109 /* 470 */ 1451, 1195, 1195, 1311, 1195, 1195, 1195, 1195, 1195, 1195,
157110 /* 480 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1241, 1195, 1195,
157111 /* 490 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157112 /* 500 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
157113 /* 510 */ 1195, 1195, 1195, 1195, 1339, 1195, 1195, 1195, 1195, 1195,
157114 /* 520 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1517,
157115 /* 530 */ 1329, 1195, 1195, 1562, 1195, 1195, 1195, 1195, 1195, 1195,
157116 /* 540 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1557, 1285,
157117 /* 550 */ 1370, 1195, 1369, 1373, 1195, 1207, 1195, 1195,
 
 
157118 };
157119 /********** End of lemon-generated parsing tables *****************************/
157120
157121 /* The next table maps tokens (terminal symbols) into fallback tokens.
157122 ** If a construct like the following:
@@ -157280,10 +157525,11 @@
157280 0, /* ORDER => nothing */
157281 0, /* GROUP => nothing */
157282 0, /* HAVING => nothing */
157283 0, /* LIMIT => nothing */
157284 0, /* WHERE => nothing */
 
157285 0, /* INTO => nothing */
157286 0, /* NOTHING => nothing */
157287 0, /* FLOAT => nothing */
157288 0, /* BLOB => nothing */
157289 0, /* INTEGER => nothing */
@@ -157549,172 +157795,175 @@
157549 /* 143 */ "ORDER",
157550 /* 144 */ "GROUP",
157551 /* 145 */ "HAVING",
157552 /* 146 */ "LIMIT",
157553 /* 147 */ "WHERE",
157554 /* 148 */ "INTO",
157555 /* 149 */ "NOTHING",
157556 /* 150 */ "FLOAT",
157557 /* 151 */ "BLOB",
157558 /* 152 */ "INTEGER",
157559 /* 153 */ "VARIABLE",
157560 /* 154 */ "CASE",
157561 /* 155 */ "WHEN",
157562 /* 156 */ "THEN",
157563 /* 157 */ "ELSE",
157564 /* 158 */ "INDEX",
157565 /* 159 */ "ALTER",
157566 /* 160 */ "ADD",
157567 /* 161 */ "WINDOW",
157568 /* 162 */ "OVER",
157569 /* 163 */ "FILTER",
157570 /* 164 */ "COLUMN",
157571 /* 165 */ "AGG_FUNCTION",
157572 /* 166 */ "AGG_COLUMN",
157573 /* 167 */ "TRUEFALSE",
157574 /* 168 */ "ISNOT",
157575 /* 169 */ "FUNCTION",
157576 /* 170 */ "UMINUS",
157577 /* 171 */ "UPLUS",
157578 /* 172 */ "TRUTH",
157579 /* 173 */ "REGISTER",
157580 /* 174 */ "VECTOR",
157581 /* 175 */ "SELECT_COLUMN",
157582 /* 176 */ "IF_NULL_ROW",
157583 /* 177 */ "ASTERISK",
157584 /* 178 */ "SPAN",
157585 /* 179 */ "SPACE",
157586 /* 180 */ "ILLEGAL",
157587 /* 181 */ "input",
157588 /* 182 */ "cmdlist",
157589 /* 183 */ "ecmd",
157590 /* 184 */ "cmdx",
157591 /* 185 */ "explain",
157592 /* 186 */ "cmd",
157593 /* 187 */ "transtype",
157594 /* 188 */ "trans_opt",
157595 /* 189 */ "nm",
157596 /* 190 */ "savepoint_opt",
157597 /* 191 */ "create_table",
157598 /* 192 */ "create_table_args",
157599 /* 193 */ "createkw",
157600 /* 194 */ "temp",
157601 /* 195 */ "ifnotexists",
157602 /* 196 */ "dbnm",
157603 /* 197 */ "columnlist",
157604 /* 198 */ "conslist_opt",
157605 /* 199 */ "table_options",
157606 /* 200 */ "select",
157607 /* 201 */ "columnname",
157608 /* 202 */ "carglist",
157609 /* 203 */ "typetoken",
157610 /* 204 */ "typename",
157611 /* 205 */ "signed",
157612 /* 206 */ "plus_num",
157613 /* 207 */ "minus_num",
157614 /* 208 */ "scanpt",
157615 /* 209 */ "scantok",
157616 /* 210 */ "ccons",
157617 /* 211 */ "term",
157618 /* 212 */ "expr",
157619 /* 213 */ "onconf",
157620 /* 214 */ "sortorder",
157621 /* 215 */ "autoinc",
157622 /* 216 */ "eidlist_opt",
157623 /* 217 */ "refargs",
157624 /* 218 */ "defer_subclause",
157625 /* 219 */ "generated",
157626 /* 220 */ "refarg",
157627 /* 221 */ "refact",
157628 /* 222 */ "init_deferred_pred_opt",
157629 /* 223 */ "conslist",
157630 /* 224 */ "tconscomma",
157631 /* 225 */ "tcons",
157632 /* 226 */ "sortlist",
157633 /* 227 */ "eidlist",
157634 /* 228 */ "defer_subclause_opt",
157635 /* 229 */ "orconf",
157636 /* 230 */ "resolvetype",
157637 /* 231 */ "raisetype",
157638 /* 232 */ "ifexists",
157639 /* 233 */ "fullname",
157640 /* 234 */ "selectnowith",
157641 /* 235 */ "oneselect",
157642 /* 236 */ "wqlist",
157643 /* 237 */ "multiselect_op",
157644 /* 238 */ "distinct",
157645 /* 239 */ "selcollist",
157646 /* 240 */ "from",
157647 /* 241 */ "where_opt",
157648 /* 242 */ "groupby_opt",
157649 /* 243 */ "having_opt",
157650 /* 244 */ "orderby_opt",
157651 /* 245 */ "limit_opt",
157652 /* 246 */ "window_clause",
157653 /* 247 */ "values",
157654 /* 248 */ "nexprlist",
157655 /* 249 */ "sclp",
157656 /* 250 */ "as",
157657 /* 251 */ "seltablist",
157658 /* 252 */ "stl_prefix",
157659 /* 253 */ "joinop",
157660 /* 254 */ "indexed_opt",
157661 /* 255 */ "on_opt",
157662 /* 256 */ "using_opt",
157663 /* 257 */ "exprlist",
157664 /* 258 */ "xfullname",
157665 /* 259 */ "idlist",
157666 /* 260 */ "nulls",
157667 /* 261 */ "with",
157668 /* 262 */ "setlist",
157669 /* 263 */ "insert_cmd",
157670 /* 264 */ "idlist_opt",
157671 /* 265 */ "upsert",
157672 /* 266 */ "filter_over",
157673 /* 267 */ "likeop",
157674 /* 268 */ "between_op",
157675 /* 269 */ "in_op",
157676 /* 270 */ "paren_exprlist",
157677 /* 271 */ "case_operand",
157678 /* 272 */ "case_exprlist",
157679 /* 273 */ "case_else",
157680 /* 274 */ "uniqueflag",
157681 /* 275 */ "collate",
157682 /* 276 */ "vinto",
157683 /* 277 */ "nmnum",
157684 /* 278 */ "trigger_decl",
157685 /* 279 */ "trigger_cmd_list",
157686 /* 280 */ "trigger_time",
157687 /* 281 */ "trigger_event",
157688 /* 282 */ "foreach_clause",
157689 /* 283 */ "when_clause",
157690 /* 284 */ "trigger_cmd",
157691 /* 285 */ "trnm",
157692 /* 286 */ "tridxby",
157693 /* 287 */ "database_kw_opt",
157694 /* 288 */ "key_opt",
157695 /* 289 */ "add_column_fullname",
157696 /* 290 */ "kwcolumn_opt",
157697 /* 291 */ "create_vtab",
157698 /* 292 */ "vtabarglist",
157699 /* 293 */ "vtabarg",
157700 /* 294 */ "vtabargtoken",
157701 /* 295 */ "lp",
157702 /* 296 */ "anylist",
157703 /* 297 */ "windowdefn_list",
157704 /* 298 */ "windowdefn",
157705 /* 299 */ "window",
157706 /* 300 */ "frame_opt",
157707 /* 301 */ "part_opt",
157708 /* 302 */ "filter_clause",
157709 /* 303 */ "over_clause",
157710 /* 304 */ "range_or_rows",
157711 /* 305 */ "frame_bound",
157712 /* 306 */ "frame_bound_s",
157713 /* 307 */ "frame_bound_e",
157714 /* 308 */ "frame_exclude_opt",
157715 /* 309 */ "frame_exclude",
 
 
 
157716 };
157717 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
157718
157719 #ifndef NDEBUG
157720 /* For tracing reduce actions, the names of all rules are required.
@@ -157866,248 +158115,255 @@
157866 /* 143 */ "having_opt ::= HAVING expr",
157867 /* 144 */ "limit_opt ::=",
157868 /* 145 */ "limit_opt ::= LIMIT expr",
157869 /* 146 */ "limit_opt ::= LIMIT expr OFFSET expr",
157870 /* 147 */ "limit_opt ::= LIMIT expr COMMA expr",
157871 /* 148 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt",
157872 /* 149 */ "where_opt ::=",
157873 /* 150 */ "where_opt ::= WHERE expr",
157874 /* 151 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt",
157875 /* 152 */ "setlist ::= setlist COMMA nm EQ expr",
157876 /* 153 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
157877 /* 154 */ "setlist ::= nm EQ expr",
157878 /* 155 */ "setlist ::= LP idlist RP EQ expr",
157879 /* 156 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
157880 /* 157 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES",
157881 /* 158 */ "upsert ::=",
157882 /* 159 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
157883 /* 160 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
157884 /* 161 */ "upsert ::= ON CONFLICT DO NOTHING",
157885 /* 162 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt",
157886 /* 163 */ "insert_cmd ::= INSERT orconf",
157887 /* 164 */ "insert_cmd ::= REPLACE",
157888 /* 165 */ "idlist_opt ::=",
157889 /* 166 */ "idlist_opt ::= LP idlist RP",
157890 /* 167 */ "idlist ::= idlist COMMA nm",
157891 /* 168 */ "idlist ::= nm",
157892 /* 169 */ "expr ::= LP expr RP",
157893 /* 170 */ "expr ::= ID|INDEXED",
157894 /* 171 */ "expr ::= JOIN_KW",
157895 /* 172 */ "expr ::= nm DOT nm",
157896 /* 173 */ "expr ::= nm DOT nm DOT nm",
157897 /* 174 */ "term ::= NULL|FLOAT|BLOB",
157898 /* 175 */ "term ::= STRING",
157899 /* 176 */ "term ::= INTEGER",
157900 /* 177 */ "expr ::= VARIABLE",
157901 /* 178 */ "expr ::= expr COLLATE ID|STRING",
157902 /* 179 */ "expr ::= CAST LP expr AS typetoken RP",
157903 /* 180 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
157904 /* 181 */ "expr ::= ID|INDEXED LP STAR RP",
157905 /* 182 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
157906 /* 183 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
157907 /* 184 */ "term ::= CTIME_KW",
157908 /* 185 */ "expr ::= LP nexprlist COMMA expr RP",
157909 /* 186 */ "expr ::= expr AND expr",
157910 /* 187 */ "expr ::= expr OR expr",
157911 /* 188 */ "expr ::= expr LT|GT|GE|LE expr",
157912 /* 189 */ "expr ::= expr EQ|NE expr",
157913 /* 190 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
157914 /* 191 */ "expr ::= expr PLUS|MINUS expr",
157915 /* 192 */ "expr ::= expr STAR|SLASH|REM expr",
157916 /* 193 */ "expr ::= expr CONCAT expr",
157917 /* 194 */ "likeop ::= NOT LIKE_KW|MATCH",
157918 /* 195 */ "expr ::= expr likeop expr",
157919 /* 196 */ "expr ::= expr likeop expr ESCAPE expr",
157920 /* 197 */ "expr ::= expr ISNULL|NOTNULL",
157921 /* 198 */ "expr ::= expr NOT NULL",
157922 /* 199 */ "expr ::= expr IS expr",
157923 /* 200 */ "expr ::= expr IS NOT expr",
157924 /* 201 */ "expr ::= NOT expr",
157925 /* 202 */ "expr ::= BITNOT expr",
157926 /* 203 */ "expr ::= PLUS|MINUS expr",
157927 /* 204 */ "between_op ::= BETWEEN",
157928 /* 205 */ "between_op ::= NOT BETWEEN",
157929 /* 206 */ "expr ::= expr between_op expr AND expr",
157930 /* 207 */ "in_op ::= IN",
157931 /* 208 */ "in_op ::= NOT IN",
157932 /* 209 */ "expr ::= expr in_op LP exprlist RP",
157933 /* 210 */ "expr ::= LP select RP",
157934 /* 211 */ "expr ::= expr in_op LP select RP",
157935 /* 212 */ "expr ::= expr in_op nm dbnm paren_exprlist",
157936 /* 213 */ "expr ::= EXISTS LP select RP",
157937 /* 214 */ "expr ::= CASE case_operand case_exprlist case_else END",
157938 /* 215 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
157939 /* 216 */ "case_exprlist ::= WHEN expr THEN expr",
157940 /* 217 */ "case_else ::= ELSE expr",
157941 /* 218 */ "case_else ::=",
157942 /* 219 */ "case_operand ::= expr",
157943 /* 220 */ "case_operand ::=",
157944 /* 221 */ "exprlist ::=",
157945 /* 222 */ "nexprlist ::= nexprlist COMMA expr",
157946 /* 223 */ "nexprlist ::= expr",
157947 /* 224 */ "paren_exprlist ::=",
157948 /* 225 */ "paren_exprlist ::= LP exprlist RP",
157949 /* 226 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
157950 /* 227 */ "uniqueflag ::= UNIQUE",
157951 /* 228 */ "uniqueflag ::=",
157952 /* 229 */ "eidlist_opt ::=",
157953 /* 230 */ "eidlist_opt ::= LP eidlist RP",
157954 /* 231 */ "eidlist ::= eidlist COMMA nm collate sortorder",
157955 /* 232 */ "eidlist ::= nm collate sortorder",
157956 /* 233 */ "collate ::=",
157957 /* 234 */ "collate ::= COLLATE ID|STRING",
157958 /* 235 */ "cmd ::= DROP INDEX ifexists fullname",
157959 /* 236 */ "cmd ::= VACUUM vinto",
157960 /* 237 */ "cmd ::= VACUUM nm vinto",
157961 /* 238 */ "vinto ::= INTO expr",
157962 /* 239 */ "vinto ::=",
157963 /* 240 */ "cmd ::= PRAGMA nm dbnm",
157964 /* 241 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
157965 /* 242 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
157966 /* 243 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
157967 /* 244 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
157968 /* 245 */ "plus_num ::= PLUS INTEGER|FLOAT",
157969 /* 246 */ "minus_num ::= MINUS INTEGER|FLOAT",
157970 /* 247 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
157971 /* 248 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
157972 /* 249 */ "trigger_time ::= BEFORE|AFTER",
157973 /* 250 */ "trigger_time ::= INSTEAD OF",
157974 /* 251 */ "trigger_time ::=",
157975 /* 252 */ "trigger_event ::= DELETE|INSERT",
157976 /* 253 */ "trigger_event ::= UPDATE",
157977 /* 254 */ "trigger_event ::= UPDATE OF idlist",
157978 /* 255 */ "when_clause ::=",
157979 /* 256 */ "when_clause ::= WHEN expr",
157980 /* 257 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
157981 /* 258 */ "trigger_cmd_list ::= trigger_cmd SEMI",
157982 /* 259 */ "trnm ::= nm DOT nm",
157983 /* 260 */ "tridxby ::= INDEXED BY nm",
157984 /* 261 */ "tridxby ::= NOT INDEXED",
157985 /* 262 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
157986 /* 263 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
157987 /* 264 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
157988 /* 265 */ "trigger_cmd ::= scanpt select scanpt",
157989 /* 266 */ "expr ::= RAISE LP IGNORE RP",
157990 /* 267 */ "expr ::= RAISE LP raisetype COMMA nm RP",
157991 /* 268 */ "raisetype ::= ROLLBACK",
157992 /* 269 */ "raisetype ::= ABORT",
157993 /* 270 */ "raisetype ::= FAIL",
157994 /* 271 */ "cmd ::= DROP TRIGGER ifexists fullname",
157995 /* 272 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
157996 /* 273 */ "cmd ::= DETACH database_kw_opt expr",
157997 /* 274 */ "key_opt ::=",
157998 /* 275 */ "key_opt ::= KEY expr",
157999 /* 276 */ "cmd ::= REINDEX",
158000 /* 277 */ "cmd ::= REINDEX nm dbnm",
158001 /* 278 */ "cmd ::= ANALYZE",
158002 /* 279 */ "cmd ::= ANALYZE nm dbnm",
158003 /* 280 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
158004 /* 281 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
158005 /* 282 */ "add_column_fullname ::= fullname",
158006 /* 283 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
158007 /* 284 */ "cmd ::= create_vtab",
158008 /* 285 */ "cmd ::= create_vtab LP vtabarglist RP",
158009 /* 286 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
158010 /* 287 */ "vtabarg ::=",
158011 /* 288 */ "vtabargtoken ::= ANY",
158012 /* 289 */ "vtabargtoken ::= lp anylist RP",
158013 /* 290 */ "lp ::= LP",
158014 /* 291 */ "with ::= WITH wqlist",
158015 /* 292 */ "with ::= WITH RECURSIVE wqlist",
158016 /* 293 */ "wqlist ::= nm eidlist_opt AS LP select RP",
158017 /* 294 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
158018 /* 295 */ "windowdefn_list ::= windowdefn",
158019 /* 296 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
158020 /* 297 */ "windowdefn ::= nm AS LP window RP",
158021 /* 298 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
158022 /* 299 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
158023 /* 300 */ "window ::= ORDER BY sortlist frame_opt",
158024 /* 301 */ "window ::= nm ORDER BY sortlist frame_opt",
158025 /* 302 */ "window ::= frame_opt",
158026 /* 303 */ "window ::= nm frame_opt",
158027 /* 304 */ "frame_opt ::=",
158028 /* 305 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
158029 /* 306 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
158030 /* 307 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
158031 /* 308 */ "frame_bound_s ::= frame_bound",
158032 /* 309 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
158033 /* 310 */ "frame_bound_e ::= frame_bound",
158034 /* 311 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
158035 /* 312 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
158036 /* 313 */ "frame_bound ::= CURRENT ROW",
158037 /* 314 */ "frame_exclude_opt ::=",
158038 /* 315 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
158039 /* 316 */ "frame_exclude ::= NO OTHERS",
158040 /* 317 */ "frame_exclude ::= CURRENT ROW",
158041 /* 318 */ "frame_exclude ::= GROUP|TIES",
158042 /* 319 */ "window_clause ::= WINDOW windowdefn_list",
158043 /* 320 */ "filter_over ::= filter_clause over_clause",
158044 /* 321 */ "filter_over ::= over_clause",
158045 /* 322 */ "filter_over ::= filter_clause",
158046 /* 323 */ "over_clause ::= OVER LP window RP",
158047 /* 324 */ "over_clause ::= OVER nm",
158048 /* 325 */ "filter_clause ::= FILTER LP WHERE expr RP",
158049 /* 326 */ "input ::= cmdlist",
158050 /* 327 */ "cmdlist ::= cmdlist ecmd",
158051 /* 328 */ "cmdlist ::= ecmd",
158052 /* 329 */ "ecmd ::= SEMI",
158053 /* 330 */ "ecmd ::= cmdx SEMI",
158054 /* 331 */ "ecmd ::= explain cmdx SEMI",
158055 /* 332 */ "trans_opt ::=",
158056 /* 333 */ "trans_opt ::= TRANSACTION",
158057 /* 334 */ "trans_opt ::= TRANSACTION nm",
158058 /* 335 */ "savepoint_opt ::= SAVEPOINT",
158059 /* 336 */ "savepoint_opt ::=",
158060 /* 337 */ "cmd ::= create_table create_table_args",
158061 /* 338 */ "columnlist ::= columnlist COMMA columnname carglist",
158062 /* 339 */ "columnlist ::= columnname carglist",
158063 /* 340 */ "nm ::= ID|INDEXED",
158064 /* 341 */ "nm ::= STRING",
158065 /* 342 */ "nm ::= JOIN_KW",
158066 /* 343 */ "typetoken ::= typename",
158067 /* 344 */ "typename ::= ID|STRING",
158068 /* 345 */ "signed ::= plus_num",
158069 /* 346 */ "signed ::= minus_num",
158070 /* 347 */ "carglist ::= carglist ccons",
158071 /* 348 */ "carglist ::=",
158072 /* 349 */ "ccons ::= NULL onconf",
158073 /* 350 */ "ccons ::= GENERATED ALWAYS AS generated",
158074 /* 351 */ "ccons ::= AS generated",
158075 /* 352 */ "conslist_opt ::= COMMA conslist",
158076 /* 353 */ "conslist ::= conslist tconscomma tcons",
158077 /* 354 */ "conslist ::= tcons",
158078 /* 355 */ "tconscomma ::=",
158079 /* 356 */ "defer_subclause_opt ::= defer_subclause",
158080 /* 357 */ "resolvetype ::= raisetype",
158081 /* 358 */ "selectnowith ::= oneselect",
158082 /* 359 */ "oneselect ::= values",
158083 /* 360 */ "sclp ::= selcollist COMMA",
158084 /* 361 */ "as ::= ID|STRING",
158085 /* 362 */ "expr ::= term",
158086 /* 363 */ "likeop ::= LIKE_KW|MATCH",
158087 /* 364 */ "exprlist ::= nexprlist",
158088 /* 365 */ "nmnum ::= plus_num",
158089 /* 366 */ "nmnum ::= nm",
158090 /* 367 */ "nmnum ::= ON",
158091 /* 368 */ "nmnum ::= DELETE",
158092 /* 369 */ "nmnum ::= DEFAULT",
158093 /* 370 */ "plus_num ::= INTEGER|FLOAT",
158094 /* 371 */ "foreach_clause ::=",
158095 /* 372 */ "foreach_clause ::= FOR EACH ROW",
158096 /* 373 */ "trnm ::= nm",
158097 /* 374 */ "tridxby ::=",
158098 /* 375 */ "database_kw_opt ::= DATABASE",
158099 /* 376 */ "database_kw_opt ::=",
158100 /* 377 */ "kwcolumn_opt ::=",
158101 /* 378 */ "kwcolumn_opt ::= COLUMNKW",
158102 /* 379 */ "vtabarglist ::= vtabarg",
158103 /* 380 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
158104 /* 381 */ "vtabarg ::= vtabarg vtabargtoken",
158105 /* 382 */ "anylist ::=",
158106 /* 383 */ "anylist ::= anylist LP anylist RP",
158107 /* 384 */ "anylist ::= anylist ANY",
158108 /* 385 */ "with ::=",
 
 
 
 
 
 
 
158109 };
158110 #endif /* NDEBUG */
158111
158112
158113 #if YYSTACKDEPTH<=0
@@ -158229,102 +158485,103 @@
158229 ** Note: during a reduce, the only symbols destroyed are those
158230 ** which appear on the RHS of the rule, but which are *not* used
158231 ** inside the C code.
158232 */
158233 /********* Begin destructor definitions ***************************************/
158234 case 200: /* select */
158235 case 234: /* selectnowith */
158236 case 235: /* oneselect */
158237 case 247: /* values */
158238 {
158239 sqlite3SelectDelete(pParse->db, (yypminor->yy539));
158240 }
158241 break;
158242 case 211: /* term */
158243 case 212: /* expr */
158244 case 241: /* where_opt */
158245 case 243: /* having_opt */
158246 case 255: /* on_opt */
158247 case 271: /* case_operand */
158248 case 273: /* case_else */
158249 case 276: /* vinto */
158250 case 283: /* when_clause */
158251 case 288: /* key_opt */
158252 case 302: /* filter_clause */
158253 {
158254 sqlite3ExprDelete(pParse->db, (yypminor->yy202));
158255 }
158256 break;
158257 case 216: /* eidlist_opt */
158258 case 226: /* sortlist */
158259 case 227: /* eidlist */
158260 case 239: /* selcollist */
158261 case 242: /* groupby_opt */
158262 case 244: /* orderby_opt */
158263 case 248: /* nexprlist */
158264 case 249: /* sclp */
158265 case 257: /* exprlist */
158266 case 262: /* setlist */
158267 case 270: /* paren_exprlist */
158268 case 272: /* case_exprlist */
158269 case 301: /* part_opt */
158270 {
158271 sqlite3ExprListDelete(pParse->db, (yypminor->yy242));
158272 }
158273 break;
158274 case 233: /* fullname */
158275 case 240: /* from */
158276 case 251: /* seltablist */
158277 case 252: /* stl_prefix */
158278 case 258: /* xfullname */
158279 {
158280 sqlite3SrcListDelete(pParse->db, (yypminor->yy47));
158281 }
158282 break;
158283 case 236: /* wqlist */
158284 {
158285 sqlite3WithDelete(pParse->db, (yypminor->yy131));
158286 }
158287 break;
158288 case 246: /* window_clause */
158289 case 297: /* windowdefn_list */
158290 {
158291 sqlite3WindowListDelete(pParse->db, (yypminor->yy303));
158292 }
158293 break;
158294 case 256: /* using_opt */
158295 case 259: /* idlist */
158296 case 264: /* idlist_opt */
158297 {
158298 sqlite3IdListDelete(pParse->db, (yypminor->yy600));
158299 }
158300 break;
158301 case 266: /* filter_over */
158302 case 298: /* windowdefn */
158303 case 299: /* window */
158304 case 300: /* frame_opt */
158305 case 303: /* over_clause */
158306 {
158307 sqlite3WindowDelete(pParse->db, (yypminor->yy303));
158308 }
158309 break;
158310 case 279: /* trigger_cmd_list */
158311 case 284: /* trigger_cmd */
158312 {
158313 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy447));
158314 }
158315 break;
158316 case 281: /* trigger_event */
158317 {
158318 sqlite3IdListDelete(pParse->db, (yypminor->yy230).b);
158319 }
158320 break;
158321 case 305: /* frame_bound */
158322 case 306: /* frame_bound_s */
158323 case 307: /* frame_bound_e */
158324 {
158325 sqlite3ExprDelete(pParse->db, (yypminor->yy77).pExpr);
 
158326 }
158327 break;
158328 /********* End destructor definitions *****************************************/
158329 default: break; /* If no destructor action specified: do nothing */
158330 }
@@ -158611,396 +158868,403 @@
158611 }
158612
158613 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
158614 ** of that rule */
158615 static const YYCODETYPE yyRuleInfoLhs[] = {
158616 185, /* (0) explain ::= EXPLAIN */
158617 185, /* (1) explain ::= EXPLAIN QUERY PLAN */
158618 184, /* (2) cmdx ::= cmd */
158619 186, /* (3) cmd ::= BEGIN transtype trans_opt */
158620 187, /* (4) transtype ::= */
158621 187, /* (5) transtype ::= DEFERRED */
158622 187, /* (6) transtype ::= IMMEDIATE */
158623 187, /* (7) transtype ::= EXCLUSIVE */
158624 186, /* (8) cmd ::= COMMIT|END trans_opt */
158625 186, /* (9) cmd ::= ROLLBACK trans_opt */
158626 186, /* (10) cmd ::= SAVEPOINT nm */
158627 186, /* (11) cmd ::= RELEASE savepoint_opt nm */
158628 186, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
158629 191, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
158630 193, /* (14) createkw ::= CREATE */
158631 195, /* (15) ifnotexists ::= */
158632 195, /* (16) ifnotexists ::= IF NOT EXISTS */
158633 194, /* (17) temp ::= TEMP */
158634 194, /* (18) temp ::= */
158635 192, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
158636 192, /* (20) create_table_args ::= AS select */
158637 199, /* (21) table_options ::= */
158638 199, /* (22) table_options ::= WITHOUT nm */
158639 201, /* (23) columnname ::= nm typetoken */
158640 203, /* (24) typetoken ::= */
158641 203, /* (25) typetoken ::= typename LP signed RP */
158642 203, /* (26) typetoken ::= typename LP signed COMMA signed RP */
158643 204, /* (27) typename ::= typename ID|STRING */
158644 208, /* (28) scanpt ::= */
158645 209, /* (29) scantok ::= */
158646 210, /* (30) ccons ::= CONSTRAINT nm */
158647 210, /* (31) ccons ::= DEFAULT scantok term */
158648 210, /* (32) ccons ::= DEFAULT LP expr RP */
158649 210, /* (33) ccons ::= DEFAULT PLUS scantok term */
158650 210, /* (34) ccons ::= DEFAULT MINUS scantok term */
158651 210, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
158652 210, /* (36) ccons ::= NOT NULL onconf */
158653 210, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
158654 210, /* (38) ccons ::= UNIQUE onconf */
158655 210, /* (39) ccons ::= CHECK LP expr RP */
158656 210, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
158657 210, /* (41) ccons ::= defer_subclause */
158658 210, /* (42) ccons ::= COLLATE ID|STRING */
158659 219, /* (43) generated ::= LP expr RP */
158660 219, /* (44) generated ::= LP expr RP ID */
158661 215, /* (45) autoinc ::= */
158662 215, /* (46) autoinc ::= AUTOINCR */
158663 217, /* (47) refargs ::= */
158664 217, /* (48) refargs ::= refargs refarg */
158665 220, /* (49) refarg ::= MATCH nm */
158666 220, /* (50) refarg ::= ON INSERT refact */
158667 220, /* (51) refarg ::= ON DELETE refact */
158668 220, /* (52) refarg ::= ON UPDATE refact */
158669 221, /* (53) refact ::= SET NULL */
158670 221, /* (54) refact ::= SET DEFAULT */
158671 221, /* (55) refact ::= CASCADE */
158672 221, /* (56) refact ::= RESTRICT */
158673 221, /* (57) refact ::= NO ACTION */
158674 218, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
158675 218, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
158676 222, /* (60) init_deferred_pred_opt ::= */
158677 222, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
158678 222, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
158679 198, /* (63) conslist_opt ::= */
158680 224, /* (64) tconscomma ::= COMMA */
158681 225, /* (65) tcons ::= CONSTRAINT nm */
158682 225, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
158683 225, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
158684 225, /* (68) tcons ::= CHECK LP expr RP onconf */
158685 225, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
158686 228, /* (70) defer_subclause_opt ::= */
158687 213, /* (71) onconf ::= */
158688 213, /* (72) onconf ::= ON CONFLICT resolvetype */
158689 229, /* (73) orconf ::= */
158690 229, /* (74) orconf ::= OR resolvetype */
158691 230, /* (75) resolvetype ::= IGNORE */
158692 230, /* (76) resolvetype ::= REPLACE */
158693 186, /* (77) cmd ::= DROP TABLE ifexists fullname */
158694 232, /* (78) ifexists ::= IF EXISTS */
158695 232, /* (79) ifexists ::= */
158696 186, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
158697 186, /* (81) cmd ::= DROP VIEW ifexists fullname */
158698 186, /* (82) cmd ::= select */
158699 200, /* (83) select ::= WITH wqlist selectnowith */
158700 200, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
158701 200, /* (85) select ::= selectnowith */
158702 234, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
158703 237, /* (87) multiselect_op ::= UNION */
158704 237, /* (88) multiselect_op ::= UNION ALL */
158705 237, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
158706 235, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
158707 235, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
158708 247, /* (92) values ::= VALUES LP nexprlist RP */
158709 247, /* (93) values ::= values COMMA LP nexprlist RP */
158710 238, /* (94) distinct ::= DISTINCT */
158711 238, /* (95) distinct ::= ALL */
158712 238, /* (96) distinct ::= */
158713 249, /* (97) sclp ::= */
158714 239, /* (98) selcollist ::= sclp scanpt expr scanpt as */
158715 239, /* (99) selcollist ::= sclp scanpt STAR */
158716 239, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
158717 250, /* (101) as ::= AS nm */
158718 250, /* (102) as ::= */
158719 240, /* (103) from ::= */
158720 240, /* (104) from ::= FROM seltablist */
158721 252, /* (105) stl_prefix ::= seltablist joinop */
158722 252, /* (106) stl_prefix ::= */
158723 251, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
158724 251, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
158725 251, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
158726 251, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
158727 196, /* (111) dbnm ::= */
158728 196, /* (112) dbnm ::= DOT nm */
158729 233, /* (113) fullname ::= nm */
158730 233, /* (114) fullname ::= nm DOT nm */
158731 258, /* (115) xfullname ::= nm */
158732 258, /* (116) xfullname ::= nm DOT nm */
158733 258, /* (117) xfullname ::= nm DOT nm AS nm */
158734 258, /* (118) xfullname ::= nm AS nm */
158735 253, /* (119) joinop ::= COMMA|JOIN */
158736 253, /* (120) joinop ::= JOIN_KW JOIN */
158737 253, /* (121) joinop ::= JOIN_KW nm JOIN */
158738 253, /* (122) joinop ::= JOIN_KW nm nm JOIN */
158739 255, /* (123) on_opt ::= ON expr */
158740 255, /* (124) on_opt ::= */
158741 254, /* (125) indexed_opt ::= */
158742 254, /* (126) indexed_opt ::= INDEXED BY nm */
158743 254, /* (127) indexed_opt ::= NOT INDEXED */
158744 256, /* (128) using_opt ::= USING LP idlist RP */
158745 256, /* (129) using_opt ::= */
158746 244, /* (130) orderby_opt ::= */
158747 244, /* (131) orderby_opt ::= ORDER BY sortlist */
158748 226, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
158749 226, /* (133) sortlist ::= expr sortorder nulls */
158750 214, /* (134) sortorder ::= ASC */
158751 214, /* (135) sortorder ::= DESC */
158752 214, /* (136) sortorder ::= */
158753 260, /* (137) nulls ::= NULLS FIRST */
158754 260, /* (138) nulls ::= NULLS LAST */
158755 260, /* (139) nulls ::= */
158756 242, /* (140) groupby_opt ::= */
158757 242, /* (141) groupby_opt ::= GROUP BY nexprlist */
158758 243, /* (142) having_opt ::= */
158759 243, /* (143) having_opt ::= HAVING expr */
158760 245, /* (144) limit_opt ::= */
158761 245, /* (145) limit_opt ::= LIMIT expr */
158762 245, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
158763 245, /* (147) limit_opt ::= LIMIT expr COMMA expr */
158764 186, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
158765 241, /* (149) where_opt ::= */
158766 241, /* (150) where_opt ::= WHERE expr */
158767 186, /* (151) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt */
158768 262, /* (152) setlist ::= setlist COMMA nm EQ expr */
158769 262, /* (153) setlist ::= setlist COMMA LP idlist RP EQ expr */
158770 262, /* (154) setlist ::= nm EQ expr */
158771 262, /* (155) setlist ::= LP idlist RP EQ expr */
158772 186, /* (156) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
158773 186, /* (157) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
158774 265, /* (158) upsert ::= */
158775 265, /* (159) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
158776 265, /* (160) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
158777 265, /* (161) upsert ::= ON CONFLICT DO NOTHING */
158778 265, /* (162) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt */
158779 263, /* (163) insert_cmd ::= INSERT orconf */
158780 263, /* (164) insert_cmd ::= REPLACE */
158781 264, /* (165) idlist_opt ::= */
158782 264, /* (166) idlist_opt ::= LP idlist RP */
158783 259, /* (167) idlist ::= idlist COMMA nm */
158784 259, /* (168) idlist ::= nm */
158785 212, /* (169) expr ::= LP expr RP */
158786 212, /* (170) expr ::= ID|INDEXED */
158787 212, /* (171) expr ::= JOIN_KW */
158788 212, /* (172) expr ::= nm DOT nm */
158789 212, /* (173) expr ::= nm DOT nm DOT nm */
158790 211, /* (174) term ::= NULL|FLOAT|BLOB */
158791 211, /* (175) term ::= STRING */
158792 211, /* (176) term ::= INTEGER */
158793 212, /* (177) expr ::= VARIABLE */
158794 212, /* (178) expr ::= expr COLLATE ID|STRING */
158795 212, /* (179) expr ::= CAST LP expr AS typetoken RP */
158796 212, /* (180) expr ::= ID|INDEXED LP distinct exprlist RP */
158797 212, /* (181) expr ::= ID|INDEXED LP STAR RP */
158798 212, /* (182) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
158799 212, /* (183) expr ::= ID|INDEXED LP STAR RP filter_over */
158800 211, /* (184) term ::= CTIME_KW */
158801 212, /* (185) expr ::= LP nexprlist COMMA expr RP */
158802 212, /* (186) expr ::= expr AND expr */
158803 212, /* (187) expr ::= expr OR expr */
158804 212, /* (188) expr ::= expr LT|GT|GE|LE expr */
158805 212, /* (189) expr ::= expr EQ|NE expr */
158806 212, /* (190) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
158807 212, /* (191) expr ::= expr PLUS|MINUS expr */
158808 212, /* (192) expr ::= expr STAR|SLASH|REM expr */
158809 212, /* (193) expr ::= expr CONCAT expr */
158810 267, /* (194) likeop ::= NOT LIKE_KW|MATCH */
158811 212, /* (195) expr ::= expr likeop expr */
158812 212, /* (196) expr ::= expr likeop expr ESCAPE expr */
158813 212, /* (197) expr ::= expr ISNULL|NOTNULL */
158814 212, /* (198) expr ::= expr NOT NULL */
158815 212, /* (199) expr ::= expr IS expr */
158816 212, /* (200) expr ::= expr IS NOT expr */
158817 212, /* (201) expr ::= NOT expr */
158818 212, /* (202) expr ::= BITNOT expr */
158819 212, /* (203) expr ::= PLUS|MINUS expr */
158820 268, /* (204) between_op ::= BETWEEN */
158821 268, /* (205) between_op ::= NOT BETWEEN */
158822 212, /* (206) expr ::= expr between_op expr AND expr */
158823 269, /* (207) in_op ::= IN */
158824 269, /* (208) in_op ::= NOT IN */
158825 212, /* (209) expr ::= expr in_op LP exprlist RP */
158826 212, /* (210) expr ::= LP select RP */
158827 212, /* (211) expr ::= expr in_op LP select RP */
158828 212, /* (212) expr ::= expr in_op nm dbnm paren_exprlist */
158829 212, /* (213) expr ::= EXISTS LP select RP */
158830 212, /* (214) expr ::= CASE case_operand case_exprlist case_else END */
158831 272, /* (215) case_exprlist ::= case_exprlist WHEN expr THEN expr */
158832 272, /* (216) case_exprlist ::= WHEN expr THEN expr */
158833 273, /* (217) case_else ::= ELSE expr */
158834 273, /* (218) case_else ::= */
158835 271, /* (219) case_operand ::= expr */
158836 271, /* (220) case_operand ::= */
158837 257, /* (221) exprlist ::= */
158838 248, /* (222) nexprlist ::= nexprlist COMMA expr */
158839 248, /* (223) nexprlist ::= expr */
158840 270, /* (224) paren_exprlist ::= */
158841 270, /* (225) paren_exprlist ::= LP exprlist RP */
158842 186, /* (226) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
158843 274, /* (227) uniqueflag ::= UNIQUE */
158844 274, /* (228) uniqueflag ::= */
158845 216, /* (229) eidlist_opt ::= */
158846 216, /* (230) eidlist_opt ::= LP eidlist RP */
158847 227, /* (231) eidlist ::= eidlist COMMA nm collate sortorder */
158848 227, /* (232) eidlist ::= nm collate sortorder */
158849 275, /* (233) collate ::= */
158850 275, /* (234) collate ::= COLLATE ID|STRING */
158851 186, /* (235) cmd ::= DROP INDEX ifexists fullname */
158852 186, /* (236) cmd ::= VACUUM vinto */
158853 186, /* (237) cmd ::= VACUUM nm vinto */
158854 276, /* (238) vinto ::= INTO expr */
158855 276, /* (239) vinto ::= */
158856 186, /* (240) cmd ::= PRAGMA nm dbnm */
158857 186, /* (241) cmd ::= PRAGMA nm dbnm EQ nmnum */
158858 186, /* (242) cmd ::= PRAGMA nm dbnm LP nmnum RP */
158859 186, /* (243) cmd ::= PRAGMA nm dbnm EQ minus_num */
158860 186, /* (244) cmd ::= PRAGMA nm dbnm LP minus_num RP */
158861 206, /* (245) plus_num ::= PLUS INTEGER|FLOAT */
158862 207, /* (246) minus_num ::= MINUS INTEGER|FLOAT */
158863 186, /* (247) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
158864 278, /* (248) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
158865 280, /* (249) trigger_time ::= BEFORE|AFTER */
158866 280, /* (250) trigger_time ::= INSTEAD OF */
158867 280, /* (251) trigger_time ::= */
158868 281, /* (252) trigger_event ::= DELETE|INSERT */
158869 281, /* (253) trigger_event ::= UPDATE */
158870 281, /* (254) trigger_event ::= UPDATE OF idlist */
158871 283, /* (255) when_clause ::= */
158872 283, /* (256) when_clause ::= WHEN expr */
158873 279, /* (257) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
158874 279, /* (258) trigger_cmd_list ::= trigger_cmd SEMI */
158875 285, /* (259) trnm ::= nm DOT nm */
158876 286, /* (260) tridxby ::= INDEXED BY nm */
158877 286, /* (261) tridxby ::= NOT INDEXED */
158878 284, /* (262) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
158879 284, /* (263) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
158880 284, /* (264) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
158881 284, /* (265) trigger_cmd ::= scanpt select scanpt */
158882 212, /* (266) expr ::= RAISE LP IGNORE RP */
158883 212, /* (267) expr ::= RAISE LP raisetype COMMA nm RP */
158884 231, /* (268) raisetype ::= ROLLBACK */
158885 231, /* (269) raisetype ::= ABORT */
158886 231, /* (270) raisetype ::= FAIL */
158887 186, /* (271) cmd ::= DROP TRIGGER ifexists fullname */
158888 186, /* (272) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
158889 186, /* (273) cmd ::= DETACH database_kw_opt expr */
158890 288, /* (274) key_opt ::= */
158891 288, /* (275) key_opt ::= KEY expr */
158892 186, /* (276) cmd ::= REINDEX */
158893 186, /* (277) cmd ::= REINDEX nm dbnm */
158894 186, /* (278) cmd ::= ANALYZE */
158895 186, /* (279) cmd ::= ANALYZE nm dbnm */
158896 186, /* (280) cmd ::= ALTER TABLE fullname RENAME TO nm */
158897 186, /* (281) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
158898 289, /* (282) add_column_fullname ::= fullname */
158899 186, /* (283) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
158900 186, /* (284) cmd ::= create_vtab */
158901 186, /* (285) cmd ::= create_vtab LP vtabarglist RP */
158902 291, /* (286) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
158903 293, /* (287) vtabarg ::= */
158904 294, /* (288) vtabargtoken ::= ANY */
158905 294, /* (289) vtabargtoken ::= lp anylist RP */
158906 295, /* (290) lp ::= LP */
158907 261, /* (291) with ::= WITH wqlist */
158908 261, /* (292) with ::= WITH RECURSIVE wqlist */
158909 236, /* (293) wqlist ::= nm eidlist_opt AS LP select RP */
158910 236, /* (294) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
158911 297, /* (295) windowdefn_list ::= windowdefn */
158912 297, /* (296) windowdefn_list ::= windowdefn_list COMMA windowdefn */
158913 298, /* (297) windowdefn ::= nm AS LP window RP */
158914 299, /* (298) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
158915 299, /* (299) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
158916 299, /* (300) window ::= ORDER BY sortlist frame_opt */
158917 299, /* (301) window ::= nm ORDER BY sortlist frame_opt */
158918 299, /* (302) window ::= frame_opt */
158919 299, /* (303) window ::= nm frame_opt */
158920 300, /* (304) frame_opt ::= */
158921 300, /* (305) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
158922 300, /* (306) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
158923 304, /* (307) range_or_rows ::= RANGE|ROWS|GROUPS */
158924 306, /* (308) frame_bound_s ::= frame_bound */
158925 306, /* (309) frame_bound_s ::= UNBOUNDED PRECEDING */
158926 307, /* (310) frame_bound_e ::= frame_bound */
158927 307, /* (311) frame_bound_e ::= UNBOUNDED FOLLOWING */
158928 305, /* (312) frame_bound ::= expr PRECEDING|FOLLOWING */
158929 305, /* (313) frame_bound ::= CURRENT ROW */
158930 308, /* (314) frame_exclude_opt ::= */
158931 308, /* (315) frame_exclude_opt ::= EXCLUDE frame_exclude */
158932 309, /* (316) frame_exclude ::= NO OTHERS */
158933 309, /* (317) frame_exclude ::= CURRENT ROW */
158934 309, /* (318) frame_exclude ::= GROUP|TIES */
158935 246, /* (319) window_clause ::= WINDOW windowdefn_list */
158936 266, /* (320) filter_over ::= filter_clause over_clause */
158937 266, /* (321) filter_over ::= over_clause */
158938 266, /* (322) filter_over ::= filter_clause */
158939 303, /* (323) over_clause ::= OVER LP window RP */
158940 303, /* (324) over_clause ::= OVER nm */
158941 302, /* (325) filter_clause ::= FILTER LP WHERE expr RP */
158942 181, /* (326) input ::= cmdlist */
158943 182, /* (327) cmdlist ::= cmdlist ecmd */
158944 182, /* (328) cmdlist ::= ecmd */
158945 183, /* (329) ecmd ::= SEMI */
158946 183, /* (330) ecmd ::= cmdx SEMI */
158947 183, /* (331) ecmd ::= explain cmdx SEMI */
158948 188, /* (332) trans_opt ::= */
158949 188, /* (333) trans_opt ::= TRANSACTION */
158950 188, /* (334) trans_opt ::= TRANSACTION nm */
158951 190, /* (335) savepoint_opt ::= SAVEPOINT */
158952 190, /* (336) savepoint_opt ::= */
158953 186, /* (337) cmd ::= create_table create_table_args */
158954 197, /* (338) columnlist ::= columnlist COMMA columnname carglist */
158955 197, /* (339) columnlist ::= columnname carglist */
158956 189, /* (340) nm ::= ID|INDEXED */
158957 189, /* (341) nm ::= STRING */
158958 189, /* (342) nm ::= JOIN_KW */
158959 203, /* (343) typetoken ::= typename */
158960 204, /* (344) typename ::= ID|STRING */
158961 205, /* (345) signed ::= plus_num */
158962 205, /* (346) signed ::= minus_num */
158963 202, /* (347) carglist ::= carglist ccons */
158964 202, /* (348) carglist ::= */
158965 210, /* (349) ccons ::= NULL onconf */
158966 210, /* (350) ccons ::= GENERATED ALWAYS AS generated */
158967 210, /* (351) ccons ::= AS generated */
158968 198, /* (352) conslist_opt ::= COMMA conslist */
158969 223, /* (353) conslist ::= conslist tconscomma tcons */
158970 223, /* (354) conslist ::= tcons */
158971 224, /* (355) tconscomma ::= */
158972 228, /* (356) defer_subclause_opt ::= defer_subclause */
158973 230, /* (357) resolvetype ::= raisetype */
158974 234, /* (358) selectnowith ::= oneselect */
158975 235, /* (359) oneselect ::= values */
158976 249, /* (360) sclp ::= selcollist COMMA */
158977 250, /* (361) as ::= ID|STRING */
158978 212, /* (362) expr ::= term */
158979 267, /* (363) likeop ::= LIKE_KW|MATCH */
158980 257, /* (364) exprlist ::= nexprlist */
158981 277, /* (365) nmnum ::= plus_num */
158982 277, /* (366) nmnum ::= nm */
158983 277, /* (367) nmnum ::= ON */
158984 277, /* (368) nmnum ::= DELETE */
158985 277, /* (369) nmnum ::= DEFAULT */
158986 206, /* (370) plus_num ::= INTEGER|FLOAT */
158987 282, /* (371) foreach_clause ::= */
158988 282, /* (372) foreach_clause ::= FOR EACH ROW */
158989 285, /* (373) trnm ::= nm */
158990 286, /* (374) tridxby ::= */
158991 287, /* (375) database_kw_opt ::= DATABASE */
158992 287, /* (376) database_kw_opt ::= */
158993 290, /* (377) kwcolumn_opt ::= */
158994 290, /* (378) kwcolumn_opt ::= COLUMNKW */
158995 292, /* (379) vtabarglist ::= vtabarg */
158996 292, /* (380) vtabarglist ::= vtabarglist COMMA vtabarg */
158997 293, /* (381) vtabarg ::= vtabarg vtabargtoken */
158998 296, /* (382) anylist ::= */
158999 296, /* (383) anylist ::= anylist LP anylist RP */
159000 296, /* (384) anylist ::= anylist ANY */
159001 261, /* (385) with ::= */
 
 
 
 
 
 
 
159002 };
159003
159004 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
159005 ** of symbols on the right-hand side of that rule. */
159006 static const signed char yyRuleInfoNRhs[] = {
@@ -159150,248 +159414,255 @@
159150 -2, /* (143) having_opt ::= HAVING expr */
159151 0, /* (144) limit_opt ::= */
159152 -2, /* (145) limit_opt ::= LIMIT expr */
159153 -4, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
159154 -4, /* (147) limit_opt ::= LIMIT expr COMMA expr */
159155 -6, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
159156 0, /* (149) where_opt ::= */
159157 -2, /* (150) where_opt ::= WHERE expr */
159158 -9, /* (151) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt */
159159 -5, /* (152) setlist ::= setlist COMMA nm EQ expr */
159160 -7, /* (153) setlist ::= setlist COMMA LP idlist RP EQ expr */
159161 -3, /* (154) setlist ::= nm EQ expr */
159162 -5, /* (155) setlist ::= LP idlist RP EQ expr */
159163 -7, /* (156) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
159164 -7, /* (157) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
159165 0, /* (158) upsert ::= */
159166 -12, /* (159) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
159167 -9, /* (160) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
159168 -4, /* (161) upsert ::= ON CONFLICT DO NOTHING */
159169 -7, /* (162) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt */
159170 -2, /* (163) insert_cmd ::= INSERT orconf */
159171 -1, /* (164) insert_cmd ::= REPLACE */
159172 0, /* (165) idlist_opt ::= */
159173 -3, /* (166) idlist_opt ::= LP idlist RP */
159174 -3, /* (167) idlist ::= idlist COMMA nm */
159175 -1, /* (168) idlist ::= nm */
159176 -3, /* (169) expr ::= LP expr RP */
159177 -1, /* (170) expr ::= ID|INDEXED */
159178 -1, /* (171) expr ::= JOIN_KW */
159179 -3, /* (172) expr ::= nm DOT nm */
159180 -5, /* (173) expr ::= nm DOT nm DOT nm */
159181 -1, /* (174) term ::= NULL|FLOAT|BLOB */
159182 -1, /* (175) term ::= STRING */
159183 -1, /* (176) term ::= INTEGER */
159184 -1, /* (177) expr ::= VARIABLE */
159185 -3, /* (178) expr ::= expr COLLATE ID|STRING */
159186 -6, /* (179) expr ::= CAST LP expr AS typetoken RP */
159187 -5, /* (180) expr ::= ID|INDEXED LP distinct exprlist RP */
159188 -4, /* (181) expr ::= ID|INDEXED LP STAR RP */
159189 -6, /* (182) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
159190 -5, /* (183) expr ::= ID|INDEXED LP STAR RP filter_over */
159191 -1, /* (184) term ::= CTIME_KW */
159192 -5, /* (185) expr ::= LP nexprlist COMMA expr RP */
159193 -3, /* (186) expr ::= expr AND expr */
159194 -3, /* (187) expr ::= expr OR expr */
159195 -3, /* (188) expr ::= expr LT|GT|GE|LE expr */
159196 -3, /* (189) expr ::= expr EQ|NE expr */
159197 -3, /* (190) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
159198 -3, /* (191) expr ::= expr PLUS|MINUS expr */
159199 -3, /* (192) expr ::= expr STAR|SLASH|REM expr */
159200 -3, /* (193) expr ::= expr CONCAT expr */
159201 -2, /* (194) likeop ::= NOT LIKE_KW|MATCH */
159202 -3, /* (195) expr ::= expr likeop expr */
159203 -5, /* (196) expr ::= expr likeop expr ESCAPE expr */
159204 -2, /* (197) expr ::= expr ISNULL|NOTNULL */
159205 -3, /* (198) expr ::= expr NOT NULL */
159206 -3, /* (199) expr ::= expr IS expr */
159207 -4, /* (200) expr ::= expr IS NOT expr */
159208 -2, /* (201) expr ::= NOT expr */
159209 -2, /* (202) expr ::= BITNOT expr */
159210 -2, /* (203) expr ::= PLUS|MINUS expr */
159211 -1, /* (204) between_op ::= BETWEEN */
159212 -2, /* (205) between_op ::= NOT BETWEEN */
159213 -5, /* (206) expr ::= expr between_op expr AND expr */
159214 -1, /* (207) in_op ::= IN */
159215 -2, /* (208) in_op ::= NOT IN */
159216 -5, /* (209) expr ::= expr in_op LP exprlist RP */
159217 -3, /* (210) expr ::= LP select RP */
159218 -5, /* (211) expr ::= expr in_op LP select RP */
159219 -5, /* (212) expr ::= expr in_op nm dbnm paren_exprlist */
159220 -4, /* (213) expr ::= EXISTS LP select RP */
159221 -5, /* (214) expr ::= CASE case_operand case_exprlist case_else END */
159222 -5, /* (215) case_exprlist ::= case_exprlist WHEN expr THEN expr */
159223 -4, /* (216) case_exprlist ::= WHEN expr THEN expr */
159224 -2, /* (217) case_else ::= ELSE expr */
159225 0, /* (218) case_else ::= */
159226 -1, /* (219) case_operand ::= expr */
159227 0, /* (220) case_operand ::= */
159228 0, /* (221) exprlist ::= */
159229 -3, /* (222) nexprlist ::= nexprlist COMMA expr */
159230 -1, /* (223) nexprlist ::= expr */
159231 0, /* (224) paren_exprlist ::= */
159232 -3, /* (225) paren_exprlist ::= LP exprlist RP */
159233 -12, /* (226) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
159234 -1, /* (227) uniqueflag ::= UNIQUE */
159235 0, /* (228) uniqueflag ::= */
159236 0, /* (229) eidlist_opt ::= */
159237 -3, /* (230) eidlist_opt ::= LP eidlist RP */
159238 -5, /* (231) eidlist ::= eidlist COMMA nm collate sortorder */
159239 -3, /* (232) eidlist ::= nm collate sortorder */
159240 0, /* (233) collate ::= */
159241 -2, /* (234) collate ::= COLLATE ID|STRING */
159242 -4, /* (235) cmd ::= DROP INDEX ifexists fullname */
159243 -2, /* (236) cmd ::= VACUUM vinto */
159244 -3, /* (237) cmd ::= VACUUM nm vinto */
159245 -2, /* (238) vinto ::= INTO expr */
159246 0, /* (239) vinto ::= */
159247 -3, /* (240) cmd ::= PRAGMA nm dbnm */
159248 -5, /* (241) cmd ::= PRAGMA nm dbnm EQ nmnum */
159249 -6, /* (242) cmd ::= PRAGMA nm dbnm LP nmnum RP */
159250 -5, /* (243) cmd ::= PRAGMA nm dbnm EQ minus_num */
159251 -6, /* (244) cmd ::= PRAGMA nm dbnm LP minus_num RP */
159252 -2, /* (245) plus_num ::= PLUS INTEGER|FLOAT */
159253 -2, /* (246) minus_num ::= MINUS INTEGER|FLOAT */
159254 -5, /* (247) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
159255 -11, /* (248) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
159256 -1, /* (249) trigger_time ::= BEFORE|AFTER */
159257 -2, /* (250) trigger_time ::= INSTEAD OF */
159258 0, /* (251) trigger_time ::= */
159259 -1, /* (252) trigger_event ::= DELETE|INSERT */
159260 -1, /* (253) trigger_event ::= UPDATE */
159261 -3, /* (254) trigger_event ::= UPDATE OF idlist */
159262 0, /* (255) when_clause ::= */
159263 -2, /* (256) when_clause ::= WHEN expr */
159264 -3, /* (257) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
159265 -2, /* (258) trigger_cmd_list ::= trigger_cmd SEMI */
159266 -3, /* (259) trnm ::= nm DOT nm */
159267 -3, /* (260) tridxby ::= INDEXED BY nm */
159268 -2, /* (261) tridxby ::= NOT INDEXED */
159269 -9, /* (262) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
159270 -8, /* (263) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
159271 -6, /* (264) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
159272 -3, /* (265) trigger_cmd ::= scanpt select scanpt */
159273 -4, /* (266) expr ::= RAISE LP IGNORE RP */
159274 -6, /* (267) expr ::= RAISE LP raisetype COMMA nm RP */
159275 -1, /* (268) raisetype ::= ROLLBACK */
159276 -1, /* (269) raisetype ::= ABORT */
159277 -1, /* (270) raisetype ::= FAIL */
159278 -4, /* (271) cmd ::= DROP TRIGGER ifexists fullname */
159279 -6, /* (272) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
159280 -3, /* (273) cmd ::= DETACH database_kw_opt expr */
159281 0, /* (274) key_opt ::= */
159282 -2, /* (275) key_opt ::= KEY expr */
159283 -1, /* (276) cmd ::= REINDEX */
159284 -3, /* (277) cmd ::= REINDEX nm dbnm */
159285 -1, /* (278) cmd ::= ANALYZE */
159286 -3, /* (279) cmd ::= ANALYZE nm dbnm */
159287 -6, /* (280) cmd ::= ALTER TABLE fullname RENAME TO nm */
159288 -7, /* (281) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
159289 -1, /* (282) add_column_fullname ::= fullname */
159290 -8, /* (283) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
159291 -1, /* (284) cmd ::= create_vtab */
159292 -4, /* (285) cmd ::= create_vtab LP vtabarglist RP */
159293 -8, /* (286) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
159294 0, /* (287) vtabarg ::= */
159295 -1, /* (288) vtabargtoken ::= ANY */
159296 -3, /* (289) vtabargtoken ::= lp anylist RP */
159297 -1, /* (290) lp ::= LP */
159298 -2, /* (291) with ::= WITH wqlist */
159299 -3, /* (292) with ::= WITH RECURSIVE wqlist */
159300 -6, /* (293) wqlist ::= nm eidlist_opt AS LP select RP */
159301 -8, /* (294) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
159302 -1, /* (295) windowdefn_list ::= windowdefn */
159303 -3, /* (296) windowdefn_list ::= windowdefn_list COMMA windowdefn */
159304 -5, /* (297) windowdefn ::= nm AS LP window RP */
159305 -5, /* (298) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
159306 -6, /* (299) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
159307 -4, /* (300) window ::= ORDER BY sortlist frame_opt */
159308 -5, /* (301) window ::= nm ORDER BY sortlist frame_opt */
159309 -1, /* (302) window ::= frame_opt */
159310 -2, /* (303) window ::= nm frame_opt */
159311 0, /* (304) frame_opt ::= */
159312 -3, /* (305) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
159313 -6, /* (306) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
159314 -1, /* (307) range_or_rows ::= RANGE|ROWS|GROUPS */
159315 -1, /* (308) frame_bound_s ::= frame_bound */
159316 -2, /* (309) frame_bound_s ::= UNBOUNDED PRECEDING */
159317 -1, /* (310) frame_bound_e ::= frame_bound */
159318 -2, /* (311) frame_bound_e ::= UNBOUNDED FOLLOWING */
159319 -2, /* (312) frame_bound ::= expr PRECEDING|FOLLOWING */
159320 -2, /* (313) frame_bound ::= CURRENT ROW */
159321 0, /* (314) frame_exclude_opt ::= */
159322 -2, /* (315) frame_exclude_opt ::= EXCLUDE frame_exclude */
159323 -2, /* (316) frame_exclude ::= NO OTHERS */
159324 -2, /* (317) frame_exclude ::= CURRENT ROW */
159325 -1, /* (318) frame_exclude ::= GROUP|TIES */
159326 -2, /* (319) window_clause ::= WINDOW windowdefn_list */
159327 -2, /* (320) filter_over ::= filter_clause over_clause */
159328 -1, /* (321) filter_over ::= over_clause */
159329 -1, /* (322) filter_over ::= filter_clause */
159330 -4, /* (323) over_clause ::= OVER LP window RP */
159331 -2, /* (324) over_clause ::= OVER nm */
159332 -5, /* (325) filter_clause ::= FILTER LP WHERE expr RP */
159333 -1, /* (326) input ::= cmdlist */
159334 -2, /* (327) cmdlist ::= cmdlist ecmd */
159335 -1, /* (328) cmdlist ::= ecmd */
159336 -1, /* (329) ecmd ::= SEMI */
159337 -2, /* (330) ecmd ::= cmdx SEMI */
159338 -3, /* (331) ecmd ::= explain cmdx SEMI */
159339 0, /* (332) trans_opt ::= */
159340 -1, /* (333) trans_opt ::= TRANSACTION */
159341 -2, /* (334) trans_opt ::= TRANSACTION nm */
159342 -1, /* (335) savepoint_opt ::= SAVEPOINT */
159343 0, /* (336) savepoint_opt ::= */
159344 -2, /* (337) cmd ::= create_table create_table_args */
159345 -4, /* (338) columnlist ::= columnlist COMMA columnname carglist */
159346 -2, /* (339) columnlist ::= columnname carglist */
159347 -1, /* (340) nm ::= ID|INDEXED */
159348 -1, /* (341) nm ::= STRING */
159349 -1, /* (342) nm ::= JOIN_KW */
159350 -1, /* (343) typetoken ::= typename */
159351 -1, /* (344) typename ::= ID|STRING */
159352 -1, /* (345) signed ::= plus_num */
159353 -1, /* (346) signed ::= minus_num */
159354 -2, /* (347) carglist ::= carglist ccons */
159355 0, /* (348) carglist ::= */
159356 -2, /* (349) ccons ::= NULL onconf */
159357 -4, /* (350) ccons ::= GENERATED ALWAYS AS generated */
159358 -2, /* (351) ccons ::= AS generated */
159359 -2, /* (352) conslist_opt ::= COMMA conslist */
159360 -3, /* (353) conslist ::= conslist tconscomma tcons */
159361 -1, /* (354) conslist ::= tcons */
159362 0, /* (355) tconscomma ::= */
159363 -1, /* (356) defer_subclause_opt ::= defer_subclause */
159364 -1, /* (357) resolvetype ::= raisetype */
159365 -1, /* (358) selectnowith ::= oneselect */
159366 -1, /* (359) oneselect ::= values */
159367 -2, /* (360) sclp ::= selcollist COMMA */
159368 -1, /* (361) as ::= ID|STRING */
159369 -1, /* (362) expr ::= term */
159370 -1, /* (363) likeop ::= LIKE_KW|MATCH */
159371 -1, /* (364) exprlist ::= nexprlist */
159372 -1, /* (365) nmnum ::= plus_num */
159373 -1, /* (366) nmnum ::= nm */
159374 -1, /* (367) nmnum ::= ON */
159375 -1, /* (368) nmnum ::= DELETE */
159376 -1, /* (369) nmnum ::= DEFAULT */
159377 -1, /* (370) plus_num ::= INTEGER|FLOAT */
159378 0, /* (371) foreach_clause ::= */
159379 -3, /* (372) foreach_clause ::= FOR EACH ROW */
159380 -1, /* (373) trnm ::= nm */
159381 0, /* (374) tridxby ::= */
159382 -1, /* (375) database_kw_opt ::= DATABASE */
159383 0, /* (376) database_kw_opt ::= */
159384 0, /* (377) kwcolumn_opt ::= */
159385 -1, /* (378) kwcolumn_opt ::= COLUMNKW */
159386 -1, /* (379) vtabarglist ::= vtabarg */
159387 -3, /* (380) vtabarglist ::= vtabarglist COMMA vtabarg */
159388 -2, /* (381) vtabarg ::= vtabarg vtabargtoken */
159389 0, /* (382) anylist ::= */
159390 -4, /* (383) anylist ::= anylist LP anylist RP */
159391 -2, /* (384) anylist ::= anylist ANY */
159392 0, /* (385) with ::= */
 
 
 
 
 
 
 
159393 };
159394
159395 static void yy_accept(yyParser*); /* Forward Declaration */
159396
159397 /*
@@ -159439,20 +159710,20 @@
159439 break;
159440 case 2: /* cmdx ::= cmd */
159441 { sqlite3FinishCoding(pParse); }
159442 break;
159443 case 3: /* cmd ::= BEGIN transtype trans_opt */
159444 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy192);}
159445 break;
159446 case 4: /* transtype ::= */
159447 {yymsp[1].minor.yy192 = TK_DEFERRED;}
159448 break;
159449 case 5: /* transtype ::= DEFERRED */
159450 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
159451 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
159452 case 307: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==307);
159453 {yymsp[0].minor.yy192 = yymsp[0].major; /*A-overwrites-X*/}
159454 break;
159455 case 8: /* cmd ::= COMMIT|END trans_opt */
159456 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
159457 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
159458 break;
@@ -159471,11 +159742,11 @@
159471 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
159472 }
159473 break;
159474 case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
159475 {
159476 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy192,0,0,yymsp[-2].minor.yy192);
159477 }
159478 break;
159479 case 14: /* createkw ::= CREATE */
159480 {disableLookaside(pParse);}
159481 break;
@@ -159485,37 +159756,37 @@
159485 case 45: /* autoinc ::= */ yytestcase(yyruleno==45);
159486 case 60: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==60);
159487 case 70: /* defer_subclause_opt ::= */ yytestcase(yyruleno==70);
159488 case 79: /* ifexists ::= */ yytestcase(yyruleno==79);
159489 case 96: /* distinct ::= */ yytestcase(yyruleno==96);
159490 case 233: /* collate ::= */ yytestcase(yyruleno==233);
159491 {yymsp[1].minor.yy192 = 0;}
159492 break;
159493 case 16: /* ifnotexists ::= IF NOT EXISTS */
159494 {yymsp[-2].minor.yy192 = 1;}
159495 break;
159496 case 17: /* temp ::= TEMP */
159497 case 46: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==46);
159498 {yymsp[0].minor.yy192 = 1;}
159499 break;
159500 case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
159501 {
159502 sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy192,0);
159503 }
159504 break;
159505 case 20: /* create_table_args ::= AS select */
159506 {
159507 sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy539);
159508 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy539);
159509 }
159510 break;
159511 case 22: /* table_options ::= WITHOUT nm */
159512 {
159513 if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
159514 yymsp[-1].minor.yy192 = TF_WithoutRowid | TF_NoVisibleRowid;
159515 }else{
159516 yymsp[-1].minor.yy192 = 0;
159517 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
159518 }
159519 }
159520 break;
159521 case 23: /* columnname ::= nm typetoken */
@@ -159540,11 +159811,11 @@
159540 {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
159541 break;
159542 case 28: /* scanpt ::= */
159543 {
159544 assert( yyLookahead!=YYNOCODE );
159545 yymsp[1].minor.yy436 = yyLookaheadToken.z;
159546 }
159547 break;
159548 case 29: /* scantok ::= */
159549 {
159550 assert( yyLookahead!=YYNOCODE );
@@ -159554,21 +159825,21 @@
159554 case 30: /* ccons ::= CONSTRAINT nm */
159555 case 65: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==65);
159556 {pParse->constraintName = yymsp[0].minor.yy0;}
159557 break;
159558 case 31: /* ccons ::= DEFAULT scantok term */
159559 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy202,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
159560 break;
159561 case 32: /* ccons ::= DEFAULT LP expr RP */
159562 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy202,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
159563 break;
159564 case 33: /* ccons ::= DEFAULT PLUS scantok term */
159565 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy202,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
159566 break;
159567 case 34: /* ccons ::= DEFAULT MINUS scantok term */
159568 {
159569 Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy202, 0);
159570 sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
159571 }
159572 break;
159573 case 35: /* ccons ::= DEFAULT scantok ID|INDEXED */
159574 {
@@ -159579,323 +159850,323 @@
159579 }
159580 sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
159581 }
159582 break;
159583 case 36: /* ccons ::= NOT NULL onconf */
159584 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy192);}
159585 break;
159586 case 37: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
159587 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy192,yymsp[0].minor.yy192,yymsp[-2].minor.yy192);}
159588 break;
159589 case 38: /* ccons ::= UNIQUE onconf */
159590 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy192,0,0,0,0,
159591 SQLITE_IDXTYPE_UNIQUE);}
159592 break;
159593 case 39: /* ccons ::= CHECK LP expr RP */
159594 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy202,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
159595 break;
159596 case 40: /* ccons ::= REFERENCES nm eidlist_opt refargs */
159597 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy242,yymsp[0].minor.yy192);}
159598 break;
159599 case 41: /* ccons ::= defer_subclause */
159600 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy192);}
159601 break;
159602 case 42: /* ccons ::= COLLATE ID|STRING */
159603 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
159604 break;
159605 case 43: /* generated ::= LP expr RP */
159606 {sqlite3AddGenerated(pParse,yymsp[-1].minor.yy202,0);}
159607 break;
159608 case 44: /* generated ::= LP expr RP ID */
159609 {sqlite3AddGenerated(pParse,yymsp[-2].minor.yy202,&yymsp[0].minor.yy0);}
159610 break;
159611 case 47: /* refargs ::= */
159612 { yymsp[1].minor.yy192 = OE_None*0x0101; /* EV: R-19803-45884 */}
159613 break;
159614 case 48: /* refargs ::= refargs refarg */
159615 { yymsp[-1].minor.yy192 = (yymsp[-1].minor.yy192 & ~yymsp[0].minor.yy207.mask) | yymsp[0].minor.yy207.value; }
159616 break;
159617 case 49: /* refarg ::= MATCH nm */
159618 { yymsp[-1].minor.yy207.value = 0; yymsp[-1].minor.yy207.mask = 0x000000; }
159619 break;
159620 case 50: /* refarg ::= ON INSERT refact */
159621 { yymsp[-2].minor.yy207.value = 0; yymsp[-2].minor.yy207.mask = 0x000000; }
159622 break;
159623 case 51: /* refarg ::= ON DELETE refact */
159624 { yymsp[-2].minor.yy207.value = yymsp[0].minor.yy192; yymsp[-2].minor.yy207.mask = 0x0000ff; }
159625 break;
159626 case 52: /* refarg ::= ON UPDATE refact */
159627 { yymsp[-2].minor.yy207.value = yymsp[0].minor.yy192<<8; yymsp[-2].minor.yy207.mask = 0x00ff00; }
159628 break;
159629 case 53: /* refact ::= SET NULL */
159630 { yymsp[-1].minor.yy192 = OE_SetNull; /* EV: R-33326-45252 */}
159631 break;
159632 case 54: /* refact ::= SET DEFAULT */
159633 { yymsp[-1].minor.yy192 = OE_SetDflt; /* EV: R-33326-45252 */}
159634 break;
159635 case 55: /* refact ::= CASCADE */
159636 { yymsp[0].minor.yy192 = OE_Cascade; /* EV: R-33326-45252 */}
159637 break;
159638 case 56: /* refact ::= RESTRICT */
159639 { yymsp[0].minor.yy192 = OE_Restrict; /* EV: R-33326-45252 */}
159640 break;
159641 case 57: /* refact ::= NO ACTION */
159642 { yymsp[-1].minor.yy192 = OE_None; /* EV: R-33326-45252 */}
159643 break;
159644 case 58: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
159645 {yymsp[-2].minor.yy192 = 0;}
159646 break;
159647 case 59: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
159648 case 74: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==74);
159649 case 163: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==163);
159650 {yymsp[-1].minor.yy192 = yymsp[0].minor.yy192;}
159651 break;
159652 case 61: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
159653 case 78: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==78);
159654 case 205: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==205);
159655 case 208: /* in_op ::= NOT IN */ yytestcase(yyruleno==208);
159656 case 234: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==234);
159657 {yymsp[-1].minor.yy192 = 1;}
159658 break;
159659 case 62: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
159660 {yymsp[-1].minor.yy192 = 0;}
159661 break;
159662 case 64: /* tconscomma ::= COMMA */
159663 {pParse->constraintName.n = 0;}
159664 break;
159665 case 66: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
159666 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy242,yymsp[0].minor.yy192,yymsp[-2].minor.yy192,0);}
159667 break;
159668 case 67: /* tcons ::= UNIQUE LP sortlist RP onconf */
159669 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy242,yymsp[0].minor.yy192,0,0,0,0,
159670 SQLITE_IDXTYPE_UNIQUE);}
159671 break;
159672 case 68: /* tcons ::= CHECK LP expr RP onconf */
159673 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy202,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
159674 break;
159675 case 69: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
159676 {
159677 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy242, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy242, yymsp[-1].minor.yy192);
159678 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy192);
159679 }
159680 break;
159681 case 71: /* onconf ::= */
159682 case 73: /* orconf ::= */ yytestcase(yyruleno==73);
159683 {yymsp[1].minor.yy192 = OE_Default;}
159684 break;
159685 case 72: /* onconf ::= ON CONFLICT resolvetype */
159686 {yymsp[-2].minor.yy192 = yymsp[0].minor.yy192;}
159687 break;
159688 case 75: /* resolvetype ::= IGNORE */
159689 {yymsp[0].minor.yy192 = OE_Ignore;}
159690 break;
159691 case 76: /* resolvetype ::= REPLACE */
159692 case 164: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==164);
159693 {yymsp[0].minor.yy192 = OE_Replace;}
159694 break;
159695 case 77: /* cmd ::= DROP TABLE ifexists fullname */
159696 {
159697 sqlite3DropTable(pParse, yymsp[0].minor.yy47, 0, yymsp[-1].minor.yy192);
159698 }
159699 break;
159700 case 80: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
159701 {
159702 sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy242, yymsp[0].minor.yy539, yymsp[-7].minor.yy192, yymsp[-5].minor.yy192);
159703 }
159704 break;
159705 case 81: /* cmd ::= DROP VIEW ifexists fullname */
159706 {
159707 sqlite3DropTable(pParse, yymsp[0].minor.yy47, 1, yymsp[-1].minor.yy192);
159708 }
159709 break;
159710 case 82: /* cmd ::= select */
159711 {
159712 SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
159713 sqlite3Select(pParse, yymsp[0].minor.yy539, &dest);
159714 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy539);
159715 }
159716 break;
159717 case 83: /* select ::= WITH wqlist selectnowith */
159718 {
159719 Select *p = yymsp[0].minor.yy539;
159720 if( p ){
159721 p->pWith = yymsp[-1].minor.yy131;
159722 parserDoubleLinkSelect(pParse, p);
159723 }else{
159724 sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy131);
159725 }
159726 yymsp[-2].minor.yy539 = p;
159727 }
159728 break;
159729 case 84: /* select ::= WITH RECURSIVE wqlist selectnowith */
159730 {
159731 Select *p = yymsp[0].minor.yy539;
159732 if( p ){
159733 p->pWith = yymsp[-1].minor.yy131;
159734 parserDoubleLinkSelect(pParse, p);
159735 }else{
159736 sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy131);
159737 }
159738 yymsp[-3].minor.yy539 = p;
159739 }
159740 break;
159741 case 85: /* select ::= selectnowith */
159742 {
159743 Select *p = yymsp[0].minor.yy539;
159744 if( p ){
159745 parserDoubleLinkSelect(pParse, p);
159746 }
159747 yymsp[0].minor.yy539 = p; /*A-overwrites-X*/
159748 }
159749 break;
159750 case 86: /* selectnowith ::= selectnowith multiselect_op oneselect */
159751 {
159752 Select *pRhs = yymsp[0].minor.yy539;
159753 Select *pLhs = yymsp[-2].minor.yy539;
159754 if( pRhs && pRhs->pPrior ){
159755 SrcList *pFrom;
159756 Token x;
159757 x.n = 0;
159758 parserDoubleLinkSelect(pParse, pRhs);
159759 pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
159760 pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
159761 }
159762 if( pRhs ){
159763 pRhs->op = (u8)yymsp[-1].minor.yy192;
159764 pRhs->pPrior = pLhs;
159765 if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
159766 pRhs->selFlags &= ~SF_MultiValue;
159767 if( yymsp[-1].minor.yy192!=TK_ALL ) pParse->hasCompound = 1;
159768 }else{
159769 sqlite3SelectDelete(pParse->db, pLhs);
159770 }
159771 yymsp[-2].minor.yy539 = pRhs;
159772 }
159773 break;
159774 case 87: /* multiselect_op ::= UNION */
159775 case 89: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==89);
159776 {yymsp[0].minor.yy192 = yymsp[0].major; /*A-overwrites-OP*/}
159777 break;
159778 case 88: /* multiselect_op ::= UNION ALL */
159779 {yymsp[-1].minor.yy192 = TK_ALL;}
159780 break;
159781 case 90: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
159782 {
159783 yymsp[-8].minor.yy539 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy242,yymsp[-5].minor.yy47,yymsp[-4].minor.yy202,yymsp[-3].minor.yy242,yymsp[-2].minor.yy202,yymsp[-1].minor.yy242,yymsp[-7].minor.yy192,yymsp[0].minor.yy202);
159784 }
159785 break;
159786 case 91: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
159787 {
159788 yymsp[-9].minor.yy539 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy242,yymsp[-6].minor.yy47,yymsp[-5].minor.yy202,yymsp[-4].minor.yy242,yymsp[-3].minor.yy202,yymsp[-1].minor.yy242,yymsp[-8].minor.yy192,yymsp[0].minor.yy202);
159789 if( yymsp[-9].minor.yy539 ){
159790 yymsp[-9].minor.yy539->pWinDefn = yymsp[-2].minor.yy303;
159791 }else{
159792 sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy303);
159793 }
159794 }
159795 break;
159796 case 92: /* values ::= VALUES LP nexprlist RP */
159797 {
159798 yymsp[-3].minor.yy539 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy242,0,0,0,0,0,SF_Values,0);
159799 }
159800 break;
159801 case 93: /* values ::= values COMMA LP nexprlist RP */
159802 {
159803 Select *pRight, *pLeft = yymsp[-4].minor.yy539;
159804 pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy242,0,0,0,0,0,SF_Values|SF_MultiValue,0);
159805 if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
159806 if( pRight ){
159807 pRight->op = TK_ALL;
159808 pRight->pPrior = pLeft;
159809 yymsp[-4].minor.yy539 = pRight;
159810 }else{
159811 yymsp[-4].minor.yy539 = pLeft;
159812 }
159813 }
159814 break;
159815 case 94: /* distinct ::= DISTINCT */
159816 {yymsp[0].minor.yy192 = SF_Distinct;}
159817 break;
159818 case 95: /* distinct ::= ALL */
159819 {yymsp[0].minor.yy192 = SF_All;}
159820 break;
159821 case 97: /* sclp ::= */
159822 case 130: /* orderby_opt ::= */ yytestcase(yyruleno==130);
159823 case 140: /* groupby_opt ::= */ yytestcase(yyruleno==140);
159824 case 221: /* exprlist ::= */ yytestcase(yyruleno==221);
159825 case 224: /* paren_exprlist ::= */ yytestcase(yyruleno==224);
159826 case 229: /* eidlist_opt ::= */ yytestcase(yyruleno==229);
159827 {yymsp[1].minor.yy242 = 0;}
159828 break;
159829 case 98: /* selcollist ::= sclp scanpt expr scanpt as */
159830 {
159831 yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy242, yymsp[-2].minor.yy202);
159832 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy242, &yymsp[0].minor.yy0, 1);
159833 sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy242,yymsp[-3].minor.yy436,yymsp[-1].minor.yy436);
159834 }
159835 break;
159836 case 99: /* selcollist ::= sclp scanpt STAR */
159837 {
159838 Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
159839 yymsp[-2].minor.yy242 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy242, p);
159840 }
159841 break;
159842 case 100: /* selcollist ::= sclp scanpt nm DOT STAR */
159843 {
159844 Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
159845 Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
159846 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
159847 yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy242, pDot);
159848 }
159849 break;
159850 case 101: /* as ::= AS nm */
159851 case 112: /* dbnm ::= DOT nm */ yytestcase(yyruleno==112);
159852 case 245: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==245);
159853 case 246: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==246);
159854 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
159855 break;
159856 case 103: /* from ::= */
159857 case 106: /* stl_prefix ::= */ yytestcase(yyruleno==106);
159858 {yymsp[1].minor.yy47 = 0;}
159859 break;
159860 case 104: /* from ::= FROM seltablist */
159861 {
159862 yymsp[-1].minor.yy47 = yymsp[0].minor.yy47;
159863 sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy47);
159864 }
159865 break;
159866 case 105: /* stl_prefix ::= seltablist joinop */
159867 {
159868 if( ALWAYS(yymsp[-1].minor.yy47 && yymsp[-1].minor.yy47->nSrc>0) ) yymsp[-1].minor.yy47->a[yymsp[-1].minor.yy47->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy192;
159869 }
159870 break;
159871 case 107: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
159872 {
159873 yymsp[-6].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy47,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
159874 sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy47, &yymsp[-2].minor.yy0);
159875 }
159876 break;
159877 case 108: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
159878 {
159879 yymsp[-8].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy47,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
159880 sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy47, yymsp[-4].minor.yy242);
159881 }
159882 break;
159883 case 109: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
159884 {
159885 yymsp[-6].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy47,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy539,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
159886 }
159887 break;
159888 case 110: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
159889 {
159890 if( yymsp[-6].minor.yy47==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy202==0 && yymsp[0].minor.yy600==0 ){
159891 yymsp[-6].minor.yy47 = yymsp[-4].minor.yy47;
159892 }else if( yymsp[-4].minor.yy47->nSrc==1 ){
159893 yymsp[-6].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy47,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
159894 if( yymsp[-6].minor.yy47 ){
159895 struct SrcList_item *pNew = &yymsp[-6].minor.yy47->a[yymsp[-6].minor.yy47->nSrc-1];
159896 struct SrcList_item *pOld = yymsp[-4].minor.yy47->a;
159897 pNew->zName = pOld->zName;
159898 pNew->zDatabase = pOld->zDatabase;
159899 pNew->pSelect = pOld->pSelect;
159900 if( pOld->fg.isTabFunc ){
159901 pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -159904,962 +160175,977 @@
159904 pNew->fg.isTabFunc = 1;
159905 }
159906 pOld->zName = pOld->zDatabase = 0;
159907 pOld->pSelect = 0;
159908 }
159909 sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy47);
159910 }else{
159911 Select *pSubquery;
159912 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy47);
159913 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy47,0,0,0,0,SF_NestedFrom,0);
159914 yymsp[-6].minor.yy47 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy47,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy202,yymsp[0].minor.yy600);
159915 }
159916 }
159917 break;
159918 case 111: /* dbnm ::= */
159919 case 125: /* indexed_opt ::= */ yytestcase(yyruleno==125);
159920 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
159921 break;
159922 case 113: /* fullname ::= nm */
159923 {
159924 yylhsminor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
159925 if( IN_RENAME_OBJECT && yylhsminor.yy47 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy47->a[0].zName, &yymsp[0].minor.yy0);
159926 }
159927 yymsp[0].minor.yy47 = yylhsminor.yy47;
159928 break;
159929 case 114: /* fullname ::= nm DOT nm */
159930 {
159931 yylhsminor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
159932 if( IN_RENAME_OBJECT && yylhsminor.yy47 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy47->a[0].zName, &yymsp[0].minor.yy0);
159933 }
159934 yymsp[-2].minor.yy47 = yylhsminor.yy47;
159935 break;
159936 case 115: /* xfullname ::= nm */
159937 {yymsp[0].minor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
159938 break;
159939 case 116: /* xfullname ::= nm DOT nm */
159940 {yymsp[-2].minor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
159941 break;
159942 case 117: /* xfullname ::= nm DOT nm AS nm */
159943 {
159944 yymsp[-4].minor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
159945 if( yymsp[-4].minor.yy47 ) yymsp[-4].minor.yy47->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
159946 }
159947 break;
159948 case 118: /* xfullname ::= nm AS nm */
159949 {
159950 yymsp[-2].minor.yy47 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
159951 if( yymsp[-2].minor.yy47 ) yymsp[-2].minor.yy47->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
159952 }
159953 break;
159954 case 119: /* joinop ::= COMMA|JOIN */
159955 { yymsp[0].minor.yy192 = JT_INNER; }
159956 break;
159957 case 120: /* joinop ::= JOIN_KW JOIN */
159958 {yymsp[-1].minor.yy192 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
159959 break;
159960 case 121: /* joinop ::= JOIN_KW nm JOIN */
159961 {yymsp[-2].minor.yy192 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
159962 break;
159963 case 122: /* joinop ::= JOIN_KW nm nm JOIN */
159964 {yymsp[-3].minor.yy192 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
159965 break;
159966 case 123: /* on_opt ::= ON expr */
159967 case 143: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==143);
159968 case 150: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==150);
159969 case 217: /* case_else ::= ELSE expr */ yytestcase(yyruleno==217);
159970 case 238: /* vinto ::= INTO expr */ yytestcase(yyruleno==238);
159971 {yymsp[-1].minor.yy202 = yymsp[0].minor.yy202;}
 
159972 break;
159973 case 124: /* on_opt ::= */
159974 case 142: /* having_opt ::= */ yytestcase(yyruleno==142);
159975 case 144: /* limit_opt ::= */ yytestcase(yyruleno==144);
159976 case 149: /* where_opt ::= */ yytestcase(yyruleno==149);
159977 case 218: /* case_else ::= */ yytestcase(yyruleno==218);
159978 case 220: /* case_operand ::= */ yytestcase(yyruleno==220);
159979 case 239: /* vinto ::= */ yytestcase(yyruleno==239);
159980 {yymsp[1].minor.yy202 = 0;}
 
159981 break;
159982 case 126: /* indexed_opt ::= INDEXED BY nm */
159983 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
159984 break;
159985 case 127: /* indexed_opt ::= NOT INDEXED */
159986 {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
159987 break;
159988 case 128: /* using_opt ::= USING LP idlist RP */
159989 {yymsp[-3].minor.yy600 = yymsp[-1].minor.yy600;}
159990 break;
159991 case 129: /* using_opt ::= */
159992 case 165: /* idlist_opt ::= */ yytestcase(yyruleno==165);
159993 {yymsp[1].minor.yy600 = 0;}
159994 break;
159995 case 131: /* orderby_opt ::= ORDER BY sortlist */
159996 case 141: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==141);
159997 {yymsp[-2].minor.yy242 = yymsp[0].minor.yy242;}
159998 break;
159999 case 132: /* sortlist ::= sortlist COMMA expr sortorder nulls */
160000 {
160001 yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy242,yymsp[-2].minor.yy202);
160002 sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy242,yymsp[-1].minor.yy192,yymsp[0].minor.yy192);
160003 }
160004 break;
160005 case 133: /* sortlist ::= expr sortorder nulls */
160006 {
160007 yymsp[-2].minor.yy242 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy202); /*A-overwrites-Y*/
160008 sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy242,yymsp[-1].minor.yy192,yymsp[0].minor.yy192);
160009 }
160010 break;
160011 case 134: /* sortorder ::= ASC */
160012 {yymsp[0].minor.yy192 = SQLITE_SO_ASC;}
160013 break;
160014 case 135: /* sortorder ::= DESC */
160015 {yymsp[0].minor.yy192 = SQLITE_SO_DESC;}
160016 break;
160017 case 136: /* sortorder ::= */
160018 case 139: /* nulls ::= */ yytestcase(yyruleno==139);
160019 {yymsp[1].minor.yy192 = SQLITE_SO_UNDEFINED;}
160020 break;
160021 case 137: /* nulls ::= NULLS FIRST */
160022 {yymsp[-1].minor.yy192 = SQLITE_SO_ASC;}
160023 break;
160024 case 138: /* nulls ::= NULLS LAST */
160025 {yymsp[-1].minor.yy192 = SQLITE_SO_DESC;}
160026 break;
160027 case 145: /* limit_opt ::= LIMIT expr */
160028 {yymsp[-1].minor.yy202 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy202,0);}
160029 break;
160030 case 146: /* limit_opt ::= LIMIT expr OFFSET expr */
160031 {yymsp[-3].minor.yy202 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy202,yymsp[0].minor.yy202);}
160032 break;
160033 case 147: /* limit_opt ::= LIMIT expr COMMA expr */
160034 {yymsp[-3].minor.yy202 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy202,yymsp[-2].minor.yy202);}
160035 break;
160036 case 148: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
160037 {
160038 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy47, &yymsp[-1].minor.yy0);
160039 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy47,yymsp[0].minor.yy202,0,0);
160040 }
160041 break;
160042 case 151: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt */
160043 {
160044 sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy47, &yymsp[-4].minor.yy0);
160045 sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy242,"set list");
160046 yymsp[-5].minor.yy47 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy47, yymsp[-1].minor.yy47);
160047 sqlite3Update(pParse,yymsp[-5].minor.yy47,yymsp[-2].minor.yy242,yymsp[0].minor.yy202,yymsp[-6].minor.yy192,0,0,0);
160048 }
160049 break;
160050 case 152: /* setlist ::= setlist COMMA nm EQ expr */
160051 {
160052 yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy242, yymsp[0].minor.yy202);
160053 sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy242, &yymsp[-2].minor.yy0, 1);
160054 }
160055 break;
160056 case 153: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
160057 {
160058 yymsp[-6].minor.yy242 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy242, yymsp[-3].minor.yy600, yymsp[0].minor.yy202);
160059 }
160060 break;
160061 case 154: /* setlist ::= nm EQ expr */
160062 {
160063 yylhsminor.yy242 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy202);
160064 sqlite3ExprListSetName(pParse, yylhsminor.yy242, &yymsp[-2].minor.yy0, 1);
160065 }
160066 yymsp[-2].minor.yy242 = yylhsminor.yy242;
160067 break;
160068 case 155: /* setlist ::= LP idlist RP EQ expr */
160069 {
160070 yymsp[-4].minor.yy242 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy600, yymsp[0].minor.yy202);
160071 }
160072 break;
160073 case 156: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
160074 {
160075 sqlite3Insert(pParse, yymsp[-3].minor.yy47, yymsp[-1].minor.yy539, yymsp[-2].minor.yy600, yymsp[-5].minor.yy192, yymsp[0].minor.yy318);
160076 }
160077 break;
160078 case 157: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
160079 {
160080 sqlite3Insert(pParse, yymsp[-3].minor.yy47, 0, yymsp[-2].minor.yy600, yymsp[-5].minor.yy192, 0);
160081 }
160082 break;
160083 case 158: /* upsert ::= */
160084 { yymsp[1].minor.yy318 = 0; }
160085 break;
160086 case 159: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
160087 { yymsp[-11].minor.yy318 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy242,yymsp[-6].minor.yy202,yymsp[-2].minor.yy242,yymsp[-1].minor.yy202,yymsp[0].minor.yy318);}
160088 break;
160089 case 160: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
160090 { yymsp[-8].minor.yy318 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy242,yymsp[-3].minor.yy202,0,0,yymsp[0].minor.yy318); }
160091 break;
160092 case 161: /* upsert ::= ON CONFLICT DO NOTHING */
160093 { yymsp[-3].minor.yy318 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
160094 break;
160095 case 162: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt */
160096 { yymsp[-6].minor.yy318 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-1].minor.yy242,yymsp[0].minor.yy202,0);}
160097 break;
160098 case 166: /* idlist_opt ::= LP idlist RP */
160099 {yymsp[-2].minor.yy600 = yymsp[-1].minor.yy600;}
160100 break;
160101 case 167: /* idlist ::= idlist COMMA nm */
160102 {yymsp[-2].minor.yy600 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy600,&yymsp[0].minor.yy0);}
160103 break;
160104 case 168: /* idlist ::= nm */
160105 {yymsp[0].minor.yy600 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
160106 break;
160107 case 169: /* expr ::= LP expr RP */
160108 {yymsp[-2].minor.yy202 = yymsp[-1].minor.yy202;}
160109 break;
160110 case 170: /* expr ::= ID|INDEXED */
160111 case 171: /* expr ::= JOIN_KW */ yytestcase(yyruleno==171);
160112 {yymsp[0].minor.yy202=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
160113 break;
160114 case 172: /* expr ::= nm DOT nm */
 
 
 
 
 
 
 
 
 
 
 
 
160115 {
160116 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
160117 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
160118 if( IN_RENAME_OBJECT ){
160119 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
160120 sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
160121 }
160122 yylhsminor.yy202 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
160123 }
160124 yymsp[-2].minor.yy202 = yylhsminor.yy202;
160125 break;
160126 case 173: /* expr ::= nm DOT nm DOT nm */
160127 {
160128 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
160129 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
160130 Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
160131 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
160132 if( IN_RENAME_OBJECT ){
160133 sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
160134 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
160135 }
160136 yylhsminor.yy202 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
160137 }
160138 yymsp[-4].minor.yy202 = yylhsminor.yy202;
160139 break;
160140 case 174: /* term ::= NULL|FLOAT|BLOB */
160141 case 175: /* term ::= STRING */ yytestcase(yyruleno==175);
160142 {yymsp[0].minor.yy202=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
160143 break;
160144 case 176: /* term ::= INTEGER */
160145 {
160146 yylhsminor.yy202 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
160147 }
160148 yymsp[0].minor.yy202 = yylhsminor.yy202;
160149 break;
160150 case 177: /* expr ::= VARIABLE */
160151 {
160152 if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
160153 u32 n = yymsp[0].minor.yy0.n;
160154 yymsp[0].minor.yy202 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
160155 sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy202, n);
160156 }else{
160157 /* When doing a nested parse, one can include terms in an expression
160158 ** that look like this: #1 #2 ... These terms refer to registers
160159 ** in the virtual machine. #N is the N-th register. */
160160 Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
160161 assert( t.n>=2 );
160162 if( pParse->nested==0 ){
160163 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
160164 yymsp[0].minor.yy202 = 0;
160165 }else{
160166 yymsp[0].minor.yy202 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
160167 if( yymsp[0].minor.yy202 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy202->iTable);
160168 }
160169 }
160170 }
160171 break;
160172 case 178: /* expr ::= expr COLLATE ID|STRING */
160173 {
160174 yymsp[-2].minor.yy202 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy202, &yymsp[0].minor.yy0, 1);
160175 }
160176 break;
160177 case 179: /* expr ::= CAST LP expr AS typetoken RP */
160178 {
160179 yymsp[-5].minor.yy202 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
160180 sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy202, yymsp[-3].minor.yy202, 0);
160181 }
160182 break;
160183 case 180: /* expr ::= ID|INDEXED LP distinct exprlist RP */
160184 {
160185 yylhsminor.yy202 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy242, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy192);
160186 }
160187 yymsp[-4].minor.yy202 = yylhsminor.yy202;
160188 break;
160189 case 181: /* expr ::= ID|INDEXED LP STAR RP */
160190 {
160191 yylhsminor.yy202 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
160192 }
160193 yymsp[-3].minor.yy202 = yylhsminor.yy202;
160194 break;
160195 case 182: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
160196 {
160197 yylhsminor.yy202 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy242, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy192);
160198 sqlite3WindowAttach(pParse, yylhsminor.yy202, yymsp[0].minor.yy303);
160199 }
160200 yymsp[-5].minor.yy202 = yylhsminor.yy202;
160201 break;
160202 case 183: /* expr ::= ID|INDEXED LP STAR RP filter_over */
160203 {
160204 yylhsminor.yy202 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
160205 sqlite3WindowAttach(pParse, yylhsminor.yy202, yymsp[0].minor.yy303);
160206 }
160207 yymsp[-4].minor.yy202 = yylhsminor.yy202;
160208 break;
160209 case 184: /* term ::= CTIME_KW */
160210 {
160211 yylhsminor.yy202 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
160212 }
160213 yymsp[0].minor.yy202 = yylhsminor.yy202;
160214 break;
160215 case 185: /* expr ::= LP nexprlist COMMA expr RP */
160216 {
160217 ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy242, yymsp[-1].minor.yy202);
160218 yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
160219 if( yymsp[-4].minor.yy202 ){
160220 yymsp[-4].minor.yy202->x.pList = pList;
160221 if( ALWAYS(pList->nExpr) ){
160222 yymsp[-4].minor.yy202->flags |= pList->a[0].pExpr->flags & EP_Propagate;
160223 }
160224 }else{
160225 sqlite3ExprListDelete(pParse->db, pList);
160226 }
160227 }
160228 break;
160229 case 186: /* expr ::= expr AND expr */
160230 {yymsp[-2].minor.yy202=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy202,yymsp[0].minor.yy202);}
160231 break;
160232 case 187: /* expr ::= expr OR expr */
160233 case 188: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==188);
160234 case 189: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==189);
160235 case 190: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==190);
160236 case 191: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==191);
160237 case 192: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==192);
160238 case 193: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==193);
160239 {yymsp[-2].minor.yy202=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy202,yymsp[0].minor.yy202);}
160240 break;
160241 case 194: /* likeop ::= NOT LIKE_KW|MATCH */
160242 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
160243 break;
160244 case 195: /* expr ::= expr likeop expr */
160245 {
160246 ExprList *pList;
160247 int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
160248 yymsp[-1].minor.yy0.n &= 0x7fffffff;
160249 pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy202);
160250 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy202);
160251 yymsp[-2].minor.yy202 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
160252 if( bNot ) yymsp[-2].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy202, 0);
160253 if( yymsp[-2].minor.yy202 ) yymsp[-2].minor.yy202->flags |= EP_InfixFunc;
160254 }
160255 break;
160256 case 196: /* expr ::= expr likeop expr ESCAPE expr */
160257 {
160258 ExprList *pList;
160259 int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
160260 yymsp[-3].minor.yy0.n &= 0x7fffffff;
160261 pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy202);
160262 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy202);
160263 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy202);
160264 yymsp[-4].minor.yy202 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
160265 if( bNot ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160266 if( yymsp[-4].minor.yy202 ) yymsp[-4].minor.yy202->flags |= EP_InfixFunc;
160267 }
160268 break;
160269 case 197: /* expr ::= expr ISNULL|NOTNULL */
160270 {yymsp[-1].minor.yy202 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy202,0);}
160271 break;
160272 case 198: /* expr ::= expr NOT NULL */
160273 {yymsp[-2].minor.yy202 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy202,0);}
160274 break;
160275 case 199: /* expr ::= expr IS expr */
160276 {
160277 yymsp[-2].minor.yy202 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy202,yymsp[0].minor.yy202);
160278 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy202, yymsp[-2].minor.yy202, TK_ISNULL);
160279 }
160280 break;
160281 case 200: /* expr ::= expr IS NOT expr */
160282 {
160283 yymsp[-3].minor.yy202 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy202,yymsp[0].minor.yy202);
160284 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy202, yymsp[-3].minor.yy202, TK_NOTNULL);
160285 }
160286 break;
160287 case 201: /* expr ::= NOT expr */
160288 case 202: /* expr ::= BITNOT expr */ yytestcase(yyruleno==202);
160289 {yymsp[-1].minor.yy202 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy202, 0);/*A-overwrites-B*/}
160290 break;
160291 case 203: /* expr ::= PLUS|MINUS expr */
160292 {
160293 yymsp[-1].minor.yy202 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy202, 0);
160294 /*A-overwrites-B*/
160295 }
160296 break;
160297 case 204: /* between_op ::= BETWEEN */
160298 case 207: /* in_op ::= IN */ yytestcase(yyruleno==207);
160299 {yymsp[0].minor.yy192 = 0;}
160300 break;
160301 case 206: /* expr ::= expr between_op expr AND expr */
160302 {
160303 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy202);
160304 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy202);
160305 yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy202, 0);
160306 if( yymsp[-4].minor.yy202 ){
160307 yymsp[-4].minor.yy202->x.pList = pList;
160308 }else{
160309 sqlite3ExprListDelete(pParse->db, pList);
160310 }
160311 if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160312 }
160313 break;
160314 case 209: /* expr ::= expr in_op LP exprlist RP */
160315 {
160316 if( yymsp[-1].minor.yy242==0 ){
160317 /* Expressions of the form
160318 **
160319 ** expr1 IN ()
160320 ** expr1 NOT IN ()
160321 **
160322 ** simplify to constants 0 (false) and 1 (true), respectively,
160323 ** regardless of the value of expr1.
160324 */
160325 sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy202);
160326 yymsp[-4].minor.yy202 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy192 ? "1" : "0");
160327 }else if( yymsp[-1].minor.yy242->nExpr==1 && sqlite3ExprIsConstant(yymsp[-1].minor.yy242->a[0].pExpr) ){
160328 Expr *pRHS = yymsp[-1].minor.yy242->a[0].pExpr;
160329 yymsp[-1].minor.yy242->a[0].pExpr = 0;
160330 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy242);
160331 pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
160332 yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy202, pRHS);
160333 if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160334 }else{
160335 yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy202, 0);
160336 if( yymsp[-4].minor.yy202 ){
160337 yymsp[-4].minor.yy202->x.pList = yymsp[-1].minor.yy242;
160338 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy202);
160339 }else{
160340 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy242);
160341 }
160342 if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160343 }
160344 }
160345 break;
160346 case 210: /* expr ::= LP select RP */
160347 {
160348 yymsp[-2].minor.yy202 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
160349 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy202, yymsp[-1].minor.yy539);
160350 }
160351 break;
160352 case 211: /* expr ::= expr in_op LP select RP */
160353 {
160354 yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy202, 0);
160355 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy202, yymsp[-1].minor.yy539);
160356 if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160357 }
160358 break;
160359 case 212: /* expr ::= expr in_op nm dbnm paren_exprlist */
160360 {
160361 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
160362 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
160363 if( yymsp[0].minor.yy242 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy242);
160364 yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy202, 0);
160365 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy202, pSelect);
160366 if( yymsp[-3].minor.yy192 ) yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy202, 0);
160367 }
160368 break;
160369 case 213: /* expr ::= EXISTS LP select RP */
160370 {
160371 Expr *p;
160372 p = yymsp[-3].minor.yy202 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
160373 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy539);
160374 }
160375 break;
160376 case 214: /* expr ::= CASE case_operand case_exprlist case_else END */
160377 {
160378 yymsp[-4].minor.yy202 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy202, 0);
160379 if( yymsp[-4].minor.yy202 ){
160380 yymsp[-4].minor.yy202->x.pList = yymsp[-1].minor.yy202 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy242,yymsp[-1].minor.yy202) : yymsp[-2].minor.yy242;
160381 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy202);
160382 }else{
160383 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy242);
160384 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy202);
160385 }
160386 }
160387 break;
160388 case 215: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
160389 {
160390 yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy242, yymsp[-2].minor.yy202);
160391 yymsp[-4].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy242, yymsp[0].minor.yy202);
160392 }
160393 break;
160394 case 216: /* case_exprlist ::= WHEN expr THEN expr */
160395 {
160396 yymsp[-3].minor.yy242 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy202);
160397 yymsp[-3].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy242, yymsp[0].minor.yy202);
160398 }
160399 break;
160400 case 219: /* case_operand ::= expr */
160401 {yymsp[0].minor.yy202 = yymsp[0].minor.yy202; /*A-overwrites-X*/}
160402 break;
160403 case 222: /* nexprlist ::= nexprlist COMMA expr */
160404 {yymsp[-2].minor.yy242 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy242,yymsp[0].minor.yy202);}
160405 break;
160406 case 223: /* nexprlist ::= expr */
160407 {yymsp[0].minor.yy242 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy202); /*A-overwrites-Y*/}
160408 break;
160409 case 225: /* paren_exprlist ::= LP exprlist RP */
160410 case 230: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==230);
160411 {yymsp[-2].minor.yy242 = yymsp[-1].minor.yy242;}
160412 break;
160413 case 226: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
160414 {
160415 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
160416 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy242, yymsp[-10].minor.yy192,
160417 &yymsp[-11].minor.yy0, yymsp[0].minor.yy202, SQLITE_SO_ASC, yymsp[-8].minor.yy192, SQLITE_IDXTYPE_APPDEF);
160418 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
160419 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
160420 }
160421 }
160422 break;
160423 case 227: /* uniqueflag ::= UNIQUE */
160424 case 269: /* raisetype ::= ABORT */ yytestcase(yyruleno==269);
160425 {yymsp[0].minor.yy192 = OE_Abort;}
160426 break;
160427 case 228: /* uniqueflag ::= */
160428 {yymsp[1].minor.yy192 = OE_None;}
160429 break;
160430 case 231: /* eidlist ::= eidlist COMMA nm collate sortorder */
160431 {
160432 yymsp[-4].minor.yy242 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy242, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy192, yymsp[0].minor.yy192);
160433 }
160434 break;
160435 case 232: /* eidlist ::= nm collate sortorder */
160436 {
160437 yymsp[-2].minor.yy242 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy192, yymsp[0].minor.yy192); /*A-overwrites-Y*/
160438 }
160439 break;
160440 case 235: /* cmd ::= DROP INDEX ifexists fullname */
160441 {sqlite3DropIndex(pParse, yymsp[0].minor.yy47, yymsp[-1].minor.yy192);}
160442 break;
160443 case 236: /* cmd ::= VACUUM vinto */
160444 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy202);}
160445 break;
160446 case 237: /* cmd ::= VACUUM nm vinto */
160447 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy202);}
160448 break;
160449 case 240: /* cmd ::= PRAGMA nm dbnm */
160450 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
160451 break;
160452 case 241: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
160453 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
160454 break;
160455 case 242: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
160456 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
160457 break;
160458 case 243: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
160459 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
160460 break;
160461 case 244: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
160462 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
160463 break;
160464 case 247: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
160465 {
160466 Token all;
160467 all.z = yymsp[-3].minor.yy0.z;
160468 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
160469 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy447, &all);
160470 }
160471 break;
160472 case 248: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
160473 {
160474 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy192, yymsp[-4].minor.yy230.a, yymsp[-4].minor.yy230.b, yymsp[-2].minor.yy47, yymsp[0].minor.yy202, yymsp[-10].minor.yy192, yymsp[-8].minor.yy192);
160475 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
160476 }
160477 break;
160478 case 249: /* trigger_time ::= BEFORE|AFTER */
160479 { yymsp[0].minor.yy192 = yymsp[0].major; /*A-overwrites-X*/ }
160480 break;
160481 case 250: /* trigger_time ::= INSTEAD OF */
160482 { yymsp[-1].minor.yy192 = TK_INSTEAD;}
160483 break;
160484 case 251: /* trigger_time ::= */
160485 { yymsp[1].minor.yy192 = TK_BEFORE; }
160486 break;
160487 case 252: /* trigger_event ::= DELETE|INSERT */
160488 case 253: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==253);
160489 {yymsp[0].minor.yy230.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy230.b = 0;}
160490 break;
160491 case 254: /* trigger_event ::= UPDATE OF idlist */
160492 {yymsp[-2].minor.yy230.a = TK_UPDATE; yymsp[-2].minor.yy230.b = yymsp[0].minor.yy600;}
160493 break;
160494 case 255: /* when_clause ::= */
160495 case 274: /* key_opt ::= */ yytestcase(yyruleno==274);
160496 { yymsp[1].minor.yy202 = 0; }
160497 break;
160498 case 256: /* when_clause ::= WHEN expr */
160499 case 275: /* key_opt ::= KEY expr */ yytestcase(yyruleno==275);
160500 { yymsp[-1].minor.yy202 = yymsp[0].minor.yy202; }
160501 break;
160502 case 257: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
160503 {
160504 assert( yymsp[-2].minor.yy447!=0 );
160505 yymsp[-2].minor.yy447->pLast->pNext = yymsp[-1].minor.yy447;
160506 yymsp[-2].minor.yy447->pLast = yymsp[-1].minor.yy447;
160507 }
160508 break;
160509 case 258: /* trigger_cmd_list ::= trigger_cmd SEMI */
160510 {
160511 assert( yymsp[-1].minor.yy447!=0 );
160512 yymsp[-1].minor.yy447->pLast = yymsp[-1].minor.yy447;
160513 }
160514 break;
160515 case 259: /* trnm ::= nm DOT nm */
160516 {
160517 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
160518 sqlite3ErrorMsg(pParse,
160519 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
160520 "statements within triggers");
160521 }
160522 break;
160523 case 260: /* tridxby ::= INDEXED BY nm */
160524 {
160525 sqlite3ErrorMsg(pParse,
160526 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
160527 "within triggers");
160528 }
160529 break;
160530 case 261: /* tridxby ::= NOT INDEXED */
160531 {
160532 sqlite3ErrorMsg(pParse,
160533 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
160534 "within triggers");
160535 }
160536 break;
160537 case 262: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
160538 {yylhsminor.yy447 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy47, yymsp[-3].minor.yy242, yymsp[-1].minor.yy202, yymsp[-7].minor.yy192, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy436);}
160539 yymsp[-8].minor.yy447 = yylhsminor.yy447;
160540 break;
160541 case 263: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
160542 {
160543 yylhsminor.yy447 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy600,yymsp[-2].minor.yy539,yymsp[-6].minor.yy192,yymsp[-1].minor.yy318,yymsp[-7].minor.yy436,yymsp[0].minor.yy436);/*yylhsminor.yy447-overwrites-yymsp[-6].minor.yy192*/
160544 }
160545 yymsp[-7].minor.yy447 = yylhsminor.yy447;
160546 break;
160547 case 264: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
160548 {yylhsminor.yy447 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy202, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy436);}
160549 yymsp[-5].minor.yy447 = yylhsminor.yy447;
160550 break;
160551 case 265: /* trigger_cmd ::= scanpt select scanpt */
160552 {yylhsminor.yy447 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy539, yymsp[-2].minor.yy436, yymsp[0].minor.yy436); /*yylhsminor.yy447-overwrites-yymsp[-1].minor.yy539*/}
160553 yymsp[-2].minor.yy447 = yylhsminor.yy447;
160554 break;
160555 case 266: /* expr ::= RAISE LP IGNORE RP */
160556 {
160557 yymsp[-3].minor.yy202 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
160558 if( yymsp[-3].minor.yy202 ){
160559 yymsp[-3].minor.yy202->affExpr = OE_Ignore;
160560 }
160561 }
160562 break;
160563 case 267: /* expr ::= RAISE LP raisetype COMMA nm RP */
160564 {
160565 yymsp[-5].minor.yy202 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
160566 if( yymsp[-5].minor.yy202 ) {
160567 yymsp[-5].minor.yy202->affExpr = (char)yymsp[-3].minor.yy192;
160568 }
160569 }
160570 break;
160571 case 268: /* raisetype ::= ROLLBACK */
160572 {yymsp[0].minor.yy192 = OE_Rollback;}
160573 break;
160574 case 270: /* raisetype ::= FAIL */
160575 {yymsp[0].minor.yy192 = OE_Fail;}
160576 break;
160577 case 271: /* cmd ::= DROP TRIGGER ifexists fullname */
160578 {
160579 sqlite3DropTrigger(pParse,yymsp[0].minor.yy47,yymsp[-1].minor.yy192);
160580 }
160581 break;
160582 case 272: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
160583 {
160584 sqlite3Attach(pParse, yymsp[-3].minor.yy202, yymsp[-1].minor.yy202, yymsp[0].minor.yy202);
160585 }
160586 break;
160587 case 273: /* cmd ::= DETACH database_kw_opt expr */
160588 {
160589 sqlite3Detach(pParse, yymsp[0].minor.yy202);
160590 }
160591 break;
160592 case 276: /* cmd ::= REINDEX */
160593 {sqlite3Reindex(pParse, 0, 0);}
160594 break;
160595 case 277: /* cmd ::= REINDEX nm dbnm */
160596 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
160597 break;
160598 case 278: /* cmd ::= ANALYZE */
160599 {sqlite3Analyze(pParse, 0, 0);}
160600 break;
160601 case 279: /* cmd ::= ANALYZE nm dbnm */
160602 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
160603 break;
160604 case 280: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
160605 {
160606 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy47,&yymsp[0].minor.yy0);
160607 }
160608 break;
160609 case 281: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
160610 {
160611 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
160612 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
160613 }
160614 break;
160615 case 282: /* add_column_fullname ::= fullname */
160616 {
160617 disableLookaside(pParse);
160618 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy47);
160619 }
160620 break;
160621 case 283: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
160622 {
160623 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy47, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
160624 }
160625 break;
160626 case 284: /* cmd ::= create_vtab */
160627 {sqlite3VtabFinishParse(pParse,0);}
160628 break;
160629 case 285: /* cmd ::= create_vtab LP vtabarglist RP */
160630 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
160631 break;
160632 case 286: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
160633 {
160634 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy192);
160635 }
160636 break;
160637 case 287: /* vtabarg ::= */
160638 {sqlite3VtabArgInit(pParse);}
160639 break;
160640 case 288: /* vtabargtoken ::= ANY */
160641 case 289: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==289);
160642 case 290: /* lp ::= LP */ yytestcase(yyruleno==290);
160643 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
160644 break;
160645 case 291: /* with ::= WITH wqlist */
160646 case 292: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==292);
160647 { sqlite3WithPush(pParse, yymsp[0].minor.yy131, 1); }
160648 break;
160649 case 293: /* wqlist ::= nm eidlist_opt AS LP select RP */
160650 {
160651 yymsp[-5].minor.yy131 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy242, yymsp[-1].minor.yy539); /*A-overwrites-X*/
160652 }
160653 break;
160654 case 294: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
160655 {
160656 yymsp[-7].minor.yy131 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy131, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy242, yymsp[-1].minor.yy539);
160657 }
160658 break;
160659 case 295: /* windowdefn_list ::= windowdefn */
160660 { yylhsminor.yy303 = yymsp[0].minor.yy303; }
160661 yymsp[0].minor.yy303 = yylhsminor.yy303;
160662 break;
160663 case 296: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
160664 {
160665 assert( yymsp[0].minor.yy303!=0 );
160666 sqlite3WindowChain(pParse, yymsp[0].minor.yy303, yymsp[-2].minor.yy303);
160667 yymsp[0].minor.yy303->pNextWin = yymsp[-2].minor.yy303;
160668 yylhsminor.yy303 = yymsp[0].minor.yy303;
160669 }
160670 yymsp[-2].minor.yy303 = yylhsminor.yy303;
160671 break;
160672 case 297: /* windowdefn ::= nm AS LP window RP */
160673 {
160674 if( ALWAYS(yymsp[-1].minor.yy303) ){
160675 yymsp[-1].minor.yy303->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
160676 }
160677 yylhsminor.yy303 = yymsp[-1].minor.yy303;
160678 }
160679 yymsp[-4].minor.yy303 = yylhsminor.yy303;
160680 break;
160681 case 298: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
160682 {
160683 yymsp[-4].minor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, yymsp[-2].minor.yy242, yymsp[-1].minor.yy242, 0);
160684 }
160685 break;
160686 case 299: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
160687 {
160688 yylhsminor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, yymsp[-2].minor.yy242, yymsp[-1].minor.yy242, &yymsp[-5].minor.yy0);
160689 }
160690 yymsp[-5].minor.yy303 = yylhsminor.yy303;
160691 break;
160692 case 300: /* window ::= ORDER BY sortlist frame_opt */
160693 {
160694 yymsp[-3].minor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, 0, yymsp[-1].minor.yy242, 0);
160695 }
160696 break;
160697 case 301: /* window ::= nm ORDER BY sortlist frame_opt */
160698 {
160699 yylhsminor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, 0, yymsp[-1].minor.yy242, &yymsp[-4].minor.yy0);
160700 }
160701 yymsp[-4].minor.yy303 = yylhsminor.yy303;
160702 break;
160703 case 302: /* window ::= frame_opt */
160704 case 321: /* filter_over ::= over_clause */ yytestcase(yyruleno==321);
160705 {
160706 yylhsminor.yy303 = yymsp[0].minor.yy303;
160707 }
160708 yymsp[0].minor.yy303 = yylhsminor.yy303;
160709 break;
160710 case 303: /* window ::= nm frame_opt */
160711 {
160712 yylhsminor.yy303 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy303, 0, 0, &yymsp[-1].minor.yy0);
160713 }
160714 yymsp[-1].minor.yy303 = yylhsminor.yy303;
160715 break;
160716 case 304: /* frame_opt ::= */
160717 {
160718 yymsp[1].minor.yy303 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
160719 }
160720 break;
160721 case 305: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
160722 {
160723 yylhsminor.yy303 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy192, yymsp[-1].minor.yy77.eType, yymsp[-1].minor.yy77.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy58);
160724 }
160725 yymsp[-2].minor.yy303 = yylhsminor.yy303;
160726 break;
160727 case 306: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
160728 {
160729 yylhsminor.yy303 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy192, yymsp[-3].minor.yy77.eType, yymsp[-3].minor.yy77.pExpr, yymsp[-1].minor.yy77.eType, yymsp[-1].minor.yy77.pExpr, yymsp[0].minor.yy58);
160730 }
160731 yymsp[-5].minor.yy303 = yylhsminor.yy303;
160732 break;
160733 case 308: /* frame_bound_s ::= frame_bound */
160734 case 310: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==310);
160735 {yylhsminor.yy77 = yymsp[0].minor.yy77;}
160736 yymsp[0].minor.yy77 = yylhsminor.yy77;
160737 break;
160738 case 309: /* frame_bound_s ::= UNBOUNDED PRECEDING */
160739 case 311: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==311);
160740 case 313: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==313);
160741 {yylhsminor.yy77.eType = yymsp[-1].major; yylhsminor.yy77.pExpr = 0;}
160742 yymsp[-1].minor.yy77 = yylhsminor.yy77;
160743 break;
160744 case 312: /* frame_bound ::= expr PRECEDING|FOLLOWING */
160745 {yylhsminor.yy77.eType = yymsp[0].major; yylhsminor.yy77.pExpr = yymsp[-1].minor.yy202;}
160746 yymsp[-1].minor.yy77 = yylhsminor.yy77;
160747 break;
160748 case 314: /* frame_exclude_opt ::= */
160749 {yymsp[1].minor.yy58 = 0;}
160750 break;
160751 case 315: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
160752 {yymsp[-1].minor.yy58 = yymsp[0].minor.yy58;}
160753 break;
160754 case 316: /* frame_exclude ::= NO OTHERS */
160755 case 317: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==317);
160756 {yymsp[-1].minor.yy58 = yymsp[-1].major; /*A-overwrites-X*/}
160757 break;
160758 case 318: /* frame_exclude ::= GROUP|TIES */
160759 {yymsp[0].minor.yy58 = yymsp[0].major; /*A-overwrites-X*/}
160760 break;
160761 case 319: /* window_clause ::= WINDOW windowdefn_list */
160762 { yymsp[-1].minor.yy303 = yymsp[0].minor.yy303; }
160763 break;
160764 case 320: /* filter_over ::= filter_clause over_clause */
160765 {
160766 yymsp[0].minor.yy303->pFilter = yymsp[-1].minor.yy202;
160767 yylhsminor.yy303 = yymsp[0].minor.yy303;
160768 }
160769 yymsp[-1].minor.yy303 = yylhsminor.yy303;
160770 break;
160771 case 322: /* filter_over ::= filter_clause */
160772 {
160773 yylhsminor.yy303 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
160774 if( yylhsminor.yy303 ){
160775 yylhsminor.yy303->eFrmType = TK_FILTER;
160776 yylhsminor.yy303->pFilter = yymsp[0].minor.yy202;
160777 }else{
160778 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy202);
160779 }
160780 }
160781 yymsp[0].minor.yy303 = yylhsminor.yy303;
160782 break;
160783 case 323: /* over_clause ::= OVER LP window RP */
160784 {
160785 yymsp[-3].minor.yy303 = yymsp[-1].minor.yy303;
160786 assert( yymsp[-3].minor.yy303!=0 );
160787 }
160788 break;
160789 case 324: /* over_clause ::= OVER nm */
160790 {
160791 yymsp[-1].minor.yy303 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
160792 if( yymsp[-1].minor.yy303 ){
160793 yymsp[-1].minor.yy303->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
160794 }
160795 }
160796 break;
160797 case 325: /* filter_clause ::= FILTER LP WHERE expr RP */
160798 { yymsp[-4].minor.yy202 = yymsp[-1].minor.yy202; }
160799 break;
160800 default:
160801 /* (326) input ::= cmdlist */ yytestcase(yyruleno==326);
160802 /* (327) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==327);
160803 /* (328) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=328);
160804 /* (329) ecmd ::= SEMI */ yytestcase(yyruleno==329);
160805 /* (330) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==330);
160806 /* (331) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=331);
160807 /* (332) trans_opt ::= */ yytestcase(yyruleno==332);
160808 /* (333) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==333);
160809 /* (334) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==334);
160810 /* (335) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==335);
160811 /* (336) savepoint_opt ::= */ yytestcase(yyruleno==336);
160812 /* (337) cmd ::= create_table create_table_args */ yytestcase(yyruleno==337);
160813 /* (338) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==338);
160814 /* (339) columnlist ::= columnname carglist */ yytestcase(yyruleno==339);
160815 /* (340) nm ::= ID|INDEXED */ yytestcase(yyruleno==340);
160816 /* (341) nm ::= STRING */ yytestcase(yyruleno==341);
160817 /* (342) nm ::= JOIN_KW */ yytestcase(yyruleno==342);
160818 /* (343) typetoken ::= typename */ yytestcase(yyruleno==343);
160819 /* (344) typename ::= ID|STRING */ yytestcase(yyruleno==344);
160820 /* (345) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=345);
160821 /* (346) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=346);
160822 /* (347) carglist ::= carglist ccons */ yytestcase(yyruleno==347);
160823 /* (348) carglist ::= */ yytestcase(yyruleno==348);
160824 /* (349) ccons ::= NULL onconf */ yytestcase(yyruleno==349);
160825 /* (350) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==350);
160826 /* (351) ccons ::= AS generated */ yytestcase(yyruleno==351);
160827 /* (352) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==352);
160828 /* (353) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==353);
160829 /* (354) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=354);
160830 /* (355) tconscomma ::= */ yytestcase(yyruleno==355);
160831 /* (356) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=356);
160832 /* (357) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=357);
160833 /* (358) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=358);
160834 /* (359) oneselect ::= values */ yytestcase(yyruleno==359);
160835 /* (360) sclp ::= selcollist COMMA */ yytestcase(yyruleno==360);
160836 /* (361) as ::= ID|STRING */ yytestcase(yyruleno==361);
160837 /* (362) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=362);
160838 /* (363) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==363);
160839 /* (364) exprlist ::= nexprlist */ yytestcase(yyruleno==364);
160840 /* (365) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=365);
160841 /* (366) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=366);
160842 /* (367) nmnum ::= ON */ yytestcase(yyruleno==367);
160843 /* (368) nmnum ::= DELETE */ yytestcase(yyruleno==368);
160844 /* (369) nmnum ::= DEFAULT */ yytestcase(yyruleno==369);
160845 /* (370) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==370);
160846 /* (371) foreach_clause ::= */ yytestcase(yyruleno==371);
160847 /* (372) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==372);
160848 /* (373) trnm ::= nm */ yytestcase(yyruleno==373);
160849 /* (374) tridxby ::= */ yytestcase(yyruleno==374);
160850 /* (375) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==375);
160851 /* (376) database_kw_opt ::= */ yytestcase(yyruleno==376);
160852 /* (377) kwcolumn_opt ::= */ yytestcase(yyruleno==377);
160853 /* (378) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==378);
160854 /* (379) vtabarglist ::= vtabarg */ yytestcase(yyruleno==379);
160855 /* (380) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==380);
160856 /* (381) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==381);
160857 /* (382) anylist ::= */ yytestcase(yyruleno==382);
160858 /* (383) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==383);
160859 /* (384) anylist ::= anylist ANY */ yytestcase(yyruleno==384);
160860 /* (385) with ::= */ yytestcase(yyruleno==385);
 
160861 break;
160862 /********** End reduce actions ************************************************/
160863 };
160864 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
160865 yygoto = yyRuleInfoLhs[yyruleno];
@@ -161362,24 +161648,25 @@
161362 ** might be implemented more directly using a hand-written hash table.
161363 ** But by using this automatically generated code, the size of the code
161364 ** is substantially reduced. This is important for embedded applications
161365 ** on platforms with limited memory.
161366 */
161367 /* Hash score: 227 */
161368 /* zKWText[] encodes 984 bytes of keyword text in 648 bytes */
161369 /* REINDEXEDESCAPEACHECKEYBEFOREIGNOREGEXPLAINSTEADDATABASELECT */
161370 /* ABLEFTHENDEFERRABLELSEXCLUDELETEMPORARYISNULLSAVEPOINTERSECT */
161371 /* IESNOTNULLIKEXCEPTRANSACTIONATURALTERAISEXCLUSIVEXISTS */
161372 /* CONSTRAINTOFFSETRIGGERANGENERATEDETACHAVINGLOBEGINNEREFERENCES */
161373 /* UNIQUERYWITHOUTERELEASEATTACHBETWEENOTHINGROUPSCASCADEFAULT */
161374 /* CASECOLLATECREATECURRENT_DATEIMMEDIATEJOINSERTMATCHPLANALYZE */
161375 /* PRAGMABORTUPDATEVALUESVIRTUALWAYSWHENWHERECURSIVEAFTERENAMEAND */
161376 /* EFERREDISTINCTAUTOINCREMENTCASTCOLUMNCOMMITCONFLICTCROSS */
161377 /* CURRENT_TIMESTAMPARTITIONDROPRECEDINGFAILASTFILTEREPLACEFIRST */
161378 /* FOLLOWINGFROMFULLIMITIFORDERESTRICTOTHERSOVERIGHTROLLBACKROWS */
161379 /* UNBOUNDEDUNIONUSINGVACUUMVIEWINDOWBYINITIALLYPRIMARY */
161380 static const char zKWText[647] = {
 
161381 'R','E','I','N','D','E','X','E','D','E','S','C','A','P','E','A','C','H',
161382 'E','C','K','E','Y','B','E','F','O','R','E','I','G','N','O','R','E','G',
161383 'E','X','P','L','A','I','N','S','T','E','A','D','D','A','T','A','B','A',
161384 'S','E','L','E','C','T','A','B','L','E','F','T','H','E','N','D','E','F',
161385 'E','R','R','A','B','L','E','L','S','E','X','C','L','U','D','E','L','E',
@@ -161408,47 +161695,48 @@
161408 'T','A','M','P','A','R','T','I','T','I','O','N','D','R','O','P','R','E',
161409 'C','E','D','I','N','G','F','A','I','L','A','S','T','F','I','L','T','E',
161410 'R','E','P','L','A','C','E','F','I','R','S','T','F','O','L','L','O','W',
161411 'I','N','G','F','R','O','M','F','U','L','L','I','M','I','T','I','F','O',
161412 'R','D','E','R','E','S','T','R','I','C','T','O','T','H','E','R','S','O',
161413 'V','E','R','I','G','H','T','R','O','L','L','B','A','C','K','R','O','W',
161414 'S','U','N','B','O','U','N','D','E','D','U','N','I','O','N','U','S','I',
161415 'N','G','V','A','C','U','U','M','V','I','E','W','I','N','D','O','W','B',
161416 'Y','I','N','I','T','I','A','L','L','Y','P','R','I','M','A','R','Y',
 
161417 };
161418 /* aKWHash[i] is the hash value for the i-th keyword */
161419 static const unsigned char aKWHash[127] = {
161420 84, 102, 132, 82, 114, 29, 0, 0, 91, 0, 85, 72, 0,
161421 53, 35, 86, 15, 0, 42, 94, 54, 126, 133, 19, 0, 0,
161422 138, 0, 40, 128, 0, 22, 104, 0, 9, 0, 0, 122, 80,
161423 0, 78, 6, 0, 65, 99, 145, 0, 134, 112, 0, 0, 48,
161424 0, 100, 24, 0, 17, 0, 27, 70, 23, 26, 5, 60, 140,
161425 107, 121, 0, 73, 101, 71, 143, 61, 119, 74, 0, 49, 0,
161426 11, 41, 0, 110, 0, 0, 0, 106, 10, 108, 113, 124, 14,
161427 50, 123, 0, 89, 0, 18, 120, 142, 56, 129, 137, 88, 83,
161428 37, 30, 125, 0, 0, 105, 51, 130, 127, 0, 34, 0, 0,
161429 44, 0, 95, 38, 39, 0, 20, 45, 116, 90,
161430 };
161431 /* aKWNext[] forms the hash collision chain. If aKWHash[i]==0
161432 ** then the i-th keyword has no more hash collisions. Otherwise,
161433 ** the next keyword with the same hash is aKWHash[i]-1. */
161434 static const unsigned char aKWNext[145] = {
161435 0, 0, 0, 0, 4, 0, 43, 0, 0, 103, 111, 0, 0,
161436 0, 2, 0, 0, 141, 0, 0, 0, 13, 0, 0, 0, 0,
161437 139, 0, 0, 118, 52, 0, 0, 135, 12, 0, 0, 62, 0,
161438 136, 0, 131, 0, 0, 36, 0, 0, 28, 77, 0, 0, 0,
161439 0, 59, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
161440 0, 69, 0, 0, 0, 0, 0, 144, 3, 0, 58, 0, 1,
161441 75, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 64, 66,
161442 63, 0, 0, 0, 0, 46, 0, 16, 0, 115, 0, 0, 0,
161443 0, 0, 0, 0, 0, 0, 0, 81, 97, 0, 8, 0, 109,
161444 21, 7, 67, 0, 79, 93, 117, 0, 0, 68, 0, 0, 96,
161445 0, 55, 0, 76, 0, 92, 32, 33, 57, 25, 0, 98, 0,
161446 0, 87,
161447 };
161448 /* aKWLen[i] is the length (in bytes) of the i-th keyword */
161449 static const unsigned char aKWLen[145] = {
161450 7, 7, 5, 4, 6, 4, 5, 3, 6, 7, 3, 6, 6,
161451 7, 7, 3, 8, 2, 6, 5, 4, 4, 3, 10, 4, 7,
161452 6, 9, 4, 2, 6, 5, 9, 9, 4, 7, 3, 2, 4,
161453 4, 6, 11, 6, 2, 7, 5, 5, 9, 6, 10, 4, 6,
161454 2, 3, 7, 5, 9, 6, 6, 4, 5, 5, 10, 6, 5,
@@ -161455,16 +161743,16 @@
161455 7, 4, 5, 7, 6, 7, 7, 6, 5, 7, 3, 7, 4,
161456 7, 6, 12, 9, 4, 6, 5, 4, 7, 6, 5, 6, 6,
161457 7, 6, 4, 5, 9, 5, 6, 3, 8, 8, 2, 13, 2,
161458 2, 4, 6, 6, 8, 5, 17, 12, 7, 9, 4, 9, 4,
161459 4, 6, 7, 5, 9, 4, 4, 5, 2, 5, 8, 6, 4,
161460 5, 8, 4, 3, 9, 5, 5, 6, 4, 6, 2, 2, 9,
161461 3, 7,
161462 };
161463 /* aKWOffset[i] is the index into zKWText[] of the start of
161464 ** the text for the i-th keyword. */
161465 static const unsigned short int aKWOffset[145] = {
161466 0, 2, 2, 8, 9, 14, 16, 20, 23, 25, 25, 29, 33,
161467 36, 41, 46, 48, 53, 54, 59, 62, 65, 67, 69, 78, 81,
161468 86, 90, 90, 94, 99, 101, 105, 111, 119, 123, 123, 123, 126,
161469 129, 132, 137, 142, 146, 147, 152, 156, 160, 168, 174, 181, 184,
161470 184, 187, 189, 195, 198, 206, 211, 216, 219, 222, 226, 236, 239,
@@ -161471,15 +161759,15 @@
161471 244, 244, 248, 252, 259, 265, 271, 277, 277, 283, 284, 288, 295,
161472 299, 306, 312, 324, 333, 335, 341, 346, 348, 355, 360, 365, 371,
161473 377, 382, 388, 392, 395, 404, 408, 414, 416, 423, 424, 431, 433,
161474 435, 444, 448, 454, 460, 468, 473, 473, 473, 489, 498, 501, 510,
161475 513, 517, 522, 529, 534, 543, 547, 550, 555, 557, 561, 569, 575,
161476 578, 583, 591, 591, 595, 604, 609, 614, 620, 623, 626, 629, 631,
161477 636, 640,
161478 };
161479 /* aKWCode[i] is the parser symbol code for the i-th keyword */
161480 static const unsigned char aKWCode[145] = {
161481 TK_REINDEX, TK_INDEXED, TK_INDEX, TK_DESC, TK_ESCAPE,
161482 TK_EACH, TK_CHECK, TK_KEY, TK_BEFORE, TK_FOREIGN,
161483 TK_FOR, TK_IGNORE, TK_LIKE_KW, TK_EXPLAIN, TK_INSTEAD,
161484 TK_ADD, TK_DATABASE, TK_AS, TK_SELECT, TK_TABLE,
161485 TK_JOIN_KW, TK_THEN, TK_END, TK_DEFERRABLE, TK_ELSE,
@@ -161502,13 +161790,14 @@
161502 TK_CAST, TK_COLUMNKW, TK_COMMIT, TK_CONFLICT, TK_JOIN_KW,
161503 TK_CTIME_KW, TK_CTIME_KW, TK_CURRENT, TK_PARTITION, TK_DROP,
161504 TK_PRECEDING, TK_FAIL, TK_LAST, TK_FILTER, TK_REPLACE,
161505 TK_FIRST, TK_FOLLOWING, TK_FROM, TK_JOIN_KW, TK_LIMIT,
161506 TK_IF, TK_ORDER, TK_RESTRICT, TK_OTHERS, TK_OVER,
161507 TK_JOIN_KW, TK_ROLLBACK, TK_ROWS, TK_ROW, TK_UNBOUNDED,
161508 TK_UNION, TK_USING, TK_VACUUM, TK_VIEW, TK_WINDOW,
161509 TK_DO, TK_BY, TK_INITIALLY, TK_ALL, TK_PRIMARY,
 
161510 };
161511 /* Hash table decoded:
161512 ** 0: INSERT
161513 ** 1: IS
161514 ** 2: ROLLBACK TRIGGER
@@ -161624,11 +161913,11 @@
161624 ** 112: ORDER OUTER
161625 ** 113:
161626 ** 114: INTERSECT UNBOUNDED
161627 ** 115:
161628 ** 116:
161629 ** 117: ON
161630 ** 118:
161631 ** 119: WHERE
161632 ** 120: NO INNER
161633 ** 121: NULL
161634 ** 122:
@@ -161789,25 +162078,26 @@
161789 testcase( i==125 ); /* IF */
161790 testcase( i==126 ); /* ORDER */
161791 testcase( i==127 ); /* RESTRICT */
161792 testcase( i==128 ); /* OTHERS */
161793 testcase( i==129 ); /* OVER */
161794 testcase( i==130 ); /* RIGHT */
161795 testcase( i==131 ); /* ROLLBACK */
161796 testcase( i==132 ); /* ROWS */
161797 testcase( i==133 ); /* ROW */
161798 testcase( i==134 ); /* UNBOUNDED */
161799 testcase( i==135 ); /* UNION */
161800 testcase( i==136 ); /* USING */
161801 testcase( i==137 ); /* VACUUM */
161802 testcase( i==138 ); /* VIEW */
161803 testcase( i==139 ); /* WINDOW */
161804 testcase( i==140 ); /* DO */
161805 testcase( i==141 ); /* BY */
161806 testcase( i==142 ); /* INITIALLY */
161807 testcase( i==143 ); /* ALL */
161808 testcase( i==144 ); /* PRIMARY */
 
161809 *pType = aKWCode[i];
161810 break;
161811 }
161812 }
161813 return n;
@@ -161815,11 +162105,11 @@
161815 SQLITE_PRIVATE int sqlite3KeywordCode(const unsigned char *z, int n){
161816 int id = TK_ID;
161817 keywordCode((char*)z, n, &id);
161818 return id;
161819 }
161820 #define SQLITE_N_KEYWORD 145
161821 SQLITE_API int sqlite3_keyword_name(int i,const char **pzName,int *pnName){
161822 if( i<0 || i>=SQLITE_N_KEYWORD ) return SQLITE_ERROR;
161823 *pzName = zKWText + aKWOffset[i];
161824 *pnName = aKWLen[i];
161825 return SQLITE_OK;
@@ -207945,28 +208235,198 @@
207945 rc = sessionChangesetInvert(&sInput, xOutput, pOut, 0, 0);
207946 sqlite3_free(sInput.buf.aBuf);
207947 return rc;
207948 }
207949
 
 
 
 
 
 
 
 
207950 typedef struct SessionApplyCtx SessionApplyCtx;
207951 struct SessionApplyCtx {
207952 sqlite3 *db;
207953 sqlite3_stmt *pDelete; /* DELETE statement */
207954 sqlite3_stmt *pUpdate; /* UPDATE statement */
207955 sqlite3_stmt *pInsert; /* INSERT statement */
207956 sqlite3_stmt *pSelect; /* SELECT statement */
207957 int nCol; /* Size of azCol[] and abPK[] arrays */
207958 const char **azCol; /* Array of column names */
207959 u8 *abPK; /* Boolean array - true if column is in PK */
 
 
207960 int bStat1; /* True if table is sqlite_stat1 */
207961 int bDeferConstraints; /* True to defer constraints */
207962 int bInvertConstraints; /* Invert when iterating constraints buffer */
207963 SessionBuffer constraints; /* Deferred constraints are stored here */
207964 SessionBuffer rebase; /* Rebase information (if any) here */
207965 u8 bRebaseStarted; /* If table header is already in rebase */
207966 u8 bRebase; /* True to collect rebase information */
207967 };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207968
207969 /*
207970 ** Formulate a statement to DELETE a row from database db. Assuming a table
207971 ** structure like this:
207972 **
@@ -208032,107 +208492,10 @@
208032 }
208033 sqlite3_free(buf.aBuf);
208034
208035 return rc;
208036 }
208037
208038 /*
208039 ** Formulate and prepare a statement to UPDATE a row from database db.
208040 ** Assuming a table structure like this:
208041 **
208042 ** CREATE TABLE x(a, b, c, d, PRIMARY KEY(a, c));
208043 **
208044 ** The UPDATE statement looks like this:
208045 **
208046 ** UPDATE x SET
208047 ** a = CASE WHEN ?2 THEN ?3 ELSE a END,
208048 ** b = CASE WHEN ?5 THEN ?6 ELSE b END,
208049 ** c = CASE WHEN ?8 THEN ?9 ELSE c END,
208050 ** d = CASE WHEN ?11 THEN ?12 ELSE d END
208051 ** WHERE a = ?1 AND c = ?7 AND (?13 OR
208052 ** (?5==0 OR b IS ?4) AND (?11==0 OR d IS ?10) AND
208053 ** )
208054 **
208055 ** For each column in the table, there are three variables to bind:
208056 **
208057 ** ?(i*3+1) The old.* value of the column, if any.
208058 ** ?(i*3+2) A boolean flag indicating that the value is being modified.
208059 ** ?(i*3+3) The new.* value of the column, if any.
208060 **
208061 ** Also, a boolean flag that, if set to true, causes the statement to update
208062 ** a row even if the non-PK values do not match. This is required if the
208063 ** conflict-handler is invoked with CHANGESET_DATA and returns
208064 ** CHANGESET_REPLACE. This is variable "?(nCol*3+1)".
208065 **
208066 ** If successful, SQLITE_OK is returned and SessionApplyCtx.pUpdate is left
208067 ** pointing to the prepared version of the SQL statement.
208068 */
208069 static int sessionUpdateRow(
208070 sqlite3 *db, /* Database handle */
208071 const char *zTab, /* Table name */
208072 SessionApplyCtx *p /* Session changeset-apply context */
208073 ){
208074 int rc = SQLITE_OK;
208075 int i;
208076 const char *zSep = "";
208077 SessionBuffer buf = {0, 0, 0};
208078
208079 /* Append "UPDATE tbl SET " */
208080 sessionAppendStr(&buf, "UPDATE main.", &rc);
208081 sessionAppendIdent(&buf, zTab, &rc);
208082 sessionAppendStr(&buf, " SET ", &rc);
208083
208084 /* Append the assignments */
208085 for(i=0; i<p->nCol; i++){
208086 sessionAppendStr(&buf, zSep, &rc);
208087 sessionAppendIdent(&buf, p->azCol[i], &rc);
208088 sessionAppendStr(&buf, " = CASE WHEN ?", &rc);
208089 sessionAppendInteger(&buf, i*3+2, &rc);
208090 sessionAppendStr(&buf, " THEN ?", &rc);
208091 sessionAppendInteger(&buf, i*3+3, &rc);
208092 sessionAppendStr(&buf, " ELSE ", &rc);
208093 sessionAppendIdent(&buf, p->azCol[i], &rc);
208094 sessionAppendStr(&buf, " END", &rc);
208095 zSep = ", ";
208096 }
208097
208098 /* Append the PK part of the WHERE clause */
208099 sessionAppendStr(&buf, " WHERE ", &rc);
208100 for(i=0; i<p->nCol; i++){
208101 if( p->abPK[i] ){
208102 sessionAppendIdent(&buf, p->azCol[i], &rc);
208103 sessionAppendStr(&buf, " = ?", &rc);
208104 sessionAppendInteger(&buf, i*3+1, &rc);
208105 sessionAppendStr(&buf, " AND ", &rc);
208106 }
208107 }
208108
208109 /* Append the non-PK part of the WHERE clause */
208110 sessionAppendStr(&buf, " (?", &rc);
208111 sessionAppendInteger(&buf, p->nCol*3+1, &rc);
208112 sessionAppendStr(&buf, " OR 1", &rc);
208113 for(i=0; i<p->nCol; i++){
208114 if( !p->abPK[i] ){
208115 sessionAppendStr(&buf, " AND (?", &rc);
208116 sessionAppendInteger(&buf, i*3+2, &rc);
208117 sessionAppendStr(&buf, "=0 OR ", &rc);
208118 sessionAppendIdent(&buf, p->azCol[i], &rc);
208119 sessionAppendStr(&buf, " IS ?", &rc);
208120 sessionAppendInteger(&buf, i*3+1, &rc);
208121 sessionAppendStr(&buf, ")", &rc);
208122 }
208123 }
208124 sessionAppendStr(&buf, ")", &rc);
208125
208126 if( rc==SQLITE_OK ){
208127 rc = sqlite3_prepare_v2(db, (char *)buf.aBuf, buf.nBuf, &p->pUpdate, 0);
208128 }
208129 sqlite3_free(buf.aBuf);
208130
208131 return rc;
208132 }
208133
208134
208135 /*
208136 ** Formulate and prepare an SQL statement to query table zTab by primary
208137 ** key. Assuming the following table structure:
208138 **
@@ -208210,21 +208573,10 @@
208210 "INSERT INTO main.sqlite_stat1 VALUES(?1, "
208211 "CASE WHEN length(?2)=0 AND typeof(?2)='blob' THEN NULL ELSE ?2 END, "
208212 "?3)"
208213 );
208214 }
208215 if( rc==SQLITE_OK ){
208216 rc = sessionPrepare(db, &p->pUpdate,
208217 "UPDATE main.sqlite_stat1 SET "
208218 "tbl = CASE WHEN ?2 THEN ?3 ELSE tbl END, "
208219 "idx = CASE WHEN ?5 THEN ?6 ELSE idx END, "
208220 "stat = CASE WHEN ?8 THEN ?9 ELSE stat END "
208221 "WHERE tbl=?1 AND idx IS "
208222 "CASE WHEN length(?4)=0 AND typeof(?4)='blob' THEN NULL ELSE ?4 END "
208223 "AND (?10 OR ?8=0 OR stat IS ?7)"
208224 );
208225 }
208226 if( rc==SQLITE_OK ){
208227 rc = sessionPrepare(db, &p->pDelete,
208228 "DELETE FROM main.sqlite_stat1 WHERE tbl=?1 AND idx IS "
208229 "CASE WHEN length(?2)=0 AND typeof(?2)='blob' THEN NULL ELSE ?2 END "
208230 "AND (?4 OR stat IS ?3)"
@@ -208537,11 +208889,11 @@
208537 const char *zDummy;
208538 int op;
208539 int nCol;
208540 int rc = SQLITE_OK;
208541
208542 assert( p->pDelete && p->pUpdate && p->pInsert && p->pSelect );
208543 assert( p->azCol && p->abPK );
208544 assert( !pbReplace || *pbReplace==0 );
208545
208546 sqlite3changeset_op(pIter, &zDummy, &nCol, &op, 0);
208547
@@ -208577,33 +208929,32 @@
208577 );
208578 }
208579
208580 }else if( op==SQLITE_UPDATE ){
208581 int i;
 
 
 
 
208582
208583 /* Bind values to the UPDATE statement. */
208584 for(i=0; rc==SQLITE_OK && i<nCol; i++){
208585 sqlite3_value *pOld = sessionChangesetOld(pIter, i);
208586 sqlite3_value *pNew = sessionChangesetNew(pIter, i);
208587
208588 sqlite3_bind_int(p->pUpdate, i*3+2, !!pNew);
208589 if( pOld ){
208590 rc = sessionBindValue(p->pUpdate, i*3+1, pOld);
208591 }
208592 if( rc==SQLITE_OK && pNew ){
208593 rc = sessionBindValue(p->pUpdate, i*3+3, pNew);
208594 }
208595 }
208596 if( rc==SQLITE_OK ){
208597 sqlite3_bind_int(p->pUpdate, nCol*3+1, pbRetry==0 || pIter->bPatchset);
208598 }
208599 if( rc!=SQLITE_OK ) return rc;
208600
208601 /* Attempt the UPDATE. In the case of a NOTFOUND or DATA conflict,
208602 ** the result will be SQLITE_OK with 0 rows modified. */
208603 sqlite3_step(p->pUpdate);
208604 rc = sqlite3_reset(p->pUpdate);
208605
208606 if( rc==SQLITE_OK && sqlite3_changes(p->db)==0 ){
208607 /* A NOTFOUND or DATA error. Search the table to see if it contains
208608 ** a row with a matching primary key. If so, this is a DATA conflict.
208609 ** Otherwise, if there is no primary key match, it is a NOTFOUND. */
@@ -208822,18 +209173,17 @@
208822 rc = sessionRetryConstraints(
208823 db, pIter->bPatchset, zTab, &sApply, xConflict, pCtx
208824 );
208825 if( rc!=SQLITE_OK ) break;
208826
 
208827 sqlite3_free((char*)sApply.azCol); /* cast works around VC++ bug */
208828 sqlite3_finalize(sApply.pDelete);
208829 sqlite3_finalize(sApply.pUpdate);
208830 sqlite3_finalize(sApply.pInsert);
208831 sqlite3_finalize(sApply.pSelect);
208832 sApply.db = db;
208833 sApply.pDelete = 0;
208834 sApply.pUpdate = 0;
208835 sApply.pInsert = 0;
208836 sApply.pSelect = 0;
208837 sApply.nCol = 0;
208838 sApply.azCol = 0;
208839 sApply.abPK = 0;
@@ -208893,15 +209243,14 @@
208893 if( (rc = sessionStat1Sql(db, &sApply) ) ){
208894 break;
208895 }
208896 sApply.bStat1 = 1;
208897 }else{
208898 if((rc = sessionSelectRow(db, zTab, &sApply))
208899 || (rc = sessionUpdateRow(db, zTab, &sApply))
208900 || (rc = sessionDeleteRow(db, zTab, &sApply))
208901 || (rc = sessionInsertRow(db, zTab, &sApply))
208902 ){
208903 break;
208904 }
208905 sApply.bStat1 = 0;
208906 }
208907 }
@@ -208956,13 +209305,13 @@
208956 if( rc==SQLITE_OK && bPatchset==0 && sApply.bRebase ){
208957 *ppRebase = (void*)sApply.rebase.aBuf;
208958 *pnRebase = sApply.rebase.nBuf;
208959 sApply.rebase.aBuf = 0;
208960 }
 
208961 sqlite3_finalize(sApply.pInsert);
208962 sqlite3_finalize(sApply.pDelete);
208963 sqlite3_finalize(sApply.pUpdate);
208964 sqlite3_finalize(sApply.pSelect);
208965 sqlite3_free((char*)sApply.azCol); /* cast works around VC++ bug */
208966 sqlite3_free((char*)sApply.constraints.aBuf);
208967 sqlite3_free((char*)sApply.rebase.aBuf);
208968 sqlite3_mutex_leave(sqlite3_db_mutex(db));
@@ -228066,11 +228415,11 @@
228066 int nArg, /* Number of args */
228067 sqlite3_value **apUnused /* Function arguments */
228068 ){
228069 assert( nArg==0 );
228070 UNUSED_PARAM2(nArg, apUnused);
228071 sqlite3_result_text(pCtx, "fts5: 2021-01-27 19:15:06 9dc7fc9f04d5c14fc436e5ff5b4c06c1969ddde5857ebeb5dccd59b7c748c339", -1, SQLITE_TRANSIENT);
228072 }
228073
228074 /*
228075 ** Return true if zName is the extension on one of the shadow tables used
228076 ** by this module.
@@ -232992,12 +233341,12 @@
232992 }
232993 #endif /* SQLITE_CORE */
232994 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
232995
232996 /************** End of stmt.c ************************************************/
232997 #if __LINE__!=232997
232998 #undef SQLITE_SOURCE_ID
232999 #define SQLITE_SOURCE_ID "2021-01-27 19:15:06 9dc7fc9f04d5c14fc436e5ff5b4c06c1969ddde5857ebeb5dccd59b7c748alt2"
233000 #endif
233001 /* Return the source-id for this library */
233002 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
233003 /************************** End of sqlite3.c ******************************/
233004
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1186,11 +1186,11 @@
1186 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1187 ** [sqlite_version()] and [sqlite_source_id()].
1188 */
1189 #define SQLITE_VERSION "3.35.0"
1190 #define SQLITE_VERSION_NUMBER 3035000
1191 #define SQLITE_SOURCE_ID "2021-02-03 13:20:12 1eb69c64ed4a11601698000573c507684bc4b0366336ba0748ebd661644d0902"
1192
1193 /*
1194 ** CAPI3REF: Run-Time Library Version Numbers
1195 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1196 **
@@ -3176,11 +3176,17 @@
3176 ** The first argument is an integer which is 0 to disable triggers,
3177 ** positive to enable triggers or negative to leave the setting unchanged.
3178 ** The second parameter is a pointer to an integer into which
3179 ** is written 0 or 1 to indicate whether triggers are disabled or enabled
3180 ** following this call. The second parameter may be a NULL pointer, in
3181 ** which case the trigger setting is not reported back.
3182 **
3183 ** <p>Originally this option disabled all triggers. ^(However, since
3184 ** SQLite version 3.35.0, TEMP triggers are still allowed even if
3185 ** this option is off. So, in other words, this option now only disables
3186 ** triggers in the main database schema or in the schemas of ATTACH-ed
3187 ** databases.)^ </dd>
3188 **
3189 ** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
3190 ** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
3191 ** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
3192 ** There should be two additional arguments.
@@ -14170,43 +14176,44 @@
14176 #define TK_ORDER 143
14177 #define TK_GROUP 144
14178 #define TK_HAVING 145
14179 #define TK_LIMIT 146
14180 #define TK_WHERE 147
14181 #define TK_RETURNING 148
14182 #define TK_INTO 149
14183 #define TK_NOTHING 150
14184 #define TK_FLOAT 151
14185 #define TK_BLOB 152
14186 #define TK_INTEGER 153
14187 #define TK_VARIABLE 154
14188 #define TK_CASE 155
14189 #define TK_WHEN 156
14190 #define TK_THEN 157
14191 #define TK_ELSE 158
14192 #define TK_INDEX 159
14193 #define TK_ALTER 160
14194 #define TK_ADD 161
14195 #define TK_WINDOW 162
14196 #define TK_OVER 163
14197 #define TK_FILTER 164
14198 #define TK_COLUMN 165
14199 #define TK_AGG_FUNCTION 166
14200 #define TK_AGG_COLUMN 167
14201 #define TK_TRUEFALSE 168
14202 #define TK_ISNOT 169
14203 #define TK_FUNCTION 170
14204 #define TK_UMINUS 171
14205 #define TK_UPLUS 172
14206 #define TK_TRUTH 173
14207 #define TK_REGISTER 174
14208 #define TK_VECTOR 175
14209 #define TK_SELECT_COLUMN 176
14210 #define TK_IF_NULL_ROW 177
14211 #define TK_ASTERISK 178
14212 #define TK_SPAN 179
14213 #define TK_SPACE 180
14214 #define TK_ILLEGAL 181
14215
14216 /************** End of parse.h ***********************************************/
14217 /************** Continuing where we left off in sqliteInt.h ******************/
14218 #include <stdio.h>
14219 #include <stdlib.h>
@@ -14780,10 +14787,11 @@
14787 typedef struct Parse Parse;
14788 typedef struct ParseCleanup ParseCleanup;
14789 typedef struct PreUpdate PreUpdate;
14790 typedef struct PrintfArguments PrintfArguments;
14791 typedef struct RenameToken RenameToken;
14792 typedef struct Returning Returning;
14793 typedef struct RowSet RowSet;
14794 typedef struct Savepoint Savepoint;
14795 typedef struct Select Select;
14796 typedef struct SQLiteThread SQLiteThread;
14797 typedef struct SelectDest SelectDest;
@@ -15757,31 +15765,31 @@
15765 #define OP_Variable 75 /* synopsis: r[P2]=parameter(P1,P4) */
15766 #define OP_Move 76 /* synopsis: r[P2@P3]=r[P1@P3] */
15767 #define OP_Copy 77 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
15768 #define OP_SCopy 78 /* synopsis: r[P2]=r[P1] */
15769 #define OP_IntCopy 79 /* synopsis: r[P2]=r[P1] */
15770 #define OP_ChngCntRow 80 /* synopsis: output=r[P1] */
15771 #define OP_ResultRow 81 /* synopsis: output=r[P1@P2] */
15772 #define OP_CollSeq 82
15773 #define OP_AddImm 83 /* synopsis: r[P1]=r[P1]+P2 */
15774 #define OP_RealAffinity 84
15775 #define OP_Cast 85 /* synopsis: affinity(r[P1]) */
15776 #define OP_Permutation 86
15777 #define OP_Compare 87 /* synopsis: r[P1@P3] <-> r[P2@P3] */
15778 #define OP_IsTrue 88 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
15779 #define OP_Offset 89 /* synopsis: r[P3] = sqlite_offset(P1) */
15780 #define OP_Column 90 /* synopsis: r[P3]=PX */
15781 #define OP_Affinity 91 /* synopsis: affinity(r[P1@P2]) */
15782 #define OP_MakeRecord 92 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
15783 #define OP_Count 93 /* synopsis: r[P2]=count() */
15784 #define OP_ReadCookie 94
15785 #define OP_SetCookie 95
15786 #define OP_ReopenIdx 96 /* synopsis: root=P2 iDb=P3 */
15787 #define OP_OpenRead 97 /* synopsis: root=P2 iDb=P3 */
15788 #define OP_OpenWrite 98 /* synopsis: root=P2 iDb=P3 */
15789 #define OP_OpenDup 99
15790 #define OP_OpenAutoindex 100 /* synopsis: nColumn=P2 */
15791 #define OP_BitAnd 101 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
15792 #define OP_BitOr 102 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
15793 #define OP_ShiftLeft 103 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
15794 #define OP_ShiftRight 104 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
15795 #define OP_Add 105 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
@@ -15788,77 +15796,78 @@
15796 #define OP_Subtract 106 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
15797 #define OP_Multiply 107 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
15798 #define OP_Divide 108 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
15799 #define OP_Remainder 109 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
15800 #define OP_Concat 110 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
15801 #define OP_OpenEphemeral 111 /* synopsis: nColumn=P2 */
15802 #define OP_BitNot 112 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
15803 #define OP_SorterOpen 113
15804 #define OP_SequenceTest 114 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
15805 #define OP_String8 115 /* same as TK_STRING, synopsis: r[P2]='P4' */
15806 #define OP_OpenPseudo 116 /* synopsis: P3 columns in r[P2] */
15807 #define OP_Close 117
15808 #define OP_ColumnsUsed 118
15809 #define OP_SeekScan 119 /* synopsis: Scan-ahead up to P1 rows */
15810 #define OP_SeekHit 120 /* synopsis: set P2<=seekHit<=P3 */
15811 #define OP_Sequence 121 /* synopsis: r[P2]=cursor[P1].ctr++ */
15812 #define OP_NewRowid 122 /* synopsis: r[P2]=rowid */
15813 #define OP_Insert 123 /* synopsis: intkey=r[P3] data=r[P2] */
15814 #define OP_RowCell 124
15815 #define OP_Delete 125
15816 #define OP_ResetCount 126
15817 #define OP_SorterCompare 127 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
15818 #define OP_SorterData 128 /* synopsis: r[P2]=data */
15819 #define OP_RowData 129 /* synopsis: r[P2]=data */
15820 #define OP_Rowid 130 /* synopsis: r[P2]=rowid */
15821 #define OP_NullRow 131
15822 #define OP_SeekEnd 132
15823 #define OP_IdxInsert 133 /* synopsis: key=r[P2] */
15824 #define OP_SorterInsert 134 /* synopsis: key=r[P2] */
15825 #define OP_IdxDelete 135 /* synopsis: key=r[P2@P3] */
15826 #define OP_DeferredSeek 136 /* synopsis: Move P3 to P1.rowid if needed */
15827 #define OP_IdxRowid 137 /* synopsis: r[P2]=rowid */
15828 #define OP_FinishSeek 138
15829 #define OP_Destroy 139
15830 #define OP_Clear 140
15831 #define OP_ResetSorter 141
15832 #define OP_CreateBtree 142 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
15833 #define OP_SqlExec 143
15834 #define OP_ParseSchema 144
15835 #define OP_LoadAnalysis 145
15836 #define OP_DropTable 146
15837 #define OP_DropIndex 147
15838 #define OP_DropTrigger 148
15839 #define OP_IntegrityCk 149
15840 #define OP_RowSetAdd 150 /* synopsis: rowset(P1)=r[P2] */
15841 #define OP_Real 151 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
15842 #define OP_Param 152
15843 #define OP_FkCounter 153 /* synopsis: fkctr[P1]+=P2 */
15844 #define OP_MemMax 154 /* synopsis: r[P1]=max(r[P1],r[P2]) */
15845 #define OP_OffsetLimit 155 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
15846 #define OP_AggInverse 156 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
15847 #define OP_AggStep 157 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15848 #define OP_AggStep1 158 /* synopsis: accum=r[P3] step(r[P2@P5]) */
15849 #define OP_AggValue 159 /* synopsis: r[P3]=value N=P2 */
15850 #define OP_AggFinal 160 /* synopsis: accum=r[P1] N=P2 */
15851 #define OP_Expire 161
15852 #define OP_CursorLock 162
15853 #define OP_CursorUnlock 163
15854 #define OP_TableLock 164 /* synopsis: iDb=P1 root=P2 write=P3 */
15855 #define OP_VBegin 165
15856 #define OP_VCreate 166
15857 #define OP_VDestroy 167
15858 #define OP_VOpen 168
15859 #define OP_VColumn 169 /* synopsis: r[P3]=vcolumn(P2) */
15860 #define OP_VRename 170
15861 #define OP_Pagecount 171
15862 #define OP_MaxPgcnt 172
15863 #define OP_Trace 173
15864 #define OP_CursorHint 174
15865 #define OP_ReleaseReg 175 /* synopsis: release r[P1@P2] mask P3 */
15866 #define OP_Noop 176
15867 #define OP_Explain 177
15868 #define OP_Abortable 178
15869
15870 /* Properties such as "out2" or "jump" that are specified in
15871 ** comments following the "case" for each opcode in the vdbe.c
15872 ** are encoded into bitvectors as follows:
15873 */
@@ -15877,23 +15886,23 @@
15886 /* 40 */ 0x01, 0x01, 0x23, 0x26, 0x26, 0x0b, 0x01, 0x01,\
15887 /* 48 */ 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
15888 /* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, 0x00,\
15889 /* 64 */ 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10, 0x10,\
15890 /* 72 */ 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10,\
15891 /* 80 */ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00,\
15892 /* 88 */ 0x12, 0x20, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00,\
15893 /* 96 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26, 0x26,\
15894 /* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x00,\
15895 /* 112 */ 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,\
15896 /* 120 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,\
15897 /* 128 */ 0x00, 0x00, 0x10, 0x00, 0x00, 0x04, 0x04, 0x00,\
15898 /* 136 */ 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00,\
15899 /* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10,\
15900 /* 152 */ 0x10, 0x00, 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00,\
15901 /* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
15902 /* 168 */ 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00,\
15903 /* 176 */ 0x00, 0x00, 0x00,}
15904
15905 /* The sqlite3P2Values() routine is able to run faster if it knows
15906 ** the value of the largest JUMP opcode. The smaller the maximum
15907 ** JUMP opcode the better, so the mkopcodeh.tcl script that
15908 ** generated this include file strives to group all JUMP opcodes
@@ -15993,10 +16002,11 @@
16002 #endif
16003 SQLITE_PRIVATE void sqlite3VdbeResetStepResult(Vdbe*);
16004 SQLITE_PRIVATE void sqlite3VdbeRewind(Vdbe*);
16005 SQLITE_PRIVATE int sqlite3VdbeReset(Vdbe*);
16006 SQLITE_PRIVATE void sqlite3VdbeSetNumCols(Vdbe*,int);
16007 SQLITE_PRIVATE void sqlite3VdbeColumnInfoXfer(Vdbe*,Vdbe*);
16008 SQLITE_PRIVATE int sqlite3VdbeSetColName(Vdbe*, int, int, const char *, void(*)(void*));
16009 SQLITE_PRIVATE void sqlite3VdbeCountChanges(Vdbe*);
16010 SQLITE_PRIVATE sqlite3 *sqlite3VdbeDb(Vdbe*);
16011 SQLITE_PRIVATE u8 sqlite3VdbePrepareFlags(Vdbe*);
16012 SQLITE_PRIVATE void sqlite3VdbeSetSql(Vdbe*, const char *z, int n, u8);
@@ -18881,10 +18891,11 @@
18891 int addrCrTab; /* Address of OP_CreateBtree opcode on CREATE TABLE */
18892 u32 nQueryLoop; /* Est number of iterations of a query (10*log2(N)) */
18893 u32 oldmask; /* Mask of old.* columns referenced */
18894 u32 newmask; /* Mask of new.* columns referenced */
18895 u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */
18896 u8 bReturning; /* Coding a RETURNING trigger */
18897 u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */
18898 u8 disableTriggers; /* True to disable triggers */
18899
18900 /**************************************************************************
18901 ** Fields above must be initialized to zero. The fields that follow,
@@ -19030,10 +19041,11 @@
19041 struct Trigger {
19042 char *zName; /* The name of the trigger */
19043 char *table; /* The table or view to which the trigger applies */
19044 u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT */
19045 u8 tr_tm; /* One of TRIGGER_BEFORE, TRIGGER_AFTER */
19046 u8 bReturning; /* This trigger implements a RETURNING clause */
19047 Expr *pWhen; /* The WHEN clause of the expression (may be NULL) */
19048 IdList *pColumns; /* If this is an UPDATE OF <column-list> trigger,
19049 the <column-list> is stored here */
19050 Schema *pSchema; /* Schema containing the trigger */
19051 Schema *pTabSchema; /* Schema containing the table */
@@ -19088,11 +19100,12 @@
19100 * them to. See sqlite3Update() documentation of "pChanges"
19101 * argument.
19102 *
19103 */
19104 struct TriggerStep {
19105 u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT,
19106 ** or TK_RETURNING */
19107 u8 orconf; /* OE_Rollback etc. */
19108 Trigger *pTrig; /* The trigger that this step is a part of */
19109 Select *pSelect; /* SELECT statement or RHS of INSERT INTO SELECT ... */
19110 char *zTarget; /* Target table for DELETE, UPDATE, INSERT */
19111 SrcList *pFrom; /* FROM clause for UPDATE statement (if any) */
@@ -19102,10 +19115,22 @@
19115 Upsert *pUpsert; /* Upsert clauses on an INSERT */
19116 char *zSpan; /* Original SQL text of this command */
19117 TriggerStep *pNext; /* Next in the link-list */
19118 TriggerStep *pLast; /* Last element in link-list. Valid for 1st elem only */
19119 };
19120
19121 /*
19122 ** Information about a RETURNING clause
19123 */
19124 struct Returning {
19125 Parse *pParse; /* The parse that includes the RETURNING clause */
19126 ExprList *pReturnEL; /* List of expressions to return */
19127 Trigger retTrig; /* The transient trigger that implements RETURNING */
19128 TriggerStep retTStep; /* The trigger step */
19129 Select retSel; /* The SELECT statement that implements RETURNING */
19130 u64 retSrcList; /* The empty FROM clause of the SELECT */
19131 };
19132
19133 /*
19134 ** An objected used to accumulate the text of a string where we
19135 ** do not necessarily know how big the string will be in the end.
19136 */
@@ -19704,10 +19729,11 @@
19729 SQLITE_PRIVATE void sqlite3AddCheckConstraint(Parse*, Expr*, const char*, const char*);
19730 SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,Expr*,const char*,const char*);
19731 SQLITE_PRIVATE void sqlite3AddCollateType(Parse*, Token*);
19732 SQLITE_PRIVATE void sqlite3AddGenerated(Parse*,Expr*,Token*);
19733 SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u8,Select*);
19734 SQLITE_PRIVATE void sqlite3AddReturning(Parse*,ExprList*);
19735 SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*,
19736 sqlite3_vfs**,char**,char **);
19737 #define sqlite3CodecQueryParameters(A,B,C) 0
19738 SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3*,const char*);
19739
@@ -33429,31 +33455,31 @@
33455 /* 75 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
33456 /* 76 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
33457 /* 77 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
33458 /* 78 */ "SCopy" OpHelp("r[P2]=r[P1]"),
33459 /* 79 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
33460 /* 80 */ "ChngCntRow" OpHelp("output=r[P1]"),
33461 /* 81 */ "ResultRow" OpHelp("output=r[P1@P2]"),
33462 /* 82 */ "CollSeq" OpHelp(""),
33463 /* 83 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
33464 /* 84 */ "RealAffinity" OpHelp(""),
33465 /* 85 */ "Cast" OpHelp("affinity(r[P1])"),
33466 /* 86 */ "Permutation" OpHelp(""),
33467 /* 87 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
33468 /* 88 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
33469 /* 89 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
33470 /* 90 */ "Column" OpHelp("r[P3]=PX"),
33471 /* 91 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
33472 /* 92 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
33473 /* 93 */ "Count" OpHelp("r[P2]=count()"),
33474 /* 94 */ "ReadCookie" OpHelp(""),
33475 /* 95 */ "SetCookie" OpHelp(""),
33476 /* 96 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
33477 /* 97 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
33478 /* 98 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
33479 /* 99 */ "OpenDup" OpHelp(""),
33480 /* 100 */ "OpenAutoindex" OpHelp("nColumn=P2"),
33481 /* 101 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
33482 /* 102 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
33483 /* 103 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
33484 /* 104 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
33485 /* 105 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -33460,77 +33486,78 @@
33486 /* 106 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
33487 /* 107 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
33488 /* 108 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
33489 /* 109 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
33490 /* 110 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
33491 /* 111 */ "OpenEphemeral" OpHelp("nColumn=P2"),
33492 /* 112 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
33493 /* 113 */ "SorterOpen" OpHelp(""),
33494 /* 114 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
33495 /* 115 */ "String8" OpHelp("r[P2]='P4'"),
33496 /* 116 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
33497 /* 117 */ "Close" OpHelp(""),
33498 /* 118 */ "ColumnsUsed" OpHelp(""),
33499 /* 119 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
33500 /* 120 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
33501 /* 121 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
33502 /* 122 */ "NewRowid" OpHelp("r[P2]=rowid"),
33503 /* 123 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
33504 /* 124 */ "RowCell" OpHelp(""),
33505 /* 125 */ "Delete" OpHelp(""),
33506 /* 126 */ "ResetCount" OpHelp(""),
33507 /* 127 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
33508 /* 128 */ "SorterData" OpHelp("r[P2]=data"),
33509 /* 129 */ "RowData" OpHelp("r[P2]=data"),
33510 /* 130 */ "Rowid" OpHelp("r[P2]=rowid"),
33511 /* 131 */ "NullRow" OpHelp(""),
33512 /* 132 */ "SeekEnd" OpHelp(""),
33513 /* 133 */ "IdxInsert" OpHelp("key=r[P2]"),
33514 /* 134 */ "SorterInsert" OpHelp("key=r[P2]"),
33515 /* 135 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
33516 /* 136 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
33517 /* 137 */ "IdxRowid" OpHelp("r[P2]=rowid"),
33518 /* 138 */ "FinishSeek" OpHelp(""),
33519 /* 139 */ "Destroy" OpHelp(""),
33520 /* 140 */ "Clear" OpHelp(""),
33521 /* 141 */ "ResetSorter" OpHelp(""),
33522 /* 142 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
33523 /* 143 */ "SqlExec" OpHelp(""),
33524 /* 144 */ "ParseSchema" OpHelp(""),
33525 /* 145 */ "LoadAnalysis" OpHelp(""),
33526 /* 146 */ "DropTable" OpHelp(""),
33527 /* 147 */ "DropIndex" OpHelp(""),
33528 /* 148 */ "DropTrigger" OpHelp(""),
33529 /* 149 */ "IntegrityCk" OpHelp(""),
33530 /* 150 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
33531 /* 151 */ "Real" OpHelp("r[P2]=P4"),
33532 /* 152 */ "Param" OpHelp(""),
33533 /* 153 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
33534 /* 154 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
33535 /* 155 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
33536 /* 156 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
33537 /* 157 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
33538 /* 158 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
33539 /* 159 */ "AggValue" OpHelp("r[P3]=value N=P2"),
33540 /* 160 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
33541 /* 161 */ "Expire" OpHelp(""),
33542 /* 162 */ "CursorLock" OpHelp(""),
33543 /* 163 */ "CursorUnlock" OpHelp(""),
33544 /* 164 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
33545 /* 165 */ "VBegin" OpHelp(""),
33546 /* 166 */ "VCreate" OpHelp(""),
33547 /* 167 */ "VDestroy" OpHelp(""),
33548 /* 168 */ "VOpen" OpHelp(""),
33549 /* 169 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
33550 /* 170 */ "VRename" OpHelp(""),
33551 /* 171 */ "Pagecount" OpHelp(""),
33552 /* 172 */ "MaxPgcnt" OpHelp(""),
33553 /* 173 */ "Trace" OpHelp(""),
33554 /* 174 */ "CursorHint" OpHelp(""),
33555 /* 175 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
33556 /* 176 */ "Noop" OpHelp(""),
33557 /* 177 */ "Explain" OpHelp(""),
33558 /* 178 */ "Abortable" OpHelp(""),
33559 };
33560 return azName[i];
33561 }
33562 #endif
33563
@@ -72795,10 +72822,13 @@
72822 if( i<nOld ){
72823 pNew = apNew[i] = apOld[i];
72824 apOld[i] = 0;
72825 rc = sqlite3PagerWrite(pNew->pDbPage);
72826 nNew++;
72827 if( sqlite3PagerPageRefcount(pNew->pDbPage)!=1+(i==(iParentIdx-nxDiv)) ){
72828 rc = SQLITE_CORRUPT_BKPT;
72829 }
72830 if( rc ) goto balance_cleanup;
72831 }else{
72832 assert( i>0 );
72833 rc = allocateBtreePage(pBt, &pNew, &pgno, (bBulk ? 1 : pgno), 0);
72834 if( rc ) goto balance_cleanup;
@@ -80821,10 +80851,27 @@
80851 p->nResColumn = (u16)nResColumn;
80852 p->aColName = (Mem*)sqlite3DbMallocRawNN(db, sizeof(Mem)*n );
80853 if( p->aColName==0 ) return;
80854 initMemArray(p->aColName, n, db, MEM_Null);
80855 }
80856
80857 /*
80858 ** Transfer the column count and name information from one Vdbe to
80859 ** another.
80860 */
80861 SQLITE_PRIVATE void sqlite3VdbeColumnInfoXfer(Vdbe *pTo, Vdbe *pFrom){
80862 sqlite3 *db = pTo->db;
80863 assert( db==pFrom->db );
80864 if( pTo->nResColumn ){
80865 releaseMemArray(pTo->aColName, pTo->nResColumn*COLNAME_N);
80866 sqlite3DbFree(db, pTo->aColName);
80867 }
80868 pTo->aColName = pFrom->aColName;
80869 pFrom->aColName = 0;
80870 pTo->nResColumn = pFrom->nResColumn;
80871 pFrom->nResColumn = 0;
80872 }
80873
80874 /*
80875 ** Set the name of the idx'th column to be returned by the SQL statement.
80876 ** zName must be a pointer to a nul terminated string.
80877 **
@@ -87264,10 +87311,30 @@
87311 assert( (pIn1->flags & MEM_Int)!=0 );
87312 pOut = &aMem[pOp->p2];
87313 sqlite3VdbeMemSetInt64(pOut, pIn1->u.i);
87314 break;
87315 }
87316
87317 /* Opcode: ChngCntRow P1 P2 * * *
87318 ** Synopsis: output=r[P1]
87319 **
87320 ** Output value in register P1 as the chance count for a DML statement,
87321 ** due to the "PRAGMA count_changes=ON" setting. Or, if there was a
87322 ** foreign key error in the statement, trigger the error now.
87323 **
87324 ** This opcode is a variant of OP_ResultRow that checks the foreign key
87325 ** immediate constraint count and throws an error if the count is
87326 ** non-zero. The P2 opcode must be 1.
87327 */
87328 case OP_ChngCntRow: {
87329 assert( pOp->p2==1 );
87330 if( (rc = sqlite3VdbeCheckFk(p,0))!=SQLITE_OK ){
87331 goto abort_due_to_error;
87332 }
87333 /* Fall through to the next case, OP_String */
87334 /* no break */ deliberate_fall_through
87335 }
87336
87337 /* Opcode: ResultRow P1 P2 * * *
87338 ** Synopsis: output=r[P1@P2]
87339 **
87340 ** The registers P1 through P1+P2-1 contain a single row of
@@ -87281,38 +87348,10 @@
87348 int i;
87349 assert( p->nResColumn==pOp->p2 );
87350 assert( pOp->p1>0 );
87351 assert( pOp->p1+pOp->p2<=(p->nMem+1 - p->nCursor)+1 );
87352
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87353 /* Invalidate all ephemeral cursor row caches */
87354 p->cacheCtr = (p->cacheCtr + 2)|1;
87355
87356 /* Make sure the results of the current row are \000 terminated
87357 ** and have an assigned type. The results are de-ephemeralized as
@@ -98849,27 +98888,30 @@
98888 #if !defined(SQLITE_OMIT_TRIGGER) || !defined(SQLITE_OMIT_UPSERT)
98889 /* If we have not already resolved the name, then maybe
98890 ** it is a new.* or old.* trigger argument reference. Or
98891 ** maybe it is an excluded.* from an upsert.
98892 */
98893 if( zDb==0 && cntTab==0 ){
98894 pTab = 0;
98895 #ifndef SQLITE_OMIT_TRIGGER
98896 if( pParse->pTriggerTab!=0 ){
98897 int op = pParse->eTriggerOp;
98898 assert( op==TK_DELETE || op==TK_UPDATE || op==TK_INSERT );
98899 if( op!=TK_DELETE && zTab && sqlite3StrICmp("new",zTab) == 0 ){
98900 pExpr->iTable = 1;
98901 pTab = pParse->pTriggerTab;
98902 }else if( op!=TK_INSERT && zTab && sqlite3StrICmp("old",zTab)==0 ){
98903 pExpr->iTable = 0;
98904 pTab = pParse->pTriggerTab;
98905 }else if( pParse->bReturning ){
98906 pExpr->iTable = op!=TK_DELETE;
98907 pTab = pParse->pTriggerTab;
98908 }
98909 }
98910 #endif /* SQLITE_OMIT_TRIGGER */
98911 #ifndef SQLITE_OMIT_UPSERT
98912 if( (pNC->ncFlags & NC_UUpsert)!=0 && ALWAYS(zTab) ){
98913 Upsert *pUpsert = pNC->uNC.pUpsert;
98914 if( pUpsert && sqlite3StrICmp("excluded",zTab)==0 ){
98915 pTab = pUpsert->pUpsertSrc->a[0].pTab;
98916 pExpr->iTable = EXCLUDED_TABLE_NUMBER;
98917 }
@@ -110733,11 +110775,10 @@
110775 #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER)
110776 if( sqlite3WalkExpr(&pFix->w, pList->a[i].pOn) ) return WRC_Abort;
110777 #endif
110778 }
110779 if( pSelect->pWith ){
 
110780 for(i=0; i<pSelect->pWith->nCte; i++){
110781 if( sqlite3WalkSelect(p, pSelect->pWith->a[i].pSelect) ){
110782 return WRC_Abort;
110783 }
110784 }
@@ -112364,10 +112405,79 @@
112405 pTab->tabFlags |= TF_OOOHidden;
112406 }
112407 }
112408 #endif
112409
112410 /*
112411 ** Name of the special TEMP trigger used to implement RETURNING. The
112412 ** name begins with "sqlite_" so that it is guaranteed not to collide
112413 ** with any application-generated triggers.
112414 */
112415 #define RETURNING_TRIGGER_NAME "sqlite_returning"
112416
112417 /*
112418 ** Clean up the data structures associated with the RETURNING clause.
112419 */
112420 static void sqlite3DeleteReturning(sqlite3 *db, Returning *pRet){
112421 Hash *pHash;
112422 pHash = &(db->aDb[1].pSchema->trigHash);
112423 sqlite3HashInsert(pHash, RETURNING_TRIGGER_NAME, 0);
112424 sqlite3ExprListDelete(db, pRet->pReturnEL);
112425 sqlite3DbFree(db, pRet);
112426 }
112427
112428 /*
112429 ** Add the RETURNING clause to the parse currently underway.
112430 **
112431 ** This routine creates a special TEMP trigger that will fire for each row
112432 ** of the DML statement. That TEMP trigger contains a single SELECT
112433 ** statement with a result set that is the argument of the RETURNING clause.
112434 ** The trigger has the Trigger.bReturning flag and an opcode of
112435 ** TK_RETURNING instead of TK_SELECT, so that the trigger code generator
112436 ** knows to handle it specially. The TEMP trigger is automatically
112437 ** removed at the end of the parse.
112438 **
112439 ** When this routine is called, we do not yet know if the RETURNING clause
112440 ** is attached to a DELETE, INSERT, or UPDATE, so construct it as a
112441 ** RETURNING trigger instead. It will then be converted into the appropriate
112442 ** type on the first call to sqlite3TriggersExist().
112443 */
112444 SQLITE_PRIVATE void sqlite3AddReturning(Parse *pParse, ExprList *pList){
112445 Returning *pRet;
112446 Hash *pHash;
112447 sqlite3 *db = pParse->db;
112448 assert( !pParse->bReturning );
112449 pParse->bReturning = 1;
112450 pRet = sqlite3DbMallocZero(db, sizeof(*pRet));
112451 if( pRet==0 ){
112452 sqlite3ExprListDelete(db, pList);
112453 return;
112454 }
112455 pRet->pParse = pParse;
112456 pRet->pReturnEL = pList;
112457 sqlite3ParserAddCleanup(pParse,
112458 (void(*)(sqlite3*,void*))sqlite3DeleteReturning, pRet);
112459 if( db->mallocFailed ) return;
112460 pRet->retTrig.zName = RETURNING_TRIGGER_NAME;
112461 pRet->retTrig.op = TK_RETURNING;
112462 pRet->retTrig.tr_tm = TRIGGER_AFTER;
112463 pRet->retTrig.bReturning = 1;
112464 pRet->retTrig.pSchema = db->aDb[1].pSchema;
112465 pRet->retTrig.step_list = &pRet->retTStep;
112466 pRet->retTStep.op = TK_RETURNING;
112467 pRet->retTStep.pTrig = &pRet->retTrig;
112468 pRet->retTStep.pSelect = &pRet->retSel;
112469 pRet->retSel.op = TK_ALL;
112470 pRet->retSel.pEList = pList;
112471 pRet->retSel.pSrc = (SrcList*)&pRet->retSrcList;
112472 pHash = &(db->aDb[1].pSchema->trigHash);
112473 assert( sqlite3HashFind(pHash, RETURNING_TRIGGER_NAME)==0 );
112474 if( sqlite3HashInsert(pHash, RETURNING_TRIGGER_NAME, &pRet->retTrig)
112475 ==&pRet->retTrig ){
112476 sqlite3OomFault(db);
112477 }
112478 }
112479
112480 /*
112481 ** Add a new column to the table currently being constructed.
112482 **
112483 ** The parser calls this routine once for each column declaration
@@ -117226,10 +117336,11 @@
117336 ** we are counting rows.
117337 */
117338 if( (db->flags & SQLITE_CountRows)!=0
117339 && !pParse->nested
117340 && !pParse->pTriggerTab
117341 && !pParse->bReturning
117342 ){
117343 memCnt = ++pParse->nMem;
117344 sqlite3VdbeAddOp2(v, OP_Integer, 0, memCnt);
117345 }
117346
@@ -117447,11 +117558,11 @@
117558 /* Return the number of rows that were deleted. If this routine is
117559 ** generating code because of a call to sqlite3NestedParse(), do not
117560 ** invoke the callback function.
117561 */
117562 if( memCnt ){
117563 sqlite3VdbeAddOp2(v, OP_ChngCntRow, memCnt, 1);
117564 sqlite3VdbeSetNumCols(v, 1);
117565 sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows deleted", SQLITE_STATIC);
117566 }
117567
117568 delete_from_cleanup:
@@ -119781,27 +119892,28 @@
119892 assert( argc==1 || argc==2 );
119893 switch( sqlite3_value_numeric_type(argv[0]) ){
119894 case SQLITE_INTEGER:
119895 case SQLITE_FLOAT:
119896 x = sqlite3_value_double(argv[0]);
119897 if( x<=0.0 ) return;
119898 break;
119899 default:
119900 return;
119901 }
119902 if( argc==2 ){
119903 switch( sqlite3_value_numeric_type(argv[0]) ){
119904 case SQLITE_INTEGER:
119905 case SQLITE_FLOAT:
119906 b = log(x);
119907 if( b<=0.0 ) return;
119908 x = sqlite3_value_double(argv[1]);
119909 if( x<=0.0 ) return;
119910 break;
119911 default:
119912 return;
119913 }
119914 ans = log(x)/b;
119915 }else{
119916 ans = log(x);
119917 switch( SQLITE_PTR_TO_INT(sqlite3_user_data(context)) ){
119918 case 1:
119919 /* Convert from natural logarithm to log base 10 */
@@ -122495,10 +122607,11 @@
122607 /* Initialize the count of rows to be inserted
122608 */
122609 if( (db->flags & SQLITE_CountRows)!=0
122610 && !pParse->nested
122611 && !pParse->pTriggerTab
122612 && !pParse->bReturning
122613 ){
122614 regRowCount = ++pParse->nMem;
122615 sqlite3VdbeAddOp2(v, OP_Integer, 0, regRowCount);
122616 }
122617
@@ -122859,11 +122972,11 @@
122972 ** Return the number of rows inserted. If this routine is
122973 ** generating code because of a call to sqlite3NestedParse(), do not
122974 ** invoke the callback function.
122975 */
122976 if( regRowCount ){
122977 sqlite3VdbeAddOp2(v, OP_ChngCntRow, regRowCount, 1);
122978 sqlite3VdbeSetNumCols(v, 1);
122979 sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows inserted", SQLITE_STATIC);
122980 }
122981
122982 insert_cleanup:
@@ -137763,32 +137876,41 @@
137876 ** To state it another way: This routine returns a list of all triggers
137877 ** that fire off of pTab. The list will include any TEMP triggers on
137878 ** pTab as well as the triggers lised in pTab->pTrigger.
137879 */
137880 SQLITE_PRIVATE Trigger *sqlite3TriggerList(Parse *pParse, Table *pTab){
137881 Schema *pTmpSchema; /* Schema of the pTab table */
137882 Trigger *pList; /* List of triggers to return */
137883 HashElem *p; /* Loop variable for TEMP triggers */
137884
137885 if( pParse->disableTriggers ){
137886 return 0;
137887 }
137888 pTmpSchema = pParse->db->aDb[1].pSchema;
137889 p = sqliteHashFirst(&pTmpSchema->trigHash);
137890 if( p==0 ){
137891 return pTab->pTrigger;
137892 }
137893 pList = pTab->pTrigger;
137894 if( pTmpSchema!=pTab->pSchema ){
137895 while( p ){
 
 
137896 Trigger *pTrig = (Trigger *)sqliteHashData(p);
137897 if( pTrig->pTabSchema==pTab->pSchema
137898 && 0==sqlite3StrICmp(pTrig->table, pTab->zName)
137899 ){
137900 pTrig->pNext = pList;
137901 pList = pTrig;
137902 }else if( pTrig->op==TK_RETURNING ){
137903 pTrig->table = pTab->zName;
137904 pTrig->pTabSchema = pTab->pSchema;
137905 pTrig->pNext = pList;
137906 pList = pTrig;
137907 }
137908 p = sqliteHashNext(p);
137909 }
137910 }
137911 return pList;
 
137912 }
137913
137914 /*
137915 ** This is called by the parser when it sees a CREATE TRIGGER statement
137916 ** up to the point of the BEGIN before the trigger actions. A Trigger
@@ -138273,11 +138395,11 @@
138395
138396 /*
138397 ** Recursively delete a Trigger structure
138398 */
138399 SQLITE_PRIVATE void sqlite3DeleteTrigger(sqlite3 *db, Trigger *pTrigger){
138400 if( pTrigger==0 || pTrigger->bReturning ) return;
138401 sqlite3DeleteTriggerStep(db, pTrigger->step_list);
138402 sqlite3DbFree(db, pTrigger->zName);
138403 sqlite3DbFree(db, pTrigger->table);
138404 sqlite3ExprDelete(db, pTrigger->pWhen);
138405 sqlite3IdListDelete(db, pTrigger->pColumns);
@@ -138438,19 +138560,52 @@
138560 ){
138561 int mask = 0;
138562 Trigger *pList = 0;
138563 Trigger *p;
138564
138565 pList = sqlite3TriggerList(pParse, pTab);
138566 assert( pList==0 || IsVirtual(pTab)==0
138567 || (pList->bReturning && pList->pNext==0) );
138568 if( pList!=0 ){
138569 p = pList;
138570 if( (pParse->db->flags & SQLITE_EnableTrigger)==0
138571 && pTab->pTrigger!=0
138572 ){
138573 /* The SQLITE_DBCONFIG_ENABLE_TRIGGER setting is off. That means that
138574 ** only TEMP triggers are allowed. Truncate the pList so that it
138575 ** includes only TEMP triggers */
138576 if( pList==pTab->pTrigger ){
138577 pList = 0;
138578 goto exit_triggers_exist;
138579 }
138580 while( ALWAYS(p->pNext) && p->pNext!=pTab->pTrigger ) p = p->pNext;
138581 p->pNext = 0;
138582 p = pList;
138583 }
138584 do{
138585 if( p->op==op && checkColumnOverlap(p->pColumns, pChanges) ){
138586 mask |= p->tr_tm;
138587 }else if( p->op==TK_RETURNING ){
138588 /* The first time a RETURNING trigger is seen, the "op" value tells
138589 ** us what time of trigger it should be. */
138590 assert( sqlite3IsToplevel(pParse) );
138591 p->op = op;
138592 mask |= TRIGGER_AFTER;
138593 if( IsVirtual(pTab) && op!=TK_INSERT ){
138594 sqlite3ErrorMsg(pParse,
138595 "%s RETURNING is not available on virtual tables",
138596 op==TK_DELETE ? "DELETE" : "UPDATE");
138597 }
138598 }else if( p->bReturning && p->op==TK_INSERT && op==TK_UPDATE
138599 && sqlite3IsToplevel(pParse) ){
138600 /* Also fire a RETURNING trigger for an UPSERT */
138601 mask |= TRIGGER_AFTER;
138602 }
138603 p = p->pNext;
138604 }while( p );
138605 }
138606 exit_triggers_exist:
138607 if( pMask ){
138608 *pMask = mask;
138609 }
138610 return (mask ? pList : 0);
138611 }
@@ -138488,10 +138643,51 @@
138643 }else{
138644 sqlite3DbFree(db, zName);
138645 }
138646 return pSrc;
138647 }
138648
138649 /* The input list pList is the list of result set terms from a RETURNING
138650 ** clause. The table that we are returning from is pTab.
138651 **
138652 ** This routine makes a copy of the pList, and at the same time expands
138653 ** any "*" wildcards to be the complete set of columns from pTab.
138654 */
138655 static ExprList *sqlite3ExpandReturning(
138656 Parse *pParse, /* Parsing context */
138657 ExprList *pList, /* The arguments to RETURNING */
138658 Table *pTab /* The table being updated */
138659 ){
138660 ExprList *pNew = 0;
138661 sqlite3 *db = pParse->db;
138662 int i;
138663 for(i=0; i<pList->nExpr; i++){
138664 Expr *pOldExpr = pList->a[i].pExpr;
138665 if( ALWAYS(pOldExpr!=0) && pOldExpr->op==TK_ASTERISK ){
138666 int jj;
138667 for(jj=0; jj<pTab->nCol; jj++){
138668 if( IsHiddenColumn(pTab->aCol+jj) ) continue;
138669 Expr *pNewExpr = sqlite3Expr(db, TK_ID, pTab->aCol[jj].zName);
138670 pNew = sqlite3ExprListAppend(pParse, pNew, pNewExpr);
138671 if( !db->mallocFailed ){
138672 struct ExprList_item *pItem = &pNew->a[pNew->nExpr-1];
138673 pItem->zEName = sqlite3DbStrDup(db, pTab->aCol[jj].zName);
138674 pItem->eEName = ENAME_NAME;
138675 }
138676 }
138677 }else{
138678 Expr *pNewExpr = sqlite3ExprDup(db, pOldExpr, 0);
138679 pNew = sqlite3ExprListAppend(pParse, pNew, pNewExpr);
138680 if( !db->mallocFailed && ALWAYS(pList->a[i].zEName!=0) ){
138681 struct ExprList_item *pItem = &pNew->a[pNew->nExpr-1];
138682 pItem->zEName = sqlite3DbStrDup(db, pList->a[i].zEName);
138683 pItem->eEName = pList->a[i].eEName;
138684 }
138685 }
138686 }
138687 return pNew;
138688 }
138689
138690 /*
138691 ** Generate VDBE code for the statements inside the body of a single
138692 ** trigger.
138693 */
@@ -138538,10 +138734,11 @@
138734 sqlite3TriggerStepSrc(pParse, pStep),
138735 sqlite3ExprListDup(db, pStep->pExprList, 0),
138736 sqlite3ExprDup(db, pStep->pWhere, 0),
138737 pParse->eOrconf, 0, 0, 0
138738 );
138739 sqlite3VdbeAddOp0(v, OP_ResetCount);
138740 break;
138741 }
138742 case TK_INSERT: {
138743 sqlite3Insert(pParse,
138744 sqlite3TriggerStepSrc(pParse, pStep),
@@ -138548,30 +138745,49 @@
138745 sqlite3SelectDup(db, pStep->pSelect, 0),
138746 sqlite3IdListDup(db, pStep->pIdList),
138747 pParse->eOrconf,
138748 sqlite3UpsertDup(db, pStep->pUpsert)
138749 );
138750 sqlite3VdbeAddOp0(v, OP_ResetCount);
138751 break;
138752 }
138753 case TK_DELETE: {
138754 sqlite3DeleteFrom(pParse,
138755 sqlite3TriggerStepSrc(pParse, pStep),
138756 sqlite3ExprDup(db, pStep->pWhere, 0), 0, 0
138757 );
138758 sqlite3VdbeAddOp0(v, OP_ResetCount);
138759 break;
138760 }
138761 case TK_SELECT: {
138762 SelectDest sDest;
138763 Select *pSelect = sqlite3SelectDup(db, pStep->pSelect, 0);
138764 sqlite3SelectDestInit(&sDest, SRT_Discard, 0);
138765 sqlite3Select(pParse, pSelect, &sDest);
138766 sqlite3SelectDelete(db, pSelect);
138767 break;
138768 }
138769 default: assert( pStep->op==TK_RETURNING ); {
138770 Select *pSelect = pStep->pSelect;
138771 ExprList *pList = pSelect->pEList;
138772 SelectDest sDest;
138773 Select *pNew;
138774 pSelect->pEList =
138775 sqlite3ExpandReturning(pParse, pList, pParse->pTriggerTab);
138776 sqlite3SelectDestInit(&sDest, SRT_Output, 0);
138777 pNew = sqlite3SelectDup(db, pSelect, 0);
138778 if( pNew ){
138779 sqlite3Select(pParse, pNew, &sDest);
138780 if( pNew->selFlags & (SF_Aggregate|SF_HasAgg|SF_WinRewrite) ){
138781 sqlite3ErrorMsg(pParse, "aggregates not allowed in RETURNING");
138782 }
138783 sqlite3SelectDelete(db, pNew);
138784 }
138785 sqlite3ExprListDelete(db, pSelect->pEList);
138786 pStep->pSelect->pEList = pList;
138787 break;
138788 }
138789 }
138790 }
138791
138792 return 0;
138793 }
@@ -138658,10 +138874,11 @@
138874 pSubParse->db = db;
138875 pSubParse->pTriggerTab = pTab;
138876 pSubParse->pToplevel = pTop;
138877 pSubParse->zAuthContext = pTrigger->zName;
138878 pSubParse->eTriggerOp = pTrigger->op;
138879 pSubParse->bReturning = pTrigger->bReturning;
138880 pSubParse->nQueryLoop = pParse->nQueryLoop;
138881 pSubParse->disableVtab = pParse->disableVtab;
138882
138883 v = sqlite3GetVdbe(pSubParse);
138884 if( v ){
@@ -138707,10 +138924,13 @@
138924
138925 transferParseError(pParse, pSubParse);
138926 if( db->mallocFailed==0 && pParse->nErr==0 ){
138927 pProgram->aOp = sqlite3VdbeTakeOpArray(v, &pProgram->nOp, &pTop->nMaxArg);
138928 }
138929 if( pTrigger->bReturning ){
138930 sqlite3VdbeColumnInfoXfer(sqlite3ParseToplevel(pParse)->pVdbe, v);
138931 }
138932 pProgram->nMem = pSubParse->nMem;
138933 pProgram->nCsr = pSubParse->nTab;
138934 pProgram->token = (void *)pTrigger;
138935 pPrg->aColmask[0] = pSubParse->oldmask;
138936 pPrg->aColmask[1] = pSubParse->newmask;
@@ -138861,16 +139081,24 @@
139081 assert( p->pSchema!=0 );
139082 assert( p->pTabSchema!=0 );
139083 assert( p->pSchema==p->pTabSchema
139084 || p->pSchema==pParse->db->aDb[1].pSchema );
139085
139086 /* Determine whether we should code this trigger. One of two choices:
139087 ** 1. The trigger is an exact match to the current DML statement
139088 ** 2. This is a RETURNING trigger for INSERT but we are currently
139089 ** doing the UPDATE part of an UPSERT.
139090 */
139091 if( (p->op==op || (p->bReturning && p->op==TK_INSERT && op==TK_UPDATE))
139092 && p->tr_tm==tr_tm
139093 && checkColumnOverlap(p->pColumns, pChanges)
139094 && (sqlite3IsToplevel(pParse) || !p->bReturning)
139095 ){
139096 u8 origOp = p->op;
139097 p->op = op;
139098 sqlite3CodeRowTriggerDirect(pParse, p, pTab, reg, orconf, ignoreJump);
139099 p->op = origOp;
139100 }
139101 }
139102 }
139103
139104 /*
@@ -139574,10 +139802,11 @@
139802 /* Not an UPSERT. Normal processing. Begin by
139803 ** initialize the count of updated rows */
139804 if( (db->flags&SQLITE_CountRows)!=0
139805 && !pParse->pTriggerTab
139806 && !pParse->nested
139807 && !pParse->bReturning
139808 && pUpsert==0
139809 ){
139810 regRowCount = ++pParse->nMem;
139811 sqlite3VdbeAddOp2(v, OP_Integer, 0, regRowCount);
139812 }
@@ -140037,11 +140266,11 @@
140266 /*
140267 ** Return the number of rows that were changed, if we are tracking
140268 ** that information.
140269 */
140270 if( regRowCount ){
140271 sqlite3VdbeAddOp2(v, OP_ChngCntRow, regRowCount, 1);
140272 sqlite3VdbeSetNumCols(v, 1);
140273 sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows updated", SQLITE_STATIC);
140274 }
140275
140276 update_cleanup:
@@ -152864,11 +153093,11 @@
153093 assert( pOp->opcode!=OP_Rowid || pOp->p1!=pLevel->iTabCur );
153094 assert( pOp->opcode!=OP_IfNullRow || pOp->p1!=pLevel->iTabCur );
153095 #endif
153096 pOp = sqlite3VdbeGetOp(v, k);
153097 pLastOp = pOp + (last - k);
153098 assert( pOp<pLastOp || (pParse->nErr>0 && pOp==pLastOp) );
153099 do{
153100 if( pOp->p1!=pLevel->iTabCur ){
153101 /* no-op */
153102 }else if( pOp->opcode==OP_Column
153103 #ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
@@ -156326,43 +156555,44 @@
156555 #define TK_ORDER 143
156556 #define TK_GROUP 144
156557 #define TK_HAVING 145
156558 #define TK_LIMIT 146
156559 #define TK_WHERE 147
156560 #define TK_RETURNING 148
156561 #define TK_INTO 149
156562 #define TK_NOTHING 150
156563 #define TK_FLOAT 151
156564 #define TK_BLOB 152
156565 #define TK_INTEGER 153
156566 #define TK_VARIABLE 154
156567 #define TK_CASE 155
156568 #define TK_WHEN 156
156569 #define TK_THEN 157
156570 #define TK_ELSE 158
156571 #define TK_INDEX 159
156572 #define TK_ALTER 160
156573 #define TK_ADD 161
156574 #define TK_WINDOW 162
156575 #define TK_OVER 163
156576 #define TK_FILTER 164
156577 #define TK_COLUMN 165
156578 #define TK_AGG_FUNCTION 166
156579 #define TK_AGG_COLUMN 167
156580 #define TK_TRUEFALSE 168
156581 #define TK_ISNOT 169
156582 #define TK_FUNCTION 170
156583 #define TK_UMINUS 171
156584 #define TK_UPLUS 172
156585 #define TK_TRUTH 173
156586 #define TK_REGISTER 174
156587 #define TK_VECTOR 175
156588 #define TK_SELECT_COLUMN 176
156589 #define TK_IF_NULL_ROW 177
156590 #define TK_ASTERISK 178
156591 #define TK_SPAN 179
156592 #define TK_SPACE 180
156593 #define TK_ILLEGAL 181
156594 #endif
156595 /**************** End token definitions ***************************************/
156596
156597 /* The next sections is a series of control #defines.
156598 ** various aspects of the generated parser.
@@ -156418,32 +156648,32 @@
156648 #ifndef INTERFACE
156649 # define INTERFACE 1
156650 #endif
156651 /************* Begin control #defines *****************************************/
156652 #define YYCODETYPE unsigned short int
156653 #define YYNOCODE 313
156654 #define YYACTIONTYPE unsigned short int
156655 #define YYWILDCARD 100
156656 #define sqlite3ParserTOKENTYPE Token
156657 typedef union {
156658 int yyinit;
156659 sqlite3ParserTOKENTYPE yy0;
156660 Upsert* yy40;
156661 TriggerStep* yy51;
156662 With* yy105;
156663 Select* yy293;
156664 struct TrigEvent yy298;
156665 struct FrameBound yy341;
156666 ExprList* yy350;
156667 Expr* yy354;
156668 int yy412;
156669 SrcList* yy457;
156670 struct {int value; int mask;} yy463;
156671 IdList* yy498;
156672 Window* yy503;
156673 const char* yy504;
156674 u8 yy624;
156675 } YYMINORTYPE;
156676 #ifndef YYSTACKDEPTH
156677 #define YYSTACKDEPTH 100
156678 #endif
156679 #define sqlite3ParserARG_SDECL
@@ -156455,22 +156685,22 @@
156685 #define sqlite3ParserCTX_PDECL ,Parse *pParse
156686 #define sqlite3ParserCTX_PARAM ,pParse
156687 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
156688 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
156689 #define YYFALLBACK 1
156690 #define YYNSTATE 571
156691 #define YYNRULE 393
156692 #define YYNRULE_WITH_ACTION 332
156693 #define YYNTOKEN 182
156694 #define YY_MAX_SHIFT 570
156695 #define YY_MIN_SHIFTREDUCE 822
156696 #define YY_MAX_SHIFTREDUCE 1214
156697 #define YY_ERROR_ACTION 1215
156698 #define YY_ACCEPT_ACTION 1216
156699 #define YY_NO_ACTION 1217
156700 #define YY_MIN_REDUCE 1218
156701 #define YY_MAX_REDUCE 1610
156702 /************* End control #defines *******************************************/
156703 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
156704
156705 /* Define the yytestcase() macro to be a no-op if is not already defined
156706 ** otherwise.
@@ -156533,590 +156763,605 @@
156763 ** yy_reduce_ofst[] For each state, the offset into yy_action for
156764 ** shifting non-terminals after a reduce.
156765 ** yy_default[] Default action for each state.
156766 **
156767 *********** Begin parsing tables **********************************************/
156768 #define YY_ACTTAB_COUNT (2017)
156769 static const YYACTIONTYPE yy_action[] = {
156770 /* 0 */ 564, 1249, 564, 197, 1571, 564, 1252, 564, 116, 113,
156771 /* 10 */ 218, 564, 1259, 564, 486, 393, 116, 113, 218, 405,
156772 /* 20 */ 357, 357, 42, 42, 42, 42, 469, 42, 42, 72,
156773 /* 30 */ 72, 956, 1251, 72, 72, 72, 72, 1496, 1576, 957,
156774 /* 40 */ 9, 886, 251, 123, 124, 114, 1192, 1192, 1032, 1035,
156775 /* 50 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 445, 405,
156776 /* 60 */ 471, 1551, 570, 2, 1220, 1577, 546, 145, 147, 305,
156777 /* 70 */ 546, 138, 546, 1292, 1292, 522, 564, 1189, 1300, 545,
156778 /* 80 */ 521, 511, 167, 123, 124, 114, 1192, 1192, 1032, 1035,
156779 /* 90 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 72, 72,
156780 /* 100 */ 281, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156781 /* 110 */ 117, 438, 273, 273, 273, 273, 443, 1168, 1532, 371,
156782 /* 120 */ 1534, 1168, 370, 1532, 535, 561, 1140, 561, 1140, 405,
156783 /* 130 */ 1075, 248, 215, 1189, 174, 527, 100, 304, 555, 228,
156784 /* 140 */ 438, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156785 /* 150 */ 117, 438, 448, 123, 124, 114, 1192, 1192, 1032, 1035,
156786 /* 160 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 541, 448,
156787 /* 170 */ 447, 442, 1168, 1169, 1170, 395, 1168, 1169, 1170, 125,
156788 /* 180 */ 120, 120, 120, 120, 119, 119, 118, 118, 118, 117,
156789 /* 190 */ 438, 119, 119, 118, 118, 118, 117, 438, 268, 405,
156790 /* 200 */ 1548, 122, 122, 122, 122, 115, 379, 84, 375, 273,
156791 /* 210 */ 273, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156792 /* 220 */ 117, 438, 561, 123, 124, 114, 1192, 1192, 1032, 1035,
156793 /* 230 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 405, 467,
156794 /* 240 */ 1118, 1604, 448, 82, 1604, 460, 329, 81, 120, 120,
156795 /* 250 */ 120, 120, 119, 119, 118, 118, 118, 117, 438, 116,
156796 /* 260 */ 113, 218, 123, 124, 114, 1192, 1192, 1032, 1035, 1025,
156797 /* 270 */ 1025, 121, 121, 122, 122, 122, 122, 564, 542, 1519,
156798 /* 280 */ 877, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156799 /* 290 */ 117, 438, 118, 118, 118, 117, 438, 12, 197, 71,
156800 /* 300 */ 71, 1135, 122, 122, 122, 122, 384, 405, 428, 1168,
156801 /* 310 */ 398, 503, 531, 347, 1135, 166, 312, 1135, 1116, 878,
156802 /* 320 */ 120, 120, 120, 120, 119, 119, 118, 118, 118, 117,
156803 /* 330 */ 438, 123, 124, 114, 1192, 1192, 1032, 1035, 1025, 1025,
156804 /* 340 */ 121, 121, 122, 122, 122, 122, 1168, 267, 267, 120,
156805 /* 350 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156806 /* 360 */ 561, 378, 1012, 1135, 1168, 1169, 1170, 240, 530, 563,
156807 /* 370 */ 499, 496, 495, 426, 538, 476, 1135, 1527, 1003, 1135,
156808 /* 380 */ 494, 6, 1002, 1392, 502, 1022, 1022, 1033, 1036, 120,
156809 /* 390 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156810 /* 400 */ 425, 1168, 1169, 1170, 1096, 1460, 259, 276, 355, 505,
156811 /* 410 */ 350, 504, 245, 405, 1002, 1002, 1004, 343, 346, 1097,
156812 /* 420 */ 240, 460, 329, 499, 496, 495, 369, 510, 1526, 357,
156813 /* 430 */ 529, 358, 6, 494, 1098, 450, 203, 123, 124, 114,
156814 /* 440 */ 1192, 1192, 1032, 1035, 1025, 1025, 121, 121, 122, 122,
156815 /* 450 */ 122, 122, 520, 419, 1168, 897, 405, 569, 1026, 1220,
156816 /* 460 */ 500, 319, 1270, 992, 305, 898, 138, 188, 1287, 423,
156817 /* 470 */ 1266, 167, 486, 1300, 16, 16, 144, 857, 1287, 1269,
156818 /* 480 */ 123, 124, 114, 1192, 1192, 1032, 1035, 1025, 1025, 121,
156819 /* 490 */ 121, 122, 122, 122, 122, 120, 120, 120, 120, 119,
156820 /* 500 */ 119, 118, 118, 118, 117, 438, 526, 273, 273, 1168,
156821 /* 510 */ 1169, 1170, 1392, 564, 166, 327, 1495, 1012, 414, 372,
156822 /* 520 */ 561, 486, 316, 1168, 318, 405, 304, 555, 373, 861,
156823 /* 530 */ 182, 216, 857, 1003, 228, 72, 72, 1002, 120, 120,
156824 /* 540 */ 120, 120, 119, 119, 118, 118, 118, 117, 438, 123,
156825 /* 550 */ 124, 114, 1192, 1192, 1032, 1035, 1025, 1025, 121, 121,
156826 /* 560 */ 122, 122, 122, 122, 405, 1459, 442, 1168, 854, 1002,
156827 /* 570 */ 1002, 1004, 300, 1524, 116, 113, 218, 6, 1168, 1169,
156828 /* 580 */ 1170, 183, 420, 116, 113, 218, 1168, 314, 123, 124,
156829 /* 590 */ 114, 1192, 1192, 1032, 1035, 1025, 1025, 121, 121, 122,
156830 /* 600 */ 122, 122, 122, 1465, 317, 943, 469, 120, 120, 120,
156831 /* 610 */ 120, 119, 119, 118, 118, 118, 117, 438, 1168, 211,
156832 /* 620 */ 1465, 1467, 1168, 1169, 1170, 917, 539, 1526, 475, 1168,
156833 /* 630 */ 916, 6, 1168, 405, 922, 435, 434, 1153, 213, 509,
156834 /* 640 */ 32, 1168, 1169, 1170, 279, 5, 120, 120, 120, 120,
156835 /* 650 */ 119, 119, 118, 118, 118, 117, 438, 123, 124, 114,
156836 /* 660 */ 1192, 1192, 1032, 1035, 1025, 1025, 121, 121, 122, 122,
156837 /* 670 */ 122, 122, 405, 1168, 1169, 1170, 1013, 1168, 273, 273,
156838 /* 680 */ 286, 1199, 1168, 1199, 1168, 1169, 1170, 1168, 1169, 1170,
156839 /* 690 */ 564, 561, 167, 1465, 117, 438, 123, 124, 114, 1192,
156840 /* 700 */ 1192, 1032, 1035, 1025, 1025, 121, 121, 122, 122, 122,
156841 /* 710 */ 122, 942, 13, 13, 127, 120, 120, 120, 120, 119,
156842 /* 720 */ 119, 118, 118, 118, 117, 438, 285, 417, 564, 449,
156843 /* 730 */ 564, 1392, 1168, 1169, 1170, 1290, 1290, 1168, 1169, 1170,
156844 /* 740 */ 97, 405, 992, 1606, 391, 997, 486, 304, 555, 17,
156845 /* 750 */ 72, 72, 72, 72, 120, 120, 120, 120, 119, 119,
156846 /* 760 */ 118, 118, 118, 117, 438, 123, 124, 114, 1192, 1192,
156847 /* 770 */ 1032, 1035, 1025, 1025, 121, 121, 122, 122, 122, 122,
156848 /* 780 */ 405, 1216, 1, 1, 570, 2, 1220, 301, 415, 433,
156849 /* 790 */ 1299, 305, 839, 138, 327, 455, 315, 402, 401, 564,
156850 /* 800 */ 1300, 421, 3, 290, 123, 124, 114, 1192, 1192, 1032,
156851 /* 810 */ 1035, 1025, 1025, 121, 121, 122, 122, 122, 122, 377,
156852 /* 820 */ 564, 13, 13, 120, 120, 120, 120, 119, 119, 118,
156853 /* 830 */ 118, 118, 117, 438, 273, 273, 422, 273, 273, 1168,
156854 /* 840 */ 1304, 357, 13, 13, 1118, 1605, 12, 561, 1605, 405,
156855 /* 850 */ 561, 458, 561, 1168, 558, 558, 558, 424, 436, 436,
156856 /* 860 */ 436, 228, 120, 120, 120, 120, 119, 119, 118, 118,
156857 /* 870 */ 118, 117, 438, 123, 124, 114, 1192, 1192, 1032, 1035,
156858 /* 880 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 146, 197,
156859 /* 890 */ 414, 564, 1055, 442, 1168, 1169, 1170, 414, 469, 435,
156860 /* 900 */ 434, 404, 562, 247, 911, 911, 564, 1196, 1168, 1169,
156861 /* 910 */ 1170, 486, 1198, 72, 72, 491, 1507, 547, 102, 194,
156862 /* 920 */ 1197, 564, 1116, 294, 459, 294, 1298, 251, 72, 72,
156863 /* 930 */ 1452, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156864 /* 940 */ 117, 438, 244, 56, 56, 1199, 564, 1199, 564, 1238,
156865 /* 950 */ 437, 273, 273, 564, 514, 1295, 564, 512, 564, 282,
156866 /* 960 */ 273, 273, 1189, 517, 561, 546, 284, 341, 52, 52,
156867 /* 970 */ 13, 13, 289, 561, 548, 13, 13, 564, 13, 13,
156868 /* 980 */ 13, 13, 549, 273, 273, 293, 1407, 105, 273, 273,
156869 /* 990 */ 191, 273, 273, 192, 444, 543, 561, 273, 273, 57,
156870 /* 1000 */ 57, 561, 274, 274, 561, 513, 1504, 405, 270, 410,
156871 /* 1010 */ 561, 941, 198, 304, 555, 561, 273, 273, 1189, 106,
156872 /* 1020 */ 409, 104, 356, 1545, 307, 346, 564, 405, 336, 561,
156873 /* 1030 */ 339, 123, 124, 114, 1192, 1192, 1032, 1035, 1025, 1025,
156874 /* 1040 */ 121, 121, 122, 122, 122, 122, 469, 405, 15, 15,
156875 /* 1050 */ 475, 123, 124, 114, 1192, 1192, 1032, 1035, 1025, 1025,
156876 /* 1060 */ 121, 121, 122, 122, 122, 122, 1080, 1080, 483, 358,
156877 /* 1070 */ 475, 123, 112, 114, 1192, 1192, 1032, 1035, 1025, 1025,
156878 /* 1080 */ 121, 121, 122, 122, 122, 122, 390, 1212, 308, 120,
156879 /* 1090 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156880 /* 1100 */ 99, 217, 480, 1172, 1406, 564, 477, 430, 541, 120,
156881 /* 1110 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156882 /* 1120 */ 291, 1077, 564, 1392, 564, 1077, 941, 44, 44, 120,
156883 /* 1130 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 438,
156884 /* 1140 */ 356, 1545, 537, 1096, 58, 58, 45, 45, 326, 405,
156885 /* 1150 */ 1135, 827, 828, 829, 243, 242, 241, 481, 1097, 1172,
156886 /* 1160 */ 1392, 536, 311, 1135, 1213, 486, 1135, 564, 292, 405,
156887 /* 1170 */ 1146, 1241, 411, 1098, 124, 114, 1192, 1192, 1032, 1035,
156888 /* 1180 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 564, 59,
156889 /* 1190 */ 59, 564, 507, 482, 552, 114, 1192, 1192, 1032, 1035,
156890 /* 1200 */ 1025, 1025, 121, 121, 122, 122, 122, 122, 1525, 334,
156891 /* 1210 */ 60, 60, 6, 61, 61, 390, 1117, 1523, 917, 1520,
156892 /* 1220 */ 1146, 6, 564, 916, 564, 109, 556, 564, 4, 941,
156893 /* 1230 */ 431, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156894 /* 1240 */ 117, 438, 559, 864, 62, 62, 63, 63, 564, 46,
156895 /* 1250 */ 46, 120, 120, 120, 120, 119, 119, 118, 118, 118,
156896 /* 1260 */ 117, 438, 564, 1135, 1522, 439, 1323, 564, 6, 564,
156897 /* 1270 */ 47, 47, 564, 557, 411, 1268, 1135, 553, 142, 1135,
156898 /* 1280 */ 564, 465, 304, 555, 48, 48, 564, 167, 544, 50,
156899 /* 1290 */ 50, 51, 51, 1213, 64, 64, 956, 109, 556, 864,
156900 /* 1300 */ 4, 564, 65, 65, 957, 1012, 564, 140, 66, 66,
156901 /* 1310 */ 564, 107, 107, 564, 559, 849, 205, 564, 108, 217,
156902 /* 1320 */ 439, 566, 565, 14, 14, 1002, 8, 523, 67, 67,
156903 /* 1330 */ 564, 452, 129, 129, 221, 68, 68, 439, 453, 53,
156904 /* 1340 */ 53, 403, 304, 555, 941, 412, 168, 211, 403, 553,
156905 /* 1350 */ 111, 1188, 69, 69, 99, 462, 244, 1002, 1002, 1004,
156906 /* 1360 */ 1005, 27, 466, 533, 564, 403, 564, 1336, 532, 272,
156907 /* 1370 */ 215, 849, 403, 564, 85, 202, 564, 1012, 564, 1207,
156908 /* 1380 */ 564, 303, 564, 107, 107, 564, 70, 70, 54, 54,
156909 /* 1390 */ 108, 403, 439, 566, 565, 153, 153, 1002, 154, 154,
156910 /* 1400 */ 77, 77, 55, 55, 73, 73, 1113, 130, 130, 392,
156911 /* 1410 */ 109, 556, 143, 4, 38, 564, 473, 299, 564, 461,
156912 /* 1420 */ 225, 1335, 524, 410, 30, 876, 875, 559, 454, 1002,
156913 /* 1430 */ 1002, 1004, 1005, 27, 1550, 1157, 441, 74, 74, 277,
156914 /* 1440 */ 131, 131, 324, 1510, 388, 388, 387, 262, 385, 564,
156915 /* 1450 */ 439, 836, 868, 320, 463, 31, 564, 883, 884, 354,
156916 /* 1460 */ 325, 206, 553, 99, 222, 206, 310, 544, 1539, 353,
156917 /* 1470 */ 994, 132, 132, 250, 309, 1484, 533, 287, 128, 128,
156918 /* 1480 */ 1062, 534, 109, 556, 468, 4, 564, 250, 1483, 470,
156919 /* 1490 */ 1012, 564, 250, 275, 564, 330, 107, 107, 99, 559,
156920 /* 1500 */ 1074, 564, 1074, 108, 224, 439, 566, 565, 152, 152,
156921 /* 1510 */ 1002, 474, 158, 151, 151, 160, 136, 136, 492, 959,
156922 /* 1520 */ 960, 246, 439, 135, 135, 344, 478, 564, 99, 1058,
156923 /* 1530 */ 487, 223, 246, 564, 553, 227, 1062, 950, 914, 1006,
156924 /* 1540 */ 250, 111, 1002, 1002, 1004, 1005, 27, 331, 533, 133,
156925 /* 1550 */ 133, 564, 1073, 532, 1073, 134, 134, 847, 915, 1332,
156926 /* 1560 */ 141, 111, 1012, 335, 338, 406, 340, 342, 107, 107,
156927 /* 1570 */ 304, 555, 1283, 76, 76, 108, 564, 439, 566, 565,
156928 /* 1580 */ 1157, 441, 1002, 564, 277, 109, 556, 551, 4, 388,
156929 /* 1590 */ 388, 387, 262, 385, 446, 1006, 836, 1267, 78, 78,
156930 /* 1600 */ 349, 564, 559, 359, 564, 75, 75, 360, 1330, 222,
156931 /* 1610 */ 1564, 310, 1344, 1391, 1002, 1002, 1004, 1005, 27, 309,
156932 /* 1620 */ 1319, 550, 1397, 43, 43, 439, 49, 49, 1248, 1240,
156933 /* 1630 */ 1229, 1228, 1230, 1558, 265, 1316, 200, 553, 362, 364,
156934 /* 1640 */ 366, 389, 11, 208, 1373, 220, 1378, 280, 1366, 224,
156935 /* 1650 */ 451, 322, 472, 328, 283, 1561, 1266, 158, 323, 1383,
156936 /* 1660 */ 160, 1382, 288, 368, 497, 1012, 352, 396, 382, 212,
156937 /* 1670 */ 1456, 107, 107, 921, 1455, 1207, 223, 254, 108, 1503,
156938 /* 1680 */ 439, 566, 565, 1501, 1204, 1002, 413, 204, 207, 84,
156939 /* 1690 */ 195, 109, 556, 1379, 4, 554, 180, 196, 170, 80,
156940 /* 1700 */ 164, 456, 175, 1461, 172, 83, 176, 457, 559, 177,
156941 /* 1710 */ 406, 178, 35, 490, 230, 304, 555, 1002, 1002, 1004,
156942 /* 1720 */ 1005, 27, 97, 394, 1385, 1384, 464, 1387, 184, 397,
156943 /* 1730 */ 36, 439, 1450, 479, 90, 485, 189, 234, 236, 446,
156944 /* 1740 */ 1472, 266, 488, 553, 337, 333, 237, 399, 1231, 238,
156945 /* 1750 */ 506, 1286, 427, 92, 1277, 868, 1276, 1285, 213, 101,
156946 /* 1760 */ 556, 429, 4, 1284, 1255, 1575, 1574, 525, 1256, 400,
156947 /* 1770 */ 351, 1012, 1254, 1573, 1544, 96, 559, 107, 107, 516,
156948 /* 1780 */ 519, 297, 298, 1327, 108, 361, 439, 566, 565, 1328,
156949 /* 1790 */ 252, 1002, 253, 432, 1530, 126, 1529, 544, 10, 439,
156950 /* 1800 */ 1436, 376, 528, 103, 98, 260, 1237, 34, 567, 1163,
156951 /* 1810 */ 374, 553, 1326, 363, 199, 1309, 365, 1308, 1325, 380,
156952 /* 1820 */ 367, 261, 381, 1002, 1002, 1004, 1005, 27, 1351, 1350,
156953 /* 1830 */ 263, 264, 568, 1226, 1221, 155, 1488, 1489, 1487, 1012,
156954 /* 1840 */ 139, 156, 1486, 79, 295, 107, 107, 302, 823, 440,
156955 /* 1850 */ 209, 210, 108, 201, 439, 566, 565, 306, 157, 1002,
156956 /* 1860 */ 219, 277, 278, 137, 1072, 1070, 388, 388, 387, 262,
156957 /* 1870 */ 385, 313, 407, 836, 171, 159, 408, 169, 1188, 226,
156958 /* 1880 */ 900, 173, 321, 1086, 229, 179, 222, 161, 310, 162,
156959 /* 1890 */ 416, 1002, 1002, 1004, 1005, 27, 309, 181, 418, 163,
156960 /* 1900 */ 1089, 86, 87, 88, 89, 231, 232, 1085, 148, 18,
156961 /* 1910 */ 233, 332, 250, 1201, 484, 186, 235, 37, 838, 489,
156962 /* 1920 */ 353, 1078, 185, 239, 187, 493, 224, 91, 866, 19,
156963 /* 1930 */ 498, 345, 20, 348, 158, 501, 93, 160, 165, 879,
156964 /* 1940 */ 149, 296, 94, 508, 95, 1151, 150, 1038, 1121, 39,
156965 /* 1950 */ 515, 1122, 40, 223, 214, 518, 269, 271, 190, 944,
156966 /* 1960 */ 1137, 111, 1139, 249, 1141, 1145, 21, 1125, 1144, 33,
156967 /* 1970 */ 540, 949, 22, 23, 24, 25, 193, 99, 1053, 26,
156968 /* 1980 */ 1039, 7, 1037, 1041, 1095, 1042, 1094, 406, 255, 256,
156969 /* 1990 */ 28, 41, 304, 555, 1007, 848, 560, 110, 29, 386,
156970 /* 2000 */ 910, 257, 383, 258, 1566, 1159, 1158, 1565, 1217, 1217,
156971 /* 2010 */ 1217, 1217, 1217, 1217, 1217, 1217, 446,
156972 };
156973 static const YYCODETYPE yy_lookahead[] = {
156974 /* 0 */ 190, 212, 190, 190, 211, 190, 212, 190, 270, 271,
156975 /* 10 */ 272, 190, 219, 190, 190, 202, 270, 271, 272, 19,
156976 /* 20 */ 190, 190, 212, 213, 212, 213, 190, 212, 213, 212,
156977 /* 30 */ 213, 31, 212, 212, 213, 212, 213, 291, 23, 39,
156978 /* 40 */ 22, 26, 24, 43, 44, 45, 46, 47, 48, 49,
156979 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 234, 19,
156980 /* 60 */ 190, 184, 185, 186, 187, 226, 249, 237, 237, 192,
156981 /* 70 */ 249, 194, 249, 231, 232, 258, 190, 59, 201, 258,
156982 /* 80 */ 201, 258, 81, 43, 44, 45, 46, 47, 48, 49,
156983 /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 212, 213,
156984 /* 100 */ 264, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156985 /* 110 */ 110, 111, 235, 236, 235, 236, 292, 59, 308, 309,
156986 /* 120 */ 308, 59, 310, 308, 309, 248, 86, 248, 88, 19,
156987 /* 130 */ 11, 252, 253, 115, 72, 249, 26, 136, 137, 262,
156988 /* 140 */ 111, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156989 /* 150 */ 110, 111, 190, 43, 44, 45, 46, 47, 48, 49,
156990 /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 190, 207,
156991 /* 170 */ 208, 294, 114, 115, 116, 201, 114, 115, 116, 69,
156992 /* 180 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
156993 /* 190 */ 111, 105, 106, 107, 108, 109, 110, 111, 209, 19,
156994 /* 200 */ 190, 54, 55, 56, 57, 58, 245, 149, 247, 235,
156995 /* 210 */ 236, 101, 102, 103, 104, 105, 106, 107, 108, 109,
156996 /* 220 */ 110, 111, 248, 43, 44, 45, 46, 47, 48, 49,
156997 /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 265,
156998 /* 240 */ 22, 23, 280, 24, 26, 126, 127, 67, 101, 102,
156999 /* 250 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 270,
157000 /* 260 */ 271, 272, 43, 44, 45, 46, 47, 48, 49, 50,
157001 /* 270 */ 51, 52, 53, 54, 55, 56, 57, 190, 300, 301,
157002 /* 280 */ 35, 101, 102, 103, 104, 105, 106, 107, 108, 109,
157003 /* 290 */ 110, 111, 107, 108, 109, 110, 111, 209, 190, 212,
157004 /* 300 */ 213, 76, 54, 55, 56, 57, 198, 19, 19, 59,
157005 /* 310 */ 202, 66, 87, 24, 89, 190, 190, 92, 100, 74,
157006 /* 320 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
157007 /* 330 */ 111, 43, 44, 45, 46, 47, 48, 49, 50, 51,
157008 /* 340 */ 52, 53, 54, 55, 56, 57, 59, 235, 236, 101,
157009 /* 350 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
157010 /* 360 */ 248, 274, 99, 76, 114, 115, 116, 117, 143, 190,
157011 /* 370 */ 120, 121, 122, 128, 87, 287, 89, 303, 115, 92,
157012 /* 380 */ 130, 307, 119, 190, 95, 46, 47, 48, 49, 101,
157013 /* 390 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
157014 /* 400 */ 111, 114, 115, 116, 12, 279, 117, 118, 119, 120,
157015 /* 410 */ 121, 122, 123, 19, 151, 152, 153, 23, 129, 27,
157016 /* 420 */ 117, 126, 127, 120, 121, 122, 190, 302, 303, 190,
157017 /* 430 */ 143, 190, 307, 130, 42, 265, 148, 43, 44, 45,
157018 /* 440 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
157019 /* 450 */ 56, 57, 190, 260, 59, 63, 19, 185, 119, 187,
157020 /* 460 */ 23, 16, 222, 73, 192, 73, 194, 72, 219, 228,
157021 /* 470 */ 221, 81, 190, 201, 212, 213, 237, 59, 229, 222,
157022 /* 480 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
157023 /* 490 */ 53, 54, 55, 56, 57, 101, 102, 103, 104, 105,
157024 /* 500 */ 106, 107, 108, 109, 110, 111, 190, 235, 236, 114,
157025 /* 510 */ 115, 116, 190, 190, 190, 125, 234, 99, 190, 215,
157026 /* 520 */ 248, 190, 77, 59, 79, 19, 136, 137, 215, 23,
157027 /* 530 */ 22, 190, 114, 115, 262, 212, 213, 119, 101, 102,
157028 /* 540 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 43,
157029 /* 550 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
157030 /* 560 */ 54, 55, 56, 57, 19, 234, 294, 59, 23, 151,
157031 /* 570 */ 152, 153, 249, 303, 270, 271, 272, 307, 114, 115,
157032 /* 580 */ 116, 22, 260, 270, 271, 272, 59, 259, 43, 44,
157033 /* 590 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
157034 /* 600 */ 55, 56, 57, 190, 159, 141, 190, 101, 102, 103,
157035 /* 610 */ 104, 105, 106, 107, 108, 109, 110, 111, 59, 26,
157036 /* 620 */ 207, 208, 114, 115, 116, 133, 302, 303, 190, 59,
157037 /* 630 */ 138, 307, 59, 19, 107, 105, 106, 23, 163, 164,
157038 /* 640 */ 22, 114, 115, 116, 201, 22, 101, 102, 103, 104,
157039 /* 650 */ 105, 106, 107, 108, 109, 110, 111, 43, 44, 45,
157040 /* 660 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
157041 /* 670 */ 56, 57, 19, 114, 115, 116, 23, 59, 235, 236,
157042 /* 680 */ 264, 151, 59, 153, 114, 115, 116, 114, 115, 116,
157043 /* 690 */ 190, 248, 81, 280, 110, 111, 43, 44, 45, 46,
157044 /* 700 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
157045 /* 710 */ 57, 141, 212, 213, 22, 101, 102, 103, 104, 105,
157046 /* 720 */ 106, 107, 108, 109, 110, 111, 288, 227, 190, 118,
157047 /* 730 */ 190, 190, 114, 115, 116, 231, 232, 114, 115, 116,
157048 /* 740 */ 147, 19, 73, 297, 298, 23, 190, 136, 137, 22,
157049 /* 750 */ 212, 213, 212, 213, 101, 102, 103, 104, 105, 106,
157050 /* 760 */ 107, 108, 109, 110, 111, 43, 44, 45, 46, 47,
157051 /* 770 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
157052 /* 780 */ 19, 182, 183, 184, 185, 186, 187, 249, 61, 249,
157053 /* 790 */ 234, 192, 21, 194, 125, 126, 127, 105, 106, 190,
157054 /* 800 */ 201, 260, 22, 201, 43, 44, 45, 46, 47, 48,
157055 /* 810 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 190,
157056 /* 820 */ 190, 212, 213, 101, 102, 103, 104, 105, 106, 107,
157057 /* 830 */ 108, 109, 110, 111, 235, 236, 227, 235, 236, 59,
157058 /* 840 */ 236, 190, 212, 213, 22, 23, 209, 248, 26, 19,
157059 /* 850 */ 248, 80, 248, 59, 206, 207, 208, 227, 206, 207,
157060 /* 860 */ 208, 262, 101, 102, 103, 104, 105, 106, 107, 108,
157061 /* 870 */ 109, 110, 111, 43, 44, 45, 46, 47, 48, 49,
157062 /* 880 */ 50, 51, 52, 53, 54, 55, 56, 57, 237, 190,
157063 /* 890 */ 190, 190, 121, 294, 114, 115, 116, 190, 190, 105,
157064 /* 900 */ 106, 202, 132, 26, 134, 135, 190, 113, 114, 115,
157065 /* 910 */ 116, 190, 118, 212, 213, 19, 190, 201, 157, 282,
157066 /* 920 */ 126, 190, 100, 224, 287, 226, 201, 24, 212, 213,
157067 /* 930 */ 159, 101, 102, 103, 104, 105, 106, 107, 108, 109,
157068 /* 940 */ 110, 111, 46, 212, 213, 151, 190, 153, 190, 201,
157069 /* 950 */ 249, 235, 236, 190, 201, 234, 190, 201, 190, 259,
157070 /* 960 */ 235, 236, 59, 201, 248, 249, 259, 16, 212, 213,
157071 /* 970 */ 212, 213, 264, 248, 258, 212, 213, 190, 212, 213,
157072 /* 980 */ 212, 213, 201, 235, 236, 227, 269, 157, 235, 236,
157073 /* 990 */ 227, 235, 236, 227, 190, 227, 248, 235, 236, 212,
157074 /* 1000 */ 213, 248, 235, 236, 248, 249, 190, 19, 23, 113,
157075 /* 1010 */ 248, 26, 24, 136, 137, 248, 235, 236, 115, 156,
157076 /* 1020 */ 195, 158, 305, 306, 190, 129, 190, 19, 77, 248,
157077 /* 1030 */ 79, 43, 44, 45, 46, 47, 48, 49, 50, 51,
157078 /* 1040 */ 52, 53, 54, 55, 56, 57, 190, 19, 212, 213,
157079 /* 1050 */ 190, 43, 44, 45, 46, 47, 48, 49, 50, 51,
157080 /* 1060 */ 52, 53, 54, 55, 56, 57, 125, 126, 127, 190,
157081 /* 1070 */ 190, 43, 44, 45, 46, 47, 48, 49, 50, 51,
157082 /* 1080 */ 52, 53, 54, 55, 56, 57, 22, 23, 190, 101,
157083 /* 1090 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
157084 /* 1100 */ 26, 116, 277, 59, 269, 190, 281, 228, 190, 101,
157085 /* 1110 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
157086 /* 1120 */ 264, 29, 190, 190, 190, 33, 141, 212, 213, 101,
157087 /* 1130 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
157088 /* 1140 */ 305, 306, 66, 12, 212, 213, 212, 213, 288, 19,
157089 /* 1150 */ 76, 7, 8, 9, 125, 126, 127, 65, 27, 115,
157090 /* 1160 */ 190, 85, 190, 89, 100, 190, 92, 190, 288, 19,
157091 /* 1170 */ 94, 204, 205, 42, 44, 45, 46, 47, 48, 49,
157092 /* 1180 */ 50, 51, 52, 53, 54, 55, 56, 57, 190, 212,
157093 /* 1190 */ 213, 190, 107, 260, 63, 45, 46, 47, 48, 49,
157094 /* 1200 */ 50, 51, 52, 53, 54, 55, 56, 57, 303, 234,
157095 /* 1210 */ 212, 213, 307, 212, 213, 22, 23, 303, 133, 301,
157096 /* 1220 */ 144, 307, 190, 138, 190, 19, 20, 190, 22, 26,
157097 /* 1230 */ 260, 101, 102, 103, 104, 105, 106, 107, 108, 109,
157098 /* 1240 */ 110, 111, 36, 59, 212, 213, 212, 213, 190, 212,
157099 /* 1250 */ 213, 101, 102, 103, 104, 105, 106, 107, 108, 109,
157100 /* 1260 */ 110, 111, 190, 76, 303, 59, 254, 190, 307, 190,
157101 /* 1270 */ 212, 213, 190, 204, 205, 222, 89, 71, 22, 92,
157102 /* 1280 */ 190, 113, 136, 137, 212, 213, 190, 81, 143, 212,
157103 /* 1290 */ 213, 212, 213, 100, 212, 213, 31, 19, 20, 115,
157104 /* 1300 */ 22, 190, 212, 213, 39, 99, 190, 162, 212, 213,
157105 /* 1310 */ 190, 105, 106, 190, 36, 59, 148, 190, 112, 116,
157106 /* 1320 */ 114, 115, 116, 212, 213, 119, 48, 19, 212, 213,
157107 /* 1330 */ 190, 240, 212, 213, 15, 212, 213, 59, 240, 212,
157108 /* 1340 */ 213, 250, 136, 137, 141, 295, 296, 26, 250, 71,
157109 /* 1350 */ 26, 26, 212, 213, 26, 240, 46, 151, 152, 153,
157110 /* 1360 */ 154, 155, 240, 85, 190, 250, 190, 190, 90, 252,
157111 /* 1370 */ 253, 115, 250, 190, 147, 148, 190, 99, 190, 60,
157112 /* 1380 */ 190, 240, 190, 105, 106, 190, 212, 213, 212, 213,
157113 /* 1390 */ 112, 250, 114, 115, 116, 212, 213, 119, 212, 213,
157114 /* 1400 */ 212, 213, 212, 213, 212, 213, 23, 212, 213, 26,
157115 /* 1410 */ 19, 20, 22, 22, 24, 190, 19, 251, 190, 127,
157116 /* 1420 */ 24, 190, 114, 113, 22, 118, 119, 36, 190, 151,
157117 /* 1430 */ 152, 153, 154, 155, 0, 1, 2, 212, 213, 5,
157118 /* 1440 */ 212, 213, 150, 190, 10, 11, 12, 13, 14, 190,
157119 /* 1450 */ 59, 17, 124, 190, 127, 53, 190, 7, 8, 119,
157120 /* 1460 */ 23, 140, 71, 26, 30, 140, 32, 143, 312, 129,
157121 /* 1470 */ 23, 212, 213, 26, 40, 190, 85, 150, 212, 213,
157122 /* 1480 */ 59, 90, 19, 20, 23, 22, 190, 26, 190, 23,
157123 /* 1490 */ 99, 190, 26, 22, 190, 23, 105, 106, 26, 36,
157124 /* 1500 */ 151, 190, 153, 112, 70, 114, 115, 116, 212, 213,
157125 /* 1510 */ 119, 114, 78, 212, 213, 81, 212, 213, 23, 83,
157126 /* 1520 */ 84, 26, 59, 212, 213, 23, 190, 190, 26, 23,
157127 /* 1530 */ 284, 97, 26, 190, 71, 139, 115, 23, 23, 59,
157128 /* 1540 */ 26, 26, 151, 152, 153, 154, 155, 190, 85, 212,
157129 /* 1550 */ 213, 190, 151, 90, 153, 212, 213, 23, 23, 190,
157130 /* 1560 */ 26, 26, 99, 190, 190, 131, 190, 190, 105, 106,
157131 /* 1570 */ 136, 137, 190, 212, 213, 112, 190, 114, 115, 116,
157132 /* 1580 */ 1, 2, 119, 190, 5, 19, 20, 232, 22, 10,
157133 /* 1590 */ 11, 12, 13, 14, 160, 115, 17, 190, 212, 213,
157134 /* 1600 */ 190, 190, 36, 190, 190, 212, 213, 190, 190, 30,
157135 /* 1610 */ 139, 32, 190, 190, 151, 152, 153, 154, 155, 40,
157136 /* 1620 */ 190, 190, 190, 212, 213, 59, 212, 213, 190, 190,
157137 /* 1630 */ 190, 190, 190, 190, 283, 251, 238, 71, 251, 251,
157138 /* 1640 */ 251, 188, 239, 210, 263, 293, 267, 241, 263, 70,
157139 /* 1650 */ 255, 289, 289, 241, 255, 193, 221, 78, 242, 267,
157140 /* 1660 */ 81, 267, 242, 255, 216, 99, 215, 267, 241, 225,
157141 /* 1670 */ 215, 105, 106, 107, 215, 60, 97, 139, 112, 197,
157142 /* 1680 */ 114, 115, 116, 197, 38, 119, 197, 148, 239, 149,
157143 /* 1690 */ 245, 19, 20, 268, 22, 276, 22, 245, 293, 290,
157144 /* 1700 */ 43, 18, 233, 279, 230, 290, 233, 197, 36, 233,
157145 /* 1710 */ 131, 233, 266, 18, 196, 136, 137, 151, 152, 153,
157146 /* 1720 */ 154, 155, 147, 242, 268, 268, 242, 230, 230, 242,
157147 /* 1730 */ 266, 59, 242, 197, 156, 62, 22, 196, 196, 160,
157148 /* 1740 */ 286, 197, 217, 71, 197, 285, 196, 217, 197, 196,
157149 /* 1750 */ 113, 214, 64, 22, 223, 124, 223, 214, 163, 19,
157150 /* 1760 */ 20, 111, 22, 214, 216, 220, 220, 142, 214, 217,
157151 /* 1770 */ 214, 99, 214, 214, 306, 113, 36, 105, 106, 217,
157152 /* 1780 */ 217, 278, 278, 257, 112, 256, 114, 115, 116, 257,
157153 /* 1790 */ 197, 119, 91, 82, 311, 146, 311, 143, 22, 59,
157154 /* 1800 */ 273, 197, 144, 156, 145, 25, 200, 26, 199, 13,
157155 /* 1810 */ 245, 71, 257, 256, 244, 246, 256, 246, 257, 243,
157156 /* 1820 */ 256, 191, 242, 151, 152, 153, 154, 155, 261, 261,
157157 /* 1830 */ 191, 6, 189, 189, 189, 203, 209, 209, 209, 99,
157158 /* 1840 */ 218, 203, 209, 209, 218, 105, 106, 275, 4, 3,
157159 /* 1850 */ 210, 210, 112, 22, 114, 115, 116, 161, 203, 119,
157160 /* 1860 */ 15, 5, 98, 16, 23, 23, 10, 11, 12, 13,
157161 /* 1870 */ 14, 137, 299, 17, 149, 128, 299, 296, 26, 24,
157162 /* 1880 */ 20, 140, 16, 1, 142, 140, 30, 128, 32, 128,
157163 /* 1890 */ 61, 151, 152, 153, 154, 155, 40, 149, 37, 128,
157164 /* 1900 */ 114, 53, 53, 53, 53, 34, 139, 1, 5, 22,
157165 /* 1910 */ 113, 159, 26, 75, 41, 113, 139, 24, 20, 19,
157166 /* 1920 */ 129, 68, 68, 123, 22, 67, 70, 22, 59, 22,
157167 /* 1930 */ 67, 23, 22, 24, 78, 96, 22, 81, 37, 28,
157168 /* 1940 */ 23, 67, 147, 22, 26, 23, 23, 23, 23, 22,
157169 /* 1950 */ 24, 23, 22, 97, 139, 24, 23, 23, 22, 141,
157170 /* 1960 */ 88, 26, 86, 34, 75, 75, 34, 23, 93, 22,
157171 /* 1970 */ 24, 114, 34, 34, 34, 34, 26, 26, 23, 34,
157172 /* 1980 */ 23, 44, 23, 23, 23, 11, 23, 131, 26, 22,
157173 /* 1990 */ 22, 22, 136, 137, 23, 23, 26, 22, 22, 15,
157174 /* 2000 */ 133, 139, 23, 139, 139, 1, 1, 139, 313, 313,
157175 /* 2010 */ 313, 313, 313, 313, 313, 313, 160, 313, 313, 313,
157176 /* 2020 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157177 /* 2030 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157178 /* 2040 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157179 /* 2050 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157180 /* 2060 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157181 /* 2070 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157182 /* 2080 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157183 /* 2090 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157184 /* 2100 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157185 /* 2110 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157186 /* 2120 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157187 /* 2130 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157188 /* 2140 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157189 /* 2150 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157190 /* 2160 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157191 /* 2170 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157192 /* 2180 */ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
157193 /* 2190 */ 182, 182, 182, 182, 182, 182, 182, 182, 182,
157194 };
157195 #define YY_SHIFT_COUNT (570)
157196 #define YY_SHIFT_MIN (0)
157197 #define YY_SHIFT_MAX (2005)
157198 static const unsigned short int yy_shift_ofst[] = {
157199 /* 0 */ 1579, 1434, 1856, 1206, 1206, 1, 1278, 1391, 1463, 1672,
157200 /* 10 */ 1672, 1672, 390, 0, 0, 180, 1008, 1672, 1672, 1672,
157201 /* 20 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
157202 /* 30 */ 794, 794, 287, 287, 250, 611, 1, 1, 1, 1,
157203 /* 40 */ 1, 1, 40, 110, 219, 288, 394, 437, 506, 545,
157204 /* 50 */ 614, 653, 722, 761, 830, 988, 1008, 1008, 1008, 1008,
157205 /* 60 */ 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
157206 /* 70 */ 1008, 1008, 1008, 1008, 1028, 1008, 1130, 1150, 1150, 1566,
157207 /* 80 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
157208 /* 90 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
157209 /* 100 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
157210 /* 110 */ 1672, 1672, 1672, 1672, 1740, 1672, 1672, 1672, 1672, 1672,
157211 /* 120 */ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 147, 248,
157212 /* 130 */ 248, 248, 248, 248, 79, 86, 185, 573, 771, 896,
157213 /* 140 */ 573, 530, 530, 573, 877, 877, 877, 877, 295, 475,
157214 /* 150 */ 475, 584, 29, 2017, 2017, 289, 289, 289, 58, 508,
157215 /* 160 */ 62, 508, 508, 508, 392, 392, 225, 395, 218, 822,
157216 /* 170 */ 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
157217 /* 180 */ 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
157218 /* 190 */ 573, 1074, 1074, 573, 119, 1187, 1187, 1044, 1044, 1145,
157219 /* 200 */ 1146, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 418, 263,
157220 /* 210 */ 263, 559, 303, 618, 527, 623, 464, 570, 780, 573,
157221 /* 220 */ 573, 573, 573, 573, 573, 573, 573, 573, 669, 573,
157222 /* 230 */ 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
157223 /* 240 */ 573, 245, 245, 245, 573, 573, 573, 573, 985, 573,
157224 /* 250 */ 573, 573, 18, 1076, 573, 573, 1131, 573, 573, 573,
157225 /* 260 */ 573, 573, 573, 573, 573, 941, 1092, 770, 903, 903,
157226 /* 270 */ 903, 903, 1203, 770, 770, 1085, 692, 1144, 1319, 1168,
157227 /* 280 */ 1227, 1321, 1308, 1227, 1308, 1397, 593, 1168, 1168, 593,
157228 /* 290 */ 1168, 1321, 1397, 1328, 15, 1310, 1265, 1265, 1265, 1308,
157229 /* 300 */ 1324, 1324, 863, 1325, 492, 1390, 1615, 1538, 1538, 1646,
157230 /* 310 */ 1646, 1538, 1540, 1539, 1674, 1657, 1683, 1683, 1683, 1683,
157231 /* 320 */ 1538, 1695, 1575, 1539, 1539, 1575, 1674, 1657, 1575, 1657,
157232 /* 330 */ 1575, 1538, 1695, 1578, 1673, 1538, 1695, 1714, 1538, 1695,
157233 /* 340 */ 1538, 1695, 1714, 1637, 1637, 1637, 1688, 1731, 1731, 1714,
157234 /* 350 */ 1637, 1631, 1637, 1688, 1637, 1637, 1595, 1714, 1650, 1650,
157235 /* 360 */ 1714, 1625, 1662, 1625, 1662, 1625, 1662, 1625, 1662, 1538,
157236 /* 370 */ 1701, 1701, 1711, 1711, 1649, 1654, 1776, 1538, 1647, 1649,
157237 /* 380 */ 1659, 1658, 1575, 1780, 1781, 1796, 1796, 1825, 1825, 1825,
157238 /* 390 */ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
157239 /* 400 */ 2017, 2017, 2017, 2017, 2017, 339, 445, 1064, 1193, 951,
157240 /* 410 */ 1029, 1256, 1383, 1402, 1396, 1292, 1327, 1437, 727, 1447,
157241 /* 420 */ 1461, 1466, 1472, 1495, 1502, 1184, 1307, 1450, 1340, 1421,
157242 /* 430 */ 1506, 1514, 1436, 1515, 1349, 1401, 1534, 1535, 1480, 1471,
157243 /* 440 */ 1844, 1846, 1831, 1696, 1845, 1764, 1847, 1841, 1842, 1734,
157244 /* 450 */ 1725, 1747, 1852, 1852, 1855, 1741, 1860, 1742, 1866, 1882,
157245 /* 460 */ 1745, 1759, 1852, 1761, 1829, 1861, 1852, 1748, 1848, 1849,
157246 /* 470 */ 1850, 1851, 1771, 1786, 1871, 1767, 1906, 1903, 1887, 1797,
157247 /* 480 */ 1752, 1853, 1886, 1854, 1838, 1873, 1777, 1802, 1893, 1898,
157248 /* 490 */ 1900, 1791, 1800, 1902, 1858, 1905, 1907, 1908, 1910, 1863,
157249 /* 500 */ 1869, 1909, 1839, 1911, 1914, 1874, 1901, 1917, 1795, 1921,
157250 /* 510 */ 1922, 1923, 1924, 1918, 1925, 1927, 1926, 1928, 1930, 1931,
157251 /* 520 */ 1815, 1933, 1934, 1857, 1929, 1936, 1818, 1935, 1932, 1938,
157252 /* 530 */ 1939, 1940, 1872, 1889, 1876, 1937, 1890, 1875, 1941, 1944,
157253 /* 540 */ 1947, 1946, 1950, 1951, 1945, 1955, 1935, 1957, 1959, 1960,
157254 /* 550 */ 1961, 1962, 1963, 1967, 1974, 1968, 1969, 1971, 1972, 1975,
157255 /* 560 */ 1976, 1970, 1867, 1862, 1864, 1865, 1868, 1979, 1984, 2004,
157256 /* 570 */ 2005,
157257 };
157258 #define YY_REDUCE_COUNT (404)
157259 #define YY_REDUCE_MIN (-262)
157260 #define YY_REDUCE_MAX (1655)
157261 static const short yy_reduce_ofst[] = {
157262 /* 0 */ 599, -123, 272, 716, 756, -121, -190, -188, -185, -183,
157263 /* 10 */ -179, -177, -26, 304, 313, -254, -11, 500, 609, 630,
157264 /* 20 */ 758, -114, 763, 766, 323, 538, 768, 87, 540, 701,
157265 /* 30 */ -38, 413, 125, 324, 699, 443, 602, 725, 748, 753,
157266 /* 40 */ 762, 781, -262, -262, -262, -262, -262, -262, -262, -262,
157267 /* 50 */ -262, -262, -262, -262, -262, -262, -262, -262, -262, -262,
157268 /* 60 */ -262, -262, -262, -262, -262, -262, -262, -262, -262, -262,
157269 /* 70 */ -262, -262, -262, -262, -262, -262, -262, -262, -262, 262,
157270 /* 80 */ 731, 787, 836, 915, 932, 934, 977, 998, 1001, 1032,
157271 /* 90 */ 1034, 1037, 1058, 1072, 1077, 1079, 1082, 1090, 1096, 1111,
157272 /* 100 */ 1116, 1120, 1123, 1127, 1140, 1174, 1176, 1183, 1186, 1188,
157273 /* 110 */ 1190, 1192, 1195, 1225, 1228, 1259, 1266, 1296, 1301, 1304,
157274 /* 120 */ 1311, 1337, 1343, 1361, 1386, 1393, 1411, 1414, -262, -262,
157275 /* 130 */ -262, -262, -262, -262, -262, -262, -262, -176, 825, 249,
157276 /* 140 */ -22, 648, 652, 108, 112, 767, 112, 767, 637, 717,
157277 /* 150 */ 835, -262, -262, -262, -262, -207, -207, -207, 126, -164,
157278 /* 160 */ -170, 416, 708, 856, -158, 504, 74, -169, 446, 446,
157279 /* 170 */ -187, 328, 700, 707, 239, 282, 331, 556, 721, 438,
157280 /* 180 */ 193, 860, 322, 541, 880, 933, 975, 241, 651, 879,
157281 /* 190 */ 970, 270, 905, 918, 88, 914, 961, 967, 1069, -39,
157282 /* 200 */ 604, 1050, 1091, 1098, 1115, 1122, 1117, 1141, -211, -206,
157283 /* 210 */ -180, -130, -161, 10, 179, 236, 316, 341, 629, 726,
157284 /* 220 */ 804, 816, 834, 898, 972, 1177, 1231, 1238, 170, 1253,
157285 /* 230 */ 1263, 1285, 1298, 1336, 1357, 1369, 1373, 1374, 1376, 1377,
157286 /* 240 */ 1382, 240, 257, 1053, 1407, 1410, 1413, 1417, 1012, 1422,
157287 /* 250 */ 1423, 1430, 1166, 1156, 1418, 1431, 1355, 1432, 179, 1438,
157288 /* 260 */ 1439, 1440, 1441, 1442, 1443, 1246, 1351, 1398, 1384, 1387,
157289 /* 270 */ 1388, 1389, 1012, 1398, 1398, 1403, 1433, 1453, 1352, 1379,
157290 /* 280 */ 1381, 1406, 1395, 1385, 1399, 1362, 1416, 1392, 1394, 1420,
157291 /* 290 */ 1400, 1412, 1363, 1448, 1444, 1435, 1451, 1455, 1459, 1408,
157292 /* 300 */ 1445, 1452, 1419, 1427, 1449, 1462, 1405, 1482, 1486, 1409,
157293 /* 310 */ 1415, 1489, 1424, 1425, 1446, 1474, 1469, 1473, 1476, 1478,
157294 /* 320 */ 1510, 1518, 1481, 1456, 1457, 1484, 1464, 1497, 1487, 1498,
157295 /* 330 */ 1490, 1536, 1541, 1454, 1460, 1544, 1542, 1525, 1547, 1550,
157296 /* 340 */ 1551, 1553, 1530, 1537, 1543, 1549, 1531, 1545, 1546, 1552,
157297 /* 350 */ 1554, 1548, 1556, 1533, 1558, 1559, 1468, 1562, 1503, 1504,
157298 /* 360 */ 1563, 1526, 1529, 1532, 1557, 1555, 1560, 1561, 1564, 1593,
157299 /* 370 */ 1483, 1485, 1567, 1568, 1569, 1565, 1527, 1604, 1572, 1571,
157300 /* 380 */ 1570, 1576, 1580, 1606, 1609, 1630, 1639, 1643, 1644, 1645,
157301 /* 390 */ 1573, 1577, 1581, 1632, 1627, 1628, 1629, 1633, 1638, 1622,
157302 /* 400 */ 1626, 1640, 1641, 1634, 1655,
157303 };
157304 static const YYACTIONTYPE yy_default[] = {
157305 /* 0 */ 1610, 1610, 1610, 1445, 1215, 1324, 1215, 1215, 1215, 1445,
157306 /* 10 */ 1445, 1445, 1215, 1354, 1354, 1498, 1246, 1215, 1215, 1215,
157307 /* 20 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1444, 1215, 1215,
157308 /* 30 */ 1215, 1215, 1528, 1528, 1215, 1215, 1215, 1215, 1215, 1215,
157309 /* 40 */ 1215, 1215, 1215, 1363, 1215, 1370, 1215, 1215, 1215, 1215,
157310 /* 50 */ 1215, 1446, 1447, 1215, 1215, 1215, 1497, 1499, 1462, 1377,
157311 /* 60 */ 1376, 1375, 1374, 1480, 1341, 1368, 1361, 1365, 1440, 1441,
157312 /* 70 */ 1439, 1443, 1447, 1446, 1215, 1364, 1411, 1425, 1410, 1215,
157313 /* 80 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157314 /* 90 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157315 /* 100 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157316 /* 110 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157317 /* 120 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1419, 1424,
157318 /* 130 */ 1430, 1423, 1420, 1413, 1412, 1414, 1415, 1215, 1236, 1288,
157319 /* 140 */ 1215, 1215, 1215, 1215, 1516, 1515, 1215, 1215, 1246, 1405,
157320 /* 150 */ 1404, 1416, 1417, 1427, 1426, 1505, 1563, 1562, 1463, 1215,
157321 /* 160 */ 1215, 1215, 1215, 1215, 1215, 1215, 1528, 1215, 1215, 1215,
157322 /* 170 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157323 /* 180 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157324 /* 190 */ 1215, 1528, 1528, 1215, 1246, 1528, 1528, 1242, 1242, 1348,
157325 /* 200 */ 1215, 1511, 1315, 1315, 1315, 1315, 1324, 1315, 1215, 1215,
157326 /* 210 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157327 /* 220 */ 1215, 1215, 1502, 1500, 1215, 1215, 1215, 1215, 1215, 1215,
157328 /* 230 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157329 /* 240 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157330 /* 250 */ 1215, 1215, 1320, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157331 /* 260 */ 1215, 1215, 1215, 1215, 1557, 1215, 1475, 1302, 1320, 1320,
157332 /* 270 */ 1320, 1320, 1322, 1303, 1301, 1314, 1247, 1222, 1602, 1380,
157333 /* 280 */ 1369, 1321, 1343, 1369, 1343, 1599, 1367, 1380, 1380, 1367,
157334 /* 290 */ 1380, 1321, 1599, 1263, 1579, 1258, 1354, 1354, 1354, 1343,
157335 /* 300 */ 1348, 1348, 1442, 1321, 1314, 1215, 1602, 1329, 1329, 1601,
157336 /* 310 */ 1601, 1329, 1463, 1586, 1389, 1291, 1297, 1297, 1297, 1297,
157337 /* 320 */ 1329, 1233, 1367, 1586, 1586, 1367, 1389, 1291, 1367, 1291,
157338 /* 330 */ 1367, 1329, 1233, 1479, 1596, 1329, 1233, 1453, 1329, 1233,
157339 /* 340 */ 1329, 1233, 1453, 1289, 1289, 1289, 1278, 1215, 1215, 1453,
157340 /* 350 */ 1289, 1263, 1289, 1278, 1289, 1289, 1546, 1453, 1457, 1457,
157341 /* 360 */ 1453, 1347, 1342, 1347, 1342, 1347, 1342, 1347, 1342, 1329,
157342 /* 370 */ 1538, 1538, 1357, 1357, 1362, 1348, 1448, 1329, 1215, 1362,
157343 /* 380 */ 1360, 1358, 1367, 1239, 1281, 1560, 1560, 1556, 1556, 1556,
157344 /* 390 */ 1607, 1607, 1511, 1572, 1246, 1246, 1246, 1246, 1572, 1265,
157345 /* 400 */ 1265, 1247, 1247, 1246, 1572, 1215, 1215, 1215, 1215, 1215,
157346 /* 410 */ 1215, 1567, 1215, 1464, 1333, 1215, 1215, 1215, 1215, 1215,
157347 /* 420 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157348 /* 430 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1394,
157349 /* 440 */ 1215, 1218, 1508, 1215, 1215, 1506, 1215, 1215, 1215, 1215,
157350 /* 450 */ 1215, 1215, 1371, 1372, 1334, 1215, 1215, 1215, 1215, 1215,
157351 /* 460 */ 1215, 1215, 1386, 1215, 1215, 1215, 1381, 1215, 1215, 1215,
157352 /* 470 */ 1215, 1215, 1215, 1215, 1215, 1598, 1215, 1215, 1215, 1215,
157353 /* 480 */ 1215, 1215, 1478, 1477, 1215, 1215, 1331, 1215, 1215, 1215,
157354 /* 490 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157355 /* 500 */ 1261, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157356 /* 510 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157357 /* 520 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1359, 1215, 1215,
157358 /* 530 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157359 /* 540 */ 1215, 1215, 1543, 1349, 1215, 1215, 1589, 1215, 1215, 1215,
157360 /* 550 */ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
157361 /* 560 */ 1215, 1583, 1305, 1396, 1215, 1395, 1399, 1215, 1227, 1215,
157362 /* 570 */ 1215,
157363 };
157364 /********** End of lemon-generated parsing tables *****************************/
157365
157366 /* The next table maps tokens (terminal symbols) into fallback tokens.
157367 ** If a construct like the following:
@@ -157280,10 +157525,11 @@
157525 0, /* ORDER => nothing */
157526 0, /* GROUP => nothing */
157527 0, /* HAVING => nothing */
157528 0, /* LIMIT => nothing */
157529 0, /* WHERE => nothing */
157530 0, /* RETURNING => nothing */
157531 0, /* INTO => nothing */
157532 0, /* NOTHING => nothing */
157533 0, /* FLOAT => nothing */
157534 0, /* BLOB => nothing */
157535 0, /* INTEGER => nothing */
@@ -157549,172 +157795,175 @@
157795 /* 143 */ "ORDER",
157796 /* 144 */ "GROUP",
157797 /* 145 */ "HAVING",
157798 /* 146 */ "LIMIT",
157799 /* 147 */ "WHERE",
157800 /* 148 */ "RETURNING",
157801 /* 149 */ "INTO",
157802 /* 150 */ "NOTHING",
157803 /* 151 */ "FLOAT",
157804 /* 152 */ "BLOB",
157805 /* 153 */ "INTEGER",
157806 /* 154 */ "VARIABLE",
157807 /* 155 */ "CASE",
157808 /* 156 */ "WHEN",
157809 /* 157 */ "THEN",
157810 /* 158 */ "ELSE",
157811 /* 159 */ "INDEX",
157812 /* 160 */ "ALTER",
157813 /* 161 */ "ADD",
157814 /* 162 */ "WINDOW",
157815 /* 163 */ "OVER",
157816 /* 164 */ "FILTER",
157817 /* 165 */ "COLUMN",
157818 /* 166 */ "AGG_FUNCTION",
157819 /* 167 */ "AGG_COLUMN",
157820 /* 168 */ "TRUEFALSE",
157821 /* 169 */ "ISNOT",
157822 /* 170 */ "FUNCTION",
157823 /* 171 */ "UMINUS",
157824 /* 172 */ "UPLUS",
157825 /* 173 */ "TRUTH",
157826 /* 174 */ "REGISTER",
157827 /* 175 */ "VECTOR",
157828 /* 176 */ "SELECT_COLUMN",
157829 /* 177 */ "IF_NULL_ROW",
157830 /* 178 */ "ASTERISK",
157831 /* 179 */ "SPAN",
157832 /* 180 */ "SPACE",
157833 /* 181 */ "ILLEGAL",
157834 /* 182 */ "input",
157835 /* 183 */ "cmdlist",
157836 /* 184 */ "ecmd",
157837 /* 185 */ "cmdx",
157838 /* 186 */ "explain",
157839 /* 187 */ "cmd",
157840 /* 188 */ "transtype",
157841 /* 189 */ "trans_opt",
157842 /* 190 */ "nm",
157843 /* 191 */ "savepoint_opt",
157844 /* 192 */ "create_table",
157845 /* 193 */ "create_table_args",
157846 /* 194 */ "createkw",
157847 /* 195 */ "temp",
157848 /* 196 */ "ifnotexists",
157849 /* 197 */ "dbnm",
157850 /* 198 */ "columnlist",
157851 /* 199 */ "conslist_opt",
157852 /* 200 */ "table_options",
157853 /* 201 */ "select",
157854 /* 202 */ "columnname",
157855 /* 203 */ "carglist",
157856 /* 204 */ "typetoken",
157857 /* 205 */ "typename",
157858 /* 206 */ "signed",
157859 /* 207 */ "plus_num",
157860 /* 208 */ "minus_num",
157861 /* 209 */ "scanpt",
157862 /* 210 */ "scantok",
157863 /* 211 */ "ccons",
157864 /* 212 */ "term",
157865 /* 213 */ "expr",
157866 /* 214 */ "onconf",
157867 /* 215 */ "sortorder",
157868 /* 216 */ "autoinc",
157869 /* 217 */ "eidlist_opt",
157870 /* 218 */ "refargs",
157871 /* 219 */ "defer_subclause",
157872 /* 220 */ "generated",
157873 /* 221 */ "refarg",
157874 /* 222 */ "refact",
157875 /* 223 */ "init_deferred_pred_opt",
157876 /* 224 */ "conslist",
157877 /* 225 */ "tconscomma",
157878 /* 226 */ "tcons",
157879 /* 227 */ "sortlist",
157880 /* 228 */ "eidlist",
157881 /* 229 */ "defer_subclause_opt",
157882 /* 230 */ "orconf",
157883 /* 231 */ "resolvetype",
157884 /* 232 */ "raisetype",
157885 /* 233 */ "ifexists",
157886 /* 234 */ "fullname",
157887 /* 235 */ "selectnowith",
157888 /* 236 */ "oneselect",
157889 /* 237 */ "wqlist",
157890 /* 238 */ "multiselect_op",
157891 /* 239 */ "distinct",
157892 /* 240 */ "selcollist",
157893 /* 241 */ "from",
157894 /* 242 */ "where_opt",
157895 /* 243 */ "groupby_opt",
157896 /* 244 */ "having_opt",
157897 /* 245 */ "orderby_opt",
157898 /* 246 */ "limit_opt",
157899 /* 247 */ "window_clause",
157900 /* 248 */ "values",
157901 /* 249 */ "nexprlist",
157902 /* 250 */ "sclp",
157903 /* 251 */ "as",
157904 /* 252 */ "seltablist",
157905 /* 253 */ "stl_prefix",
157906 /* 254 */ "joinop",
157907 /* 255 */ "indexed_opt",
157908 /* 256 */ "on_opt",
157909 /* 257 */ "using_opt",
157910 /* 258 */ "exprlist",
157911 /* 259 */ "xfullname",
157912 /* 260 */ "idlist",
157913 /* 261 */ "nulls",
157914 /* 262 */ "with",
157915 /* 263 */ "where_opt_ret",
157916 /* 264 */ "setlist",
157917 /* 265 */ "insert_cmd",
157918 /* 266 */ "idlist_opt",
157919 /* 267 */ "upsert",
157920 /* 268 */ "returning",
157921 /* 269 */ "filter_over",
157922 /* 270 */ "likeop",
157923 /* 271 */ "between_op",
157924 /* 272 */ "in_op",
157925 /* 273 */ "paren_exprlist",
157926 /* 274 */ "case_operand",
157927 /* 275 */ "case_exprlist",
157928 /* 276 */ "case_else",
157929 /* 277 */ "uniqueflag",
157930 /* 278 */ "collate",
157931 /* 279 */ "vinto",
157932 /* 280 */ "nmnum",
157933 /* 281 */ "trigger_decl",
157934 /* 282 */ "trigger_cmd_list",
157935 /* 283 */ "trigger_time",
157936 /* 284 */ "trigger_event",
157937 /* 285 */ "foreach_clause",
157938 /* 286 */ "when_clause",
157939 /* 287 */ "trigger_cmd",
157940 /* 288 */ "trnm",
157941 /* 289 */ "tridxby",
157942 /* 290 */ "database_kw_opt",
157943 /* 291 */ "key_opt",
157944 /* 292 */ "add_column_fullname",
157945 /* 293 */ "kwcolumn_opt",
157946 /* 294 */ "create_vtab",
157947 /* 295 */ "vtabarglist",
157948 /* 296 */ "vtabarg",
157949 /* 297 */ "vtabargtoken",
157950 /* 298 */ "lp",
157951 /* 299 */ "anylist",
157952 /* 300 */ "windowdefn_list",
157953 /* 301 */ "windowdefn",
157954 /* 302 */ "window",
157955 /* 303 */ "frame_opt",
157956 /* 304 */ "part_opt",
157957 /* 305 */ "filter_clause",
157958 /* 306 */ "over_clause",
157959 /* 307 */ "range_or_rows",
157960 /* 308 */ "frame_bound",
157961 /* 309 */ "frame_bound_s",
157962 /* 310 */ "frame_bound_e",
157963 /* 311 */ "frame_exclude_opt",
157964 /* 312 */ "frame_exclude",
157965 };
157966 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
157967
157968 #ifndef NDEBUG
157969 /* For tracing reduce actions, the names of all rules are required.
@@ -157866,248 +158115,255 @@
158115 /* 143 */ "having_opt ::= HAVING expr",
158116 /* 144 */ "limit_opt ::=",
158117 /* 145 */ "limit_opt ::= LIMIT expr",
158118 /* 146 */ "limit_opt ::= LIMIT expr OFFSET expr",
158119 /* 147 */ "limit_opt ::= LIMIT expr COMMA expr",
158120 /* 148 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret",
158121 /* 149 */ "where_opt ::=",
158122 /* 150 */ "where_opt ::= WHERE expr",
158123 /* 151 */ "where_opt_ret ::=",
158124 /* 152 */ "where_opt_ret ::= WHERE expr",
158125 /* 153 */ "where_opt_ret ::= RETURNING selcollist",
158126 /* 154 */ "where_opt_ret ::= WHERE expr RETURNING selcollist",
158127 /* 155 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret",
158128 /* 156 */ "setlist ::= setlist COMMA nm EQ expr",
158129 /* 157 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
158130 /* 158 */ "setlist ::= nm EQ expr",
158131 /* 159 */ "setlist ::= LP idlist RP EQ expr",
158132 /* 160 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
158133 /* 161 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
158134 /* 162 */ "upsert ::=",
158135 /* 163 */ "upsert ::= RETURNING selcollist",
158136 /* 164 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
158137 /* 165 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
158138 /* 166 */ "upsert ::= ON CONFLICT DO NOTHING returning",
158139 /* 167 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
158140 /* 168 */ "returning ::= RETURNING selcollist",
158141 /* 169 */ "insert_cmd ::= INSERT orconf",
158142 /* 170 */ "insert_cmd ::= REPLACE",
158143 /* 171 */ "idlist_opt ::=",
158144 /* 172 */ "idlist_opt ::= LP idlist RP",
158145 /* 173 */ "idlist ::= idlist COMMA nm",
158146 /* 174 */ "idlist ::= nm",
158147 /* 175 */ "expr ::= LP expr RP",
158148 /* 176 */ "expr ::= ID|INDEXED",
158149 /* 177 */ "expr ::= JOIN_KW",
158150 /* 178 */ "expr ::= nm DOT nm",
158151 /* 179 */ "expr ::= nm DOT nm DOT nm",
158152 /* 180 */ "term ::= NULL|FLOAT|BLOB",
158153 /* 181 */ "term ::= STRING",
158154 /* 182 */ "term ::= INTEGER",
158155 /* 183 */ "expr ::= VARIABLE",
158156 /* 184 */ "expr ::= expr COLLATE ID|STRING",
158157 /* 185 */ "expr ::= CAST LP expr AS typetoken RP",
158158 /* 186 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
158159 /* 187 */ "expr ::= ID|INDEXED LP STAR RP",
158160 /* 188 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
158161 /* 189 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
158162 /* 190 */ "term ::= CTIME_KW",
158163 /* 191 */ "expr ::= LP nexprlist COMMA expr RP",
158164 /* 192 */ "expr ::= expr AND expr",
158165 /* 193 */ "expr ::= expr OR expr",
158166 /* 194 */ "expr ::= expr LT|GT|GE|LE expr",
158167 /* 195 */ "expr ::= expr EQ|NE expr",
158168 /* 196 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
158169 /* 197 */ "expr ::= expr PLUS|MINUS expr",
158170 /* 198 */ "expr ::= expr STAR|SLASH|REM expr",
158171 /* 199 */ "expr ::= expr CONCAT expr",
158172 /* 200 */ "likeop ::= NOT LIKE_KW|MATCH",
158173 /* 201 */ "expr ::= expr likeop expr",
158174 /* 202 */ "expr ::= expr likeop expr ESCAPE expr",
158175 /* 203 */ "expr ::= expr ISNULL|NOTNULL",
158176 /* 204 */ "expr ::= expr NOT NULL",
158177 /* 205 */ "expr ::= expr IS expr",
158178 /* 206 */ "expr ::= expr IS NOT expr",
158179 /* 207 */ "expr ::= NOT expr",
158180 /* 208 */ "expr ::= BITNOT expr",
158181 /* 209 */ "expr ::= PLUS|MINUS expr",
158182 /* 210 */ "between_op ::= BETWEEN",
158183 /* 211 */ "between_op ::= NOT BETWEEN",
158184 /* 212 */ "expr ::= expr between_op expr AND expr",
158185 /* 213 */ "in_op ::= IN",
158186 /* 214 */ "in_op ::= NOT IN",
158187 /* 215 */ "expr ::= expr in_op LP exprlist RP",
158188 /* 216 */ "expr ::= LP select RP",
158189 /* 217 */ "expr ::= expr in_op LP select RP",
158190 /* 218 */ "expr ::= expr in_op nm dbnm paren_exprlist",
158191 /* 219 */ "expr ::= EXISTS LP select RP",
158192 /* 220 */ "expr ::= CASE case_operand case_exprlist case_else END",
158193 /* 221 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
158194 /* 222 */ "case_exprlist ::= WHEN expr THEN expr",
158195 /* 223 */ "case_else ::= ELSE expr",
158196 /* 224 */ "case_else ::=",
158197 /* 225 */ "case_operand ::= expr",
158198 /* 226 */ "case_operand ::=",
158199 /* 227 */ "exprlist ::=",
158200 /* 228 */ "nexprlist ::= nexprlist COMMA expr",
158201 /* 229 */ "nexprlist ::= expr",
158202 /* 230 */ "paren_exprlist ::=",
158203 /* 231 */ "paren_exprlist ::= LP exprlist RP",
158204 /* 232 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
158205 /* 233 */ "uniqueflag ::= UNIQUE",
158206 /* 234 */ "uniqueflag ::=",
158207 /* 235 */ "eidlist_opt ::=",
158208 /* 236 */ "eidlist_opt ::= LP eidlist RP",
158209 /* 237 */ "eidlist ::= eidlist COMMA nm collate sortorder",
158210 /* 238 */ "eidlist ::= nm collate sortorder",
158211 /* 239 */ "collate ::=",
158212 /* 240 */ "collate ::= COLLATE ID|STRING",
158213 /* 241 */ "cmd ::= DROP INDEX ifexists fullname",
158214 /* 242 */ "cmd ::= VACUUM vinto",
158215 /* 243 */ "cmd ::= VACUUM nm vinto",
158216 /* 244 */ "vinto ::= INTO expr",
158217 /* 245 */ "vinto ::=",
158218 /* 246 */ "cmd ::= PRAGMA nm dbnm",
158219 /* 247 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
158220 /* 248 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
158221 /* 249 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
158222 /* 250 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
158223 /* 251 */ "plus_num ::= PLUS INTEGER|FLOAT",
158224 /* 252 */ "minus_num ::= MINUS INTEGER|FLOAT",
158225 /* 253 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
158226 /* 254 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
158227 /* 255 */ "trigger_time ::= BEFORE|AFTER",
158228 /* 256 */ "trigger_time ::= INSTEAD OF",
158229 /* 257 */ "trigger_time ::=",
158230 /* 258 */ "trigger_event ::= DELETE|INSERT",
158231 /* 259 */ "trigger_event ::= UPDATE",
158232 /* 260 */ "trigger_event ::= UPDATE OF idlist",
158233 /* 261 */ "when_clause ::=",
158234 /* 262 */ "when_clause ::= WHEN expr",
158235 /* 263 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
158236 /* 264 */ "trigger_cmd_list ::= trigger_cmd SEMI",
158237 /* 265 */ "trnm ::= nm DOT nm",
158238 /* 266 */ "tridxby ::= INDEXED BY nm",
158239 /* 267 */ "tridxby ::= NOT INDEXED",
158240 /* 268 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
158241 /* 269 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
158242 /* 270 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
158243 /* 271 */ "trigger_cmd ::= scanpt select scanpt",
158244 /* 272 */ "expr ::= RAISE LP IGNORE RP",
158245 /* 273 */ "expr ::= RAISE LP raisetype COMMA nm RP",
158246 /* 274 */ "raisetype ::= ROLLBACK",
158247 /* 275 */ "raisetype ::= ABORT",
158248 /* 276 */ "raisetype ::= FAIL",
158249 /* 277 */ "cmd ::= DROP TRIGGER ifexists fullname",
158250 /* 278 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
158251 /* 279 */ "cmd ::= DETACH database_kw_opt expr",
158252 /* 280 */ "key_opt ::=",
158253 /* 281 */ "key_opt ::= KEY expr",
158254 /* 282 */ "cmd ::= REINDEX",
158255 /* 283 */ "cmd ::= REINDEX nm dbnm",
158256 /* 284 */ "cmd ::= ANALYZE",
158257 /* 285 */ "cmd ::= ANALYZE nm dbnm",
158258 /* 286 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
158259 /* 287 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
158260 /* 288 */ "add_column_fullname ::= fullname",
158261 /* 289 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
158262 /* 290 */ "cmd ::= create_vtab",
158263 /* 291 */ "cmd ::= create_vtab LP vtabarglist RP",
158264 /* 292 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
158265 /* 293 */ "vtabarg ::=",
158266 /* 294 */ "vtabargtoken ::= ANY",
158267 /* 295 */ "vtabargtoken ::= lp anylist RP",
158268 /* 296 */ "lp ::= LP",
158269 /* 297 */ "with ::= WITH wqlist",
158270 /* 298 */ "with ::= WITH RECURSIVE wqlist",
158271 /* 299 */ "wqlist ::= nm eidlist_opt AS LP select RP",
158272 /* 300 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
158273 /* 301 */ "windowdefn_list ::= windowdefn",
158274 /* 302 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
158275 /* 303 */ "windowdefn ::= nm AS LP window RP",
158276 /* 304 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
158277 /* 305 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
158278 /* 306 */ "window ::= ORDER BY sortlist frame_opt",
158279 /* 307 */ "window ::= nm ORDER BY sortlist frame_opt",
158280 /* 308 */ "window ::= frame_opt",
158281 /* 309 */ "window ::= nm frame_opt",
158282 /* 310 */ "frame_opt ::=",
158283 /* 311 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
158284 /* 312 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
158285 /* 313 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
158286 /* 314 */ "frame_bound_s ::= frame_bound",
158287 /* 315 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
158288 /* 316 */ "frame_bound_e ::= frame_bound",
158289 /* 317 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
158290 /* 318 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
158291 /* 319 */ "frame_bound ::= CURRENT ROW",
158292 /* 320 */ "frame_exclude_opt ::=",
158293 /* 321 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
158294 /* 322 */ "frame_exclude ::= NO OTHERS",
158295 /* 323 */ "frame_exclude ::= CURRENT ROW",
158296 /* 324 */ "frame_exclude ::= GROUP|TIES",
158297 /* 325 */ "window_clause ::= WINDOW windowdefn_list",
158298 /* 326 */ "filter_over ::= filter_clause over_clause",
158299 /* 327 */ "filter_over ::= over_clause",
158300 /* 328 */ "filter_over ::= filter_clause",
158301 /* 329 */ "over_clause ::= OVER LP window RP",
158302 /* 330 */ "over_clause ::= OVER nm",
158303 /* 331 */ "filter_clause ::= FILTER LP WHERE expr RP",
158304 /* 332 */ "input ::= cmdlist",
158305 /* 333 */ "cmdlist ::= cmdlist ecmd",
158306 /* 334 */ "cmdlist ::= ecmd",
158307 /* 335 */ "ecmd ::= SEMI",
158308 /* 336 */ "ecmd ::= cmdx SEMI",
158309 /* 337 */ "ecmd ::= explain cmdx SEMI",
158310 /* 338 */ "trans_opt ::=",
158311 /* 339 */ "trans_opt ::= TRANSACTION",
158312 /* 340 */ "trans_opt ::= TRANSACTION nm",
158313 /* 341 */ "savepoint_opt ::= SAVEPOINT",
158314 /* 342 */ "savepoint_opt ::=",
158315 /* 343 */ "cmd ::= create_table create_table_args",
158316 /* 344 */ "columnlist ::= columnlist COMMA columnname carglist",
158317 /* 345 */ "columnlist ::= columnname carglist",
158318 /* 346 */ "nm ::= ID|INDEXED",
158319 /* 347 */ "nm ::= STRING",
158320 /* 348 */ "nm ::= JOIN_KW",
158321 /* 349 */ "typetoken ::= typename",
158322 /* 350 */ "typename ::= ID|STRING",
158323 /* 351 */ "signed ::= plus_num",
158324 /* 352 */ "signed ::= minus_num",
158325 /* 353 */ "carglist ::= carglist ccons",
158326 /* 354 */ "carglist ::=",
158327 /* 355 */ "ccons ::= NULL onconf",
158328 /* 356 */ "ccons ::= GENERATED ALWAYS AS generated",
158329 /* 357 */ "ccons ::= AS generated",
158330 /* 358 */ "conslist_opt ::= COMMA conslist",
158331 /* 359 */ "conslist ::= conslist tconscomma tcons",
158332 /* 360 */ "conslist ::= tcons",
158333 /* 361 */ "tconscomma ::=",
158334 /* 362 */ "defer_subclause_opt ::= defer_subclause",
158335 /* 363 */ "resolvetype ::= raisetype",
158336 /* 364 */ "selectnowith ::= oneselect",
158337 /* 365 */ "oneselect ::= values",
158338 /* 366 */ "sclp ::= selcollist COMMA",
158339 /* 367 */ "as ::= ID|STRING",
158340 /* 368 */ "returning ::=",
158341 /* 369 */ "expr ::= term",
158342 /* 370 */ "likeop ::= LIKE_KW|MATCH",
158343 /* 371 */ "exprlist ::= nexprlist",
158344 /* 372 */ "nmnum ::= plus_num",
158345 /* 373 */ "nmnum ::= nm",
158346 /* 374 */ "nmnum ::= ON",
158347 /* 375 */ "nmnum ::= DELETE",
158348 /* 376 */ "nmnum ::= DEFAULT",
158349 /* 377 */ "plus_num ::= INTEGER|FLOAT",
158350 /* 378 */ "foreach_clause ::=",
158351 /* 379 */ "foreach_clause ::= FOR EACH ROW",
158352 /* 380 */ "trnm ::= nm",
158353 /* 381 */ "tridxby ::=",
158354 /* 382 */ "database_kw_opt ::= DATABASE",
158355 /* 383 */ "database_kw_opt ::=",
158356 /* 384 */ "kwcolumn_opt ::=",
158357 /* 385 */ "kwcolumn_opt ::= COLUMNKW",
158358 /* 386 */ "vtabarglist ::= vtabarg",
158359 /* 387 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
158360 /* 388 */ "vtabarg ::= vtabarg vtabargtoken",
158361 /* 389 */ "anylist ::=",
158362 /* 390 */ "anylist ::= anylist LP anylist RP",
158363 /* 391 */ "anylist ::= anylist ANY",
158364 /* 392 */ "with ::=",
158365 };
158366 #endif /* NDEBUG */
158367
158368
158369 #if YYSTACKDEPTH<=0
@@ -158229,102 +158485,103 @@
158485 ** Note: during a reduce, the only symbols destroyed are those
158486 ** which appear on the RHS of the rule, but which are *not* used
158487 ** inside the C code.
158488 */
158489 /********* Begin destructor definitions ***************************************/
158490 case 201: /* select */
158491 case 235: /* selectnowith */
158492 case 236: /* oneselect */
158493 case 248: /* values */
158494 {
158495 sqlite3SelectDelete(pParse->db, (yypminor->yy293));
158496 }
158497 break;
158498 case 212: /* term */
158499 case 213: /* expr */
158500 case 242: /* where_opt */
158501 case 244: /* having_opt */
158502 case 256: /* on_opt */
158503 case 263: /* where_opt_ret */
158504 case 274: /* case_operand */
158505 case 276: /* case_else */
158506 case 279: /* vinto */
158507 case 286: /* when_clause */
158508 case 291: /* key_opt */
158509 case 305: /* filter_clause */
158510 {
158511 sqlite3ExprDelete(pParse->db, (yypminor->yy354));
158512 }
158513 break;
158514 case 217: /* eidlist_opt */
158515 case 227: /* sortlist */
158516 case 228: /* eidlist */
158517 case 240: /* selcollist */
158518 case 243: /* groupby_opt */
158519 case 245: /* orderby_opt */
158520 case 249: /* nexprlist */
158521 case 250: /* sclp */
158522 case 258: /* exprlist */
158523 case 264: /* setlist */
158524 case 273: /* paren_exprlist */
158525 case 275: /* case_exprlist */
158526 case 304: /* part_opt */
158527 {
158528 sqlite3ExprListDelete(pParse->db, (yypminor->yy350));
158529 }
158530 break;
158531 case 234: /* fullname */
158532 case 241: /* from */
158533 case 252: /* seltablist */
158534 case 253: /* stl_prefix */
158535 case 259: /* xfullname */
158536 {
158537 sqlite3SrcListDelete(pParse->db, (yypminor->yy457));
158538 }
158539 break;
158540 case 237: /* wqlist */
158541 {
158542 sqlite3WithDelete(pParse->db, (yypminor->yy105));
158543 }
158544 break;
158545 case 247: /* window_clause */
158546 case 300: /* windowdefn_list */
158547 {
158548 sqlite3WindowListDelete(pParse->db, (yypminor->yy503));
158549 }
158550 break;
158551 case 257: /* using_opt */
158552 case 260: /* idlist */
158553 case 266: /* idlist_opt */
158554 {
158555 sqlite3IdListDelete(pParse->db, (yypminor->yy498));
158556 }
158557 break;
158558 case 269: /* filter_over */
158559 case 301: /* windowdefn */
158560 case 302: /* window */
158561 case 303: /* frame_opt */
158562 case 306: /* over_clause */
158563 {
158564 sqlite3WindowDelete(pParse->db, (yypminor->yy503));
158565 }
158566 break;
158567 case 282: /* trigger_cmd_list */
158568 case 287: /* trigger_cmd */
158569 {
158570 sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy51));
158571 }
158572 break;
158573 case 284: /* trigger_event */
158574 {
158575 sqlite3IdListDelete(pParse->db, (yypminor->yy298).b);
158576 }
158577 break;
158578 case 308: /* frame_bound */
158579 case 309: /* frame_bound_s */
158580 case 310: /* frame_bound_e */
158581 {
158582 sqlite3ExprDelete(pParse->db, (yypminor->yy341).pExpr);
158583 }
158584 break;
158585 /********* End destructor definitions *****************************************/
158586 default: break; /* If no destructor action specified: do nothing */
158587 }
@@ -158611,396 +158868,403 @@
158868 }
158869
158870 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
158871 ** of that rule */
158872 static const YYCODETYPE yyRuleInfoLhs[] = {
158873 186, /* (0) explain ::= EXPLAIN */
158874 186, /* (1) explain ::= EXPLAIN QUERY PLAN */
158875 185, /* (2) cmdx ::= cmd */
158876 187, /* (3) cmd ::= BEGIN transtype trans_opt */
158877 188, /* (4) transtype ::= */
158878 188, /* (5) transtype ::= DEFERRED */
158879 188, /* (6) transtype ::= IMMEDIATE */
158880 188, /* (7) transtype ::= EXCLUSIVE */
158881 187, /* (8) cmd ::= COMMIT|END trans_opt */
158882 187, /* (9) cmd ::= ROLLBACK trans_opt */
158883 187, /* (10) cmd ::= SAVEPOINT nm */
158884 187, /* (11) cmd ::= RELEASE savepoint_opt nm */
158885 187, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
158886 192, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
158887 194, /* (14) createkw ::= CREATE */
158888 196, /* (15) ifnotexists ::= */
158889 196, /* (16) ifnotexists ::= IF NOT EXISTS */
158890 195, /* (17) temp ::= TEMP */
158891 195, /* (18) temp ::= */
158892 193, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
158893 193, /* (20) create_table_args ::= AS select */
158894 200, /* (21) table_options ::= */
158895 200, /* (22) table_options ::= WITHOUT nm */
158896 202, /* (23) columnname ::= nm typetoken */
158897 204, /* (24) typetoken ::= */
158898 204, /* (25) typetoken ::= typename LP signed RP */
158899 204, /* (26) typetoken ::= typename LP signed COMMA signed RP */
158900 205, /* (27) typename ::= typename ID|STRING */
158901 209, /* (28) scanpt ::= */
158902 210, /* (29) scantok ::= */
158903 211, /* (30) ccons ::= CONSTRAINT nm */
158904 211, /* (31) ccons ::= DEFAULT scantok term */
158905 211, /* (32) ccons ::= DEFAULT LP expr RP */
158906 211, /* (33) ccons ::= DEFAULT PLUS scantok term */
158907 211, /* (34) ccons ::= DEFAULT MINUS scantok term */
158908 211, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
158909 211, /* (36) ccons ::= NOT NULL onconf */
158910 211, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
158911 211, /* (38) ccons ::= UNIQUE onconf */
158912 211, /* (39) ccons ::= CHECK LP expr RP */
158913 211, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
158914 211, /* (41) ccons ::= defer_subclause */
158915 211, /* (42) ccons ::= COLLATE ID|STRING */
158916 220, /* (43) generated ::= LP expr RP */
158917 220, /* (44) generated ::= LP expr RP ID */
158918 216, /* (45) autoinc ::= */
158919 216, /* (46) autoinc ::= AUTOINCR */
158920 218, /* (47) refargs ::= */
158921 218, /* (48) refargs ::= refargs refarg */
158922 221, /* (49) refarg ::= MATCH nm */
158923 221, /* (50) refarg ::= ON INSERT refact */
158924 221, /* (51) refarg ::= ON DELETE refact */
158925 221, /* (52) refarg ::= ON UPDATE refact */
158926 222, /* (53) refact ::= SET NULL */
158927 222, /* (54) refact ::= SET DEFAULT */
158928 222, /* (55) refact ::= CASCADE */
158929 222, /* (56) refact ::= RESTRICT */
158930 222, /* (57) refact ::= NO ACTION */
158931 219, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
158932 219, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
158933 223, /* (60) init_deferred_pred_opt ::= */
158934 223, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
158935 223, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
158936 199, /* (63) conslist_opt ::= */
158937 225, /* (64) tconscomma ::= COMMA */
158938 226, /* (65) tcons ::= CONSTRAINT nm */
158939 226, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
158940 226, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
158941 226, /* (68) tcons ::= CHECK LP expr RP onconf */
158942 226, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
158943 229, /* (70) defer_subclause_opt ::= */
158944 214, /* (71) onconf ::= */
158945 214, /* (72) onconf ::= ON CONFLICT resolvetype */
158946 230, /* (73) orconf ::= */
158947 230, /* (74) orconf ::= OR resolvetype */
158948 231, /* (75) resolvetype ::= IGNORE */
158949 231, /* (76) resolvetype ::= REPLACE */
158950 187, /* (77) cmd ::= DROP TABLE ifexists fullname */
158951 233, /* (78) ifexists ::= IF EXISTS */
158952 233, /* (79) ifexists ::= */
158953 187, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
158954 187, /* (81) cmd ::= DROP VIEW ifexists fullname */
158955 187, /* (82) cmd ::= select */
158956 201, /* (83) select ::= WITH wqlist selectnowith */
158957 201, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
158958 201, /* (85) select ::= selectnowith */
158959 235, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
158960 238, /* (87) multiselect_op ::= UNION */
158961 238, /* (88) multiselect_op ::= UNION ALL */
158962 238, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
158963 236, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
158964 236, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
158965 248, /* (92) values ::= VALUES LP nexprlist RP */
158966 248, /* (93) values ::= values COMMA LP nexprlist RP */
158967 239, /* (94) distinct ::= DISTINCT */
158968 239, /* (95) distinct ::= ALL */
158969 239, /* (96) distinct ::= */
158970 250, /* (97) sclp ::= */
158971 240, /* (98) selcollist ::= sclp scanpt expr scanpt as */
158972 240, /* (99) selcollist ::= sclp scanpt STAR */
158973 240, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
158974 251, /* (101) as ::= AS nm */
158975 251, /* (102) as ::= */
158976 241, /* (103) from ::= */
158977 241, /* (104) from ::= FROM seltablist */
158978 253, /* (105) stl_prefix ::= seltablist joinop */
158979 253, /* (106) stl_prefix ::= */
158980 252, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
158981 252, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
158982 252, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
158983 252, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
158984 197, /* (111) dbnm ::= */
158985 197, /* (112) dbnm ::= DOT nm */
158986 234, /* (113) fullname ::= nm */
158987 234, /* (114) fullname ::= nm DOT nm */
158988 259, /* (115) xfullname ::= nm */
158989 259, /* (116) xfullname ::= nm DOT nm */
158990 259, /* (117) xfullname ::= nm DOT nm AS nm */
158991 259, /* (118) xfullname ::= nm AS nm */
158992 254, /* (119) joinop ::= COMMA|JOIN */
158993 254, /* (120) joinop ::= JOIN_KW JOIN */
158994 254, /* (121) joinop ::= JOIN_KW nm JOIN */
158995 254, /* (122) joinop ::= JOIN_KW nm nm JOIN */
158996 256, /* (123) on_opt ::= ON expr */
158997 256, /* (124) on_opt ::= */
158998 255, /* (125) indexed_opt ::= */
158999 255, /* (126) indexed_opt ::= INDEXED BY nm */
159000 255, /* (127) indexed_opt ::= NOT INDEXED */
159001 257, /* (128) using_opt ::= USING LP idlist RP */
159002 257, /* (129) using_opt ::= */
159003 245, /* (130) orderby_opt ::= */
159004 245, /* (131) orderby_opt ::= ORDER BY sortlist */
159005 227, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
159006 227, /* (133) sortlist ::= expr sortorder nulls */
159007 215, /* (134) sortorder ::= ASC */
159008 215, /* (135) sortorder ::= DESC */
159009 215, /* (136) sortorder ::= */
159010 261, /* (137) nulls ::= NULLS FIRST */
159011 261, /* (138) nulls ::= NULLS LAST */
159012 261, /* (139) nulls ::= */
159013 243, /* (140) groupby_opt ::= */
159014 243, /* (141) groupby_opt ::= GROUP BY nexprlist */
159015 244, /* (142) having_opt ::= */
159016 244, /* (143) having_opt ::= HAVING expr */
159017 246, /* (144) limit_opt ::= */
159018 246, /* (145) limit_opt ::= LIMIT expr */
159019 246, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
159020 246, /* (147) limit_opt ::= LIMIT expr COMMA expr */
159021 187, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
159022 242, /* (149) where_opt ::= */
159023 242, /* (150) where_opt ::= WHERE expr */
159024 263, /* (151) where_opt_ret ::= */
159025 263, /* (152) where_opt_ret ::= WHERE expr */
159026 263, /* (153) where_opt_ret ::= RETURNING selcollist */
159027 263, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
159028 187, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
159029 264, /* (156) setlist ::= setlist COMMA nm EQ expr */
159030 264, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
159031 264, /* (158) setlist ::= nm EQ expr */
159032 264, /* (159) setlist ::= LP idlist RP EQ expr */
159033 187, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
159034 187, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
159035 267, /* (162) upsert ::= */
159036 267, /* (163) upsert ::= RETURNING selcollist */
159037 267, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
159038 267, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
159039 267, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
159040 267, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
159041 268, /* (168) returning ::= RETURNING selcollist */
159042 265, /* (169) insert_cmd ::= INSERT orconf */
159043 265, /* (170) insert_cmd ::= REPLACE */
159044 266, /* (171) idlist_opt ::= */
159045 266, /* (172) idlist_opt ::= LP idlist RP */
159046 260, /* (173) idlist ::= idlist COMMA nm */
159047 260, /* (174) idlist ::= nm */
159048 213, /* (175) expr ::= LP expr RP */
159049 213, /* (176) expr ::= ID|INDEXED */
159050 213, /* (177) expr ::= JOIN_KW */
159051 213, /* (178) expr ::= nm DOT nm */
159052 213, /* (179) expr ::= nm DOT nm DOT nm */
159053 212, /* (180) term ::= NULL|FLOAT|BLOB */
159054 212, /* (181) term ::= STRING */
159055 212, /* (182) term ::= INTEGER */
159056 213, /* (183) expr ::= VARIABLE */
159057 213, /* (184) expr ::= expr COLLATE ID|STRING */
159058 213, /* (185) expr ::= CAST LP expr AS typetoken RP */
159059 213, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
159060 213, /* (187) expr ::= ID|INDEXED LP STAR RP */
159061 213, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
159062 213, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
159063 212, /* (190) term ::= CTIME_KW */
159064 213, /* (191) expr ::= LP nexprlist COMMA expr RP */
159065 213, /* (192) expr ::= expr AND expr */
159066 213, /* (193) expr ::= expr OR expr */
159067 213, /* (194) expr ::= expr LT|GT|GE|LE expr */
159068 213, /* (195) expr ::= expr EQ|NE expr */
159069 213, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
159070 213, /* (197) expr ::= expr PLUS|MINUS expr */
159071 213, /* (198) expr ::= expr STAR|SLASH|REM expr */
159072 213, /* (199) expr ::= expr CONCAT expr */
159073 270, /* (200) likeop ::= NOT LIKE_KW|MATCH */
159074 213, /* (201) expr ::= expr likeop expr */
159075 213, /* (202) expr ::= expr likeop expr ESCAPE expr */
159076 213, /* (203) expr ::= expr ISNULL|NOTNULL */
159077 213, /* (204) expr ::= expr NOT NULL */
159078 213, /* (205) expr ::= expr IS expr */
159079 213, /* (206) expr ::= expr IS NOT expr */
159080 213, /* (207) expr ::= NOT expr */
159081 213, /* (208) expr ::= BITNOT expr */
159082 213, /* (209) expr ::= PLUS|MINUS expr */
159083 271, /* (210) between_op ::= BETWEEN */
159084 271, /* (211) between_op ::= NOT BETWEEN */
159085 213, /* (212) expr ::= expr between_op expr AND expr */
159086 272, /* (213) in_op ::= IN */
159087 272, /* (214) in_op ::= NOT IN */
159088 213, /* (215) expr ::= expr in_op LP exprlist RP */
159089 213, /* (216) expr ::= LP select RP */
159090 213, /* (217) expr ::= expr in_op LP select RP */
159091 213, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
159092 213, /* (219) expr ::= EXISTS LP select RP */
159093 213, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
159094 275, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
159095 275, /* (222) case_exprlist ::= WHEN expr THEN expr */
159096 276, /* (223) case_else ::= ELSE expr */
159097 276, /* (224) case_else ::= */
159098 274, /* (225) case_operand ::= expr */
159099 274, /* (226) case_operand ::= */
159100 258, /* (227) exprlist ::= */
159101 249, /* (228) nexprlist ::= nexprlist COMMA expr */
159102 249, /* (229) nexprlist ::= expr */
159103 273, /* (230) paren_exprlist ::= */
159104 273, /* (231) paren_exprlist ::= LP exprlist RP */
159105 187, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
159106 277, /* (233) uniqueflag ::= UNIQUE */
159107 277, /* (234) uniqueflag ::= */
159108 217, /* (235) eidlist_opt ::= */
159109 217, /* (236) eidlist_opt ::= LP eidlist RP */
159110 228, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
159111 228, /* (238) eidlist ::= nm collate sortorder */
159112 278, /* (239) collate ::= */
159113 278, /* (240) collate ::= COLLATE ID|STRING */
159114 187, /* (241) cmd ::= DROP INDEX ifexists fullname */
159115 187, /* (242) cmd ::= VACUUM vinto */
159116 187, /* (243) cmd ::= VACUUM nm vinto */
159117 279, /* (244) vinto ::= INTO expr */
159118 279, /* (245) vinto ::= */
159119 187, /* (246) cmd ::= PRAGMA nm dbnm */
159120 187, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
159121 187, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
159122 187, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
159123 187, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
159124 207, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
159125 208, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
159126 187, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
159127 281, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
159128 283, /* (255) trigger_time ::= BEFORE|AFTER */
159129 283, /* (256) trigger_time ::= INSTEAD OF */
159130 283, /* (257) trigger_time ::= */
159131 284, /* (258) trigger_event ::= DELETE|INSERT */
159132 284, /* (259) trigger_event ::= UPDATE */
159133 284, /* (260) trigger_event ::= UPDATE OF idlist */
159134 286, /* (261) when_clause ::= */
159135 286, /* (262) when_clause ::= WHEN expr */
159136 282, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
159137 282, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
159138 288, /* (265) trnm ::= nm DOT nm */
159139 289, /* (266) tridxby ::= INDEXED BY nm */
159140 289, /* (267) tridxby ::= NOT INDEXED */
159141 287, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
159142 287, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
159143 287, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
159144 287, /* (271) trigger_cmd ::= scanpt select scanpt */
159145 213, /* (272) expr ::= RAISE LP IGNORE RP */
159146 213, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
159147 232, /* (274) raisetype ::= ROLLBACK */
159148 232, /* (275) raisetype ::= ABORT */
159149 232, /* (276) raisetype ::= FAIL */
159150 187, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
159151 187, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
159152 187, /* (279) cmd ::= DETACH database_kw_opt expr */
159153 291, /* (280) key_opt ::= */
159154 291, /* (281) key_opt ::= KEY expr */
159155 187, /* (282) cmd ::= REINDEX */
159156 187, /* (283) cmd ::= REINDEX nm dbnm */
159157 187, /* (284) cmd ::= ANALYZE */
159158 187, /* (285) cmd ::= ANALYZE nm dbnm */
159159 187, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
159160 187, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
159161 292, /* (288) add_column_fullname ::= fullname */
159162 187, /* (289) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
159163 187, /* (290) cmd ::= create_vtab */
159164 187, /* (291) cmd ::= create_vtab LP vtabarglist RP */
159165 294, /* (292) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
159166 296, /* (293) vtabarg ::= */
159167 297, /* (294) vtabargtoken ::= ANY */
159168 297, /* (295) vtabargtoken ::= lp anylist RP */
159169 298, /* (296) lp ::= LP */
159170 262, /* (297) with ::= WITH wqlist */
159171 262, /* (298) with ::= WITH RECURSIVE wqlist */
159172 237, /* (299) wqlist ::= nm eidlist_opt AS LP select RP */
159173 237, /* (300) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
159174 300, /* (301) windowdefn_list ::= windowdefn */
159175 300, /* (302) windowdefn_list ::= windowdefn_list COMMA windowdefn */
159176 301, /* (303) windowdefn ::= nm AS LP window RP */
159177 302, /* (304) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
159178 302, /* (305) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
159179 302, /* (306) window ::= ORDER BY sortlist frame_opt */
159180 302, /* (307) window ::= nm ORDER BY sortlist frame_opt */
159181 302, /* (308) window ::= frame_opt */
159182 302, /* (309) window ::= nm frame_opt */
159183 303, /* (310) frame_opt ::= */
159184 303, /* (311) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
159185 303, /* (312) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
159186 307, /* (313) range_or_rows ::= RANGE|ROWS|GROUPS */
159187 309, /* (314) frame_bound_s ::= frame_bound */
159188 309, /* (315) frame_bound_s ::= UNBOUNDED PRECEDING */
159189 310, /* (316) frame_bound_e ::= frame_bound */
159190 310, /* (317) frame_bound_e ::= UNBOUNDED FOLLOWING */
159191 308, /* (318) frame_bound ::= expr PRECEDING|FOLLOWING */
159192 308, /* (319) frame_bound ::= CURRENT ROW */
159193 311, /* (320) frame_exclude_opt ::= */
159194 311, /* (321) frame_exclude_opt ::= EXCLUDE frame_exclude */
159195 312, /* (322) frame_exclude ::= NO OTHERS */
159196 312, /* (323) frame_exclude ::= CURRENT ROW */
159197 312, /* (324) frame_exclude ::= GROUP|TIES */
159198 247, /* (325) window_clause ::= WINDOW windowdefn_list */
159199 269, /* (326) filter_over ::= filter_clause over_clause */
159200 269, /* (327) filter_over ::= over_clause */
159201 269, /* (328) filter_over ::= filter_clause */
159202 306, /* (329) over_clause ::= OVER LP window RP */
159203 306, /* (330) over_clause ::= OVER nm */
159204 305, /* (331) filter_clause ::= FILTER LP WHERE expr RP */
159205 182, /* (332) input ::= cmdlist */
159206 183, /* (333) cmdlist ::= cmdlist ecmd */
159207 183, /* (334) cmdlist ::= ecmd */
159208 184, /* (335) ecmd ::= SEMI */
159209 184, /* (336) ecmd ::= cmdx SEMI */
159210 184, /* (337) ecmd ::= explain cmdx SEMI */
159211 189, /* (338) trans_opt ::= */
159212 189, /* (339) trans_opt ::= TRANSACTION */
159213 189, /* (340) trans_opt ::= TRANSACTION nm */
159214 191, /* (341) savepoint_opt ::= SAVEPOINT */
159215 191, /* (342) savepoint_opt ::= */
159216 187, /* (343) cmd ::= create_table create_table_args */
159217 198, /* (344) columnlist ::= columnlist COMMA columnname carglist */
159218 198, /* (345) columnlist ::= columnname carglist */
159219 190, /* (346) nm ::= ID|INDEXED */
159220 190, /* (347) nm ::= STRING */
159221 190, /* (348) nm ::= JOIN_KW */
159222 204, /* (349) typetoken ::= typename */
159223 205, /* (350) typename ::= ID|STRING */
159224 206, /* (351) signed ::= plus_num */
159225 206, /* (352) signed ::= minus_num */
159226 203, /* (353) carglist ::= carglist ccons */
159227 203, /* (354) carglist ::= */
159228 211, /* (355) ccons ::= NULL onconf */
159229 211, /* (356) ccons ::= GENERATED ALWAYS AS generated */
159230 211, /* (357) ccons ::= AS generated */
159231 199, /* (358) conslist_opt ::= COMMA conslist */
159232 224, /* (359) conslist ::= conslist tconscomma tcons */
159233 224, /* (360) conslist ::= tcons */
159234 225, /* (361) tconscomma ::= */
159235 229, /* (362) defer_subclause_opt ::= defer_subclause */
159236 231, /* (363) resolvetype ::= raisetype */
159237 235, /* (364) selectnowith ::= oneselect */
159238 236, /* (365) oneselect ::= values */
159239 250, /* (366) sclp ::= selcollist COMMA */
159240 251, /* (367) as ::= ID|STRING */
159241 268, /* (368) returning ::= */
159242 213, /* (369) expr ::= term */
159243 270, /* (370) likeop ::= LIKE_KW|MATCH */
159244 258, /* (371) exprlist ::= nexprlist */
159245 280, /* (372) nmnum ::= plus_num */
159246 280, /* (373) nmnum ::= nm */
159247 280, /* (374) nmnum ::= ON */
159248 280, /* (375) nmnum ::= DELETE */
159249 280, /* (376) nmnum ::= DEFAULT */
159250 207, /* (377) plus_num ::= INTEGER|FLOAT */
159251 285, /* (378) foreach_clause ::= */
159252 285, /* (379) foreach_clause ::= FOR EACH ROW */
159253 288, /* (380) trnm ::= nm */
159254 289, /* (381) tridxby ::= */
159255 290, /* (382) database_kw_opt ::= DATABASE */
159256 290, /* (383) database_kw_opt ::= */
159257 293, /* (384) kwcolumn_opt ::= */
159258 293, /* (385) kwcolumn_opt ::= COLUMNKW */
159259 295, /* (386) vtabarglist ::= vtabarg */
159260 295, /* (387) vtabarglist ::= vtabarglist COMMA vtabarg */
159261 296, /* (388) vtabarg ::= vtabarg vtabargtoken */
159262 299, /* (389) anylist ::= */
159263 299, /* (390) anylist ::= anylist LP anylist RP */
159264 299, /* (391) anylist ::= anylist ANY */
159265 262, /* (392) with ::= */
159266 };
159267
159268 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
159269 ** of symbols on the right-hand side of that rule. */
159270 static const signed char yyRuleInfoNRhs[] = {
@@ -159150,248 +159414,255 @@
159414 -2, /* (143) having_opt ::= HAVING expr */
159415 0, /* (144) limit_opt ::= */
159416 -2, /* (145) limit_opt ::= LIMIT expr */
159417 -4, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
159418 -4, /* (147) limit_opt ::= LIMIT expr COMMA expr */
159419 -6, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
159420 0, /* (149) where_opt ::= */
159421 -2, /* (150) where_opt ::= WHERE expr */
159422 0, /* (151) where_opt_ret ::= */
159423 -2, /* (152) where_opt_ret ::= WHERE expr */
159424 -2, /* (153) where_opt_ret ::= RETURNING selcollist */
159425 -4, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
159426 -9, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
159427 -5, /* (156) setlist ::= setlist COMMA nm EQ expr */
159428 -7, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
159429 -3, /* (158) setlist ::= nm EQ expr */
159430 -5, /* (159) setlist ::= LP idlist RP EQ expr */
159431 -7, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
159432 -8, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
159433 0, /* (162) upsert ::= */
159434 -2, /* (163) upsert ::= RETURNING selcollist */
159435 -12, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
159436 -9, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
159437 -5, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
159438 -8, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
159439 -2, /* (168) returning ::= RETURNING selcollist */
159440 -2, /* (169) insert_cmd ::= INSERT orconf */
159441 -1, /* (170) insert_cmd ::= REPLACE */
159442 0, /* (171) idlist_opt ::= */
159443 -3, /* (172) idlist_opt ::= LP idlist RP */
159444 -3, /* (173) idlist ::= idlist COMMA nm */
159445 -1, /* (174) idlist ::= nm */
159446 -3, /* (175) expr ::= LP expr RP */
159447 -1, /* (176) expr ::= ID|INDEXED */
159448 -1, /* (177) expr ::= JOIN_KW */
159449 -3, /* (178) expr ::= nm DOT nm */
159450 -5, /* (179) expr ::= nm DOT nm DOT nm */
159451 -1, /* (180) term ::= NULL|FLOAT|BLOB */
159452 -1, /* (181) term ::= STRING */
159453 -1, /* (182) term ::= INTEGER */
159454 -1, /* (183) expr ::= VARIABLE */
159455 -3, /* (184) expr ::= expr COLLATE ID|STRING */
159456 -6, /* (185) expr ::= CAST LP expr AS typetoken RP */
159457 -5, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
159458 -4, /* (187) expr ::= ID|INDEXED LP STAR RP */
159459 -6, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
159460 -5, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
159461 -1, /* (190) term ::= CTIME_KW */
159462 -5, /* (191) expr ::= LP nexprlist COMMA expr RP */
159463 -3, /* (192) expr ::= expr AND expr */
159464 -3, /* (193) expr ::= expr OR expr */
159465 -3, /* (194) expr ::= expr LT|GT|GE|LE expr */
159466 -3, /* (195) expr ::= expr EQ|NE expr */
159467 -3, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
159468 -3, /* (197) expr ::= expr PLUS|MINUS expr */
159469 -3, /* (198) expr ::= expr STAR|SLASH|REM expr */
159470 -3, /* (199) expr ::= expr CONCAT expr */
159471 -2, /* (200) likeop ::= NOT LIKE_KW|MATCH */
159472 -3, /* (201) expr ::= expr likeop expr */
159473 -5, /* (202) expr ::= expr likeop expr ESCAPE expr */
159474 -2, /* (203) expr ::= expr ISNULL|NOTNULL */
159475 -3, /* (204) expr ::= expr NOT NULL */
159476 -3, /* (205) expr ::= expr IS expr */
159477 -4, /* (206) expr ::= expr IS NOT expr */
159478 -2, /* (207) expr ::= NOT expr */
159479 -2, /* (208) expr ::= BITNOT expr */
159480 -2, /* (209) expr ::= PLUS|MINUS expr */
159481 -1, /* (210) between_op ::= BETWEEN */
159482 -2, /* (211) between_op ::= NOT BETWEEN */
159483 -5, /* (212) expr ::= expr between_op expr AND expr */
159484 -1, /* (213) in_op ::= IN */
159485 -2, /* (214) in_op ::= NOT IN */
159486 -5, /* (215) expr ::= expr in_op LP exprlist RP */
159487 -3, /* (216) expr ::= LP select RP */
159488 -5, /* (217) expr ::= expr in_op LP select RP */
159489 -5, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
159490 -4, /* (219) expr ::= EXISTS LP select RP */
159491 -5, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
159492 -5, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
159493 -4, /* (222) case_exprlist ::= WHEN expr THEN expr */
159494 -2, /* (223) case_else ::= ELSE expr */
159495 0, /* (224) case_else ::= */
159496 -1, /* (225) case_operand ::= expr */
159497 0, /* (226) case_operand ::= */
159498 0, /* (227) exprlist ::= */
159499 -3, /* (228) nexprlist ::= nexprlist COMMA expr */
159500 -1, /* (229) nexprlist ::= expr */
159501 0, /* (230) paren_exprlist ::= */
159502 -3, /* (231) paren_exprlist ::= LP exprlist RP */
159503 -12, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
159504 -1, /* (233) uniqueflag ::= UNIQUE */
159505 0, /* (234) uniqueflag ::= */
159506 0, /* (235) eidlist_opt ::= */
159507 -3, /* (236) eidlist_opt ::= LP eidlist RP */
159508 -5, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
159509 -3, /* (238) eidlist ::= nm collate sortorder */
159510 0, /* (239) collate ::= */
159511 -2, /* (240) collate ::= COLLATE ID|STRING */
159512 -4, /* (241) cmd ::= DROP INDEX ifexists fullname */
159513 -2, /* (242) cmd ::= VACUUM vinto */
159514 -3, /* (243) cmd ::= VACUUM nm vinto */
159515 -2, /* (244) vinto ::= INTO expr */
159516 0, /* (245) vinto ::= */
159517 -3, /* (246) cmd ::= PRAGMA nm dbnm */
159518 -5, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
159519 -6, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
159520 -5, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
159521 -6, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
159522 -2, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
159523 -2, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
159524 -5, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
159525 -11, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
159526 -1, /* (255) trigger_time ::= BEFORE|AFTER */
159527 -2, /* (256) trigger_time ::= INSTEAD OF */
159528 0, /* (257) trigger_time ::= */
159529 -1, /* (258) trigger_event ::= DELETE|INSERT */
159530 -1, /* (259) trigger_event ::= UPDATE */
159531 -3, /* (260) trigger_event ::= UPDATE OF idlist */
159532 0, /* (261) when_clause ::= */
159533 -2, /* (262) when_clause ::= WHEN expr */
159534 -3, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
159535 -2, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
159536 -3, /* (265) trnm ::= nm DOT nm */
159537 -3, /* (266) tridxby ::= INDEXED BY nm */
159538 -2, /* (267) tridxby ::= NOT INDEXED */
159539 -9, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
159540 -8, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
159541 -6, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
159542 -3, /* (271) trigger_cmd ::= scanpt select scanpt */
159543 -4, /* (272) expr ::= RAISE LP IGNORE RP */
159544 -6, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
159545 -1, /* (274) raisetype ::= ROLLBACK */
159546 -1, /* (275) raisetype ::= ABORT */
159547 -1, /* (276) raisetype ::= FAIL */
159548 -4, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
159549 -6, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
159550 -3, /* (279) cmd ::= DETACH database_kw_opt expr */
159551 0, /* (280) key_opt ::= */
159552 -2, /* (281) key_opt ::= KEY expr */
159553 -1, /* (282) cmd ::= REINDEX */
159554 -3, /* (283) cmd ::= REINDEX nm dbnm */
159555 -1, /* (284) cmd ::= ANALYZE */
159556 -3, /* (285) cmd ::= ANALYZE nm dbnm */
159557 -6, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
159558 -7, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
159559 -1, /* (288) add_column_fullname ::= fullname */
159560 -8, /* (289) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
159561 -1, /* (290) cmd ::= create_vtab */
159562 -4, /* (291) cmd ::= create_vtab LP vtabarglist RP */
159563 -8, /* (292) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
159564 0, /* (293) vtabarg ::= */
159565 -1, /* (294) vtabargtoken ::= ANY */
159566 -3, /* (295) vtabargtoken ::= lp anylist RP */
159567 -1, /* (296) lp ::= LP */
159568 -2, /* (297) with ::= WITH wqlist */
159569 -3, /* (298) with ::= WITH RECURSIVE wqlist */
159570 -6, /* (299) wqlist ::= nm eidlist_opt AS LP select RP */
159571 -8, /* (300) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
159572 -1, /* (301) windowdefn_list ::= windowdefn */
159573 -3, /* (302) windowdefn_list ::= windowdefn_list COMMA windowdefn */
159574 -5, /* (303) windowdefn ::= nm AS LP window RP */
159575 -5, /* (304) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
159576 -6, /* (305) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
159577 -4, /* (306) window ::= ORDER BY sortlist frame_opt */
159578 -5, /* (307) window ::= nm ORDER BY sortlist frame_opt */
159579 -1, /* (308) window ::= frame_opt */
159580 -2, /* (309) window ::= nm frame_opt */
159581 0, /* (310) frame_opt ::= */
159582 -3, /* (311) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
159583 -6, /* (312) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
159584 -1, /* (313) range_or_rows ::= RANGE|ROWS|GROUPS */
159585 -1, /* (314) frame_bound_s ::= frame_bound */
159586 -2, /* (315) frame_bound_s ::= UNBOUNDED PRECEDING */
159587 -1, /* (316) frame_bound_e ::= frame_bound */
159588 -2, /* (317) frame_bound_e ::= UNBOUNDED FOLLOWING */
159589 -2, /* (318) frame_bound ::= expr PRECEDING|FOLLOWING */
159590 -2, /* (319) frame_bound ::= CURRENT ROW */
159591 0, /* (320) frame_exclude_opt ::= */
159592 -2, /* (321) frame_exclude_opt ::= EXCLUDE frame_exclude */
159593 -2, /* (322) frame_exclude ::= NO OTHERS */
159594 -2, /* (323) frame_exclude ::= CURRENT ROW */
159595 -1, /* (324) frame_exclude ::= GROUP|TIES */
159596 -2, /* (325) window_clause ::= WINDOW windowdefn_list */
159597 -2, /* (326) filter_over ::= filter_clause over_clause */
159598 -1, /* (327) filter_over ::= over_clause */
159599 -1, /* (328) filter_over ::= filter_clause */
159600 -4, /* (329) over_clause ::= OVER LP window RP */
159601 -2, /* (330) over_clause ::= OVER nm */
159602 -5, /* (331) filter_clause ::= FILTER LP WHERE expr RP */
159603 -1, /* (332) input ::= cmdlist */
159604 -2, /* (333) cmdlist ::= cmdlist ecmd */
159605 -1, /* (334) cmdlist ::= ecmd */
159606 -1, /* (335) ecmd ::= SEMI */
159607 -2, /* (336) ecmd ::= cmdx SEMI */
159608 -3, /* (337) ecmd ::= explain cmdx SEMI */
159609 0, /* (338) trans_opt ::= */
159610 -1, /* (339) trans_opt ::= TRANSACTION */
159611 -2, /* (340) trans_opt ::= TRANSACTION nm */
159612 -1, /* (341) savepoint_opt ::= SAVEPOINT */
159613 0, /* (342) savepoint_opt ::= */
159614 -2, /* (343) cmd ::= create_table create_table_args */
159615 -4, /* (344) columnlist ::= columnlist COMMA columnname carglist */
159616 -2, /* (345) columnlist ::= columnname carglist */
159617 -1, /* (346) nm ::= ID|INDEXED */
159618 -1, /* (347) nm ::= STRING */
159619 -1, /* (348) nm ::= JOIN_KW */
159620 -1, /* (349) typetoken ::= typename */
159621 -1, /* (350) typename ::= ID|STRING */
159622 -1, /* (351) signed ::= plus_num */
159623 -1, /* (352) signed ::= minus_num */
159624 -2, /* (353) carglist ::= carglist ccons */
159625 0, /* (354) carglist ::= */
159626 -2, /* (355) ccons ::= NULL onconf */
159627 -4, /* (356) ccons ::= GENERATED ALWAYS AS generated */
159628 -2, /* (357) ccons ::= AS generated */
159629 -2, /* (358) conslist_opt ::= COMMA conslist */
159630 -3, /* (359) conslist ::= conslist tconscomma tcons */
159631 -1, /* (360) conslist ::= tcons */
159632 0, /* (361) tconscomma ::= */
159633 -1, /* (362) defer_subclause_opt ::= defer_subclause */
159634 -1, /* (363) resolvetype ::= raisetype */
159635 -1, /* (364) selectnowith ::= oneselect */
159636 -1, /* (365) oneselect ::= values */
159637 -2, /* (366) sclp ::= selcollist COMMA */
159638 -1, /* (367) as ::= ID|STRING */
159639 0, /* (368) returning ::= */
159640 -1, /* (369) expr ::= term */
159641 -1, /* (370) likeop ::= LIKE_KW|MATCH */
159642 -1, /* (371) exprlist ::= nexprlist */
159643 -1, /* (372) nmnum ::= plus_num */
159644 -1, /* (373) nmnum ::= nm */
159645 -1, /* (374) nmnum ::= ON */
159646 -1, /* (375) nmnum ::= DELETE */
159647 -1, /* (376) nmnum ::= DEFAULT */
159648 -1, /* (377) plus_num ::= INTEGER|FLOAT */
159649 0, /* (378) foreach_clause ::= */
159650 -3, /* (379) foreach_clause ::= FOR EACH ROW */
159651 -1, /* (380) trnm ::= nm */
159652 0, /* (381) tridxby ::= */
159653 -1, /* (382) database_kw_opt ::= DATABASE */
159654 0, /* (383) database_kw_opt ::= */
159655 0, /* (384) kwcolumn_opt ::= */
159656 -1, /* (385) kwcolumn_opt ::= COLUMNKW */
159657 -1, /* (386) vtabarglist ::= vtabarg */
159658 -3, /* (387) vtabarglist ::= vtabarglist COMMA vtabarg */
159659 -2, /* (388) vtabarg ::= vtabarg vtabargtoken */
159660 0, /* (389) anylist ::= */
159661 -4, /* (390) anylist ::= anylist LP anylist RP */
159662 -2, /* (391) anylist ::= anylist ANY */
159663 0, /* (392) with ::= */
159664 };
159665
159666 static void yy_accept(yyParser*); /* Forward Declaration */
159667
159668 /*
@@ -159439,20 +159710,20 @@
159710 break;
159711 case 2: /* cmdx ::= cmd */
159712 { sqlite3FinishCoding(pParse); }
159713 break;
159714 case 3: /* cmd ::= BEGIN transtype trans_opt */
159715 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy412);}
159716 break;
159717 case 4: /* transtype ::= */
159718 {yymsp[1].minor.yy412 = TK_DEFERRED;}
159719 break;
159720 case 5: /* transtype ::= DEFERRED */
159721 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
159722 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
159723 case 313: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==313);
159724 {yymsp[0].minor.yy412 = yymsp[0].major; /*A-overwrites-X*/}
159725 break;
159726 case 8: /* cmd ::= COMMIT|END trans_opt */
159727 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
159728 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
159729 break;
@@ -159471,11 +159742,11 @@
159742 sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0);
159743 }
159744 break;
159745 case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
159746 {
159747 sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy412,0,0,yymsp[-2].minor.yy412);
159748 }
159749 break;
159750 case 14: /* createkw ::= CREATE */
159751 {disableLookaside(pParse);}
159752 break;
@@ -159485,37 +159756,37 @@
159756 case 45: /* autoinc ::= */ yytestcase(yyruleno==45);
159757 case 60: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==60);
159758 case 70: /* defer_subclause_opt ::= */ yytestcase(yyruleno==70);
159759 case 79: /* ifexists ::= */ yytestcase(yyruleno==79);
159760 case 96: /* distinct ::= */ yytestcase(yyruleno==96);
159761 case 239: /* collate ::= */ yytestcase(yyruleno==239);
159762 {yymsp[1].minor.yy412 = 0;}
159763 break;
159764 case 16: /* ifnotexists ::= IF NOT EXISTS */
159765 {yymsp[-2].minor.yy412 = 1;}
159766 break;
159767 case 17: /* temp ::= TEMP */
159768 case 46: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==46);
159769 {yymsp[0].minor.yy412 = 1;}
159770 break;
159771 case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
159772 {
159773 sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy412,0);
159774 }
159775 break;
159776 case 20: /* create_table_args ::= AS select */
159777 {
159778 sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy293);
159779 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy293);
159780 }
159781 break;
159782 case 22: /* table_options ::= WITHOUT nm */
159783 {
159784 if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
159785 yymsp[-1].minor.yy412 = TF_WithoutRowid | TF_NoVisibleRowid;
159786 }else{
159787 yymsp[-1].minor.yy412 = 0;
159788 sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
159789 }
159790 }
159791 break;
159792 case 23: /* columnname ::= nm typetoken */
@@ -159540,11 +159811,11 @@
159811 {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
159812 break;
159813 case 28: /* scanpt ::= */
159814 {
159815 assert( yyLookahead!=YYNOCODE );
159816 yymsp[1].minor.yy504 = yyLookaheadToken.z;
159817 }
159818 break;
159819 case 29: /* scantok ::= */
159820 {
159821 assert( yyLookahead!=YYNOCODE );
@@ -159554,21 +159825,21 @@
159825 case 30: /* ccons ::= CONSTRAINT nm */
159826 case 65: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==65);
159827 {pParse->constraintName = yymsp[0].minor.yy0;}
159828 break;
159829 case 31: /* ccons ::= DEFAULT scantok term */
159830 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy354,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
159831 break;
159832 case 32: /* ccons ::= DEFAULT LP expr RP */
159833 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy354,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
159834 break;
159835 case 33: /* ccons ::= DEFAULT PLUS scantok term */
159836 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy354,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
159837 break;
159838 case 34: /* ccons ::= DEFAULT MINUS scantok term */
159839 {
159840 Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy354, 0);
159841 sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
159842 }
159843 break;
159844 case 35: /* ccons ::= DEFAULT scantok ID|INDEXED */
159845 {
@@ -159579,323 +159850,323 @@
159850 }
159851 sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
159852 }
159853 break;
159854 case 36: /* ccons ::= NOT NULL onconf */
159855 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy412);}
159856 break;
159857 case 37: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
159858 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy412,yymsp[0].minor.yy412,yymsp[-2].minor.yy412);}
159859 break;
159860 case 38: /* ccons ::= UNIQUE onconf */
159861 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy412,0,0,0,0,
159862 SQLITE_IDXTYPE_UNIQUE);}
159863 break;
159864 case 39: /* ccons ::= CHECK LP expr RP */
159865 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy354,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
159866 break;
159867 case 40: /* ccons ::= REFERENCES nm eidlist_opt refargs */
159868 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy350,yymsp[0].minor.yy412);}
159869 break;
159870 case 41: /* ccons ::= defer_subclause */
159871 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy412);}
159872 break;
159873 case 42: /* ccons ::= COLLATE ID|STRING */
159874 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
159875 break;
159876 case 43: /* generated ::= LP expr RP */
159877 {sqlite3AddGenerated(pParse,yymsp[-1].minor.yy354,0);}
159878 break;
159879 case 44: /* generated ::= LP expr RP ID */
159880 {sqlite3AddGenerated(pParse,yymsp[-2].minor.yy354,&yymsp[0].minor.yy0);}
159881 break;
159882 case 47: /* refargs ::= */
159883 { yymsp[1].minor.yy412 = OE_None*0x0101; /* EV: R-19803-45884 */}
159884 break;
159885 case 48: /* refargs ::= refargs refarg */
159886 { yymsp[-1].minor.yy412 = (yymsp[-1].minor.yy412 & ~yymsp[0].minor.yy463.mask) | yymsp[0].minor.yy463.value; }
159887 break;
159888 case 49: /* refarg ::= MATCH nm */
159889 { yymsp[-1].minor.yy463.value = 0; yymsp[-1].minor.yy463.mask = 0x000000; }
159890 break;
159891 case 50: /* refarg ::= ON INSERT refact */
159892 { yymsp[-2].minor.yy463.value = 0; yymsp[-2].minor.yy463.mask = 0x000000; }
159893 break;
159894 case 51: /* refarg ::= ON DELETE refact */
159895 { yymsp[-2].minor.yy463.value = yymsp[0].minor.yy412; yymsp[-2].minor.yy463.mask = 0x0000ff; }
159896 break;
159897 case 52: /* refarg ::= ON UPDATE refact */
159898 { yymsp[-2].minor.yy463.value = yymsp[0].minor.yy412<<8; yymsp[-2].minor.yy463.mask = 0x00ff00; }
159899 break;
159900 case 53: /* refact ::= SET NULL */
159901 { yymsp[-1].minor.yy412 = OE_SetNull; /* EV: R-33326-45252 */}
159902 break;
159903 case 54: /* refact ::= SET DEFAULT */
159904 { yymsp[-1].minor.yy412 = OE_SetDflt; /* EV: R-33326-45252 */}
159905 break;
159906 case 55: /* refact ::= CASCADE */
159907 { yymsp[0].minor.yy412 = OE_Cascade; /* EV: R-33326-45252 */}
159908 break;
159909 case 56: /* refact ::= RESTRICT */
159910 { yymsp[0].minor.yy412 = OE_Restrict; /* EV: R-33326-45252 */}
159911 break;
159912 case 57: /* refact ::= NO ACTION */
159913 { yymsp[-1].minor.yy412 = OE_None; /* EV: R-33326-45252 */}
159914 break;
159915 case 58: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
159916 {yymsp[-2].minor.yy412 = 0;}
159917 break;
159918 case 59: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
159919 case 74: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==74);
159920 case 169: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==169);
159921 {yymsp[-1].minor.yy412 = yymsp[0].minor.yy412;}
159922 break;
159923 case 61: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
159924 case 78: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==78);
159925 case 211: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==211);
159926 case 214: /* in_op ::= NOT IN */ yytestcase(yyruleno==214);
159927 case 240: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==240);
159928 {yymsp[-1].minor.yy412 = 1;}
159929 break;
159930 case 62: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
159931 {yymsp[-1].minor.yy412 = 0;}
159932 break;
159933 case 64: /* tconscomma ::= COMMA */
159934 {pParse->constraintName.n = 0;}
159935 break;
159936 case 66: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
159937 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy350,yymsp[0].minor.yy412,yymsp[-2].minor.yy412,0);}
159938 break;
159939 case 67: /* tcons ::= UNIQUE LP sortlist RP onconf */
159940 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy350,yymsp[0].minor.yy412,0,0,0,0,
159941 SQLITE_IDXTYPE_UNIQUE);}
159942 break;
159943 case 68: /* tcons ::= CHECK LP expr RP onconf */
159944 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy354,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
159945 break;
159946 case 69: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
159947 {
159948 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy350, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy350, yymsp[-1].minor.yy412);
159949 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy412);
159950 }
159951 break;
159952 case 71: /* onconf ::= */
159953 case 73: /* orconf ::= */ yytestcase(yyruleno==73);
159954 {yymsp[1].minor.yy412 = OE_Default;}
159955 break;
159956 case 72: /* onconf ::= ON CONFLICT resolvetype */
159957 {yymsp[-2].minor.yy412 = yymsp[0].minor.yy412;}
159958 break;
159959 case 75: /* resolvetype ::= IGNORE */
159960 {yymsp[0].minor.yy412 = OE_Ignore;}
159961 break;
159962 case 76: /* resolvetype ::= REPLACE */
159963 case 170: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==170);
159964 {yymsp[0].minor.yy412 = OE_Replace;}
159965 break;
159966 case 77: /* cmd ::= DROP TABLE ifexists fullname */
159967 {
159968 sqlite3DropTable(pParse, yymsp[0].minor.yy457, 0, yymsp[-1].minor.yy412);
159969 }
159970 break;
159971 case 80: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
159972 {
159973 sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy350, yymsp[0].minor.yy293, yymsp[-7].minor.yy412, yymsp[-5].minor.yy412);
159974 }
159975 break;
159976 case 81: /* cmd ::= DROP VIEW ifexists fullname */
159977 {
159978 sqlite3DropTable(pParse, yymsp[0].minor.yy457, 1, yymsp[-1].minor.yy412);
159979 }
159980 break;
159981 case 82: /* cmd ::= select */
159982 {
159983 SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
159984 sqlite3Select(pParse, yymsp[0].minor.yy293, &dest);
159985 sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy293);
159986 }
159987 break;
159988 case 83: /* select ::= WITH wqlist selectnowith */
159989 {
159990 Select *p = yymsp[0].minor.yy293;
159991 if( p ){
159992 p->pWith = yymsp[-1].minor.yy105;
159993 parserDoubleLinkSelect(pParse, p);
159994 }else{
159995 sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy105);
159996 }
159997 yymsp[-2].minor.yy293 = p;
159998 }
159999 break;
160000 case 84: /* select ::= WITH RECURSIVE wqlist selectnowith */
160001 {
160002 Select *p = yymsp[0].minor.yy293;
160003 if( p ){
160004 p->pWith = yymsp[-1].minor.yy105;
160005 parserDoubleLinkSelect(pParse, p);
160006 }else{
160007 sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy105);
160008 }
160009 yymsp[-3].minor.yy293 = p;
160010 }
160011 break;
160012 case 85: /* select ::= selectnowith */
160013 {
160014 Select *p = yymsp[0].minor.yy293;
160015 if( p ){
160016 parserDoubleLinkSelect(pParse, p);
160017 }
160018 yymsp[0].minor.yy293 = p; /*A-overwrites-X*/
160019 }
160020 break;
160021 case 86: /* selectnowith ::= selectnowith multiselect_op oneselect */
160022 {
160023 Select *pRhs = yymsp[0].minor.yy293;
160024 Select *pLhs = yymsp[-2].minor.yy293;
160025 if( pRhs && pRhs->pPrior ){
160026 SrcList *pFrom;
160027 Token x;
160028 x.n = 0;
160029 parserDoubleLinkSelect(pParse, pRhs);
160030 pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
160031 pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
160032 }
160033 if( pRhs ){
160034 pRhs->op = (u8)yymsp[-1].minor.yy412;
160035 pRhs->pPrior = pLhs;
160036 if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
160037 pRhs->selFlags &= ~SF_MultiValue;
160038 if( yymsp[-1].minor.yy412!=TK_ALL ) pParse->hasCompound = 1;
160039 }else{
160040 sqlite3SelectDelete(pParse->db, pLhs);
160041 }
160042 yymsp[-2].minor.yy293 = pRhs;
160043 }
160044 break;
160045 case 87: /* multiselect_op ::= UNION */
160046 case 89: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==89);
160047 {yymsp[0].minor.yy412 = yymsp[0].major; /*A-overwrites-OP*/}
160048 break;
160049 case 88: /* multiselect_op ::= UNION ALL */
160050 {yymsp[-1].minor.yy412 = TK_ALL;}
160051 break;
160052 case 90: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
160053 {
160054 yymsp[-8].minor.yy293 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy350,yymsp[-5].minor.yy457,yymsp[-4].minor.yy354,yymsp[-3].minor.yy350,yymsp[-2].minor.yy354,yymsp[-1].minor.yy350,yymsp[-7].minor.yy412,yymsp[0].minor.yy354);
160055 }
160056 break;
160057 case 91: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
160058 {
160059 yymsp[-9].minor.yy293 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy350,yymsp[-6].minor.yy457,yymsp[-5].minor.yy354,yymsp[-4].minor.yy350,yymsp[-3].minor.yy354,yymsp[-1].minor.yy350,yymsp[-8].minor.yy412,yymsp[0].minor.yy354);
160060 if( yymsp[-9].minor.yy293 ){
160061 yymsp[-9].minor.yy293->pWinDefn = yymsp[-2].minor.yy503;
160062 }else{
160063 sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy503);
160064 }
160065 }
160066 break;
160067 case 92: /* values ::= VALUES LP nexprlist RP */
160068 {
160069 yymsp[-3].minor.yy293 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy350,0,0,0,0,0,SF_Values,0);
160070 }
160071 break;
160072 case 93: /* values ::= values COMMA LP nexprlist RP */
160073 {
160074 Select *pRight, *pLeft = yymsp[-4].minor.yy293;
160075 pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy350,0,0,0,0,0,SF_Values|SF_MultiValue,0);
160076 if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
160077 if( pRight ){
160078 pRight->op = TK_ALL;
160079 pRight->pPrior = pLeft;
160080 yymsp[-4].minor.yy293 = pRight;
160081 }else{
160082 yymsp[-4].minor.yy293 = pLeft;
160083 }
160084 }
160085 break;
160086 case 94: /* distinct ::= DISTINCT */
160087 {yymsp[0].minor.yy412 = SF_Distinct;}
160088 break;
160089 case 95: /* distinct ::= ALL */
160090 {yymsp[0].minor.yy412 = SF_All;}
160091 break;
160092 case 97: /* sclp ::= */
160093 case 130: /* orderby_opt ::= */ yytestcase(yyruleno==130);
160094 case 140: /* groupby_opt ::= */ yytestcase(yyruleno==140);
160095 case 227: /* exprlist ::= */ yytestcase(yyruleno==227);
160096 case 230: /* paren_exprlist ::= */ yytestcase(yyruleno==230);
160097 case 235: /* eidlist_opt ::= */ yytestcase(yyruleno==235);
160098 {yymsp[1].minor.yy350 = 0;}
160099 break;
160100 case 98: /* selcollist ::= sclp scanpt expr scanpt as */
160101 {
160102 yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy350, yymsp[-2].minor.yy354);
160103 if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy350, &yymsp[0].minor.yy0, 1);
160104 sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy350,yymsp[-3].minor.yy504,yymsp[-1].minor.yy504);
160105 }
160106 break;
160107 case 99: /* selcollist ::= sclp scanpt STAR */
160108 {
160109 Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
160110 yymsp[-2].minor.yy350 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy350, p);
160111 }
160112 break;
160113 case 100: /* selcollist ::= sclp scanpt nm DOT STAR */
160114 {
160115 Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
160116 Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
160117 Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
160118 yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy350, pDot);
160119 }
160120 break;
160121 case 101: /* as ::= AS nm */
160122 case 112: /* dbnm ::= DOT nm */ yytestcase(yyruleno==112);
160123 case 251: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==251);
160124 case 252: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==252);
160125 {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
160126 break;
160127 case 103: /* from ::= */
160128 case 106: /* stl_prefix ::= */ yytestcase(yyruleno==106);
160129 {yymsp[1].minor.yy457 = 0;}
160130 break;
160131 case 104: /* from ::= FROM seltablist */
160132 {
160133 yymsp[-1].minor.yy457 = yymsp[0].minor.yy457;
160134 sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy457);
160135 }
160136 break;
160137 case 105: /* stl_prefix ::= seltablist joinop */
160138 {
160139 if( ALWAYS(yymsp[-1].minor.yy457 && yymsp[-1].minor.yy457->nSrc>0) ) yymsp[-1].minor.yy457->a[yymsp[-1].minor.yy457->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy412;
160140 }
160141 break;
160142 case 107: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
160143 {
160144 yymsp[-6].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy457,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
160145 sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy457, &yymsp[-2].minor.yy0);
160146 }
160147 break;
160148 case 108: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
160149 {
160150 yymsp[-8].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy457,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
160151 sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy457, yymsp[-4].minor.yy350);
160152 }
160153 break;
160154 case 109: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
160155 {
160156 yymsp[-6].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy457,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy293,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
160157 }
160158 break;
160159 case 110: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
160160 {
160161 if( yymsp[-6].minor.yy457==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy354==0 && yymsp[0].minor.yy498==0 ){
160162 yymsp[-6].minor.yy457 = yymsp[-4].minor.yy457;
160163 }else if( yymsp[-4].minor.yy457->nSrc==1 ){
160164 yymsp[-6].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy457,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
160165 if( yymsp[-6].minor.yy457 ){
160166 struct SrcList_item *pNew = &yymsp[-6].minor.yy457->a[yymsp[-6].minor.yy457->nSrc-1];
160167 struct SrcList_item *pOld = yymsp[-4].minor.yy457->a;
160168 pNew->zName = pOld->zName;
160169 pNew->zDatabase = pOld->zDatabase;
160170 pNew->pSelect = pOld->pSelect;
160171 if( pOld->fg.isTabFunc ){
160172 pNew->u1.pFuncArg = pOld->u1.pFuncArg;
@@ -159904,962 +160175,977 @@
160175 pNew->fg.isTabFunc = 1;
160176 }
160177 pOld->zName = pOld->zDatabase = 0;
160178 pOld->pSelect = 0;
160179 }
160180 sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy457);
160181 }else{
160182 Select *pSubquery;
160183 sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy457);
160184 pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy457,0,0,0,0,SF_NestedFrom,0);
160185 yymsp[-6].minor.yy457 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy457,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy354,yymsp[0].minor.yy498);
160186 }
160187 }
160188 break;
160189 case 111: /* dbnm ::= */
160190 case 125: /* indexed_opt ::= */ yytestcase(yyruleno==125);
160191 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
160192 break;
160193 case 113: /* fullname ::= nm */
160194 {
160195 yylhsminor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
160196 if( IN_RENAME_OBJECT && yylhsminor.yy457 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy457->a[0].zName, &yymsp[0].minor.yy0);
160197 }
160198 yymsp[0].minor.yy457 = yylhsminor.yy457;
160199 break;
160200 case 114: /* fullname ::= nm DOT nm */
160201 {
160202 yylhsminor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
160203 if( IN_RENAME_OBJECT && yylhsminor.yy457 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy457->a[0].zName, &yymsp[0].minor.yy0);
160204 }
160205 yymsp[-2].minor.yy457 = yylhsminor.yy457;
160206 break;
160207 case 115: /* xfullname ::= nm */
160208 {yymsp[0].minor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
160209 break;
160210 case 116: /* xfullname ::= nm DOT nm */
160211 {yymsp[-2].minor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
160212 break;
160213 case 117: /* xfullname ::= nm DOT nm AS nm */
160214 {
160215 yymsp[-4].minor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
160216 if( yymsp[-4].minor.yy457 ) yymsp[-4].minor.yy457->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
160217 }
160218 break;
160219 case 118: /* xfullname ::= nm AS nm */
160220 {
160221 yymsp[-2].minor.yy457 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
160222 if( yymsp[-2].minor.yy457 ) yymsp[-2].minor.yy457->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
160223 }
160224 break;
160225 case 119: /* joinop ::= COMMA|JOIN */
160226 { yymsp[0].minor.yy412 = JT_INNER; }
160227 break;
160228 case 120: /* joinop ::= JOIN_KW JOIN */
160229 {yymsp[-1].minor.yy412 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
160230 break;
160231 case 121: /* joinop ::= JOIN_KW nm JOIN */
160232 {yymsp[-2].minor.yy412 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
160233 break;
160234 case 122: /* joinop ::= JOIN_KW nm nm JOIN */
160235 {yymsp[-3].minor.yy412 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
160236 break;
160237 case 123: /* on_opt ::= ON expr */
160238 case 143: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==143);
160239 case 150: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==150);
160240 case 152: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==152);
160241 case 223: /* case_else ::= ELSE expr */ yytestcase(yyruleno==223);
160242 case 244: /* vinto ::= INTO expr */ yytestcase(yyruleno==244);
160243 {yymsp[-1].minor.yy354 = yymsp[0].minor.yy354;}
160244 break;
160245 case 124: /* on_opt ::= */
160246 case 142: /* having_opt ::= */ yytestcase(yyruleno==142);
160247 case 144: /* limit_opt ::= */ yytestcase(yyruleno==144);
160248 case 149: /* where_opt ::= */ yytestcase(yyruleno==149);
160249 case 151: /* where_opt_ret ::= */ yytestcase(yyruleno==151);
160250 case 224: /* case_else ::= */ yytestcase(yyruleno==224);
160251 case 226: /* case_operand ::= */ yytestcase(yyruleno==226);
160252 case 245: /* vinto ::= */ yytestcase(yyruleno==245);
160253 {yymsp[1].minor.yy354 = 0;}
160254 break;
160255 case 126: /* indexed_opt ::= INDEXED BY nm */
160256 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
160257 break;
160258 case 127: /* indexed_opt ::= NOT INDEXED */
160259 {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
160260 break;
160261 case 128: /* using_opt ::= USING LP idlist RP */
160262 {yymsp[-3].minor.yy498 = yymsp[-1].minor.yy498;}
160263 break;
160264 case 129: /* using_opt ::= */
160265 case 171: /* idlist_opt ::= */ yytestcase(yyruleno==171);
160266 {yymsp[1].minor.yy498 = 0;}
160267 break;
160268 case 131: /* orderby_opt ::= ORDER BY sortlist */
160269 case 141: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==141);
160270 {yymsp[-2].minor.yy350 = yymsp[0].minor.yy350;}
160271 break;
160272 case 132: /* sortlist ::= sortlist COMMA expr sortorder nulls */
160273 {
160274 yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy350,yymsp[-2].minor.yy354);
160275 sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy350,yymsp[-1].minor.yy412,yymsp[0].minor.yy412);
160276 }
160277 break;
160278 case 133: /* sortlist ::= expr sortorder nulls */
160279 {
160280 yymsp[-2].minor.yy350 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy354); /*A-overwrites-Y*/
160281 sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy350,yymsp[-1].minor.yy412,yymsp[0].minor.yy412);
160282 }
160283 break;
160284 case 134: /* sortorder ::= ASC */
160285 {yymsp[0].minor.yy412 = SQLITE_SO_ASC;}
160286 break;
160287 case 135: /* sortorder ::= DESC */
160288 {yymsp[0].minor.yy412 = SQLITE_SO_DESC;}
160289 break;
160290 case 136: /* sortorder ::= */
160291 case 139: /* nulls ::= */ yytestcase(yyruleno==139);
160292 {yymsp[1].minor.yy412 = SQLITE_SO_UNDEFINED;}
160293 break;
160294 case 137: /* nulls ::= NULLS FIRST */
160295 {yymsp[-1].minor.yy412 = SQLITE_SO_ASC;}
160296 break;
160297 case 138: /* nulls ::= NULLS LAST */
160298 {yymsp[-1].minor.yy412 = SQLITE_SO_DESC;}
160299 break;
160300 case 145: /* limit_opt ::= LIMIT expr */
160301 {yymsp[-1].minor.yy354 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy354,0);}
160302 break;
160303 case 146: /* limit_opt ::= LIMIT expr OFFSET expr */
160304 {yymsp[-3].minor.yy354 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy354,yymsp[0].minor.yy354);}
160305 break;
160306 case 147: /* limit_opt ::= LIMIT expr COMMA expr */
160307 {yymsp[-3].minor.yy354 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy354,yymsp[-2].minor.yy354);}
160308 break;
160309 case 148: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
160310 {
160311 sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy457, &yymsp[-1].minor.yy0);
160312 sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy457,yymsp[0].minor.yy354,0,0);
160313 }
160314 break;
160315 case 153: /* where_opt_ret ::= RETURNING selcollist */
160316 {sqlite3AddReturning(pParse,yymsp[0].minor.yy350); yymsp[-1].minor.yy354 = 0;}
160317 break;
160318 case 154: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
160319 {sqlite3AddReturning(pParse,yymsp[0].minor.yy350); yymsp[-3].minor.yy354 = yymsp[-2].minor.yy354;}
160320 break;
160321 case 155: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
160322 {
160323 sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy457, &yymsp[-4].minor.yy0);
160324 sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy350,"set list");
160325 yymsp[-5].minor.yy457 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy457, yymsp[-1].minor.yy457);
160326 sqlite3Update(pParse,yymsp[-5].minor.yy457,yymsp[-2].minor.yy350,yymsp[0].minor.yy354,yymsp[-6].minor.yy412,0,0,0);
160327 }
160328 break;
160329 case 156: /* setlist ::= setlist COMMA nm EQ expr */
160330 {
160331 yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy350, yymsp[0].minor.yy354);
160332 sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy350, &yymsp[-2].minor.yy0, 1);
160333 }
160334 break;
160335 case 157: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
160336 {
160337 yymsp[-6].minor.yy350 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy350, yymsp[-3].minor.yy498, yymsp[0].minor.yy354);
160338 }
160339 break;
160340 case 158: /* setlist ::= nm EQ expr */
160341 {
160342 yylhsminor.yy350 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy354);
160343 sqlite3ExprListSetName(pParse, yylhsminor.yy350, &yymsp[-2].minor.yy0, 1);
160344 }
160345 yymsp[-2].minor.yy350 = yylhsminor.yy350;
160346 break;
160347 case 159: /* setlist ::= LP idlist RP EQ expr */
160348 {
160349 yymsp[-4].minor.yy350 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy498, yymsp[0].minor.yy354);
160350 }
160351 break;
160352 case 160: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
160353 {
160354 sqlite3Insert(pParse, yymsp[-3].minor.yy457, yymsp[-1].minor.yy293, yymsp[-2].minor.yy498, yymsp[-5].minor.yy412, yymsp[0].minor.yy40);
160355 }
160356 break;
160357 case 161: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
160358 {
160359 sqlite3Insert(pParse, yymsp[-4].minor.yy457, 0, yymsp[-3].minor.yy498, yymsp[-6].minor.yy412, 0);
160360 }
160361 break;
160362 case 162: /* upsert ::= */
160363 { yymsp[1].minor.yy40 = 0; }
160364 break;
160365 case 163: /* upsert ::= RETURNING selcollist */
160366 { yymsp[-1].minor.yy40 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy350); }
160367 break;
160368 case 164: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
160369 { yymsp[-11].minor.yy40 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy350,yymsp[-6].minor.yy354,yymsp[-2].minor.yy350,yymsp[-1].minor.yy354,yymsp[0].minor.yy40);}
160370 break;
160371 case 165: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
160372 { yymsp[-8].minor.yy40 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy350,yymsp[-3].minor.yy354,0,0,yymsp[0].minor.yy40); }
160373 break;
160374 case 166: /* upsert ::= ON CONFLICT DO NOTHING returning */
160375 { yymsp[-4].minor.yy40 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
160376 break;
160377 case 167: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
160378 { yymsp[-7].minor.yy40 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy350,yymsp[-1].minor.yy354,0);}
160379 break;
160380 case 168: /* returning ::= RETURNING selcollist */
160381 {sqlite3AddReturning(pParse,yymsp[0].minor.yy350);}
160382 break;
160383 case 172: /* idlist_opt ::= LP idlist RP */
160384 {yymsp[-2].minor.yy498 = yymsp[-1].minor.yy498;}
160385 break;
160386 case 173: /* idlist ::= idlist COMMA nm */
160387 {yymsp[-2].minor.yy498 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy498,&yymsp[0].minor.yy0);}
160388 break;
160389 case 174: /* idlist ::= nm */
160390 {yymsp[0].minor.yy498 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
160391 break;
160392 case 175: /* expr ::= LP expr RP */
160393 {yymsp[-2].minor.yy354 = yymsp[-1].minor.yy354;}
160394 break;
160395 case 176: /* expr ::= ID|INDEXED */
160396 case 177: /* expr ::= JOIN_KW */ yytestcase(yyruleno==177);
160397 {yymsp[0].minor.yy354=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
160398 break;
160399 case 178: /* expr ::= nm DOT nm */
160400 {
160401 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
160402 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
160403 if( IN_RENAME_OBJECT ){
160404 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
160405 sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
160406 }
160407 yylhsminor.yy354 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
160408 }
160409 yymsp[-2].minor.yy354 = yylhsminor.yy354;
160410 break;
160411 case 179: /* expr ::= nm DOT nm DOT nm */
160412 {
160413 Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
160414 Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
160415 Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
160416 Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3);
160417 if( IN_RENAME_OBJECT ){
160418 sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
160419 sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
160420 }
160421 yylhsminor.yy354 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
160422 }
160423 yymsp[-4].minor.yy354 = yylhsminor.yy354;
160424 break;
160425 case 180: /* term ::= NULL|FLOAT|BLOB */
160426 case 181: /* term ::= STRING */ yytestcase(yyruleno==181);
160427 {yymsp[0].minor.yy354=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
160428 break;
160429 case 182: /* term ::= INTEGER */
160430 {
160431 yylhsminor.yy354 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
160432 }
160433 yymsp[0].minor.yy354 = yylhsminor.yy354;
160434 break;
160435 case 183: /* expr ::= VARIABLE */
160436 {
160437 if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
160438 u32 n = yymsp[0].minor.yy0.n;
160439 yymsp[0].minor.yy354 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
160440 sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy354, n);
160441 }else{
160442 /* When doing a nested parse, one can include terms in an expression
160443 ** that look like this: #1 #2 ... These terms refer to registers
160444 ** in the virtual machine. #N is the N-th register. */
160445 Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
160446 assert( t.n>=2 );
160447 if( pParse->nested==0 ){
160448 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
160449 yymsp[0].minor.yy354 = 0;
160450 }else{
160451 yymsp[0].minor.yy354 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
160452 if( yymsp[0].minor.yy354 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy354->iTable);
160453 }
160454 }
160455 }
160456 break;
160457 case 184: /* expr ::= expr COLLATE ID|STRING */
160458 {
160459 yymsp[-2].minor.yy354 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy354, &yymsp[0].minor.yy0, 1);
160460 }
160461 break;
160462 case 185: /* expr ::= CAST LP expr AS typetoken RP */
160463 {
160464 yymsp[-5].minor.yy354 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
160465 sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy354, yymsp[-3].minor.yy354, 0);
160466 }
160467 break;
160468 case 186: /* expr ::= ID|INDEXED LP distinct exprlist RP */
160469 {
160470 yylhsminor.yy354 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy350, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy412);
160471 }
160472 yymsp[-4].minor.yy354 = yylhsminor.yy354;
160473 break;
160474 case 187: /* expr ::= ID|INDEXED LP STAR RP */
160475 {
160476 yylhsminor.yy354 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
160477 }
160478 yymsp[-3].minor.yy354 = yylhsminor.yy354;
160479 break;
160480 case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
160481 {
160482 yylhsminor.yy354 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy350, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy412);
160483 sqlite3WindowAttach(pParse, yylhsminor.yy354, yymsp[0].minor.yy503);
160484 }
160485 yymsp[-5].minor.yy354 = yylhsminor.yy354;
160486 break;
160487 case 189: /* expr ::= ID|INDEXED LP STAR RP filter_over */
160488 {
160489 yylhsminor.yy354 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
160490 sqlite3WindowAttach(pParse, yylhsminor.yy354, yymsp[0].minor.yy503);
160491 }
160492 yymsp[-4].minor.yy354 = yylhsminor.yy354;
160493 break;
160494 case 190: /* term ::= CTIME_KW */
160495 {
160496 yylhsminor.yy354 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
160497 }
160498 yymsp[0].minor.yy354 = yylhsminor.yy354;
160499 break;
160500 case 191: /* expr ::= LP nexprlist COMMA expr RP */
160501 {
160502 ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy350, yymsp[-1].minor.yy354);
160503 yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
160504 if( yymsp[-4].minor.yy354 ){
160505 yymsp[-4].minor.yy354->x.pList = pList;
160506 if( ALWAYS(pList->nExpr) ){
160507 yymsp[-4].minor.yy354->flags |= pList->a[0].pExpr->flags & EP_Propagate;
160508 }
160509 }else{
160510 sqlite3ExprListDelete(pParse->db, pList);
160511 }
160512 }
160513 break;
160514 case 192: /* expr ::= expr AND expr */
160515 {yymsp[-2].minor.yy354=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy354,yymsp[0].minor.yy354);}
160516 break;
160517 case 193: /* expr ::= expr OR expr */
160518 case 194: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==194);
160519 case 195: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==195);
160520 case 196: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==196);
160521 case 197: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==197);
160522 case 198: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==198);
160523 case 199: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==199);
160524 {yymsp[-2].minor.yy354=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy354,yymsp[0].minor.yy354);}
160525 break;
160526 case 200: /* likeop ::= NOT LIKE_KW|MATCH */
160527 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
160528 break;
160529 case 201: /* expr ::= expr likeop expr */
160530 {
160531 ExprList *pList;
160532 int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
160533 yymsp[-1].minor.yy0.n &= 0x7fffffff;
160534 pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy354);
160535 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy354);
160536 yymsp[-2].minor.yy354 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
160537 if( bNot ) yymsp[-2].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy354, 0);
160538 if( yymsp[-2].minor.yy354 ) yymsp[-2].minor.yy354->flags |= EP_InfixFunc;
160539 }
160540 break;
160541 case 202: /* expr ::= expr likeop expr ESCAPE expr */
160542 {
160543 ExprList *pList;
160544 int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
160545 yymsp[-3].minor.yy0.n &= 0x7fffffff;
160546 pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy354);
160547 pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy354);
160548 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy354);
160549 yymsp[-4].minor.yy354 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
160550 if( bNot ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160551 if( yymsp[-4].minor.yy354 ) yymsp[-4].minor.yy354->flags |= EP_InfixFunc;
160552 }
160553 break;
160554 case 203: /* expr ::= expr ISNULL|NOTNULL */
160555 {yymsp[-1].minor.yy354 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy354,0);}
160556 break;
160557 case 204: /* expr ::= expr NOT NULL */
160558 {yymsp[-2].minor.yy354 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy354,0);}
160559 break;
160560 case 205: /* expr ::= expr IS expr */
160561 {
160562 yymsp[-2].minor.yy354 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy354,yymsp[0].minor.yy354);
160563 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy354, yymsp[-2].minor.yy354, TK_ISNULL);
160564 }
160565 break;
160566 case 206: /* expr ::= expr IS NOT expr */
160567 {
160568 yymsp[-3].minor.yy354 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy354,yymsp[0].minor.yy354);
160569 binaryToUnaryIfNull(pParse, yymsp[0].minor.yy354, yymsp[-3].minor.yy354, TK_NOTNULL);
160570 }
160571 break;
160572 case 207: /* expr ::= NOT expr */
160573 case 208: /* expr ::= BITNOT expr */ yytestcase(yyruleno==208);
160574 {yymsp[-1].minor.yy354 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy354, 0);/*A-overwrites-B*/}
160575 break;
160576 case 209: /* expr ::= PLUS|MINUS expr */
160577 {
160578 yymsp[-1].minor.yy354 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy354, 0);
160579 /*A-overwrites-B*/
160580 }
160581 break;
160582 case 210: /* between_op ::= BETWEEN */
160583 case 213: /* in_op ::= IN */ yytestcase(yyruleno==213);
160584 {yymsp[0].minor.yy412 = 0;}
160585 break;
160586 case 212: /* expr ::= expr between_op expr AND expr */
160587 {
160588 ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy354);
160589 pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy354);
160590 yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy354, 0);
160591 if( yymsp[-4].minor.yy354 ){
160592 yymsp[-4].minor.yy354->x.pList = pList;
160593 }else{
160594 sqlite3ExprListDelete(pParse->db, pList);
160595 }
160596 if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160597 }
160598 break;
160599 case 215: /* expr ::= expr in_op LP exprlist RP */
160600 {
160601 if( yymsp[-1].minor.yy350==0 ){
160602 /* Expressions of the form
160603 **
160604 ** expr1 IN ()
160605 ** expr1 NOT IN ()
160606 **
160607 ** simplify to constants 0 (false) and 1 (true), respectively,
160608 ** regardless of the value of expr1.
160609 */
160610 sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy354);
160611 yymsp[-4].minor.yy354 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy412 ? "1" : "0");
160612 }else if( yymsp[-1].minor.yy350->nExpr==1 && sqlite3ExprIsConstant(yymsp[-1].minor.yy350->a[0].pExpr) ){
160613 Expr *pRHS = yymsp[-1].minor.yy350->a[0].pExpr;
160614 yymsp[-1].minor.yy350->a[0].pExpr = 0;
160615 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy350);
160616 pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
160617 yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy354, pRHS);
160618 if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160619 }else{
160620 yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy354, 0);
160621 if( yymsp[-4].minor.yy354 ){
160622 yymsp[-4].minor.yy354->x.pList = yymsp[-1].minor.yy350;
160623 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy354);
160624 }else{
160625 sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy350);
160626 }
160627 if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160628 }
160629 }
160630 break;
160631 case 216: /* expr ::= LP select RP */
160632 {
160633 yymsp[-2].minor.yy354 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
160634 sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy354, yymsp[-1].minor.yy293);
160635 }
160636 break;
160637 case 217: /* expr ::= expr in_op LP select RP */
160638 {
160639 yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy354, 0);
160640 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy354, yymsp[-1].minor.yy293);
160641 if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160642 }
160643 break;
160644 case 218: /* expr ::= expr in_op nm dbnm paren_exprlist */
160645 {
160646 SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
160647 Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
160648 if( yymsp[0].minor.yy350 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy350);
160649 yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy354, 0);
160650 sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy354, pSelect);
160651 if( yymsp[-3].minor.yy412 ) yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy354, 0);
160652 }
160653 break;
160654 case 219: /* expr ::= EXISTS LP select RP */
160655 {
160656 Expr *p;
160657 p = yymsp[-3].minor.yy354 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
160658 sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy293);
160659 }
160660 break;
160661 case 220: /* expr ::= CASE case_operand case_exprlist case_else END */
160662 {
160663 yymsp[-4].minor.yy354 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy354, 0);
160664 if( yymsp[-4].minor.yy354 ){
160665 yymsp[-4].minor.yy354->x.pList = yymsp[-1].minor.yy354 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy350,yymsp[-1].minor.yy354) : yymsp[-2].minor.yy350;
160666 sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy354);
160667 }else{
160668 sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy350);
160669 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy354);
160670 }
160671 }
160672 break;
160673 case 221: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
160674 {
160675 yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy350, yymsp[-2].minor.yy354);
160676 yymsp[-4].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy350, yymsp[0].minor.yy354);
160677 }
160678 break;
160679 case 222: /* case_exprlist ::= WHEN expr THEN expr */
160680 {
160681 yymsp[-3].minor.yy350 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy354);
160682 yymsp[-3].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy350, yymsp[0].minor.yy354);
160683 }
160684 break;
160685 case 225: /* case_operand ::= expr */
160686 {yymsp[0].minor.yy354 = yymsp[0].minor.yy354; /*A-overwrites-X*/}
160687 break;
160688 case 228: /* nexprlist ::= nexprlist COMMA expr */
160689 {yymsp[-2].minor.yy350 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy350,yymsp[0].minor.yy354);}
160690 break;
160691 case 229: /* nexprlist ::= expr */
160692 {yymsp[0].minor.yy350 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy354); /*A-overwrites-Y*/}
160693 break;
160694 case 231: /* paren_exprlist ::= LP exprlist RP */
160695 case 236: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==236);
160696 {yymsp[-2].minor.yy350 = yymsp[-1].minor.yy350;}
160697 break;
160698 case 232: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
160699 {
160700 sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
160701 sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy350, yymsp[-10].minor.yy412,
160702 &yymsp[-11].minor.yy0, yymsp[0].minor.yy354, SQLITE_SO_ASC, yymsp[-8].minor.yy412, SQLITE_IDXTYPE_APPDEF);
160703 if( IN_RENAME_OBJECT && pParse->pNewIndex ){
160704 sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
160705 }
160706 }
160707 break;
160708 case 233: /* uniqueflag ::= UNIQUE */
160709 case 275: /* raisetype ::= ABORT */ yytestcase(yyruleno==275);
160710 {yymsp[0].minor.yy412 = OE_Abort;}
160711 break;
160712 case 234: /* uniqueflag ::= */
160713 {yymsp[1].minor.yy412 = OE_None;}
160714 break;
160715 case 237: /* eidlist ::= eidlist COMMA nm collate sortorder */
160716 {
160717 yymsp[-4].minor.yy350 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy350, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy412, yymsp[0].minor.yy412);
160718 }
160719 break;
160720 case 238: /* eidlist ::= nm collate sortorder */
160721 {
160722 yymsp[-2].minor.yy350 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy412, yymsp[0].minor.yy412); /*A-overwrites-Y*/
160723 }
160724 break;
160725 case 241: /* cmd ::= DROP INDEX ifexists fullname */
160726 {sqlite3DropIndex(pParse, yymsp[0].minor.yy457, yymsp[-1].minor.yy412);}
160727 break;
160728 case 242: /* cmd ::= VACUUM vinto */
160729 {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy354);}
160730 break;
160731 case 243: /* cmd ::= VACUUM nm vinto */
160732 {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy354);}
160733 break;
160734 case 246: /* cmd ::= PRAGMA nm dbnm */
160735 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
160736 break;
160737 case 247: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
160738 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
160739 break;
160740 case 248: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
160741 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
160742 break;
160743 case 249: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
160744 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
160745 break;
160746 case 250: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
160747 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
160748 break;
160749 case 253: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
160750 {
160751 Token all;
160752 all.z = yymsp[-3].minor.yy0.z;
160753 all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
160754 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy51, &all);
160755 }
160756 break;
160757 case 254: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
160758 {
160759 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy412, yymsp[-4].minor.yy298.a, yymsp[-4].minor.yy298.b, yymsp[-2].minor.yy457, yymsp[0].minor.yy354, yymsp[-10].minor.yy412, yymsp[-8].minor.yy412);
160760 yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
160761 }
160762 break;
160763 case 255: /* trigger_time ::= BEFORE|AFTER */
160764 { yymsp[0].minor.yy412 = yymsp[0].major; /*A-overwrites-X*/ }
160765 break;
160766 case 256: /* trigger_time ::= INSTEAD OF */
160767 { yymsp[-1].minor.yy412 = TK_INSTEAD;}
160768 break;
160769 case 257: /* trigger_time ::= */
160770 { yymsp[1].minor.yy412 = TK_BEFORE; }
160771 break;
160772 case 258: /* trigger_event ::= DELETE|INSERT */
160773 case 259: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==259);
160774 {yymsp[0].minor.yy298.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy298.b = 0;}
160775 break;
160776 case 260: /* trigger_event ::= UPDATE OF idlist */
160777 {yymsp[-2].minor.yy298.a = TK_UPDATE; yymsp[-2].minor.yy298.b = yymsp[0].minor.yy498;}
160778 break;
160779 case 261: /* when_clause ::= */
160780 case 280: /* key_opt ::= */ yytestcase(yyruleno==280);
160781 { yymsp[1].minor.yy354 = 0; }
160782 break;
160783 case 262: /* when_clause ::= WHEN expr */
160784 case 281: /* key_opt ::= KEY expr */ yytestcase(yyruleno==281);
160785 { yymsp[-1].minor.yy354 = yymsp[0].minor.yy354; }
160786 break;
160787 case 263: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
160788 {
160789 assert( yymsp[-2].minor.yy51!=0 );
160790 yymsp[-2].minor.yy51->pLast->pNext = yymsp[-1].minor.yy51;
160791 yymsp[-2].minor.yy51->pLast = yymsp[-1].minor.yy51;
160792 }
160793 break;
160794 case 264: /* trigger_cmd_list ::= trigger_cmd SEMI */
160795 {
160796 assert( yymsp[-1].minor.yy51!=0 );
160797 yymsp[-1].minor.yy51->pLast = yymsp[-1].minor.yy51;
160798 }
160799 break;
160800 case 265: /* trnm ::= nm DOT nm */
160801 {
160802 yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
160803 sqlite3ErrorMsg(pParse,
160804 "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
160805 "statements within triggers");
160806 }
160807 break;
160808 case 266: /* tridxby ::= INDEXED BY nm */
160809 {
160810 sqlite3ErrorMsg(pParse,
160811 "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
160812 "within triggers");
160813 }
160814 break;
160815 case 267: /* tridxby ::= NOT INDEXED */
160816 {
160817 sqlite3ErrorMsg(pParse,
160818 "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
160819 "within triggers");
160820 }
160821 break;
160822 case 268: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
160823 {yylhsminor.yy51 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy457, yymsp[-3].minor.yy350, yymsp[-1].minor.yy354, yymsp[-7].minor.yy412, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy504);}
160824 yymsp[-8].minor.yy51 = yylhsminor.yy51;
160825 break;
160826 case 269: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
160827 {
160828 yylhsminor.yy51 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy498,yymsp[-2].minor.yy293,yymsp[-6].minor.yy412,yymsp[-1].minor.yy40,yymsp[-7].minor.yy504,yymsp[0].minor.yy504);/*yylhsminor.yy51-overwrites-yymsp[-6].minor.yy412*/
160829 }
160830 yymsp[-7].minor.yy51 = yylhsminor.yy51;
160831 break;
160832 case 270: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
160833 {yylhsminor.yy51 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy354, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy504);}
160834 yymsp[-5].minor.yy51 = yylhsminor.yy51;
160835 break;
160836 case 271: /* trigger_cmd ::= scanpt select scanpt */
160837 {yylhsminor.yy51 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy293, yymsp[-2].minor.yy504, yymsp[0].minor.yy504); /*yylhsminor.yy51-overwrites-yymsp[-1].minor.yy293*/}
160838 yymsp[-2].minor.yy51 = yylhsminor.yy51;
160839 break;
160840 case 272: /* expr ::= RAISE LP IGNORE RP */
160841 {
160842 yymsp[-3].minor.yy354 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
160843 if( yymsp[-3].minor.yy354 ){
160844 yymsp[-3].minor.yy354->affExpr = OE_Ignore;
160845 }
160846 }
160847 break;
160848 case 273: /* expr ::= RAISE LP raisetype COMMA nm RP */
160849 {
160850 yymsp[-5].minor.yy354 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
160851 if( yymsp[-5].minor.yy354 ) {
160852 yymsp[-5].minor.yy354->affExpr = (char)yymsp[-3].minor.yy412;
160853 }
160854 }
160855 break;
160856 case 274: /* raisetype ::= ROLLBACK */
160857 {yymsp[0].minor.yy412 = OE_Rollback;}
160858 break;
160859 case 276: /* raisetype ::= FAIL */
160860 {yymsp[0].minor.yy412 = OE_Fail;}
160861 break;
160862 case 277: /* cmd ::= DROP TRIGGER ifexists fullname */
160863 {
160864 sqlite3DropTrigger(pParse,yymsp[0].minor.yy457,yymsp[-1].minor.yy412);
160865 }
160866 break;
160867 case 278: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
160868 {
160869 sqlite3Attach(pParse, yymsp[-3].minor.yy354, yymsp[-1].minor.yy354, yymsp[0].minor.yy354);
160870 }
160871 break;
160872 case 279: /* cmd ::= DETACH database_kw_opt expr */
160873 {
160874 sqlite3Detach(pParse, yymsp[0].minor.yy354);
160875 }
160876 break;
160877 case 282: /* cmd ::= REINDEX */
160878 {sqlite3Reindex(pParse, 0, 0);}
160879 break;
160880 case 283: /* cmd ::= REINDEX nm dbnm */
160881 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
160882 break;
160883 case 284: /* cmd ::= ANALYZE */
160884 {sqlite3Analyze(pParse, 0, 0);}
160885 break;
160886 case 285: /* cmd ::= ANALYZE nm dbnm */
160887 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
160888 break;
160889 case 286: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
160890 {
160891 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy457,&yymsp[0].minor.yy0);
160892 }
160893 break;
160894 case 287: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
160895 {
160896 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
160897 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
160898 }
160899 break;
160900 case 288: /* add_column_fullname ::= fullname */
160901 {
160902 disableLookaside(pParse);
160903 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy457);
160904 }
160905 break;
160906 case 289: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
160907 {
160908 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy457, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
160909 }
160910 break;
160911 case 290: /* cmd ::= create_vtab */
160912 {sqlite3VtabFinishParse(pParse,0);}
160913 break;
160914 case 291: /* cmd ::= create_vtab LP vtabarglist RP */
160915 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
160916 break;
160917 case 292: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
160918 {
160919 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy412);
160920 }
160921 break;
160922 case 293: /* vtabarg ::= */
160923 {sqlite3VtabArgInit(pParse);}
160924 break;
160925 case 294: /* vtabargtoken ::= ANY */
160926 case 295: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==295);
160927 case 296: /* lp ::= LP */ yytestcase(yyruleno==296);
160928 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
160929 break;
160930 case 297: /* with ::= WITH wqlist */
160931 case 298: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==298);
160932 { sqlite3WithPush(pParse, yymsp[0].minor.yy105, 1); }
160933 break;
160934 case 299: /* wqlist ::= nm eidlist_opt AS LP select RP */
160935 {
160936 yymsp[-5].minor.yy105 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy350, yymsp[-1].minor.yy293); /*A-overwrites-X*/
160937 }
160938 break;
160939 case 300: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
160940 {
160941 yymsp[-7].minor.yy105 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy105, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy350, yymsp[-1].minor.yy293);
160942 }
160943 break;
160944 case 301: /* windowdefn_list ::= windowdefn */
160945 { yylhsminor.yy503 = yymsp[0].minor.yy503; }
160946 yymsp[0].minor.yy503 = yylhsminor.yy503;
160947 break;
160948 case 302: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
160949 {
160950 assert( yymsp[0].minor.yy503!=0 );
160951 sqlite3WindowChain(pParse, yymsp[0].minor.yy503, yymsp[-2].minor.yy503);
160952 yymsp[0].minor.yy503->pNextWin = yymsp[-2].minor.yy503;
160953 yylhsminor.yy503 = yymsp[0].minor.yy503;
160954 }
160955 yymsp[-2].minor.yy503 = yylhsminor.yy503;
160956 break;
160957 case 303: /* windowdefn ::= nm AS LP window RP */
160958 {
160959 if( ALWAYS(yymsp[-1].minor.yy503) ){
160960 yymsp[-1].minor.yy503->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
160961 }
160962 yylhsminor.yy503 = yymsp[-1].minor.yy503;
160963 }
160964 yymsp[-4].minor.yy503 = yylhsminor.yy503;
160965 break;
160966 case 304: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
160967 {
160968 yymsp[-4].minor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, yymsp[-2].minor.yy350, yymsp[-1].minor.yy350, 0);
160969 }
160970 break;
160971 case 305: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
160972 {
160973 yylhsminor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, yymsp[-2].minor.yy350, yymsp[-1].minor.yy350, &yymsp[-5].minor.yy0);
160974 }
160975 yymsp[-5].minor.yy503 = yylhsminor.yy503;
160976 break;
160977 case 306: /* window ::= ORDER BY sortlist frame_opt */
160978 {
160979 yymsp[-3].minor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, 0, yymsp[-1].minor.yy350, 0);
160980 }
160981 break;
160982 case 307: /* window ::= nm ORDER BY sortlist frame_opt */
160983 {
160984 yylhsminor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, 0, yymsp[-1].minor.yy350, &yymsp[-4].minor.yy0);
160985 }
160986 yymsp[-4].minor.yy503 = yylhsminor.yy503;
160987 break;
160988 case 308: /* window ::= frame_opt */
160989 case 327: /* filter_over ::= over_clause */ yytestcase(yyruleno==327);
160990 {
160991 yylhsminor.yy503 = yymsp[0].minor.yy503;
160992 }
160993 yymsp[0].minor.yy503 = yylhsminor.yy503;
160994 break;
160995 case 309: /* window ::= nm frame_opt */
160996 {
160997 yylhsminor.yy503 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy503, 0, 0, &yymsp[-1].minor.yy0);
160998 }
160999 yymsp[-1].minor.yy503 = yylhsminor.yy503;
161000 break;
161001 case 310: /* frame_opt ::= */
161002 {
161003 yymsp[1].minor.yy503 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
161004 }
161005 break;
161006 case 311: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
161007 {
161008 yylhsminor.yy503 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy412, yymsp[-1].minor.yy341.eType, yymsp[-1].minor.yy341.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy624);
161009 }
161010 yymsp[-2].minor.yy503 = yylhsminor.yy503;
161011 break;
161012 case 312: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
161013 {
161014 yylhsminor.yy503 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy412, yymsp[-3].minor.yy341.eType, yymsp[-3].minor.yy341.pExpr, yymsp[-1].minor.yy341.eType, yymsp[-1].minor.yy341.pExpr, yymsp[0].minor.yy624);
161015 }
161016 yymsp[-5].minor.yy503 = yylhsminor.yy503;
161017 break;
161018 case 314: /* frame_bound_s ::= frame_bound */
161019 case 316: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==316);
161020 {yylhsminor.yy341 = yymsp[0].minor.yy341;}
161021 yymsp[0].minor.yy341 = yylhsminor.yy341;
161022 break;
161023 case 315: /* frame_bound_s ::= UNBOUNDED PRECEDING */
161024 case 317: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==317);
161025 case 319: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==319);
161026 {yylhsminor.yy341.eType = yymsp[-1].major; yylhsminor.yy341.pExpr = 0;}
161027 yymsp[-1].minor.yy341 = yylhsminor.yy341;
161028 break;
161029 case 318: /* frame_bound ::= expr PRECEDING|FOLLOWING */
161030 {yylhsminor.yy341.eType = yymsp[0].major; yylhsminor.yy341.pExpr = yymsp[-1].minor.yy354;}
161031 yymsp[-1].minor.yy341 = yylhsminor.yy341;
161032 break;
161033 case 320: /* frame_exclude_opt ::= */
161034 {yymsp[1].minor.yy624 = 0;}
161035 break;
161036 case 321: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
161037 {yymsp[-1].minor.yy624 = yymsp[0].minor.yy624;}
161038 break;
161039 case 322: /* frame_exclude ::= NO OTHERS */
161040 case 323: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==323);
161041 {yymsp[-1].minor.yy624 = yymsp[-1].major; /*A-overwrites-X*/}
161042 break;
161043 case 324: /* frame_exclude ::= GROUP|TIES */
161044 {yymsp[0].minor.yy624 = yymsp[0].major; /*A-overwrites-X*/}
161045 break;
161046 case 325: /* window_clause ::= WINDOW windowdefn_list */
161047 { yymsp[-1].minor.yy503 = yymsp[0].minor.yy503; }
161048 break;
161049 case 326: /* filter_over ::= filter_clause over_clause */
161050 {
161051 yymsp[0].minor.yy503->pFilter = yymsp[-1].minor.yy354;
161052 yylhsminor.yy503 = yymsp[0].minor.yy503;
161053 }
161054 yymsp[-1].minor.yy503 = yylhsminor.yy503;
161055 break;
161056 case 328: /* filter_over ::= filter_clause */
161057 {
161058 yylhsminor.yy503 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
161059 if( yylhsminor.yy503 ){
161060 yylhsminor.yy503->eFrmType = TK_FILTER;
161061 yylhsminor.yy503->pFilter = yymsp[0].minor.yy354;
161062 }else{
161063 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy354);
161064 }
161065 }
161066 yymsp[0].minor.yy503 = yylhsminor.yy503;
161067 break;
161068 case 329: /* over_clause ::= OVER LP window RP */
161069 {
161070 yymsp[-3].minor.yy503 = yymsp[-1].minor.yy503;
161071 assert( yymsp[-3].minor.yy503!=0 );
161072 }
161073 break;
161074 case 330: /* over_clause ::= OVER nm */
161075 {
161076 yymsp[-1].minor.yy503 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
161077 if( yymsp[-1].minor.yy503 ){
161078 yymsp[-1].minor.yy503->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
161079 }
161080 }
161081 break;
161082 case 331: /* filter_clause ::= FILTER LP WHERE expr RP */
161083 { yymsp[-4].minor.yy354 = yymsp[-1].minor.yy354; }
161084 break;
161085 default:
161086 /* (332) input ::= cmdlist */ yytestcase(yyruleno==332);
161087 /* (333) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==333);
161088 /* (334) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=334);
161089 /* (335) ecmd ::= SEMI */ yytestcase(yyruleno==335);
161090 /* (336) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==336);
161091 /* (337) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=337);
161092 /* (338) trans_opt ::= */ yytestcase(yyruleno==338);
161093 /* (339) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==339);
161094 /* (340) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==340);
161095 /* (341) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==341);
161096 /* (342) savepoint_opt ::= */ yytestcase(yyruleno==342);
161097 /* (343) cmd ::= create_table create_table_args */ yytestcase(yyruleno==343);
161098 /* (344) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==344);
161099 /* (345) columnlist ::= columnname carglist */ yytestcase(yyruleno==345);
161100 /* (346) nm ::= ID|INDEXED */ yytestcase(yyruleno==346);
161101 /* (347) nm ::= STRING */ yytestcase(yyruleno==347);
161102 /* (348) nm ::= JOIN_KW */ yytestcase(yyruleno==348);
161103 /* (349) typetoken ::= typename */ yytestcase(yyruleno==349);
161104 /* (350) typename ::= ID|STRING */ yytestcase(yyruleno==350);
161105 /* (351) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=351);
161106 /* (352) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=352);
161107 /* (353) carglist ::= carglist ccons */ yytestcase(yyruleno==353);
161108 /* (354) carglist ::= */ yytestcase(yyruleno==354);
161109 /* (355) ccons ::= NULL onconf */ yytestcase(yyruleno==355);
161110 /* (356) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==356);
161111 /* (357) ccons ::= AS generated */ yytestcase(yyruleno==357);
161112 /* (358) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==358);
161113 /* (359) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==359);
161114 /* (360) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=360);
161115 /* (361) tconscomma ::= */ yytestcase(yyruleno==361);
161116 /* (362) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=362);
161117 /* (363) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=363);
161118 /* (364) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=364);
161119 /* (365) oneselect ::= values */ yytestcase(yyruleno==365);
161120 /* (366) sclp ::= selcollist COMMA */ yytestcase(yyruleno==366);
161121 /* (367) as ::= ID|STRING */ yytestcase(yyruleno==367);
161122 /* (368) returning ::= */ yytestcase(yyruleno==368);
161123 /* (369) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=369);
161124 /* (370) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==370);
161125 /* (371) exprlist ::= nexprlist */ yytestcase(yyruleno==371);
161126 /* (372) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=372);
161127 /* (373) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=373);
161128 /* (374) nmnum ::= ON */ yytestcase(yyruleno==374);
161129 /* (375) nmnum ::= DELETE */ yytestcase(yyruleno==375);
161130 /* (376) nmnum ::= DEFAULT */ yytestcase(yyruleno==376);
161131 /* (377) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==377);
161132 /* (378) foreach_clause ::= */ yytestcase(yyruleno==378);
161133 /* (379) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==379);
161134 /* (380) trnm ::= nm */ yytestcase(yyruleno==380);
161135 /* (381) tridxby ::= */ yytestcase(yyruleno==381);
161136 /* (382) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==382);
161137 /* (383) database_kw_opt ::= */ yytestcase(yyruleno==383);
161138 /* (384) kwcolumn_opt ::= */ yytestcase(yyruleno==384);
161139 /* (385) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==385);
161140 /* (386) vtabarglist ::= vtabarg */ yytestcase(yyruleno==386);
161141 /* (387) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==387);
161142 /* (388) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==388);
161143 /* (389) anylist ::= */ yytestcase(yyruleno==389);
161144 /* (390) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==390);
161145 /* (391) anylist ::= anylist ANY */ yytestcase(yyruleno==391);
161146 /* (392) with ::= */ yytestcase(yyruleno==392);
161147 break;
161148 /********** End reduce actions ************************************************/
161149 };
161150 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
161151 yygoto = yyRuleInfoLhs[yyruleno];
@@ -161362,24 +161648,25 @@
161648 ** might be implemented more directly using a hand-written hash table.
161649 ** But by using this automatically generated code, the size of the code
161650 ** is substantially reduced. This is important for embedded applications
161651 ** on platforms with limited memory.
161652 */
161653 /* Hash score: 229 */
161654 /* zKWText[] encodes 994 bytes of keyword text in 657 bytes */
161655 /* REINDEXEDESCAPEACHECKEYBEFOREIGNOREGEXPLAINSTEADDATABASELECT */
161656 /* ABLEFTHENDEFERRABLELSEXCLUDELETEMPORARYISNULLSAVEPOINTERSECT */
161657 /* IESNOTNULLIKEXCEPTRANSACTIONATURALTERAISEXCLUSIVEXISTS */
161658 /* CONSTRAINTOFFSETRIGGERANGENERATEDETACHAVINGLOBEGINNEREFERENCES */
161659 /* UNIQUERYWITHOUTERELEASEATTACHBETWEENOTHINGROUPSCASCADEFAULT */
161660 /* CASECOLLATECREATECURRENT_DATEIMMEDIATEJOINSERTMATCHPLANALYZE */
161661 /* PRAGMABORTUPDATEVALUESVIRTUALWAYSWHENWHERECURSIVEAFTERENAMEAND */
161662 /* EFERREDISTINCTAUTOINCREMENTCASTCOLUMNCOMMITCONFLICTCROSS */
161663 /* CURRENT_TIMESTAMPARTITIONDROPRECEDINGFAILASTFILTEREPLACEFIRST */
161664 /* FOLLOWINGFROMFULLIMITIFORDERESTRICTOTHERSOVERETURNINGRIGHT */
161665 /* ROLLBACKROWSUNBOUNDEDUNIONUSINGVACUUMVIEWINDOWBYINITIALLY */
161666 /* PRIMARY */
161667 static const char zKWText[656] = {
161668 'R','E','I','N','D','E','X','E','D','E','S','C','A','P','E','A','C','H',
161669 'E','C','K','E','Y','B','E','F','O','R','E','I','G','N','O','R','E','G',
161670 'E','X','P','L','A','I','N','S','T','E','A','D','D','A','T','A','B','A',
161671 'S','E','L','E','C','T','A','B','L','E','F','T','H','E','N','D','E','F',
161672 'E','R','R','A','B','L','E','L','S','E','X','C','L','U','D','E','L','E',
@@ -161408,47 +161695,48 @@
161695 'T','A','M','P','A','R','T','I','T','I','O','N','D','R','O','P','R','E',
161696 'C','E','D','I','N','G','F','A','I','L','A','S','T','F','I','L','T','E',
161697 'R','E','P','L','A','C','E','F','I','R','S','T','F','O','L','L','O','W',
161698 'I','N','G','F','R','O','M','F','U','L','L','I','M','I','T','I','F','O',
161699 'R','D','E','R','E','S','T','R','I','C','T','O','T','H','E','R','S','O',
161700 'V','E','R','E','T','U','R','N','I','N','G','R','I','G','H','T','R','O',
161701 'L','L','B','A','C','K','R','O','W','S','U','N','B','O','U','N','D','E',
161702 'D','U','N','I','O','N','U','S','I','N','G','V','A','C','U','U','M','V',
161703 'I','E','W','I','N','D','O','W','B','Y','I','N','I','T','I','A','L','L',
161704 'Y','P','R','I','M','A','R','Y',
161705 };
161706 /* aKWHash[i] is the hash value for the i-th keyword */
161707 static const unsigned char aKWHash[127] = {
161708 84, 102, 133, 82, 114, 29, 0, 0, 91, 0, 85, 72, 0,
161709 53, 35, 86, 15, 0, 42, 94, 54, 126, 134, 19, 0, 0,
161710 139, 0, 40, 128, 0, 22, 104, 0, 9, 0, 0, 122, 80,
161711 0, 78, 6, 0, 65, 99, 146, 0, 135, 112, 0, 0, 48,
161712 0, 100, 24, 0, 17, 0, 27, 70, 23, 26, 5, 60, 141,
161713 107, 121, 0, 73, 101, 71, 144, 61, 119, 74, 0, 49, 0,
161714 11, 41, 0, 110, 0, 0, 0, 106, 10, 108, 113, 124, 14,
161715 50, 123, 0, 89, 0, 18, 120, 143, 56, 129, 138, 88, 83,
161716 37, 30, 125, 0, 0, 105, 51, 130, 127, 0, 34, 0, 0,
161717 131, 0, 95, 38, 39, 0, 20, 45, 116, 90,
161718 };
161719 /* aKWNext[] forms the hash collision chain. If aKWHash[i]==0
161720 ** then the i-th keyword has no more hash collisions. Otherwise,
161721 ** the next keyword with the same hash is aKWHash[i]-1. */
161722 static const unsigned char aKWNext[146] = {
161723 0, 0, 0, 0, 4, 0, 43, 0, 0, 103, 111, 0, 0,
161724 0, 2, 0, 0, 142, 0, 0, 0, 13, 0, 0, 0, 0,
161725 140, 0, 0, 118, 52, 0, 0, 136, 12, 0, 0, 62, 0,
161726 137, 0, 132, 0, 0, 36, 0, 0, 28, 77, 0, 0, 0,
161727 0, 59, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
161728 0, 69, 0, 0, 0, 0, 0, 145, 3, 0, 58, 0, 1,
161729 75, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 64, 66,
161730 63, 0, 0, 0, 0, 46, 0, 16, 0, 115, 0, 0, 0,
161731 0, 0, 0, 0, 0, 0, 0, 81, 97, 0, 8, 0, 109,
161732 21, 7, 67, 0, 79, 93, 117, 0, 0, 68, 0, 0, 96,
161733 44, 0, 55, 0, 76, 0, 92, 32, 33, 57, 25, 0, 98,
161734 0, 0, 87,
161735 };
161736 /* aKWLen[i] is the length (in bytes) of the i-th keyword */
161737 static const unsigned char aKWLen[146] = {
161738 7, 7, 5, 4, 6, 4, 5, 3, 6, 7, 3, 6, 6,
161739 7, 7, 3, 8, 2, 6, 5, 4, 4, 3, 10, 4, 7,
161740 6, 9, 4, 2, 6, 5, 9, 9, 4, 7, 3, 2, 4,
161741 4, 6, 11, 6, 2, 7, 5, 5, 9, 6, 10, 4, 6,
161742 2, 3, 7, 5, 9, 6, 6, 4, 5, 5, 10, 6, 5,
@@ -161455,16 +161743,16 @@
161743 7, 4, 5, 7, 6, 7, 7, 6, 5, 7, 3, 7, 4,
161744 7, 6, 12, 9, 4, 6, 5, 4, 7, 6, 5, 6, 6,
161745 7, 6, 4, 5, 9, 5, 6, 3, 8, 8, 2, 13, 2,
161746 2, 4, 6, 6, 8, 5, 17, 12, 7, 9, 4, 9, 4,
161747 4, 6, 7, 5, 9, 4, 4, 5, 2, 5, 8, 6, 4,
161748 9, 5, 8, 4, 3, 9, 5, 5, 6, 4, 6, 2, 2,
161749 9, 3, 7,
161750 };
161751 /* aKWOffset[i] is the index into zKWText[] of the start of
161752 ** the text for the i-th keyword. */
161753 static const unsigned short int aKWOffset[146] = {
161754 0, 2, 2, 8, 9, 14, 16, 20, 23, 25, 25, 29, 33,
161755 36, 41, 46, 48, 53, 54, 59, 62, 65, 67, 69, 78, 81,
161756 86, 90, 90, 94, 99, 101, 105, 111, 119, 123, 123, 123, 126,
161757 129, 132, 137, 142, 146, 147, 152, 156, 160, 168, 174, 181, 184,
161758 184, 187, 189, 195, 198, 206, 211, 216, 219, 222, 226, 236, 239,
@@ -161471,15 +161759,15 @@
161759 244, 244, 248, 252, 259, 265, 271, 277, 277, 283, 284, 288, 295,
161760 299, 306, 312, 324, 333, 335, 341, 346, 348, 355, 360, 365, 371,
161761 377, 382, 388, 392, 395, 404, 408, 414, 416, 423, 424, 431, 433,
161762 435, 444, 448, 454, 460, 468, 473, 473, 473, 489, 498, 501, 510,
161763 513, 517, 522, 529, 534, 543, 547, 550, 555, 557, 561, 569, 575,
161764 578, 587, 592, 600, 600, 604, 613, 618, 623, 629, 632, 635, 638,
161765 640, 645, 649,
161766 };
161767 /* aKWCode[i] is the parser symbol code for the i-th keyword */
161768 static const unsigned char aKWCode[146] = {
161769 TK_REINDEX, TK_INDEXED, TK_INDEX, TK_DESC, TK_ESCAPE,
161770 TK_EACH, TK_CHECK, TK_KEY, TK_BEFORE, TK_FOREIGN,
161771 TK_FOR, TK_IGNORE, TK_LIKE_KW, TK_EXPLAIN, TK_INSTEAD,
161772 TK_ADD, TK_DATABASE, TK_AS, TK_SELECT, TK_TABLE,
161773 TK_JOIN_KW, TK_THEN, TK_END, TK_DEFERRABLE, TK_ELSE,
@@ -161502,13 +161790,14 @@
161790 TK_CAST, TK_COLUMNKW, TK_COMMIT, TK_CONFLICT, TK_JOIN_KW,
161791 TK_CTIME_KW, TK_CTIME_KW, TK_CURRENT, TK_PARTITION, TK_DROP,
161792 TK_PRECEDING, TK_FAIL, TK_LAST, TK_FILTER, TK_REPLACE,
161793 TK_FIRST, TK_FOLLOWING, TK_FROM, TK_JOIN_KW, TK_LIMIT,
161794 TK_IF, TK_ORDER, TK_RESTRICT, TK_OTHERS, TK_OVER,
161795 TK_RETURNING, TK_JOIN_KW, TK_ROLLBACK, TK_ROWS, TK_ROW,
161796 TK_UNBOUNDED, TK_UNION, TK_USING, TK_VACUUM, TK_VIEW,
161797 TK_WINDOW, TK_DO, TK_BY, TK_INITIALLY, TK_ALL,
161798 TK_PRIMARY,
161799 };
161800 /* Hash table decoded:
161801 ** 0: INSERT
161802 ** 1: IS
161803 ** 2: ROLLBACK TRIGGER
@@ -161624,11 +161913,11 @@
161913 ** 112: ORDER OUTER
161914 ** 113:
161915 ** 114: INTERSECT UNBOUNDED
161916 ** 115:
161917 ** 116:
161918 ** 117: RETURNING ON
161919 ** 118:
161920 ** 119: WHERE
161921 ** 120: NO INNER
161922 ** 121: NULL
161923 ** 122:
@@ -161789,25 +162078,26 @@
162078 testcase( i==125 ); /* IF */
162079 testcase( i==126 ); /* ORDER */
162080 testcase( i==127 ); /* RESTRICT */
162081 testcase( i==128 ); /* OTHERS */
162082 testcase( i==129 ); /* OVER */
162083 testcase( i==130 ); /* RETURNING */
162084 testcase( i==131 ); /* RIGHT */
162085 testcase( i==132 ); /* ROLLBACK */
162086 testcase( i==133 ); /* ROWS */
162087 testcase( i==134 ); /* ROW */
162088 testcase( i==135 ); /* UNBOUNDED */
162089 testcase( i==136 ); /* UNION */
162090 testcase( i==137 ); /* USING */
162091 testcase( i==138 ); /* VACUUM */
162092 testcase( i==139 ); /* VIEW */
162093 testcase( i==140 ); /* WINDOW */
162094 testcase( i==141 ); /* DO */
162095 testcase( i==142 ); /* BY */
162096 testcase( i==143 ); /* INITIALLY */
162097 testcase( i==144 ); /* ALL */
162098 testcase( i==145 ); /* PRIMARY */
162099 *pType = aKWCode[i];
162100 break;
162101 }
162102 }
162103 return n;
@@ -161815,11 +162105,11 @@
162105 SQLITE_PRIVATE int sqlite3KeywordCode(const unsigned char *z, int n){
162106 int id = TK_ID;
162107 keywordCode((char*)z, n, &id);
162108 return id;
162109 }
162110 #define SQLITE_N_KEYWORD 146
162111 SQLITE_API int sqlite3_keyword_name(int i,const char **pzName,int *pnName){
162112 if( i<0 || i>=SQLITE_N_KEYWORD ) return SQLITE_ERROR;
162113 *pzName = zKWText + aKWOffset[i];
162114 *pnName = aKWLen[i];
162115 return SQLITE_OK;
@@ -207945,28 +208235,198 @@
208235 rc = sessionChangesetInvert(&sInput, xOutput, pOut, 0, 0);
208236 sqlite3_free(sInput.buf.aBuf);
208237 return rc;
208238 }
208239
208240
208241 typedef struct SessionUpdate SessionUpdate;
208242 struct SessionUpdate {
208243 sqlite3_stmt *pStmt;
208244 u32 *aMask;
208245 SessionUpdate *pNext;
208246 };
208247
208248 typedef struct SessionApplyCtx SessionApplyCtx;
208249 struct SessionApplyCtx {
208250 sqlite3 *db;
208251 sqlite3_stmt *pDelete; /* DELETE statement */
 
208252 sqlite3_stmt *pInsert; /* INSERT statement */
208253 sqlite3_stmt *pSelect; /* SELECT statement */
208254 int nCol; /* Size of azCol[] and abPK[] arrays */
208255 const char **azCol; /* Array of column names */
208256 u8 *abPK; /* Boolean array - true if column is in PK */
208257 u32 *aUpdateMask; /* Used by sessionUpdateFind */
208258 SessionUpdate *pUp;
208259 int bStat1; /* True if table is sqlite_stat1 */
208260 int bDeferConstraints; /* True to defer constraints */
208261 int bInvertConstraints; /* Invert when iterating constraints buffer */
208262 SessionBuffer constraints; /* Deferred constraints are stored here */
208263 SessionBuffer rebase; /* Rebase information (if any) here */
208264 u8 bRebaseStarted; /* If table header is already in rebase */
208265 u8 bRebase; /* True to collect rebase information */
208266 };
208267
208268 /* Number of prepared UPDATE statements to cache. */
208269 #define SESSION_UPDATE_CACHE_SZ 12
208270
208271 /*
208272 ** Find a prepared UPDATE statement suitable for the UPDATE step currently
208273 ** being visited by the iterator. The UPDATE is of the form:
208274 **
208275 ** UPDATE tbl SET col = ?, col2 = ? WHERE pk1 IS ? AND pk2 IS ?
208276 */
208277 static int sessionUpdateFind(
208278 sqlite3_changeset_iter *pIter,
208279 SessionApplyCtx *p,
208280 int bPatchset,
208281 sqlite3_stmt **ppStmt
208282 ){
208283 int rc = SQLITE_OK;
208284 SessionUpdate *pUp = 0;
208285 int nCol = pIter->nCol;
208286 int nU32 = (pIter->nCol+33)/32;
208287 int ii;
208288
208289 if( p->aUpdateMask==0 ){
208290 p->aUpdateMask = sqlite3_malloc(nU32*sizeof(u32));
208291 if( p->aUpdateMask==0 ){
208292 rc = SQLITE_NOMEM;
208293 }
208294 }
208295
208296 if( rc==SQLITE_OK ){
208297 memset(p->aUpdateMask, 0, nU32*sizeof(u32));
208298 rc = SQLITE_CORRUPT;
208299 for(ii=0; ii<pIter->nCol; ii++){
208300 if( sessionChangesetNew(pIter, ii) ){
208301 p->aUpdateMask[ii/32] |= (1<<(ii%32));
208302 rc = SQLITE_OK;
208303 }
208304 }
208305 }
208306
208307 if( rc==SQLITE_OK ){
208308 if( bPatchset ) p->aUpdateMask[nCol/32] |= (1<<(nCol%32));
208309
208310 if( p->pUp ){
208311 int nUp = 0;
208312 SessionUpdate **pp = &p->pUp;
208313 while( 1 ){
208314 nUp++;
208315 if( 0==memcmp(p->aUpdateMask, (*pp)->aMask, nU32*sizeof(u32)) ){
208316 pUp = *pp;
208317 *pp = pUp->pNext;
208318 pUp->pNext = p->pUp;
208319 p->pUp = pUp;
208320 break;
208321 }
208322
208323 if( (*pp)->pNext ){
208324 pp = &(*pp)->pNext;
208325 }else{
208326 if( nUp>=SESSION_UPDATE_CACHE_SZ ){
208327 sqlite3_finalize((*pp)->pStmt);
208328 sqlite3_free(*pp);
208329 *pp = 0;
208330 }
208331 break;
208332 }
208333 }
208334 }
208335
208336 if( pUp==0 ){
208337 int nByte = sizeof(SessionUpdate) * nU32*sizeof(u32);
208338 int bStat1 = (sqlite3_stricmp(pIter->zTab, "sqlite_stat1")==0);
208339 pUp = (SessionUpdate*)sqlite3_malloc(nByte);
208340 if( pUp==0 ){
208341 rc = SQLITE_NOMEM;
208342 }else{
208343 const char *zSep = "";
208344 SessionBuffer buf;
208345
208346 memset(&buf, 0, sizeof(buf));
208347 pUp->aMask = (u32*)&pUp[1];
208348 memcpy(pUp->aMask, p->aUpdateMask, nU32*sizeof(u32));
208349
208350 sessionAppendStr(&buf, "UPDATE main.", &rc);
208351 sessionAppendIdent(&buf, pIter->zTab, &rc);
208352 sessionAppendStr(&buf, " SET ", &rc);
208353
208354 /* Create the assignments part of the UPDATE */
208355 for(ii=0; ii<pIter->nCol; ii++){
208356 if( p->abPK[ii]==0 && sessionChangesetNew(pIter, ii) ){
208357 sessionAppendStr(&buf, zSep, &rc);
208358 sessionAppendIdent(&buf, p->azCol[ii], &rc);
208359 sessionAppendStr(&buf, " = ?", &rc);
208360 sessionAppendInteger(&buf, ii*2+1, &rc);
208361 zSep = ", ";
208362 }
208363 }
208364
208365 /* Create the WHERE clause part of the UPDATE */
208366 zSep = "";
208367 sessionAppendStr(&buf, " WHERE ", &rc);
208368 for(ii=0; ii<pIter->nCol; ii++){
208369 if( p->abPK[ii] || (bPatchset==0 && sessionChangesetOld(pIter, ii)) ){
208370 sessionAppendStr(&buf, zSep, &rc);
208371 if( bStat1 && ii==1 ){
208372 assert( sqlite3_stricmp(p->azCol[ii], "idx")==0 );
208373 sessionAppendStr(&buf,
208374 "idx IS CASE "
208375 "WHEN length(?4)=0 AND typeof(?4)='blob' THEN NULL "
208376 "ELSE ?4 END ", &rc
208377 );
208378 }else{
208379 sessionAppendIdent(&buf, p->azCol[ii], &rc);
208380 sessionAppendStr(&buf, " IS ?", &rc);
208381 sessionAppendInteger(&buf, ii*2+2, &rc);
208382 }
208383 zSep = " AND ";
208384 }
208385 }
208386
208387 if( rc==SQLITE_OK ){
208388 char *zSql = (char*)buf.aBuf;
208389 rc = sqlite3_prepare_v2(p->db, zSql, buf.nBuf, &pUp->pStmt, 0);
208390 }
208391
208392 if( rc!=SQLITE_OK ){
208393 sqlite3_free(pUp);
208394 pUp = 0;
208395 }else{
208396 pUp->pNext = p->pUp;
208397 p->pUp = pUp;
208398 }
208399 sqlite3_free(buf.aBuf);
208400 }
208401 }
208402 }
208403
208404 assert( (rc==SQLITE_OK)==(pUp!=0) );
208405 if( pUp ){
208406 *ppStmt = pUp->pStmt;
208407 }else{
208408 *ppStmt = 0;
208409 }
208410 return rc;
208411 }
208412
208413 /*
208414 ** Free all cached UPDATE statements.
208415 */
208416 static void sessionUpdateFree(SessionApplyCtx *p){
208417 SessionUpdate *pUp;
208418 SessionUpdate *pNext;
208419 for(pUp=p->pUp; pUp; pUp=pNext){
208420 pNext = pUp->pNext;
208421 sqlite3_finalize(pUp->pStmt);
208422 sqlite3_free(pUp);
208423 }
208424 p->pUp = 0;
208425 sqlite3_free(p->aUpdateMask);
208426 p->aUpdateMask = 0;
208427 }
208428
208429 /*
208430 ** Formulate a statement to DELETE a row from database db. Assuming a table
208431 ** structure like this:
208432 **
@@ -208032,107 +208492,10 @@
208492 }
208493 sqlite3_free(buf.aBuf);
208494
208495 return rc;
208496 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
208497
208498 /*
208499 ** Formulate and prepare an SQL statement to query table zTab by primary
208500 ** key. Assuming the following table structure:
208501 **
@@ -208210,21 +208573,10 @@
208573 "INSERT INTO main.sqlite_stat1 VALUES(?1, "
208574 "CASE WHEN length(?2)=0 AND typeof(?2)='blob' THEN NULL ELSE ?2 END, "
208575 "?3)"
208576 );
208577 }
 
 
 
 
 
 
 
 
 
 
 
208578 if( rc==SQLITE_OK ){
208579 rc = sessionPrepare(db, &p->pDelete,
208580 "DELETE FROM main.sqlite_stat1 WHERE tbl=?1 AND idx IS "
208581 "CASE WHEN length(?2)=0 AND typeof(?2)='blob' THEN NULL ELSE ?2 END "
208582 "AND (?4 OR stat IS ?3)"
@@ -208537,11 +208889,11 @@
208889 const char *zDummy;
208890 int op;
208891 int nCol;
208892 int rc = SQLITE_OK;
208893
208894 assert( p->pDelete && p->pInsert && p->pSelect );
208895 assert( p->azCol && p->abPK );
208896 assert( !pbReplace || *pbReplace==0 );
208897
208898 sqlite3changeset_op(pIter, &zDummy, &nCol, &op, 0);
208899
@@ -208577,33 +208929,32 @@
208929 );
208930 }
208931
208932 }else if( op==SQLITE_UPDATE ){
208933 int i;
208934 sqlite3_stmt *pUp = 0;
208935 int bPatchset = (pbRetry==0 || pIter->bPatchset);
208936
208937 rc = sessionUpdateFind(pIter, p, bPatchset, &pUp);
208938
208939 /* Bind values to the UPDATE statement. */
208940 for(i=0; rc==SQLITE_OK && i<nCol; i++){
208941 sqlite3_value *pOld = sessionChangesetOld(pIter, i);
208942 sqlite3_value *pNew = sessionChangesetNew(pIter, i);
208943 if( p->abPK[i] || (bPatchset==0 && pOld) ){
208944 rc = sessionBindValue(pUp, i*2+2, pOld);
 
 
208945 }
208946 if( rc==SQLITE_OK && pNew ){
208947 rc = sessionBindValue(pUp, i*2+1, pNew);
208948 }
208949 }
 
 
 
208950 if( rc!=SQLITE_OK ) return rc;
208951
208952 /* Attempt the UPDATE. In the case of a NOTFOUND or DATA conflict,
208953 ** the result will be SQLITE_OK with 0 rows modified. */
208954 sqlite3_step(pUp);
208955 rc = sqlite3_reset(pUp);
208956
208957 if( rc==SQLITE_OK && sqlite3_changes(p->db)==0 ){
208958 /* A NOTFOUND or DATA error. Search the table to see if it contains
208959 ** a row with a matching primary key. If so, this is a DATA conflict.
208960 ** Otherwise, if there is no primary key match, it is a NOTFOUND. */
@@ -208822,18 +209173,17 @@
209173 rc = sessionRetryConstraints(
209174 db, pIter->bPatchset, zTab, &sApply, xConflict, pCtx
209175 );
209176 if( rc!=SQLITE_OK ) break;
209177
209178 sessionUpdateFree(&sApply);
209179 sqlite3_free((char*)sApply.azCol); /* cast works around VC++ bug */
209180 sqlite3_finalize(sApply.pDelete);
 
209181 sqlite3_finalize(sApply.pInsert);
209182 sqlite3_finalize(sApply.pSelect);
209183 sApply.db = db;
209184 sApply.pDelete = 0;
 
209185 sApply.pInsert = 0;
209186 sApply.pSelect = 0;
209187 sApply.nCol = 0;
209188 sApply.azCol = 0;
209189 sApply.abPK = 0;
@@ -208893,15 +209243,14 @@
209243 if( (rc = sessionStat1Sql(db, &sApply) ) ){
209244 break;
209245 }
209246 sApply.bStat1 = 1;
209247 }else{
209248 if( (rc = sessionSelectRow(db, zTab, &sApply))
209249 || (rc = sessionDeleteRow(db, zTab, &sApply))
209250 || (rc = sessionInsertRow(db, zTab, &sApply))
209251 ){
 
209252 break;
209253 }
209254 sApply.bStat1 = 0;
209255 }
209256 }
@@ -208956,13 +209305,13 @@
209305 if( rc==SQLITE_OK && bPatchset==0 && sApply.bRebase ){
209306 *ppRebase = (void*)sApply.rebase.aBuf;
209307 *pnRebase = sApply.rebase.nBuf;
209308 sApply.rebase.aBuf = 0;
209309 }
209310 sessionUpdateFree(&sApply);
209311 sqlite3_finalize(sApply.pInsert);
209312 sqlite3_finalize(sApply.pDelete);
 
209313 sqlite3_finalize(sApply.pSelect);
209314 sqlite3_free((char*)sApply.azCol); /* cast works around VC++ bug */
209315 sqlite3_free((char*)sApply.constraints.aBuf);
209316 sqlite3_free((char*)sApply.rebase.aBuf);
209317 sqlite3_mutex_leave(sqlite3_db_mutex(db));
@@ -228066,11 +228415,11 @@
228415 int nArg, /* Number of args */
228416 sqlite3_value **apUnused /* Function arguments */
228417 ){
228418 assert( nArg==0 );
228419 UNUSED_PARAM2(nArg, apUnused);
228420 sqlite3_result_text(pCtx, "fts5: 2021-02-03 13:20:12 1eb69c64ed4a11601698000573c507684bc4b0366336ba0748ebd661644d0902", -1, SQLITE_TRANSIENT);
228421 }
228422
228423 /*
228424 ** Return true if zName is the extension on one of the shadow tables used
228425 ** by this module.
@@ -232992,12 +233341,12 @@
233341 }
233342 #endif /* SQLITE_CORE */
233343 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
233344
233345 /************** End of stmt.c ************************************************/
233346 #if __LINE__!=233346
233347 #undef SQLITE_SOURCE_ID
233348 #define SQLITE_SOURCE_ID "2021-02-03 13:20:12 1eb69c64ed4a11601698000573c507684bc4b0366336ba0748ebd661644dalt2"
233349 #endif
233350 /* Return the source-id for this library */
233351 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
233352 /************************** End of sqlite3.c ******************************/
233353
+8 -2
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123123
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124124
** [sqlite_version()] and [sqlite_source_id()].
125125
*/
126126
#define SQLITE_VERSION "3.35.0"
127127
#define SQLITE_VERSION_NUMBER 3035000
128
-#define SQLITE_SOURCE_ID "2021-01-27 19:15:06 9dc7fc9f04d5c14fc436e5ff5b4c06c1969ddde5857ebeb5dccd59b7c748c339"
128
+#define SQLITE_SOURCE_ID "2021-02-03 13:20:12 1eb69c64ed4a11601698000573c507684bc4b0366336ba0748ebd661644d0902"
129129
130130
/*
131131
** CAPI3REF: Run-Time Library Version Numbers
132132
** KEYWORDS: sqlite3_version sqlite3_sourceid
133133
**
@@ -2113,11 +2113,17 @@
21132113
** The first argument is an integer which is 0 to disable triggers,
21142114
** positive to enable triggers or negative to leave the setting unchanged.
21152115
** The second parameter is a pointer to an integer into which
21162116
** is written 0 or 1 to indicate whether triggers are disabled or enabled
21172117
** following this call. The second parameter may be a NULL pointer, in
2118
-** which case the trigger setting is not reported back. </dd>
2118
+** which case the trigger setting is not reported back.
2119
+**
2120
+** <p>Originally this option disabled all triggers. ^(However, since
2121
+** SQLite version 3.35.0, TEMP triggers are still allowed even if
2122
+** this option is off. So, in other words, this option now only disables
2123
+** triggers in the main database schema or in the schemas of ATTACH-ed
2124
+** databases.)^ </dd>
21192125
**
21202126
** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
21212127
** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
21222128
** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
21232129
** There should be two additional arguments.
21242130
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.35.0"
127 #define SQLITE_VERSION_NUMBER 3035000
128 #define SQLITE_SOURCE_ID "2021-01-27 19:15:06 9dc7fc9f04d5c14fc436e5ff5b4c06c1969ddde5857ebeb5dccd59b7c748c339"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
@@ -2113,11 +2113,17 @@
2113 ** The first argument is an integer which is 0 to disable triggers,
2114 ** positive to enable triggers or negative to leave the setting unchanged.
2115 ** The second parameter is a pointer to an integer into which
2116 ** is written 0 or 1 to indicate whether triggers are disabled or enabled
2117 ** following this call. The second parameter may be a NULL pointer, in
2118 ** which case the trigger setting is not reported back. </dd>
 
 
 
 
 
 
2119 **
2120 ** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
2121 ** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
2122 ** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
2123 ** There should be two additional arguments.
2124
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.35.0"
127 #define SQLITE_VERSION_NUMBER 3035000
128 #define SQLITE_SOURCE_ID "2021-02-03 13:20:12 1eb69c64ed4a11601698000573c507684bc4b0366336ba0748ebd661644d0902"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
@@ -2113,11 +2113,17 @@
2113 ** The first argument is an integer which is 0 to disable triggers,
2114 ** positive to enable triggers or negative to leave the setting unchanged.
2115 ** The second parameter is a pointer to an integer into which
2116 ** is written 0 or 1 to indicate whether triggers are disabled or enabled
2117 ** following this call. The second parameter may be a NULL pointer, in
2118 ** which case the trigger setting is not reported back.
2119 **
2120 ** <p>Originally this option disabled all triggers. ^(However, since
2121 ** SQLite version 3.35.0, TEMP triggers are still allowed even if
2122 ** this option is off. So, in other words, this option now only disables
2123 ** triggers in the main database schema or in the schemas of ATTACH-ed
2124 ** databases.)^ </dd>
2125 **
2126 ** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
2127 ** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
2128 ** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
2129 ** There should be two additional arguments.
2130

Keyboard Shortcuts

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