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.
Commit
60b8c71b0070a7e842006416fcd4b41ca3ec021422bb77811ccb9f3794628c3c
Parent
bfa99a93995ed02…
2 files changed
+3388
-3039
+8
-2
+3388
-3039
| --- src/sqlite3.c | ||
| +++ src/sqlite3.c | ||
| @@ -1186,11 +1186,11 @@ | ||
| 1186 | 1186 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 1187 | 1187 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 1188 | 1188 | */ |
| 1189 | 1189 | #define SQLITE_VERSION "3.35.0" |
| 1190 | 1190 | #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" | |
| 1192 | 1192 | |
| 1193 | 1193 | /* |
| 1194 | 1194 | ** CAPI3REF: Run-Time Library Version Numbers |
| 1195 | 1195 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 1196 | 1196 | ** |
| @@ -3176,11 +3176,17 @@ | ||
| 3176 | 3176 | ** The first argument is an integer which is 0 to disable triggers, |
| 3177 | 3177 | ** positive to enable triggers or negative to leave the setting unchanged. |
| 3178 | 3178 | ** The second parameter is a pointer to an integer into which |
| 3179 | 3179 | ** is written 0 or 1 to indicate whether triggers are disabled or enabled |
| 3180 | 3180 | ** 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> | |
| 3182 | 3188 | ** |
| 3183 | 3189 | ** [[SQLITE_DBCONFIG_ENABLE_VIEW]] |
| 3184 | 3190 | ** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt> |
| 3185 | 3191 | ** <dd> ^This option is used to enable or disable [CREATE VIEW | views]. |
| 3186 | 3192 | ** There should be two additional arguments. |
| @@ -14170,43 +14176,44 @@ | ||
| 14170 | 14176 | #define TK_ORDER 143 |
| 14171 | 14177 | #define TK_GROUP 144 |
| 14172 | 14178 | #define TK_HAVING 145 |
| 14173 | 14179 | #define TK_LIMIT 146 |
| 14174 | 14180 | #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 | |
| 14208 | 14215 | |
| 14209 | 14216 | /************** End of parse.h ***********************************************/ |
| 14210 | 14217 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 14211 | 14218 | #include <stdio.h> |
| 14212 | 14219 | #include <stdlib.h> |
| @@ -14780,10 +14787,11 @@ | ||
| 14780 | 14787 | typedef struct Parse Parse; |
| 14781 | 14788 | typedef struct ParseCleanup ParseCleanup; |
| 14782 | 14789 | typedef struct PreUpdate PreUpdate; |
| 14783 | 14790 | typedef struct PrintfArguments PrintfArguments; |
| 14784 | 14791 | typedef struct RenameToken RenameToken; |
| 14792 | +typedef struct Returning Returning; | |
| 14785 | 14793 | typedef struct RowSet RowSet; |
| 14786 | 14794 | typedef struct Savepoint Savepoint; |
| 14787 | 14795 | typedef struct Select Select; |
| 14788 | 14796 | typedef struct SQLiteThread SQLiteThread; |
| 14789 | 14797 | typedef struct SelectDest SelectDest; |
| @@ -15757,31 +15765,31 @@ | ||
| 15757 | 15765 | #define OP_Variable 75 /* synopsis: r[P2]=parameter(P1,P4) */ |
| 15758 | 15766 | #define OP_Move 76 /* synopsis: r[P2@P3]=r[P1@P3] */ |
| 15759 | 15767 | #define OP_Copy 77 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */ |
| 15760 | 15768 | #define OP_SCopy 78 /* synopsis: r[P2]=r[P1] */ |
| 15761 | 15769 | #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 */ | |
| 15783 | 15791 | #define OP_BitAnd 101 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */ |
| 15784 | 15792 | #define OP_BitOr 102 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */ |
| 15785 | 15793 | #define OP_ShiftLeft 103 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */ |
| 15786 | 15794 | #define OP_ShiftRight 104 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */ |
| 15787 | 15795 | #define OP_Add 105 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */ |
| @@ -15788,77 +15796,78 @@ | ||
| 15788 | 15796 | #define OP_Subtract 106 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */ |
| 15789 | 15797 | #define OP_Multiply 107 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */ |
| 15790 | 15798 | #define OP_Divide 108 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */ |
| 15791 | 15799 | #define OP_Remainder 109 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */ |
| 15792 | 15800 | #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 */ | |
| 15794 | 15802 | #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 */ | |
| 15797 | 15805 | #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 | |
| 15860 | 15869 | |
| 15861 | 15870 | /* Properties such as "out2" or "jump" that are specified in |
| 15862 | 15871 | ** comments following the "case" for each opcode in the vdbe.c |
| 15863 | 15872 | ** are encoded into bitvectors as follows: |
| 15864 | 15873 | */ |
| @@ -15877,23 +15886,23 @@ | ||
| 15877 | 15886 | /* 40 */ 0x01, 0x01, 0x23, 0x26, 0x26, 0x0b, 0x01, 0x01,\ |
| 15878 | 15887 | /* 48 */ 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\ |
| 15879 | 15888 | /* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, 0x00,\ |
| 15880 | 15889 | /* 64 */ 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10, 0x10,\ |
| 15881 | 15890 | /* 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,\ | |
| 15884 | 15893 | /* 96 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26, 0x26,\ |
| 15885 | 15894 | /* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x00,\ |
| 15886 | 15895 | /* 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,\ | |
| 15892 | 15901 | /* 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,} | |
| 15895 | 15904 | |
| 15896 | 15905 | /* The sqlite3P2Values() routine is able to run faster if it knows |
| 15897 | 15906 | ** the value of the largest JUMP opcode. The smaller the maximum |
| 15898 | 15907 | ** JUMP opcode the better, so the mkopcodeh.tcl script that |
| 15899 | 15908 | ** generated this include file strives to group all JUMP opcodes |
| @@ -15993,10 +16002,11 @@ | ||
| 15993 | 16002 | #endif |
| 15994 | 16003 | SQLITE_PRIVATE void sqlite3VdbeResetStepResult(Vdbe*); |
| 15995 | 16004 | SQLITE_PRIVATE void sqlite3VdbeRewind(Vdbe*); |
| 15996 | 16005 | SQLITE_PRIVATE int sqlite3VdbeReset(Vdbe*); |
| 15997 | 16006 | SQLITE_PRIVATE void sqlite3VdbeSetNumCols(Vdbe*,int); |
| 16007 | +SQLITE_PRIVATE void sqlite3VdbeColumnInfoXfer(Vdbe*,Vdbe*); | |
| 15998 | 16008 | SQLITE_PRIVATE int sqlite3VdbeSetColName(Vdbe*, int, int, const char *, void(*)(void*)); |
| 15999 | 16009 | SQLITE_PRIVATE void sqlite3VdbeCountChanges(Vdbe*); |
| 16000 | 16010 | SQLITE_PRIVATE sqlite3 *sqlite3VdbeDb(Vdbe*); |
| 16001 | 16011 | SQLITE_PRIVATE u8 sqlite3VdbePrepareFlags(Vdbe*); |
| 16002 | 16012 | SQLITE_PRIVATE void sqlite3VdbeSetSql(Vdbe*, const char *z, int n, u8); |
| @@ -18881,10 +18891,11 @@ | ||
| 18881 | 18891 | int addrCrTab; /* Address of OP_CreateBtree opcode on CREATE TABLE */ |
| 18882 | 18892 | u32 nQueryLoop; /* Est number of iterations of a query (10*log2(N)) */ |
| 18883 | 18893 | u32 oldmask; /* Mask of old.* columns referenced */ |
| 18884 | 18894 | u32 newmask; /* Mask of new.* columns referenced */ |
| 18885 | 18895 | u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */ |
| 18896 | + u8 bReturning; /* Coding a RETURNING trigger */ | |
| 18886 | 18897 | u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */ |
| 18887 | 18898 | u8 disableTriggers; /* True to disable triggers */ |
| 18888 | 18899 | |
| 18889 | 18900 | /************************************************************************** |
| 18890 | 18901 | ** Fields above must be initialized to zero. The fields that follow, |
| @@ -19030,10 +19041,11 @@ | ||
| 19030 | 19041 | struct Trigger { |
| 19031 | 19042 | char *zName; /* The name of the trigger */ |
| 19032 | 19043 | char *table; /* The table or view to which the trigger applies */ |
| 19033 | 19044 | u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT */ |
| 19034 | 19045 | u8 tr_tm; /* One of TRIGGER_BEFORE, TRIGGER_AFTER */ |
| 19046 | + u8 bReturning; /* This trigger implements a RETURNING clause */ | |
| 19035 | 19047 | Expr *pWhen; /* The WHEN clause of the expression (may be NULL) */ |
| 19036 | 19048 | IdList *pColumns; /* If this is an UPDATE OF <column-list> trigger, |
| 19037 | 19049 | the <column-list> is stored here */ |
| 19038 | 19050 | Schema *pSchema; /* Schema containing the trigger */ |
| 19039 | 19051 | Schema *pTabSchema; /* Schema containing the table */ |
| @@ -19088,11 +19100,12 @@ | ||
| 19088 | 19100 | * them to. See sqlite3Update() documentation of "pChanges" |
| 19089 | 19101 | * argument. |
| 19090 | 19102 | * |
| 19091 | 19103 | */ |
| 19092 | 19104 | 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 */ | |
| 19094 | 19107 | u8 orconf; /* OE_Rollback etc. */ |
| 19095 | 19108 | Trigger *pTrig; /* The trigger that this step is a part of */ |
| 19096 | 19109 | Select *pSelect; /* SELECT statement or RHS of INSERT INTO SELECT ... */ |
| 19097 | 19110 | char *zTarget; /* Target table for DELETE, UPDATE, INSERT */ |
| 19098 | 19111 | SrcList *pFrom; /* FROM clause for UPDATE statement (if any) */ |
| @@ -19102,10 +19115,22 @@ | ||
| 19102 | 19115 | Upsert *pUpsert; /* Upsert clauses on an INSERT */ |
| 19103 | 19116 | char *zSpan; /* Original SQL text of this command */ |
| 19104 | 19117 | TriggerStep *pNext; /* Next in the link-list */ |
| 19105 | 19118 | TriggerStep *pLast; /* Last element in link-list. Valid for 1st elem only */ |
| 19106 | 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 | +}; | |
| 19107 | 19132 | |
| 19108 | 19133 | /* |
| 19109 | 19134 | ** An objected used to accumulate the text of a string where we |
| 19110 | 19135 | ** do not necessarily know how big the string will be in the end. |
| 19111 | 19136 | */ |
| @@ -19704,10 +19729,11 @@ | ||
| 19704 | 19729 | SQLITE_PRIVATE void sqlite3AddCheckConstraint(Parse*, Expr*, const char*, const char*); |
| 19705 | 19730 | SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,Expr*,const char*,const char*); |
| 19706 | 19731 | SQLITE_PRIVATE void sqlite3AddCollateType(Parse*, Token*); |
| 19707 | 19732 | SQLITE_PRIVATE void sqlite3AddGenerated(Parse*,Expr*,Token*); |
| 19708 | 19733 | SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u8,Select*); |
| 19734 | +SQLITE_PRIVATE void sqlite3AddReturning(Parse*,ExprList*); | |
| 19709 | 19735 | SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*, |
| 19710 | 19736 | sqlite3_vfs**,char**,char **); |
| 19711 | 19737 | #define sqlite3CodecQueryParameters(A,B,C) 0 |
| 19712 | 19738 | SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3*,const char*); |
| 19713 | 19739 | |
| @@ -33429,31 +33455,31 @@ | ||
| 33429 | 33455 | /* 75 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"), |
| 33430 | 33456 | /* 76 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"), |
| 33431 | 33457 | /* 77 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"), |
| 33432 | 33458 | /* 78 */ "SCopy" OpHelp("r[P2]=r[P1]"), |
| 33433 | 33459 | /* 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"), | |
| 33455 | 33481 | /* 101 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"), |
| 33456 | 33482 | /* 102 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"), |
| 33457 | 33483 | /* 103 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"), |
| 33458 | 33484 | /* 104 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"), |
| 33459 | 33485 | /* 105 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"), |
| @@ -33460,77 +33486,78 @@ | ||
| 33460 | 33486 | /* 106 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"), |
| 33461 | 33487 | /* 107 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"), |
| 33462 | 33488 | /* 108 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"), |
| 33463 | 33489 | /* 109 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"), |
| 33464 | 33490 | /* 110 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"), |
| 33465 | - /* 111 */ "SorterOpen" OpHelp(""), | |
| 33491 | + /* 111 */ "OpenEphemeral" OpHelp("nColumn=P2"), | |
| 33466 | 33492 | /* 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"), | |
| 33469 | 33495 | /* 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(""), | |
| 33532 | 33559 | }; |
| 33533 | 33560 | return azName[i]; |
| 33534 | 33561 | } |
| 33535 | 33562 | #endif |
| 33536 | 33563 | |
| @@ -72795,10 +72822,13 @@ | ||
| 72795 | 72822 | if( i<nOld ){ |
| 72796 | 72823 | pNew = apNew[i] = apOld[i]; |
| 72797 | 72824 | apOld[i] = 0; |
| 72798 | 72825 | rc = sqlite3PagerWrite(pNew->pDbPage); |
| 72799 | 72826 | nNew++; |
| 72827 | + if( sqlite3PagerPageRefcount(pNew->pDbPage)!=1+(i==(iParentIdx-nxDiv)) ){ | |
| 72828 | + rc = SQLITE_CORRUPT_BKPT; | |
| 72829 | + } | |
| 72800 | 72830 | if( rc ) goto balance_cleanup; |
| 72801 | 72831 | }else{ |
| 72802 | 72832 | assert( i>0 ); |
| 72803 | 72833 | rc = allocateBtreePage(pBt, &pNew, &pgno, (bBulk ? 1 : pgno), 0); |
| 72804 | 72834 | if( rc ) goto balance_cleanup; |
| @@ -80821,10 +80851,27 @@ | ||
| 80821 | 80851 | p->nResColumn = (u16)nResColumn; |
| 80822 | 80852 | p->aColName = (Mem*)sqlite3DbMallocRawNN(db, sizeof(Mem)*n ); |
| 80823 | 80853 | if( p->aColName==0 ) return; |
| 80824 | 80854 | initMemArray(p->aColName, n, db, MEM_Null); |
| 80825 | 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 | +} | |
| 80826 | 80873 | |
| 80827 | 80874 | /* |
| 80828 | 80875 | ** Set the name of the idx'th column to be returned by the SQL statement. |
| 80829 | 80876 | ** zName must be a pointer to a nul terminated string. |
| 80830 | 80877 | ** |
| @@ -87264,10 +87311,30 @@ | ||
| 87264 | 87311 | assert( (pIn1->flags & MEM_Int)!=0 ); |
| 87265 | 87312 | pOut = &aMem[pOp->p2]; |
| 87266 | 87313 | sqlite3VdbeMemSetInt64(pOut, pIn1->u.i); |
| 87267 | 87314 | break; |
| 87268 | 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 | +} | |
| 87269 | 87336 | |
| 87270 | 87337 | /* Opcode: ResultRow P1 P2 * * * |
| 87271 | 87338 | ** Synopsis: output=r[P1@P2] |
| 87272 | 87339 | ** |
| 87273 | 87340 | ** The registers P1 through P1+P2-1 contain a single row of |
| @@ -87281,38 +87348,10 @@ | ||
| 87281 | 87348 | int i; |
| 87282 | 87349 | assert( p->nResColumn==pOp->p2 ); |
| 87283 | 87350 | assert( pOp->p1>0 ); |
| 87284 | 87351 | assert( pOp->p1+pOp->p2<=(p->nMem+1 - p->nCursor)+1 ); |
| 87285 | 87352 | |
| 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 | 87353 | /* Invalidate all ephemeral cursor row caches */ |
| 87315 | 87354 | p->cacheCtr = (p->cacheCtr + 2)|1; |
| 87316 | 87355 | |
| 87317 | 87356 | /* Make sure the results of the current row are \000 terminated |
| 87318 | 87357 | ** and have an assigned type. The results are de-ephemeralized as |
| @@ -98849,27 +98888,30 @@ | ||
| 98849 | 98888 | #if !defined(SQLITE_OMIT_TRIGGER) || !defined(SQLITE_OMIT_UPSERT) |
| 98850 | 98889 | /* If we have not already resolved the name, then maybe |
| 98851 | 98890 | ** it is a new.* or old.* trigger argument reference. Or |
| 98852 | 98891 | ** maybe it is an excluded.* from an upsert. |
| 98853 | 98892 | */ |
| 98854 | - if( zDb==0 && zTab!=0 && cntTab==0 ){ | |
| 98893 | + if( zDb==0 && cntTab==0 ){ | |
| 98855 | 98894 | pTab = 0; |
| 98856 | 98895 | #ifndef SQLITE_OMIT_TRIGGER |
| 98857 | 98896 | if( pParse->pTriggerTab!=0 ){ |
| 98858 | 98897 | int op = pParse->eTriggerOp; |
| 98859 | 98898 | 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 ){ | |
| 98861 | 98900 | pExpr->iTable = 1; |
| 98862 | 98901 | pTab = pParse->pTriggerTab; |
| 98863 | - }else if( op!=TK_INSERT && sqlite3StrICmp("old",zTab)==0 ){ | |
| 98902 | + }else if( op!=TK_INSERT && zTab && sqlite3StrICmp("old",zTab)==0 ){ | |
| 98864 | 98903 | pExpr->iTable = 0; |
| 98865 | 98904 | pTab = pParse->pTriggerTab; |
| 98905 | + }else if( pParse->bReturning ){ | |
| 98906 | + pExpr->iTable = op!=TK_DELETE; | |
| 98907 | + pTab = pParse->pTriggerTab; | |
| 98866 | 98908 | } |
| 98867 | 98909 | } |
| 98868 | 98910 | #endif /* SQLITE_OMIT_TRIGGER */ |
| 98869 | 98911 | #ifndef SQLITE_OMIT_UPSERT |
| 98870 | - if( (pNC->ncFlags & NC_UUpsert)!=0 ){ | |
| 98912 | + if( (pNC->ncFlags & NC_UUpsert)!=0 && ALWAYS(zTab) ){ | |
| 98871 | 98913 | Upsert *pUpsert = pNC->uNC.pUpsert; |
| 98872 | 98914 | if( pUpsert && sqlite3StrICmp("excluded",zTab)==0 ){ |
| 98873 | 98915 | pTab = pUpsert->pUpsertSrc->a[0].pTab; |
| 98874 | 98916 | pExpr->iTable = EXCLUDED_TABLE_NUMBER; |
| 98875 | 98917 | } |
| @@ -110733,11 +110775,10 @@ | ||
| 110733 | 110775 | #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER) |
| 110734 | 110776 | if( sqlite3WalkExpr(&pFix->w, pList->a[i].pOn) ) return WRC_Abort; |
| 110735 | 110777 | #endif |
| 110736 | 110778 | } |
| 110737 | 110779 | if( pSelect->pWith ){ |
| 110738 | - int i; | |
| 110739 | 110780 | for(i=0; i<pSelect->pWith->nCte; i++){ |
| 110740 | 110781 | if( sqlite3WalkSelect(p, pSelect->pWith->a[i].pSelect) ){ |
| 110741 | 110782 | return WRC_Abort; |
| 110742 | 110783 | } |
| 110743 | 110784 | } |
| @@ -112364,10 +112405,79 @@ | ||
| 112364 | 112405 | pTab->tabFlags |= TF_OOOHidden; |
| 112365 | 112406 | } |
| 112366 | 112407 | } |
| 112367 | 112408 | #endif |
| 112368 | 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 | +} | |
| 112369 | 112479 | |
| 112370 | 112480 | /* |
| 112371 | 112481 | ** Add a new column to the table currently being constructed. |
| 112372 | 112482 | ** |
| 112373 | 112483 | ** The parser calls this routine once for each column declaration |
| @@ -117226,10 +117336,11 @@ | ||
| 117226 | 117336 | ** we are counting rows. |
| 117227 | 117337 | */ |
| 117228 | 117338 | if( (db->flags & SQLITE_CountRows)!=0 |
| 117229 | 117339 | && !pParse->nested |
| 117230 | 117340 | && !pParse->pTriggerTab |
| 117341 | + && !pParse->bReturning | |
| 117231 | 117342 | ){ |
| 117232 | 117343 | memCnt = ++pParse->nMem; |
| 117233 | 117344 | sqlite3VdbeAddOp2(v, OP_Integer, 0, memCnt); |
| 117234 | 117345 | } |
| 117235 | 117346 | |
| @@ -117447,11 +117558,11 @@ | ||
| 117447 | 117558 | /* Return the number of rows that were deleted. If this routine is |
| 117448 | 117559 | ** generating code because of a call to sqlite3NestedParse(), do not |
| 117449 | 117560 | ** invoke the callback function. |
| 117450 | 117561 | */ |
| 117451 | 117562 | if( memCnt ){ |
| 117452 | - sqlite3VdbeAddOp2(v, OP_ResultRow, memCnt, 1); | |
| 117563 | + sqlite3VdbeAddOp2(v, OP_ChngCntRow, memCnt, 1); | |
| 117453 | 117564 | sqlite3VdbeSetNumCols(v, 1); |
| 117454 | 117565 | sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows deleted", SQLITE_STATIC); |
| 117455 | 117566 | } |
| 117456 | 117567 | |
| 117457 | 117568 | delete_from_cleanup: |
| @@ -119781,27 +119892,28 @@ | ||
| 119781 | 119892 | assert( argc==1 || argc==2 ); |
| 119782 | 119893 | switch( sqlite3_value_numeric_type(argv[0]) ){ |
| 119783 | 119894 | case SQLITE_INTEGER: |
| 119784 | 119895 | case SQLITE_FLOAT: |
| 119785 | 119896 | x = sqlite3_value_double(argv[0]); |
| 119786 | - if( x<0.0 ) return; | |
| 119897 | + if( x<=0.0 ) return; | |
| 119787 | 119898 | break; |
| 119788 | 119899 | default: |
| 119789 | 119900 | return; |
| 119790 | 119901 | } |
| 119791 | 119902 | if( argc==2 ){ |
| 119792 | 119903 | switch( sqlite3_value_numeric_type(argv[0]) ){ |
| 119793 | 119904 | case SQLITE_INTEGER: |
| 119794 | 119905 | case SQLITE_FLOAT: |
| 119795 | - b = x; | |
| 119906 | + b = log(x); | |
| 119907 | + if( b<=0.0 ) return; | |
| 119796 | 119908 | x = sqlite3_value_double(argv[1]); |
| 119797 | - if( x<0.0 ) return; | |
| 119909 | + if( x<=0.0 ) return; | |
| 119798 | 119910 | break; |
| 119799 | 119911 | default: |
| 119800 | 119912 | return; |
| 119801 | 119913 | } |
| 119802 | - ans = log(x)/log(b); | |
| 119914 | + ans = log(x)/b; | |
| 119803 | 119915 | }else{ |
| 119804 | 119916 | ans = log(x); |
| 119805 | 119917 | switch( SQLITE_PTR_TO_INT(sqlite3_user_data(context)) ){ |
| 119806 | 119918 | case 1: |
| 119807 | 119919 | /* Convert from natural logarithm to log base 10 */ |
| @@ -122495,10 +122607,11 @@ | ||
| 122495 | 122607 | /* Initialize the count of rows to be inserted |
| 122496 | 122608 | */ |
| 122497 | 122609 | if( (db->flags & SQLITE_CountRows)!=0 |
| 122498 | 122610 | && !pParse->nested |
| 122499 | 122611 | && !pParse->pTriggerTab |
| 122612 | + && !pParse->bReturning | |
| 122500 | 122613 | ){ |
| 122501 | 122614 | regRowCount = ++pParse->nMem; |
| 122502 | 122615 | sqlite3VdbeAddOp2(v, OP_Integer, 0, regRowCount); |
| 122503 | 122616 | } |
| 122504 | 122617 | |
| @@ -122859,11 +122972,11 @@ | ||
| 122859 | 122972 | ** Return the number of rows inserted. If this routine is |
| 122860 | 122973 | ** generating code because of a call to sqlite3NestedParse(), do not |
| 122861 | 122974 | ** invoke the callback function. |
| 122862 | 122975 | */ |
| 122863 | 122976 | if( regRowCount ){ |
| 122864 | - sqlite3VdbeAddOp2(v, OP_ResultRow, regRowCount, 1); | |
| 122977 | + sqlite3VdbeAddOp2(v, OP_ChngCntRow, regRowCount, 1); | |
| 122865 | 122978 | sqlite3VdbeSetNumCols(v, 1); |
| 122866 | 122979 | sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows inserted", SQLITE_STATIC); |
| 122867 | 122980 | } |
| 122868 | 122981 | |
| 122869 | 122982 | insert_cleanup: |
| @@ -137763,32 +137876,41 @@ | ||
| 137763 | 137876 | ** To state it another way: This routine returns a list of all triggers |
| 137764 | 137877 | ** that fire off of pTab. The list will include any TEMP triggers on |
| 137765 | 137878 | ** pTab as well as the triggers lised in pTab->pTrigger. |
| 137766 | 137879 | */ |
| 137767 | 137880 | 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 */ | |
| 137770 | 137884 | |
| 137771 | 137885 | if( pParse->disableTriggers ){ |
| 137772 | 137886 | return 0; |
| 137773 | 137887 | } |
| 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; | |
| 137775 | 137894 | 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 ){ | |
| 137779 | 137896 | Trigger *pTrig = (Trigger *)sqliteHashData(p); |
| 137780 | 137897 | if( pTrig->pTabSchema==pTab->pSchema |
| 137781 | 137898 | && 0==sqlite3StrICmp(pTrig->table, pTab->zName) |
| 137782 | 137899 | ){ |
| 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; | |
| 137784 | 137906 | pList = pTrig; |
| 137785 | 137907 | } |
| 137908 | + p = sqliteHashNext(p); | |
| 137786 | 137909 | } |
| 137787 | 137910 | } |
| 137788 | - | |
| 137789 | - return (pList ? pList : pTab->pTrigger); | |
| 137911 | + return pList; | |
| 137790 | 137912 | } |
| 137791 | 137913 | |
| 137792 | 137914 | /* |
| 137793 | 137915 | ** This is called by the parser when it sees a CREATE TRIGGER statement |
| 137794 | 137916 | ** up to the point of the BEGIN before the trigger actions. A Trigger |
| @@ -138273,11 +138395,11 @@ | ||
| 138273 | 138395 | |
| 138274 | 138396 | /* |
| 138275 | 138397 | ** Recursively delete a Trigger structure |
| 138276 | 138398 | */ |
| 138277 | 138399 | SQLITE_PRIVATE void sqlite3DeleteTrigger(sqlite3 *db, Trigger *pTrigger){ |
| 138278 | - if( pTrigger==0 ) return; | |
| 138400 | + if( pTrigger==0 || pTrigger->bReturning ) return; | |
| 138279 | 138401 | sqlite3DeleteTriggerStep(db, pTrigger->step_list); |
| 138280 | 138402 | sqlite3DbFree(db, pTrigger->zName); |
| 138281 | 138403 | sqlite3DbFree(db, pTrigger->table); |
| 138282 | 138404 | sqlite3ExprDelete(db, pTrigger->pWhen); |
| 138283 | 138405 | sqlite3IdListDelete(db, pTrigger->pColumns); |
| @@ -138438,19 +138560,52 @@ | ||
| 138438 | 138560 | ){ |
| 138439 | 138561 | int mask = 0; |
| 138440 | 138562 | Trigger *pList = 0; |
| 138441 | 138563 | Trigger *p; |
| 138442 | 138564 | |
| 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: | |
| 138452 | 138607 | if( pMask ){ |
| 138453 | 138608 | *pMask = mask; |
| 138454 | 138609 | } |
| 138455 | 138610 | return (mask ? pList : 0); |
| 138456 | 138611 | } |
| @@ -138488,10 +138643,51 @@ | ||
| 138488 | 138643 | }else{ |
| 138489 | 138644 | sqlite3DbFree(db, zName); |
| 138490 | 138645 | } |
| 138491 | 138646 | return pSrc; |
| 138492 | 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 | +} | |
| 138493 | 138689 | |
| 138494 | 138690 | /* |
| 138495 | 138691 | ** Generate VDBE code for the statements inside the body of a single |
| 138496 | 138692 | ** trigger. |
| 138497 | 138693 | */ |
| @@ -138538,10 +138734,11 @@ | ||
| 138538 | 138734 | sqlite3TriggerStepSrc(pParse, pStep), |
| 138539 | 138735 | sqlite3ExprListDup(db, pStep->pExprList, 0), |
| 138540 | 138736 | sqlite3ExprDup(db, pStep->pWhere, 0), |
| 138541 | 138737 | pParse->eOrconf, 0, 0, 0 |
| 138542 | 138738 | ); |
| 138739 | + sqlite3VdbeAddOp0(v, OP_ResetCount); | |
| 138543 | 138740 | break; |
| 138544 | 138741 | } |
| 138545 | 138742 | case TK_INSERT: { |
| 138546 | 138743 | sqlite3Insert(pParse, |
| 138547 | 138744 | sqlite3TriggerStepSrc(pParse, pStep), |
| @@ -138548,30 +138745,49 @@ | ||
| 138548 | 138745 | sqlite3SelectDup(db, pStep->pSelect, 0), |
| 138549 | 138746 | sqlite3IdListDup(db, pStep->pIdList), |
| 138550 | 138747 | pParse->eOrconf, |
| 138551 | 138748 | sqlite3UpsertDup(db, pStep->pUpsert) |
| 138552 | 138749 | ); |
| 138750 | + sqlite3VdbeAddOp0(v, OP_ResetCount); | |
| 138553 | 138751 | break; |
| 138554 | 138752 | } |
| 138555 | 138753 | case TK_DELETE: { |
| 138556 | 138754 | sqlite3DeleteFrom(pParse, |
| 138557 | 138755 | sqlite3TriggerStepSrc(pParse, pStep), |
| 138558 | 138756 | sqlite3ExprDup(db, pStep->pWhere, 0), 0, 0 |
| 138559 | 138757 | ); |
| 138758 | + sqlite3VdbeAddOp0(v, OP_ResetCount); | |
| 138560 | 138759 | break; |
| 138561 | 138760 | } |
| 138562 | - default: assert( pStep->op==TK_SELECT ); { | |
| 138761 | + case TK_SELECT: { | |
| 138563 | 138762 | SelectDest sDest; |
| 138564 | 138763 | Select *pSelect = sqlite3SelectDup(db, pStep->pSelect, 0); |
| 138565 | 138764 | sqlite3SelectDestInit(&sDest, SRT_Discard, 0); |
| 138566 | 138765 | sqlite3Select(pParse, pSelect, &sDest); |
| 138567 | 138766 | sqlite3SelectDelete(db, pSelect); |
| 138568 | 138767 | break; |
| 138569 | 138768 | } |
| 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 | + } | |
| 138573 | 138789 | } |
| 138574 | 138790 | } |
| 138575 | 138791 | |
| 138576 | 138792 | return 0; |
| 138577 | 138793 | } |
| @@ -138658,10 +138874,11 @@ | ||
| 138658 | 138874 | pSubParse->db = db; |
| 138659 | 138875 | pSubParse->pTriggerTab = pTab; |
| 138660 | 138876 | pSubParse->pToplevel = pTop; |
| 138661 | 138877 | pSubParse->zAuthContext = pTrigger->zName; |
| 138662 | 138878 | pSubParse->eTriggerOp = pTrigger->op; |
| 138879 | + pSubParse->bReturning = pTrigger->bReturning; | |
| 138663 | 138880 | pSubParse->nQueryLoop = pParse->nQueryLoop; |
| 138664 | 138881 | pSubParse->disableVtab = pParse->disableVtab; |
| 138665 | 138882 | |
| 138666 | 138883 | v = sqlite3GetVdbe(pSubParse); |
| 138667 | 138884 | if( v ){ |
| @@ -138707,10 +138924,13 @@ | ||
| 138707 | 138924 | |
| 138708 | 138925 | transferParseError(pParse, pSubParse); |
| 138709 | 138926 | if( db->mallocFailed==0 && pParse->nErr==0 ){ |
| 138710 | 138927 | pProgram->aOp = sqlite3VdbeTakeOpArray(v, &pProgram->nOp, &pTop->nMaxArg); |
| 138711 | 138928 | } |
| 138929 | + if( pTrigger->bReturning ){ | |
| 138930 | + sqlite3VdbeColumnInfoXfer(sqlite3ParseToplevel(pParse)->pVdbe, v); | |
| 138931 | + } | |
| 138712 | 138932 | pProgram->nMem = pSubParse->nMem; |
| 138713 | 138933 | pProgram->nCsr = pSubParse->nTab; |
| 138714 | 138934 | pProgram->token = (void *)pTrigger; |
| 138715 | 138935 | pPrg->aColmask[0] = pSubParse->oldmask; |
| 138716 | 138936 | pPrg->aColmask[1] = pSubParse->newmask; |
| @@ -138861,16 +139081,24 @@ | ||
| 138861 | 139081 | assert( p->pSchema!=0 ); |
| 138862 | 139082 | assert( p->pTabSchema!=0 ); |
| 138863 | 139083 | assert( p->pSchema==p->pTabSchema |
| 138864 | 139084 | || p->pSchema==pParse->db->aDb[1].pSchema ); |
| 138865 | 139085 | |
| 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)) | |
| 138868 | 139092 | && p->tr_tm==tr_tm |
| 138869 | 139093 | && checkColumnOverlap(p->pColumns, pChanges) |
| 139094 | + && (sqlite3IsToplevel(pParse) || !p->bReturning) | |
| 138870 | 139095 | ){ |
| 139096 | + u8 origOp = p->op; | |
| 139097 | + p->op = op; | |
| 138871 | 139098 | sqlite3CodeRowTriggerDirect(pParse, p, pTab, reg, orconf, ignoreJump); |
| 139099 | + p->op = origOp; | |
| 138872 | 139100 | } |
| 138873 | 139101 | } |
| 138874 | 139102 | } |
| 138875 | 139103 | |
| 138876 | 139104 | /* |
| @@ -139574,10 +139802,11 @@ | ||
| 139574 | 139802 | /* Not an UPSERT. Normal processing. Begin by |
| 139575 | 139803 | ** initialize the count of updated rows */ |
| 139576 | 139804 | if( (db->flags&SQLITE_CountRows)!=0 |
| 139577 | 139805 | && !pParse->pTriggerTab |
| 139578 | 139806 | && !pParse->nested |
| 139807 | + && !pParse->bReturning | |
| 139579 | 139808 | && pUpsert==0 |
| 139580 | 139809 | ){ |
| 139581 | 139810 | regRowCount = ++pParse->nMem; |
| 139582 | 139811 | sqlite3VdbeAddOp2(v, OP_Integer, 0, regRowCount); |
| 139583 | 139812 | } |
| @@ -140037,11 +140266,11 @@ | ||
| 140037 | 140266 | /* |
| 140038 | 140267 | ** Return the number of rows that were changed, if we are tracking |
| 140039 | 140268 | ** that information. |
| 140040 | 140269 | */ |
| 140041 | 140270 | if( regRowCount ){ |
| 140042 | - sqlite3VdbeAddOp2(v, OP_ResultRow, regRowCount, 1); | |
| 140271 | + sqlite3VdbeAddOp2(v, OP_ChngCntRow, regRowCount, 1); | |
| 140043 | 140272 | sqlite3VdbeSetNumCols(v, 1); |
| 140044 | 140273 | sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "rows updated", SQLITE_STATIC); |
| 140045 | 140274 | } |
| 140046 | 140275 | |
| 140047 | 140276 | update_cleanup: |
| @@ -152864,11 +153093,11 @@ | ||
| 152864 | 153093 | assert( pOp->opcode!=OP_Rowid || pOp->p1!=pLevel->iTabCur ); |
| 152865 | 153094 | assert( pOp->opcode!=OP_IfNullRow || pOp->p1!=pLevel->iTabCur ); |
| 152866 | 153095 | #endif |
| 152867 | 153096 | pOp = sqlite3VdbeGetOp(v, k); |
| 152868 | 153097 | pLastOp = pOp + (last - k); |
| 152869 | - assert( pOp<pLastOp ); | |
| 153098 | + assert( pOp<pLastOp || (pParse->nErr>0 && pOp==pLastOp) ); | |
| 152870 | 153099 | do{ |
| 152871 | 153100 | if( pOp->p1!=pLevel->iTabCur ){ |
| 152872 | 153101 | /* no-op */ |
| 152873 | 153102 | }else if( pOp->opcode==OP_Column |
| 152874 | 153103 | #ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC |
| @@ -156326,43 +156555,44 @@ | ||
| 156326 | 156555 | #define TK_ORDER 143 |
| 156327 | 156556 | #define TK_GROUP 144 |
| 156328 | 156557 | #define TK_HAVING 145 |
| 156329 | 156558 | #define TK_LIMIT 146 |
| 156330 | 156559 | #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 | |
| 156364 | 156594 | #endif |
| 156365 | 156595 | /**************** End token definitions ***************************************/ |
| 156366 | 156596 | |
| 156367 | 156597 | /* The next sections is a series of control #defines. |
| 156368 | 156598 | ** various aspects of the generated parser. |
| @@ -156418,32 +156648,32 @@ | ||
| 156418 | 156648 | #ifndef INTERFACE |
| 156419 | 156649 | # define INTERFACE 1 |
| 156420 | 156650 | #endif |
| 156421 | 156651 | /************* Begin control #defines *****************************************/ |
| 156422 | 156652 | #define YYCODETYPE unsigned short int |
| 156423 | -#define YYNOCODE 310 | |
| 156653 | +#define YYNOCODE 313 | |
| 156424 | 156654 | #define YYACTIONTYPE unsigned short int |
| 156425 | 156655 | #define YYWILDCARD 100 |
| 156426 | 156656 | #define sqlite3ParserTOKENTYPE Token |
| 156427 | 156657 | typedef union { |
| 156428 | 156658 | int yyinit; |
| 156429 | 156659 | 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; | |
| 156445 | 156675 | } YYMINORTYPE; |
| 156446 | 156676 | #ifndef YYSTACKDEPTH |
| 156447 | 156677 | #define YYSTACKDEPTH 100 |
| 156448 | 156678 | #endif |
| 156449 | 156679 | #define sqlite3ParserARG_SDECL |
| @@ -156455,22 +156685,22 @@ | ||
| 156455 | 156685 | #define sqlite3ParserCTX_PDECL ,Parse *pParse |
| 156456 | 156686 | #define sqlite3ParserCTX_PARAM ,pParse |
| 156457 | 156687 | #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse; |
| 156458 | 156688 | #define sqlite3ParserCTX_STORE yypParser->pParse=pParse; |
| 156459 | 156689 | #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 | |
| 156472 | 156702 | /************* End control #defines *******************************************/ |
| 156473 | 156703 | #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) |
| 156474 | 156704 | |
| 156475 | 156705 | /* Define the yytestcase() macro to be a no-op if is not already defined |
| 156476 | 156706 | ** otherwise. |
| @@ -156533,590 +156763,605 @@ | ||
| 156533 | 156763 | ** yy_reduce_ofst[] For each state, the offset into yy_action for |
| 156534 | 156764 | ** shifting non-terminals after a reduce. |
| 156535 | 156765 | ** yy_default[] Default action for each state. |
| 156536 | 156766 | ** |
| 156537 | 156767 | *********** Begin parsing tables **********************************************/ |
| 156538 | -#define YY_ACTTAB_COUNT (1968) | |
| 156768 | +#define YY_ACTTAB_COUNT (2017) | |
| 156539 | 156769 | 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, | |
| 156737 | 156972 | }; |
| 156738 | 156973 | 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, | |
| 156757 | 156992 | /* 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, | |
| 156771 | 157006 | /* 320 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, |
| 156772 | 157007 | /* 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, | |
| 156778 | 157013 | /* 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) | |
| 156956 | 157196 | #define YY_SHIFT_MIN (0) |
| 156957 | -#define YY_SHIFT_MAX (1959) | |
| 157197 | +#define YY_SHIFT_MAX (2005) | |
| 156958 | 157198 | 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) | |
| 157017 | 157259 | #define YY_REDUCE_MIN (-262) |
| 157018 | -#define YY_REDUCE_MAX (1629) | |
| 157260 | +#define YY_REDUCE_MAX (1655) | |
| 157019 | 157261 | 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, | |
| 157060 | 157303 | }; |
| 157061 | 157304 | 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, | |
| 157118 | 157363 | }; |
| 157119 | 157364 | /********** End of lemon-generated parsing tables *****************************/ |
| 157120 | 157365 | |
| 157121 | 157366 | /* The next table maps tokens (terminal symbols) into fallback tokens. |
| 157122 | 157367 | ** If a construct like the following: |
| @@ -157280,10 +157525,11 @@ | ||
| 157280 | 157525 | 0, /* ORDER => nothing */ |
| 157281 | 157526 | 0, /* GROUP => nothing */ |
| 157282 | 157527 | 0, /* HAVING => nothing */ |
| 157283 | 157528 | 0, /* LIMIT => nothing */ |
| 157284 | 157529 | 0, /* WHERE => nothing */ |
| 157530 | + 0, /* RETURNING => nothing */ | |
| 157285 | 157531 | 0, /* INTO => nothing */ |
| 157286 | 157532 | 0, /* NOTHING => nothing */ |
| 157287 | 157533 | 0, /* FLOAT => nothing */ |
| 157288 | 157534 | 0, /* BLOB => nothing */ |
| 157289 | 157535 | 0, /* INTEGER => nothing */ |
| @@ -157549,172 +157795,175 @@ | ||
| 157549 | 157795 | /* 143 */ "ORDER", |
| 157550 | 157796 | /* 144 */ "GROUP", |
| 157551 | 157797 | /* 145 */ "HAVING", |
| 157552 | 157798 | /* 146 */ "LIMIT", |
| 157553 | 157799 | /* 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", | |
| 157716 | 157965 | }; |
| 157717 | 157966 | #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ |
| 157718 | 157967 | |
| 157719 | 157968 | #ifndef NDEBUG |
| 157720 | 157969 | /* For tracing reduce actions, the names of all rules are required. |
| @@ -157866,248 +158115,255 @@ | ||
| 157866 | 158115 | /* 143 */ "having_opt ::= HAVING expr", |
| 157867 | 158116 | /* 144 */ "limit_opt ::=", |
| 157868 | 158117 | /* 145 */ "limit_opt ::= LIMIT expr", |
| 157869 | 158118 | /* 146 */ "limit_opt ::= LIMIT expr OFFSET expr", |
| 157870 | 158119 | /* 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", | |
| 157872 | 158121 | /* 149 */ "where_opt ::=", |
| 157873 | 158122 | /* 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 ::=", | |
| 158109 | 158365 | }; |
| 158110 | 158366 | #endif /* NDEBUG */ |
| 158111 | 158367 | |
| 158112 | 158368 | |
| 158113 | 158369 | #if YYSTACKDEPTH<=0 |
| @@ -158229,102 +158485,103 @@ | ||
| 158229 | 158485 | ** Note: during a reduce, the only symbols destroyed are those |
| 158230 | 158486 | ** which appear on the RHS of the rule, but which are *not* used |
| 158231 | 158487 | ** inside the C code. |
| 158232 | 158488 | */ |
| 158233 | 158489 | /********* 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); | |
| 158326 | 158583 | } |
| 158327 | 158584 | break; |
| 158328 | 158585 | /********* End destructor definitions *****************************************/ |
| 158329 | 158586 | default: break; /* If no destructor action specified: do nothing */ |
| 158330 | 158587 | } |
| @@ -158611,396 +158868,403 @@ | ||
| 158611 | 158868 | } |
| 158612 | 158869 | |
| 158613 | 158870 | /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side |
| 158614 | 158871 | ** of that rule */ |
| 158615 | 158872 | 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 ::= */ | |
| 159002 | 159266 | }; |
| 159003 | 159267 | |
| 159004 | 159268 | /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number |
| 159005 | 159269 | ** of symbols on the right-hand side of that rule. */ |
| 159006 | 159270 | static const signed char yyRuleInfoNRhs[] = { |
| @@ -159150,248 +159414,255 @@ | ||
| 159150 | 159414 | -2, /* (143) having_opt ::= HAVING expr */ |
| 159151 | 159415 | 0, /* (144) limit_opt ::= */ |
| 159152 | 159416 | -2, /* (145) limit_opt ::= LIMIT expr */ |
| 159153 | 159417 | -4, /* (146) limit_opt ::= LIMIT expr OFFSET expr */ |
| 159154 | 159418 | -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 */ | |
| 159156 | 159420 | 0, /* (149) where_opt ::= */ |
| 159157 | 159421 | -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 ::= */ | |
| 159393 | 159664 | }; |
| 159394 | 159665 | |
| 159395 | 159666 | static void yy_accept(yyParser*); /* Forward Declaration */ |
| 159396 | 159667 | |
| 159397 | 159668 | /* |
| @@ -159439,20 +159710,20 @@ | ||
| 159439 | 159710 | break; |
| 159440 | 159711 | case 2: /* cmdx ::= cmd */ |
| 159441 | 159712 | { sqlite3FinishCoding(pParse); } |
| 159442 | 159713 | break; |
| 159443 | 159714 | case 3: /* cmd ::= BEGIN transtype trans_opt */ |
| 159444 | -{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy192);} | |
| 159715 | +{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy412);} | |
| 159445 | 159716 | break; |
| 159446 | 159717 | case 4: /* transtype ::= */ |
| 159447 | -{yymsp[1].minor.yy192 = TK_DEFERRED;} | |
| 159718 | +{yymsp[1].minor.yy412 = TK_DEFERRED;} | |
| 159448 | 159719 | break; |
| 159449 | 159720 | case 5: /* transtype ::= DEFERRED */ |
| 159450 | 159721 | case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6); |
| 159451 | 159722 | 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*/} | |
| 159454 | 159725 | break; |
| 159455 | 159726 | case 8: /* cmd ::= COMMIT|END trans_opt */ |
| 159456 | 159727 | case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9); |
| 159457 | 159728 | {sqlite3EndTransaction(pParse,yymsp[-1].major);} |
| 159458 | 159729 | break; |
| @@ -159471,11 +159742,11 @@ | ||
| 159471 | 159742 | sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0); |
| 159472 | 159743 | } |
| 159473 | 159744 | break; |
| 159474 | 159745 | case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */ |
| 159475 | 159746 | { |
| 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); | |
| 159477 | 159748 | } |
| 159478 | 159749 | break; |
| 159479 | 159750 | case 14: /* createkw ::= CREATE */ |
| 159480 | 159751 | {disableLookaside(pParse);} |
| 159481 | 159752 | break; |
| @@ -159485,37 +159756,37 @@ | ||
| 159485 | 159756 | case 45: /* autoinc ::= */ yytestcase(yyruleno==45); |
| 159486 | 159757 | case 60: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==60); |
| 159487 | 159758 | case 70: /* defer_subclause_opt ::= */ yytestcase(yyruleno==70); |
| 159488 | 159759 | case 79: /* ifexists ::= */ yytestcase(yyruleno==79); |
| 159489 | 159760 | 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;} | |
| 159492 | 159763 | break; |
| 159493 | 159764 | case 16: /* ifnotexists ::= IF NOT EXISTS */ |
| 159494 | -{yymsp[-2].minor.yy192 = 1;} | |
| 159765 | +{yymsp[-2].minor.yy412 = 1;} | |
| 159495 | 159766 | break; |
| 159496 | 159767 | case 17: /* temp ::= TEMP */ |
| 159497 | 159768 | case 46: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==46); |
| 159498 | -{yymsp[0].minor.yy192 = 1;} | |
| 159769 | +{yymsp[0].minor.yy412 = 1;} | |
| 159499 | 159770 | break; |
| 159500 | 159771 | case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */ |
| 159501 | 159772 | { |
| 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); | |
| 159503 | 159774 | } |
| 159504 | 159775 | break; |
| 159505 | 159776 | case 20: /* create_table_args ::= AS select */ |
| 159506 | 159777 | { |
| 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); | |
| 159509 | 159780 | } |
| 159510 | 159781 | break; |
| 159511 | 159782 | case 22: /* table_options ::= WITHOUT nm */ |
| 159512 | 159783 | { |
| 159513 | 159784 | 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; | |
| 159515 | 159786 | }else{ |
| 159516 | - yymsp[-1].minor.yy192 = 0; | |
| 159787 | + yymsp[-1].minor.yy412 = 0; | |
| 159517 | 159788 | sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z); |
| 159518 | 159789 | } |
| 159519 | 159790 | } |
| 159520 | 159791 | break; |
| 159521 | 159792 | case 23: /* columnname ::= nm typetoken */ |
| @@ -159540,11 +159811,11 @@ | ||
| 159540 | 159811 | {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);} |
| 159541 | 159812 | break; |
| 159542 | 159813 | case 28: /* scanpt ::= */ |
| 159543 | 159814 | { |
| 159544 | 159815 | assert( yyLookahead!=YYNOCODE ); |
| 159545 | - yymsp[1].minor.yy436 = yyLookaheadToken.z; | |
| 159816 | + yymsp[1].minor.yy504 = yyLookaheadToken.z; | |
| 159546 | 159817 | } |
| 159547 | 159818 | break; |
| 159548 | 159819 | case 29: /* scantok ::= */ |
| 159549 | 159820 | { |
| 159550 | 159821 | assert( yyLookahead!=YYNOCODE ); |
| @@ -159554,21 +159825,21 @@ | ||
| 159554 | 159825 | case 30: /* ccons ::= CONSTRAINT nm */ |
| 159555 | 159826 | case 65: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==65); |
| 159556 | 159827 | {pParse->constraintName = yymsp[0].minor.yy0;} |
| 159557 | 159828 | break; |
| 159558 | 159829 | 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]);} | |
| 159560 | 159831 | break; |
| 159561 | 159832 | 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);} | |
| 159563 | 159834 | break; |
| 159564 | 159835 | 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]);} | |
| 159566 | 159837 | break; |
| 159567 | 159838 | case 34: /* ccons ::= DEFAULT MINUS scantok term */ |
| 159568 | 159839 | { |
| 159569 | - Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy202, 0); | |
| 159840 | + Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy354, 0); | |
| 159570 | 159841 | sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]); |
| 159571 | 159842 | } |
| 159572 | 159843 | break; |
| 159573 | 159844 | case 35: /* ccons ::= DEFAULT scantok ID|INDEXED */ |
| 159574 | 159845 | { |
| @@ -159579,323 +159850,323 @@ | ||
| 159579 | 159850 | } |
| 159580 | 159851 | sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n); |
| 159581 | 159852 | } |
| 159582 | 159853 | break; |
| 159583 | 159854 | case 36: /* ccons ::= NOT NULL onconf */ |
| 159584 | -{sqlite3AddNotNull(pParse, yymsp[0].minor.yy192);} | |
| 159855 | +{sqlite3AddNotNull(pParse, yymsp[0].minor.yy412);} | |
| 159585 | 159856 | break; |
| 159586 | 159857 | 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);} | |
| 159588 | 159859 | break; |
| 159589 | 159860 | 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, | |
| 159591 | 159862 | SQLITE_IDXTYPE_UNIQUE);} |
| 159592 | 159863 | break; |
| 159593 | 159864 | 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);} | |
| 159595 | 159866 | break; |
| 159596 | 159867 | 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);} | |
| 159598 | 159869 | break; |
| 159599 | 159870 | case 41: /* ccons ::= defer_subclause */ |
| 159600 | -{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy192);} | |
| 159871 | +{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy412);} | |
| 159601 | 159872 | break; |
| 159602 | 159873 | case 42: /* ccons ::= COLLATE ID|STRING */ |
| 159603 | 159874 | {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);} |
| 159604 | 159875 | break; |
| 159605 | 159876 | case 43: /* generated ::= LP expr RP */ |
| 159606 | -{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy202,0);} | |
| 159877 | +{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy354,0);} | |
| 159607 | 159878 | break; |
| 159608 | 159879 | 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);} | |
| 159610 | 159881 | break; |
| 159611 | 159882 | 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 */} | |
| 159613 | 159884 | break; |
| 159614 | 159885 | 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; } | |
| 159616 | 159887 | break; |
| 159617 | 159888 | 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; } | |
| 159619 | 159890 | break; |
| 159620 | 159891 | 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; } | |
| 159622 | 159893 | break; |
| 159623 | 159894 | 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; } | |
| 159625 | 159896 | break; |
| 159626 | 159897 | 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; } | |
| 159628 | 159899 | break; |
| 159629 | 159900 | 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 */} | |
| 159631 | 159902 | break; |
| 159632 | 159903 | 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 */} | |
| 159634 | 159905 | break; |
| 159635 | 159906 | 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 */} | |
| 159637 | 159908 | break; |
| 159638 | 159909 | 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 */} | |
| 159640 | 159911 | break; |
| 159641 | 159912 | 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 */} | |
| 159643 | 159914 | break; |
| 159644 | 159915 | case 58: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ |
| 159645 | -{yymsp[-2].minor.yy192 = 0;} | |
| 159916 | +{yymsp[-2].minor.yy412 = 0;} | |
| 159646 | 159917 | break; |
| 159647 | 159918 | case 59: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ |
| 159648 | 159919 | 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;} | |
| 159651 | 159922 | break; |
| 159652 | 159923 | case 61: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ |
| 159653 | 159924 | 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;} | |
| 159658 | 159929 | break; |
| 159659 | 159930 | case 62: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ |
| 159660 | -{yymsp[-1].minor.yy192 = 0;} | |
| 159931 | +{yymsp[-1].minor.yy412 = 0;} | |
| 159661 | 159932 | break; |
| 159662 | 159933 | case 64: /* tconscomma ::= COMMA */ |
| 159663 | 159934 | {pParse->constraintName.n = 0;} |
| 159664 | 159935 | break; |
| 159665 | 159936 | 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);} | |
| 159667 | 159938 | break; |
| 159668 | 159939 | 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, | |
| 159670 | 159941 | SQLITE_IDXTYPE_UNIQUE);} |
| 159671 | 159942 | break; |
| 159672 | 159943 | 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);} | |
| 159674 | 159945 | break; |
| 159675 | 159946 | case 69: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ |
| 159676 | 159947 | { |
| 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); | |
| 159679 | 159950 | } |
| 159680 | 159951 | break; |
| 159681 | 159952 | case 71: /* onconf ::= */ |
| 159682 | 159953 | case 73: /* orconf ::= */ yytestcase(yyruleno==73); |
| 159683 | -{yymsp[1].minor.yy192 = OE_Default;} | |
| 159954 | +{yymsp[1].minor.yy412 = OE_Default;} | |
| 159684 | 159955 | break; |
| 159685 | 159956 | case 72: /* onconf ::= ON CONFLICT resolvetype */ |
| 159686 | -{yymsp[-2].minor.yy192 = yymsp[0].minor.yy192;} | |
| 159957 | +{yymsp[-2].minor.yy412 = yymsp[0].minor.yy412;} | |
| 159687 | 159958 | break; |
| 159688 | 159959 | case 75: /* resolvetype ::= IGNORE */ |
| 159689 | -{yymsp[0].minor.yy192 = OE_Ignore;} | |
| 159960 | +{yymsp[0].minor.yy412 = OE_Ignore;} | |
| 159690 | 159961 | break; |
| 159691 | 159962 | 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;} | |
| 159694 | 159965 | break; |
| 159695 | 159966 | case 77: /* cmd ::= DROP TABLE ifexists fullname */ |
| 159696 | 159967 | { |
| 159697 | - sqlite3DropTable(pParse, yymsp[0].minor.yy47, 0, yymsp[-1].minor.yy192); | |
| 159968 | + sqlite3DropTable(pParse, yymsp[0].minor.yy457, 0, yymsp[-1].minor.yy412); | |
| 159698 | 159969 | } |
| 159699 | 159970 | break; |
| 159700 | 159971 | case 80: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ |
| 159701 | 159972 | { |
| 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); | |
| 159703 | 159974 | } |
| 159704 | 159975 | break; |
| 159705 | 159976 | case 81: /* cmd ::= DROP VIEW ifexists fullname */ |
| 159706 | 159977 | { |
| 159707 | - sqlite3DropTable(pParse, yymsp[0].minor.yy47, 1, yymsp[-1].minor.yy192); | |
| 159978 | + sqlite3DropTable(pParse, yymsp[0].minor.yy457, 1, yymsp[-1].minor.yy412); | |
| 159708 | 159979 | } |
| 159709 | 159980 | break; |
| 159710 | 159981 | case 82: /* cmd ::= select */ |
| 159711 | 159982 | { |
| 159712 | 159983 | 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); | |
| 159715 | 159986 | } |
| 159716 | 159987 | break; |
| 159717 | 159988 | case 83: /* select ::= WITH wqlist selectnowith */ |
| 159718 | 159989 | { |
| 159719 | - Select *p = yymsp[0].minor.yy539; | |
| 159990 | + Select *p = yymsp[0].minor.yy293; | |
| 159720 | 159991 | if( p ){ |
| 159721 | - p->pWith = yymsp[-1].minor.yy131; | |
| 159992 | + p->pWith = yymsp[-1].minor.yy105; | |
| 159722 | 159993 | parserDoubleLinkSelect(pParse, p); |
| 159723 | 159994 | }else{ |
| 159724 | - sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy131); | |
| 159995 | + sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy105); | |
| 159725 | 159996 | } |
| 159726 | - yymsp[-2].minor.yy539 = p; | |
| 159997 | + yymsp[-2].minor.yy293 = p; | |
| 159727 | 159998 | } |
| 159728 | 159999 | break; |
| 159729 | 160000 | case 84: /* select ::= WITH RECURSIVE wqlist selectnowith */ |
| 159730 | 160001 | { |
| 159731 | - Select *p = yymsp[0].minor.yy539; | |
| 160002 | + Select *p = yymsp[0].minor.yy293; | |
| 159732 | 160003 | if( p ){ |
| 159733 | - p->pWith = yymsp[-1].minor.yy131; | |
| 160004 | + p->pWith = yymsp[-1].minor.yy105; | |
| 159734 | 160005 | parserDoubleLinkSelect(pParse, p); |
| 159735 | 160006 | }else{ |
| 159736 | - sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy131); | |
| 160007 | + sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy105); | |
| 159737 | 160008 | } |
| 159738 | - yymsp[-3].minor.yy539 = p; | |
| 160009 | + yymsp[-3].minor.yy293 = p; | |
| 159739 | 160010 | } |
| 159740 | 160011 | break; |
| 159741 | 160012 | case 85: /* select ::= selectnowith */ |
| 159742 | 160013 | { |
| 159743 | - Select *p = yymsp[0].minor.yy539; | |
| 160014 | + Select *p = yymsp[0].minor.yy293; | |
| 159744 | 160015 | if( p ){ |
| 159745 | 160016 | parserDoubleLinkSelect(pParse, p); |
| 159746 | 160017 | } |
| 159747 | - yymsp[0].minor.yy539 = p; /*A-overwrites-X*/ | |
| 160018 | + yymsp[0].minor.yy293 = p; /*A-overwrites-X*/ | |
| 159748 | 160019 | } |
| 159749 | 160020 | break; |
| 159750 | 160021 | case 86: /* selectnowith ::= selectnowith multiselect_op oneselect */ |
| 159751 | 160022 | { |
| 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; | |
| 159754 | 160025 | if( pRhs && pRhs->pPrior ){ |
| 159755 | 160026 | SrcList *pFrom; |
| 159756 | 160027 | Token x; |
| 159757 | 160028 | x.n = 0; |
| 159758 | 160029 | parserDoubleLinkSelect(pParse, pRhs); |
| 159759 | 160030 | pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0); |
| 159760 | 160031 | pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0); |
| 159761 | 160032 | } |
| 159762 | 160033 | if( pRhs ){ |
| 159763 | - pRhs->op = (u8)yymsp[-1].minor.yy192; | |
| 160034 | + pRhs->op = (u8)yymsp[-1].minor.yy412; | |
| 159764 | 160035 | pRhs->pPrior = pLhs; |
| 159765 | 160036 | if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue; |
| 159766 | 160037 | 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; | |
| 159768 | 160039 | }else{ |
| 159769 | 160040 | sqlite3SelectDelete(pParse->db, pLhs); |
| 159770 | 160041 | } |
| 159771 | - yymsp[-2].minor.yy539 = pRhs; | |
| 160042 | + yymsp[-2].minor.yy293 = pRhs; | |
| 159772 | 160043 | } |
| 159773 | 160044 | break; |
| 159774 | 160045 | case 87: /* multiselect_op ::= UNION */ |
| 159775 | 160046 | 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*/} | |
| 159777 | 160048 | break; |
| 159778 | 160049 | case 88: /* multiselect_op ::= UNION ALL */ |
| 159779 | -{yymsp[-1].minor.yy192 = TK_ALL;} | |
| 160050 | +{yymsp[-1].minor.yy412 = TK_ALL;} | |
| 159780 | 160051 | break; |
| 159781 | 160052 | case 90: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ |
| 159782 | 160053 | { |
| 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); | |
| 159784 | 160055 | } |
| 159785 | 160056 | break; |
| 159786 | 160057 | case 91: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */ |
| 159787 | 160058 | { |
| 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; | |
| 159791 | 160062 | }else{ |
| 159792 | - sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy303); | |
| 160063 | + sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy503); | |
| 159793 | 160064 | } |
| 159794 | 160065 | } |
| 159795 | 160066 | break; |
| 159796 | 160067 | case 92: /* values ::= VALUES LP nexprlist RP */ |
| 159797 | 160068 | { |
| 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); | |
| 159799 | 160070 | } |
| 159800 | 160071 | break; |
| 159801 | 160072 | case 93: /* values ::= values COMMA LP nexprlist RP */ |
| 159802 | 160073 | { |
| 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); | |
| 159805 | 160076 | if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue; |
| 159806 | 160077 | if( pRight ){ |
| 159807 | 160078 | pRight->op = TK_ALL; |
| 159808 | 160079 | pRight->pPrior = pLeft; |
| 159809 | - yymsp[-4].minor.yy539 = pRight; | |
| 160080 | + yymsp[-4].minor.yy293 = pRight; | |
| 159810 | 160081 | }else{ |
| 159811 | - yymsp[-4].minor.yy539 = pLeft; | |
| 160082 | + yymsp[-4].minor.yy293 = pLeft; | |
| 159812 | 160083 | } |
| 159813 | 160084 | } |
| 159814 | 160085 | break; |
| 159815 | 160086 | case 94: /* distinct ::= DISTINCT */ |
| 159816 | -{yymsp[0].minor.yy192 = SF_Distinct;} | |
| 160087 | +{yymsp[0].minor.yy412 = SF_Distinct;} | |
| 159817 | 160088 | break; |
| 159818 | 160089 | case 95: /* distinct ::= ALL */ |
| 159819 | -{yymsp[0].minor.yy192 = SF_All;} | |
| 160090 | +{yymsp[0].minor.yy412 = SF_All;} | |
| 159820 | 160091 | break; |
| 159821 | 160092 | case 97: /* sclp ::= */ |
| 159822 | 160093 | case 130: /* orderby_opt ::= */ yytestcase(yyruleno==130); |
| 159823 | 160094 | 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;} | |
| 159828 | 160099 | break; |
| 159829 | 160100 | case 98: /* selcollist ::= sclp scanpt expr scanpt as */ |
| 159830 | 160101 | { |
| 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); | |
| 159834 | 160105 | } |
| 159835 | 160106 | break; |
| 159836 | 160107 | case 99: /* selcollist ::= sclp scanpt STAR */ |
| 159837 | 160108 | { |
| 159838 | 160109 | 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); | |
| 159840 | 160111 | } |
| 159841 | 160112 | break; |
| 159842 | 160113 | case 100: /* selcollist ::= sclp scanpt nm DOT STAR */ |
| 159843 | 160114 | { |
| 159844 | 160115 | Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0); |
| 159845 | 160116 | Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); |
| 159846 | 160117 | 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); | |
| 159848 | 160119 | } |
| 159849 | 160120 | break; |
| 159850 | 160121 | case 101: /* as ::= AS nm */ |
| 159851 | 160122 | 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); | |
| 159854 | 160125 | {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;} |
| 159855 | 160126 | break; |
| 159856 | 160127 | case 103: /* from ::= */ |
| 159857 | 160128 | case 106: /* stl_prefix ::= */ yytestcase(yyruleno==106); |
| 159858 | -{yymsp[1].minor.yy47 = 0;} | |
| 160129 | +{yymsp[1].minor.yy457 = 0;} | |
| 159859 | 160130 | break; |
| 159860 | 160131 | case 104: /* from ::= FROM seltablist */ |
| 159861 | 160132 | { |
| 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); | |
| 159864 | 160135 | } |
| 159865 | 160136 | break; |
| 159866 | 160137 | case 105: /* stl_prefix ::= seltablist joinop */ |
| 159867 | 160138 | { |
| 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; | |
| 159869 | 160140 | } |
| 159870 | 160141 | break; |
| 159871 | 160142 | case 107: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ |
| 159872 | 160143 | { |
| 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); | |
| 159875 | 160146 | } |
| 159876 | 160147 | break; |
| 159877 | 160148 | case 108: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ |
| 159878 | 160149 | { |
| 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); | |
| 159881 | 160152 | } |
| 159882 | 160153 | break; |
| 159883 | 160154 | case 109: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */ |
| 159884 | 160155 | { |
| 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); | |
| 159886 | 160157 | } |
| 159887 | 160158 | break; |
| 159888 | 160159 | case 110: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ |
| 159889 | 160160 | { |
| 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; | |
| 159897 | 160168 | pNew->zName = pOld->zName; |
| 159898 | 160169 | pNew->zDatabase = pOld->zDatabase; |
| 159899 | 160170 | pNew->pSelect = pOld->pSelect; |
| 159900 | 160171 | if( pOld->fg.isTabFunc ){ |
| 159901 | 160172 | pNew->u1.pFuncArg = pOld->u1.pFuncArg; |
| @@ -159904,962 +160175,977 @@ | ||
| 159904 | 160175 | pNew->fg.isTabFunc = 1; |
| 159905 | 160176 | } |
| 159906 | 160177 | pOld->zName = pOld->zDatabase = 0; |
| 159907 | 160178 | pOld->pSelect = 0; |
| 159908 | 160179 | } |
| 159909 | - sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy47); | |
| 160180 | + sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy457); | |
| 159910 | 160181 | }else{ |
| 159911 | 160182 | 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); | |
| 159915 | 160186 | } |
| 159916 | 160187 | } |
| 159917 | 160188 | break; |
| 159918 | 160189 | case 111: /* dbnm ::= */ |
| 159919 | 160190 | case 125: /* indexed_opt ::= */ yytestcase(yyruleno==125); |
| 159920 | 160191 | {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;} |
| 159921 | 160192 | break; |
| 159922 | 160193 | case 113: /* fullname ::= nm */ |
| 159923 | 160194 | { |
| 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); | |
| 159926 | 160197 | } |
| 159927 | - yymsp[0].minor.yy47 = yylhsminor.yy47; | |
| 160198 | + yymsp[0].minor.yy457 = yylhsminor.yy457; | |
| 159928 | 160199 | break; |
| 159929 | 160200 | case 114: /* fullname ::= nm DOT nm */ |
| 159930 | 160201 | { |
| 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); | |
| 159933 | 160204 | } |
| 159934 | - yymsp[-2].minor.yy47 = yylhsminor.yy47; | |
| 160205 | + yymsp[-2].minor.yy457 = yylhsminor.yy457; | |
| 159935 | 160206 | break; |
| 159936 | 160207 | 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*/} | |
| 159938 | 160209 | break; |
| 159939 | 160210 | 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*/} | |
| 159941 | 160212 | break; |
| 159942 | 160213 | case 117: /* xfullname ::= nm DOT nm AS nm */ |
| 159943 | 160214 | { |
| 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); | |
| 159946 | 160217 | } |
| 159947 | 160218 | break; |
| 159948 | 160219 | case 118: /* xfullname ::= nm AS nm */ |
| 159949 | 160220 | { |
| 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); | |
| 159952 | 160223 | } |
| 159953 | 160224 | break; |
| 159954 | 160225 | case 119: /* joinop ::= COMMA|JOIN */ |
| 159955 | -{ yymsp[0].minor.yy192 = JT_INNER; } | |
| 160226 | +{ yymsp[0].minor.yy412 = JT_INNER; } | |
| 159956 | 160227 | break; |
| 159957 | 160228 | 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*/} | |
| 159959 | 160230 | break; |
| 159960 | 160231 | 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*/} | |
| 159962 | 160233 | break; |
| 159963 | 160234 | 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*/} | |
| 159965 | 160236 | break; |
| 159966 | 160237 | case 123: /* on_opt ::= ON expr */ |
| 159967 | 160238 | case 143: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==143); |
| 159968 | 160239 | 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;} | |
| 159972 | 160244 | break; |
| 159973 | 160245 | case 124: /* on_opt ::= */ |
| 159974 | 160246 | case 142: /* having_opt ::= */ yytestcase(yyruleno==142); |
| 159975 | 160247 | case 144: /* limit_opt ::= */ yytestcase(yyruleno==144); |
| 159976 | 160248 | 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;} | |
| 159981 | 160254 | break; |
| 159982 | 160255 | case 126: /* indexed_opt ::= INDEXED BY nm */ |
| 159983 | 160256 | {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;} |
| 159984 | 160257 | break; |
| 159985 | 160258 | case 127: /* indexed_opt ::= NOT INDEXED */ |
| 159986 | 160259 | {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;} |
| 159987 | 160260 | break; |
| 159988 | 160261 | 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;} | |
| 159990 | 160263 | break; |
| 159991 | 160264 | 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;} | |
| 159994 | 160267 | break; |
| 159995 | 160268 | case 131: /* orderby_opt ::= ORDER BY sortlist */ |
| 159996 | 160269 | 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;} | |
| 159998 | 160271 | break; |
| 159999 | 160272 | case 132: /* sortlist ::= sortlist COMMA expr sortorder nulls */ |
| 160000 | 160273 | { |
| 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); | |
| 160003 | 160276 | } |
| 160004 | 160277 | break; |
| 160005 | 160278 | case 133: /* sortlist ::= expr sortorder nulls */ |
| 160006 | 160279 | { |
| 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); | |
| 160009 | 160282 | } |
| 160010 | 160283 | break; |
| 160011 | 160284 | case 134: /* sortorder ::= ASC */ |
| 160012 | -{yymsp[0].minor.yy192 = SQLITE_SO_ASC;} | |
| 160285 | +{yymsp[0].minor.yy412 = SQLITE_SO_ASC;} | |
| 160013 | 160286 | break; |
| 160014 | 160287 | case 135: /* sortorder ::= DESC */ |
| 160015 | -{yymsp[0].minor.yy192 = SQLITE_SO_DESC;} | |
| 160288 | +{yymsp[0].minor.yy412 = SQLITE_SO_DESC;} | |
| 160016 | 160289 | break; |
| 160017 | 160290 | case 136: /* sortorder ::= */ |
| 160018 | 160291 | case 139: /* nulls ::= */ yytestcase(yyruleno==139); |
| 160019 | -{yymsp[1].minor.yy192 = SQLITE_SO_UNDEFINED;} | |
| 160292 | +{yymsp[1].minor.yy412 = SQLITE_SO_UNDEFINED;} | |
| 160020 | 160293 | break; |
| 160021 | 160294 | case 137: /* nulls ::= NULLS FIRST */ |
| 160022 | -{yymsp[-1].minor.yy192 = SQLITE_SO_ASC;} | |
| 160295 | +{yymsp[-1].minor.yy412 = SQLITE_SO_ASC;} | |
| 160023 | 160296 | break; |
| 160024 | 160297 | case 138: /* nulls ::= NULLS LAST */ |
| 160025 | -{yymsp[-1].minor.yy192 = SQLITE_SO_DESC;} | |
| 160298 | +{yymsp[-1].minor.yy412 = SQLITE_SO_DESC;} | |
| 160026 | 160299 | break; |
| 160027 | 160300 | 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);} | |
| 160029 | 160302 | break; |
| 160030 | 160303 | 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);} | |
| 160032 | 160305 | break; |
| 160033 | 160306 | 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 */ | |
| 160115 | 160400 | { |
| 160116 | 160401 | Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); |
| 160117 | 160402 | Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1); |
| 160118 | 160403 | if( IN_RENAME_OBJECT ){ |
| 160119 | 160404 | sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0); |
| 160120 | 160405 | sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0); |
| 160121 | 160406 | } |
| 160122 | - yylhsminor.yy202 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2); | |
| 160407 | + yylhsminor.yy354 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2); | |
| 160123 | 160408 | } |
| 160124 | - yymsp[-2].minor.yy202 = yylhsminor.yy202; | |
| 160409 | + yymsp[-2].minor.yy354 = yylhsminor.yy354; | |
| 160125 | 160410 | break; |
| 160126 | - case 173: /* expr ::= nm DOT nm DOT nm */ | |
| 160411 | + case 179: /* expr ::= nm DOT nm DOT nm */ | |
| 160127 | 160412 | { |
| 160128 | 160413 | Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1); |
| 160129 | 160414 | Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); |
| 160130 | 160415 | Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1); |
| 160131 | 160416 | Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3); |
| 160132 | 160417 | if( IN_RENAME_OBJECT ){ |
| 160133 | 160418 | sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0); |
| 160134 | 160419 | sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0); |
| 160135 | 160420 | } |
| 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 */ | |
| 160151 | 160436 | { |
| 160152 | 160437 | if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){ |
| 160153 | 160438 | 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); | |
| 160156 | 160441 | }else{ |
| 160157 | 160442 | /* When doing a nested parse, one can include terms in an expression |
| 160158 | 160443 | ** that look like this: #1 #2 ... These terms refer to registers |
| 160159 | 160444 | ** in the virtual machine. #N is the N-th register. */ |
| 160160 | 160445 | Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/ |
| 160161 | 160446 | assert( t.n>=2 ); |
| 160162 | 160447 | if( pParse->nested==0 ){ |
| 160163 | 160448 | 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; | |
| 160221 | 160506 | 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; | |
| 160223 | 160508 | } |
| 160224 | 160509 | }else{ |
| 160225 | 160510 | sqlite3ExprListDelete(pParse->db, pList); |
| 160226 | 160511 | } |
| 160227 | 160512 | } |
| 160228 | 160513 | 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 */ | |
| 160242 | 160527 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/} |
| 160243 | 160528 | break; |
| 160244 | - case 195: /* expr ::= expr likeop expr */ | |
| 160529 | + case 201: /* expr ::= expr likeop expr */ | |
| 160245 | 160530 | { |
| 160246 | 160531 | ExprList *pList; |
| 160247 | 160532 | int bNot = yymsp[-1].minor.yy0.n & 0x80000000; |
| 160248 | 160533 | 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; | |
| 160254 | 160539 | } |
| 160255 | 160540 | break; |
| 160256 | - case 196: /* expr ::= expr likeop expr ESCAPE expr */ | |
| 160541 | + case 202: /* expr ::= expr likeop expr ESCAPE expr */ | |
| 160257 | 160542 | { |
| 160258 | 160543 | ExprList *pList; |
| 160259 | 160544 | int bNot = yymsp[-3].minor.yy0.n & 0x80000000; |
| 160260 | 160545 | 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); | |
| 160294 | 160579 | /*A-overwrites-B*/ |
| 160295 | 160580 | } |
| 160296 | 160581 | 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;} | |
| 160300 | 160585 | break; |
| 160301 | - case 206: /* expr ::= expr between_op expr AND expr */ | |
| 160586 | + case 212: /* expr ::= expr between_op expr AND expr */ | |
| 160302 | 160587 | { |
| 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; | |
| 160308 | 160593 | }else{ |
| 160309 | 160594 | sqlite3ExprListDelete(pParse->db, pList); |
| 160310 | 160595 | } |
| 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); | |
| 160312 | 160597 | } |
| 160313 | 160598 | break; |
| 160314 | - case 209: /* expr ::= expr in_op LP exprlist RP */ | |
| 160599 | + case 215: /* expr ::= expr in_op LP exprlist RP */ | |
| 160315 | 160600 | { |
| 160316 | - if( yymsp[-1].minor.yy242==0 ){ | |
| 160601 | + if( yymsp[-1].minor.yy350==0 ){ | |
| 160317 | 160602 | /* Expressions of the form |
| 160318 | 160603 | ** |
| 160319 | 160604 | ** expr1 IN () |
| 160320 | 160605 | ** expr1 NOT IN () |
| 160321 | 160606 | ** |
| 160322 | 160607 | ** simplify to constants 0 (false) and 1 (true), respectively, |
| 160323 | 160608 | ** regardless of the value of expr1. |
| 160324 | 160609 | */ |
| 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); | |
| 160331 | 160616 | 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 */ | |
| 160360 | 160645 | { |
| 160361 | 160646 | SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); |
| 160362 | 160647 | 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); | |
| 160367 | 160652 | } |
| 160368 | 160653 | break; |
| 160369 | - case 213: /* expr ::= EXISTS LP select RP */ | |
| 160654 | + case 219: /* expr ::= EXISTS LP select RP */ | |
| 160370 | 160655 | { |
| 160371 | 160656 | 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 */ | |
| 160414 | 160699 | { |
| 160415 | 160700 | 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); | |
| 160418 | 160703 | if( IN_RENAME_OBJECT && pParse->pNewIndex ){ |
| 160419 | 160704 | sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0); |
| 160420 | 160705 | } |
| 160421 | 160706 | } |
| 160422 | 160707 | 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 */ | |
| 160450 | 160735 | {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);} |
| 160451 | 160736 | break; |
| 160452 | - case 241: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ | |
| 160737 | + case 247: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ | |
| 160453 | 160738 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);} |
| 160454 | 160739 | break; |
| 160455 | - case 242: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ | |
| 160740 | + case 248: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ | |
| 160456 | 160741 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);} |
| 160457 | 160742 | break; |
| 160458 | - case 243: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ | |
| 160743 | + case 249: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ | |
| 160459 | 160744 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);} |
| 160460 | 160745 | break; |
| 160461 | - case 244: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ | |
| 160746 | + case 250: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ | |
| 160462 | 160747 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);} |
| 160463 | 160748 | 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 */ | |
| 160465 | 160750 | { |
| 160466 | 160751 | Token all; |
| 160467 | 160752 | all.z = yymsp[-3].minor.yy0.z; |
| 160468 | 160753 | 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); | |
| 160470 | 160755 | } |
| 160471 | 160756 | 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 */ | |
| 160473 | 160758 | { |
| 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); | |
| 160475 | 160760 | yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/ |
| 160476 | 160761 | } |
| 160477 | 160762 | 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 */ | |
| 160516 | 160801 | { |
| 160517 | 160802 | yymsp[-2].minor.yy0 = yymsp[0].minor.yy0; |
| 160518 | 160803 | sqlite3ErrorMsg(pParse, |
| 160519 | 160804 | "qualified table names are not allowed on INSERT, UPDATE, and DELETE " |
| 160520 | 160805 | "statements within triggers"); |
| 160521 | 160806 | } |
| 160522 | 160807 | break; |
| 160523 | - case 260: /* tridxby ::= INDEXED BY nm */ | |
| 160808 | + case 266: /* tridxby ::= INDEXED BY nm */ | |
| 160524 | 160809 | { |
| 160525 | 160810 | sqlite3ErrorMsg(pParse, |
| 160526 | 160811 | "the INDEXED BY clause is not allowed on UPDATE or DELETE statements " |
| 160527 | 160812 | "within triggers"); |
| 160528 | 160813 | } |
| 160529 | 160814 | break; |
| 160530 | - case 261: /* tridxby ::= NOT INDEXED */ | |
| 160815 | + case 267: /* tridxby ::= NOT INDEXED */ | |
| 160531 | 160816 | { |
| 160532 | 160817 | sqlite3ErrorMsg(pParse, |
| 160533 | 160818 | "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements " |
| 160534 | 160819 | "within triggers"); |
| 160535 | 160820 | } |
| 160536 | 160821 | 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 */ | |
| 160593 | 160878 | {sqlite3Reindex(pParse, 0, 0);} |
| 160594 | 160879 | break; |
| 160595 | - case 277: /* cmd ::= REINDEX nm dbnm */ | |
| 160880 | + case 283: /* cmd ::= REINDEX nm dbnm */ | |
| 160596 | 160881 | {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} |
| 160597 | 160882 | break; |
| 160598 | - case 278: /* cmd ::= ANALYZE */ | |
| 160883 | + case 284: /* cmd ::= ANALYZE */ | |
| 160599 | 160884 | {sqlite3Analyze(pParse, 0, 0);} |
| 160600 | 160885 | break; |
| 160601 | - case 279: /* cmd ::= ANALYZE nm dbnm */ | |
| 160886 | + case 285: /* cmd ::= ANALYZE nm dbnm */ | |
| 160602 | 160887 | {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} |
| 160603 | 160888 | break; |
| 160604 | - case 280: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ | |
| 160889 | + case 286: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ | |
| 160605 | 160890 | { |
| 160606 | - sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy47,&yymsp[0].minor.yy0); | |
| 160891 | + sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy457,&yymsp[0].minor.yy0); | |
| 160607 | 160892 | } |
| 160608 | 160893 | 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 */ | |
| 160610 | 160895 | { |
| 160611 | 160896 | yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n; |
| 160612 | 160897 | sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0); |
| 160613 | 160898 | } |
| 160614 | 160899 | break; |
| 160615 | - case 282: /* add_column_fullname ::= fullname */ | |
| 160900 | + case 288: /* add_column_fullname ::= fullname */ | |
| 160616 | 160901 | { |
| 160617 | 160902 | 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 */ | |
| 160627 | 160912 | {sqlite3VtabFinishParse(pParse,0);} |
| 160628 | 160913 | break; |
| 160629 | - case 285: /* cmd ::= create_vtab LP vtabarglist RP */ | |
| 160914 | + case 291: /* cmd ::= create_vtab LP vtabarglist RP */ | |
| 160630 | 160915 | {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} |
| 160631 | 160916 | 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 */ | |
| 160633 | 160918 | { |
| 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); | |
| 160635 | 160920 | } |
| 160636 | 160921 | break; |
| 160637 | - case 287: /* vtabarg ::= */ | |
| 160922 | + case 293: /* vtabarg ::= */ | |
| 160638 | 160923 | {sqlite3VtabArgInit(pParse);} |
| 160639 | 160924 | 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); | |
| 160643 | 160928 | {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);} |
| 160644 | 160929 | 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; } | |
| 160799 | 161084 | break; |
| 160800 | 161085 | 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); | |
| 160861 | 161147 | break; |
| 160862 | 161148 | /********** End reduce actions ************************************************/ |
| 160863 | 161149 | }; |
| 160864 | 161150 | assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) ); |
| 160865 | 161151 | yygoto = yyRuleInfoLhs[yyruleno]; |
| @@ -161362,24 +161648,25 @@ | ||
| 161362 | 161648 | ** might be implemented more directly using a hand-written hash table. |
| 161363 | 161649 | ** But by using this automatically generated code, the size of the code |
| 161364 | 161650 | ** is substantially reduced. This is important for embedded applications |
| 161365 | 161651 | ** on platforms with limited memory. |
| 161366 | 161652 | */ |
| 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 */ | |
| 161369 | 161655 | /* REINDEXEDESCAPEACHECKEYBEFOREIGNOREGEXPLAINSTEADDATABASELECT */ |
| 161370 | 161656 | /* ABLEFTHENDEFERRABLELSEXCLUDELETEMPORARYISNULLSAVEPOINTERSECT */ |
| 161371 | 161657 | /* IESNOTNULLIKEXCEPTRANSACTIONATURALTERAISEXCLUSIVEXISTS */ |
| 161372 | 161658 | /* CONSTRAINTOFFSETRIGGERANGENERATEDETACHAVINGLOBEGINNEREFERENCES */ |
| 161373 | 161659 | /* UNIQUERYWITHOUTERELEASEATTACHBETWEENOTHINGROUPSCASCADEFAULT */ |
| 161374 | 161660 | /* CASECOLLATECREATECURRENT_DATEIMMEDIATEJOINSERTMATCHPLANALYZE */ |
| 161375 | 161661 | /* PRAGMABORTUPDATEVALUESVIRTUALWAYSWHENWHERECURSIVEAFTERENAMEAND */ |
| 161376 | 161662 | /* EFERREDISTINCTAUTOINCREMENTCASTCOLUMNCOMMITCONFLICTCROSS */ |
| 161377 | 161663 | /* CURRENT_TIMESTAMPARTITIONDROPRECEDINGFAILASTFILTEREPLACEFIRST */ |
| 161378 | -/* FOLLOWINGFROMFULLIMITIFORDERESTRICTOTHERSOVERIGHTROLLBACKROWS */ | |
| 161379 | -/* UNBOUNDEDUNIONUSINGVACUUMVIEWINDOWBYINITIALLYPRIMARY */ | |
| 161380 | -static const char zKWText[647] = { | |
| 161664 | +/* FOLLOWINGFROMFULLIMITIFORDERESTRICTOTHERSOVERETURNINGRIGHT */ | |
| 161665 | +/* ROLLBACKROWSUNBOUNDEDUNIONUSINGVACUUMVIEWINDOWBYINITIALLY */ | |
| 161666 | +/* PRIMARY */ | |
| 161667 | +static const char zKWText[656] = { | |
| 161381 | 161668 | 'R','E','I','N','D','E','X','E','D','E','S','C','A','P','E','A','C','H', |
| 161382 | 161669 | 'E','C','K','E','Y','B','E','F','O','R','E','I','G','N','O','R','E','G', |
| 161383 | 161670 | 'E','X','P','L','A','I','N','S','T','E','A','D','D','A','T','A','B','A', |
| 161384 | 161671 | 'S','E','L','E','C','T','A','B','L','E','F','T','H','E','N','D','E','F', |
| 161385 | 161672 | 'E','R','R','A','B','L','E','L','S','E','X','C','L','U','D','E','L','E', |
| @@ -161408,47 +161695,48 @@ | ||
| 161408 | 161695 | 'T','A','M','P','A','R','T','I','T','I','O','N','D','R','O','P','R','E', |
| 161409 | 161696 | 'C','E','D','I','N','G','F','A','I','L','A','S','T','F','I','L','T','E', |
| 161410 | 161697 | 'R','E','P','L','A','C','E','F','I','R','S','T','F','O','L','L','O','W', |
| 161411 | 161698 | 'I','N','G','F','R','O','M','F','U','L','L','I','M','I','T','I','F','O', |
| 161412 | 161699 | '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', | |
| 161417 | 161705 | }; |
| 161418 | 161706 | /* aKWHash[i] is the hash value for the i-th keyword */ |
| 161419 | 161707 | 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, | |
| 161426 | 161714 | 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, | |
| 161428 | 161716 | 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, | |
| 161430 | 161718 | }; |
| 161431 | 161719 | /* aKWNext[] forms the hash collision chain. If aKWHash[i]==0 |
| 161432 | 161720 | ** then the i-th keyword has no more hash collisions. Otherwise, |
| 161433 | 161721 | ** 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] = { | |
| 161435 | 161723 | 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, | |
| 161439 | 161727 | 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, | |
| 161441 | 161729 | 75, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 64, 66, |
| 161442 | 161730 | 63, 0, 0, 0, 0, 46, 0, 16, 0, 115, 0, 0, 0, |
| 161443 | 161731 | 0, 0, 0, 0, 0, 0, 0, 81, 97, 0, 8, 0, 109, |
| 161444 | 161732 | 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, | |
| 161447 | 161735 | }; |
| 161448 | 161736 | /* 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] = { | |
| 161450 | 161738 | 7, 7, 5, 4, 6, 4, 5, 3, 6, 7, 3, 6, 6, |
| 161451 | 161739 | 7, 7, 3, 8, 2, 6, 5, 4, 4, 3, 10, 4, 7, |
| 161452 | 161740 | 6, 9, 4, 2, 6, 5, 9, 9, 4, 7, 3, 2, 4, |
| 161453 | 161741 | 4, 6, 11, 6, 2, 7, 5, 5, 9, 6, 10, 4, 6, |
| 161454 | 161742 | 2, 3, 7, 5, 9, 6, 6, 4, 5, 5, 10, 6, 5, |
| @@ -161455,16 +161743,16 @@ | ||
| 161455 | 161743 | 7, 4, 5, 7, 6, 7, 7, 6, 5, 7, 3, 7, 4, |
| 161456 | 161744 | 7, 6, 12, 9, 4, 6, 5, 4, 7, 6, 5, 6, 6, |
| 161457 | 161745 | 7, 6, 4, 5, 9, 5, 6, 3, 8, 8, 2, 13, 2, |
| 161458 | 161746 | 2, 4, 6, 6, 8, 5, 17, 12, 7, 9, 4, 9, 4, |
| 161459 | 161747 | 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, | |
| 161462 | 161750 | }; |
| 161463 | 161751 | /* aKWOffset[i] is the index into zKWText[] of the start of |
| 161464 | 161752 | ** the text for the i-th keyword. */ |
| 161465 | -static const unsigned short int aKWOffset[145] = { | |
| 161753 | +static const unsigned short int aKWOffset[146] = { | |
| 161466 | 161754 | 0, 2, 2, 8, 9, 14, 16, 20, 23, 25, 25, 29, 33, |
| 161467 | 161755 | 36, 41, 46, 48, 53, 54, 59, 62, 65, 67, 69, 78, 81, |
| 161468 | 161756 | 86, 90, 90, 94, 99, 101, 105, 111, 119, 123, 123, 123, 126, |
| 161469 | 161757 | 129, 132, 137, 142, 146, 147, 152, 156, 160, 168, 174, 181, 184, |
| 161470 | 161758 | 184, 187, 189, 195, 198, 206, 211, 216, 219, 222, 226, 236, 239, |
| @@ -161471,15 +161759,15 @@ | ||
| 161471 | 161759 | 244, 244, 248, 252, 259, 265, 271, 277, 277, 283, 284, 288, 295, |
| 161472 | 161760 | 299, 306, 312, 324, 333, 335, 341, 346, 348, 355, 360, 365, 371, |
| 161473 | 161761 | 377, 382, 388, 392, 395, 404, 408, 414, 416, 423, 424, 431, 433, |
| 161474 | 161762 | 435, 444, 448, 454, 460, 468, 473, 473, 473, 489, 498, 501, 510, |
| 161475 | 161763 | 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, | |
| 161478 | 161766 | }; |
| 161479 | 161767 | /* 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] = { | |
| 161481 | 161769 | TK_REINDEX, TK_INDEXED, TK_INDEX, TK_DESC, TK_ESCAPE, |
| 161482 | 161770 | TK_EACH, TK_CHECK, TK_KEY, TK_BEFORE, TK_FOREIGN, |
| 161483 | 161771 | TK_FOR, TK_IGNORE, TK_LIKE_KW, TK_EXPLAIN, TK_INSTEAD, |
| 161484 | 161772 | TK_ADD, TK_DATABASE, TK_AS, TK_SELECT, TK_TABLE, |
| 161485 | 161773 | TK_JOIN_KW, TK_THEN, TK_END, TK_DEFERRABLE, TK_ELSE, |
| @@ -161502,13 +161790,14 @@ | ||
| 161502 | 161790 | TK_CAST, TK_COLUMNKW, TK_COMMIT, TK_CONFLICT, TK_JOIN_KW, |
| 161503 | 161791 | TK_CTIME_KW, TK_CTIME_KW, TK_CURRENT, TK_PARTITION, TK_DROP, |
| 161504 | 161792 | TK_PRECEDING, TK_FAIL, TK_LAST, TK_FILTER, TK_REPLACE, |
| 161505 | 161793 | TK_FIRST, TK_FOLLOWING, TK_FROM, TK_JOIN_KW, TK_LIMIT, |
| 161506 | 161794 | 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, | |
| 161510 | 161799 | }; |
| 161511 | 161800 | /* Hash table decoded: |
| 161512 | 161801 | ** 0: INSERT |
| 161513 | 161802 | ** 1: IS |
| 161514 | 161803 | ** 2: ROLLBACK TRIGGER |
| @@ -161624,11 +161913,11 @@ | ||
| 161624 | 161913 | ** 112: ORDER OUTER |
| 161625 | 161914 | ** 113: |
| 161626 | 161915 | ** 114: INTERSECT UNBOUNDED |
| 161627 | 161916 | ** 115: |
| 161628 | 161917 | ** 116: |
| 161629 | -** 117: ON | |
| 161918 | +** 117: RETURNING ON | |
| 161630 | 161919 | ** 118: |
| 161631 | 161920 | ** 119: WHERE |
| 161632 | 161921 | ** 120: NO INNER |
| 161633 | 161922 | ** 121: NULL |
| 161634 | 161923 | ** 122: |
| @@ -161789,25 +162078,26 @@ | ||
| 161789 | 162078 | testcase( i==125 ); /* IF */ |
| 161790 | 162079 | testcase( i==126 ); /* ORDER */ |
| 161791 | 162080 | testcase( i==127 ); /* RESTRICT */ |
| 161792 | 162081 | testcase( i==128 ); /* OTHERS */ |
| 161793 | 162082 | 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 */ | |
| 161809 | 162099 | *pType = aKWCode[i]; |
| 161810 | 162100 | break; |
| 161811 | 162101 | } |
| 161812 | 162102 | } |
| 161813 | 162103 | return n; |
| @@ -161815,11 +162105,11 @@ | ||
| 161815 | 162105 | SQLITE_PRIVATE int sqlite3KeywordCode(const unsigned char *z, int n){ |
| 161816 | 162106 | int id = TK_ID; |
| 161817 | 162107 | keywordCode((char*)z, n, &id); |
| 161818 | 162108 | return id; |
| 161819 | 162109 | } |
| 161820 | -#define SQLITE_N_KEYWORD 145 | |
| 162110 | +#define SQLITE_N_KEYWORD 146 | |
| 161821 | 162111 | SQLITE_API int sqlite3_keyword_name(int i,const char **pzName,int *pnName){ |
| 161822 | 162112 | if( i<0 || i>=SQLITE_N_KEYWORD ) return SQLITE_ERROR; |
| 161823 | 162113 | *pzName = zKWText + aKWOffset[i]; |
| 161824 | 162114 | *pnName = aKWLen[i]; |
| 161825 | 162115 | return SQLITE_OK; |
| @@ -207945,28 +208235,198 @@ | ||
| 207945 | 208235 | rc = sessionChangesetInvert(&sInput, xOutput, pOut, 0, 0); |
| 207946 | 208236 | sqlite3_free(sInput.buf.aBuf); |
| 207947 | 208237 | return rc; |
| 207948 | 208238 | } |
| 207949 | 208239 | |
| 208240 | + | |
| 208241 | +typedef struct SessionUpdate SessionUpdate; | |
| 208242 | +struct SessionUpdate { | |
| 208243 | + sqlite3_stmt *pStmt; | |
| 208244 | + u32 *aMask; | |
| 208245 | + SessionUpdate *pNext; | |
| 208246 | +}; | |
| 208247 | + | |
| 207950 | 208248 | typedef struct SessionApplyCtx SessionApplyCtx; |
| 207951 | 208249 | struct SessionApplyCtx { |
| 207952 | 208250 | sqlite3 *db; |
| 207953 | 208251 | sqlite3_stmt *pDelete; /* DELETE statement */ |
| 207954 | - sqlite3_stmt *pUpdate; /* UPDATE statement */ | |
| 207955 | 208252 | sqlite3_stmt *pInsert; /* INSERT statement */ |
| 207956 | 208253 | sqlite3_stmt *pSelect; /* SELECT statement */ |
| 207957 | 208254 | int nCol; /* Size of azCol[] and abPK[] arrays */ |
| 207958 | 208255 | const char **azCol; /* Array of column names */ |
| 207959 | 208256 | u8 *abPK; /* Boolean array - true if column is in PK */ |
| 208257 | + u32 *aUpdateMask; /* Used by sessionUpdateFind */ | |
| 208258 | + SessionUpdate *pUp; | |
| 207960 | 208259 | int bStat1; /* True if table is sqlite_stat1 */ |
| 207961 | 208260 | int bDeferConstraints; /* True to defer constraints */ |
| 207962 | 208261 | int bInvertConstraints; /* Invert when iterating constraints buffer */ |
| 207963 | 208262 | SessionBuffer constraints; /* Deferred constraints are stored here */ |
| 207964 | 208263 | SessionBuffer rebase; /* Rebase information (if any) here */ |
| 207965 | 208264 | u8 bRebaseStarted; /* If table header is already in rebase */ |
| 207966 | 208265 | u8 bRebase; /* True to collect rebase information */ |
| 207967 | 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 | +} | |
| 207968 | 208428 | |
| 207969 | 208429 | /* |
| 207970 | 208430 | ** Formulate a statement to DELETE a row from database db. Assuming a table |
| 207971 | 208431 | ** structure like this: |
| 207972 | 208432 | ** |
| @@ -208032,107 +208492,10 @@ | ||
| 208032 | 208492 | } |
| 208033 | 208493 | sqlite3_free(buf.aBuf); |
| 208034 | 208494 | |
| 208035 | 208495 | return rc; |
| 208036 | 208496 | } |
| 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 | 208497 | |
| 208135 | 208498 | /* |
| 208136 | 208499 | ** Formulate and prepare an SQL statement to query table zTab by primary |
| 208137 | 208500 | ** key. Assuming the following table structure: |
| 208138 | 208501 | ** |
| @@ -208210,21 +208573,10 @@ | ||
| 208210 | 208573 | "INSERT INTO main.sqlite_stat1 VALUES(?1, " |
| 208211 | 208574 | "CASE WHEN length(?2)=0 AND typeof(?2)='blob' THEN NULL ELSE ?2 END, " |
| 208212 | 208575 | "?3)" |
| 208213 | 208576 | ); |
| 208214 | 208577 | } |
| 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 | 208578 | if( rc==SQLITE_OK ){ |
| 208227 | 208579 | rc = sessionPrepare(db, &p->pDelete, |
| 208228 | 208580 | "DELETE FROM main.sqlite_stat1 WHERE tbl=?1 AND idx IS " |
| 208229 | 208581 | "CASE WHEN length(?2)=0 AND typeof(?2)='blob' THEN NULL ELSE ?2 END " |
| 208230 | 208582 | "AND (?4 OR stat IS ?3)" |
| @@ -208537,11 +208889,11 @@ | ||
| 208537 | 208889 | const char *zDummy; |
| 208538 | 208890 | int op; |
| 208539 | 208891 | int nCol; |
| 208540 | 208892 | int rc = SQLITE_OK; |
| 208541 | 208893 | |
| 208542 | - assert( p->pDelete && p->pUpdate && p->pInsert && p->pSelect ); | |
| 208894 | + assert( p->pDelete && p->pInsert && p->pSelect ); | |
| 208543 | 208895 | assert( p->azCol && p->abPK ); |
| 208544 | 208896 | assert( !pbReplace || *pbReplace==0 ); |
| 208545 | 208897 | |
| 208546 | 208898 | sqlite3changeset_op(pIter, &zDummy, &nCol, &op, 0); |
| 208547 | 208899 | |
| @@ -208577,33 +208929,32 @@ | ||
| 208577 | 208929 | ); |
| 208578 | 208930 | } |
| 208579 | 208931 | |
| 208580 | 208932 | }else if( op==SQLITE_UPDATE ){ |
| 208581 | 208933 | int i; |
| 208934 | + sqlite3_stmt *pUp = 0; | |
| 208935 | + int bPatchset = (pbRetry==0 || pIter->bPatchset); | |
| 208936 | + | |
| 208937 | + rc = sessionUpdateFind(pIter, p, bPatchset, &pUp); | |
| 208582 | 208938 | |
| 208583 | 208939 | /* Bind values to the UPDATE statement. */ |
| 208584 | 208940 | for(i=0; rc==SQLITE_OK && i<nCol; i++){ |
| 208585 | 208941 | sqlite3_value *pOld = sessionChangesetOld(pIter, i); |
| 208586 | 208942 | 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); | |
| 208591 | 208945 | } |
| 208592 | 208946 | if( rc==SQLITE_OK && pNew ){ |
| 208593 | - rc = sessionBindValue(p->pUpdate, i*3+3, pNew); | |
| 208947 | + rc = sessionBindValue(pUp, i*2+1, pNew); | |
| 208594 | 208948 | } |
| 208595 | 208949 | } |
| 208596 | - if( rc==SQLITE_OK ){ | |
| 208597 | - sqlite3_bind_int(p->pUpdate, nCol*3+1, pbRetry==0 || pIter->bPatchset); | |
| 208598 | - } | |
| 208599 | 208950 | if( rc!=SQLITE_OK ) return rc; |
| 208600 | 208951 | |
| 208601 | 208952 | /* Attempt the UPDATE. In the case of a NOTFOUND or DATA conflict, |
| 208602 | 208953 | ** 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); | |
| 208605 | 208956 | |
| 208606 | 208957 | if( rc==SQLITE_OK && sqlite3_changes(p->db)==0 ){ |
| 208607 | 208958 | /* A NOTFOUND or DATA error. Search the table to see if it contains |
| 208608 | 208959 | ** a row with a matching primary key. If so, this is a DATA conflict. |
| 208609 | 208960 | ** Otherwise, if there is no primary key match, it is a NOTFOUND. */ |
| @@ -208822,18 +209173,17 @@ | ||
| 208822 | 209173 | rc = sessionRetryConstraints( |
| 208823 | 209174 | db, pIter->bPatchset, zTab, &sApply, xConflict, pCtx |
| 208824 | 209175 | ); |
| 208825 | 209176 | if( rc!=SQLITE_OK ) break; |
| 208826 | 209177 | |
| 209178 | + sessionUpdateFree(&sApply); | |
| 208827 | 209179 | sqlite3_free((char*)sApply.azCol); /* cast works around VC++ bug */ |
| 208828 | 209180 | sqlite3_finalize(sApply.pDelete); |
| 208829 | - sqlite3_finalize(sApply.pUpdate); | |
| 208830 | 209181 | sqlite3_finalize(sApply.pInsert); |
| 208831 | 209182 | sqlite3_finalize(sApply.pSelect); |
| 208832 | 209183 | sApply.db = db; |
| 208833 | 209184 | sApply.pDelete = 0; |
| 208834 | - sApply.pUpdate = 0; | |
| 208835 | 209185 | sApply.pInsert = 0; |
| 208836 | 209186 | sApply.pSelect = 0; |
| 208837 | 209187 | sApply.nCol = 0; |
| 208838 | 209188 | sApply.azCol = 0; |
| 208839 | 209189 | sApply.abPK = 0; |
| @@ -208893,15 +209243,14 @@ | ||
| 208893 | 209243 | if( (rc = sessionStat1Sql(db, &sApply) ) ){ |
| 208894 | 209244 | break; |
| 208895 | 209245 | } |
| 208896 | 209246 | sApply.bStat1 = 1; |
| 208897 | 209247 | }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 | + ){ | |
| 208903 | 209252 | break; |
| 208904 | 209253 | } |
| 208905 | 209254 | sApply.bStat1 = 0; |
| 208906 | 209255 | } |
| 208907 | 209256 | } |
| @@ -208956,13 +209305,13 @@ | ||
| 208956 | 209305 | if( rc==SQLITE_OK && bPatchset==0 && sApply.bRebase ){ |
| 208957 | 209306 | *ppRebase = (void*)sApply.rebase.aBuf; |
| 208958 | 209307 | *pnRebase = sApply.rebase.nBuf; |
| 208959 | 209308 | sApply.rebase.aBuf = 0; |
| 208960 | 209309 | } |
| 209310 | + sessionUpdateFree(&sApply); | |
| 208961 | 209311 | sqlite3_finalize(sApply.pInsert); |
| 208962 | 209312 | sqlite3_finalize(sApply.pDelete); |
| 208963 | - sqlite3_finalize(sApply.pUpdate); | |
| 208964 | 209313 | sqlite3_finalize(sApply.pSelect); |
| 208965 | 209314 | sqlite3_free((char*)sApply.azCol); /* cast works around VC++ bug */ |
| 208966 | 209315 | sqlite3_free((char*)sApply.constraints.aBuf); |
| 208967 | 209316 | sqlite3_free((char*)sApply.rebase.aBuf); |
| 208968 | 209317 | sqlite3_mutex_leave(sqlite3_db_mutex(db)); |
| @@ -228066,11 +228415,11 @@ | ||
| 228066 | 228415 | int nArg, /* Number of args */ |
| 228067 | 228416 | sqlite3_value **apUnused /* Function arguments */ |
| 228068 | 228417 | ){ |
| 228069 | 228418 | assert( nArg==0 ); |
| 228070 | 228419 | 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); | |
| 228072 | 228421 | } |
| 228073 | 228422 | |
| 228074 | 228423 | /* |
| 228075 | 228424 | ** Return true if zName is the extension on one of the shadow tables used |
| 228076 | 228425 | ** by this module. |
| @@ -232992,12 +233341,12 @@ | ||
| 232992 | 233341 | } |
| 232993 | 233342 | #endif /* SQLITE_CORE */ |
| 232994 | 233343 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */ |
| 232995 | 233344 | |
| 232996 | 233345 | /************** End of stmt.c ************************************************/ |
| 232997 | -#if __LINE__!=232997 | |
| 233346 | +#if __LINE__!=233346 | |
| 232998 | 233347 | #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" | |
| 233000 | 233349 | #endif |
| 233001 | 233350 | /* Return the source-id for this library */ |
| 233002 | 233351 | SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; } |
| 233003 | 233352 | /************************** End of sqlite3.c ******************************/ |
| 233004 | 233353 |
| --- 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 @@ | ||
| 123 | 123 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 124 | 124 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 125 | 125 | */ |
| 126 | 126 | #define SQLITE_VERSION "3.35.0" |
| 127 | 127 | #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" | |
| 129 | 129 | |
| 130 | 130 | /* |
| 131 | 131 | ** CAPI3REF: Run-Time Library Version Numbers |
| 132 | 132 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 133 | 133 | ** |
| @@ -2113,11 +2113,17 @@ | ||
| 2113 | 2113 | ** The first argument is an integer which is 0 to disable triggers, |
| 2114 | 2114 | ** positive to enable triggers or negative to leave the setting unchanged. |
| 2115 | 2115 | ** The second parameter is a pointer to an integer into which |
| 2116 | 2116 | ** is written 0 or 1 to indicate whether triggers are disabled or enabled |
| 2117 | 2117 | ** 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> | |
| 2119 | 2125 | ** |
| 2120 | 2126 | ** [[SQLITE_DBCONFIG_ENABLE_VIEW]] |
| 2121 | 2127 | ** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt> |
| 2122 | 2128 | ** <dd> ^This option is used to enable or disable [CREATE VIEW | views]. |
| 2123 | 2129 | ** There should be two additional arguments. |
| 2124 | 2130 |
| --- 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 |