| | @@ -1147,11 +1147,11 @@ |
| 1147 | 1147 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 1148 | 1148 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 1149 | 1149 | */ |
| 1150 | 1150 | #define SQLITE_VERSION "3.22.0" |
| 1151 | 1151 | #define SQLITE_VERSION_NUMBER 3022000 |
| 1152 | | -#define SQLITE_SOURCE_ID "2017-12-13 20:35:34 1c0aa919ee429cd194820ec9c54084563f39e63fd399b23f859fc6703b429b15" |
| 1152 | +#define SQLITE_SOURCE_ID "2018-01-07 20:38:10 67c4a8c6881e33b830aa27c80e7e3d697a4222939edd77cd5ca77ece16471ea4" |
| 1153 | 1153 | |
| 1154 | 1154 | /* |
| 1155 | 1155 | ** CAPI3REF: Run-Time Library Version Numbers |
| 1156 | 1156 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 1157 | 1157 | ** |
| | @@ -3082,11 +3082,10 @@ |
| 3082 | 3082 | ** is an integer - non-zero to disable checkpoints-on-close, or zero (the |
| 3083 | 3083 | ** default) to enable them. The second parameter is a pointer to an integer |
| 3084 | 3084 | ** into which is written 0 or 1 to indicate whether checkpoints-on-close |
| 3085 | 3085 | ** have been disabled - 0 if they are not disabled, 1 if they are. |
| 3086 | 3086 | ** </dd> |
| 3087 | | -** |
| 3088 | 3087 | ** <dt>SQLITE_DBCONFIG_ENABLE_QPSG</dt> |
| 3089 | 3088 | ** <dd>^(The SQLITE_DBCONFIG_ENABLE_QPSG option activates or deactivates |
| 3090 | 3089 | ** the [query planner stability guarantee] (QPSG). When the QPSG is active, |
| 3091 | 3090 | ** a single SQL query statement will always use the same algorithm regardless |
| 3092 | 3091 | ** of values of [bound parameters].)^ The QPSG disables some query optimizations |
| | @@ -3093,11 +3092,20 @@ |
| 3093 | 3092 | ** that look at the values of bound parameters, which can make some queries |
| 3094 | 3093 | ** slower. But the QPSG has the advantage of more predictable behavior. With |
| 3095 | 3094 | ** the QPSG active, SQLite will always use the same query plan in the field as |
| 3096 | 3095 | ** was used during testing in the lab. |
| 3097 | 3096 | ** </dd> |
| 3098 | | -** |
| 3097 | +** <dt>SQLITE_DBCONFIG_TRIGGER_EQP</dt> |
| 3098 | +** <dd> By default, the output of EXPLAIN QUERY PLAN commands does not |
| 3099 | +** include output for any operations performed by trigger programs. This |
| 3100 | +** option is used to set or clear (the default) a flag that governs this |
| 3101 | +** behavior. The first parameter passed to this operation is an integer - |
| 3102 | +** non-zero to enable output for trigger programs, or zero to disable it. |
| 3103 | +** The second parameter is a pointer to an integer into which is written |
| 3104 | +** 0 or 1 to indicate whether output-for-triggers has been disabled - 0 if |
| 3105 | +** it is not disabled, 1 if it is. |
| 3106 | +** </dd> |
| 3099 | 3107 | ** </dl> |
| 3100 | 3108 | */ |
| 3101 | 3109 | #define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */ |
| 3102 | 3110 | #define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */ |
| 3103 | 3111 | #define SQLITE_DBCONFIG_ENABLE_FKEY 1002 /* int int* */ |
| | @@ -3104,11 +3112,12 @@ |
| 3104 | 3112 | #define SQLITE_DBCONFIG_ENABLE_TRIGGER 1003 /* int int* */ |
| 3105 | 3113 | #define SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER 1004 /* int int* */ |
| 3106 | 3114 | #define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION 1005 /* int int* */ |
| 3107 | 3115 | #define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE 1006 /* int int* */ |
| 3108 | 3116 | #define SQLITE_DBCONFIG_ENABLE_QPSG 1007 /* int int* */ |
| 3109 | | - |
| 3117 | +#define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */ |
| 3118 | +#define SQLITE_DBCONFIG_MAX 1008 /* Largest DBCONFIG */ |
| 3110 | 3119 | |
| 3111 | 3120 | /* |
| 3112 | 3121 | ** CAPI3REF: Enable Or Disable Extended Result Codes |
| 3113 | 3122 | ** METHOD: sqlite3 |
| 3114 | 3123 | ** |
| | @@ -7984,13 +7993,13 @@ |
| 7984 | 7993 | ** ^The third and fourth parameters to this routine |
| 7985 | 7994 | ** are passed directly through to the second and third parameters of |
| 7986 | 7995 | ** the xFileControl method. ^The return value of the xFileControl |
| 7987 | 7996 | ** method becomes the return value of this routine. |
| 7988 | 7997 | ** |
| 7989 | | -** ^The SQLITE_FCNTL_FILE_POINTER value for the op parameter causes |
| 7998 | +** ^The [SQLITE_FCNTL_FILE_POINTER] value for the op parameter causes |
| 7990 | 7999 | ** a pointer to the underlying [sqlite3_file] object to be written into |
| 7991 | | -** the space pointed to by the 4th parameter. ^The SQLITE_FCNTL_FILE_POINTER |
| 8000 | +** the space pointed to by the 4th parameter. ^The [SQLITE_FCNTL_FILE_POINTER] |
| 7992 | 8001 | ** case is a short-circuit path which does not actually invoke the |
| 7993 | 8002 | ** underlying sqlite3_io_methods.xFileControl method. |
| 7994 | 8003 | ** |
| 7995 | 8004 | ** ^If the second parameter (zDbName) does not match the name of any |
| 7996 | 8005 | ** open database file, then SQLITE_ERROR is returned. ^This error |
| | @@ -7998,11 +8007,11 @@ |
| 7998 | 8007 | ** or [sqlite3_errmsg()]. The underlying xFileControl method might |
| 7999 | 8008 | ** also return SQLITE_ERROR. There is no way to distinguish between |
| 8000 | 8009 | ** an incorrect zDbName and an SQLITE_ERROR return from the underlying |
| 8001 | 8010 | ** xFileControl method. |
| 8002 | 8011 | ** |
| 8003 | | -** See also: [SQLITE_FCNTL_LOCKSTATE] |
| 8012 | +** See also: [file control opcodes] |
| 8004 | 8013 | */ |
| 8005 | 8014 | SQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*); |
| 8006 | 8015 | |
| 8007 | 8016 | /* |
| 8008 | 8017 | ** CAPI3REF: Testing Interface |
| | @@ -8055,11 +8064,12 @@ |
| 8055 | 8064 | #define SQLITE_TESTCTRL_VDBE_COVERAGE 21 |
| 8056 | 8065 | #define SQLITE_TESTCTRL_BYTEORDER 22 |
| 8057 | 8066 | #define SQLITE_TESTCTRL_ISINIT 23 |
| 8058 | 8067 | #define SQLITE_TESTCTRL_SORTER_MMAP 24 |
| 8059 | 8068 | #define SQLITE_TESTCTRL_IMPOSTER 25 |
| 8060 | | -#define SQLITE_TESTCTRL_LAST 25 |
| 8069 | +#define SQLITE_TESTCTRL_PARSER_COVERAGE 26 |
| 8070 | +#define SQLITE_TESTCTRL_LAST 26 /* Largest TESTCTRL */ |
| 8061 | 8071 | |
| 8062 | 8072 | /* |
| 8063 | 8073 | ** CAPI3REF: SQLite Runtime Status |
| 8064 | 8074 | ** |
| 8065 | 8075 | ** ^These interfaces are used to retrieve runtime status information |
| | @@ -9309,10 +9319,25 @@ |
| 9309 | 9319 | ** of the SQL statement that triggered the call to the [xUpdate] method of the |
| 9310 | 9320 | ** [virtual table]. |
| 9311 | 9321 | */ |
| 9312 | 9322 | SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *); |
| 9313 | 9323 | |
| 9324 | +/* |
| 9325 | +** CAPI3REF: Determine The Collation For a Virtual Table Constraint |
| 9326 | +** |
| 9327 | +** This function may only be called from within a call to the [xBestIndex] |
| 9328 | +** method of a [virtual table]. |
| 9329 | +** |
| 9330 | +** The first argument must be the sqlite3_index_info object that is the |
| 9331 | +** first parameter to the xBestIndex() method. The second argument must be |
| 9332 | +** an index into the aConstraint[] array belonging to the sqlite3_index_info |
| 9333 | +** structure passed to xBestIndex. This function returns a pointer to a buffer |
| 9334 | +** containing the name of the collation sequence for the corresponding |
| 9335 | +** constraint. |
| 9336 | +*/ |
| 9337 | +SQLITE_API SQLITE_EXPERIMENTAL const char *sqlite3_vtab_collation(sqlite3_index_info*,int); |
| 9338 | + |
| 9314 | 9339 | /* |
| 9315 | 9340 | ** CAPI3REF: Conflict resolution modes |
| 9316 | 9341 | ** KEYWORDS: {conflict resolution mode} |
| 9317 | 9342 | ** |
| 9318 | 9343 | ** These constants are returned by [sqlite3_vtab_on_conflict()] to |
| | @@ -13144,11 +13169,10 @@ |
| 13144 | 13169 | typedef struct Column Column; |
| 13145 | 13170 | typedef struct Db Db; |
| 13146 | 13171 | typedef struct Schema Schema; |
| 13147 | 13172 | typedef struct Expr Expr; |
| 13148 | 13173 | typedef struct ExprList ExprList; |
| 13149 | | -typedef struct ExprSpan ExprSpan; |
| 13150 | 13174 | typedef struct FKey FKey; |
| 13151 | 13175 | typedef struct FuncDestructor FuncDestructor; |
| 13152 | 13176 | typedef struct FuncDef FuncDef; |
| 13153 | 13177 | typedef struct FuncDefHash FuncDefHash; |
| 13154 | 13178 | typedef struct IdList IdList; |
| | @@ -13490,10 +13514,13 @@ |
| 13490 | 13514 | SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor*, int *pRes); |
| 13491 | 13515 | SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor*, int flags); |
| 13492 | 13516 | SQLITE_PRIVATE int sqlite3BtreeEof(BtCursor*); |
| 13493 | 13517 | SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor*, int flags); |
| 13494 | 13518 | SQLITE_PRIVATE i64 sqlite3BtreeIntegerKey(BtCursor*); |
| 13519 | +#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC |
| 13520 | +SQLITE_PRIVATE i64 sqlite3BtreeOffset(BtCursor*); |
| 13521 | +#endif |
| 13495 | 13522 | SQLITE_PRIVATE int sqlite3BtreePayload(BtCursor*, u32 offset, u32 amt, void*); |
| 13496 | 13523 | SQLITE_PRIVATE const void *sqlite3BtreePayloadFetch(BtCursor*, u32 *pAmt); |
| 13497 | 13524 | SQLITE_PRIVATE u32 sqlite3BtreePayloadSize(BtCursor*); |
| 13498 | 13525 | |
| 13499 | 13526 | SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot, int, int*); |
| | @@ -13841,82 +13868,84 @@ |
| 13841 | 13868 | #define OP_Divide 91 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */ |
| 13842 | 13869 | #define OP_Remainder 92 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */ |
| 13843 | 13870 | #define OP_Concat 93 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */ |
| 13844 | 13871 | #define OP_Compare 94 /* synopsis: r[P1@P3] <-> r[P2@P3] */ |
| 13845 | 13872 | #define OP_BitNot 95 /* same as TK_BITNOT, synopsis: r[P1]= ~r[P1] */ |
| 13846 | | -#define OP_Column 96 /* synopsis: r[P3]=PX */ |
| 13873 | +#define OP_Offset 96 /* synopsis: r[P3] = sqlite_offset(P1) */ |
| 13847 | 13874 | #define OP_String8 97 /* same as TK_STRING, synopsis: r[P2]='P4' */ |
| 13848 | | -#define OP_Affinity 98 /* synopsis: affinity(r[P1@P2]) */ |
| 13849 | | -#define OP_MakeRecord 99 /* synopsis: r[P3]=mkrec(r[P1@P2]) */ |
| 13850 | | -#define OP_Count 100 /* synopsis: r[P2]=count() */ |
| 13851 | | -#define OP_ReadCookie 101 |
| 13852 | | -#define OP_SetCookie 102 |
| 13853 | | -#define OP_ReopenIdx 103 /* synopsis: root=P2 iDb=P3 */ |
| 13854 | | -#define OP_OpenRead 104 /* synopsis: root=P2 iDb=P3 */ |
| 13855 | | -#define OP_OpenWrite 105 /* synopsis: root=P2 iDb=P3 */ |
| 13856 | | -#define OP_OpenDup 106 |
| 13857 | | -#define OP_OpenAutoindex 107 /* synopsis: nColumn=P2 */ |
| 13858 | | -#define OP_OpenEphemeral 108 /* synopsis: nColumn=P2 */ |
| 13859 | | -#define OP_SorterOpen 109 |
| 13860 | | -#define OP_SequenceTest 110 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */ |
| 13861 | | -#define OP_OpenPseudo 111 /* synopsis: P3 columns in r[P2] */ |
| 13862 | | -#define OP_Close 112 |
| 13863 | | -#define OP_ColumnsUsed 113 |
| 13864 | | -#define OP_Sequence 114 /* synopsis: r[P2]=cursor[P1].ctr++ */ |
| 13865 | | -#define OP_NewRowid 115 /* synopsis: r[P2]=rowid */ |
| 13866 | | -#define OP_Insert 116 /* synopsis: intkey=r[P3] data=r[P2] */ |
| 13867 | | -#define OP_InsertInt 117 /* synopsis: intkey=P3 data=r[P2] */ |
| 13868 | | -#define OP_Delete 118 |
| 13869 | | -#define OP_ResetCount 119 |
| 13870 | | -#define OP_SorterCompare 120 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */ |
| 13871 | | -#define OP_SorterData 121 /* synopsis: r[P2]=data */ |
| 13872 | | -#define OP_RowData 122 /* synopsis: r[P2]=data */ |
| 13873 | | -#define OP_Rowid 123 /* synopsis: r[P2]=rowid */ |
| 13874 | | -#define OP_NullRow 124 |
| 13875 | | -#define OP_SeekEnd 125 |
| 13876 | | -#define OP_SorterInsert 126 /* synopsis: key=r[P2] */ |
| 13877 | | -#define OP_IdxInsert 127 /* synopsis: key=r[P2] */ |
| 13878 | | -#define OP_IdxDelete 128 /* synopsis: key=r[P2@P3] */ |
| 13879 | | -#define OP_DeferredSeek 129 /* synopsis: Move P3 to P1.rowid if needed */ |
| 13880 | | -#define OP_IdxRowid 130 /* synopsis: r[P2]=rowid */ |
| 13881 | | -#define OP_Destroy 131 |
| 13875 | +#define OP_Column 98 /* synopsis: r[P3]=PX */ |
| 13876 | +#define OP_Affinity 99 /* synopsis: affinity(r[P1@P2]) */ |
| 13877 | +#define OP_MakeRecord 100 /* synopsis: r[P3]=mkrec(r[P1@P2]) */ |
| 13878 | +#define OP_Count 101 /* synopsis: r[P2]=count() */ |
| 13879 | +#define OP_ReadCookie 102 |
| 13880 | +#define OP_SetCookie 103 |
| 13881 | +#define OP_ReopenIdx 104 /* synopsis: root=P2 iDb=P3 */ |
| 13882 | +#define OP_OpenRead 105 /* synopsis: root=P2 iDb=P3 */ |
| 13883 | +#define OP_OpenWrite 106 /* synopsis: root=P2 iDb=P3 */ |
| 13884 | +#define OP_OpenDup 107 |
| 13885 | +#define OP_OpenAutoindex 108 /* synopsis: nColumn=P2 */ |
| 13886 | +#define OP_OpenEphemeral 109 /* synopsis: nColumn=P2 */ |
| 13887 | +#define OP_SorterOpen 110 |
| 13888 | +#define OP_SequenceTest 111 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */ |
| 13889 | +#define OP_OpenPseudo 112 /* synopsis: P3 columns in r[P2] */ |
| 13890 | +#define OP_Close 113 |
| 13891 | +#define OP_ColumnsUsed 114 |
| 13892 | +#define OP_Sequence 115 /* synopsis: r[P2]=cursor[P1].ctr++ */ |
| 13893 | +#define OP_NewRowid 116 /* synopsis: r[P2]=rowid */ |
| 13894 | +#define OP_Insert 117 /* synopsis: intkey=r[P3] data=r[P2] */ |
| 13895 | +#define OP_InsertInt 118 /* synopsis: intkey=P3 data=r[P2] */ |
| 13896 | +#define OP_Delete 119 |
| 13897 | +#define OP_ResetCount 120 |
| 13898 | +#define OP_SorterCompare 121 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */ |
| 13899 | +#define OP_SorterData 122 /* synopsis: r[P2]=data */ |
| 13900 | +#define OP_RowData 123 /* synopsis: r[P2]=data */ |
| 13901 | +#define OP_Rowid 124 /* synopsis: r[P2]=rowid */ |
| 13902 | +#define OP_NullRow 125 |
| 13903 | +#define OP_SeekEnd 126 |
| 13904 | +#define OP_SorterInsert 127 /* synopsis: key=r[P2] */ |
| 13905 | +#define OP_IdxInsert 128 /* synopsis: key=r[P2] */ |
| 13906 | +#define OP_IdxDelete 129 /* synopsis: key=r[P2@P3] */ |
| 13907 | +#define OP_DeferredSeek 130 /* synopsis: Move P3 to P1.rowid if needed */ |
| 13908 | +#define OP_IdxRowid 131 /* synopsis: r[P2]=rowid */ |
| 13882 | 13909 | #define OP_Real 132 /* same as TK_FLOAT, synopsis: r[P2]=P4 */ |
| 13883 | | -#define OP_Clear 133 |
| 13884 | | -#define OP_ResetSorter 134 |
| 13885 | | -#define OP_CreateBtree 135 /* synopsis: r[P2]=root iDb=P1 flags=P3 */ |
| 13886 | | -#define OP_SqlExec 136 |
| 13887 | | -#define OP_ParseSchema 137 |
| 13888 | | -#define OP_LoadAnalysis 138 |
| 13889 | | -#define OP_DropTable 139 |
| 13890 | | -#define OP_DropIndex 140 |
| 13891 | | -#define OP_DropTrigger 141 |
| 13892 | | -#define OP_IntegrityCk 142 |
| 13893 | | -#define OP_RowSetAdd 143 /* synopsis: rowset(P1)=r[P2] */ |
| 13894 | | -#define OP_Param 144 |
| 13895 | | -#define OP_FkCounter 145 /* synopsis: fkctr[P1]+=P2 */ |
| 13896 | | -#define OP_MemMax 146 /* synopsis: r[P1]=max(r[P1],r[P2]) */ |
| 13897 | | -#define OP_OffsetLimit 147 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */ |
| 13898 | | -#define OP_AggStep0 148 /* synopsis: accum=r[P3] step(r[P2@P5]) */ |
| 13899 | | -#define OP_AggStep 149 /* synopsis: accum=r[P3] step(r[P2@P5]) */ |
| 13900 | | -#define OP_AggFinal 150 /* synopsis: accum=r[P1] N=P2 */ |
| 13901 | | -#define OP_Expire 151 |
| 13902 | | -#define OP_TableLock 152 /* synopsis: iDb=P1 root=P2 write=P3 */ |
| 13903 | | -#define OP_VBegin 153 |
| 13904 | | -#define OP_VCreate 154 |
| 13905 | | -#define OP_VDestroy 155 |
| 13906 | | -#define OP_VOpen 156 |
| 13907 | | -#define OP_VColumn 157 /* synopsis: r[P3]=vcolumn(P2) */ |
| 13908 | | -#define OP_VRename 158 |
| 13909 | | -#define OP_Pagecount 159 |
| 13910 | | -#define OP_MaxPgcnt 160 |
| 13911 | | -#define OP_PureFunc0 161 |
| 13912 | | -#define OP_Function0 162 /* synopsis: r[P3]=func(r[P2@P5]) */ |
| 13913 | | -#define OP_PureFunc 163 |
| 13914 | | -#define OP_Function 164 /* synopsis: r[P3]=func(r[P2@P5]) */ |
| 13915 | | -#define OP_CursorHint 165 |
| 13916 | | -#define OP_Noop 166 |
| 13917 | | -#define OP_Explain 167 |
| 13910 | +#define OP_Destroy 133 |
| 13911 | +#define OP_Clear 134 |
| 13912 | +#define OP_ResetSorter 135 |
| 13913 | +#define OP_CreateBtree 136 /* synopsis: r[P2]=root iDb=P1 flags=P3 */ |
| 13914 | +#define OP_SqlExec 137 |
| 13915 | +#define OP_ParseSchema 138 |
| 13916 | +#define OP_LoadAnalysis 139 |
| 13917 | +#define OP_DropTable 140 |
| 13918 | +#define OP_DropIndex 141 |
| 13919 | +#define OP_DropTrigger 142 |
| 13920 | +#define OP_IntegrityCk 143 |
| 13921 | +#define OP_RowSetAdd 144 /* synopsis: rowset(P1)=r[P2] */ |
| 13922 | +#define OP_Param 145 |
| 13923 | +#define OP_FkCounter 146 /* synopsis: fkctr[P1]+=P2 */ |
| 13924 | +#define OP_MemMax 147 /* synopsis: r[P1]=max(r[P1],r[P2]) */ |
| 13925 | +#define OP_OffsetLimit 148 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */ |
| 13926 | +#define OP_AggStep0 149 /* synopsis: accum=r[P3] step(r[P2@P5]) */ |
| 13927 | +#define OP_AggStep 150 /* synopsis: accum=r[P3] step(r[P2@P5]) */ |
| 13928 | +#define OP_AggFinal 151 /* synopsis: accum=r[P1] N=P2 */ |
| 13929 | +#define OP_Expire 152 |
| 13930 | +#define OP_TableLock 153 /* synopsis: iDb=P1 root=P2 write=P3 */ |
| 13931 | +#define OP_VBegin 154 |
| 13932 | +#define OP_VCreate 155 |
| 13933 | +#define OP_VDestroy 156 |
| 13934 | +#define OP_VOpen 157 |
| 13935 | +#define OP_VColumn 158 /* synopsis: r[P3]=vcolumn(P2) */ |
| 13936 | +#define OP_VRename 159 |
| 13937 | +#define OP_Pagecount 160 |
| 13938 | +#define OP_MaxPgcnt 161 |
| 13939 | +#define OP_PureFunc0 162 |
| 13940 | +#define OP_Function0 163 /* synopsis: r[P3]=func(r[P2@P5]) */ |
| 13941 | +#define OP_PureFunc 164 |
| 13942 | +#define OP_Function 165 /* synopsis: r[P3]=func(r[P2@P5]) */ |
| 13943 | +#define OP_Trace 166 |
| 13944 | +#define OP_CursorHint 167 |
| 13945 | +#define OP_Noop 168 |
| 13946 | +#define OP_Explain 169 |
| 13918 | 13947 | |
| 13919 | 13948 | /* Properties such as "out2" or "jump" that are specified in |
| 13920 | 13949 | ** comments following the "case" for each opcode in the vdbe.c |
| 13921 | 13950 | ** are encoded into bitvectors as follows: |
| 13922 | 13951 | */ |
| | @@ -13937,20 +13966,20 @@ |
| 13937 | 13966 | /* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, 0x02,\ |
| 13938 | 13967 | /* 64 */ 0x02, 0x08, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00,\ |
| 13939 | 13968 | /* 72 */ 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\ |
| 13940 | 13969 | /* 80 */ 0x02, 0x02, 0x02, 0x00, 0x26, 0x26, 0x26, 0x26,\ |
| 13941 | 13970 | /* 88 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x00, 0x12,\ |
| 13942 | | -/* 96 */ 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\ |
| 13971 | +/* 96 */ 0x20, 0x10, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00,\ |
| 13943 | 13972 | /* 104 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ |
| 13944 | | -/* 112 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,\ |
| 13945 | | -/* 120 */ 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x04, 0x04,\ |
| 13946 | | -/* 128 */ 0x00, 0x00, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10,\ |
| 13947 | | -/* 136 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,\ |
| 13948 | | -/* 144 */ 0x10, 0x00, 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00,\ |
| 13949 | | -/* 152 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,\ |
| 13950 | | -/* 160 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ |
| 13951 | | -} |
| 13973 | +/* 112 */ 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00,\ |
| 13974 | +/* 120 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x04,\ |
| 13975 | +/* 128 */ 0x04, 0x00, 0x00, 0x10, 0x10, 0x10, 0x00, 0x00,\ |
| 13976 | +/* 136 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ |
| 13977 | +/* 144 */ 0x06, 0x10, 0x00, 0x04, 0x1a, 0x00, 0x00, 0x00,\ |
| 13978 | +/* 152 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ |
| 13979 | +/* 160 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ |
| 13980 | +/* 168 */ 0x00, 0x00,} |
| 13952 | 13981 | |
| 13953 | 13982 | /* The sqlite3P2Values() routine is able to run faster if it knows |
| 13954 | 13983 | ** the value of the largest JUMP opcode. The smaller the maximum |
| 13955 | 13984 | ** JUMP opcode the better, so the mkopcodeh.tcl script that |
| 13956 | 13985 | ** generated this include file strives to group all JUMP opcodes |
| | @@ -15206,11 +15235,11 @@ |
| 15206 | 15235 | #ifndef SQLITE_OMIT_VIRTUALTABLE |
| 15207 | 15236 | int nVTrans; /* Allocated size of aVTrans */ |
| 15208 | 15237 | Hash aModule; /* populated by sqlite3_create_module() */ |
| 15209 | 15238 | VtabCtx *pVtabCtx; /* Context for active vtab connect/create */ |
| 15210 | 15239 | VTable **aVTrans; /* Virtual tables with open transactions */ |
| 15211 | | - VTable *pDisconnect; /* Disconnect these in next sqlite3_prepare() */ |
| 15240 | + VTable *pDisconnect; /* Disconnect these in next sqlite3_prepare() */ |
| 15212 | 15241 | #endif |
| 15213 | 15242 | Hash aFunc; /* Hash table of connection functions */ |
| 15214 | 15243 | Hash aCollSeq; /* All collating sequences */ |
| 15215 | 15244 | BusyHandler busyHandler; /* Busy callback */ |
| 15216 | 15245 | Db aDbStatic[2]; /* Static space for the 2 default backends */ |
| | @@ -15281,11 +15310,13 @@ |
| 15281 | 15310 | #define SQLITE_EnableTrigger 0x00040000 /* True to enable triggers */ |
| 15282 | 15311 | #define SQLITE_DeferFKs 0x00080000 /* Defer all FK constraints */ |
| 15283 | 15312 | #define SQLITE_QueryOnly 0x00100000 /* Disable database changes */ |
| 15284 | 15313 | #define SQLITE_CellSizeCk 0x00200000 /* Check btree cell sizes on load */ |
| 15285 | 15314 | #define SQLITE_Fts3Tokenizer 0x00400000 /* Enable fts3_tokenizer(2) */ |
| 15286 | | -#define SQLITE_EnableQPSG 0x00800000 /* Query Planner Stability Guarantee */ |
| 15315 | +#define SQLITE_EnableQPSG 0x00800000 /* Query Planner Stability Guarantee*/ |
| 15316 | +#define SQLITE_TriggerEQP 0x01000000 /* Show trigger EXPLAIN QUERY PLAN */ |
| 15317 | + |
| 15287 | 15318 | /* Flags used only if debugging */ |
| 15288 | 15319 | #ifdef SQLITE_DEBUG |
| 15289 | 15320 | #define SQLITE_SqlTrace 0x08000000 /* Debug print SQL as it executes */ |
| 15290 | 15321 | #define SQLITE_VdbeListing 0x10000000 /* Debug listings of VDBE programs */ |
| 15291 | 15322 | #define SQLITE_VdbeTrace 0x20000000 /* True to trace VDBE execution */ |
| | @@ -15414,10 +15445,11 @@ |
| 15414 | 15445 | #define SQLITE_FUNC_CONSTANT 0x0800 /* Constant inputs give a constant output */ |
| 15415 | 15446 | #define SQLITE_FUNC_MINMAX 0x1000 /* True for min() and max() aggregates */ |
| 15416 | 15447 | #define SQLITE_FUNC_SLOCHNG 0x2000 /* "Slow Change". Value constant during a |
| 15417 | 15448 | ** single query - might change over time */ |
| 15418 | 15449 | #define SQLITE_FUNC_AFFINITY 0x4000 /* Built-in affinity() function */ |
| 15450 | +#define SQLITE_FUNC_OFFSET 0x8000 /* Built-in sqlite_offset() function */ |
| 15419 | 15451 | |
| 15420 | 15452 | /* |
| 15421 | 15453 | ** The following three macros, FUNCTION(), LIKEFUNC() and AGGREGATE() are |
| 15422 | 15454 | ** used to create the initializers for the FuncDef structures. |
| 15423 | 15455 | ** |
| | @@ -16288,21 +16320,10 @@ |
| 16288 | 16320 | int iConstExprReg; /* Register in which Expr value is cached */ |
| 16289 | 16321 | } u; |
| 16290 | 16322 | } a[1]; /* One slot for each expression in the list */ |
| 16291 | 16323 | }; |
| 16292 | 16324 | |
| 16293 | | -/* |
| 16294 | | -** An instance of this structure is used by the parser to record both |
| 16295 | | -** the parse tree for an expression and the span of input text for an |
| 16296 | | -** expression. |
| 16297 | | -*/ |
| 16298 | | -struct ExprSpan { |
| 16299 | | - Expr *pExpr; /* The expression parse tree */ |
| 16300 | | - const char *zStart; /* First character of input text */ |
| 16301 | | - const char *zEnd; /* One character past the end of input text */ |
| 16302 | | -}; |
| 16303 | | - |
| 16304 | 16325 | /* |
| 16305 | 16326 | ** An instance of this structure can hold a simple list of identifiers, |
| 16306 | 16327 | ** such as the list "a,b,c" in the following statements: |
| 16307 | 16328 | ** |
| 16308 | 16329 | ** INSERT INTO t(a,b,c) VALUES ...; |
| | @@ -16999,10 +17020,11 @@ |
| 16999 | 17020 | Select *pSelect; /* SELECT statement or RHS of INSERT INTO SELECT ... */ |
| 17000 | 17021 | char *zTarget; /* Target table for DELETE, UPDATE, INSERT */ |
| 17001 | 17022 | Expr *pWhere; /* The WHERE clause for DELETE or UPDATE steps */ |
| 17002 | 17023 | ExprList *pExprList; /* SET clause for UPDATE. */ |
| 17003 | 17024 | IdList *pIdList; /* Column names for INSERT */ |
| 17025 | + char *zSpan; /* Original SQL text of this command */ |
| 17004 | 17026 | TriggerStep *pNext; /* Next in the link-list */ |
| 17005 | 17027 | TriggerStep *pLast; /* Last element in link-list. Valid for 1st elem only */ |
| 17006 | 17028 | }; |
| 17007 | 17029 | |
| 17008 | 17030 | /* |
| | @@ -17309,10 +17331,11 @@ |
| 17309 | 17331 | SQLITE_PRIVATE void *sqlite3DbMallocZero(sqlite3*, u64); |
| 17310 | 17332 | SQLITE_PRIVATE void *sqlite3DbMallocRaw(sqlite3*, u64); |
| 17311 | 17333 | SQLITE_PRIVATE void *sqlite3DbMallocRawNN(sqlite3*, u64); |
| 17312 | 17334 | SQLITE_PRIVATE char *sqlite3DbStrDup(sqlite3*,const char*); |
| 17313 | 17335 | SQLITE_PRIVATE char *sqlite3DbStrNDup(sqlite3*,const char*, u64); |
| 17336 | +SQLITE_PRIVATE char *sqlite3DbSpanDup(sqlite3*,const char*,const char*); |
| 17314 | 17337 | SQLITE_PRIVATE void *sqlite3Realloc(void*, u64); |
| 17315 | 17338 | SQLITE_PRIVATE void *sqlite3DbReallocOrFree(sqlite3 *, void *, u64); |
| 17316 | 17339 | SQLITE_PRIVATE void *sqlite3DbRealloc(sqlite3 *, void *, u64); |
| 17317 | 17340 | SQLITE_PRIVATE void sqlite3DbFree(sqlite3*, void*); |
| 17318 | 17341 | SQLITE_PRIVATE void sqlite3DbFreeNN(sqlite3*, void*); |
| | @@ -17447,11 +17470,11 @@ |
| 17447 | 17470 | SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3*, Expr*); |
| 17448 | 17471 | SQLITE_PRIVATE ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*); |
| 17449 | 17472 | SQLITE_PRIVATE ExprList *sqlite3ExprListAppendVector(Parse*,ExprList*,IdList*,Expr*); |
| 17450 | 17473 | SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList*,int); |
| 17451 | 17474 | SQLITE_PRIVATE void sqlite3ExprListSetName(Parse*,ExprList*,Token*,int); |
| 17452 | | -SQLITE_PRIVATE void sqlite3ExprListSetSpan(Parse*,ExprList*,ExprSpan*); |
| 17475 | +SQLITE_PRIVATE void sqlite3ExprListSetSpan(Parse*,ExprList*,const char*,const char*); |
| 17453 | 17476 | SQLITE_PRIVATE void sqlite3ExprListDelete(sqlite3*, ExprList*); |
| 17454 | 17477 | SQLITE_PRIVATE u32 sqlite3ExprListFlags(const ExprList*); |
| 17455 | 17478 | SQLITE_PRIVATE int sqlite3Init(sqlite3*, char**); |
| 17456 | 17479 | SQLITE_PRIVATE int sqlite3InitCallback(void*, int, char**, char**); |
| 17457 | 17480 | SQLITE_PRIVATE void sqlite3Pragma(Parse*,Token*,Token*,Token*,int); |
| | @@ -17477,11 +17500,11 @@ |
| 17477 | 17500 | #endif |
| 17478 | 17501 | SQLITE_PRIVATE void sqlite3AddColumn(Parse*,Token*,Token*); |
| 17479 | 17502 | SQLITE_PRIVATE void sqlite3AddNotNull(Parse*, int); |
| 17480 | 17503 | SQLITE_PRIVATE void sqlite3AddPrimaryKey(Parse*, ExprList*, int, int, int); |
| 17481 | 17504 | SQLITE_PRIVATE void sqlite3AddCheckConstraint(Parse*, Expr*); |
| 17482 | | -SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,ExprSpan*); |
| 17505 | +SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,Expr*,const char*,const char*); |
| 17483 | 17506 | SQLITE_PRIVATE void sqlite3AddCollateType(Parse*, Token*); |
| 17484 | 17507 | SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u8,Select*); |
| 17485 | 17508 | SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*, |
| 17486 | 17509 | sqlite3_vfs**,char**,char **); |
| 17487 | 17510 | SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3*,const char*); |
| | @@ -17698,15 +17721,18 @@ |
| 17698 | 17721 | SQLITE_PRIVATE void sqlite3CodeRowTrigger(Parse*, Trigger *, int, ExprList*, int, Table *, |
| 17699 | 17722 | int, int, int); |
| 17700 | 17723 | SQLITE_PRIVATE void sqlite3CodeRowTriggerDirect(Parse *, Trigger *, Table *, int, int, int); |
| 17701 | 17724 | void sqliteViewTriggers(Parse*, Table*, Expr*, int, ExprList*); |
| 17702 | 17725 | SQLITE_PRIVATE void sqlite3DeleteTriggerStep(sqlite3*, TriggerStep*); |
| 17703 | | -SQLITE_PRIVATE TriggerStep *sqlite3TriggerSelectStep(sqlite3*,Select*); |
| 17726 | +SQLITE_PRIVATE TriggerStep *sqlite3TriggerSelectStep(sqlite3*,Select*, |
| 17727 | + const char*,const char*); |
| 17704 | 17728 | SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(sqlite3*,Token*, IdList*, |
| 17705 | | - Select*,u8); |
| 17706 | | -SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(sqlite3*,Token*,ExprList*, Expr*, u8); |
| 17707 | | -SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep(sqlite3*,Token*, Expr*); |
| 17729 | + Select*,u8,const char*,const char*); |
| 17730 | +SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(sqlite3*,Token*,ExprList*, Expr*, u8, |
| 17731 | + const char*,const char*); |
| 17732 | +SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep(sqlite3*,Token*, Expr*, |
| 17733 | + const char*,const char*); |
| 17708 | 17734 | SQLITE_PRIVATE void sqlite3DeleteTrigger(sqlite3*, Trigger*); |
| 17709 | 17735 | SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*); |
| 17710 | 17736 | SQLITE_PRIVATE u32 sqlite3TriggerColmask(Parse*,Trigger*,ExprList*,int,int,Table*,int); |
| 17711 | 17737 | # define sqlite3ParseToplevel(p) ((p)->pToplevel ? (p)->pToplevel : (p)) |
| 17712 | 17738 | # define sqlite3IsToplevel(p) ((p)->pToplevel==0) |
| | @@ -18132,10 +18158,13 @@ |
| 18132 | 18158 | #endif |
| 18133 | 18159 | |
| 18134 | 18160 | #ifdef SQLITE_DEBUG |
| 18135 | 18161 | SQLITE_PRIVATE void sqlite3ParserTrace(FILE*, char *); |
| 18136 | 18162 | #endif |
| 18163 | +#if defined(YYCOVERAGE) |
| 18164 | +SQLITE_PRIVATE int sqlite3ParserCoverage(FILE*); |
| 18165 | +#endif |
| 18137 | 18166 | |
| 18138 | 18167 | /* |
| 18139 | 18168 | ** If the SQLITE_ENABLE IOTRACE exists then the global variable |
| 18140 | 18169 | ** sqlite3IoTrace is a pointer to a printf-like routine used to |
| 18141 | 18170 | ** print I/O tracing messages. |
| | @@ -25667,10 +25696,23 @@ |
| 25667 | 25696 | memcpy(zNew, z, (size_t)n); |
| 25668 | 25697 | zNew[n] = 0; |
| 25669 | 25698 | } |
| 25670 | 25699 | return zNew; |
| 25671 | 25700 | } |
| 25701 | + |
| 25702 | +/* |
| 25703 | +** The text between zStart and zEnd represents a phrase within a larger |
| 25704 | +** SQL statement. Make a copy of this phrase in space obtained form |
| 25705 | +** sqlite3DbMalloc(). Omit leading and trailing whitespace. |
| 25706 | +*/ |
| 25707 | +SQLITE_PRIVATE char *sqlite3DbSpanDup(sqlite3 *db, const char *zStart, const char *zEnd){ |
| 25708 | + int n; |
| 25709 | + while( sqlite3Isspace(zStart[0]) ) zStart++; |
| 25710 | + n = (int)(zEnd - zStart); |
| 25711 | + while( n>0 && sqlite3Isspace(zStart[n-1]) ) n--; |
| 25712 | + return sqlite3DbStrNDup(db, zStart, n); |
| 25713 | +} |
| 25672 | 25714 | |
| 25673 | 25715 | /* |
| 25674 | 25716 | ** Free any prior content in *pz and replace it with a copy of zNew. |
| 25675 | 25717 | */ |
| 25676 | 25718 | SQLITE_PRIVATE void sqlite3SetString(char **pz, sqlite3 *db, const char *zNew){ |
| | @@ -27373,16 +27415,24 @@ |
| 27373 | 27415 | }else{ |
| 27374 | 27416 | int i; |
| 27375 | 27417 | sqlite3TreeViewLine(pView, "%s", zLabel); |
| 27376 | 27418 | for(i=0; i<pList->nExpr; i++){ |
| 27377 | 27419 | int j = pList->a[i].u.x.iOrderByCol; |
| 27378 | | - if( j ){ |
| 27420 | + char *zName = pList->a[i].zName; |
| 27421 | + if( j || zName ){ |
| 27379 | 27422 | sqlite3TreeViewPush(pView, 0); |
| 27423 | + } |
| 27424 | + if( zName ){ |
| 27425 | + sqlite3TreeViewLine(pView, "AS %s", zName); |
| 27426 | + } |
| 27427 | + if( j ){ |
| 27380 | 27428 | sqlite3TreeViewLine(pView, "iOrderByCol=%d", j); |
| 27381 | 27429 | } |
| 27382 | 27430 | sqlite3TreeViewExpr(pView, pList->a[i].pExpr, i<pList->nExpr-1); |
| 27383 | | - if( j ) sqlite3TreeViewPop(pView); |
| 27431 | + if( j || zName ){ |
| 27432 | + sqlite3TreeViewPop(pView); |
| 27433 | + } |
| 27384 | 27434 | } |
| 27385 | 27435 | } |
| 27386 | 27436 | } |
| 27387 | 27437 | SQLITE_PRIVATE void sqlite3TreeViewExprList( |
| 27388 | 27438 | TreeView *pView, |
| | @@ -28667,10 +28717,28 @@ |
| 28667 | 28717 | a = (unsigned char *)zLeft; |
| 28668 | 28718 | b = (unsigned char *)zRight; |
| 28669 | 28719 | while( N-- > 0 && *a!=0 && UpperToLower[*a]==UpperToLower[*b]){ a++; b++; } |
| 28670 | 28720 | return N<0 ? 0 : UpperToLower[*a] - UpperToLower[*b]; |
| 28671 | 28721 | } |
| 28722 | + |
| 28723 | +/* |
| 28724 | +** Compute 10 to the E-th power. Examples: E==1 results in 10. |
| 28725 | +** E==2 results in 100. E==50 results in 1.0e50. |
| 28726 | +** |
| 28727 | +** This routine only works for values of E between 1 and 341. |
| 28728 | +*/ |
| 28729 | +static LONGDOUBLE_TYPE sqlite3Pow10(int E){ |
| 28730 | + LONGDOUBLE_TYPE x = 10.0; |
| 28731 | + LONGDOUBLE_TYPE r = 1.0; |
| 28732 | + while(1){ |
| 28733 | + if( E & 1 ) r *= x; |
| 28734 | + E >>= 1; |
| 28735 | + if( E==0 ) break; |
| 28736 | + x *= x; |
| 28737 | + } |
| 28738 | + return r; |
| 28739 | +} |
| 28672 | 28740 | |
| 28673 | 28741 | /* |
| 28674 | 28742 | ** The string z[] is an text representation of a real number. |
| 28675 | 28743 | ** Convert this string to a double and write it into *pResult. |
| 28676 | 28744 | ** |
| | @@ -28823,15 +28891,14 @@ |
| 28823 | 28891 | s = sign<0 ? -s : s; |
| 28824 | 28892 | |
| 28825 | 28893 | if( e==0 ){ /*OPTIMIZATION-IF-TRUE*/ |
| 28826 | 28894 | result = (double)s; |
| 28827 | 28895 | }else{ |
| 28828 | | - LONGDOUBLE_TYPE scale = 1.0; |
| 28829 | 28896 | /* attempt to handle extremely small/large numbers better */ |
| 28830 | 28897 | if( e>307 ){ /*OPTIMIZATION-IF-TRUE*/ |
| 28831 | 28898 | if( e<342 ){ /*OPTIMIZATION-IF-TRUE*/ |
| 28832 | | - while( e%308 ) { scale *= 1.0e+1; e -= 1; } |
| 28899 | + LONGDOUBLE_TYPE scale = sqlite3Pow10(e-308); |
| 28833 | 28900 | if( esign<0 ){ |
| 28834 | 28901 | result = s / scale; |
| 28835 | 28902 | result /= 1.0e+308; |
| 28836 | 28903 | }else{ |
| 28837 | 28904 | result = s * scale; |
| | @@ -28847,14 +28914,11 @@ |
| 28847 | 28914 | result = 1e308*1e308*s; /* Infinity */ |
| 28848 | 28915 | #endif |
| 28849 | 28916 | } |
| 28850 | 28917 | } |
| 28851 | 28918 | }else{ |
| 28852 | | - /* 1.0e+22 is the largest power of 10 than can be |
| 28853 | | - ** represented exactly. */ |
| 28854 | | - while( e%22 ) { scale *= 1.0e+1; e -= 1; } |
| 28855 | | - while( e>0 ) { scale *= 1.0e+22; e -= 22; } |
| 28919 | + LONGDOUBLE_TYPE scale = sqlite3Pow10(e); |
| 28856 | 28920 | if( esign<0 ){ |
| 28857 | 28921 | result = s / scale; |
| 28858 | 28922 | }else{ |
| 28859 | 28923 | result = s * scale; |
| 28860 | 28924 | } |
| | @@ -30308,82 +30372,84 @@ |
| 30308 | 30372 | /* 91 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"), |
| 30309 | 30373 | /* 92 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"), |
| 30310 | 30374 | /* 93 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"), |
| 30311 | 30375 | /* 94 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"), |
| 30312 | 30376 | /* 95 */ "BitNot" OpHelp("r[P1]= ~r[P1]"), |
| 30313 | | - /* 96 */ "Column" OpHelp("r[P3]=PX"), |
| 30377 | + /* 96 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"), |
| 30314 | 30378 | /* 97 */ "String8" OpHelp("r[P2]='P4'"), |
| 30315 | | - /* 98 */ "Affinity" OpHelp("affinity(r[P1@P2])"), |
| 30316 | | - /* 99 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"), |
| 30317 | | - /* 100 */ "Count" OpHelp("r[P2]=count()"), |
| 30318 | | - /* 101 */ "ReadCookie" OpHelp(""), |
| 30319 | | - /* 102 */ "SetCookie" OpHelp(""), |
| 30320 | | - /* 103 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"), |
| 30321 | | - /* 104 */ "OpenRead" OpHelp("root=P2 iDb=P3"), |
| 30322 | | - /* 105 */ "OpenWrite" OpHelp("root=P2 iDb=P3"), |
| 30323 | | - /* 106 */ "OpenDup" OpHelp(""), |
| 30324 | | - /* 107 */ "OpenAutoindex" OpHelp("nColumn=P2"), |
| 30325 | | - /* 108 */ "OpenEphemeral" OpHelp("nColumn=P2"), |
| 30326 | | - /* 109 */ "SorterOpen" OpHelp(""), |
| 30327 | | - /* 110 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"), |
| 30328 | | - /* 111 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"), |
| 30329 | | - /* 112 */ "Close" OpHelp(""), |
| 30330 | | - /* 113 */ "ColumnsUsed" OpHelp(""), |
| 30331 | | - /* 114 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"), |
| 30332 | | - /* 115 */ "NewRowid" OpHelp("r[P2]=rowid"), |
| 30333 | | - /* 116 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"), |
| 30334 | | - /* 117 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"), |
| 30335 | | - /* 118 */ "Delete" OpHelp(""), |
| 30336 | | - /* 119 */ "ResetCount" OpHelp(""), |
| 30337 | | - /* 120 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"), |
| 30338 | | - /* 121 */ "SorterData" OpHelp("r[P2]=data"), |
| 30339 | | - /* 122 */ "RowData" OpHelp("r[P2]=data"), |
| 30340 | | - /* 123 */ "Rowid" OpHelp("r[P2]=rowid"), |
| 30341 | | - /* 124 */ "NullRow" OpHelp(""), |
| 30342 | | - /* 125 */ "SeekEnd" OpHelp(""), |
| 30343 | | - /* 126 */ "SorterInsert" OpHelp("key=r[P2]"), |
| 30344 | | - /* 127 */ "IdxInsert" OpHelp("key=r[P2]"), |
| 30345 | | - /* 128 */ "IdxDelete" OpHelp("key=r[P2@P3]"), |
| 30346 | | - /* 129 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"), |
| 30347 | | - /* 130 */ "IdxRowid" OpHelp("r[P2]=rowid"), |
| 30348 | | - /* 131 */ "Destroy" OpHelp(""), |
| 30379 | + /* 98 */ "Column" OpHelp("r[P3]=PX"), |
| 30380 | + /* 99 */ "Affinity" OpHelp("affinity(r[P1@P2])"), |
| 30381 | + /* 100 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"), |
| 30382 | + /* 101 */ "Count" OpHelp("r[P2]=count()"), |
| 30383 | + /* 102 */ "ReadCookie" OpHelp(""), |
| 30384 | + /* 103 */ "SetCookie" OpHelp(""), |
| 30385 | + /* 104 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"), |
| 30386 | + /* 105 */ "OpenRead" OpHelp("root=P2 iDb=P3"), |
| 30387 | + /* 106 */ "OpenWrite" OpHelp("root=P2 iDb=P3"), |
| 30388 | + /* 107 */ "OpenDup" OpHelp(""), |
| 30389 | + /* 108 */ "OpenAutoindex" OpHelp("nColumn=P2"), |
| 30390 | + /* 109 */ "OpenEphemeral" OpHelp("nColumn=P2"), |
| 30391 | + /* 110 */ "SorterOpen" OpHelp(""), |
| 30392 | + /* 111 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"), |
| 30393 | + /* 112 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"), |
| 30394 | + /* 113 */ "Close" OpHelp(""), |
| 30395 | + /* 114 */ "ColumnsUsed" OpHelp(""), |
| 30396 | + /* 115 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"), |
| 30397 | + /* 116 */ "NewRowid" OpHelp("r[P2]=rowid"), |
| 30398 | + /* 117 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"), |
| 30399 | + /* 118 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"), |
| 30400 | + /* 119 */ "Delete" OpHelp(""), |
| 30401 | + /* 120 */ "ResetCount" OpHelp(""), |
| 30402 | + /* 121 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"), |
| 30403 | + /* 122 */ "SorterData" OpHelp("r[P2]=data"), |
| 30404 | + /* 123 */ "RowData" OpHelp("r[P2]=data"), |
| 30405 | + /* 124 */ "Rowid" OpHelp("r[P2]=rowid"), |
| 30406 | + /* 125 */ "NullRow" OpHelp(""), |
| 30407 | + /* 126 */ "SeekEnd" OpHelp(""), |
| 30408 | + /* 127 */ "SorterInsert" OpHelp("key=r[P2]"), |
| 30409 | + /* 128 */ "IdxInsert" OpHelp("key=r[P2]"), |
| 30410 | + /* 129 */ "IdxDelete" OpHelp("key=r[P2@P3]"), |
| 30411 | + /* 130 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"), |
| 30412 | + /* 131 */ "IdxRowid" OpHelp("r[P2]=rowid"), |
| 30349 | 30413 | /* 132 */ "Real" OpHelp("r[P2]=P4"), |
| 30350 | | - /* 133 */ "Clear" OpHelp(""), |
| 30351 | | - /* 134 */ "ResetSorter" OpHelp(""), |
| 30352 | | - /* 135 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"), |
| 30353 | | - /* 136 */ "SqlExec" OpHelp(""), |
| 30354 | | - /* 137 */ "ParseSchema" OpHelp(""), |
| 30355 | | - /* 138 */ "LoadAnalysis" OpHelp(""), |
| 30356 | | - /* 139 */ "DropTable" OpHelp(""), |
| 30357 | | - /* 140 */ "DropIndex" OpHelp(""), |
| 30358 | | - /* 141 */ "DropTrigger" OpHelp(""), |
| 30359 | | - /* 142 */ "IntegrityCk" OpHelp(""), |
| 30360 | | - /* 143 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"), |
| 30361 | | - /* 144 */ "Param" OpHelp(""), |
| 30362 | | - /* 145 */ "FkCounter" OpHelp("fkctr[P1]+=P2"), |
| 30363 | | - /* 146 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"), |
| 30364 | | - /* 147 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"), |
| 30365 | | - /* 148 */ "AggStep0" OpHelp("accum=r[P3] step(r[P2@P5])"), |
| 30366 | | - /* 149 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"), |
| 30367 | | - /* 150 */ "AggFinal" OpHelp("accum=r[P1] N=P2"), |
| 30368 | | - /* 151 */ "Expire" OpHelp(""), |
| 30369 | | - /* 152 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"), |
| 30370 | | - /* 153 */ "VBegin" OpHelp(""), |
| 30371 | | - /* 154 */ "VCreate" OpHelp(""), |
| 30372 | | - /* 155 */ "VDestroy" OpHelp(""), |
| 30373 | | - /* 156 */ "VOpen" OpHelp(""), |
| 30374 | | - /* 157 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"), |
| 30375 | | - /* 158 */ "VRename" OpHelp(""), |
| 30376 | | - /* 159 */ "Pagecount" OpHelp(""), |
| 30377 | | - /* 160 */ "MaxPgcnt" OpHelp(""), |
| 30378 | | - /* 161 */ "PureFunc0" OpHelp(""), |
| 30379 | | - /* 162 */ "Function0" OpHelp("r[P3]=func(r[P2@P5])"), |
| 30380 | | - /* 163 */ "PureFunc" OpHelp(""), |
| 30381 | | - /* 164 */ "Function" OpHelp("r[P3]=func(r[P2@P5])"), |
| 30382 | | - /* 165 */ "CursorHint" OpHelp(""), |
| 30383 | | - /* 166 */ "Noop" OpHelp(""), |
| 30384 | | - /* 167 */ "Explain" OpHelp(""), |
| 30414 | + /* 133 */ "Destroy" OpHelp(""), |
| 30415 | + /* 134 */ "Clear" OpHelp(""), |
| 30416 | + /* 135 */ "ResetSorter" OpHelp(""), |
| 30417 | + /* 136 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"), |
| 30418 | + /* 137 */ "SqlExec" OpHelp(""), |
| 30419 | + /* 138 */ "ParseSchema" OpHelp(""), |
| 30420 | + /* 139 */ "LoadAnalysis" OpHelp(""), |
| 30421 | + /* 140 */ "DropTable" OpHelp(""), |
| 30422 | + /* 141 */ "DropIndex" OpHelp(""), |
| 30423 | + /* 142 */ "DropTrigger" OpHelp(""), |
| 30424 | + /* 143 */ "IntegrityCk" OpHelp(""), |
| 30425 | + /* 144 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"), |
| 30426 | + /* 145 */ "Param" OpHelp(""), |
| 30427 | + /* 146 */ "FkCounter" OpHelp("fkctr[P1]+=P2"), |
| 30428 | + /* 147 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"), |
| 30429 | + /* 148 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"), |
| 30430 | + /* 149 */ "AggStep0" OpHelp("accum=r[P3] step(r[P2@P5])"), |
| 30431 | + /* 150 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"), |
| 30432 | + /* 151 */ "AggFinal" OpHelp("accum=r[P1] N=P2"), |
| 30433 | + /* 152 */ "Expire" OpHelp(""), |
| 30434 | + /* 153 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"), |
| 30435 | + /* 154 */ "VBegin" OpHelp(""), |
| 30436 | + /* 155 */ "VCreate" OpHelp(""), |
| 30437 | + /* 156 */ "VDestroy" OpHelp(""), |
| 30438 | + /* 157 */ "VOpen" OpHelp(""), |
| 30439 | + /* 158 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"), |
| 30440 | + /* 159 */ "VRename" OpHelp(""), |
| 30441 | + /* 160 */ "Pagecount" OpHelp(""), |
| 30442 | + /* 161 */ "MaxPgcnt" OpHelp(""), |
| 30443 | + /* 162 */ "PureFunc0" OpHelp(""), |
| 30444 | + /* 163 */ "Function0" OpHelp("r[P3]=func(r[P2@P5])"), |
| 30445 | + /* 164 */ "PureFunc" OpHelp(""), |
| 30446 | + /* 165 */ "Function" OpHelp("r[P3]=func(r[P2@P5])"), |
| 30447 | + /* 166 */ "Trace" OpHelp(""), |
| 30448 | + /* 167 */ "CursorHint" OpHelp(""), |
| 30449 | + /* 168 */ "Noop" OpHelp(""), |
| 30450 | + /* 169 */ "Explain" OpHelp(""), |
| 30385 | 30451 | }; |
| 30386 | 30452 | return azName[i]; |
| 30387 | 30453 | } |
| 30388 | 30454 | #endif |
| 30389 | 30455 | |
| | @@ -53382,11 +53448,11 @@ |
| 53382 | 53448 | if( pPager->eState>PAGER_READER || pPager->tempFile ){ |
| 53383 | 53449 | pPg = sqlite3PagerLookup(pPager, pgno); |
| 53384 | 53450 | } |
| 53385 | 53451 | if( pPg==0 ){ |
| 53386 | 53452 | rc = pagerAcquireMapPage(pPager, pgno, pData, &pPg); |
| 53387 | | - }else{ |
| 53453 | + }else{ |
| 53388 | 53454 | sqlite3OsUnfetch(pPager->fd, (i64)(pgno-1)*pPager->pageSize, pData); |
| 53389 | 53455 | } |
| 53390 | 53456 | if( pPg ){ |
| 53391 | 53457 | assert( rc==SQLITE_OK ); |
| 53392 | 53458 | *ppPage = pPg; |
| | @@ -64672,10 +64738,24 @@ |
| 64672 | 64738 | assert( pCur->curIntKey ); |
| 64673 | 64739 | getCellInfo(pCur); |
| 64674 | 64740 | return pCur->info.nKey; |
| 64675 | 64741 | } |
| 64676 | 64742 | |
| 64743 | +#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC |
| 64744 | +/* |
| 64745 | +** Return the offset into the database file for the start of the |
| 64746 | +** payload to which the cursor is pointing. |
| 64747 | +*/ |
| 64748 | +SQLITE_PRIVATE i64 sqlite3BtreeOffset(BtCursor *pCur){ |
| 64749 | + assert( cursorHoldsMutex(pCur) ); |
| 64750 | + assert( pCur->eState==CURSOR_VALID ); |
| 64751 | + getCellInfo(pCur); |
| 64752 | + return (i64)pCur->pBt->pageSize*((i64)pCur->pPage->pgno - 1) + |
| 64753 | + (i64)(pCur->info.pPayload - pCur->pPage->aData); |
| 64754 | +} |
| 64755 | +#endif /* SQLITE_ENABLE_OFFSET_SQL_FUNC */ |
| 64756 | + |
| 64677 | 64757 | /* |
| 64678 | 64758 | ** Return the number of bytes of payload for the entry that pCur is |
| 64679 | 64759 | ** currently pointing to. For table btrees, this will be the amount |
| 64680 | 64760 | ** of data. For index btrees, this will be the size of the key. |
| 64681 | 64761 | ** |
| | @@ -72430,11 +72510,14 @@ |
| 72430 | 72510 | |
| 72431 | 72511 | *ppVal = pVal; |
| 72432 | 72512 | return rc; |
| 72433 | 72513 | |
| 72434 | 72514 | no_mem: |
| 72435 | | - sqlite3OomFault(db); |
| 72515 | +#ifdef SQLITE_ENABLE_STAT3_OR_STAT4 |
| 72516 | + if( pCtx==0 || pCtx->pParse->nErr==0 ) |
| 72517 | +#endif |
| 72518 | + sqlite3OomFault(db); |
| 72436 | 72519 | sqlite3DbFree(db, zVal); |
| 72437 | 72520 | assert( *ppVal==0 ); |
| 72438 | 72521 | #ifdef SQLITE_ENABLE_STAT3_OR_STAT4 |
| 72439 | 72522 | if( pCtx==0 ) sqlite3ValueFree(pVal); |
| 72440 | 72523 | #else |
| | @@ -74416,10 +74499,12 @@ |
| 74416 | 74499 | Mem *pSub = 0; /* Memory cell hold array of subprogs */ |
| 74417 | 74500 | sqlite3 *db = p->db; /* The database connection */ |
| 74418 | 74501 | int i; /* Loop counter */ |
| 74419 | 74502 | int rc = SQLITE_OK; /* Return code */ |
| 74420 | 74503 | Mem *pMem = &p->aMem[1]; /* First Mem of result set */ |
| 74504 | + int bListSubprogs = (p->explain==1 || (db->flags & SQLITE_TriggerEQP)!=0); |
| 74505 | + Op *pOp = 0; |
| 74421 | 74506 | |
| 74422 | 74507 | assert( p->explain ); |
| 74423 | 74508 | assert( p->magic==VDBE_MAGIC_RUN ); |
| 74424 | 74509 | assert( p->rc==SQLITE_OK || p->rc==SQLITE_BUSY || p->rc==SQLITE_NOMEM ); |
| 74425 | 74510 | |
| | @@ -74428,11 +74513,11 @@ |
| 74428 | 74513 | ** sqlite3_column_text16(), causing a translation to UTF-16 encoding. |
| 74429 | 74514 | */ |
| 74430 | 74515 | releaseMemArray(pMem, 8); |
| 74431 | 74516 | p->pResultSet = 0; |
| 74432 | 74517 | |
| 74433 | | - if( p->rc==SQLITE_NOMEM_BKPT ){ |
| 74518 | + if( p->rc==SQLITE_NOMEM ){ |
| 74434 | 74519 | /* This happens if a malloc() inside a call to sqlite3_column_text() or |
| 74435 | 74520 | ** sqlite3_column_text16() failed. */ |
| 74436 | 74521 | sqlite3OomFault(db); |
| 74437 | 74522 | return SQLITE_ERROR; |
| 74438 | 74523 | } |
| | @@ -74443,11 +74528,11 @@ |
| 74443 | 74528 | ** the sum of the number of rows in all trigger subprograms encountered |
| 74444 | 74529 | ** so far. The nRow value will increase as new trigger subprograms are |
| 74445 | 74530 | ** encountered, but p->pc will eventually catch up to nRow. |
| 74446 | 74531 | */ |
| 74447 | 74532 | nRow = p->nOp; |
| 74448 | | - if( p->explain==1 ){ |
| 74533 | + if( bListSubprogs ){ |
| 74449 | 74534 | /* The first 8 memory cells are used for the result set. So we will |
| 74450 | 74535 | ** commandeer the 9th cell to use as storage for an array of pointers |
| 74451 | 74536 | ** to trigger subprograms. The VDBE is guaranteed to have at least 9 |
| 74452 | 74537 | ** cells. */ |
| 74453 | 74538 | assert( p->nMem>9 ); |
| | @@ -74463,21 +74548,15 @@ |
| 74463 | 74548 | } |
| 74464 | 74549 | } |
| 74465 | 74550 | |
| 74466 | 74551 | do{ |
| 74467 | 74552 | i = p->pc++; |
| 74468 | | - }while( i<nRow && p->explain==2 && p->aOp[i].opcode!=OP_Explain ); |
| 74469 | | - if( i>=nRow ){ |
| 74470 | | - p->rc = SQLITE_OK; |
| 74471 | | - rc = SQLITE_DONE; |
| 74472 | | - }else if( db->u1.isInterrupted ){ |
| 74473 | | - p->rc = SQLITE_INTERRUPT; |
| 74474 | | - rc = SQLITE_ERROR; |
| 74475 | | - sqlite3VdbeError(p, sqlite3ErrStr(p->rc)); |
| 74476 | | - }else{ |
| 74477 | | - char *zP4; |
| 74478 | | - Op *pOp; |
| 74553 | + if( i>=nRow ){ |
| 74554 | + p->rc = SQLITE_OK; |
| 74555 | + rc = SQLITE_DONE; |
| 74556 | + break; |
| 74557 | + } |
| 74479 | 74558 | if( i<p->nOp ){ |
| 74480 | 74559 | /* The output line number is small enough that we are still in the |
| 74481 | 74560 | ** main program. */ |
| 74482 | 74561 | pOp = &p->aOp[i]; |
| 74483 | 74562 | }else{ |
| | @@ -74488,98 +74567,114 @@ |
| 74488 | 74567 | for(j=0; i>=apSub[j]->nOp; j++){ |
| 74489 | 74568 | i -= apSub[j]->nOp; |
| 74490 | 74569 | } |
| 74491 | 74570 | pOp = &apSub[j]->aOp[i]; |
| 74492 | 74571 | } |
| 74493 | | - if( p->explain==1 ){ |
| 74494 | | - pMem->flags = MEM_Int; |
| 74495 | | - pMem->u.i = i; /* Program counter */ |
| 74496 | | - pMem++; |
| 74497 | | - |
| 74498 | | - pMem->flags = MEM_Static|MEM_Str|MEM_Term; |
| 74499 | | - pMem->z = (char*)sqlite3OpcodeName(pOp->opcode); /* Opcode */ |
| 74500 | | - assert( pMem->z!=0 ); |
| 74501 | | - pMem->n = sqlite3Strlen30(pMem->z); |
| 74502 | | - pMem->enc = SQLITE_UTF8; |
| 74503 | | - pMem++; |
| 74504 | | - |
| 74505 | | - /* When an OP_Program opcode is encounter (the only opcode that has |
| 74506 | | - ** a P4_SUBPROGRAM argument), expand the size of the array of subprograms |
| 74507 | | - ** kept in p->aMem[9].z to hold the new program - assuming this subprogram |
| 74508 | | - ** has not already been seen. |
| 74509 | | - */ |
| 74510 | | - if( pOp->p4type==P4_SUBPROGRAM ){ |
| 74511 | | - int nByte = (nSub+1)*sizeof(SubProgram*); |
| 74512 | | - int j; |
| 74513 | | - for(j=0; j<nSub; j++){ |
| 74514 | | - if( apSub[j]==pOp->p4.pProgram ) break; |
| 74515 | | - } |
| 74516 | | - if( j==nSub && SQLITE_OK==sqlite3VdbeMemGrow(pSub, nByte, nSub!=0) ){ |
| 74517 | | - apSub = (SubProgram **)pSub->z; |
| 74518 | | - apSub[nSub++] = pOp->p4.pProgram; |
| 74519 | | - pSub->flags |= MEM_Blob; |
| 74520 | | - pSub->n = nSub*sizeof(SubProgram*); |
| 74521 | | - } |
| 74522 | | - } |
| 74523 | | - } |
| 74524 | | - |
| 74525 | | - pMem->flags = MEM_Int; |
| 74526 | | - pMem->u.i = pOp->p1; /* P1 */ |
| 74527 | | - pMem++; |
| 74528 | | - |
| 74529 | | - pMem->flags = MEM_Int; |
| 74530 | | - pMem->u.i = pOp->p2; /* P2 */ |
| 74531 | | - pMem++; |
| 74532 | | - |
| 74533 | | - pMem->flags = MEM_Int; |
| 74534 | | - pMem->u.i = pOp->p3; /* P3 */ |
| 74535 | | - pMem++; |
| 74536 | | - |
| 74537 | | - if( sqlite3VdbeMemClearAndResize(pMem, 100) ){ /* P4 */ |
| 74538 | | - assert( p->db->mallocFailed ); |
| 74539 | | - return SQLITE_ERROR; |
| 74540 | | - } |
| 74541 | | - pMem->flags = MEM_Str|MEM_Term; |
| 74542 | | - zP4 = displayP4(pOp, pMem->z, pMem->szMalloc); |
| 74543 | | - if( zP4!=pMem->z ){ |
| 74544 | | - pMem->n = 0; |
| 74545 | | - sqlite3VdbeMemSetStr(pMem, zP4, -1, SQLITE_UTF8, 0); |
| 74546 | | - }else{ |
| 74547 | | - assert( pMem->z!=0 ); |
| 74548 | | - pMem->n = sqlite3Strlen30(pMem->z); |
| 74549 | | - pMem->enc = SQLITE_UTF8; |
| 74550 | | - } |
| 74551 | | - pMem++; |
| 74552 | | - |
| 74553 | | - if( p->explain==1 ){ |
| 74554 | | - if( sqlite3VdbeMemClearAndResize(pMem, 4) ){ |
| 74555 | | - assert( p->db->mallocFailed ); |
| 74556 | | - return SQLITE_ERROR; |
| 74557 | | - } |
| 74558 | | - pMem->flags = MEM_Str|MEM_Term; |
| 74559 | | - pMem->n = 2; |
| 74560 | | - sqlite3_snprintf(3, pMem->z, "%.2x", pOp->p5); /* P5 */ |
| 74561 | | - pMem->enc = SQLITE_UTF8; |
| 74562 | | - pMem++; |
| 74563 | | - |
| 74564 | | -#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS |
| 74565 | | - if( sqlite3VdbeMemClearAndResize(pMem, 500) ){ |
| 74566 | | - assert( p->db->mallocFailed ); |
| 74567 | | - return SQLITE_ERROR; |
| 74568 | | - } |
| 74569 | | - pMem->flags = MEM_Str|MEM_Term; |
| 74570 | | - pMem->n = displayComment(pOp, zP4, pMem->z, 500); |
| 74571 | | - pMem->enc = SQLITE_UTF8; |
| 74572 | | -#else |
| 74573 | | - pMem->flags = MEM_Null; /* Comment */ |
| 74574 | | -#endif |
| 74575 | | - } |
| 74576 | | - |
| 74577 | | - p->nResColumn = 8 - 4*(p->explain-1); |
| 74578 | | - p->pResultSet = &p->aMem[1]; |
| 74579 | | - p->rc = SQLITE_OK; |
| 74580 | | - rc = SQLITE_ROW; |
| 74572 | + |
| 74573 | + /* When an OP_Program opcode is encounter (the only opcode that has |
| 74574 | + ** a P4_SUBPROGRAM argument), expand the size of the array of subprograms |
| 74575 | + ** kept in p->aMem[9].z to hold the new program - assuming this subprogram |
| 74576 | + ** has not already been seen. |
| 74577 | + */ |
| 74578 | + if( bListSubprogs && pOp->p4type==P4_SUBPROGRAM ){ |
| 74579 | + int nByte = (nSub+1)*sizeof(SubProgram*); |
| 74580 | + int j; |
| 74581 | + for(j=0; j<nSub; j++){ |
| 74582 | + if( apSub[j]==pOp->p4.pProgram ) break; |
| 74583 | + } |
| 74584 | + if( j==nSub ){ |
| 74585 | + p->rc = sqlite3VdbeMemGrow(pSub, nByte, nSub!=0); |
| 74586 | + if( p->rc!=SQLITE_OK ){ |
| 74587 | + rc = SQLITE_ERROR; |
| 74588 | + break; |
| 74589 | + } |
| 74590 | + apSub = (SubProgram **)pSub->z; |
| 74591 | + apSub[nSub++] = pOp->p4.pProgram; |
| 74592 | + pSub->flags |= MEM_Blob; |
| 74593 | + pSub->n = nSub*sizeof(SubProgram*); |
| 74594 | + nRow += pOp->p4.pProgram->nOp; |
| 74595 | + } |
| 74596 | + } |
| 74597 | + }while( p->explain==2 && pOp->opcode!=OP_Explain ); |
| 74598 | + |
| 74599 | + if( rc==SQLITE_OK ){ |
| 74600 | + if( db->u1.isInterrupted ){ |
| 74601 | + p->rc = SQLITE_INTERRUPT; |
| 74602 | + rc = SQLITE_ERROR; |
| 74603 | + sqlite3VdbeError(p, sqlite3ErrStr(p->rc)); |
| 74604 | + }else{ |
| 74605 | + char *zP4; |
| 74606 | + if( p->explain==1 ){ |
| 74607 | + pMem->flags = MEM_Int; |
| 74608 | + pMem->u.i = i; /* Program counter */ |
| 74609 | + pMem++; |
| 74610 | + |
| 74611 | + pMem->flags = MEM_Static|MEM_Str|MEM_Term; |
| 74612 | + pMem->z = (char*)sqlite3OpcodeName(pOp->opcode); /* Opcode */ |
| 74613 | + assert( pMem->z!=0 ); |
| 74614 | + pMem->n = sqlite3Strlen30(pMem->z); |
| 74615 | + pMem->enc = SQLITE_UTF8; |
| 74616 | + pMem++; |
| 74617 | + } |
| 74618 | + |
| 74619 | + pMem->flags = MEM_Int; |
| 74620 | + pMem->u.i = pOp->p1; /* P1 */ |
| 74621 | + pMem++; |
| 74622 | + |
| 74623 | + pMem->flags = MEM_Int; |
| 74624 | + pMem->u.i = pOp->p2; /* P2 */ |
| 74625 | + pMem++; |
| 74626 | + |
| 74627 | + pMem->flags = MEM_Int; |
| 74628 | + pMem->u.i = pOp->p3; /* P3 */ |
| 74629 | + pMem++; |
| 74630 | + |
| 74631 | + if( sqlite3VdbeMemClearAndResize(pMem, 100) ){ /* P4 */ |
| 74632 | + assert( p->db->mallocFailed ); |
| 74633 | + return SQLITE_ERROR; |
| 74634 | + } |
| 74635 | + pMem->flags = MEM_Str|MEM_Term; |
| 74636 | + zP4 = displayP4(pOp, pMem->z, pMem->szMalloc); |
| 74637 | + if( zP4!=pMem->z ){ |
| 74638 | + pMem->n = 0; |
| 74639 | + sqlite3VdbeMemSetStr(pMem, zP4, -1, SQLITE_UTF8, 0); |
| 74640 | + }else{ |
| 74641 | + assert( pMem->z!=0 ); |
| 74642 | + pMem->n = sqlite3Strlen30(pMem->z); |
| 74643 | + pMem->enc = SQLITE_UTF8; |
| 74644 | + } |
| 74645 | + pMem++; |
| 74646 | + |
| 74647 | + if( p->explain==1 ){ |
| 74648 | + if( sqlite3VdbeMemClearAndResize(pMem, 4) ){ |
| 74649 | + assert( p->db->mallocFailed ); |
| 74650 | + return SQLITE_ERROR; |
| 74651 | + } |
| 74652 | + pMem->flags = MEM_Str|MEM_Term; |
| 74653 | + pMem->n = 2; |
| 74654 | + sqlite3_snprintf(3, pMem->z, "%.2x", pOp->p5); /* P5 */ |
| 74655 | + pMem->enc = SQLITE_UTF8; |
| 74656 | + pMem++; |
| 74657 | + |
| 74658 | +#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS |
| 74659 | + if( sqlite3VdbeMemClearAndResize(pMem, 500) ){ |
| 74660 | + assert( p->db->mallocFailed ); |
| 74661 | + return SQLITE_ERROR; |
| 74662 | + } |
| 74663 | + pMem->flags = MEM_Str|MEM_Term; |
| 74664 | + pMem->n = displayComment(pOp, zP4, pMem->z, 500); |
| 74665 | + pMem->enc = SQLITE_UTF8; |
| 74666 | +#else |
| 74667 | + pMem->flags = MEM_Null; /* Comment */ |
| 74668 | +#endif |
| 74669 | + } |
| 74670 | + |
| 74671 | + p->nResColumn = 8 - 4*(p->explain-1); |
| 74672 | + p->pResultSet = &p->aMem[1]; |
| 74673 | + p->rc = SQLITE_OK; |
| 74674 | + rc = SQLITE_ROW; |
| 74675 | + } |
| 74581 | 74676 | } |
| 74582 | 74677 | return rc; |
| 74583 | 74678 | } |
| 74584 | 74679 | #endif /* SQLITE_OMIT_EXPLAIN */ |
| 74585 | 74680 | |
| | @@ -82102,10 +82197,40 @@ |
| 82102 | 82197 | goto jump_to_p2; |
| 82103 | 82198 | } |
| 82104 | 82199 | break; |
| 82105 | 82200 | } |
| 82106 | 82201 | |
| 82202 | +#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC |
| 82203 | +/* Opcode: Offset P1 P2 P3 * * |
| 82204 | +** Synopsis: r[P3] = sqlite_offset(P1) |
| 82205 | +** |
| 82206 | +** Store in register r[P3] the byte offset into the database file that is the |
| 82207 | +** start of the payload for the record at which that cursor P1 is currently |
| 82208 | +** pointing. |
| 82209 | +** |
| 82210 | +** P2 is the column number for the argument to the sqlite_offset() function. |
| 82211 | +** This opcode does not use P2 itself, but the P2 value is used by the |
| 82212 | +** code generator. The P1, P2, and P3 operands to this opcode are the |
| 82213 | +** as as for OP_Column. |
| 82214 | +** |
| 82215 | +** This opcode is only available if SQLite is compiled with the |
| 82216 | +** -DSQLITE_ENABLE_OFFSET_SQL_FUNC option. |
| 82217 | +*/ |
| 82218 | +case OP_Offset: { /* out3 */ |
| 82219 | + VdbeCursor *pC; /* The VDBE cursor */ |
| 82220 | + assert( pOp->p1>=0 && pOp->p1<p->nCursor ); |
| 82221 | + pC = p->apCsr[pOp->p1]; |
| 82222 | + pOut = &p->aMem[pOp->p3]; |
| 82223 | + if( NEVER(pC==0) || pC->eCurType!=CURTYPE_BTREE ){ |
| 82224 | + sqlite3VdbeMemSetNull(pOut); |
| 82225 | + }else{ |
| 82226 | + sqlite3VdbeMemSetInt64(pOut, sqlite3BtreeOffset(pC->uc.pCursor)); |
| 82227 | + } |
| 82228 | + break; |
| 82229 | +} |
| 82230 | +#endif /* SQLITE_ENABLE_OFFSET_SQL_FUNC */ |
| 82231 | + |
| 82107 | 82232 | /* Opcode: Column P1 P2 P3 P4 P5 |
| 82108 | 82233 | ** Synopsis: r[P3]=PX |
| 82109 | 82234 | ** |
| 82110 | 82235 | ** Interpret the data that cursor P1 points to as a structure built using |
| 82111 | 82236 | ** the MakeRecord instruction. (See the MakeRecord opcode for additional |
| | @@ -86769,11 +86894,17 @@ |
| 86769 | 86894 | REGISTER_TRACE(pOp->p3, pOut); |
| 86770 | 86895 | UPDATE_MAX_BLOBSIZE(pOut); |
| 86771 | 86896 | break; |
| 86772 | 86897 | } |
| 86773 | 86898 | |
| 86774 | | - |
| 86899 | +/* Opcode: Trace P1 P2 * P4 * |
| 86900 | +** |
| 86901 | +** Write P4 on the statement trace output if statement tracing is |
| 86902 | +** enabled. |
| 86903 | +** |
| 86904 | +** Operand P1 must be 0x7fffffff and P2 must positive. |
| 86905 | +*/ |
| 86775 | 86906 | /* Opcode: Init P1 P2 P3 P4 * |
| 86776 | 86907 | ** Synopsis: Start at P2 |
| 86777 | 86908 | ** |
| 86778 | 86909 | ** Programs contain a single instance of this opcode as the very first |
| 86779 | 86910 | ** opcode. |
| | @@ -86788,10 +86919,11 @@ |
| 86788 | 86919 | ** first time they are evaluated for this run. |
| 86789 | 86920 | ** |
| 86790 | 86921 | ** If P3 is not zero, then it is an address to jump to if an SQLITE_CORRUPT |
| 86791 | 86922 | ** error is encountered. |
| 86792 | 86923 | */ |
| 86924 | +case OP_Trace: |
| 86793 | 86925 | case OP_Init: { /* jump */ |
| 86794 | 86926 | char *zTrace; |
| 86795 | 86927 | int i; |
| 86796 | 86928 | |
| 86797 | 86929 | /* If the P4 argument is not NULL, then it must be an SQL comment string. |
| | @@ -86802,11 +86934,13 @@ |
| 86802 | 86934 | ** would have been returned by the legacy sqlite3_trace() interface by |
| 86803 | 86935 | ** using the X argument when X begins with "--" and invoking |
| 86804 | 86936 | ** sqlite3_expanded_sql(P) otherwise. |
| 86805 | 86937 | */ |
| 86806 | 86938 | assert( pOp->p4.z==0 || strncmp(pOp->p4.z, "-" "- ", 3)==0 ); |
| 86807 | | - assert( pOp==p->aOp ); /* Always instruction 0 */ |
| 86939 | + |
| 86940 | + /* OP_Init is always instruction 0 */ |
| 86941 | + assert( pOp==p->aOp || pOp->opcode==OP_Trace ); |
| 86808 | 86942 | |
| 86809 | 86943 | #ifndef SQLITE_OMIT_TRACE |
| 86810 | 86944 | if( (db->mTrace & (SQLITE_TRACE_STMT|SQLITE_TRACE_LEGACY))!=0 |
| 86811 | 86945 | && !p->doingRerun |
| 86812 | 86946 | && (zTrace = (pOp->p4.z ? pOp->p4.z : p->zSql))!=0 |
| | @@ -86845,10 +86979,11 @@ |
| 86845 | 86979 | } |
| 86846 | 86980 | #endif /* SQLITE_DEBUG */ |
| 86847 | 86981 | #endif /* SQLITE_OMIT_TRACE */ |
| 86848 | 86982 | assert( pOp->p2>0 ); |
| 86849 | 86983 | if( pOp->p1>=sqlite3GlobalConfig.iOnceResetThreshold ){ |
| 86984 | + if( pOp->opcode==OP_Trace ) break; |
| 86850 | 86985 | for(i=1; i<p->nOp; i++){ |
| 86851 | 86986 | if( p->aOp[i].opcode==OP_Once ) p->aOp[i].p1 = 0; |
| 86852 | 86987 | } |
| 86853 | 86988 | pOp->p1 = 0; |
| 86854 | 86989 | } |
| | @@ -94048,21 +94183,20 @@ |
| 94048 | 94183 | ** is set. |
| 94049 | 94184 | */ |
| 94050 | 94185 | SQLITE_PRIVATE void sqlite3ExprListSetSpan( |
| 94051 | 94186 | Parse *pParse, /* Parsing context */ |
| 94052 | 94187 | ExprList *pList, /* List to which to add the span. */ |
| 94053 | | - ExprSpan *pSpan /* The span to be added */ |
| 94188 | + const char *zStart, /* Start of the span */ |
| 94189 | + const char *zEnd /* End of the span */ |
| 94054 | 94190 | ){ |
| 94055 | 94191 | sqlite3 *db = pParse->db; |
| 94056 | 94192 | assert( pList!=0 || db->mallocFailed!=0 ); |
| 94057 | 94193 | if( pList ){ |
| 94058 | 94194 | struct ExprList_item *pItem = &pList->a[pList->nExpr-1]; |
| 94059 | 94195 | assert( pList->nExpr>0 ); |
| 94060 | | - assert( db->mallocFailed || pItem->pExpr==pSpan->pExpr ); |
| 94061 | 94196 | sqlite3DbFree(db, pItem->zSpan); |
| 94062 | | - pItem->zSpan = sqlite3DbStrNDup(db, (char*)pSpan->zStart, |
| 94063 | | - (int)(pSpan->zEnd - pSpan->zStart)); |
| 94197 | + pItem->zSpan = sqlite3DbSpanDup(db, zStart, zEnd); |
| 94064 | 94198 | } |
| 94065 | 94199 | } |
| 94066 | 94200 | |
| 94067 | 94201 | /* |
| 94068 | 94202 | ** If the expression list pEList contains more than iLimit elements, |
| | @@ -96265,13 +96399,25 @@ |
| 96265 | 96399 | #endif |
| 96266 | 96400 | if( pDef->funcFlags & SQLITE_FUNC_NEEDCOLL ){ |
| 96267 | 96401 | if( !pColl ) pColl = db->pDfltColl; |
| 96268 | 96402 | sqlite3VdbeAddOp4(v, OP_CollSeq, 0, 0, 0, (char *)pColl, P4_COLLSEQ); |
| 96269 | 96403 | } |
| 96270 | | - sqlite3VdbeAddOp4(v, pParse->iSelfTab ? OP_PureFunc0 : OP_Function0, |
| 96271 | | - constMask, r1, target, (char*)pDef, P4_FUNCDEF); |
| 96272 | | - sqlite3VdbeChangeP5(v, (u8)nFarg); |
| 96404 | +#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC |
| 96405 | + if( pDef->funcFlags & SQLITE_FUNC_OFFSET ){ |
| 96406 | + Expr *pArg = pFarg->a[0].pExpr; |
| 96407 | + if( pArg->op==TK_COLUMN ){ |
| 96408 | + sqlite3VdbeAddOp3(v, OP_Offset, pArg->iTable, pArg->iColumn, target); |
| 96409 | + }else{ |
| 96410 | + sqlite3VdbeAddOp2(v, OP_Null, 0, target); |
| 96411 | + } |
| 96412 | + }else |
| 96413 | +#endif |
| 96414 | + { |
| 96415 | + sqlite3VdbeAddOp4(v, pParse->iSelfTab ? OP_PureFunc0 : OP_Function0, |
| 96416 | + constMask, r1, target, (char*)pDef, P4_FUNCDEF); |
| 96417 | + sqlite3VdbeChangeP5(v, (u8)nFarg); |
| 96418 | + } |
| 96273 | 96419 | if( nFarg && constMask==0 ){ |
| 96274 | 96420 | sqlite3ReleaseTempRange(pParse, r1, nFarg); |
| 96275 | 96421 | } |
| 96276 | 96422 | return target; |
| 96277 | 96423 | } |
| | @@ -102511,38 +102657,41 @@ |
| 102511 | 102657 | ** is not the case. |
| 102512 | 102658 | ** |
| 102513 | 102659 | ** This routine is called by the parser while in the middle of |
| 102514 | 102660 | ** parsing a CREATE TABLE statement. |
| 102515 | 102661 | */ |
| 102516 | | -SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse *pParse, ExprSpan *pSpan){ |
| 102662 | +SQLITE_PRIVATE void sqlite3AddDefaultValue( |
| 102663 | + Parse *pParse, /* Parsing context */ |
| 102664 | + Expr *pExpr, /* The parsed expression of the default value */ |
| 102665 | + const char *zStart, /* Start of the default value text */ |
| 102666 | + const char *zEnd /* First character past end of defaut value text */ |
| 102667 | +){ |
| 102517 | 102668 | Table *p; |
| 102518 | 102669 | Column *pCol; |
| 102519 | 102670 | sqlite3 *db = pParse->db; |
| 102520 | 102671 | p = pParse->pNewTable; |
| 102521 | 102672 | if( p!=0 ){ |
| 102522 | 102673 | pCol = &(p->aCol[p->nCol-1]); |
| 102523 | | - if( !sqlite3ExprIsConstantOrFunction(pSpan->pExpr, db->init.busy) ){ |
| 102674 | + if( !sqlite3ExprIsConstantOrFunction(pExpr, db->init.busy) ){ |
| 102524 | 102675 | sqlite3ErrorMsg(pParse, "default value of column [%s] is not constant", |
| 102525 | 102676 | pCol->zName); |
| 102526 | 102677 | }else{ |
| 102527 | 102678 | /* A copy of pExpr is used instead of the original, as pExpr contains |
| 102528 | | - ** tokens that point to volatile memory. The 'span' of the expression |
| 102529 | | - ** is required by pragma table_info. |
| 102679 | + ** tokens that point to volatile memory. |
| 102530 | 102680 | */ |
| 102531 | 102681 | Expr x; |
| 102532 | 102682 | sqlite3ExprDelete(db, pCol->pDflt); |
| 102533 | 102683 | memset(&x, 0, sizeof(x)); |
| 102534 | 102684 | x.op = TK_SPAN; |
| 102535 | | - x.u.zToken = sqlite3DbStrNDup(db, (char*)pSpan->zStart, |
| 102536 | | - (int)(pSpan->zEnd - pSpan->zStart)); |
| 102537 | | - x.pLeft = pSpan->pExpr; |
| 102685 | + x.u.zToken = sqlite3DbSpanDup(db, zStart, zEnd); |
| 102686 | + x.pLeft = pExpr; |
| 102538 | 102687 | x.flags = EP_Skip; |
| 102539 | 102688 | pCol->pDflt = sqlite3ExprDup(db, &x, EXPRDUP_REDUCE); |
| 102540 | 102689 | sqlite3DbFree(db, x.u.zToken); |
| 102541 | 102690 | } |
| 102542 | 102691 | } |
| 102543 | | - sqlite3ExprDelete(db, pSpan->pExpr); |
| 102692 | + sqlite3ExprDelete(db, pExpr); |
| 102544 | 102693 | } |
| 102545 | 102694 | |
| 102546 | 102695 | /* |
| 102547 | 102696 | ** Backwards Compatibility Hack: |
| 102548 | 102697 | ** |
| | @@ -103255,23 +103404,24 @@ |
| 103255 | 103404 | sqlite3VdbeAddOp3(v, OP_OpenWrite, 1, pParse->regRoot, iDb); |
| 103256 | 103405 | sqlite3VdbeChangeP5(v, OPFLAG_P2ISREG); |
| 103257 | 103406 | pParse->nTab = 2; |
| 103258 | 103407 | addrTop = sqlite3VdbeCurrentAddr(v) + 1; |
| 103259 | 103408 | sqlite3VdbeAddOp3(v, OP_InitCoroutine, regYield, 0, addrTop); |
| 103260 | | - sqlite3SelectDestInit(&dest, SRT_Coroutine, regYield); |
| 103261 | | - sqlite3Select(pParse, pSelect, &dest); |
| 103262 | | - sqlite3VdbeEndCoroutine(v, regYield); |
| 103263 | | - sqlite3VdbeJumpHere(v, addrTop - 1); |
| 103264 | 103409 | if( pParse->nErr ) return; |
| 103265 | 103410 | pSelTab = sqlite3ResultSetOfSelect(pParse, pSelect); |
| 103266 | 103411 | if( pSelTab==0 ) return; |
| 103267 | 103412 | assert( p->aCol==0 ); |
| 103268 | 103413 | p->nCol = pSelTab->nCol; |
| 103269 | 103414 | p->aCol = pSelTab->aCol; |
| 103270 | 103415 | pSelTab->nCol = 0; |
| 103271 | 103416 | pSelTab->aCol = 0; |
| 103272 | 103417 | sqlite3DeleteTable(db, pSelTab); |
| 103418 | + sqlite3SelectDestInit(&dest, SRT_Coroutine, regYield); |
| 103419 | + sqlite3Select(pParse, pSelect, &dest); |
| 103420 | + if( pParse->nErr ) return; |
| 103421 | + sqlite3VdbeEndCoroutine(v, regYield); |
| 103422 | + sqlite3VdbeJumpHere(v, addrTop - 1); |
| 103273 | 103423 | addrInsLoop = sqlite3VdbeAddOp1(v, OP_Yield, dest.iSDParm); |
| 103274 | 103424 | VdbeCoverage(v); |
| 103275 | 103425 | sqlite3VdbeAddOp3(v, OP_MakeRecord, dest.iSdst, dest.nSdst, regRec); |
| 103276 | 103426 | sqlite3TableAffinity(v, p, 0); |
| 103277 | 103427 | sqlite3VdbeAddOp2(v, OP_NewRowid, 1, regRowid); |
| | @@ -108980,10 +109130,14 @@ |
| 108980 | 109130 | FUNCTION2(likelihood, 2, 0, 0, noopFunc, SQLITE_FUNC_UNLIKELY), |
| 108981 | 109131 | FUNCTION2(likely, 1, 0, 0, noopFunc, SQLITE_FUNC_UNLIKELY), |
| 108982 | 109132 | #ifdef SQLITE_DEBUG |
| 108983 | 109133 | FUNCTION2(affinity, 1, 0, 0, noopFunc, SQLITE_FUNC_AFFINITY), |
| 108984 | 109134 | #endif |
| 109135 | +#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC |
| 109136 | + FUNCTION2(sqlite_offset, 1, 0, 0, noopFunc, SQLITE_FUNC_OFFSET| |
| 109137 | + SQLITE_FUNC_TYPEOF), |
| 109138 | +#endif |
| 108985 | 109139 | FUNCTION(ltrim, 1, 1, 0, trimFunc ), |
| 108986 | 109140 | FUNCTION(ltrim, 2, 1, 0, trimFunc ), |
| 108987 | 109141 | FUNCTION(rtrim, 1, 2, 0, trimFunc ), |
| 108988 | 109142 | FUNCTION(rtrim, 2, 2, 0, trimFunc ), |
| 108989 | 109143 | FUNCTION(trim, 1, 3, 0, trimFunc ), |
| | @@ -112072,10 +112226,11 @@ |
| 112072 | 112226 | sqlite3VdbeResolveLabel(v, addrUniqueOk); |
| 112073 | 112227 | continue; |
| 112074 | 112228 | } |
| 112075 | 112229 | |
| 112076 | 112230 | /* Check to see if the new index entry will be unique */ |
| 112231 | + sqlite3ExprCachePush(pParse); |
| 112077 | 112232 | sqlite3VdbeAddOp4Int(v, OP_NoConflict, iThisCur, addrUniqueOk, |
| 112078 | 112233 | regIdx, pIdx->nKeyCol); VdbeCoverage(v); |
| 112079 | 112234 | |
| 112080 | 112235 | /* Generate code to handle collisions */ |
| 112081 | 112236 | regR = (pIdx==pPk) ? regIdx : sqlite3GetTempRange(pParse, nPkField); |
| | @@ -112160,10 +112315,11 @@ |
| 112160 | 112315 | seenReplace = 1; |
| 112161 | 112316 | break; |
| 112162 | 112317 | } |
| 112163 | 112318 | } |
| 112164 | 112319 | sqlite3VdbeResolveLabel(v, addrUniqueOk); |
| 112320 | + sqlite3ExprCachePop(pParse); |
| 112165 | 112321 | if( regR!=regIdx ) sqlite3ReleaseTempRange(pParse, regR, nPkField); |
| 112166 | 112322 | } |
| 112167 | 112323 | if( ipkTop ){ |
| 112168 | 112324 | sqlite3VdbeGoto(v, ipkTop+1); |
| 112169 | 112325 | sqlite3VdbeJumpHere(v, ipkBottom); |
| | @@ -113985,12 +114141,14 @@ |
| 113985 | 114141 | |
| 113986 | 114142 | handle = sqlite3OsDlOpen(pVfs, zFile); |
| 113987 | 114143 | #if SQLITE_OS_UNIX || SQLITE_OS_WIN |
| 113988 | 114144 | for(ii=0; ii<ArraySize(azEndings) && handle==0; ii++){ |
| 113989 | 114145 | char *zAltFile = sqlite3_mprintf("%s.%s", zFile, azEndings[ii]); |
| 114146 | + int bExists = 0; |
| 113990 | 114147 | if( zAltFile==0 ) return SQLITE_NOMEM_BKPT; |
| 113991 | | - handle = sqlite3OsDlOpen(pVfs, zAltFile); |
| 114148 | + sqlite3OsAccess(pVfs, zAltFile, SQLITE_ACCESS_EXISTS, &bExists); |
| 114149 | + if( bExists ) handle = sqlite3OsDlOpen(pVfs, zAltFile); |
| 113992 | 114150 | sqlite3_free(zAltFile); |
| 113993 | 114151 | } |
| 113994 | 114152 | #endif |
| 113995 | 114153 | if( handle==0 ){ |
| 113996 | 114154 | if( pzErrMsg ){ |
| | @@ -116022,10 +116180,11 @@ |
| 116022 | 116180 | ** cid: Column id (numbered from left to right, starting at 0) |
| 116023 | 116181 | ** name: Column name |
| 116024 | 116182 | ** type: Column declaration type. |
| 116025 | 116183 | ** notnull: True if 'NOT NULL' is part of column declaration |
| 116026 | 116184 | ** dflt_value: The default value for the column, if any. |
| 116185 | + ** pk: Non-zero for PK fields. |
| 116027 | 116186 | */ |
| 116028 | 116187 | case PragTyp_TABLE_INFO: if( zRight ){ |
| 116029 | 116188 | Table *pTab; |
| 116030 | 116189 | pTab = sqlite3LocateTable(pParse, LOCATE_NOERR, zRight, zDb); |
| 116031 | 116190 | if( pTab ){ |
| | @@ -119715,22 +119874,21 @@ |
| 119715 | 119874 | char const *zOrigCol = 0; |
| 119716 | 119875 | #endif |
| 119717 | 119876 | |
| 119718 | 119877 | assert( pExpr!=0 ); |
| 119719 | 119878 | assert( pNC->pSrcList!=0 ); |
| 119879 | + assert( pExpr->op!=TK_AGG_COLUMN ); /* This routine runes before aggregates |
| 119880 | + ** are processed */ |
| 119720 | 119881 | switch( pExpr->op ){ |
| 119721 | | - case TK_AGG_COLUMN: |
| 119722 | 119882 | case TK_COLUMN: { |
| 119723 | 119883 | /* The expression is a column. Locate the table the column is being |
| 119724 | 119884 | ** extracted from in NameContext.pSrcList. This table may be real |
| 119725 | 119885 | ** database table or a subquery. |
| 119726 | 119886 | */ |
| 119727 | 119887 | Table *pTab = 0; /* Table structure column is extracted from */ |
| 119728 | 119888 | Select *pS = 0; /* Select the column is extracted from */ |
| 119729 | 119889 | int iCol = pExpr->iColumn; /* Index of column in pTab */ |
| 119730 | | - testcase( pExpr->op==TK_AGG_COLUMN ); |
| 119731 | | - testcase( pExpr->op==TK_COLUMN ); |
| 119732 | 119890 | while( pNC && !pTab ){ |
| 119733 | 119891 | SrcList *pTabList = pNC->pSrcList; |
| 119734 | 119892 | for(j=0;j<pTabList->nSrc && pTabList->a[j].iCursor!=pExpr->iTable;j++); |
| 119735 | 119893 | if( j<pTabList->nSrc ){ |
| 119736 | 119894 | pTab = pTabList->a[j].pTab; |
| | @@ -119930,10 +120088,11 @@ |
| 119930 | 120088 | #endif |
| 119931 | 120089 | |
| 119932 | 120090 | if( pParse->colNamesSet || db->mallocFailed ) return; |
| 119933 | 120091 | /* Column names are determined by the left-most term of a compound select */ |
| 119934 | 120092 | while( pSelect->pPrior ) pSelect = pSelect->pPrior; |
| 120093 | + SELECTTRACE(1,pParse,pSelect,("generating column names\n")); |
| 119935 | 120094 | pTabList = pSelect->pSrc; |
| 119936 | 120095 | pEList = pSelect->pEList; |
| 119937 | 120096 | assert( v!=0 ); |
| 119938 | 120097 | assert( pTabList!=0 ); |
| 119939 | 120098 | pParse->colNamesSet = 1; |
| | @@ -120038,16 +120197,16 @@ |
| 120038 | 120197 | Expr *pColExpr = sqlite3ExprSkipCollate(pEList->a[i].pExpr); |
| 120039 | 120198 | while( pColExpr->op==TK_DOT ){ |
| 120040 | 120199 | pColExpr = pColExpr->pRight; |
| 120041 | 120200 | assert( pColExpr!=0 ); |
| 120042 | 120201 | } |
| 120043 | | - if( (pColExpr->op==TK_COLUMN || pColExpr->op==TK_AGG_COLUMN) |
| 120044 | | - && pColExpr->pTab!=0 |
| 120045 | | - ){ |
| 120202 | + assert( pColExpr->op!=TK_AGG_COLUMN ); |
| 120203 | + if( pColExpr->op==TK_COLUMN ){ |
| 120046 | 120204 | /* For columns use the column name name */ |
| 120047 | 120205 | int iCol = pColExpr->iColumn; |
| 120048 | 120206 | Table *pTab = pColExpr->pTab; |
| 120207 | + assert( pTab!=0 ); |
| 120049 | 120208 | if( iCol<0 ) iCol = pTab->iPKey; |
| 120050 | 120209 | zName = iCol>=0 ? pTab->aCol[iCol].zName : "rowid"; |
| 120051 | 120210 | }else if( pColExpr->op==TK_ID ){ |
| 120052 | 120211 | assert( !ExprHasProperty(pColExpr, EP_IntValue) ); |
| 120053 | 120212 | zName = pColExpr->u.zToken; |
| | @@ -124606,10 +124765,11 @@ |
| 124606 | 124765 | |
| 124607 | 124766 | sqlite3ExprDelete(db, pTmp->pWhere); |
| 124608 | 124767 | sqlite3ExprListDelete(db, pTmp->pExprList); |
| 124609 | 124768 | sqlite3SelectDelete(db, pTmp->pSelect); |
| 124610 | 124769 | sqlite3IdListDelete(db, pTmp->pIdList); |
| 124770 | + sqlite3DbFree(db, pTmp->zSpan); |
| 124611 | 124771 | |
| 124612 | 124772 | sqlite3DbFree(db, pTmp); |
| 124613 | 124773 | } |
| 124614 | 124774 | } |
| 124615 | 124775 | |
| | @@ -124920,26 +125080,43 @@ |
| 124920 | 125080 | sqlite3DeleteTrigger(db, pTrig); |
| 124921 | 125081 | assert( !pParse->pNewTrigger ); |
| 124922 | 125082 | sqlite3DeleteTriggerStep(db, pStepList); |
| 124923 | 125083 | } |
| 124924 | 125084 | |
| 125085 | +/* |
| 125086 | +** Duplicate a range of text from an SQL statement, then convert all |
| 125087 | +** whitespace characters into ordinary space characters. |
| 125088 | +*/ |
| 125089 | +static char *triggerSpanDup(sqlite3 *db, const char *zStart, const char *zEnd){ |
| 125090 | + char *z = sqlite3DbSpanDup(db, zStart, zEnd); |
| 125091 | + int i; |
| 125092 | + if( z ) for(i=0; z[i]; i++) if( sqlite3Isspace(z[i]) ) z[i] = ' '; |
| 125093 | + return z; |
| 125094 | +} |
| 125095 | + |
| 124925 | 125096 | /* |
| 124926 | 125097 | ** Turn a SELECT statement (that the pSelect parameter points to) into |
| 124927 | 125098 | ** a trigger step. Return a pointer to a TriggerStep structure. |
| 124928 | 125099 | ** |
| 124929 | 125100 | ** The parser calls this routine when it finds a SELECT statement in |
| 124930 | 125101 | ** body of a TRIGGER. |
| 124931 | 125102 | */ |
| 124932 | | -SQLITE_PRIVATE TriggerStep *sqlite3TriggerSelectStep(sqlite3 *db, Select *pSelect){ |
| 125103 | +SQLITE_PRIVATE TriggerStep *sqlite3TriggerSelectStep( |
| 125104 | + sqlite3 *db, /* Database connection */ |
| 125105 | + Select *pSelect, /* The SELECT statement */ |
| 125106 | + const char *zStart, /* Start of SQL text */ |
| 125107 | + const char *zEnd /* End of SQL text */ |
| 125108 | +){ |
| 124933 | 125109 | TriggerStep *pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep)); |
| 124934 | 125110 | if( pTriggerStep==0 ) { |
| 124935 | 125111 | sqlite3SelectDelete(db, pSelect); |
| 124936 | 125112 | return 0; |
| 124937 | 125113 | } |
| 124938 | 125114 | pTriggerStep->op = TK_SELECT; |
| 124939 | 125115 | pTriggerStep->pSelect = pSelect; |
| 124940 | 125116 | pTriggerStep->orconf = OE_Default; |
| 125117 | + pTriggerStep->zSpan = triggerSpanDup(db, zStart, zEnd); |
| 124941 | 125118 | return pTriggerStep; |
| 124942 | 125119 | } |
| 124943 | 125120 | |
| 124944 | 125121 | /* |
| 124945 | 125122 | ** Allocate space to hold a new trigger step. The allocated space |
| | @@ -124948,11 +125125,13 @@ |
| 124948 | 125125 | ** If an OOM error occurs, NULL is returned and db->mallocFailed is set. |
| 124949 | 125126 | */ |
| 124950 | 125127 | static TriggerStep *triggerStepAllocate( |
| 124951 | 125128 | sqlite3 *db, /* Database connection */ |
| 124952 | 125129 | u8 op, /* Trigger opcode */ |
| 124953 | | - Token *pName /* The target name */ |
| 125130 | + Token *pName, /* The target name */ |
| 125131 | + const char *zStart, /* Start of SQL text */ |
| 125132 | + const char *zEnd /* End of SQL text */ |
| 124954 | 125133 | ){ |
| 124955 | 125134 | TriggerStep *pTriggerStep; |
| 124956 | 125135 | |
| 124957 | 125136 | pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep) + pName->n + 1); |
| 124958 | 125137 | if( pTriggerStep ){ |
| | @@ -124959,10 +125138,11 @@ |
| 124959 | 125138 | char *z = (char*)&pTriggerStep[1]; |
| 124960 | 125139 | memcpy(z, pName->z, pName->n); |
| 124961 | 125140 | sqlite3Dequote(z); |
| 124962 | 125141 | pTriggerStep->zTarget = z; |
| 124963 | 125142 | pTriggerStep->op = op; |
| 125143 | + pTriggerStep->zSpan = triggerSpanDup(db, zStart, zEnd); |
| 124964 | 125144 | } |
| 124965 | 125145 | return pTriggerStep; |
| 124966 | 125146 | } |
| 124967 | 125147 | |
| 124968 | 125148 | /* |
| | @@ -124975,17 +125155,19 @@ |
| 124975 | 125155 | SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep( |
| 124976 | 125156 | sqlite3 *db, /* The database connection */ |
| 124977 | 125157 | Token *pTableName, /* Name of the table into which we insert */ |
| 124978 | 125158 | IdList *pColumn, /* List of columns in pTableName to insert into */ |
| 124979 | 125159 | Select *pSelect, /* A SELECT statement that supplies values */ |
| 124980 | | - u8 orconf /* The conflict algorithm (OE_Abort, OE_Replace, etc.) */ |
| 125160 | + u8 orconf, /* The conflict algorithm (OE_Abort, OE_Replace, etc.) */ |
| 125161 | + const char *zStart, /* Start of SQL text */ |
| 125162 | + const char *zEnd /* End of SQL text */ |
| 124981 | 125163 | ){ |
| 124982 | 125164 | TriggerStep *pTriggerStep; |
| 124983 | 125165 | |
| 124984 | 125166 | assert(pSelect != 0 || db->mallocFailed); |
| 124985 | 125167 | |
| 124986 | | - pTriggerStep = triggerStepAllocate(db, TK_INSERT, pTableName); |
| 125168 | + pTriggerStep = triggerStepAllocate(db, TK_INSERT, pTableName, zStart, zEnd); |
| 124987 | 125169 | if( pTriggerStep ){ |
| 124988 | 125170 | pTriggerStep->pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE); |
| 124989 | 125171 | pTriggerStep->pIdList = pColumn; |
| 124990 | 125172 | pTriggerStep->orconf = orconf; |
| 124991 | 125173 | }else{ |
| | @@ -125004,15 +125186,17 @@ |
| 125004 | 125186 | SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep( |
| 125005 | 125187 | sqlite3 *db, /* The database connection */ |
| 125006 | 125188 | Token *pTableName, /* Name of the table to be updated */ |
| 125007 | 125189 | ExprList *pEList, /* The SET clause: list of column and new values */ |
| 125008 | 125190 | Expr *pWhere, /* The WHERE clause */ |
| 125009 | | - u8 orconf /* The conflict algorithm. (OE_Abort, OE_Ignore, etc) */ |
| 125191 | + u8 orconf, /* The conflict algorithm. (OE_Abort, OE_Ignore, etc) */ |
| 125192 | + const char *zStart, /* Start of SQL text */ |
| 125193 | + const char *zEnd /* End of SQL text */ |
| 125010 | 125194 | ){ |
| 125011 | 125195 | TriggerStep *pTriggerStep; |
| 125012 | 125196 | |
| 125013 | | - pTriggerStep = triggerStepAllocate(db, TK_UPDATE, pTableName); |
| 125197 | + pTriggerStep = triggerStepAllocate(db, TK_UPDATE, pTableName, zStart, zEnd); |
| 125014 | 125198 | if( pTriggerStep ){ |
| 125015 | 125199 | pTriggerStep->pExprList = sqlite3ExprListDup(db, pEList, EXPRDUP_REDUCE); |
| 125016 | 125200 | pTriggerStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE); |
| 125017 | 125201 | pTriggerStep->orconf = orconf; |
| 125018 | 125202 | } |
| | @@ -125027,15 +125211,17 @@ |
| 125027 | 125211 | ** sees a DELETE statement inside the body of a CREATE TRIGGER. |
| 125028 | 125212 | */ |
| 125029 | 125213 | SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep( |
| 125030 | 125214 | sqlite3 *db, /* Database connection */ |
| 125031 | 125215 | Token *pTableName, /* The table from which rows are deleted */ |
| 125032 | | - Expr *pWhere /* The WHERE clause */ |
| 125216 | + Expr *pWhere, /* The WHERE clause */ |
| 125217 | + const char *zStart, /* Start of SQL text */ |
| 125218 | + const char *zEnd /* End of SQL text */ |
| 125033 | 125219 | ){ |
| 125034 | 125220 | TriggerStep *pTriggerStep; |
| 125035 | 125221 | |
| 125036 | | - pTriggerStep = triggerStepAllocate(db, TK_DELETE, pTableName); |
| 125222 | + pTriggerStep = triggerStepAllocate(db, TK_DELETE, pTableName, zStart, zEnd); |
| 125037 | 125223 | if( pTriggerStep ){ |
| 125038 | 125224 | pTriggerStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE); |
| 125039 | 125225 | pTriggerStep->orconf = OE_Default; |
| 125040 | 125226 | } |
| 125041 | 125227 | sqlite3ExprDelete(db, pWhere); |
| | @@ -125285,10 +125471,18 @@ |
| 125285 | 125471 | ** INSERT INTO t1 ... ; -- insert into t2 uses REPLACE policy |
| 125286 | 125472 | ** INSERT OR IGNORE INTO t1 ... ; -- insert into t2 uses IGNORE policy |
| 125287 | 125473 | */ |
| 125288 | 125474 | pParse->eOrconf = (orconf==OE_Default)?pStep->orconf:(u8)orconf; |
| 125289 | 125475 | assert( pParse->okConstFactor==0 ); |
| 125476 | + |
| 125477 | +#ifndef SQLITE_OMIT_TRACE |
| 125478 | + if( pStep->zSpan ){ |
| 125479 | + sqlite3VdbeAddOp4(v, OP_Trace, 0x7fffffff, 1, 0, |
| 125480 | + sqlite3MPrintf(db, "-- %s", pStep->zSpan), |
| 125481 | + P4_DYNAMIC); |
| 125482 | + } |
| 125483 | +#endif |
| 125290 | 125484 | |
| 125291 | 125485 | switch( pStep->op ){ |
| 125292 | 125486 | case TK_UPDATE: { |
| 125293 | 125487 | sqlite3Update(pParse, |
| 125294 | 125488 | targetSrcList(pParse, pStep), |
| | @@ -125426,13 +125620,15 @@ |
| 125426 | 125620 | (pTrigger->op==TK_INSERT ? "INSERT" : ""), |
| 125427 | 125621 | (pTrigger->op==TK_DELETE ? "DELETE" : ""), |
| 125428 | 125622 | pTab->zName |
| 125429 | 125623 | )); |
| 125430 | 125624 | #ifndef SQLITE_OMIT_TRACE |
| 125431 | | - sqlite3VdbeChangeP4(v, -1, |
| 125432 | | - sqlite3MPrintf(db, "-- TRIGGER %s", pTrigger->zName), P4_DYNAMIC |
| 125433 | | - ); |
| 125625 | + if( pTrigger->zName ){ |
| 125626 | + sqlite3VdbeChangeP4(v, -1, |
| 125627 | + sqlite3MPrintf(db, "-- TRIGGER %s", pTrigger->zName), P4_DYNAMIC |
| 125628 | + ); |
| 125629 | + } |
| 125434 | 125630 | #endif |
| 125435 | 125631 | |
| 125436 | 125632 | /* If one was specified, code the WHEN clause. If it evaluates to false |
| 125437 | 125633 | ** (or NULL) the sub-vdbe is immediately halted by jumping to the |
| 125438 | 125634 | ** OP_Halt inserted at the end of the program. */ |
| | @@ -128896,11 +129092,11 @@ |
| 128896 | 129092 | int iFrom, /* Value for "from" column of output */ |
| 128897 | 129093 | u16 wctrlFlags /* Flags passed to sqlite3WhereBegin() */ |
| 128898 | 129094 | ){ |
| 128899 | 129095 | int ret = 0; |
| 128900 | 129096 | #if !defined(SQLITE_DEBUG) && !defined(SQLITE_ENABLE_STMT_SCANSTATUS) |
| 128901 | | - if( pParse->explain==2 ) |
| 129097 | + if( sqlite3ParseToplevel(pParse)->explain==2 ) |
| 128902 | 129098 | #endif |
| 128903 | 129099 | { |
| 128904 | 129100 | struct SrcList_item *pItem = &pTabList->a[pLevel->iFrom]; |
| 128905 | 129101 | Vdbe *v = pParse->pVdbe; /* VM being constructed */ |
| 128906 | 129102 | sqlite3 *db = pParse->db; /* Database handle */ |
| | @@ -132526,10 +132722,25 @@ |
| 132526 | 132722 | ** so is applicable. Because this module is responsible for selecting |
| 132527 | 132723 | ** indices, you might also think of this module as the "query optimizer". |
| 132528 | 132724 | */ |
| 132529 | 132725 | /* #include "sqliteInt.h" */ |
| 132530 | 132726 | /* #include "whereInt.h" */ |
| 132727 | + |
| 132728 | +/* |
| 132729 | +** Extra information appended to the end of sqlite3_index_info but not |
| 132730 | +** visible to the xBestIndex function, at least not directly. The |
| 132731 | +** sqlite3_vtab_collation() interface knows how to reach it, however. |
| 132732 | +** |
| 132733 | +** This object is not an API and can be changed from one release to the |
| 132734 | +** next. As long as allocateIndexInfo() and sqlite3_vtab_collation() |
| 132735 | +** agree on the structure, all will be well. |
| 132736 | +*/ |
| 132737 | +typedef struct HiddenIndexInfo HiddenIndexInfo; |
| 132738 | +struct HiddenIndexInfo { |
| 132739 | + WhereClause *pWC; /* The Where clause being analyzed */ |
| 132740 | + Parse *pParse; /* The parsing context */ |
| 132741 | +}; |
| 132531 | 132742 | |
| 132532 | 132743 | /* Forward declaration of methods */ |
| 132533 | 132744 | static int whereLoopResize(sqlite3*, WhereLoop*, int); |
| 132534 | 132745 | |
| 132535 | 132746 | /* Test variable that can be set to enable WHERE tracing */ |
| | @@ -133349,22 +133560,23 @@ |
| 133349 | 133560 | ** Allocate and populate an sqlite3_index_info structure. It is the |
| 133350 | 133561 | ** responsibility of the caller to eventually release the structure |
| 133351 | 133562 | ** by passing the pointer returned by this function to sqlite3_free(). |
| 133352 | 133563 | */ |
| 133353 | 133564 | static sqlite3_index_info *allocateIndexInfo( |
| 133354 | | - Parse *pParse, |
| 133355 | | - WhereClause *pWC, |
| 133565 | + Parse *pParse, /* The parsing context */ |
| 133566 | + WhereClause *pWC, /* The WHERE clause being analyzed */ |
| 133356 | 133567 | Bitmask mUnusable, /* Ignore terms with these prereqs */ |
| 133357 | | - struct SrcList_item *pSrc, |
| 133358 | | - ExprList *pOrderBy, |
| 133568 | + struct SrcList_item *pSrc, /* The FROM clause term that is the vtab */ |
| 133569 | + ExprList *pOrderBy, /* The ORDER BY clause */ |
| 133359 | 133570 | u16 *pmNoOmit /* Mask of terms not to omit */ |
| 133360 | 133571 | ){ |
| 133361 | 133572 | int i, j; |
| 133362 | 133573 | int nTerm; |
| 133363 | 133574 | struct sqlite3_index_constraint *pIdxCons; |
| 133364 | 133575 | struct sqlite3_index_orderby *pIdxOrderBy; |
| 133365 | 133576 | struct sqlite3_index_constraint_usage *pUsage; |
| 133577 | + struct HiddenIndexInfo *pHidden; |
| 133366 | 133578 | WhereTerm *pTerm; |
| 133367 | 133579 | int nOrderBy; |
| 133368 | 133580 | sqlite3_index_info *pIdxInfo; |
| 133369 | 133581 | u16 mNoOmit = 0; |
| 133370 | 133582 | |
| | @@ -133402,11 +133614,11 @@ |
| 133402 | 133614 | |
| 133403 | 133615 | /* Allocate the sqlite3_index_info structure |
| 133404 | 133616 | */ |
| 133405 | 133617 | pIdxInfo = sqlite3DbMallocZero(pParse->db, sizeof(*pIdxInfo) |
| 133406 | 133618 | + (sizeof(*pIdxCons) + sizeof(*pUsage))*nTerm |
| 133407 | | - + sizeof(*pIdxOrderBy)*nOrderBy ); |
| 133619 | + + sizeof(*pIdxOrderBy)*nOrderBy + sizeof(*pHidden) ); |
| 133408 | 133620 | if( pIdxInfo==0 ){ |
| 133409 | 133621 | sqlite3ErrorMsg(pParse, "out of memory"); |
| 133410 | 133622 | return 0; |
| 133411 | 133623 | } |
| 133412 | 133624 | |
| | @@ -133413,20 +133625,23 @@ |
| 133413 | 133625 | /* Initialize the structure. The sqlite3_index_info structure contains |
| 133414 | 133626 | ** many fields that are declared "const" to prevent xBestIndex from |
| 133415 | 133627 | ** changing them. We have to do some funky casting in order to |
| 133416 | 133628 | ** initialize those fields. |
| 133417 | 133629 | */ |
| 133418 | | - pIdxCons = (struct sqlite3_index_constraint*)&pIdxInfo[1]; |
| 133630 | + pHidden = (struct HiddenIndexInfo*)&pIdxInfo[1]; |
| 133631 | + pIdxCons = (struct sqlite3_index_constraint*)&pHidden[1]; |
| 133419 | 133632 | pIdxOrderBy = (struct sqlite3_index_orderby*)&pIdxCons[nTerm]; |
| 133420 | 133633 | pUsage = (struct sqlite3_index_constraint_usage*)&pIdxOrderBy[nOrderBy]; |
| 133421 | 133634 | *(int*)&pIdxInfo->nConstraint = nTerm; |
| 133422 | 133635 | *(int*)&pIdxInfo->nOrderBy = nOrderBy; |
| 133423 | 133636 | *(struct sqlite3_index_constraint**)&pIdxInfo->aConstraint = pIdxCons; |
| 133424 | 133637 | *(struct sqlite3_index_orderby**)&pIdxInfo->aOrderBy = pIdxOrderBy; |
| 133425 | 133638 | *(struct sqlite3_index_constraint_usage**)&pIdxInfo->aConstraintUsage = |
| 133426 | 133639 | pUsage; |
| 133427 | 133640 | |
| 133641 | + pHidden->pWC = pWC; |
| 133642 | + pHidden->pParse = pParse; |
| 133428 | 133643 | for(i=j=0, pTerm=pWC->a; i<pWC->nTerm; i++, pTerm++){ |
| 133429 | 133644 | u16 op; |
| 133430 | 133645 | if( pTerm->leftCursor != pSrc->iCursor ) continue; |
| 133431 | 133646 | if( pTerm->prereqRight & mUnusable ) continue; |
| 133432 | 133647 | assert( IsPowerOfTwo(pTerm->eOperator & ~WO_EQUIV) ); |
| | @@ -135646,10 +135861,31 @@ |
| 135646 | 135861 | (sqlite3_uint64)(pNew->prereq & ~mPrereq))); |
| 135647 | 135862 | |
| 135648 | 135863 | return rc; |
| 135649 | 135864 | } |
| 135650 | 135865 | |
| 135866 | +/* |
| 135867 | +** If this function is invoked from within an xBestIndex() callback, it |
| 135868 | +** returns a pointer to a buffer containing the name of the collation |
| 135869 | +** sequence associated with element iCons of the sqlite3_index_info.aConstraint |
| 135870 | +** array. Or, if iCons is out of range or there is no active xBestIndex |
| 135871 | +** call, return NULL. |
| 135872 | +*/ |
| 135873 | +SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info *pIdxInfo, int iCons){ |
| 135874 | + HiddenIndexInfo *pHidden = (HiddenIndexInfo*)&pIdxInfo[1]; |
| 135875 | + const char *zRet = 0; |
| 135876 | + if( iCons>=0 && iCons<pIdxInfo->nConstraint ){ |
| 135877 | + CollSeq *pC = 0; |
| 135878 | + int iTerm = pIdxInfo->aConstraint[iCons].iTermOffset; |
| 135879 | + Expr *pX = pHidden->pWC->a[iTerm].pExpr; |
| 135880 | + if( pX->pLeft ){ |
| 135881 | + pC = sqlite3BinaryCompareCollSeq(pHidden->pParse, pX->pLeft, pX->pRight); |
| 135882 | + } |
| 135883 | + zRet = (pC ? pC->zName : "BINARY"); |
| 135884 | + } |
| 135885 | + return zRet; |
| 135886 | +} |
| 135651 | 135887 | |
| 135652 | 135888 | /* |
| 135653 | 135889 | ** Add all WhereLoop objects for a table of the join identified by |
| 135654 | 135890 | ** pBuilder->pNew->iTab. That table is guaranteed to be a virtual table. |
| 135655 | 135891 | ** |
| | @@ -137614,11 +137850,15 @@ |
| 137614 | 137850 | last = sqlite3VdbeCurrentAddr(v); |
| 137615 | 137851 | k = pLevel->addrBody; |
| 137616 | 137852 | pOp = sqlite3VdbeGetOp(v, k); |
| 137617 | 137853 | for(; k<last; k++, pOp++){ |
| 137618 | 137854 | if( pOp->p1!=pLevel->iTabCur ) continue; |
| 137619 | | - if( pOp->opcode==OP_Column ){ |
| 137855 | + if( pOp->opcode==OP_Column |
| 137856 | +#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC |
| 137857 | + || pOp->opcode==OP_Offset |
| 137858 | +#endif |
| 137859 | + ){ |
| 137620 | 137860 | int x = pOp->p2; |
| 137621 | 137861 | assert( pIdx->pTable==pTab ); |
| 137622 | 137862 | if( !HasRowid(pTab) ){ |
| 137623 | 137863 | Index *pPk = sqlite3PrimaryKeyIndex(pTab); |
| 137624 | 137864 | x = pPk->aiColumn[x]; |
| | @@ -137756,24 +137996,16 @@ |
| 137756 | 137996 | sqlite3ErrorMsg(pParse, "too many terms in compound SELECT"); |
| 137757 | 137997 | } |
| 137758 | 137998 | } |
| 137759 | 137999 | } |
| 137760 | 138000 | |
| 137761 | | - /* This is a utility routine used to set the ExprSpan.zStart and |
| 137762 | | - ** ExprSpan.zEnd values of pOut so that the span covers the complete |
| 137763 | | - ** range of text beginning with pStart and going to the end of pEnd. |
| 137764 | | - */ |
| 137765 | | - static void spanSet(ExprSpan *pOut, Token *pStart, Token *pEnd){ |
| 137766 | | - pOut->zStart = pStart->z; |
| 137767 | | - pOut->zEnd = &pEnd->z[pEnd->n]; |
| 137768 | | - } |
| 137769 | 138001 | |
| 137770 | 138002 | /* Construct a new Expr object from a single identifier. Use the |
| 137771 | 138003 | ** new Expr to populate pOut. Set the span of pOut to be the identifier |
| 137772 | 138004 | ** that created the expression. |
| 137773 | 138005 | */ |
| 137774 | | - static void spanExpr(ExprSpan *pOut, Parse *pParse, int op, Token t){ |
| 138006 | + static Expr *tokenExpr(Parse *pParse, int op, Token t){ |
| 137775 | 138007 | Expr *p = sqlite3DbMallocRawNN(pParse->db, sizeof(Expr)+t.n+1); |
| 137776 | 138008 | if( p ){ |
| 137777 | 138009 | memset(p, 0, sizeof(Expr)); |
| 137778 | 138010 | p->op = (u8)op; |
| 137779 | 138011 | p->flags = EP_Leaf; |
| | @@ -137787,48 +138019,12 @@ |
| 137787 | 138019 | } |
| 137788 | 138020 | #if SQLITE_MAX_EXPR_DEPTH>0 |
| 137789 | 138021 | p->nHeight = 1; |
| 137790 | 138022 | #endif |
| 137791 | 138023 | } |
| 137792 | | - pOut->pExpr = p; |
| 137793 | | - pOut->zStart = t.z; |
| 137794 | | - pOut->zEnd = &t.z[t.n]; |
| 137795 | | - } |
| 137796 | | - |
| 137797 | | - /* This routine constructs a binary expression node out of two ExprSpan |
| 137798 | | - ** objects and uses the result to populate a new ExprSpan object. |
| 137799 | | - */ |
| 137800 | | - static void spanBinaryExpr( |
| 137801 | | - Parse *pParse, /* The parsing context. Errors accumulate here */ |
| 137802 | | - int op, /* The binary operation */ |
| 137803 | | - ExprSpan *pLeft, /* The left operand, and output */ |
| 137804 | | - ExprSpan *pRight /* The right operand */ |
| 137805 | | - ){ |
| 137806 | | - pLeft->pExpr = sqlite3PExpr(pParse, op, pLeft->pExpr, pRight->pExpr); |
| 137807 | | - pLeft->zEnd = pRight->zEnd; |
| 137808 | | - } |
| 137809 | | - |
| 137810 | | - /* If doNot is true, then add a TK_NOT Expr-node wrapper around the |
| 137811 | | - ** outside of *ppExpr. |
| 137812 | | - */ |
| 137813 | | - static void exprNot(Parse *pParse, int doNot, ExprSpan *pSpan){ |
| 137814 | | - if( doNot ){ |
| 137815 | | - pSpan->pExpr = sqlite3PExpr(pParse, TK_NOT, pSpan->pExpr, 0); |
| 137816 | | - } |
| 137817 | | - } |
| 137818 | | - |
| 137819 | | - /* Construct an expression node for a unary postfix operator |
| 137820 | | - */ |
| 137821 | | - static void spanUnaryPostfix( |
| 137822 | | - Parse *pParse, /* Parsing context to record errors */ |
| 137823 | | - int op, /* The operator */ |
| 137824 | | - ExprSpan *pOperand, /* The operand, and output */ |
| 137825 | | - Token *pPostOp /* The operand token for setting the span */ |
| 137826 | | - ){ |
| 137827 | | - pOperand->pExpr = sqlite3PExpr(pParse, op, pOperand->pExpr, 0); |
| 137828 | | - pOperand->zEnd = &pPostOp->z[pPostOp->n]; |
| 137829 | | - } |
| 138024 | + return p; |
| 138025 | + } |
| 137830 | 138026 | |
| 137831 | 138027 | /* A routine to convert a binary TK_IS or TK_ISNOT expression into a |
| 137832 | 138028 | ** unary TK_ISNULL or TK_NOTNULL expression. */ |
| 137833 | 138029 | static void binaryToUnaryIfNull(Parse *pParse, Expr *pY, Expr *pA, int op){ |
| 137834 | 138030 | sqlite3 *db = pParse->db; |
| | @@ -137837,24 +138033,10 @@ |
| 137837 | 138033 | sqlite3ExprDelete(db, pA->pRight); |
| 137838 | 138034 | pA->pRight = 0; |
| 137839 | 138035 | } |
| 137840 | 138036 | } |
| 137841 | 138037 | |
| 137842 | | - /* Construct an expression node for a unary prefix operator |
| 137843 | | - */ |
| 137844 | | - static void spanUnaryPrefix( |
| 137845 | | - ExprSpan *pOut, /* Write the new expression node here */ |
| 137846 | | - Parse *pParse, /* Parsing context to record errors */ |
| 137847 | | - int op, /* The operator */ |
| 137848 | | - ExprSpan *pOperand, /* The operand */ |
| 137849 | | - Token *pPreOp /* The operand token for setting the span */ |
| 137850 | | - ){ |
| 137851 | | - pOut->zStart = pPreOp->z; |
| 137852 | | - pOut->pExpr = sqlite3PExpr(pParse, op, pOperand->pExpr, 0); |
| 137853 | | - pOut->zEnd = pOperand->zEnd; |
| 137854 | | - } |
| 137855 | | - |
| 137856 | 138038 | /* Add a single new term to an ExprList that is used to store a |
| 137857 | 138039 | ** list of identifiers. Report an error if the ID list contains |
| 137858 | 138040 | ** a COLLATE clause or an ASC or DESC keyword, except ignore the |
| 137859 | 138041 | ** error while parsing a legacy schema. |
| 137860 | 138042 | */ |
| | @@ -137919,61 +138101,63 @@ |
| 137919 | 138101 | ** sqlite3ParserARG_FETCH Code to extract %extra_argument from yypParser |
| 137920 | 138102 | ** YYERRORSYMBOL is the code number of the error symbol. If not |
| 137921 | 138103 | ** defined, then do no error processing. |
| 137922 | 138104 | ** YYNSTATE the combined number of states. |
| 137923 | 138105 | ** YYNRULE the number of rules in the grammar |
| 138106 | +** YYNTOKEN Number of terminal symbols |
| 137924 | 138107 | ** YY_MAX_SHIFT Maximum value for shift actions |
| 137925 | 138108 | ** YY_MIN_SHIFTREDUCE Minimum value for shift-reduce actions |
| 137926 | 138109 | ** YY_MAX_SHIFTREDUCE Maximum value for shift-reduce actions |
| 137927 | | -** YY_MIN_REDUCE Minimum value for reduce actions |
| 137928 | | -** YY_MAX_REDUCE Maximum value for reduce actions |
| 137929 | 138110 | ** YY_ERROR_ACTION The yy_action[] code for syntax error |
| 137930 | 138111 | ** YY_ACCEPT_ACTION The yy_action[] code for accept |
| 137931 | 138112 | ** YY_NO_ACTION The yy_action[] code for no-op |
| 138113 | +** YY_MIN_REDUCE Minimum value for reduce actions |
| 138114 | +** YY_MAX_REDUCE Maximum value for reduce actions |
| 137932 | 138115 | */ |
| 137933 | 138116 | #ifndef INTERFACE |
| 137934 | 138117 | # define INTERFACE 1 |
| 137935 | 138118 | #endif |
| 137936 | 138119 | /************* Begin control #defines *****************************************/ |
| 137937 | 138120 | #define YYCODETYPE unsigned char |
| 137938 | | -#define YYNOCODE 252 |
| 138121 | +#define YYNOCODE 253 |
| 137939 | 138122 | #define YYACTIONTYPE unsigned short int |
| 137940 | 138123 | #define YYWILDCARD 83 |
| 137941 | 138124 | #define sqlite3ParserTOKENTYPE Token |
| 137942 | 138125 | typedef union { |
| 137943 | 138126 | int yyinit; |
| 137944 | 138127 | sqlite3ParserTOKENTYPE yy0; |
| 137945 | | - Expr* yy72; |
| 137946 | | - TriggerStep* yy145; |
| 137947 | | - ExprList* yy148; |
| 137948 | | - SrcList* yy185; |
| 137949 | | - ExprSpan yy190; |
| 137950 | | - int yy194; |
| 137951 | | - Select* yy243; |
| 137952 | | - IdList* yy254; |
| 137953 | | - With* yy285; |
| 137954 | | - struct TrigEvent yy332; |
| 137955 | | - struct {int value; int mask;} yy497; |
| 138128 | + int yy4; |
| 138129 | + struct TrigEvent yy90; |
| 138130 | + TriggerStep* yy203; |
| 138131 | + struct {int value; int mask;} yy215; |
| 138132 | + SrcList* yy259; |
| 138133 | + Expr* yy314; |
| 138134 | + ExprList* yy322; |
| 138135 | + const char* yy336; |
| 138136 | + IdList* yy384; |
| 138137 | + Select* yy387; |
| 138138 | + With* yy451; |
| 137956 | 138139 | } YYMINORTYPE; |
| 137957 | 138140 | #ifndef YYSTACKDEPTH |
| 137958 | 138141 | #define YYSTACKDEPTH 100 |
| 137959 | 138142 | #endif |
| 137960 | 138143 | #define sqlite3ParserARG_SDECL Parse *pParse; |
| 137961 | 138144 | #define sqlite3ParserARG_PDECL ,Parse *pParse |
| 137962 | 138145 | #define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse |
| 137963 | 138146 | #define sqlite3ParserARG_STORE yypParser->pParse = pParse |
| 137964 | 138147 | #define YYFALLBACK 1 |
| 137965 | | -#define YYNSTATE 455 |
| 137966 | | -#define YYNRULE 329 |
| 137967 | | -#define YY_MAX_SHIFT 454 |
| 137968 | | -#define YY_MIN_SHIFTREDUCE 664 |
| 137969 | | -#define YY_MAX_SHIFTREDUCE 992 |
| 137970 | | -#define YY_MIN_REDUCE 993 |
| 137971 | | -#define YY_MAX_REDUCE 1321 |
| 137972 | | -#define YY_ERROR_ACTION 1322 |
| 137973 | | -#define YY_ACCEPT_ACTION 1323 |
| 137974 | | -#define YY_NO_ACTION 1324 |
| 138148 | +#define YYNSTATE 466 |
| 138149 | +#define YYNRULE 330 |
| 138150 | +#define YYNTOKEN 143 |
| 138151 | +#define YY_MAX_SHIFT 465 |
| 138152 | +#define YY_MIN_SHIFTREDUCE 675 |
| 138153 | +#define YY_MAX_SHIFTREDUCE 1004 |
| 138154 | +#define YY_ERROR_ACTION 1005 |
| 138155 | +#define YY_ACCEPT_ACTION 1006 |
| 138156 | +#define YY_NO_ACTION 1007 |
| 138157 | +#define YY_MIN_REDUCE 1008 |
| 138158 | +#define YY_MAX_REDUCE 1337 |
| 137975 | 138159 | /************* End control #defines *******************************************/ |
| 137976 | 138160 | |
| 137977 | 138161 | /* Define the yytestcase() macro to be a no-op if is not already defined |
| 137978 | 138162 | ** otherwise. |
| 137979 | 138163 | ** |
| | @@ -137999,39 +138183,33 @@ |
| 137999 | 138183 | ** token onto the stack and goto state N. |
| 138000 | 138184 | ** |
| 138001 | 138185 | ** N between YY_MIN_SHIFTREDUCE Shift to an arbitrary state then |
| 138002 | 138186 | ** and YY_MAX_SHIFTREDUCE reduce by rule N-YY_MIN_SHIFTREDUCE. |
| 138003 | 138187 | ** |
| 138004 | | -** N between YY_MIN_REDUCE Reduce by rule N-YY_MIN_REDUCE |
| 138005 | | -** and YY_MAX_REDUCE |
| 138006 | | -** |
| 138007 | 138188 | ** N == YY_ERROR_ACTION A syntax error has occurred. |
| 138008 | 138189 | ** |
| 138009 | 138190 | ** N == YY_ACCEPT_ACTION The parser accepts its input. |
| 138010 | 138191 | ** |
| 138011 | 138192 | ** N == YY_NO_ACTION No such action. Denotes unused |
| 138012 | 138193 | ** slots in the yy_action[] table. |
| 138194 | +** |
| 138195 | +** N between YY_MIN_REDUCE Reduce by rule N-YY_MIN_REDUCE |
| 138196 | +** and YY_MAX_REDUCE |
| 138013 | 138197 | ** |
| 138014 | 138198 | ** The action table is constructed as a single large table named yy_action[]. |
| 138015 | 138199 | ** Given state S and lookahead X, the action is computed as either: |
| 138016 | 138200 | ** |
| 138017 | 138201 | ** (A) N = yy_action[ yy_shift_ofst[S] + X ] |
| 138018 | 138202 | ** (B) N = yy_default[S] |
| 138019 | 138203 | ** |
| 138020 | | -** The (A) formula is preferred. The B formula is used instead if: |
| 138021 | | -** (1) The yy_shift_ofst[S]+X value is out of range, or |
| 138022 | | -** (2) yy_lookahead[yy_shift_ofst[S]+X] is not equal to X, or |
| 138023 | | -** (3) yy_shift_ofst[S] equal YY_SHIFT_USE_DFLT. |
| 138024 | | -** (Implementation note: YY_SHIFT_USE_DFLT is chosen so that |
| 138025 | | -** YY_SHIFT_USE_DFLT+X will be out of range for all possible lookaheads X. |
| 138026 | | -** Hence only tests (1) and (2) need to be evaluated.) |
| 138204 | +** The (A) formula is preferred. The B formula is used instead if |
| 138205 | +** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X. |
| 138027 | 138206 | ** |
| 138028 | 138207 | ** The formulas above are for computing the action when the lookahead is |
| 138029 | 138208 | ** a terminal symbol. If the lookahead is a non-terminal (as occurs after |
| 138030 | 138209 | ** a reduce action) then the yy_reduce_ofst[] array is used in place of |
| 138031 | | -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of |
| 138032 | | -** YY_SHIFT_USE_DFLT. |
| 138210 | +** the yy_shift_ofst[] array. |
| 138033 | 138211 | ** |
| 138034 | 138212 | ** The following are the tables generated in this section: |
| 138035 | 138213 | ** |
| 138036 | 138214 | ** yy_action[] A single table containing all actions. |
| 138037 | 138215 | ** yy_lookahead[] A table containing the lookahead for each entry in |
| | @@ -138041,467 +138219,478 @@ |
| 138041 | 138219 | ** yy_reduce_ofst[] For each state, the offset into yy_action for |
| 138042 | 138220 | ** shifting non-terminals after a reduce. |
| 138043 | 138221 | ** yy_default[] Default action for each state. |
| 138044 | 138222 | ** |
| 138045 | 138223 | *********** Begin parsing tables **********************************************/ |
| 138046 | | -#define YY_ACTTAB_COUNT (1566) |
| 138224 | +#define YY_ACTTAB_COUNT (1541) |
| 138047 | 138225 | static const YYACTIONTYPE yy_action[] = { |
| 138048 | | - /* 0 */ 324, 1323, 155, 155, 2, 203, 94, 94, 94, 93, |
| 138049 | | - /* 10 */ 350, 98, 98, 98, 98, 91, 95, 95, 94, 94, |
| 138050 | | - /* 20 */ 94, 93, 350, 268, 99, 100, 90, 971, 971, 847, |
| 138051 | | - /* 30 */ 850, 839, 839, 97, 97, 98, 98, 98, 98, 350, |
| 138052 | | - /* 40 */ 969, 96, 96, 96, 96, 95, 95, 94, 94, 94, |
| 138053 | | - /* 50 */ 93, 350, 950, 96, 96, 96, 96, 95, 95, 94, |
| 138054 | | - /* 60 */ 94, 94, 93, 350, 250, 96, 96, 96, 96, 95, |
| 138055 | | - /* 70 */ 95, 94, 94, 94, 93, 350, 224, 224, 969, 132, |
| 138056 | | - /* 80 */ 888, 348, 347, 415, 172, 324, 1286, 449, 414, 950, |
| 138057 | | - /* 90 */ 951, 952, 808, 977, 1032, 950, 300, 786, 428, 132, |
| 138058 | | - /* 100 */ 975, 362, 976, 9, 9, 787, 132, 52, 52, 99, |
| 138059 | | - /* 110 */ 100, 90, 971, 971, 847, 850, 839, 839, 97, 97, |
| 138060 | | - /* 120 */ 98, 98, 98, 98, 372, 978, 241, 978, 262, 369, |
| 138061 | | - /* 130 */ 261, 120, 950, 951, 952, 194, 58, 324, 401, 398, |
| 138062 | | - /* 140 */ 397, 808, 427, 429, 75, 808, 1260, 1260, 132, 396, |
| 138063 | | - /* 150 */ 96, 96, 96, 96, 95, 95, 94, 94, 94, 93, |
| 138064 | | - /* 160 */ 350, 99, 100, 90, 971, 971, 847, 850, 839, 839, |
| 138065 | | - /* 170 */ 97, 97, 98, 98, 98, 98, 786, 262, 369, 261, |
| 138066 | | - /* 180 */ 826, 262, 364, 251, 787, 1084, 101, 1114, 72, 324, |
| 138067 | | - /* 190 */ 227, 1113, 242, 411, 442, 819, 92, 89, 178, 818, |
| 138068 | | - /* 200 */ 1022, 268, 96, 96, 96, 96, 95, 95, 94, 94, |
| 138069 | | - /* 210 */ 94, 93, 350, 99, 100, 90, 971, 971, 847, 850, |
| 138070 | | - /* 220 */ 839, 839, 97, 97, 98, 98, 98, 98, 449, 372, |
| 138071 | | - /* 230 */ 818, 818, 820, 92, 89, 178, 60, 92, 89, 178, |
| 138072 | | - /* 240 */ 1025, 324, 357, 930, 1316, 300, 61, 1316, 52, 52, |
| 138073 | | - /* 250 */ 836, 836, 848, 851, 96, 96, 96, 96, 95, 95, |
| 138074 | | - /* 260 */ 94, 94, 94, 93, 350, 99, 100, 90, 971, 971, |
| 138075 | | - /* 270 */ 847, 850, 839, 839, 97, 97, 98, 98, 98, 98, |
| 138076 | | - /* 280 */ 92, 89, 178, 427, 412, 198, 930, 1317, 454, 995, |
| 138077 | | - /* 290 */ 1317, 355, 1024, 324, 243, 231, 114, 277, 348, 347, |
| 138078 | | - /* 300 */ 1242, 950, 416, 1071, 928, 840, 96, 96, 96, 96, |
| 138079 | | - /* 310 */ 95, 95, 94, 94, 94, 93, 350, 99, 100, 90, |
| 138080 | | - /* 320 */ 971, 971, 847, 850, 839, 839, 97, 97, 98, 98, |
| 138081 | | - /* 330 */ 98, 98, 449, 328, 449, 120, 23, 256, 950, 951, |
| 138082 | | - /* 340 */ 952, 968, 978, 438, 978, 324, 329, 928, 954, 701, |
| 138083 | | - /* 350 */ 200, 175, 52, 52, 52, 52, 939, 353, 96, 96, |
| 138084 | | - /* 360 */ 96, 96, 95, 95, 94, 94, 94, 93, 350, 99, |
| 138085 | | - /* 370 */ 100, 90, 971, 971, 847, 850, 839, 839, 97, 97, |
| 138086 | | - /* 380 */ 98, 98, 98, 98, 354, 449, 954, 427, 417, 427, |
| 138087 | | - /* 390 */ 426, 1290, 92, 89, 178, 268, 253, 324, 255, 1058, |
| 138088 | | - /* 400 */ 1037, 694, 93, 350, 383, 52, 52, 380, 1058, 374, |
| 138089 | | - /* 410 */ 96, 96, 96, 96, 95, 95, 94, 94, 94, 93, |
| 138090 | | - /* 420 */ 350, 99, 100, 90, 971, 971, 847, 850, 839, 839, |
| 138091 | | - /* 430 */ 97, 97, 98, 98, 98, 98, 228, 449, 167, 449, |
| 138092 | | - /* 440 */ 427, 407, 157, 446, 446, 446, 349, 349, 349, 324, |
| 138093 | | - /* 450 */ 310, 316, 991, 827, 320, 242, 411, 51, 51, 36, |
| 138094 | | - /* 460 */ 36, 254, 96, 96, 96, 96, 95, 95, 94, 94, |
| 138095 | | - /* 470 */ 94, 93, 350, 99, 100, 90, 971, 971, 847, 850, |
| 138096 | | - /* 480 */ 839, 839, 97, 97, 98, 98, 98, 98, 194, 316, |
| 138097 | | - /* 490 */ 929, 401, 398, 397, 224, 224, 1265, 939, 353, 1318, |
| 138098 | | - /* 500 */ 317, 324, 396, 1063, 1063, 813, 414, 1061, 1061, 950, |
| 138099 | | - /* 510 */ 299, 448, 992, 268, 96, 96, 96, 96, 95, 95, |
| 138100 | | - /* 520 */ 94, 94, 94, 93, 350, 99, 100, 90, 971, 971, |
| 138101 | | - /* 530 */ 847, 850, 839, 839, 97, 97, 98, 98, 98, 98, |
| 138102 | | - /* 540 */ 757, 1041, 449, 893, 893, 386, 950, 951, 952, 410, |
| 138103 | | - /* 550 */ 992, 747, 747, 324, 229, 268, 221, 296, 268, 771, |
| 138104 | | - /* 560 */ 890, 378, 52, 52, 890, 421, 96, 96, 96, 96, |
| 138105 | | - /* 570 */ 95, 95, 94, 94, 94, 93, 350, 99, 100, 90, |
| 138106 | | - /* 580 */ 971, 971, 847, 850, 839, 839, 97, 97, 98, 98, |
| 138107 | | - /* 590 */ 98, 98, 103, 449, 275, 384, 1241, 343, 157, 1207, |
| 138108 | | - /* 600 */ 909, 669, 670, 671, 176, 197, 196, 195, 324, 298, |
| 138109 | | - /* 610 */ 319, 1266, 2, 37, 37, 910, 1134, 1040, 96, 96, |
| 138110 | | - /* 620 */ 96, 96, 95, 95, 94, 94, 94, 93, 350, 697, |
| 138111 | | - /* 630 */ 911, 177, 99, 100, 90, 971, 971, 847, 850, 839, |
| 138112 | | - /* 640 */ 839, 97, 97, 98, 98, 98, 98, 230, 146, 120, |
| 138113 | | - /* 650 */ 735, 1235, 826, 270, 1141, 273, 1141, 771, 171, 170, |
| 138114 | | - /* 660 */ 736, 1141, 82, 324, 80, 268, 697, 819, 158, 268, |
| 138115 | | - /* 670 */ 378, 818, 78, 96, 96, 96, 96, 95, 95, 94, |
| 138116 | | - /* 680 */ 94, 94, 93, 350, 120, 950, 393, 99, 100, 90, |
| 138117 | | - /* 690 */ 971, 971, 847, 850, 839, 839, 97, 97, 98, 98, |
| 138118 | | - /* 700 */ 98, 98, 818, 818, 820, 1141, 1070, 370, 331, 133, |
| 138119 | | - /* 710 */ 1066, 1141, 1250, 198, 268, 324, 1016, 330, 245, 333, |
| 138120 | | - /* 720 */ 24, 334, 950, 951, 952, 368, 335, 81, 96, 96, |
| 138121 | | - /* 730 */ 96, 96, 95, 95, 94, 94, 94, 93, 350, 99, |
| 138122 | | - /* 740 */ 100, 90, 971, 971, 847, 850, 839, 839, 97, 97, |
| 138123 | | - /* 750 */ 98, 98, 98, 98, 132, 267, 260, 445, 330, 223, |
| 138124 | | - /* 760 */ 175, 1289, 925, 752, 724, 318, 1073, 324, 751, 246, |
| 138125 | | - /* 770 */ 385, 301, 301, 378, 329, 361, 344, 414, 1233, 280, |
| 138126 | | - /* 780 */ 96, 96, 96, 96, 95, 95, 94, 94, 94, 93, |
| 138127 | | - /* 790 */ 350, 99, 88, 90, 971, 971, 847, 850, 839, 839, |
| 138128 | | - /* 800 */ 97, 97, 98, 98, 98, 98, 337, 346, 721, 722, |
| 138129 | | - /* 810 */ 449, 120, 118, 887, 162, 887, 810, 371, 324, 202, |
| 138130 | | - /* 820 */ 202, 373, 249, 263, 202, 394, 74, 704, 208, 1069, |
| 138131 | | - /* 830 */ 12, 12, 96, 96, 96, 96, 95, 95, 94, 94, |
| 138132 | | - /* 840 */ 94, 93, 350, 100, 90, 971, 971, 847, 850, 839, |
| 138133 | | - /* 850 */ 839, 97, 97, 98, 98, 98, 98, 449, 771, 232, |
| 138134 | | - /* 860 */ 449, 278, 120, 286, 74, 704, 714, 713, 324, 342, |
| 138135 | | - /* 870 */ 749, 877, 1209, 77, 285, 1255, 780, 52, 52, 202, |
| 138136 | | - /* 880 */ 27, 27, 418, 96, 96, 96, 96, 95, 95, 94, |
| 138137 | | - /* 890 */ 94, 94, 93, 350, 90, 971, 971, 847, 850, 839, |
| 138138 | | - /* 900 */ 839, 97, 97, 98, 98, 98, 98, 86, 444, 877, |
| 138139 | | - /* 910 */ 3, 1193, 422, 1013, 873, 435, 886, 208, 886, 689, |
| 138140 | | - /* 920 */ 1091, 257, 116, 822, 447, 1230, 117, 1229, 86, 444, |
| 138141 | | - /* 930 */ 177, 3, 381, 96, 96, 96, 96, 95, 95, 94, |
| 138142 | | - /* 940 */ 94, 94, 93, 350, 339, 447, 120, 351, 120, 212, |
| 138143 | | - /* 950 */ 169, 287, 404, 282, 403, 199, 771, 950, 433, 419, |
| 138144 | | - /* 960 */ 439, 822, 280, 691, 1039, 264, 269, 132, 351, 153, |
| 138145 | | - /* 970 */ 826, 376, 74, 272, 274, 276, 83, 84, 1054, 433, |
| 138146 | | - /* 980 */ 147, 1038, 443, 85, 351, 451, 450, 281, 132, 818, |
| 138147 | | - /* 990 */ 25, 826, 449, 120, 950, 951, 952, 83, 84, 86, |
| 138148 | | - /* 1000 */ 444, 691, 3, 408, 85, 351, 451, 450, 449, 5, |
| 138149 | | - /* 1010 */ 818, 203, 32, 32, 1107, 120, 447, 950, 225, 1140, |
| 138150 | | - /* 1020 */ 818, 818, 820, 821, 19, 203, 226, 950, 38, 38, |
| 138151 | | - /* 1030 */ 1087, 314, 314, 313, 215, 311, 120, 449, 678, 351, |
| 138152 | | - /* 1040 */ 237, 818, 818, 820, 821, 19, 969, 409, 377, 1, |
| 138153 | | - /* 1050 */ 433, 180, 706, 248, 950, 951, 952, 10, 10, 449, |
| 138154 | | - /* 1060 */ 969, 247, 826, 1098, 950, 951, 952, 430, 83, 84, |
| 138155 | | - /* 1070 */ 756, 336, 950, 20, 431, 85, 351, 451, 450, 10, |
| 138156 | | - /* 1080 */ 10, 818, 86, 444, 969, 3, 950, 449, 302, 303, |
| 138157 | | - /* 1090 */ 182, 950, 1146, 338, 1021, 1015, 1004, 183, 969, 447, |
| 138158 | | - /* 1100 */ 132, 181, 76, 444, 21, 3, 449, 10, 10, 950, |
| 138159 | | - /* 1110 */ 951, 952, 818, 818, 820, 821, 19, 715, 1279, 447, |
| 138160 | | - /* 1120 */ 389, 233, 351, 950, 951, 952, 10, 10, 950, 951, |
| 138161 | | - /* 1130 */ 952, 1003, 218, 433, 1005, 325, 1273, 773, 289, 291, |
| 138162 | | - /* 1140 */ 424, 293, 351, 7, 159, 826, 363, 402, 315, 360, |
| 138163 | | - /* 1150 */ 1129, 83, 84, 433, 1232, 716, 772, 259, 85, 351, |
| 138164 | | - /* 1160 */ 451, 450, 358, 375, 818, 826, 360, 359, 399, 1211, |
| 138165 | | - /* 1170 */ 157, 83, 84, 681, 98, 98, 98, 98, 85, 351, |
| 138166 | | - /* 1180 */ 451, 450, 323, 252, 818, 295, 1211, 1213, 1235, 173, |
| 138167 | | - /* 1190 */ 1037, 284, 434, 340, 1204, 818, 818, 820, 821, 19, |
| 138168 | | - /* 1200 */ 308, 234, 449, 234, 96, 96, 96, 96, 95, 95, |
| 138169 | | - /* 1210 */ 94, 94, 94, 93, 350, 818, 818, 820, 821, 19, |
| 138170 | | - /* 1220 */ 909, 120, 39, 39, 1203, 449, 168, 360, 449, 1276, |
| 138171 | | - /* 1230 */ 367, 449, 135, 449, 986, 910, 449, 1249, 449, 1247, |
| 138172 | | - /* 1240 */ 449, 205, 983, 449, 370, 40, 40, 1211, 41, 41, |
| 138173 | | - /* 1250 */ 911, 42, 42, 28, 28, 870, 29, 29, 31, 31, |
| 138174 | | - /* 1260 */ 43, 43, 379, 44, 44, 449, 59, 449, 332, 449, |
| 138175 | | - /* 1270 */ 432, 62, 144, 156, 449, 130, 449, 72, 449, 137, |
| 138176 | | - /* 1280 */ 449, 365, 449, 392, 139, 45, 45, 11, 11, 46, |
| 138177 | | - /* 1290 */ 46, 140, 1200, 449, 105, 105, 47, 47, 48, 48, |
| 138178 | | - /* 1300 */ 33, 33, 49, 49, 1126, 449, 141, 366, 449, 185, |
| 138179 | | - /* 1310 */ 142, 449, 1234, 50, 50, 449, 160, 449, 148, 449, |
| 138180 | | - /* 1320 */ 1136, 382, 449, 67, 449, 34, 34, 449, 122, 122, |
| 138181 | | - /* 1330 */ 449, 123, 123, 449, 1198, 124, 124, 56, 56, 35, |
| 138182 | | - /* 1340 */ 35, 449, 106, 106, 53, 53, 449, 107, 107, 449, |
| 138183 | | - /* 1350 */ 108, 108, 449, 104, 104, 449, 406, 449, 388, 449, |
| 138184 | | - /* 1360 */ 189, 121, 121, 449, 190, 449, 119, 119, 449, 112, |
| 138185 | | - /* 1370 */ 112, 449, 111, 111, 1218, 109, 109, 110, 110, 55, |
| 138186 | | - /* 1380 */ 55, 266, 752, 57, 57, 54, 54, 751, 26, 26, |
| 138187 | | - /* 1390 */ 1099, 30, 30, 219, 154, 390, 271, 191, 321, 1006, |
| 138188 | | - /* 1400 */ 192, 405, 1057, 1056, 1055, 341, 1048, 706, 1047, 1029, |
| 138189 | | - /* 1410 */ 322, 420, 1028, 71, 1095, 283, 288, 1027, 1288, 204, |
| 138190 | | - /* 1420 */ 6, 297, 79, 1184, 437, 1096, 1094, 290, 345, 292, |
| 138191 | | - /* 1430 */ 441, 1093, 294, 102, 425, 73, 423, 213, 1012, 22, |
| 138192 | | - /* 1440 */ 452, 945, 214, 1077, 216, 217, 238, 453, 306, 304, |
| 138193 | | - /* 1450 */ 307, 239, 240, 1001, 305, 125, 996, 126, 115, 235, |
| 138194 | | - /* 1460 */ 127, 665, 352, 166, 244, 179, 356, 113, 885, 883, |
| 138195 | | - /* 1470 */ 806, 136, 128, 738, 326, 138, 327, 258, 184, 899, |
| 138196 | | - /* 1480 */ 143, 129, 145, 63, 64, 65, 66, 902, 186, 187, |
| 138197 | | - /* 1490 */ 898, 8, 13, 188, 134, 265, 891, 202, 980, 387, |
| 138198 | | - /* 1500 */ 150, 149, 680, 161, 391, 193, 285, 279, 395, 151, |
| 138199 | | - /* 1510 */ 68, 717, 14, 15, 400, 69, 16, 131, 236, 825, |
| 138200 | | - /* 1520 */ 824, 853, 746, 750, 4, 70, 174, 413, 220, 222, |
| 138201 | | - /* 1530 */ 152, 779, 774, 77, 868, 74, 854, 201, 17, 852, |
| 138202 | | - /* 1540 */ 908, 206, 907, 207, 18, 857, 934, 163, 436, 210, |
| 138203 | | - /* 1550 */ 935, 164, 209, 165, 440, 856, 823, 312, 690, 87, |
| 138204 | | - /* 1560 */ 211, 309, 1281, 940, 995, 1280, |
| 138226 | + /* 0 */ 1006, 156, 156, 2, 1302, 90, 87, 179, 90, 87, |
| 138227 | + /* 10 */ 179, 460, 1048, 460, 465, 1010, 460, 333, 1130, 335, |
| 138228 | + /* 20 */ 246, 330, 112, 303, 439, 1258, 304, 419, 1129, 1087, |
| 138229 | + /* 30 */ 72, 798, 50, 50, 50, 50, 331, 30, 30, 799, |
| 138230 | + /* 40 */ 951, 364, 371, 97, 98, 88, 983, 983, 859, 862, |
| 138231 | + /* 50 */ 851, 851, 95, 95, 96, 96, 96, 96, 120, 371, |
| 138232 | + /* 60 */ 370, 120, 348, 22, 90, 87, 179, 438, 423, 438, |
| 138233 | + /* 70 */ 440, 335, 420, 385, 90, 87, 179, 116, 73, 163, |
| 138234 | + /* 80 */ 848, 848, 860, 863, 94, 94, 94, 94, 93, 93, |
| 138235 | + /* 90 */ 92, 92, 92, 91, 361, 97, 98, 88, 983, 983, |
| 138236 | + /* 100 */ 859, 862, 851, 851, 95, 95, 96, 96, 96, 96, |
| 138237 | + /* 110 */ 718, 365, 339, 93, 93, 92, 92, 92, 91, 361, |
| 138238 | + /* 120 */ 99, 371, 453, 335, 94, 94, 94, 94, 93, 93, |
| 138239 | + /* 130 */ 92, 92, 92, 91, 361, 852, 94, 94, 94, 94, |
| 138240 | + /* 140 */ 93, 93, 92, 92, 92, 91, 361, 97, 98, 88, |
| 138241 | + /* 150 */ 983, 983, 859, 862, 851, 851, 95, 95, 96, 96, |
| 138242 | + /* 160 */ 96, 96, 92, 92, 92, 91, 361, 838, 132, 195, |
| 138243 | + /* 170 */ 58, 244, 412, 409, 408, 335, 457, 457, 457, 304, |
| 138244 | + /* 180 */ 59, 332, 831, 407, 394, 962, 830, 391, 94, 94, |
| 138245 | + /* 190 */ 94, 94, 93, 93, 92, 92, 92, 91, 361, 97, |
| 138246 | + /* 200 */ 98, 88, 983, 983, 859, 862, 851, 851, 95, 95, |
| 138247 | + /* 210 */ 96, 96, 96, 96, 426, 357, 460, 830, 830, 832, |
| 138248 | + /* 220 */ 91, 361, 962, 963, 964, 195, 459, 335, 412, 409, |
| 138249 | + /* 230 */ 408, 280, 361, 820, 132, 11, 11, 50, 50, 407, |
| 138250 | + /* 240 */ 94, 94, 94, 94, 93, 93, 92, 92, 92, 91, |
| 138251 | + /* 250 */ 361, 97, 98, 88, 983, 983, 859, 862, 851, 851, |
| 138252 | + /* 260 */ 95, 95, 96, 96, 96, 96, 460, 221, 460, 264, |
| 138253 | + /* 270 */ 375, 254, 438, 428, 1276, 1276, 383, 1074, 1053, 335, |
| 138254 | + /* 280 */ 245, 422, 299, 713, 271, 271, 1074, 50, 50, 50, |
| 138255 | + /* 290 */ 50, 962, 94, 94, 94, 94, 93, 93, 92, 92, |
| 138256 | + /* 300 */ 92, 91, 361, 97, 98, 88, 983, 983, 859, 862, |
| 138257 | + /* 310 */ 851, 851, 95, 95, 96, 96, 96, 96, 90, 87, |
| 138258 | + /* 320 */ 179, 1306, 438, 437, 438, 418, 368, 253, 962, 963, |
| 138259 | + /* 330 */ 964, 335, 360, 360, 360, 706, 359, 358, 324, 962, |
| 138260 | + /* 340 */ 1281, 951, 364, 230, 94, 94, 94, 94, 93, 93, |
| 138261 | + /* 350 */ 92, 92, 92, 91, 361, 97, 98, 88, 983, 983, |
| 138262 | + /* 360 */ 859, 862, 851, 851, 95, 95, 96, 96, 96, 96, |
| 138263 | + /* 370 */ 769, 460, 120, 226, 226, 366, 962, 963, 964, 1089, |
| 138264 | + /* 380 */ 990, 900, 990, 335, 1057, 425, 421, 839, 759, 759, |
| 138265 | + /* 390 */ 425, 427, 50, 50, 432, 381, 94, 94, 94, 94, |
| 138266 | + /* 400 */ 93, 93, 92, 92, 92, 91, 361, 97, 98, 88, |
| 138267 | + /* 410 */ 983, 983, 859, 862, 851, 851, 95, 95, 96, 96, |
| 138268 | + /* 420 */ 96, 96, 460, 259, 460, 120, 117, 354, 942, 1332, |
| 138269 | + /* 430 */ 942, 1333, 1332, 278, 1333, 335, 680, 681, 682, 825, |
| 138270 | + /* 440 */ 201, 176, 303, 50, 50, 49, 49, 404, 94, 94, |
| 138271 | + /* 450 */ 94, 94, 93, 93, 92, 92, 92, 91, 361, 97, |
| 138272 | + /* 460 */ 98, 88, 983, 983, 859, 862, 851, 851, 95, 95, |
| 138273 | + /* 470 */ 96, 96, 96, 96, 199, 460, 380, 265, 433, 380, |
| 138274 | + /* 480 */ 265, 383, 256, 158, 258, 319, 1003, 335, 155, 940, |
| 138275 | + /* 490 */ 177, 940, 273, 379, 276, 322, 34, 34, 302, 962, |
| 138276 | + /* 500 */ 94, 94, 94, 94, 93, 93, 92, 92, 92, 91, |
| 138277 | + /* 510 */ 361, 97, 98, 88, 983, 983, 859, 862, 851, 851, |
| 138278 | + /* 520 */ 95, 95, 96, 96, 96, 96, 905, 905, 397, 460, |
| 138279 | + /* 530 */ 301, 158, 101, 319, 941, 340, 962, 963, 964, 313, |
| 138280 | + /* 540 */ 283, 449, 335, 327, 146, 1266, 1004, 257, 234, 248, |
| 138281 | + /* 550 */ 35, 35, 94, 94, 94, 94, 93, 93, 92, 92, |
| 138282 | + /* 560 */ 92, 91, 361, 709, 785, 1227, 97, 98, 88, 983, |
| 138283 | + /* 570 */ 983, 859, 862, 851, 851, 95, 95, 96, 96, 96, |
| 138284 | + /* 580 */ 96, 962, 1227, 1229, 245, 422, 838, 198, 197, 196, |
| 138285 | + /* 590 */ 1079, 1079, 1077, 1077, 1004, 1334, 320, 335, 172, 171, |
| 138286 | + /* 600 */ 709, 831, 159, 271, 271, 830, 76, 94, 94, 94, |
| 138287 | + /* 610 */ 94, 93, 93, 92, 92, 92, 91, 361, 962, 963, |
| 138288 | + /* 620 */ 964, 97, 98, 88, 983, 983, 859, 862, 851, 851, |
| 138289 | + /* 630 */ 95, 95, 96, 96, 96, 96, 830, 830, 832, 1157, |
| 138290 | + /* 640 */ 1157, 199, 1157, 173, 1227, 231, 232, 1282, 2, 335, |
| 138291 | + /* 650 */ 271, 764, 271, 820, 271, 271, 763, 389, 389, 389, |
| 138292 | + /* 660 */ 132, 79, 94, 94, 94, 94, 93, 93, 92, 92, |
| 138293 | + /* 670 */ 92, 91, 361, 97, 98, 88, 983, 983, 859, 862, |
| 138294 | + /* 680 */ 851, 851, 95, 95, 96, 96, 96, 96, 460, 264, |
| 138295 | + /* 690 */ 223, 460, 1257, 783, 1223, 1157, 1086, 1082, 80, 271, |
| 138296 | + /* 700 */ 78, 335, 340, 1031, 341, 344, 345, 902, 346, 10, |
| 138297 | + /* 710 */ 10, 902, 25, 25, 94, 94, 94, 94, 93, 93, |
| 138298 | + /* 720 */ 92, 92, 92, 91, 361, 97, 86, 88, 983, 983, |
| 138299 | + /* 730 */ 859, 862, 851, 851, 95, 95, 96, 96, 96, 96, |
| 138300 | + /* 740 */ 1157, 270, 395, 117, 233, 263, 235, 70, 456, 341, |
| 138301 | + /* 750 */ 225, 176, 335, 1305, 342, 133, 736, 966, 980, 249, |
| 138302 | + /* 760 */ 1150, 396, 325, 1085, 1028, 178, 94, 94, 94, 94, |
| 138303 | + /* 770 */ 93, 93, 92, 92, 92, 91, 361, 98, 88, 983, |
| 138304 | + /* 780 */ 983, 859, 862, 851, 851, 95, 95, 96, 96, 96, |
| 138305 | + /* 790 */ 96, 783, 783, 132, 120, 966, 120, 120, 120, 798, |
| 138306 | + /* 800 */ 252, 937, 335, 353, 321, 429, 355, 799, 822, 692, |
| 138307 | + /* 810 */ 390, 203, 446, 450, 372, 716, 454, 94, 94, 94, |
| 138308 | + /* 820 */ 94, 93, 93, 92, 92, 92, 91, 361, 88, 983, |
| 138309 | + /* 830 */ 983, 859, 862, 851, 851, 95, 95, 96, 96, 96, |
| 138310 | + /* 840 */ 96, 84, 455, 1225, 3, 1209, 120, 120, 382, 387, |
| 138311 | + /* 850 */ 120, 203, 1271, 716, 384, 168, 266, 203, 458, 72, |
| 138312 | + /* 860 */ 260, 1246, 84, 455, 178, 3, 378, 94, 94, 94, |
| 138313 | + /* 870 */ 94, 93, 93, 92, 92, 92, 91, 361, 350, 458, |
| 138314 | + /* 880 */ 1245, 362, 430, 213, 228, 290, 415, 285, 414, 200, |
| 138315 | + /* 890 */ 783, 882, 444, 726, 725, 405, 283, 921, 209, 921, |
| 138316 | + /* 900 */ 281, 132, 362, 72, 838, 289, 147, 733, 734, 392, |
| 138317 | + /* 910 */ 81, 82, 922, 444, 922, 267, 288, 83, 362, 462, |
| 138318 | + /* 920 */ 461, 272, 132, 830, 23, 838, 388, 923, 1216, 923, |
| 138319 | + /* 930 */ 1056, 81, 82, 84, 455, 899, 3, 899, 83, 362, |
| 138320 | + /* 940 */ 462, 461, 761, 962, 830, 75, 1, 443, 275, 747, |
| 138321 | + /* 950 */ 458, 5, 962, 204, 830, 830, 832, 833, 18, 748, |
| 138322 | + /* 960 */ 229, 962, 277, 19, 153, 317, 317, 316, 216, 314, |
| 138323 | + /* 970 */ 279, 460, 689, 362, 1055, 830, 830, 832, 833, 18, |
| 138324 | + /* 980 */ 962, 963, 964, 962, 444, 181, 460, 251, 981, 962, |
| 138325 | + /* 990 */ 963, 964, 8, 8, 20, 250, 838, 1070, 962, 963, |
| 138326 | + /* 1000 */ 964, 417, 81, 82, 768, 204, 347, 36, 36, 83, |
| 138327 | + /* 1010 */ 362, 462, 461, 1054, 284, 830, 84, 455, 1123, 3, |
| 138328 | + /* 1020 */ 962, 963, 964, 460, 183, 962, 981, 764, 889, 1107, |
| 138329 | + /* 1030 */ 460, 184, 763, 458, 132, 182, 74, 455, 460, 3, |
| 138330 | + /* 1040 */ 981, 898, 834, 898, 8, 8, 830, 830, 832, 833, |
| 138331 | + /* 1050 */ 18, 8, 8, 458, 219, 1156, 362, 1103, 349, 8, |
| 138332 | + /* 1060 */ 8, 240, 962, 963, 964, 236, 889, 444, 792, 336, |
| 138333 | + /* 1070 */ 158, 203, 885, 435, 700, 209, 362, 114, 981, 838, |
| 138334 | + /* 1080 */ 834, 227, 334, 1114, 441, 81, 82, 444, 442, 305, |
| 138335 | + /* 1090 */ 784, 306, 83, 362, 462, 461, 369, 1162, 830, 838, |
| 138336 | + /* 1100 */ 460, 1037, 237, 1030, 237, 81, 82, 7, 96, 96, |
| 138337 | + /* 1110 */ 96, 96, 83, 362, 462, 461, 1019, 1018, 830, 1020, |
| 138338 | + /* 1120 */ 1289, 37, 37, 400, 96, 96, 96, 96, 89, 830, |
| 138339 | + /* 1130 */ 830, 832, 833, 18, 1100, 318, 962, 292, 94, 94, |
| 138340 | + /* 1140 */ 94, 94, 93, 93, 92, 92, 92, 91, 361, 830, |
| 138341 | + /* 1150 */ 830, 832, 833, 18, 94, 94, 94, 94, 93, 93, |
| 138342 | + /* 1160 */ 92, 92, 92, 91, 361, 359, 358, 226, 226, 727, |
| 138343 | + /* 1170 */ 294, 296, 460, 962, 963, 964, 460, 989, 160, 425, |
| 138344 | + /* 1180 */ 170, 1295, 262, 460, 987, 374, 988, 386, 1145, 255, |
| 138345 | + /* 1190 */ 326, 460, 373, 38, 38, 410, 174, 39, 39, 413, |
| 138346 | + /* 1200 */ 460, 287, 460, 1053, 40, 40, 298, 728, 1220, 990, |
| 138347 | + /* 1210 */ 445, 990, 26, 26, 1219, 460, 311, 460, 169, 1292, |
| 138348 | + /* 1220 */ 460, 27, 27, 29, 29, 998, 460, 206, 135, 995, |
| 138349 | + /* 1230 */ 1265, 1263, 460, 57, 60, 460, 41, 41, 42, 42, |
| 138350 | + /* 1240 */ 460, 43, 43, 460, 343, 351, 460, 9, 9, 460, |
| 138351 | + /* 1250 */ 144, 460, 130, 44, 44, 460, 103, 103, 460, 137, |
| 138352 | + /* 1260 */ 70, 45, 45, 460, 46, 46, 460, 31, 31, 1142, |
| 138353 | + /* 1270 */ 47, 47, 48, 48, 460, 376, 32, 32, 460, 122, |
| 138354 | + /* 1280 */ 122, 460, 157, 460, 123, 123, 139, 124, 124, 460, |
| 138355 | + /* 1290 */ 186, 460, 377, 460, 115, 54, 54, 460, 403, 33, |
| 138356 | + /* 1300 */ 33, 460, 104, 104, 51, 51, 460, 161, 460, 140, |
| 138357 | + /* 1310 */ 105, 105, 106, 106, 102, 102, 460, 141, 121, 121, |
| 138358 | + /* 1320 */ 460, 142, 119, 119, 190, 460, 1152, 110, 110, 109, |
| 138359 | + /* 1330 */ 109, 702, 460, 148, 393, 65, 460, 107, 107, 460, |
| 138360 | + /* 1340 */ 323, 108, 108, 399, 460, 1234, 53, 53, 1214, 269, |
| 138361 | + /* 1350 */ 154, 416, 1115, 55, 55, 220, 401, 52, 52, 191, |
| 138362 | + /* 1360 */ 24, 24, 274, 192, 193, 28, 28, 1021, 328, 702, |
| 138363 | + /* 1370 */ 1073, 352, 1072, 718, 1071, 431, 1111, 1064, 329, 1045, |
| 138364 | + /* 1380 */ 69, 205, 6, 291, 1044, 286, 1112, 1043, 1304, 1110, |
| 138365 | + /* 1390 */ 293, 300, 295, 297, 1063, 1200, 1109, 77, 241, 448, |
| 138366 | + /* 1400 */ 356, 452, 436, 100, 214, 71, 434, 1027, 1093, 21, |
| 138367 | + /* 1410 */ 463, 242, 243, 957, 215, 217, 218, 464, 309, 307, |
| 138368 | + /* 1420 */ 308, 310, 1016, 125, 1250, 1251, 1011, 1249, 126, 127, |
| 138369 | + /* 1430 */ 1248, 113, 676, 337, 238, 338, 134, 363, 167, 1041, |
| 138370 | + /* 1440 */ 1040, 56, 247, 367, 180, 897, 111, 895, 136, 1038, |
| 138371 | + /* 1450 */ 818, 128, 138, 750, 261, 911, 185, 143, 145, 61, |
| 138372 | + /* 1460 */ 62, 63, 64, 129, 914, 187, 188, 910, 118, 12, |
| 138373 | + /* 1470 */ 189, 903, 268, 992, 203, 162, 398, 150, 149, 691, |
| 138374 | + /* 1480 */ 402, 288, 194, 406, 151, 411, 66, 13, 729, 239, |
| 138375 | + /* 1490 */ 282, 14, 67, 131, 837, 836, 865, 758, 15, 4, |
| 138376 | + /* 1500 */ 68, 762, 175, 222, 224, 424, 152, 869, 791, 202, |
| 138377 | + /* 1510 */ 786, 75, 72, 880, 866, 864, 16, 17, 920, 207, |
| 138378 | + /* 1520 */ 919, 208, 447, 946, 164, 211, 947, 210, 165, 451, |
| 138379 | + /* 1530 */ 868, 166, 315, 835, 701, 85, 212, 1297, 312, 952, |
| 138380 | + /* 1540 */ 1296, |
| 138205 | 138381 | }; |
| 138206 | 138382 | static const YYCODETYPE yy_lookahead[] = { |
| 138207 | | - /* 0 */ 19, 144, 145, 146, 147, 24, 90, 91, 92, 93, |
| 138208 | | - /* 10 */ 94, 54, 55, 56, 57, 58, 88, 89, 90, 91, |
| 138209 | | - /* 20 */ 92, 93, 94, 152, 43, 44, 45, 46, 47, 48, |
| 138210 | | - /* 30 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 94, |
| 138211 | | - /* 40 */ 59, 84, 85, 86, 87, 88, 89, 90, 91, 92, |
| 138212 | | - /* 50 */ 93, 94, 59, 84, 85, 86, 87, 88, 89, 90, |
| 138213 | | - /* 60 */ 91, 92, 93, 94, 193, 84, 85, 86, 87, 88, |
| 138214 | | - /* 70 */ 89, 90, 91, 92, 93, 94, 194, 195, 97, 79, |
| 138215 | | - /* 80 */ 11, 88, 89, 152, 26, 19, 171, 152, 206, 96, |
| 138216 | | - /* 90 */ 97, 98, 72, 100, 179, 59, 152, 31, 163, 79, |
| 138217 | | - /* 100 */ 107, 219, 109, 172, 173, 39, 79, 172, 173, 43, |
| 138218 | | - /* 110 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, |
| 138219 | | - /* 120 */ 54, 55, 56, 57, 152, 132, 199, 134, 108, 109, |
| 138220 | | - /* 130 */ 110, 196, 96, 97, 98, 99, 209, 19, 102, 103, |
| 138221 | | - /* 140 */ 104, 72, 207, 208, 26, 72, 119, 120, 79, 113, |
| 138222 | | - /* 150 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, |
| 138223 | | - /* 160 */ 94, 43, 44, 45, 46, 47, 48, 49, 50, 51, |
| 138224 | | - /* 170 */ 52, 53, 54, 55, 56, 57, 31, 108, 109, 110, |
| 138225 | | - /* 180 */ 82, 108, 109, 110, 39, 210, 68, 175, 130, 19, |
| 138226 | | - /* 190 */ 218, 175, 119, 120, 250, 97, 221, 222, 223, 101, |
| 138227 | | - /* 200 */ 172, 152, 84, 85, 86, 87, 88, 89, 90, 91, |
| 138228 | | - /* 210 */ 92, 93, 94, 43, 44, 45, 46, 47, 48, 49, |
| 138229 | | - /* 220 */ 50, 51, 52, 53, 54, 55, 56, 57, 152, 152, |
| 138230 | | - /* 230 */ 132, 133, 134, 221, 222, 223, 66, 221, 222, 223, |
| 138231 | | - /* 240 */ 172, 19, 193, 22, 23, 152, 24, 26, 172, 173, |
| 138232 | | - /* 250 */ 46, 47, 48, 49, 84, 85, 86, 87, 88, 89, |
| 138233 | | - /* 260 */ 90, 91, 92, 93, 94, 43, 44, 45, 46, 47, |
| 138234 | | - /* 270 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 138235 | | - /* 280 */ 221, 222, 223, 207, 208, 46, 22, 23, 148, 149, |
| 138236 | | - /* 290 */ 26, 242, 172, 19, 154, 218, 156, 23, 88, 89, |
| 138237 | | - /* 300 */ 241, 59, 163, 163, 83, 101, 84, 85, 86, 87, |
| 138238 | | - /* 310 */ 88, 89, 90, 91, 92, 93, 94, 43, 44, 45, |
| 138239 | | - /* 320 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 138240 | | - /* 330 */ 56, 57, 152, 157, 152, 196, 196, 16, 96, 97, |
| 138241 | | - /* 340 */ 98, 26, 132, 250, 134, 19, 107, 83, 59, 23, |
| 138242 | | - /* 350 */ 211, 212, 172, 173, 172, 173, 1, 2, 84, 85, |
| 138243 | | - /* 360 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 43, |
| 138244 | | - /* 370 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, |
| 138245 | | - /* 380 */ 54, 55, 56, 57, 244, 152, 97, 207, 208, 207, |
| 138246 | | - /* 390 */ 208, 185, 221, 222, 223, 152, 75, 19, 77, 179, |
| 138247 | | - /* 400 */ 180, 23, 93, 94, 228, 172, 173, 231, 188, 152, |
| 138248 | | - /* 410 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, |
| 138249 | | - /* 420 */ 94, 43, 44, 45, 46, 47, 48, 49, 50, 51, |
| 138250 | | - /* 430 */ 52, 53, 54, 55, 56, 57, 193, 152, 123, 152, |
| 138251 | | - /* 440 */ 207, 208, 152, 168, 169, 170, 168, 169, 170, 19, |
| 138252 | | - /* 450 */ 160, 22, 23, 23, 164, 119, 120, 172, 173, 172, |
| 138253 | | - /* 460 */ 173, 140, 84, 85, 86, 87, 88, 89, 90, 91, |
| 138254 | | - /* 470 */ 92, 93, 94, 43, 44, 45, 46, 47, 48, 49, |
| 138255 | | - /* 480 */ 50, 51, 52, 53, 54, 55, 56, 57, 99, 22, |
| 138256 | | - /* 490 */ 23, 102, 103, 104, 194, 195, 0, 1, 2, 247, |
| 138257 | | - /* 500 */ 248, 19, 113, 190, 191, 23, 206, 190, 191, 59, |
| 138258 | | - /* 510 */ 225, 152, 83, 152, 84, 85, 86, 87, 88, 89, |
| 138259 | | - /* 520 */ 90, 91, 92, 93, 94, 43, 44, 45, 46, 47, |
| 138260 | | - /* 530 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 138261 | | - /* 540 */ 90, 181, 152, 108, 109, 110, 96, 97, 98, 115, |
| 138262 | | - /* 550 */ 83, 117, 118, 19, 193, 152, 23, 152, 152, 26, |
| 138263 | | - /* 560 */ 29, 152, 172, 173, 33, 152, 84, 85, 86, 87, |
| 138264 | | - /* 570 */ 88, 89, 90, 91, 92, 93, 94, 43, 44, 45, |
| 138265 | | - /* 580 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 138266 | | - /* 590 */ 56, 57, 22, 152, 16, 64, 193, 207, 152, 193, |
| 138267 | | - /* 600 */ 12, 7, 8, 9, 152, 108, 109, 110, 19, 152, |
| 138268 | | - /* 610 */ 164, 146, 147, 172, 173, 27, 163, 181, 84, 85, |
| 138269 | | - /* 620 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 59, |
| 138270 | | - /* 630 */ 42, 98, 43, 44, 45, 46, 47, 48, 49, 50, |
| 138271 | | - /* 640 */ 51, 52, 53, 54, 55, 56, 57, 238, 22, 196, |
| 138272 | | - /* 650 */ 62, 163, 82, 75, 152, 77, 152, 124, 88, 89, |
| 138273 | | - /* 660 */ 72, 152, 137, 19, 139, 152, 96, 97, 24, 152, |
| 138274 | | - /* 670 */ 152, 101, 138, 84, 85, 86, 87, 88, 89, 90, |
| 138275 | | - /* 680 */ 91, 92, 93, 94, 196, 59, 19, 43, 44, 45, |
| 138276 | | - /* 690 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 138277 | | - /* 700 */ 56, 57, 132, 133, 134, 152, 193, 219, 245, 246, |
| 138278 | | - /* 710 */ 193, 152, 152, 46, 152, 19, 166, 167, 152, 217, |
| 138279 | | - /* 720 */ 232, 217, 96, 97, 98, 237, 217, 138, 84, 85, |
| 138280 | | - /* 730 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 43, |
| 138281 | | - /* 740 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, |
| 138282 | | - /* 750 */ 54, 55, 56, 57, 79, 193, 238, 166, 167, 211, |
| 138283 | | - /* 760 */ 212, 23, 23, 116, 26, 26, 195, 19, 121, 152, |
| 138284 | | - /* 770 */ 217, 152, 152, 152, 107, 100, 217, 206, 163, 112, |
| 138285 | | - /* 780 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, |
| 138286 | | - /* 790 */ 94, 43, 44, 45, 46, 47, 48, 49, 50, 51, |
| 138287 | | - /* 800 */ 52, 53, 54, 55, 56, 57, 187, 187, 7, 8, |
| 138288 | | - /* 810 */ 152, 196, 22, 132, 24, 134, 23, 23, 19, 26, |
| 138289 | | - /* 820 */ 26, 23, 152, 23, 26, 23, 26, 59, 26, 163, |
| 138290 | | - /* 830 */ 172, 173, 84, 85, 86, 87, 88, 89, 90, 91, |
| 138291 | | - /* 840 */ 92, 93, 94, 44, 45, 46, 47, 48, 49, 50, |
| 138292 | | - /* 850 */ 51, 52, 53, 54, 55, 56, 57, 152, 26, 238, |
| 138293 | | - /* 860 */ 152, 23, 196, 101, 26, 97, 100, 101, 19, 19, |
| 138294 | | - /* 870 */ 23, 59, 152, 26, 112, 152, 23, 172, 173, 26, |
| 138295 | | - /* 880 */ 172, 173, 19, 84, 85, 86, 87, 88, 89, 90, |
| 138296 | | - /* 890 */ 91, 92, 93, 94, 45, 46, 47, 48, 49, 50, |
| 138297 | | - /* 900 */ 51, 52, 53, 54, 55, 56, 57, 19, 20, 97, |
| 138298 | | - /* 910 */ 22, 23, 207, 163, 23, 163, 132, 26, 134, 23, |
| 138299 | | - /* 920 */ 213, 152, 26, 59, 36, 152, 22, 152, 19, 20, |
| 138300 | | - /* 930 */ 98, 22, 152, 84, 85, 86, 87, 88, 89, 90, |
| 138301 | | - /* 940 */ 91, 92, 93, 94, 94, 36, 196, 59, 196, 99, |
| 138302 | | - /* 950 */ 100, 101, 102, 103, 104, 105, 124, 59, 70, 96, |
| 138303 | | - /* 960 */ 163, 97, 112, 59, 181, 152, 152, 79, 59, 71, |
| 138304 | | - /* 970 */ 82, 19, 26, 152, 152, 152, 88, 89, 152, 70, |
| 138305 | | - /* 980 */ 22, 152, 163, 95, 96, 97, 98, 152, 79, 101, |
| 138306 | | - /* 990 */ 22, 82, 152, 196, 96, 97, 98, 88, 89, 19, |
| 138307 | | - /* 1000 */ 20, 97, 22, 163, 95, 96, 97, 98, 152, 22, |
| 138308 | | - /* 1010 */ 101, 24, 172, 173, 152, 196, 36, 59, 22, 152, |
| 138309 | | - /* 1020 */ 132, 133, 134, 135, 136, 24, 5, 59, 172, 173, |
| 138310 | | - /* 1030 */ 152, 10, 11, 12, 13, 14, 196, 152, 17, 59, |
| 138311 | | - /* 1040 */ 210, 132, 133, 134, 135, 136, 59, 207, 96, 22, |
| 138312 | | - /* 1050 */ 70, 30, 106, 32, 96, 97, 98, 172, 173, 152, |
| 138313 | | - /* 1060 */ 59, 40, 82, 152, 96, 97, 98, 152, 88, 89, |
| 138314 | | - /* 1070 */ 90, 186, 59, 22, 191, 95, 96, 97, 98, 172, |
| 138315 | | - /* 1080 */ 173, 101, 19, 20, 97, 22, 59, 152, 152, 152, |
| 138316 | | - /* 1090 */ 69, 59, 152, 186, 152, 152, 152, 76, 97, 36, |
| 138317 | | - /* 1100 */ 79, 80, 19, 20, 53, 22, 152, 172, 173, 96, |
| 138318 | | - /* 1110 */ 97, 98, 132, 133, 134, 135, 136, 35, 122, 36, |
| 138319 | | - /* 1120 */ 234, 186, 59, 96, 97, 98, 172, 173, 96, 97, |
| 138320 | | - /* 1130 */ 98, 152, 233, 70, 152, 114, 152, 124, 210, 210, |
| 138321 | | - /* 1140 */ 186, 210, 59, 198, 197, 82, 214, 65, 150, 152, |
| 138322 | | - /* 1150 */ 201, 88, 89, 70, 201, 73, 124, 239, 95, 96, |
| 138323 | | - /* 1160 */ 97, 98, 141, 239, 101, 82, 169, 170, 176, 152, |
| 138324 | | - /* 1170 */ 152, 88, 89, 21, 54, 55, 56, 57, 95, 96, |
| 138325 | | - /* 1180 */ 97, 98, 164, 214, 101, 214, 169, 170, 163, 184, |
| 138326 | | - /* 1190 */ 180, 175, 227, 111, 175, 132, 133, 134, 135, 136, |
| 138327 | | - /* 1200 */ 200, 183, 152, 185, 84, 85, 86, 87, 88, 89, |
| 138328 | | - /* 1210 */ 90, 91, 92, 93, 94, 132, 133, 134, 135, 136, |
| 138329 | | - /* 1220 */ 12, 196, 172, 173, 175, 152, 198, 230, 152, 155, |
| 138330 | | - /* 1230 */ 78, 152, 243, 152, 60, 27, 152, 159, 152, 159, |
| 138331 | | - /* 1240 */ 152, 122, 38, 152, 219, 172, 173, 230, 172, 173, |
| 138332 | | - /* 1250 */ 42, 172, 173, 172, 173, 103, 172, 173, 172, 173, |
| 138333 | | - /* 1260 */ 172, 173, 237, 172, 173, 152, 240, 152, 159, 152, |
| 138334 | | - /* 1270 */ 62, 240, 22, 220, 152, 43, 152, 130, 152, 189, |
| 138335 | | - /* 1280 */ 152, 18, 152, 18, 192, 172, 173, 172, 173, 172, |
| 138336 | | - /* 1290 */ 173, 192, 140, 152, 172, 173, 172, 173, 172, 173, |
| 138337 | | - /* 1300 */ 172, 173, 172, 173, 201, 152, 192, 159, 152, 158, |
| 138338 | | - /* 1310 */ 192, 152, 201, 172, 173, 152, 220, 152, 189, 152, |
| 138339 | | - /* 1320 */ 189, 159, 152, 137, 152, 172, 173, 152, 172, 173, |
| 138340 | | - /* 1330 */ 152, 172, 173, 152, 201, 172, 173, 172, 173, 172, |
| 138341 | | - /* 1340 */ 173, 152, 172, 173, 172, 173, 152, 172, 173, 152, |
| 138342 | | - /* 1350 */ 172, 173, 152, 172, 173, 152, 90, 152, 61, 152, |
| 138343 | | - /* 1360 */ 158, 172, 173, 152, 158, 152, 172, 173, 152, 172, |
| 138344 | | - /* 1370 */ 173, 152, 172, 173, 236, 172, 173, 172, 173, 172, |
| 138345 | | - /* 1380 */ 173, 235, 116, 172, 173, 172, 173, 121, 172, 173, |
| 138346 | | - /* 1390 */ 159, 172, 173, 159, 22, 177, 159, 158, 177, 159, |
| 138347 | | - /* 1400 */ 158, 107, 174, 174, 174, 63, 182, 106, 182, 174, |
| 138348 | | - /* 1410 */ 177, 125, 176, 107, 216, 174, 215, 174, 174, 159, |
| 138349 | | - /* 1420 */ 22, 159, 137, 224, 177, 216, 216, 215, 94, 215, |
| 138350 | | - /* 1430 */ 177, 216, 215, 129, 126, 128, 127, 25, 162, 26, |
| 138351 | | - /* 1440 */ 161, 13, 153, 205, 153, 6, 226, 151, 202, 204, |
| 138352 | | - /* 1450 */ 201, 229, 229, 151, 203, 165, 151, 165, 178, 178, |
| 138353 | | - /* 1460 */ 165, 4, 3, 22, 142, 15, 81, 16, 23, 23, |
| 138354 | | - /* 1470 */ 120, 131, 111, 20, 249, 123, 249, 16, 125, 1, |
| 138355 | | - /* 1480 */ 123, 111, 131, 53, 53, 53, 53, 96, 34, 122, |
| 138356 | | - /* 1490 */ 1, 5, 22, 107, 246, 140, 67, 26, 74, 41, |
| 138357 | | - /* 1500 */ 107, 67, 20, 24, 19, 105, 112, 23, 66, 22, |
| 138358 | | - /* 1510 */ 22, 28, 22, 22, 66, 22, 22, 37, 66, 23, |
| 138359 | | - /* 1520 */ 23, 23, 116, 23, 22, 26, 122, 26, 23, 23, |
| 138360 | | - /* 1530 */ 22, 96, 124, 26, 23, 26, 23, 34, 34, 23, |
| 138361 | | - /* 1540 */ 23, 26, 23, 22, 34, 11, 23, 22, 24, 122, |
| 138362 | | - /* 1550 */ 23, 22, 26, 22, 24, 23, 23, 15, 23, 22, |
| 138363 | | - /* 1560 */ 122, 23, 122, 1, 251, 122, |
| 138364 | | -}; |
| 138365 | | -#define YY_SHIFT_USE_DFLT (1566) |
| 138366 | | -#define YY_SHIFT_COUNT (454) |
| 138367 | | -#define YY_SHIFT_MIN (-84) |
| 138368 | | -#define YY_SHIFT_MAX (1562) |
| 138369 | | -static const short yy_shift_ofst[] = { |
| 138370 | | - /* 0 */ 355, 888, 1021, 909, 1063, 1063, 1063, 1063, 20, -19, |
| 138371 | | - /* 10 */ 66, 66, 170, 1063, 1063, 1063, 1063, 1063, 1063, 1063, |
| 138372 | | - /* 20 */ -7, -7, 36, 73, 69, 27, 118, 222, 274, 326, |
| 138373 | | - /* 30 */ 378, 430, 482, 534, 589, 644, 696, 696, 696, 696, |
| 138374 | | - /* 40 */ 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, |
| 138375 | | - /* 50 */ 696, 696, 696, 748, 696, 799, 849, 849, 980, 1063, |
| 138376 | | - /* 60 */ 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, |
| 138377 | | - /* 70 */ 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, |
| 138378 | | - /* 80 */ 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, |
| 138379 | | - /* 90 */ 1083, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, |
| 138380 | | - /* 100 */ 1063, 1063, 1063, 1063, -43, 1120, 1120, 1120, 1120, 1120, |
| 138381 | | - /* 110 */ -31, -72, -84, 242, 1152, 667, 210, 210, 242, 309, |
| 138382 | | - /* 120 */ 336, -55, 1566, 1566, 1566, 850, 850, 850, 626, 626, |
| 138383 | | - /* 130 */ 588, 588, 898, 221, 264, 242, 242, 242, 242, 242, |
| 138384 | | - /* 140 */ 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, |
| 138385 | | - /* 150 */ 242, 242, 242, 242, 242, 496, 675, 289, 289, 336, |
| 138386 | | - /* 160 */ 0, 0, 0, 0, 0, 0, 1566, 1566, 1566, 570, |
| 138387 | | - /* 170 */ 98, 98, 958, 389, 450, 968, 1013, 1032, 1027, 242, |
| 138388 | | - /* 180 */ 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, |
| 138389 | | - /* 190 */ 242, 242, 242, 242, 242, 1082, 1082, 1082, 242, 242, |
| 138390 | | - /* 200 */ 533, 242, 242, 242, 987, 242, 242, 1208, 242, 242, |
| 138391 | | - /* 210 */ 242, 242, 242, 242, 242, 242, 242, 242, 435, 531, |
| 138392 | | - /* 220 */ 1001, 1001, 1001, 832, 434, 1266, 594, 58, 863, 863, |
| 138393 | | - /* 230 */ 952, 58, 952, 946, 738, 239, 145, 863, 525, 145, |
| 138394 | | - /* 240 */ 145, 315, 647, 790, 1174, 1119, 1119, 1204, 1204, 1119, |
| 138395 | | - /* 250 */ 1250, 1232, 1147, 1263, 1263, 1263, 1263, 1119, 1265, 1147, |
| 138396 | | - /* 260 */ 1250, 1232, 1232, 1147, 1119, 1265, 1186, 1297, 1119, 1119, |
| 138397 | | - /* 270 */ 1265, 1372, 1119, 1265, 1119, 1265, 1372, 1294, 1294, 1294, |
| 138398 | | - /* 280 */ 1342, 1372, 1294, 1301, 1294, 1342, 1294, 1294, 1286, 1306, |
| 138399 | | - /* 290 */ 1286, 1306, 1286, 1306, 1286, 1306, 1119, 1398, 1119, 1285, |
| 138400 | | - /* 300 */ 1372, 1334, 1334, 1372, 1304, 1308, 1307, 1309, 1147, 1412, |
| 138401 | | - /* 310 */ 1413, 1428, 1428, 1439, 1439, 1439, 1566, 1566, 1566, 1566, |
| 138402 | | - /* 320 */ 1566, 1566, 1566, 1566, 204, 321, 429, 467, 578, 497, |
| 138403 | | - /* 330 */ 904, 739, 1051, 793, 794, 798, 800, 802, 838, 768, |
| 138404 | | - /* 340 */ 766, 801, 762, 847, 853, 812, 891, 681, 784, 896, |
| 138405 | | - /* 350 */ 864, 996, 1457, 1459, 1441, 1322, 1450, 1385, 1451, 1445, |
| 138406 | | - /* 360 */ 1446, 1350, 1340, 1361, 1352, 1453, 1353, 1461, 1478, 1357, |
| 138407 | | - /* 370 */ 1351, 1430, 1431, 1432, 1433, 1370, 1391, 1454, 1367, 1489, |
| 138408 | | - /* 380 */ 1486, 1470, 1386, 1355, 1429, 1471, 1434, 1424, 1458, 1393, |
| 138409 | | - /* 390 */ 1479, 1482, 1485, 1394, 1400, 1487, 1442, 1488, 1490, 1484, |
| 138410 | | - /* 400 */ 1491, 1448, 1483, 1493, 1452, 1480, 1496, 1497, 1498, 1499, |
| 138411 | | - /* 410 */ 1406, 1494, 1500, 1502, 1501, 1404, 1505, 1506, 1435, 1503, |
| 138412 | | - /* 420 */ 1508, 1408, 1507, 1504, 1509, 1510, 1511, 1507, 1513, 1516, |
| 138413 | | - /* 430 */ 1517, 1515, 1519, 1521, 1534, 1523, 1525, 1524, 1526, 1527, |
| 138414 | | - /* 440 */ 1529, 1530, 1526, 1532, 1531, 1533, 1535, 1537, 1427, 1438, |
| 138415 | | - /* 450 */ 1440, 1443, 1538, 1542, 1562, |
| 138416 | | -}; |
| 138417 | | -#define YY_REDUCE_USE_DFLT (-144) |
| 138418 | | -#define YY_REDUCE_COUNT (323) |
| 138419 | | -#define YY_REDUCE_MIN (-143) |
| 138420 | | -#define YY_REDUCE_MAX (1305) |
| 138383 | + /* 0 */ 144, 145, 146, 147, 172, 222, 223, 224, 222, 223, |
| 138384 | + /* 10 */ 224, 152, 180, 152, 148, 149, 152, 173, 176, 19, |
| 138385 | + /* 20 */ 154, 173, 156, 152, 163, 242, 152, 163, 176, 163, |
| 138386 | + /* 30 */ 26, 31, 173, 174, 173, 174, 173, 173, 174, 39, |
| 138387 | + /* 40 */ 1, 2, 152, 43, 44, 45, 46, 47, 48, 49, |
| 138388 | + /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 197, 169, |
| 138389 | + /* 60 */ 170, 197, 188, 197, 222, 223, 224, 208, 209, 208, |
| 138390 | + /* 70 */ 209, 19, 208, 152, 222, 223, 224, 22, 26, 24, |
| 138391 | + /* 80 */ 46, 47, 48, 49, 84, 85, 86, 87, 88, 89, |
| 138392 | + /* 90 */ 90, 91, 92, 93, 94, 43, 44, 45, 46, 47, |
| 138393 | + /* 100 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 138394 | + /* 110 */ 106, 245, 157, 88, 89, 90, 91, 92, 93, 94, |
| 138395 | + /* 120 */ 68, 231, 251, 19, 84, 85, 86, 87, 88, 89, |
| 138396 | + /* 130 */ 90, 91, 92, 93, 94, 101, 84, 85, 86, 87, |
| 138397 | + /* 140 */ 88, 89, 90, 91, 92, 93, 94, 43, 44, 45, |
| 138398 | + /* 150 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 138399 | + /* 160 */ 56, 57, 90, 91, 92, 93, 94, 82, 79, 99, |
| 138400 | + /* 170 */ 66, 200, 102, 103, 104, 19, 168, 169, 170, 152, |
| 138401 | + /* 180 */ 24, 210, 97, 113, 229, 59, 101, 232, 84, 85, |
| 138402 | + /* 190 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 43, |
| 138403 | + /* 200 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, |
| 138404 | + /* 210 */ 54, 55, 56, 57, 152, 188, 152, 132, 133, 134, |
| 138405 | + /* 220 */ 93, 94, 96, 97, 98, 99, 152, 19, 102, 103, |
| 138406 | + /* 230 */ 104, 23, 94, 72, 79, 173, 174, 173, 174, 113, |
| 138407 | + /* 240 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, |
| 138408 | + /* 250 */ 94, 43, 44, 45, 46, 47, 48, 49, 50, 51, |
| 138409 | + /* 260 */ 52, 53, 54, 55, 56, 57, 152, 171, 152, 108, |
| 138410 | + /* 270 */ 109, 110, 208, 209, 119, 120, 152, 180, 181, 19, |
| 138411 | + /* 280 */ 119, 120, 152, 23, 152, 152, 189, 173, 174, 173, |
| 138412 | + /* 290 */ 174, 59, 84, 85, 86, 87, 88, 89, 90, 91, |
| 138413 | + /* 300 */ 92, 93, 94, 43, 44, 45, 46, 47, 48, 49, |
| 138414 | + /* 310 */ 50, 51, 52, 53, 54, 55, 56, 57, 222, 223, |
| 138415 | + /* 320 */ 224, 186, 208, 209, 208, 209, 194, 194, 96, 97, |
| 138416 | + /* 330 */ 98, 19, 168, 169, 170, 23, 88, 89, 163, 59, |
| 138417 | + /* 340 */ 0, 1, 2, 219, 84, 85, 86, 87, 88, 89, |
| 138418 | + /* 350 */ 90, 91, 92, 93, 94, 43, 44, 45, 46, 47, |
| 138419 | + /* 360 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 138420 | + /* 370 */ 90, 152, 197, 195, 196, 243, 96, 97, 98, 196, |
| 138421 | + /* 380 */ 132, 11, 134, 19, 182, 207, 115, 23, 117, 118, |
| 138422 | + /* 390 */ 207, 163, 173, 174, 152, 220, 84, 85, 86, 87, |
| 138423 | + /* 400 */ 88, 89, 90, 91, 92, 93, 94, 43, 44, 45, |
| 138424 | + /* 410 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, |
| 138425 | + /* 420 */ 56, 57, 152, 16, 152, 197, 171, 208, 22, 23, |
| 138426 | + /* 430 */ 22, 23, 26, 16, 26, 19, 7, 8, 9, 23, |
| 138427 | + /* 440 */ 212, 213, 152, 173, 174, 173, 174, 19, 84, 85, |
| 138428 | + /* 450 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 43, |
| 138429 | + /* 460 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, |
| 138430 | + /* 470 */ 54, 55, 56, 57, 46, 152, 109, 110, 208, 109, |
| 138431 | + /* 480 */ 110, 152, 75, 152, 77, 22, 23, 19, 233, 83, |
| 138432 | + /* 490 */ 152, 83, 75, 238, 77, 164, 173, 174, 226, 59, |
| 138433 | + /* 500 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, |
| 138434 | + /* 510 */ 94, 43, 44, 45, 46, 47, 48, 49, 50, 51, |
| 138435 | + /* 520 */ 52, 53, 54, 55, 56, 57, 108, 109, 110, 152, |
| 138436 | + /* 530 */ 152, 152, 22, 22, 23, 107, 96, 97, 98, 160, |
| 138437 | + /* 540 */ 112, 251, 19, 164, 22, 152, 83, 140, 219, 152, |
| 138438 | + /* 550 */ 173, 174, 84, 85, 86, 87, 88, 89, 90, 91, |
| 138439 | + /* 560 */ 92, 93, 94, 59, 124, 152, 43, 44, 45, 46, |
| 138440 | + /* 570 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, |
| 138441 | + /* 580 */ 57, 59, 169, 170, 119, 120, 82, 108, 109, 110, |
| 138442 | + /* 590 */ 191, 192, 191, 192, 83, 248, 249, 19, 88, 89, |
| 138443 | + /* 600 */ 96, 97, 24, 152, 152, 101, 138, 84, 85, 86, |
| 138444 | + /* 610 */ 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, |
| 138445 | + /* 620 */ 98, 43, 44, 45, 46, 47, 48, 49, 50, 51, |
| 138446 | + /* 630 */ 52, 53, 54, 55, 56, 57, 132, 133, 134, 152, |
| 138447 | + /* 640 */ 152, 46, 152, 26, 231, 194, 194, 146, 147, 19, |
| 138448 | + /* 650 */ 152, 116, 152, 72, 152, 152, 121, 152, 152, 152, |
| 138449 | + /* 660 */ 79, 138, 84, 85, 86, 87, 88, 89, 90, 91, |
| 138450 | + /* 670 */ 92, 93, 94, 43, 44, 45, 46, 47, 48, 49, |
| 138451 | + /* 680 */ 50, 51, 52, 53, 54, 55, 56, 57, 152, 108, |
| 138452 | + /* 690 */ 23, 152, 194, 26, 194, 152, 194, 194, 137, 152, |
| 138453 | + /* 700 */ 139, 19, 107, 166, 167, 218, 218, 29, 218, 173, |
| 138454 | + /* 710 */ 174, 33, 173, 174, 84, 85, 86, 87, 88, 89, |
| 138455 | + /* 720 */ 90, 91, 92, 93, 94, 43, 44, 45, 46, 47, |
| 138456 | + /* 730 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, |
| 138457 | + /* 740 */ 152, 194, 64, 171, 239, 239, 239, 130, 166, 167, |
| 138458 | + /* 750 */ 212, 213, 19, 23, 246, 247, 26, 59, 26, 152, |
| 138459 | + /* 760 */ 163, 218, 163, 163, 163, 98, 84, 85, 86, 87, |
| 138460 | + /* 770 */ 88, 89, 90, 91, 92, 93, 94, 44, 45, 46, |
| 138461 | + /* 780 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, |
| 138462 | + /* 790 */ 57, 124, 26, 79, 197, 97, 197, 197, 197, 31, |
| 138463 | + /* 800 */ 152, 23, 19, 19, 26, 19, 218, 39, 23, 21, |
| 138464 | + /* 810 */ 238, 26, 163, 163, 100, 59, 163, 84, 85, 86, |
| 138465 | + /* 820 */ 87, 88, 89, 90, 91, 92, 93, 94, 45, 46, |
| 138466 | + /* 830 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, |
| 138467 | + /* 840 */ 57, 19, 20, 152, 22, 23, 197, 197, 23, 19, |
| 138468 | + /* 850 */ 197, 26, 152, 97, 23, 123, 23, 26, 36, 26, |
| 138469 | + /* 860 */ 152, 152, 19, 20, 98, 22, 78, 84, 85, 86, |
| 138470 | + /* 870 */ 87, 88, 89, 90, 91, 92, 93, 94, 94, 36, |
| 138471 | + /* 880 */ 152, 59, 96, 99, 100, 101, 102, 103, 104, 105, |
| 138472 | + /* 890 */ 124, 103, 70, 100, 101, 23, 112, 12, 26, 12, |
| 138473 | + /* 900 */ 23, 79, 59, 26, 82, 101, 22, 7, 8, 152, |
| 138474 | + /* 910 */ 88, 89, 27, 70, 27, 152, 112, 95, 96, 97, |
| 138475 | + /* 920 */ 98, 152, 79, 101, 22, 82, 96, 42, 140, 42, |
| 138476 | + /* 930 */ 182, 88, 89, 19, 20, 132, 22, 134, 95, 96, |
| 138477 | + /* 940 */ 97, 98, 23, 59, 101, 26, 22, 62, 152, 62, |
| 138478 | + /* 950 */ 36, 22, 59, 24, 132, 133, 134, 135, 136, 72, |
| 138479 | + /* 960 */ 5, 59, 152, 22, 71, 10, 11, 12, 13, 14, |
| 138480 | + /* 970 */ 152, 152, 17, 59, 182, 132, 133, 134, 135, 136, |
| 138481 | + /* 980 */ 96, 97, 98, 59, 70, 30, 152, 32, 59, 96, |
| 138482 | + /* 990 */ 97, 98, 173, 174, 53, 40, 82, 152, 96, 97, |
| 138483 | + /* 1000 */ 98, 90, 88, 89, 90, 24, 187, 173, 174, 95, |
| 138484 | + /* 1010 */ 96, 97, 98, 152, 152, 101, 19, 20, 152, 22, |
| 138485 | + /* 1020 */ 96, 97, 98, 152, 69, 59, 97, 116, 59, 214, |
| 138486 | + /* 1030 */ 152, 76, 121, 36, 79, 80, 19, 20, 152, 22, |
| 138487 | + /* 1040 */ 59, 132, 59, 134, 173, 174, 132, 133, 134, 135, |
| 138488 | + /* 1050 */ 136, 173, 174, 36, 234, 152, 59, 152, 187, 173, |
| 138489 | + /* 1060 */ 174, 211, 96, 97, 98, 187, 97, 70, 23, 114, |
| 138490 | + /* 1070 */ 152, 26, 23, 187, 23, 26, 59, 26, 97, 82, |
| 138491 | + /* 1080 */ 97, 22, 164, 152, 152, 88, 89, 70, 192, 152, |
| 138492 | + /* 1090 */ 124, 152, 95, 96, 97, 98, 141, 152, 101, 82, |
| 138493 | + /* 1100 */ 152, 152, 184, 152, 186, 88, 89, 199, 54, 55, |
| 138494 | + /* 1110 */ 56, 57, 95, 96, 97, 98, 152, 152, 101, 152, |
| 138495 | + /* 1120 */ 152, 173, 174, 235, 54, 55, 56, 57, 58, 132, |
| 138496 | + /* 1130 */ 133, 134, 135, 136, 211, 150, 59, 211, 84, 85, |
| 138497 | + /* 1140 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 132, |
| 138498 | + /* 1150 */ 133, 134, 135, 136, 84, 85, 86, 87, 88, 89, |
| 138499 | + /* 1160 */ 90, 91, 92, 93, 94, 88, 89, 195, 196, 35, |
| 138500 | + /* 1170 */ 211, 211, 152, 96, 97, 98, 152, 100, 198, 207, |
| 138501 | + /* 1180 */ 171, 122, 240, 152, 107, 215, 109, 240, 202, 215, |
| 138502 | + /* 1190 */ 202, 152, 220, 173, 174, 177, 185, 173, 174, 65, |
| 138503 | + /* 1200 */ 152, 176, 152, 181, 173, 174, 215, 73, 176, 132, |
| 138504 | + /* 1210 */ 228, 134, 173, 174, 176, 152, 201, 152, 199, 155, |
| 138505 | + /* 1220 */ 152, 173, 174, 173, 174, 60, 152, 122, 244, 38, |
| 138506 | + /* 1230 */ 159, 159, 152, 241, 241, 152, 173, 174, 173, 174, |
| 138507 | + /* 1240 */ 152, 173, 174, 152, 159, 111, 152, 173, 174, 152, |
| 138508 | + /* 1250 */ 22, 152, 43, 173, 174, 152, 173, 174, 152, 190, |
| 138509 | + /* 1260 */ 130, 173, 174, 152, 173, 174, 152, 173, 174, 202, |
| 138510 | + /* 1270 */ 173, 174, 173, 174, 152, 18, 173, 174, 152, 173, |
| 138511 | + /* 1280 */ 174, 152, 221, 152, 173, 174, 193, 173, 174, 152, |
| 138512 | + /* 1290 */ 158, 152, 159, 152, 22, 173, 174, 152, 18, 173, |
| 138513 | + /* 1300 */ 174, 152, 173, 174, 173, 174, 152, 221, 152, 193, |
| 138514 | + /* 1310 */ 173, 174, 173, 174, 173, 174, 152, 193, 173, 174, |
| 138515 | + /* 1320 */ 152, 193, 173, 174, 158, 152, 190, 173, 174, 173, |
| 138516 | + /* 1330 */ 174, 59, 152, 190, 159, 137, 152, 173, 174, 152, |
| 138517 | + /* 1340 */ 202, 173, 174, 61, 152, 237, 173, 174, 202, 236, |
| 138518 | + /* 1350 */ 22, 107, 159, 173, 174, 159, 178, 173, 174, 158, |
| 138519 | + /* 1360 */ 173, 174, 159, 158, 158, 173, 174, 159, 178, 97, |
| 138520 | + /* 1370 */ 175, 63, 175, 106, 175, 125, 217, 183, 178, 175, |
| 138521 | + /* 1380 */ 107, 159, 22, 216, 177, 175, 217, 175, 175, 217, |
| 138522 | + /* 1390 */ 216, 159, 216, 216, 183, 225, 217, 137, 227, 178, |
| 138523 | + /* 1400 */ 94, 178, 126, 129, 25, 128, 127, 162, 206, 26, |
| 138524 | + /* 1410 */ 161, 230, 230, 13, 153, 153, 6, 151, 203, 205, |
| 138525 | + /* 1420 */ 204, 202, 151, 165, 171, 171, 151, 171, 165, 165, |
| 138526 | + /* 1430 */ 171, 179, 4, 250, 179, 250, 247, 3, 22, 171, |
| 138527 | + /* 1440 */ 171, 171, 142, 81, 15, 23, 16, 23, 131, 171, |
| 138528 | + /* 1450 */ 120, 111, 123, 20, 16, 1, 125, 123, 131, 53, |
| 138529 | + /* 1460 */ 53, 53, 53, 111, 96, 34, 122, 1, 5, 22, |
| 138530 | + /* 1470 */ 107, 67, 140, 74, 26, 24, 41, 107, 67, 20, |
| 138531 | + /* 1480 */ 19, 112, 105, 66, 22, 66, 22, 22, 28, 66, |
| 138532 | + /* 1490 */ 23, 22, 22, 37, 23, 23, 23, 116, 22, 22, |
| 138533 | + /* 1500 */ 26, 23, 122, 23, 23, 26, 22, 11, 96, 34, |
| 138534 | + /* 1510 */ 124, 26, 26, 23, 23, 23, 34, 34, 23, 26, |
| 138535 | + /* 1520 */ 23, 22, 24, 23, 22, 122, 23, 26, 22, 24, |
| 138536 | + /* 1530 */ 23, 22, 15, 23, 23, 22, 122, 122, 23, 1, |
| 138537 | + /* 1540 */ 122, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138538 | + /* 1550 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138539 | + /* 1560 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138540 | + /* 1570 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138541 | + /* 1580 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138542 | + /* 1590 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138543 | + /* 1600 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138544 | + /* 1610 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138545 | + /* 1620 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138546 | + /* 1630 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138547 | + /* 1640 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138548 | + /* 1650 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138549 | + /* 1660 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138550 | + /* 1670 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, |
| 138551 | + /* 1680 */ 252, 252, 252, 252, |
| 138552 | +}; |
| 138553 | +#define YY_SHIFT_COUNT (465) |
| 138554 | +#define YY_SHIFT_MIN (0) |
| 138555 | +#define YY_SHIFT_MAX (1538) |
| 138556 | +static const unsigned short int yy_shift_ofst[] = { |
| 138557 | + /* 0 */ 39, 822, 955, 843, 997, 997, 997, 997, 0, 0, |
| 138558 | + /* 10 */ 104, 630, 997, 997, 997, 997, 997, 997, 997, 1077, |
| 138559 | + /* 20 */ 1077, 126, 161, 155, 52, 156, 208, 260, 312, 364, |
| 138560 | + /* 30 */ 416, 468, 523, 578, 630, 630, 630, 630, 630, 630, |
| 138561 | + /* 40 */ 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, |
| 138562 | + /* 50 */ 630, 682, 630, 733, 783, 783, 914, 997, 997, 997, |
| 138563 | + /* 60 */ 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, |
| 138564 | + /* 70 */ 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, |
| 138565 | + /* 80 */ 997, 997, 997, 997, 997, 997, 997, 997, 1017, 997, |
| 138566 | + /* 90 */ 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, |
| 138567 | + /* 100 */ 997, 997, 1070, 1054, 1054, 1054, 1054, 1054, 40, 25, |
| 138568 | + /* 110 */ 72, 232, 788, 428, 248, 248, 232, 581, 367, 127, |
| 138569 | + /* 120 */ 465, 138, 1541, 1541, 1541, 784, 784, 784, 522, 522, |
| 138570 | + /* 130 */ 887, 887, 893, 406, 408, 232, 232, 232, 232, 232, |
| 138571 | + /* 140 */ 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, |
| 138572 | + /* 150 */ 232, 232, 232, 232, 232, 370, 340, 714, 698, 698, |
| 138573 | + /* 160 */ 465, 89, 89, 89, 89, 89, 89, 1541, 1541, 1541, |
| 138574 | + /* 170 */ 504, 85, 85, 884, 70, 280, 902, 440, 966, 924, |
| 138575 | + /* 180 */ 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, |
| 138576 | + /* 190 */ 232, 232, 232, 232, 232, 232, 1134, 1134, 1134, 232, |
| 138577 | + /* 200 */ 232, 667, 232, 232, 232, 929, 232, 232, 885, 232, |
| 138578 | + /* 210 */ 232, 232, 232, 232, 232, 232, 232, 232, 232, 418, |
| 138579 | + /* 220 */ 678, 981, 981, 981, 981, 766, 271, 911, 510, 429, |
| 138580 | + /* 230 */ 617, 786, 786, 830, 617, 830, 4, 730, 595, 768, |
| 138581 | + /* 240 */ 786, 561, 768, 768, 732, 535, 55, 1165, 1105, 1105, |
| 138582 | + /* 250 */ 1191, 1191, 1105, 1228, 1209, 1130, 1257, 1257, 1257, 1257, |
| 138583 | + /* 260 */ 1105, 1280, 1130, 1228, 1209, 1209, 1130, 1105, 1280, 1198, |
| 138584 | + /* 270 */ 1282, 1105, 1105, 1280, 1328, 1105, 1280, 1105, 1280, 1328, |
| 138585 | + /* 280 */ 1244, 1244, 1244, 1308, 1328, 1244, 1267, 1244, 1308, 1244, |
| 138586 | + /* 290 */ 1244, 1250, 1273, 1250, 1273, 1250, 1273, 1250, 1273, 1105, |
| 138587 | + /* 300 */ 1360, 1105, 1260, 1328, 1306, 1306, 1328, 1274, 1276, 1277, |
| 138588 | + /* 310 */ 1279, 1130, 1379, 1383, 1400, 1400, 1410, 1410, 1410, 1541, |
| 138589 | + /* 320 */ 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, |
| 138590 | + /* 330 */ 1541, 1541, 1541, 1541, 1541, 34, 407, 463, 511, 417, |
| 138591 | + /* 340 */ 479, 1272, 778, 941, 785, 825, 831, 833, 872, 877, |
| 138592 | + /* 350 */ 756, 793, 900, 804, 919, 1045, 969, 1049, 803, 909, |
| 138593 | + /* 360 */ 1051, 983, 1059, 1428, 1434, 1416, 1300, 1429, 1362, 1430, |
| 138594 | + /* 370 */ 1422, 1424, 1330, 1317, 1340, 1329, 1433, 1331, 1438, 1454, |
| 138595 | + /* 380 */ 1334, 1327, 1406, 1407, 1408, 1409, 1352, 1368, 1431, 1344, |
| 138596 | + /* 390 */ 1466, 1463, 1447, 1363, 1332, 1404, 1448, 1411, 1399, 1435, |
| 138597 | + /* 400 */ 1370, 1451, 1459, 1461, 1369, 1377, 1462, 1417, 1464, 1465, |
| 138598 | + /* 410 */ 1467, 1469, 1419, 1460, 1470, 1423, 1456, 1471, 1472, 1473, |
| 138599 | + /* 420 */ 1474, 1381, 1476, 1478, 1477, 1479, 1380, 1480, 1481, 1412, |
| 138600 | + /* 430 */ 1475, 1484, 1386, 1485, 1482, 1486, 1483, 1490, 1485, 1491, |
| 138601 | + /* 440 */ 1492, 1495, 1493, 1497, 1499, 1496, 1500, 1502, 1498, 1501, |
| 138602 | + /* 450 */ 1503, 1506, 1505, 1501, 1507, 1509, 1510, 1511, 1513, 1403, |
| 138603 | + /* 460 */ 1414, 1415, 1418, 1515, 1517, 1538, |
| 138604 | +}; |
| 138605 | +#define YY_REDUCE_COUNT (334) |
| 138606 | +#define YY_REDUCE_MIN (-217) |
| 138607 | +#define YY_REDUCE_MAX (1278) |
| 138421 | 138608 | static const short yy_reduce_ofst[] = { |
| 138422 | | - /* 0 */ -143, -65, 140, 840, 76, 180, 182, 233, 488, -25, |
| 138423 | | - /* 10 */ 12, 16, 59, 885, 907, 935, 390, 705, 954, 285, |
| 138424 | | - /* 20 */ 997, 1017, 1018, -118, 1025, 139, 171, 171, 171, 171, |
| 138425 | | - /* 30 */ 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, |
| 138426 | | - /* 40 */ 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, |
| 138427 | | - /* 50 */ 171, 171, 171, 171, 171, 171, 171, 171, -69, 287, |
| 138428 | | - /* 60 */ 441, 658, 708, 856, 1050, 1073, 1076, 1079, 1081, 1084, |
| 138429 | | - /* 70 */ 1086, 1088, 1091, 1113, 1115, 1117, 1122, 1124, 1126, 1128, |
| 138430 | | - /* 80 */ 1130, 1141, 1153, 1156, 1159, 1163, 1165, 1167, 1170, 1172, |
| 138431 | | - /* 90 */ 1175, 1178, 1181, 1189, 1194, 1197, 1200, 1203, 1205, 1207, |
| 138432 | | - /* 100 */ 1211, 1213, 1216, 1219, 171, 171, 171, 171, 171, 171, |
| 138433 | | - /* 110 */ 171, 171, 171, 49, 176, 220, 275, 278, 290, 171, |
| 138434 | | - /* 120 */ 300, 171, 171, 171, 171, -85, -85, -85, -28, 77, |
| 138435 | | - /* 130 */ 313, 317, -56, 252, 252, 446, -129, 243, 361, 403, |
| 138436 | | - /* 140 */ 406, 513, 517, 409, 502, 518, 504, 509, 621, 553, |
| 138437 | | - /* 150 */ 562, 619, 559, 93, 620, 465, 453, 550, 591, 571, |
| 138438 | | - /* 160 */ 615, 666, 750, 752, 797, 819, 463, 548, -73, 28, |
| 138439 | | - /* 170 */ 68, 120, 257, 206, 359, 405, 413, 452, 457, 560, |
| 138440 | | - /* 180 */ 566, 617, 670, 720, 723, 769, 773, 775, 780, 813, |
| 138441 | | - /* 190 */ 814, 821, 822, 823, 826, 360, 436, 783, 829, 835, |
| 138442 | | - /* 200 */ 707, 862, 867, 878, 830, 911, 915, 883, 936, 937, |
| 138443 | | - /* 210 */ 940, 359, 942, 943, 944, 979, 982, 984, 886, 899, |
| 138444 | | - /* 220 */ 928, 929, 931, 707, 947, 945, 998, 949, 932, 969, |
| 138445 | | - /* 230 */ 918, 953, 924, 992, 1005, 1010, 1016, 971, 965, 1019, |
| 138446 | | - /* 240 */ 1049, 1000, 1028, 1074, 989, 1078, 1080, 1026, 1031, 1109, |
| 138447 | | - /* 250 */ 1053, 1090, 1103, 1092, 1099, 1114, 1118, 1148, 1151, 1111, |
| 138448 | | - /* 260 */ 1096, 1129, 1131, 1133, 1162, 1202, 1138, 1146, 1231, 1234, |
| 138449 | | - /* 270 */ 1206, 1218, 1237, 1239, 1240, 1242, 1221, 1228, 1229, 1230, |
| 138450 | | - /* 280 */ 1224, 1233, 1235, 1236, 1241, 1226, 1243, 1244, 1198, 1201, |
| 138451 | | - /* 290 */ 1209, 1212, 1210, 1214, 1215, 1217, 1260, 1199, 1262, 1220, |
| 138452 | | - /* 300 */ 1247, 1222, 1223, 1253, 1238, 1245, 1251, 1246, 1249, 1276, |
| 138453 | | - /* 310 */ 1279, 1289, 1291, 1296, 1302, 1305, 1225, 1227, 1248, 1290, |
| 138454 | | - /* 320 */ 1292, 1280, 1281, 1295, |
| 138609 | + /* 0 */ -144, -139, -134, -136, -141, 64, 114, 116, -158, -148, |
| 138610 | + /* 10 */ -217, 96, 819, 871, 878, 219, 270, 886, 272, -110, |
| 138611 | + /* 20 */ 413, 918, 972, 228, -214, -214, -214, -214, -214, -214, |
| 138612 | + /* 30 */ -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, |
| 138613 | + /* 40 */ -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, |
| 138614 | + /* 50 */ -214, -214, -214, -214, -214, -214, 62, 323, 377, 536, |
| 138615 | + /* 60 */ 539, 834, 948, 1020, 1024, 1031, 1039, 1048, 1050, 1063, |
| 138616 | + /* 70 */ 1065, 1068, 1074, 1080, 1083, 1088, 1091, 1094, 1097, 1099, |
| 138617 | + /* 80 */ 1103, 1106, 1111, 1114, 1122, 1126, 1129, 1131, 1137, 1139, |
| 138618 | + /* 90 */ 1141, 1145, 1149, 1154, 1156, 1164, 1168, 1173, 1180, 1184, |
| 138619 | + /* 100 */ 1187, 1192, -214, -214, -214, -214, -214, -214, -214, -214, |
| 138620 | + /* 110 */ -214, 132, -45, 97, 8, 164, 379, 175, 255, -214, |
| 138621 | + /* 120 */ 178, -214, -214, -214, -214, -168, -168, -168, 124, 329, |
| 138622 | + /* 130 */ 399, 401, -129, 347, 347, 331, 133, 451, 452, 498, |
| 138623 | + /* 140 */ 500, 502, 503, 505, 487, 506, 488, 490, 507, 543, |
| 138624 | + /* 150 */ 547, -126, 588, 290, 27, 572, 501, 597, 537, 582, |
| 138625 | + /* 160 */ 183, 599, 600, 601, 649, 650, 653, 508, 538, -29, |
| 138626 | + /* 170 */ -156, -152, -137, -79, 135, 74, 130, 242, 338, 378, |
| 138627 | + /* 180 */ 393, 397, 607, 648, 691, 700, 708, 709, 728, 757, |
| 138628 | + /* 190 */ 763, 769, 796, 810, 818, 845, 202, 748, 792, 861, |
| 138629 | + /* 200 */ 862, 815, 866, 903, 905, 850, 931, 932, 896, 937, |
| 138630 | + /* 210 */ 939, 945, 74, 949, 951, 964, 965, 967, 968, 888, |
| 138631 | + /* 220 */ 820, 923, 926, 959, 960, 815, 980, 908, 1009, 985, |
| 138632 | + /* 230 */ 986, 970, 974, 942, 988, 947, 1018, 1011, 1022, 1025, |
| 138633 | + /* 240 */ 991, 982, 1032, 1038, 1015, 1019, 1064, 984, 1071, 1072, |
| 138634 | + /* 250 */ 992, 993, 1085, 1061, 1069, 1067, 1093, 1116, 1124, 1128, |
| 138635 | + /* 260 */ 1133, 1132, 1138, 1086, 1136, 1143, 1146, 1175, 1166, 1108, |
| 138636 | + /* 270 */ 1113, 1193, 1196, 1201, 1178, 1203, 1205, 1208, 1206, 1190, |
| 138637 | + /* 280 */ 1195, 1197, 1199, 1194, 1200, 1204, 1207, 1210, 1211, 1212, |
| 138638 | + /* 290 */ 1213, 1159, 1167, 1169, 1174, 1172, 1176, 1179, 1177, 1222, |
| 138639 | + /* 300 */ 1170, 1232, 1171, 1221, 1181, 1182, 1223, 1202, 1214, 1216, |
| 138640 | + /* 310 */ 1215, 1219, 1245, 1249, 1261, 1262, 1266, 1271, 1275, 1183, |
| 138641 | + /* 320 */ 1185, 1189, 1258, 1253, 1254, 1256, 1259, 1263, 1252, 1255, |
| 138642 | + /* 330 */ 1268, 1269, 1270, 1278, 1264, |
| 138455 | 138643 | }; |
| 138456 | 138644 | static const YYACTIONTYPE yy_default[] = { |
| 138457 | | - /* 0 */ 1270, 1260, 1260, 1260, 1193, 1193, 1193, 1193, 1260, 1088, |
| 138458 | | - /* 10 */ 1117, 1117, 1244, 1322, 1322, 1322, 1322, 1322, 1322, 1192, |
| 138459 | | - /* 20 */ 1322, 1322, 1322, 1322, 1260, 1092, 1123, 1322, 1322, 1322, |
| 138460 | | - /* 30 */ 1322, 1194, 1195, 1322, 1322, 1322, 1243, 1245, 1133, 1132, |
| 138461 | | - /* 40 */ 1131, 1130, 1226, 1104, 1128, 1121, 1125, 1194, 1188, 1189, |
| 138462 | | - /* 50 */ 1187, 1191, 1195, 1322, 1124, 1158, 1172, 1157, 1322, 1322, |
| 138463 | | - /* 60 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138464 | | - /* 70 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138465 | | - /* 80 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138466 | | - /* 90 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138467 | | - /* 100 */ 1322, 1322, 1322, 1322, 1166, 1171, 1178, 1170, 1167, 1160, |
| 138468 | | - /* 110 */ 1159, 1161, 1162, 1322, 1011, 1059, 1322, 1322, 1322, 1163, |
| 138469 | | - /* 120 */ 1322, 1164, 1175, 1174, 1173, 1251, 1278, 1277, 1322, 1322, |
| 138470 | | - /* 130 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138471 | | - /* 140 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138472 | | - /* 150 */ 1322, 1322, 1322, 1322, 1322, 1270, 1260, 1017, 1017, 1322, |
| 138473 | | - /* 160 */ 1260, 1260, 1260, 1260, 1260, 1260, 1256, 1092, 1083, 1322, |
| 138474 | | - /* 170 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138475 | | - /* 180 */ 1248, 1246, 1322, 1208, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138476 | | - /* 190 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138477 | | - /* 200 */ 1322, 1322, 1322, 1322, 1088, 1322, 1322, 1322, 1322, 1322, |
| 138478 | | - /* 210 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1272, 1322, 1221, |
| 138479 | | - /* 220 */ 1088, 1088, 1088, 1090, 1072, 1082, 997, 1127, 1106, 1106, |
| 138480 | | - /* 230 */ 1311, 1127, 1311, 1034, 1292, 1031, 1117, 1106, 1190, 1117, |
| 138481 | | - /* 240 */ 1117, 1089, 1082, 1322, 1314, 1097, 1097, 1313, 1313, 1097, |
| 138482 | | - /* 250 */ 1138, 1062, 1127, 1068, 1068, 1068, 1068, 1097, 1008, 1127, |
| 138483 | | - /* 260 */ 1138, 1062, 1062, 1127, 1097, 1008, 1225, 1308, 1097, 1097, |
| 138484 | | - /* 270 */ 1008, 1201, 1097, 1008, 1097, 1008, 1201, 1060, 1060, 1060, |
| 138485 | | - /* 280 */ 1049, 1201, 1060, 1034, 1060, 1049, 1060, 1060, 1110, 1105, |
| 138486 | | - /* 290 */ 1110, 1105, 1110, 1105, 1110, 1105, 1097, 1196, 1097, 1322, |
| 138487 | | - /* 300 */ 1201, 1205, 1205, 1201, 1122, 1111, 1120, 1118, 1127, 1014, |
| 138488 | | - /* 310 */ 1052, 1275, 1275, 1271, 1271, 1271, 1319, 1319, 1256, 1287, |
| 138489 | | - /* 320 */ 1287, 1036, 1036, 1287, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138490 | | - /* 330 */ 1282, 1322, 1210, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138491 | | - /* 340 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138492 | | - /* 350 */ 1322, 1143, 1322, 993, 1253, 1322, 1322, 1252, 1322, 1322, |
| 138493 | | - /* 360 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138494 | | - /* 370 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1310, 1322, |
| 138495 | | - /* 380 */ 1322, 1322, 1322, 1322, 1322, 1224, 1223, 1322, 1322, 1322, |
| 138496 | | - /* 390 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138497 | | - /* 400 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, |
| 138498 | | - /* 410 */ 1074, 1322, 1322, 1322, 1296, 1322, 1322, 1322, 1322, 1322, |
| 138499 | | - /* 420 */ 1322, 1322, 1119, 1322, 1112, 1322, 1322, 1301, 1322, 1322, |
| 138500 | | - /* 430 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1262, 1322, |
| 138501 | | - /* 440 */ 1322, 1322, 1261, 1322, 1322, 1322, 1322, 1322, 1145, 1322, |
| 138502 | | - /* 450 */ 1144, 1148, 1322, 1002, 1322, |
| 138645 | + /* 0 */ 1286, 1276, 1276, 1276, 1209, 1209, 1209, 1209, 1133, 1133, |
| 138646 | + /* 10 */ 1260, 1036, 1005, 1005, 1005, 1005, 1005, 1005, 1208, 1005, |
| 138647 | + /* 20 */ 1005, 1005, 1005, 1108, 1139, 1005, 1005, 1005, 1005, 1210, |
| 138648 | + /* 30 */ 1211, 1005, 1005, 1005, 1259, 1261, 1149, 1148, 1147, 1146, |
| 138649 | + /* 40 */ 1242, 1120, 1144, 1137, 1141, 1210, 1204, 1205, 1203, 1207, |
| 138650 | + /* 50 */ 1211, 1005, 1140, 1174, 1188, 1173, 1005, 1005, 1005, 1005, |
| 138651 | + /* 60 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138652 | + /* 70 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138653 | + /* 80 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138654 | + /* 90 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138655 | + /* 100 */ 1005, 1005, 1182, 1187, 1194, 1186, 1183, 1176, 1175, 1177, |
| 138656 | + /* 110 */ 1178, 1005, 1026, 1075, 1005, 1005, 1005, 1276, 1036, 1179, |
| 138657 | + /* 120 */ 1005, 1180, 1191, 1190, 1189, 1267, 1294, 1293, 1005, 1005, |
| 138658 | + /* 130 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138659 | + /* 140 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138660 | + /* 150 */ 1005, 1005, 1005, 1005, 1005, 1036, 1286, 1276, 1032, 1032, |
| 138661 | + /* 160 */ 1005, 1276, 1276, 1276, 1276, 1276, 1276, 1272, 1108, 1099, |
| 138662 | + /* 170 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138663 | + /* 180 */ 1005, 1264, 1262, 1005, 1224, 1005, 1005, 1005, 1005, 1005, |
| 138664 | + /* 190 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138665 | + /* 200 */ 1005, 1005, 1005, 1005, 1005, 1104, 1005, 1005, 1005, 1005, |
| 138666 | + /* 210 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1288, 1005, |
| 138667 | + /* 220 */ 1237, 1104, 1104, 1104, 1104, 1106, 1088, 1098, 1036, 1012, |
| 138668 | + /* 230 */ 1143, 1122, 1122, 1327, 1143, 1327, 1050, 1308, 1047, 1133, |
| 138669 | + /* 240 */ 1122, 1206, 1133, 1133, 1105, 1098, 1005, 1330, 1113, 1113, |
| 138670 | + /* 250 */ 1329, 1329, 1113, 1154, 1078, 1143, 1084, 1084, 1084, 1084, |
| 138671 | + /* 260 */ 1113, 1023, 1143, 1154, 1078, 1078, 1143, 1113, 1023, 1241, |
| 138672 | + /* 270 */ 1324, 1113, 1113, 1023, 1217, 1113, 1023, 1113, 1023, 1217, |
| 138673 | + /* 280 */ 1076, 1076, 1076, 1065, 1217, 1076, 1050, 1076, 1065, 1076, |
| 138674 | + /* 290 */ 1076, 1126, 1121, 1126, 1121, 1126, 1121, 1126, 1121, 1113, |
| 138675 | + /* 300 */ 1212, 1113, 1005, 1217, 1221, 1221, 1217, 1138, 1127, 1136, |
| 138676 | + /* 310 */ 1134, 1143, 1029, 1068, 1291, 1291, 1287, 1287, 1287, 1335, |
| 138677 | + /* 320 */ 1335, 1272, 1303, 1036, 1036, 1036, 1036, 1303, 1052, 1052, |
| 138678 | + /* 330 */ 1036, 1036, 1036, 1036, 1303, 1005, 1005, 1005, 1005, 1005, |
| 138679 | + /* 340 */ 1005, 1298, 1005, 1226, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138680 | + /* 350 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138681 | + /* 360 */ 1005, 1005, 1159, 1005, 1008, 1269, 1005, 1005, 1268, 1005, |
| 138682 | + /* 370 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138683 | + /* 380 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1326, |
| 138684 | + /* 390 */ 1005, 1005, 1005, 1005, 1005, 1005, 1240, 1239, 1005, 1005, |
| 138685 | + /* 400 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138686 | + /* 410 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, |
| 138687 | + /* 420 */ 1005, 1090, 1005, 1005, 1005, 1312, 1005, 1005, 1005, 1005, |
| 138688 | + /* 430 */ 1005, 1005, 1005, 1135, 1005, 1128, 1005, 1005, 1317, 1005, |
| 138689 | + /* 440 */ 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1278, |
| 138690 | + /* 450 */ 1005, 1005, 1005, 1277, 1005, 1005, 1005, 1005, 1005, 1161, |
| 138691 | + /* 460 */ 1005, 1160, 1164, 1005, 1017, 1005, |
| 138503 | 138692 | }; |
| 138504 | 138693 | /********** End of lemon-generated parsing tables *****************************/ |
| 138505 | 138694 | |
| 138506 | 138695 | /* The next table maps tokens (terminal symbols) into fallback tokens. |
| 138507 | 138696 | ** If a construct like the following: |
| | @@ -138682,79 +138871,268 @@ |
| 138682 | 138871 | if( yyTraceFILE==0 ) yyTracePrompt = 0; |
| 138683 | 138872 | else if( yyTracePrompt==0 ) yyTraceFILE = 0; |
| 138684 | 138873 | } |
| 138685 | 138874 | #endif /* NDEBUG */ |
| 138686 | 138875 | |
| 138687 | | -#ifndef NDEBUG |
| 138876 | +#if defined(YYCOVERAGE) || !defined(NDEBUG) |
| 138688 | 138877 | /* For tracing shifts, the names of all terminals and nonterminals |
| 138689 | 138878 | ** are required. The following table supplies these names */ |
| 138690 | 138879 | static const char *const yyTokenName[] = { |
| 138691 | | - "$", "SEMI", "EXPLAIN", "QUERY", |
| 138692 | | - "PLAN", "BEGIN", "TRANSACTION", "DEFERRED", |
| 138693 | | - "IMMEDIATE", "EXCLUSIVE", "COMMIT", "END", |
| 138694 | | - "ROLLBACK", "SAVEPOINT", "RELEASE", "TO", |
| 138695 | | - "TABLE", "CREATE", "IF", "NOT", |
| 138696 | | - "EXISTS", "TEMP", "LP", "RP", |
| 138697 | | - "AS", "WITHOUT", "COMMA", "ABORT", |
| 138698 | | - "ACTION", "AFTER", "ANALYZE", "ASC", |
| 138699 | | - "ATTACH", "BEFORE", "BY", "CASCADE", |
| 138700 | | - "CAST", "CONFLICT", "DATABASE", "DESC", |
| 138701 | | - "DETACH", "EACH", "FAIL", "OR", |
| 138702 | | - "AND", "IS", "MATCH", "LIKE_KW", |
| 138703 | | - "BETWEEN", "IN", "ISNULL", "NOTNULL", |
| 138704 | | - "NE", "EQ", "GT", "LE", |
| 138705 | | - "LT", "GE", "ESCAPE", "ID", |
| 138706 | | - "COLUMNKW", "FOR", "IGNORE", "INITIALLY", |
| 138707 | | - "INSTEAD", "NO", "KEY", "OF", |
| 138708 | | - "OFFSET", "PRAGMA", "RAISE", "RECURSIVE", |
| 138709 | | - "REPLACE", "RESTRICT", "ROW", "TRIGGER", |
| 138710 | | - "VACUUM", "VIEW", "VIRTUAL", "WITH", |
| 138711 | | - "REINDEX", "RENAME", "CTIME_KW", "ANY", |
| 138712 | | - "BITAND", "BITOR", "LSHIFT", "RSHIFT", |
| 138713 | | - "PLUS", "MINUS", "STAR", "SLASH", |
| 138714 | | - "REM", "CONCAT", "COLLATE", "BITNOT", |
| 138715 | | - "INDEXED", "STRING", "JOIN_KW", "CONSTRAINT", |
| 138716 | | - "DEFAULT", "NULL", "PRIMARY", "UNIQUE", |
| 138717 | | - "CHECK", "REFERENCES", "AUTOINCR", "ON", |
| 138718 | | - "INSERT", "DELETE", "UPDATE", "SET", |
| 138719 | | - "DEFERRABLE", "FOREIGN", "DROP", "UNION", |
| 138720 | | - "ALL", "EXCEPT", "INTERSECT", "SELECT", |
| 138721 | | - "VALUES", "DISTINCT", "DOT", "FROM", |
| 138722 | | - "JOIN", "USING", "ORDER", "GROUP", |
| 138723 | | - "HAVING", "LIMIT", "WHERE", "INTO", |
| 138724 | | - "FLOAT", "BLOB", "INTEGER", "VARIABLE", |
| 138725 | | - "CASE", "WHEN", "THEN", "ELSE", |
| 138726 | | - "INDEX", "ALTER", "ADD", "error", |
| 138727 | | - "input", "cmdlist", "ecmd", "explain", |
| 138728 | | - "cmdx", "cmd", "transtype", "trans_opt", |
| 138729 | | - "nm", "savepoint_opt", "create_table", "create_table_args", |
| 138730 | | - "createkw", "temp", "ifnotexists", "dbnm", |
| 138731 | | - "columnlist", "conslist_opt", "table_options", "select", |
| 138732 | | - "columnname", "carglist", "typetoken", "typename", |
| 138733 | | - "signed", "plus_num", "minus_num", "ccons", |
| 138734 | | - "term", "expr", "onconf", "sortorder", |
| 138735 | | - "autoinc", "eidlist_opt", "refargs", "defer_subclause", |
| 138736 | | - "refarg", "refact", "init_deferred_pred_opt", "conslist", |
| 138737 | | - "tconscomma", "tcons", "sortlist", "eidlist", |
| 138738 | | - "defer_subclause_opt", "orconf", "resolvetype", "raisetype", |
| 138739 | | - "ifexists", "fullname", "selectnowith", "oneselect", |
| 138740 | | - "with", "multiselect_op", "distinct", "selcollist", |
| 138741 | | - "from", "where_opt", "groupby_opt", "having_opt", |
| 138742 | | - "orderby_opt", "limit_opt", "values", "nexprlist", |
| 138743 | | - "exprlist", "sclp", "as", "seltablist", |
| 138744 | | - "stl_prefix", "joinop", "indexed_opt", "on_opt", |
| 138745 | | - "using_opt", "idlist", "setlist", "insert_cmd", |
| 138746 | | - "idlist_opt", "likeop", "between_op", "in_op", |
| 138747 | | - "paren_exprlist", "case_operand", "case_exprlist", "case_else", |
| 138748 | | - "uniqueflag", "collate", "nmnum", "trigger_decl", |
| 138749 | | - "trigger_cmd_list", "trigger_time", "trigger_event", "foreach_clause", |
| 138750 | | - "when_clause", "trigger_cmd", "trnm", "tridxby", |
| 138751 | | - "database_kw_opt", "key_opt", "add_column_fullname", "kwcolumn_opt", |
| 138752 | | - "create_vtab", "vtabarglist", "vtabarg", "vtabargtoken", |
| 138753 | | - "lp", "anylist", "wqlist", |
| 138754 | | -}; |
| 138755 | | -#endif /* NDEBUG */ |
| 138880 | + /* 0 */ "$", |
| 138881 | + /* 1 */ "SEMI", |
| 138882 | + /* 2 */ "EXPLAIN", |
| 138883 | + /* 3 */ "QUERY", |
| 138884 | + /* 4 */ "PLAN", |
| 138885 | + /* 5 */ "BEGIN", |
| 138886 | + /* 6 */ "TRANSACTION", |
| 138887 | + /* 7 */ "DEFERRED", |
| 138888 | + /* 8 */ "IMMEDIATE", |
| 138889 | + /* 9 */ "EXCLUSIVE", |
| 138890 | + /* 10 */ "COMMIT", |
| 138891 | + /* 11 */ "END", |
| 138892 | + /* 12 */ "ROLLBACK", |
| 138893 | + /* 13 */ "SAVEPOINT", |
| 138894 | + /* 14 */ "RELEASE", |
| 138895 | + /* 15 */ "TO", |
| 138896 | + /* 16 */ "TABLE", |
| 138897 | + /* 17 */ "CREATE", |
| 138898 | + /* 18 */ "IF", |
| 138899 | + /* 19 */ "NOT", |
| 138900 | + /* 20 */ "EXISTS", |
| 138901 | + /* 21 */ "TEMP", |
| 138902 | + /* 22 */ "LP", |
| 138903 | + /* 23 */ "RP", |
| 138904 | + /* 24 */ "AS", |
| 138905 | + /* 25 */ "WITHOUT", |
| 138906 | + /* 26 */ "COMMA", |
| 138907 | + /* 27 */ "ABORT", |
| 138908 | + /* 28 */ "ACTION", |
| 138909 | + /* 29 */ "AFTER", |
| 138910 | + /* 30 */ "ANALYZE", |
| 138911 | + /* 31 */ "ASC", |
| 138912 | + /* 32 */ "ATTACH", |
| 138913 | + /* 33 */ "BEFORE", |
| 138914 | + /* 34 */ "BY", |
| 138915 | + /* 35 */ "CASCADE", |
| 138916 | + /* 36 */ "CAST", |
| 138917 | + /* 37 */ "CONFLICT", |
| 138918 | + /* 38 */ "DATABASE", |
| 138919 | + /* 39 */ "DESC", |
| 138920 | + /* 40 */ "DETACH", |
| 138921 | + /* 41 */ "EACH", |
| 138922 | + /* 42 */ "FAIL", |
| 138923 | + /* 43 */ "OR", |
| 138924 | + /* 44 */ "AND", |
| 138925 | + /* 45 */ "IS", |
| 138926 | + /* 46 */ "MATCH", |
| 138927 | + /* 47 */ "LIKE_KW", |
| 138928 | + /* 48 */ "BETWEEN", |
| 138929 | + /* 49 */ "IN", |
| 138930 | + /* 50 */ "ISNULL", |
| 138931 | + /* 51 */ "NOTNULL", |
| 138932 | + /* 52 */ "NE", |
| 138933 | + /* 53 */ "EQ", |
| 138934 | + /* 54 */ "GT", |
| 138935 | + /* 55 */ "LE", |
| 138936 | + /* 56 */ "LT", |
| 138937 | + /* 57 */ "GE", |
| 138938 | + /* 58 */ "ESCAPE", |
| 138939 | + /* 59 */ "ID", |
| 138940 | + /* 60 */ "COLUMNKW", |
| 138941 | + /* 61 */ "FOR", |
| 138942 | + /* 62 */ "IGNORE", |
| 138943 | + /* 63 */ "INITIALLY", |
| 138944 | + /* 64 */ "INSTEAD", |
| 138945 | + /* 65 */ "NO", |
| 138946 | + /* 66 */ "KEY", |
| 138947 | + /* 67 */ "OF", |
| 138948 | + /* 68 */ "OFFSET", |
| 138949 | + /* 69 */ "PRAGMA", |
| 138950 | + /* 70 */ "RAISE", |
| 138951 | + /* 71 */ "RECURSIVE", |
| 138952 | + /* 72 */ "REPLACE", |
| 138953 | + /* 73 */ "RESTRICT", |
| 138954 | + /* 74 */ "ROW", |
| 138955 | + /* 75 */ "TRIGGER", |
| 138956 | + /* 76 */ "VACUUM", |
| 138957 | + /* 77 */ "VIEW", |
| 138958 | + /* 78 */ "VIRTUAL", |
| 138959 | + /* 79 */ "WITH", |
| 138960 | + /* 80 */ "REINDEX", |
| 138961 | + /* 81 */ "RENAME", |
| 138962 | + /* 82 */ "CTIME_KW", |
| 138963 | + /* 83 */ "ANY", |
| 138964 | + /* 84 */ "BITAND", |
| 138965 | + /* 85 */ "BITOR", |
| 138966 | + /* 86 */ "LSHIFT", |
| 138967 | + /* 87 */ "RSHIFT", |
| 138968 | + /* 88 */ "PLUS", |
| 138969 | + /* 89 */ "MINUS", |
| 138970 | + /* 90 */ "STAR", |
| 138971 | + /* 91 */ "SLASH", |
| 138972 | + /* 92 */ "REM", |
| 138973 | + /* 93 */ "CONCAT", |
| 138974 | + /* 94 */ "COLLATE", |
| 138975 | + /* 95 */ "BITNOT", |
| 138976 | + /* 96 */ "INDEXED", |
| 138977 | + /* 97 */ "STRING", |
| 138978 | + /* 98 */ "JOIN_KW", |
| 138979 | + /* 99 */ "CONSTRAINT", |
| 138980 | + /* 100 */ "DEFAULT", |
| 138981 | + /* 101 */ "NULL", |
| 138982 | + /* 102 */ "PRIMARY", |
| 138983 | + /* 103 */ "UNIQUE", |
| 138984 | + /* 104 */ "CHECK", |
| 138985 | + /* 105 */ "REFERENCES", |
| 138986 | + /* 106 */ "AUTOINCR", |
| 138987 | + /* 107 */ "ON", |
| 138988 | + /* 108 */ "INSERT", |
| 138989 | + /* 109 */ "DELETE", |
| 138990 | + /* 110 */ "UPDATE", |
| 138991 | + /* 111 */ "SET", |
| 138992 | + /* 112 */ "DEFERRABLE", |
| 138993 | + /* 113 */ "FOREIGN", |
| 138994 | + /* 114 */ "DROP", |
| 138995 | + /* 115 */ "UNION", |
| 138996 | + /* 116 */ "ALL", |
| 138997 | + /* 117 */ "EXCEPT", |
| 138998 | + /* 118 */ "INTERSECT", |
| 138999 | + /* 119 */ "SELECT", |
| 139000 | + /* 120 */ "VALUES", |
| 139001 | + /* 121 */ "DISTINCT", |
| 139002 | + /* 122 */ "DOT", |
| 139003 | + /* 123 */ "FROM", |
| 139004 | + /* 124 */ "JOIN", |
| 139005 | + /* 125 */ "USING", |
| 139006 | + /* 126 */ "ORDER", |
| 139007 | + /* 127 */ "GROUP", |
| 139008 | + /* 128 */ "HAVING", |
| 139009 | + /* 129 */ "LIMIT", |
| 139010 | + /* 130 */ "WHERE", |
| 139011 | + /* 131 */ "INTO", |
| 139012 | + /* 132 */ "FLOAT", |
| 139013 | + /* 133 */ "BLOB", |
| 139014 | + /* 134 */ "INTEGER", |
| 139015 | + /* 135 */ "VARIABLE", |
| 139016 | + /* 136 */ "CASE", |
| 139017 | + /* 137 */ "WHEN", |
| 139018 | + /* 138 */ "THEN", |
| 139019 | + /* 139 */ "ELSE", |
| 139020 | + /* 140 */ "INDEX", |
| 139021 | + /* 141 */ "ALTER", |
| 139022 | + /* 142 */ "ADD", |
| 139023 | + /* 143 */ "error", |
| 139024 | + /* 144 */ "input", |
| 139025 | + /* 145 */ "cmdlist", |
| 139026 | + /* 146 */ "ecmd", |
| 139027 | + /* 147 */ "explain", |
| 139028 | + /* 148 */ "cmdx", |
| 139029 | + /* 149 */ "cmd", |
| 139030 | + /* 150 */ "transtype", |
| 139031 | + /* 151 */ "trans_opt", |
| 139032 | + /* 152 */ "nm", |
| 139033 | + /* 153 */ "savepoint_opt", |
| 139034 | + /* 154 */ "create_table", |
| 139035 | + /* 155 */ "create_table_args", |
| 139036 | + /* 156 */ "createkw", |
| 139037 | + /* 157 */ "temp", |
| 139038 | + /* 158 */ "ifnotexists", |
| 139039 | + /* 159 */ "dbnm", |
| 139040 | + /* 160 */ "columnlist", |
| 139041 | + /* 161 */ "conslist_opt", |
| 139042 | + /* 162 */ "table_options", |
| 139043 | + /* 163 */ "select", |
| 139044 | + /* 164 */ "columnname", |
| 139045 | + /* 165 */ "carglist", |
| 139046 | + /* 166 */ "typetoken", |
| 139047 | + /* 167 */ "typename", |
| 139048 | + /* 168 */ "signed", |
| 139049 | + /* 169 */ "plus_num", |
| 139050 | + /* 170 */ "minus_num", |
| 139051 | + /* 171 */ "scanpt", |
| 139052 | + /* 172 */ "ccons", |
| 139053 | + /* 173 */ "term", |
| 139054 | + /* 174 */ "expr", |
| 139055 | + /* 175 */ "onconf", |
| 139056 | + /* 176 */ "sortorder", |
| 139057 | + /* 177 */ "autoinc", |
| 139058 | + /* 178 */ "eidlist_opt", |
| 139059 | + /* 179 */ "refargs", |
| 139060 | + /* 180 */ "defer_subclause", |
| 139061 | + /* 181 */ "refarg", |
| 139062 | + /* 182 */ "refact", |
| 139063 | + /* 183 */ "init_deferred_pred_opt", |
| 139064 | + /* 184 */ "conslist", |
| 139065 | + /* 185 */ "tconscomma", |
| 139066 | + /* 186 */ "tcons", |
| 139067 | + /* 187 */ "sortlist", |
| 139068 | + /* 188 */ "eidlist", |
| 139069 | + /* 189 */ "defer_subclause_opt", |
| 139070 | + /* 190 */ "orconf", |
| 139071 | + /* 191 */ "resolvetype", |
| 139072 | + /* 192 */ "raisetype", |
| 139073 | + /* 193 */ "ifexists", |
| 139074 | + /* 194 */ "fullname", |
| 139075 | + /* 195 */ "selectnowith", |
| 139076 | + /* 196 */ "oneselect", |
| 139077 | + /* 197 */ "with", |
| 139078 | + /* 198 */ "multiselect_op", |
| 139079 | + /* 199 */ "distinct", |
| 139080 | + /* 200 */ "selcollist", |
| 139081 | + /* 201 */ "from", |
| 139082 | + /* 202 */ "where_opt", |
| 139083 | + /* 203 */ "groupby_opt", |
| 139084 | + /* 204 */ "having_opt", |
| 139085 | + /* 205 */ "orderby_opt", |
| 139086 | + /* 206 */ "limit_opt", |
| 139087 | + /* 207 */ "values", |
| 139088 | + /* 208 */ "nexprlist", |
| 139089 | + /* 209 */ "exprlist", |
| 139090 | + /* 210 */ "sclp", |
| 139091 | + /* 211 */ "as", |
| 139092 | + /* 212 */ "seltablist", |
| 139093 | + /* 213 */ "stl_prefix", |
| 139094 | + /* 214 */ "joinop", |
| 139095 | + /* 215 */ "indexed_opt", |
| 139096 | + /* 216 */ "on_opt", |
| 139097 | + /* 217 */ "using_opt", |
| 139098 | + /* 218 */ "idlist", |
| 139099 | + /* 219 */ "setlist", |
| 139100 | + /* 220 */ "insert_cmd", |
| 139101 | + /* 221 */ "idlist_opt", |
| 139102 | + /* 222 */ "likeop", |
| 139103 | + /* 223 */ "between_op", |
| 139104 | + /* 224 */ "in_op", |
| 139105 | + /* 225 */ "paren_exprlist", |
| 139106 | + /* 226 */ "case_operand", |
| 139107 | + /* 227 */ "case_exprlist", |
| 139108 | + /* 228 */ "case_else", |
| 139109 | + /* 229 */ "uniqueflag", |
| 139110 | + /* 230 */ "collate", |
| 139111 | + /* 231 */ "nmnum", |
| 139112 | + /* 232 */ "trigger_decl", |
| 139113 | + /* 233 */ "trigger_cmd_list", |
| 139114 | + /* 234 */ "trigger_time", |
| 139115 | + /* 235 */ "trigger_event", |
| 139116 | + /* 236 */ "foreach_clause", |
| 139117 | + /* 237 */ "when_clause", |
| 139118 | + /* 238 */ "trigger_cmd", |
| 139119 | + /* 239 */ "trnm", |
| 139120 | + /* 240 */ "tridxby", |
| 139121 | + /* 241 */ "database_kw_opt", |
| 139122 | + /* 242 */ "key_opt", |
| 139123 | + /* 243 */ "add_column_fullname", |
| 139124 | + /* 244 */ "kwcolumn_opt", |
| 139125 | + /* 245 */ "create_vtab", |
| 139126 | + /* 246 */ "vtabarglist", |
| 139127 | + /* 247 */ "vtabarg", |
| 139128 | + /* 248 */ "vtabargtoken", |
| 139129 | + /* 249 */ "lp", |
| 139130 | + /* 250 */ "anylist", |
| 139131 | + /* 251 */ "wqlist", |
| 139132 | +}; |
| 139133 | +#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ |
| 138756 | 139134 | |
| 138757 | 139135 | #ifndef NDEBUG |
| 138758 | 139136 | /* For tracing reduce actions, the names of all rules are required. |
| 138759 | 139137 | */ |
| 138760 | 139138 | static const char *const yyRuleName[] = { |
| | @@ -138784,311 +139162,312 @@ |
| 138784 | 139162 | /* 23 */ "columnname ::= nm typetoken", |
| 138785 | 139163 | /* 24 */ "typetoken ::=", |
| 138786 | 139164 | /* 25 */ "typetoken ::= typename LP signed RP", |
| 138787 | 139165 | /* 26 */ "typetoken ::= typename LP signed COMMA signed RP", |
| 138788 | 139166 | /* 27 */ "typename ::= typename ID|STRING", |
| 138789 | | - /* 28 */ "ccons ::= CONSTRAINT nm", |
| 138790 | | - /* 29 */ "ccons ::= DEFAULT term", |
| 138791 | | - /* 30 */ "ccons ::= DEFAULT LP expr RP", |
| 138792 | | - /* 31 */ "ccons ::= DEFAULT PLUS term", |
| 138793 | | - /* 32 */ "ccons ::= DEFAULT MINUS term", |
| 138794 | | - /* 33 */ "ccons ::= DEFAULT ID|INDEXED", |
| 138795 | | - /* 34 */ "ccons ::= NOT NULL onconf", |
| 138796 | | - /* 35 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc", |
| 138797 | | - /* 36 */ "ccons ::= UNIQUE onconf", |
| 138798 | | - /* 37 */ "ccons ::= CHECK LP expr RP", |
| 138799 | | - /* 38 */ "ccons ::= REFERENCES nm eidlist_opt refargs", |
| 138800 | | - /* 39 */ "ccons ::= defer_subclause", |
| 138801 | | - /* 40 */ "ccons ::= COLLATE ID|STRING", |
| 138802 | | - /* 41 */ "autoinc ::=", |
| 138803 | | - /* 42 */ "autoinc ::= AUTOINCR", |
| 138804 | | - /* 43 */ "refargs ::=", |
| 138805 | | - /* 44 */ "refargs ::= refargs refarg", |
| 138806 | | - /* 45 */ "refarg ::= MATCH nm", |
| 138807 | | - /* 46 */ "refarg ::= ON INSERT refact", |
| 138808 | | - /* 47 */ "refarg ::= ON DELETE refact", |
| 138809 | | - /* 48 */ "refarg ::= ON UPDATE refact", |
| 138810 | | - /* 49 */ "refact ::= SET NULL", |
| 138811 | | - /* 50 */ "refact ::= SET DEFAULT", |
| 138812 | | - /* 51 */ "refact ::= CASCADE", |
| 138813 | | - /* 52 */ "refact ::= RESTRICT", |
| 138814 | | - /* 53 */ "refact ::= NO ACTION", |
| 138815 | | - /* 54 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt", |
| 138816 | | - /* 55 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt", |
| 138817 | | - /* 56 */ "init_deferred_pred_opt ::=", |
| 138818 | | - /* 57 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED", |
| 138819 | | - /* 58 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE", |
| 138820 | | - /* 59 */ "conslist_opt ::=", |
| 138821 | | - /* 60 */ "tconscomma ::= COMMA", |
| 138822 | | - /* 61 */ "tcons ::= CONSTRAINT nm", |
| 138823 | | - /* 62 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf", |
| 138824 | | - /* 63 */ "tcons ::= UNIQUE LP sortlist RP onconf", |
| 138825 | | - /* 64 */ "tcons ::= CHECK LP expr RP onconf", |
| 138826 | | - /* 65 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt", |
| 138827 | | - /* 66 */ "defer_subclause_opt ::=", |
| 138828 | | - /* 67 */ "onconf ::=", |
| 138829 | | - /* 68 */ "onconf ::= ON CONFLICT resolvetype", |
| 138830 | | - /* 69 */ "orconf ::=", |
| 138831 | | - /* 70 */ "orconf ::= OR resolvetype", |
| 138832 | | - /* 71 */ "resolvetype ::= IGNORE", |
| 138833 | | - /* 72 */ "resolvetype ::= REPLACE", |
| 138834 | | - /* 73 */ "cmd ::= DROP TABLE ifexists fullname", |
| 138835 | | - /* 74 */ "ifexists ::= IF EXISTS", |
| 138836 | | - /* 75 */ "ifexists ::=", |
| 138837 | | - /* 76 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select", |
| 138838 | | - /* 77 */ "cmd ::= DROP VIEW ifexists fullname", |
| 138839 | | - /* 78 */ "cmd ::= select", |
| 138840 | | - /* 79 */ "select ::= with selectnowith", |
| 138841 | | - /* 80 */ "selectnowith ::= selectnowith multiselect_op oneselect", |
| 138842 | | - /* 81 */ "multiselect_op ::= UNION", |
| 138843 | | - /* 82 */ "multiselect_op ::= UNION ALL", |
| 138844 | | - /* 83 */ "multiselect_op ::= EXCEPT|INTERSECT", |
| 138845 | | - /* 84 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt", |
| 138846 | | - /* 85 */ "values ::= VALUES LP nexprlist RP", |
| 138847 | | - /* 86 */ "values ::= values COMMA LP exprlist RP", |
| 138848 | | - /* 87 */ "distinct ::= DISTINCT", |
| 138849 | | - /* 88 */ "distinct ::= ALL", |
| 138850 | | - /* 89 */ "distinct ::=", |
| 138851 | | - /* 90 */ "sclp ::=", |
| 138852 | | - /* 91 */ "selcollist ::= sclp expr as", |
| 138853 | | - /* 92 */ "selcollist ::= sclp STAR", |
| 138854 | | - /* 93 */ "selcollist ::= sclp nm DOT STAR", |
| 138855 | | - /* 94 */ "as ::= AS nm", |
| 138856 | | - /* 95 */ "as ::=", |
| 138857 | | - /* 96 */ "from ::=", |
| 138858 | | - /* 97 */ "from ::= FROM seltablist", |
| 138859 | | - /* 98 */ "stl_prefix ::= seltablist joinop", |
| 138860 | | - /* 99 */ "stl_prefix ::=", |
| 138861 | | - /* 100 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt", |
| 138862 | | - /* 101 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt", |
| 138863 | | - /* 102 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt", |
| 138864 | | - /* 103 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt", |
| 138865 | | - /* 104 */ "dbnm ::=", |
| 138866 | | - /* 105 */ "dbnm ::= DOT nm", |
| 138867 | | - /* 106 */ "fullname ::= nm dbnm", |
| 138868 | | - /* 107 */ "joinop ::= COMMA|JOIN", |
| 138869 | | - /* 108 */ "joinop ::= JOIN_KW JOIN", |
| 138870 | | - /* 109 */ "joinop ::= JOIN_KW nm JOIN", |
| 138871 | | - /* 110 */ "joinop ::= JOIN_KW nm nm JOIN", |
| 138872 | | - /* 111 */ "on_opt ::= ON expr", |
| 138873 | | - /* 112 */ "on_opt ::=", |
| 138874 | | - /* 113 */ "indexed_opt ::=", |
| 138875 | | - /* 114 */ "indexed_opt ::= INDEXED BY nm", |
| 138876 | | - /* 115 */ "indexed_opt ::= NOT INDEXED", |
| 138877 | | - /* 116 */ "using_opt ::= USING LP idlist RP", |
| 138878 | | - /* 117 */ "using_opt ::=", |
| 138879 | | - /* 118 */ "orderby_opt ::=", |
| 138880 | | - /* 119 */ "orderby_opt ::= ORDER BY sortlist", |
| 138881 | | - /* 120 */ "sortlist ::= sortlist COMMA expr sortorder", |
| 138882 | | - /* 121 */ "sortlist ::= expr sortorder", |
| 138883 | | - /* 122 */ "sortorder ::= ASC", |
| 138884 | | - /* 123 */ "sortorder ::= DESC", |
| 138885 | | - /* 124 */ "sortorder ::=", |
| 138886 | | - /* 125 */ "groupby_opt ::=", |
| 138887 | | - /* 126 */ "groupby_opt ::= GROUP BY nexprlist", |
| 138888 | | - /* 127 */ "having_opt ::=", |
| 138889 | | - /* 128 */ "having_opt ::= HAVING expr", |
| 138890 | | - /* 129 */ "limit_opt ::=", |
| 138891 | | - /* 130 */ "limit_opt ::= LIMIT expr", |
| 138892 | | - /* 131 */ "limit_opt ::= LIMIT expr OFFSET expr", |
| 138893 | | - /* 132 */ "limit_opt ::= LIMIT expr COMMA expr", |
| 138894 | | - /* 133 */ "cmd ::= with DELETE FROM fullname indexed_opt where_opt", |
| 138895 | | - /* 134 */ "where_opt ::=", |
| 138896 | | - /* 135 */ "where_opt ::= WHERE expr", |
| 138897 | | - /* 136 */ "cmd ::= with UPDATE orconf fullname indexed_opt SET setlist where_opt", |
| 138898 | | - /* 137 */ "setlist ::= setlist COMMA nm EQ expr", |
| 138899 | | - /* 138 */ "setlist ::= setlist COMMA LP idlist RP EQ expr", |
| 138900 | | - /* 139 */ "setlist ::= nm EQ expr", |
| 138901 | | - /* 140 */ "setlist ::= LP idlist RP EQ expr", |
| 138902 | | - /* 141 */ "cmd ::= with insert_cmd INTO fullname idlist_opt select", |
| 138903 | | - /* 142 */ "cmd ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES", |
| 138904 | | - /* 143 */ "insert_cmd ::= INSERT orconf", |
| 138905 | | - /* 144 */ "insert_cmd ::= REPLACE", |
| 138906 | | - /* 145 */ "idlist_opt ::=", |
| 138907 | | - /* 146 */ "idlist_opt ::= LP idlist RP", |
| 138908 | | - /* 147 */ "idlist ::= idlist COMMA nm", |
| 138909 | | - /* 148 */ "idlist ::= nm", |
| 138910 | | - /* 149 */ "expr ::= LP expr RP", |
| 138911 | | - /* 150 */ "expr ::= ID|INDEXED", |
| 138912 | | - /* 151 */ "expr ::= JOIN_KW", |
| 138913 | | - /* 152 */ "expr ::= nm DOT nm", |
| 138914 | | - /* 153 */ "expr ::= nm DOT nm DOT nm", |
| 138915 | | - /* 154 */ "term ::= NULL|FLOAT|BLOB", |
| 138916 | | - /* 155 */ "term ::= STRING", |
| 138917 | | - /* 156 */ "term ::= INTEGER", |
| 138918 | | - /* 157 */ "expr ::= VARIABLE", |
| 138919 | | - /* 158 */ "expr ::= expr COLLATE ID|STRING", |
| 138920 | | - /* 159 */ "expr ::= CAST LP expr AS typetoken RP", |
| 138921 | | - /* 160 */ "expr ::= ID|INDEXED LP distinct exprlist RP", |
| 138922 | | - /* 161 */ "expr ::= ID|INDEXED LP STAR RP", |
| 138923 | | - /* 162 */ "term ::= CTIME_KW", |
| 138924 | | - /* 163 */ "expr ::= LP nexprlist COMMA expr RP", |
| 138925 | | - /* 164 */ "expr ::= expr AND expr", |
| 138926 | | - /* 165 */ "expr ::= expr OR expr", |
| 138927 | | - /* 166 */ "expr ::= expr LT|GT|GE|LE expr", |
| 138928 | | - /* 167 */ "expr ::= expr EQ|NE expr", |
| 138929 | | - /* 168 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", |
| 138930 | | - /* 169 */ "expr ::= expr PLUS|MINUS expr", |
| 138931 | | - /* 170 */ "expr ::= expr STAR|SLASH|REM expr", |
| 138932 | | - /* 171 */ "expr ::= expr CONCAT expr", |
| 138933 | | - /* 172 */ "likeop ::= NOT LIKE_KW|MATCH", |
| 138934 | | - /* 173 */ "expr ::= expr likeop expr", |
| 138935 | | - /* 174 */ "expr ::= expr likeop expr ESCAPE expr", |
| 138936 | | - /* 175 */ "expr ::= expr ISNULL|NOTNULL", |
| 138937 | | - /* 176 */ "expr ::= expr NOT NULL", |
| 138938 | | - /* 177 */ "expr ::= expr IS expr", |
| 138939 | | - /* 178 */ "expr ::= expr IS NOT expr", |
| 138940 | | - /* 179 */ "expr ::= NOT expr", |
| 138941 | | - /* 180 */ "expr ::= BITNOT expr", |
| 138942 | | - /* 181 */ "expr ::= MINUS expr", |
| 138943 | | - /* 182 */ "expr ::= PLUS expr", |
| 138944 | | - /* 183 */ "between_op ::= BETWEEN", |
| 138945 | | - /* 184 */ "between_op ::= NOT BETWEEN", |
| 138946 | | - /* 185 */ "expr ::= expr between_op expr AND expr", |
| 138947 | | - /* 186 */ "in_op ::= IN", |
| 138948 | | - /* 187 */ "in_op ::= NOT IN", |
| 138949 | | - /* 188 */ "expr ::= expr in_op LP exprlist RP", |
| 138950 | | - /* 189 */ "expr ::= LP select RP", |
| 138951 | | - /* 190 */ "expr ::= expr in_op LP select RP", |
| 138952 | | - /* 191 */ "expr ::= expr in_op nm dbnm paren_exprlist", |
| 138953 | | - /* 192 */ "expr ::= EXISTS LP select RP", |
| 138954 | | - /* 193 */ "expr ::= CASE case_operand case_exprlist case_else END", |
| 138955 | | - /* 194 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", |
| 138956 | | - /* 195 */ "case_exprlist ::= WHEN expr THEN expr", |
| 138957 | | - /* 196 */ "case_else ::= ELSE expr", |
| 138958 | | - /* 197 */ "case_else ::=", |
| 138959 | | - /* 198 */ "case_operand ::= expr", |
| 138960 | | - /* 199 */ "case_operand ::=", |
| 138961 | | - /* 200 */ "exprlist ::=", |
| 138962 | | - /* 201 */ "nexprlist ::= nexprlist COMMA expr", |
| 138963 | | - /* 202 */ "nexprlist ::= expr", |
| 138964 | | - /* 203 */ "paren_exprlist ::=", |
| 138965 | | - /* 204 */ "paren_exprlist ::= LP exprlist RP", |
| 138966 | | - /* 205 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt", |
| 138967 | | - /* 206 */ "uniqueflag ::= UNIQUE", |
| 138968 | | - /* 207 */ "uniqueflag ::=", |
| 138969 | | - /* 208 */ "eidlist_opt ::=", |
| 138970 | | - /* 209 */ "eidlist_opt ::= LP eidlist RP", |
| 138971 | | - /* 210 */ "eidlist ::= eidlist COMMA nm collate sortorder", |
| 138972 | | - /* 211 */ "eidlist ::= nm collate sortorder", |
| 138973 | | - /* 212 */ "collate ::=", |
| 138974 | | - /* 213 */ "collate ::= COLLATE ID|STRING", |
| 138975 | | - /* 214 */ "cmd ::= DROP INDEX ifexists fullname", |
| 138976 | | - /* 215 */ "cmd ::= VACUUM", |
| 138977 | | - /* 216 */ "cmd ::= VACUUM nm", |
| 138978 | | - /* 217 */ "cmd ::= PRAGMA nm dbnm", |
| 138979 | | - /* 218 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", |
| 138980 | | - /* 219 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", |
| 138981 | | - /* 220 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", |
| 138982 | | - /* 221 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", |
| 138983 | | - /* 222 */ "plus_num ::= PLUS INTEGER|FLOAT", |
| 138984 | | - /* 223 */ "minus_num ::= MINUS INTEGER|FLOAT", |
| 138985 | | - /* 224 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END", |
| 138986 | | - /* 225 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", |
| 138987 | | - /* 226 */ "trigger_time ::= BEFORE|AFTER", |
| 138988 | | - /* 227 */ "trigger_time ::= INSTEAD OF", |
| 138989 | | - /* 228 */ "trigger_time ::=", |
| 138990 | | - /* 229 */ "trigger_event ::= DELETE|INSERT", |
| 138991 | | - /* 230 */ "trigger_event ::= UPDATE", |
| 138992 | | - /* 231 */ "trigger_event ::= UPDATE OF idlist", |
| 138993 | | - /* 232 */ "when_clause ::=", |
| 138994 | | - /* 233 */ "when_clause ::= WHEN expr", |
| 138995 | | - /* 234 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", |
| 138996 | | - /* 235 */ "trigger_cmd_list ::= trigger_cmd SEMI", |
| 138997 | | - /* 236 */ "trnm ::= nm DOT nm", |
| 138998 | | - /* 237 */ "tridxby ::= INDEXED BY nm", |
| 138999 | | - /* 238 */ "tridxby ::= NOT INDEXED", |
| 139000 | | - /* 239 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt", |
| 139001 | | - /* 240 */ "trigger_cmd ::= insert_cmd INTO trnm idlist_opt select", |
| 139002 | | - /* 241 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt", |
| 139003 | | - /* 242 */ "trigger_cmd ::= select", |
| 139004 | | - /* 243 */ "expr ::= RAISE LP IGNORE RP", |
| 139005 | | - /* 244 */ "expr ::= RAISE LP raisetype COMMA nm RP", |
| 139006 | | - /* 245 */ "raisetype ::= ROLLBACK", |
| 139007 | | - /* 246 */ "raisetype ::= ABORT", |
| 139008 | | - /* 247 */ "raisetype ::= FAIL", |
| 139009 | | - /* 248 */ "cmd ::= DROP TRIGGER ifexists fullname", |
| 139010 | | - /* 249 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", |
| 139011 | | - /* 250 */ "cmd ::= DETACH database_kw_opt expr", |
| 139012 | | - /* 251 */ "key_opt ::=", |
| 139013 | | - /* 252 */ "key_opt ::= KEY expr", |
| 139014 | | - /* 253 */ "cmd ::= REINDEX", |
| 139015 | | - /* 254 */ "cmd ::= REINDEX nm dbnm", |
| 139016 | | - /* 255 */ "cmd ::= ANALYZE", |
| 139017 | | - /* 256 */ "cmd ::= ANALYZE nm dbnm", |
| 139018 | | - /* 257 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", |
| 139019 | | - /* 258 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist", |
| 139020 | | - /* 259 */ "add_column_fullname ::= fullname", |
| 139021 | | - /* 260 */ "cmd ::= create_vtab", |
| 139022 | | - /* 261 */ "cmd ::= create_vtab LP vtabarglist RP", |
| 139023 | | - /* 262 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm", |
| 139024 | | - /* 263 */ "vtabarg ::=", |
| 139025 | | - /* 264 */ "vtabargtoken ::= ANY", |
| 139026 | | - /* 265 */ "vtabargtoken ::= lp anylist RP", |
| 139027 | | - /* 266 */ "lp ::= LP", |
| 139028 | | - /* 267 */ "with ::=", |
| 139029 | | - /* 268 */ "with ::= WITH wqlist", |
| 139030 | | - /* 269 */ "with ::= WITH RECURSIVE wqlist", |
| 139031 | | - /* 270 */ "wqlist ::= nm eidlist_opt AS LP select RP", |
| 139032 | | - /* 271 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP", |
| 139033 | | - /* 272 */ "input ::= cmdlist", |
| 139034 | | - /* 273 */ "cmdlist ::= cmdlist ecmd", |
| 139035 | | - /* 274 */ "cmdlist ::= ecmd", |
| 139036 | | - /* 275 */ "ecmd ::= SEMI", |
| 139037 | | - /* 276 */ "ecmd ::= explain cmdx SEMI", |
| 139038 | | - /* 277 */ "explain ::=", |
| 139039 | | - /* 278 */ "trans_opt ::=", |
| 139040 | | - /* 279 */ "trans_opt ::= TRANSACTION", |
| 139041 | | - /* 280 */ "trans_opt ::= TRANSACTION nm", |
| 139042 | | - /* 281 */ "savepoint_opt ::= SAVEPOINT", |
| 139043 | | - /* 282 */ "savepoint_opt ::=", |
| 139044 | | - /* 283 */ "cmd ::= create_table create_table_args", |
| 139045 | | - /* 284 */ "columnlist ::= columnlist COMMA columnname carglist", |
| 139046 | | - /* 285 */ "columnlist ::= columnname carglist", |
| 139047 | | - /* 286 */ "nm ::= ID|INDEXED", |
| 139048 | | - /* 287 */ "nm ::= STRING", |
| 139049 | | - /* 288 */ "nm ::= JOIN_KW", |
| 139050 | | - /* 289 */ "typetoken ::= typename", |
| 139051 | | - /* 290 */ "typename ::= ID|STRING", |
| 139052 | | - /* 291 */ "signed ::= plus_num", |
| 139053 | | - /* 292 */ "signed ::= minus_num", |
| 139054 | | - /* 293 */ "carglist ::= carglist ccons", |
| 139055 | | - /* 294 */ "carglist ::=", |
| 139056 | | - /* 295 */ "ccons ::= NULL onconf", |
| 139057 | | - /* 296 */ "conslist_opt ::= COMMA conslist", |
| 139058 | | - /* 297 */ "conslist ::= conslist tconscomma tcons", |
| 139059 | | - /* 298 */ "conslist ::= tcons", |
| 139060 | | - /* 299 */ "tconscomma ::=", |
| 139061 | | - /* 300 */ "defer_subclause_opt ::= defer_subclause", |
| 139062 | | - /* 301 */ "resolvetype ::= raisetype", |
| 139063 | | - /* 302 */ "selectnowith ::= oneselect", |
| 139064 | | - /* 303 */ "oneselect ::= values", |
| 139065 | | - /* 304 */ "sclp ::= selcollist COMMA", |
| 139066 | | - /* 305 */ "as ::= ID|STRING", |
| 139067 | | - /* 306 */ "expr ::= term", |
| 139068 | | - /* 307 */ "likeop ::= LIKE_KW|MATCH", |
| 139069 | | - /* 308 */ "exprlist ::= nexprlist", |
| 139070 | | - /* 309 */ "nmnum ::= plus_num", |
| 139071 | | - /* 310 */ "nmnum ::= nm", |
| 139072 | | - /* 311 */ "nmnum ::= ON", |
| 139073 | | - /* 312 */ "nmnum ::= DELETE", |
| 139074 | | - /* 313 */ "nmnum ::= DEFAULT", |
| 139075 | | - /* 314 */ "plus_num ::= INTEGER|FLOAT", |
| 139076 | | - /* 315 */ "foreach_clause ::=", |
| 139077 | | - /* 316 */ "foreach_clause ::= FOR EACH ROW", |
| 139078 | | - /* 317 */ "trnm ::= nm", |
| 139079 | | - /* 318 */ "tridxby ::=", |
| 139080 | | - /* 319 */ "database_kw_opt ::= DATABASE", |
| 139081 | | - /* 320 */ "database_kw_opt ::=", |
| 139082 | | - /* 321 */ "kwcolumn_opt ::=", |
| 139083 | | - /* 322 */ "kwcolumn_opt ::= COLUMNKW", |
| 139084 | | - /* 323 */ "vtabarglist ::= vtabarg", |
| 139085 | | - /* 324 */ "vtabarglist ::= vtabarglist COMMA vtabarg", |
| 139086 | | - /* 325 */ "vtabarg ::= vtabarg vtabargtoken", |
| 139087 | | - /* 326 */ "anylist ::=", |
| 139088 | | - /* 327 */ "anylist ::= anylist LP anylist RP", |
| 139089 | | - /* 328 */ "anylist ::= anylist ANY", |
| 139167 | + /* 28 */ "scanpt ::=", |
| 139168 | + /* 29 */ "ccons ::= CONSTRAINT nm", |
| 139169 | + /* 30 */ "ccons ::= DEFAULT scanpt term scanpt", |
| 139170 | + /* 31 */ "ccons ::= DEFAULT LP expr RP", |
| 139171 | + /* 32 */ "ccons ::= DEFAULT PLUS term scanpt", |
| 139172 | + /* 33 */ "ccons ::= DEFAULT MINUS term scanpt", |
| 139173 | + /* 34 */ "ccons ::= DEFAULT scanpt ID|INDEXED", |
| 139174 | + /* 35 */ "ccons ::= NOT NULL onconf", |
| 139175 | + /* 36 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc", |
| 139176 | + /* 37 */ "ccons ::= UNIQUE onconf", |
| 139177 | + /* 38 */ "ccons ::= CHECK LP expr RP", |
| 139178 | + /* 39 */ "ccons ::= REFERENCES nm eidlist_opt refargs", |
| 139179 | + /* 40 */ "ccons ::= defer_subclause", |
| 139180 | + /* 41 */ "ccons ::= COLLATE ID|STRING", |
| 139181 | + /* 42 */ "autoinc ::=", |
| 139182 | + /* 43 */ "autoinc ::= AUTOINCR", |
| 139183 | + /* 44 */ "refargs ::=", |
| 139184 | + /* 45 */ "refargs ::= refargs refarg", |
| 139185 | + /* 46 */ "refarg ::= MATCH nm", |
| 139186 | + /* 47 */ "refarg ::= ON INSERT refact", |
| 139187 | + /* 48 */ "refarg ::= ON DELETE refact", |
| 139188 | + /* 49 */ "refarg ::= ON UPDATE refact", |
| 139189 | + /* 50 */ "refact ::= SET NULL", |
| 139190 | + /* 51 */ "refact ::= SET DEFAULT", |
| 139191 | + /* 52 */ "refact ::= CASCADE", |
| 139192 | + /* 53 */ "refact ::= RESTRICT", |
| 139193 | + /* 54 */ "refact ::= NO ACTION", |
| 139194 | + /* 55 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt", |
| 139195 | + /* 56 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt", |
| 139196 | + /* 57 */ "init_deferred_pred_opt ::=", |
| 139197 | + /* 58 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED", |
| 139198 | + /* 59 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE", |
| 139199 | + /* 60 */ "conslist_opt ::=", |
| 139200 | + /* 61 */ "tconscomma ::= COMMA", |
| 139201 | + /* 62 */ "tcons ::= CONSTRAINT nm", |
| 139202 | + /* 63 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf", |
| 139203 | + /* 64 */ "tcons ::= UNIQUE LP sortlist RP onconf", |
| 139204 | + /* 65 */ "tcons ::= CHECK LP expr RP onconf", |
| 139205 | + /* 66 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt", |
| 139206 | + /* 67 */ "defer_subclause_opt ::=", |
| 139207 | + /* 68 */ "onconf ::=", |
| 139208 | + /* 69 */ "onconf ::= ON CONFLICT resolvetype", |
| 139209 | + /* 70 */ "orconf ::=", |
| 139210 | + /* 71 */ "orconf ::= OR resolvetype", |
| 139211 | + /* 72 */ "resolvetype ::= IGNORE", |
| 139212 | + /* 73 */ "resolvetype ::= REPLACE", |
| 139213 | + /* 74 */ "cmd ::= DROP TABLE ifexists fullname", |
| 139214 | + /* 75 */ "ifexists ::= IF EXISTS", |
| 139215 | + /* 76 */ "ifexists ::=", |
| 139216 | + /* 77 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select", |
| 139217 | + /* 78 */ "cmd ::= DROP VIEW ifexists fullname", |
| 139218 | + /* 79 */ "cmd ::= select", |
| 139219 | + /* 80 */ "select ::= with selectnowith", |
| 139220 | + /* 81 */ "selectnowith ::= selectnowith multiselect_op oneselect", |
| 139221 | + /* 82 */ "multiselect_op ::= UNION", |
| 139222 | + /* 83 */ "multiselect_op ::= UNION ALL", |
| 139223 | + /* 84 */ "multiselect_op ::= EXCEPT|INTERSECT", |
| 139224 | + /* 85 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt", |
| 139225 | + /* 86 */ "values ::= VALUES LP nexprlist RP", |
| 139226 | + /* 87 */ "values ::= values COMMA LP exprlist RP", |
| 139227 | + /* 88 */ "distinct ::= DISTINCT", |
| 139228 | + /* 89 */ "distinct ::= ALL", |
| 139229 | + /* 90 */ "distinct ::=", |
| 139230 | + /* 91 */ "sclp ::=", |
| 139231 | + /* 92 */ "selcollist ::= sclp scanpt expr scanpt as", |
| 139232 | + /* 93 */ "selcollist ::= sclp scanpt STAR", |
| 139233 | + /* 94 */ "selcollist ::= sclp scanpt nm DOT STAR", |
| 139234 | + /* 95 */ "as ::= AS nm", |
| 139235 | + /* 96 */ "as ::=", |
| 139236 | + /* 97 */ "from ::=", |
| 139237 | + /* 98 */ "from ::= FROM seltablist", |
| 139238 | + /* 99 */ "stl_prefix ::= seltablist joinop", |
| 139239 | + /* 100 */ "stl_prefix ::=", |
| 139240 | + /* 101 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt", |
| 139241 | + /* 102 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt", |
| 139242 | + /* 103 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt", |
| 139243 | + /* 104 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt", |
| 139244 | + /* 105 */ "dbnm ::=", |
| 139245 | + /* 106 */ "dbnm ::= DOT nm", |
| 139246 | + /* 107 */ "fullname ::= nm dbnm", |
| 139247 | + /* 108 */ "joinop ::= COMMA|JOIN", |
| 139248 | + /* 109 */ "joinop ::= JOIN_KW JOIN", |
| 139249 | + /* 110 */ "joinop ::= JOIN_KW nm JOIN", |
| 139250 | + /* 111 */ "joinop ::= JOIN_KW nm nm JOIN", |
| 139251 | + /* 112 */ "on_opt ::= ON expr", |
| 139252 | + /* 113 */ "on_opt ::=", |
| 139253 | + /* 114 */ "indexed_opt ::=", |
| 139254 | + /* 115 */ "indexed_opt ::= INDEXED BY nm", |
| 139255 | + /* 116 */ "indexed_opt ::= NOT INDEXED", |
| 139256 | + /* 117 */ "using_opt ::= USING LP idlist RP", |
| 139257 | + /* 118 */ "using_opt ::=", |
| 139258 | + /* 119 */ "orderby_opt ::=", |
| 139259 | + /* 120 */ "orderby_opt ::= ORDER BY sortlist", |
| 139260 | + /* 121 */ "sortlist ::= sortlist COMMA expr sortorder", |
| 139261 | + /* 122 */ "sortlist ::= expr sortorder", |
| 139262 | + /* 123 */ "sortorder ::= ASC", |
| 139263 | + /* 124 */ "sortorder ::= DESC", |
| 139264 | + /* 125 */ "sortorder ::=", |
| 139265 | + /* 126 */ "groupby_opt ::=", |
| 139266 | + /* 127 */ "groupby_opt ::= GROUP BY nexprlist", |
| 139267 | + /* 128 */ "having_opt ::=", |
| 139268 | + /* 129 */ "having_opt ::= HAVING expr", |
| 139269 | + /* 130 */ "limit_opt ::=", |
| 139270 | + /* 131 */ "limit_opt ::= LIMIT expr", |
| 139271 | + /* 132 */ "limit_opt ::= LIMIT expr OFFSET expr", |
| 139272 | + /* 133 */ "limit_opt ::= LIMIT expr COMMA expr", |
| 139273 | + /* 134 */ "cmd ::= with DELETE FROM fullname indexed_opt where_opt", |
| 139274 | + /* 135 */ "where_opt ::=", |
| 139275 | + /* 136 */ "where_opt ::= WHERE expr", |
| 139276 | + /* 137 */ "cmd ::= with UPDATE orconf fullname indexed_opt SET setlist where_opt", |
| 139277 | + /* 138 */ "setlist ::= setlist COMMA nm EQ expr", |
| 139278 | + /* 139 */ "setlist ::= setlist COMMA LP idlist RP EQ expr", |
| 139279 | + /* 140 */ "setlist ::= nm EQ expr", |
| 139280 | + /* 141 */ "setlist ::= LP idlist RP EQ expr", |
| 139281 | + /* 142 */ "cmd ::= with insert_cmd INTO fullname idlist_opt select", |
| 139282 | + /* 143 */ "cmd ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES", |
| 139283 | + /* 144 */ "insert_cmd ::= INSERT orconf", |
| 139284 | + /* 145 */ "insert_cmd ::= REPLACE", |
| 139285 | + /* 146 */ "idlist_opt ::=", |
| 139286 | + /* 147 */ "idlist_opt ::= LP idlist RP", |
| 139287 | + /* 148 */ "idlist ::= idlist COMMA nm", |
| 139288 | + /* 149 */ "idlist ::= nm", |
| 139289 | + /* 150 */ "expr ::= LP expr RP", |
| 139290 | + /* 151 */ "expr ::= ID|INDEXED", |
| 139291 | + /* 152 */ "expr ::= JOIN_KW", |
| 139292 | + /* 153 */ "expr ::= nm DOT nm", |
| 139293 | + /* 154 */ "expr ::= nm DOT nm DOT nm", |
| 139294 | + /* 155 */ "term ::= NULL|FLOAT|BLOB", |
| 139295 | + /* 156 */ "term ::= STRING", |
| 139296 | + /* 157 */ "term ::= INTEGER", |
| 139297 | + /* 158 */ "expr ::= VARIABLE", |
| 139298 | + /* 159 */ "expr ::= expr COLLATE ID|STRING", |
| 139299 | + /* 160 */ "expr ::= CAST LP expr AS typetoken RP", |
| 139300 | + /* 161 */ "expr ::= ID|INDEXED LP distinct exprlist RP", |
| 139301 | + /* 162 */ "expr ::= ID|INDEXED LP STAR RP", |
| 139302 | + /* 163 */ "term ::= CTIME_KW", |
| 139303 | + /* 164 */ "expr ::= LP nexprlist COMMA expr RP", |
| 139304 | + /* 165 */ "expr ::= expr AND expr", |
| 139305 | + /* 166 */ "expr ::= expr OR expr", |
| 139306 | + /* 167 */ "expr ::= expr LT|GT|GE|LE expr", |
| 139307 | + /* 168 */ "expr ::= expr EQ|NE expr", |
| 139308 | + /* 169 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", |
| 139309 | + /* 170 */ "expr ::= expr PLUS|MINUS expr", |
| 139310 | + /* 171 */ "expr ::= expr STAR|SLASH|REM expr", |
| 139311 | + /* 172 */ "expr ::= expr CONCAT expr", |
| 139312 | + /* 173 */ "likeop ::= NOT LIKE_KW|MATCH", |
| 139313 | + /* 174 */ "expr ::= expr likeop expr", |
| 139314 | + /* 175 */ "expr ::= expr likeop expr ESCAPE expr", |
| 139315 | + /* 176 */ "expr ::= expr ISNULL|NOTNULL", |
| 139316 | + /* 177 */ "expr ::= expr NOT NULL", |
| 139317 | + /* 178 */ "expr ::= expr IS expr", |
| 139318 | + /* 179 */ "expr ::= expr IS NOT expr", |
| 139319 | + /* 180 */ "expr ::= NOT expr", |
| 139320 | + /* 181 */ "expr ::= BITNOT expr", |
| 139321 | + /* 182 */ "expr ::= MINUS expr", |
| 139322 | + /* 183 */ "expr ::= PLUS expr", |
| 139323 | + /* 184 */ "between_op ::= BETWEEN", |
| 139324 | + /* 185 */ "between_op ::= NOT BETWEEN", |
| 139325 | + /* 186 */ "expr ::= expr between_op expr AND expr", |
| 139326 | + /* 187 */ "in_op ::= IN", |
| 139327 | + /* 188 */ "in_op ::= NOT IN", |
| 139328 | + /* 189 */ "expr ::= expr in_op LP exprlist RP", |
| 139329 | + /* 190 */ "expr ::= LP select RP", |
| 139330 | + /* 191 */ "expr ::= expr in_op LP select RP", |
| 139331 | + /* 192 */ "expr ::= expr in_op nm dbnm paren_exprlist", |
| 139332 | + /* 193 */ "expr ::= EXISTS LP select RP", |
| 139333 | + /* 194 */ "expr ::= CASE case_operand case_exprlist case_else END", |
| 139334 | + /* 195 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", |
| 139335 | + /* 196 */ "case_exprlist ::= WHEN expr THEN expr", |
| 139336 | + /* 197 */ "case_else ::= ELSE expr", |
| 139337 | + /* 198 */ "case_else ::=", |
| 139338 | + /* 199 */ "case_operand ::= expr", |
| 139339 | + /* 200 */ "case_operand ::=", |
| 139340 | + /* 201 */ "exprlist ::=", |
| 139341 | + /* 202 */ "nexprlist ::= nexprlist COMMA expr", |
| 139342 | + /* 203 */ "nexprlist ::= expr", |
| 139343 | + /* 204 */ "paren_exprlist ::=", |
| 139344 | + /* 205 */ "paren_exprlist ::= LP exprlist RP", |
| 139345 | + /* 206 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt", |
| 139346 | + /* 207 */ "uniqueflag ::= UNIQUE", |
| 139347 | + /* 208 */ "uniqueflag ::=", |
| 139348 | + /* 209 */ "eidlist_opt ::=", |
| 139349 | + /* 210 */ "eidlist_opt ::= LP eidlist RP", |
| 139350 | + /* 211 */ "eidlist ::= eidlist COMMA nm collate sortorder", |
| 139351 | + /* 212 */ "eidlist ::= nm collate sortorder", |
| 139352 | + /* 213 */ "collate ::=", |
| 139353 | + /* 214 */ "collate ::= COLLATE ID|STRING", |
| 139354 | + /* 215 */ "cmd ::= DROP INDEX ifexists fullname", |
| 139355 | + /* 216 */ "cmd ::= VACUUM", |
| 139356 | + /* 217 */ "cmd ::= VACUUM nm", |
| 139357 | + /* 218 */ "cmd ::= PRAGMA nm dbnm", |
| 139358 | + /* 219 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", |
| 139359 | + /* 220 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", |
| 139360 | + /* 221 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", |
| 139361 | + /* 222 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", |
| 139362 | + /* 223 */ "plus_num ::= PLUS INTEGER|FLOAT", |
| 139363 | + /* 224 */ "minus_num ::= MINUS INTEGER|FLOAT", |
| 139364 | + /* 225 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END", |
| 139365 | + /* 226 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", |
| 139366 | + /* 227 */ "trigger_time ::= BEFORE|AFTER", |
| 139367 | + /* 228 */ "trigger_time ::= INSTEAD OF", |
| 139368 | + /* 229 */ "trigger_time ::=", |
| 139369 | + /* 230 */ "trigger_event ::= DELETE|INSERT", |
| 139370 | + /* 231 */ "trigger_event ::= UPDATE", |
| 139371 | + /* 232 */ "trigger_event ::= UPDATE OF idlist", |
| 139372 | + /* 233 */ "when_clause ::=", |
| 139373 | + /* 234 */ "when_clause ::= WHEN expr", |
| 139374 | + /* 235 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", |
| 139375 | + /* 236 */ "trigger_cmd_list ::= trigger_cmd SEMI", |
| 139376 | + /* 237 */ "trnm ::= nm DOT nm", |
| 139377 | + /* 238 */ "tridxby ::= INDEXED BY nm", |
| 139378 | + /* 239 */ "tridxby ::= NOT INDEXED", |
| 139379 | + /* 240 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt", |
| 139380 | + /* 241 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select scanpt", |
| 139381 | + /* 242 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt", |
| 139382 | + /* 243 */ "trigger_cmd ::= scanpt select scanpt", |
| 139383 | + /* 244 */ "expr ::= RAISE LP IGNORE RP", |
| 139384 | + /* 245 */ "expr ::= RAISE LP raisetype COMMA nm RP", |
| 139385 | + /* 246 */ "raisetype ::= ROLLBACK", |
| 139386 | + /* 247 */ "raisetype ::= ABORT", |
| 139387 | + /* 248 */ "raisetype ::= FAIL", |
| 139388 | + /* 249 */ "cmd ::= DROP TRIGGER ifexists fullname", |
| 139389 | + /* 250 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", |
| 139390 | + /* 251 */ "cmd ::= DETACH database_kw_opt expr", |
| 139391 | + /* 252 */ "key_opt ::=", |
| 139392 | + /* 253 */ "key_opt ::= KEY expr", |
| 139393 | + /* 254 */ "cmd ::= REINDEX", |
| 139394 | + /* 255 */ "cmd ::= REINDEX nm dbnm", |
| 139395 | + /* 256 */ "cmd ::= ANALYZE", |
| 139396 | + /* 257 */ "cmd ::= ANALYZE nm dbnm", |
| 139397 | + /* 258 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", |
| 139398 | + /* 259 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist", |
| 139399 | + /* 260 */ "add_column_fullname ::= fullname", |
| 139400 | + /* 261 */ "cmd ::= create_vtab", |
| 139401 | + /* 262 */ "cmd ::= create_vtab LP vtabarglist RP", |
| 139402 | + /* 263 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm", |
| 139403 | + /* 264 */ "vtabarg ::=", |
| 139404 | + /* 265 */ "vtabargtoken ::= ANY", |
| 139405 | + /* 266 */ "vtabargtoken ::= lp anylist RP", |
| 139406 | + /* 267 */ "lp ::= LP", |
| 139407 | + /* 268 */ "with ::=", |
| 139408 | + /* 269 */ "with ::= WITH wqlist", |
| 139409 | + /* 270 */ "with ::= WITH RECURSIVE wqlist", |
| 139410 | + /* 271 */ "wqlist ::= nm eidlist_opt AS LP select RP", |
| 139411 | + /* 272 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP", |
| 139412 | + /* 273 */ "input ::= cmdlist", |
| 139413 | + /* 274 */ "cmdlist ::= cmdlist ecmd", |
| 139414 | + /* 275 */ "cmdlist ::= ecmd", |
| 139415 | + /* 276 */ "ecmd ::= SEMI", |
| 139416 | + /* 277 */ "ecmd ::= explain cmdx SEMI", |
| 139417 | + /* 278 */ "explain ::=", |
| 139418 | + /* 279 */ "trans_opt ::=", |
| 139419 | + /* 280 */ "trans_opt ::= TRANSACTION", |
| 139420 | + /* 281 */ "trans_opt ::= TRANSACTION nm", |
| 139421 | + /* 282 */ "savepoint_opt ::= SAVEPOINT", |
| 139422 | + /* 283 */ "savepoint_opt ::=", |
| 139423 | + /* 284 */ "cmd ::= create_table create_table_args", |
| 139424 | + /* 285 */ "columnlist ::= columnlist COMMA columnname carglist", |
| 139425 | + /* 286 */ "columnlist ::= columnname carglist", |
| 139426 | + /* 287 */ "nm ::= ID|INDEXED", |
| 139427 | + /* 288 */ "nm ::= STRING", |
| 139428 | + /* 289 */ "nm ::= JOIN_KW", |
| 139429 | + /* 290 */ "typetoken ::= typename", |
| 139430 | + /* 291 */ "typename ::= ID|STRING", |
| 139431 | + /* 292 */ "signed ::= plus_num", |
| 139432 | + /* 293 */ "signed ::= minus_num", |
| 139433 | + /* 294 */ "carglist ::= carglist ccons", |
| 139434 | + /* 295 */ "carglist ::=", |
| 139435 | + /* 296 */ "ccons ::= NULL onconf", |
| 139436 | + /* 297 */ "conslist_opt ::= COMMA conslist", |
| 139437 | + /* 298 */ "conslist ::= conslist tconscomma tcons", |
| 139438 | + /* 299 */ "conslist ::= tcons", |
| 139439 | + /* 300 */ "tconscomma ::=", |
| 139440 | + /* 301 */ "defer_subclause_opt ::= defer_subclause", |
| 139441 | + /* 302 */ "resolvetype ::= raisetype", |
| 139442 | + /* 303 */ "selectnowith ::= oneselect", |
| 139443 | + /* 304 */ "oneselect ::= values", |
| 139444 | + /* 305 */ "sclp ::= selcollist COMMA", |
| 139445 | + /* 306 */ "as ::= ID|STRING", |
| 139446 | + /* 307 */ "expr ::= term", |
| 139447 | + /* 308 */ "likeop ::= LIKE_KW|MATCH", |
| 139448 | + /* 309 */ "exprlist ::= nexprlist", |
| 139449 | + /* 310 */ "nmnum ::= plus_num", |
| 139450 | + /* 311 */ "nmnum ::= nm", |
| 139451 | + /* 312 */ "nmnum ::= ON", |
| 139452 | + /* 313 */ "nmnum ::= DELETE", |
| 139453 | + /* 314 */ "nmnum ::= DEFAULT", |
| 139454 | + /* 315 */ "plus_num ::= INTEGER|FLOAT", |
| 139455 | + /* 316 */ "foreach_clause ::=", |
| 139456 | + /* 317 */ "foreach_clause ::= FOR EACH ROW", |
| 139457 | + /* 318 */ "trnm ::= nm", |
| 139458 | + /* 319 */ "tridxby ::=", |
| 139459 | + /* 320 */ "database_kw_opt ::= DATABASE", |
| 139460 | + /* 321 */ "database_kw_opt ::=", |
| 139461 | + /* 322 */ "kwcolumn_opt ::=", |
| 139462 | + /* 323 */ "kwcolumn_opt ::= COLUMNKW", |
| 139463 | + /* 324 */ "vtabarglist ::= vtabarg", |
| 139464 | + /* 325 */ "vtabarglist ::= vtabarglist COMMA vtabarg", |
| 139465 | + /* 326 */ "vtabarg ::= vtabarg vtabargtoken", |
| 139466 | + /* 327 */ "anylist ::=", |
| 139467 | + /* 328 */ "anylist ::= anylist LP anylist RP", |
| 139468 | + /* 329 */ "anylist ::= anylist ANY", |
| 139090 | 139469 | }; |
| 139091 | 139470 | #endif /* NDEBUG */ |
| 139092 | 139471 | |
| 139093 | 139472 | |
| 139094 | 139473 | #if YYSTACKDEPTH<=0 |
| | @@ -139206,80 +139585,76 @@ |
| 139206 | 139585 | ** which appear on the RHS of the rule, but which are *not* used |
| 139207 | 139586 | ** inside the C code. |
| 139208 | 139587 | */ |
| 139209 | 139588 | /********* Begin destructor definitions ***************************************/ |
| 139210 | 139589 | case 163: /* select */ |
| 139211 | | - case 194: /* selectnowith */ |
| 139212 | | - case 195: /* oneselect */ |
| 139213 | | - case 206: /* values */ |
| 139214 | | -{ |
| 139215 | | -sqlite3SelectDelete(pParse->db, (yypminor->yy243)); |
| 139216 | | -} |
| 139217 | | - break; |
| 139218 | | - case 172: /* term */ |
| 139219 | | - case 173: /* expr */ |
| 139220 | | -{ |
| 139221 | | -sqlite3ExprDelete(pParse->db, (yypminor->yy190).pExpr); |
| 139222 | | -} |
| 139223 | | - break; |
| 139224 | | - case 177: /* eidlist_opt */ |
| 139225 | | - case 186: /* sortlist */ |
| 139226 | | - case 187: /* eidlist */ |
| 139227 | | - case 199: /* selcollist */ |
| 139228 | | - case 202: /* groupby_opt */ |
| 139229 | | - case 204: /* orderby_opt */ |
| 139230 | | - case 207: /* nexprlist */ |
| 139231 | | - case 208: /* exprlist */ |
| 139232 | | - case 209: /* sclp */ |
| 139233 | | - case 218: /* setlist */ |
| 139234 | | - case 224: /* paren_exprlist */ |
| 139235 | | - case 226: /* case_exprlist */ |
| 139236 | | -{ |
| 139237 | | -sqlite3ExprListDelete(pParse->db, (yypminor->yy148)); |
| 139238 | | -} |
| 139239 | | - break; |
| 139240 | | - case 193: /* fullname */ |
| 139241 | | - case 200: /* from */ |
| 139242 | | - case 211: /* seltablist */ |
| 139243 | | - case 212: /* stl_prefix */ |
| 139244 | | -{ |
| 139245 | | -sqlite3SrcListDelete(pParse->db, (yypminor->yy185)); |
| 139246 | | -} |
| 139247 | | - break; |
| 139248 | | - case 196: /* with */ |
| 139249 | | - case 250: /* wqlist */ |
| 139250 | | -{ |
| 139251 | | -sqlite3WithDelete(pParse->db, (yypminor->yy285)); |
| 139252 | | -} |
| 139253 | | - break; |
| 139254 | | - case 201: /* where_opt */ |
| 139255 | | - case 203: /* having_opt */ |
| 139256 | | - case 215: /* on_opt */ |
| 139257 | | - case 225: /* case_operand */ |
| 139258 | | - case 227: /* case_else */ |
| 139259 | | - case 236: /* when_clause */ |
| 139260 | | - case 241: /* key_opt */ |
| 139261 | | -{ |
| 139262 | | -sqlite3ExprDelete(pParse->db, (yypminor->yy72)); |
| 139263 | | -} |
| 139264 | | - break; |
| 139265 | | - case 216: /* using_opt */ |
| 139266 | | - case 217: /* idlist */ |
| 139267 | | - case 220: /* idlist_opt */ |
| 139268 | | -{ |
| 139269 | | -sqlite3IdListDelete(pParse->db, (yypminor->yy254)); |
| 139270 | | -} |
| 139271 | | - break; |
| 139272 | | - case 232: /* trigger_cmd_list */ |
| 139273 | | - case 237: /* trigger_cmd */ |
| 139274 | | -{ |
| 139275 | | -sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy145)); |
| 139276 | | -} |
| 139277 | | - break; |
| 139278 | | - case 234: /* trigger_event */ |
| 139279 | | -{ |
| 139280 | | -sqlite3IdListDelete(pParse->db, (yypminor->yy332).b); |
| 139590 | + case 195: /* selectnowith */ |
| 139591 | + case 196: /* oneselect */ |
| 139592 | + case 207: /* values */ |
| 139593 | +{ |
| 139594 | +sqlite3SelectDelete(pParse->db, (yypminor->yy387)); |
| 139595 | +} |
| 139596 | + break; |
| 139597 | + case 173: /* term */ |
| 139598 | + case 174: /* expr */ |
| 139599 | + case 202: /* where_opt */ |
| 139600 | + case 204: /* having_opt */ |
| 139601 | + case 216: /* on_opt */ |
| 139602 | + case 226: /* case_operand */ |
| 139603 | + case 228: /* case_else */ |
| 139604 | + case 237: /* when_clause */ |
| 139605 | + case 242: /* key_opt */ |
| 139606 | +{ |
| 139607 | +sqlite3ExprDelete(pParse->db, (yypminor->yy314)); |
| 139608 | +} |
| 139609 | + break; |
| 139610 | + case 178: /* eidlist_opt */ |
| 139611 | + case 187: /* sortlist */ |
| 139612 | + case 188: /* eidlist */ |
| 139613 | + case 200: /* selcollist */ |
| 139614 | + case 203: /* groupby_opt */ |
| 139615 | + case 205: /* orderby_opt */ |
| 139616 | + case 208: /* nexprlist */ |
| 139617 | + case 209: /* exprlist */ |
| 139618 | + case 210: /* sclp */ |
| 139619 | + case 219: /* setlist */ |
| 139620 | + case 225: /* paren_exprlist */ |
| 139621 | + case 227: /* case_exprlist */ |
| 139622 | +{ |
| 139623 | +sqlite3ExprListDelete(pParse->db, (yypminor->yy322)); |
| 139624 | +} |
| 139625 | + break; |
| 139626 | + case 194: /* fullname */ |
| 139627 | + case 201: /* from */ |
| 139628 | + case 212: /* seltablist */ |
| 139629 | + case 213: /* stl_prefix */ |
| 139630 | +{ |
| 139631 | +sqlite3SrcListDelete(pParse->db, (yypminor->yy259)); |
| 139632 | +} |
| 139633 | + break; |
| 139634 | + case 197: /* with */ |
| 139635 | + case 251: /* wqlist */ |
| 139636 | +{ |
| 139637 | +sqlite3WithDelete(pParse->db, (yypminor->yy451)); |
| 139638 | +} |
| 139639 | + break; |
| 139640 | + case 217: /* using_opt */ |
| 139641 | + case 218: /* idlist */ |
| 139642 | + case 221: /* idlist_opt */ |
| 139643 | +{ |
| 139644 | +sqlite3IdListDelete(pParse->db, (yypminor->yy384)); |
| 139645 | +} |
| 139646 | + break; |
| 139647 | + case 233: /* trigger_cmd_list */ |
| 139648 | + case 238: /* trigger_cmd */ |
| 139649 | +{ |
| 139650 | +sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy203)); |
| 139651 | +} |
| 139652 | + break; |
| 139653 | + case 235: /* trigger_event */ |
| 139654 | +{ |
| 139655 | +sqlite3IdListDelete(pParse->db, (yypminor->yy90).b); |
| 139281 | 139656 | } |
| 139282 | 139657 | break; |
| 139283 | 139658 | /********* End destructor definitions *****************************************/ |
| 139284 | 139659 | default: break; /* If no destructor action specified: do nothing */ |
| 139285 | 139660 | } |
| | @@ -139346,10 +139721,47 @@ |
| 139346 | 139721 | yyParser *pParser = (yyParser*)p; |
| 139347 | 139722 | return pParser->yyhwm; |
| 139348 | 139723 | } |
| 139349 | 139724 | #endif |
| 139350 | 139725 | |
| 139726 | +/* This array of booleans keeps track of the parser statement |
| 139727 | +** coverage. The element yycoverage[X][Y] is set when the parser |
| 139728 | +** is in state X and has a lookahead token Y. In a well-tested |
| 139729 | +** systems, every element of this matrix should end up being set. |
| 139730 | +*/ |
| 139731 | +#if defined(YYCOVERAGE) |
| 139732 | +static unsigned char yycoverage[YYNSTATE][YYNTOKEN]; |
| 139733 | +#endif |
| 139734 | + |
| 139735 | +/* |
| 139736 | +** Write into out a description of every state/lookahead combination that |
| 139737 | +** |
| 139738 | +** (1) has not been used by the parser, and |
| 139739 | +** (2) is not a syntax error. |
| 139740 | +** |
| 139741 | +** Return the number of missed state/lookahead combinations. |
| 139742 | +*/ |
| 139743 | +#if defined(YYCOVERAGE) |
| 139744 | +SQLITE_PRIVATE int sqlite3ParserCoverage(FILE *out){ |
| 139745 | + int stateno, iLookAhead, i; |
| 139746 | + int nMissed = 0; |
| 139747 | + for(stateno=0; stateno<YYNSTATE; stateno++){ |
| 139748 | + i = yy_shift_ofst[stateno]; |
| 139749 | + for(iLookAhead=0; iLookAhead<YYNTOKEN; iLookAhead++){ |
| 139750 | + if( yy_lookahead[i+iLookAhead]!=iLookAhead ) continue; |
| 139751 | + if( yycoverage[stateno][iLookAhead]==0 ) nMissed++; |
| 139752 | + if( out ){ |
| 139753 | + fprintf(out,"State %d lookahead %s %s\n", stateno, |
| 139754 | + yyTokenName[iLookAhead], |
| 139755 | + yycoverage[stateno][iLookAhead] ? "ok" : "missed"); |
| 139756 | + } |
| 139757 | + } |
| 139758 | + } |
| 139759 | + return nMissed; |
| 139760 | +} |
| 139761 | +#endif |
| 139762 | + |
| 139351 | 139763 | /* |
| 139352 | 139764 | ** Find the appropriate action for a parser given the terminal |
| 139353 | 139765 | ** look-ahead token iLookAhead. |
| 139354 | 139766 | */ |
| 139355 | 139767 | static unsigned int yy_find_shift_action( |
| | @@ -139357,17 +139769,22 @@ |
| 139357 | 139769 | YYCODETYPE iLookAhead /* The look-ahead token */ |
| 139358 | 139770 | ){ |
| 139359 | 139771 | int i; |
| 139360 | 139772 | int stateno = pParser->yytos->stateno; |
| 139361 | 139773 | |
| 139362 | | - if( stateno>=YY_MIN_REDUCE ) return stateno; |
| 139774 | + if( stateno>YY_MAX_SHIFT ) return stateno; |
| 139363 | 139775 | assert( stateno <= YY_SHIFT_COUNT ); |
| 139776 | +#if defined(YYCOVERAGE) |
| 139777 | + yycoverage[stateno][iLookAhead] = 1; |
| 139778 | +#endif |
| 139364 | 139779 | do{ |
| 139365 | 139780 | i = yy_shift_ofst[stateno]; |
| 139781 | + assert( i>=0 && i+YYNTOKEN<=sizeof(yy_lookahead)/sizeof(yy_lookahead[0]) ); |
| 139366 | 139782 | assert( iLookAhead!=YYNOCODE ); |
| 139783 | + assert( iLookAhead < YYNTOKEN ); |
| 139367 | 139784 | i += iLookAhead; |
| 139368 | | - if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){ |
| 139785 | + if( yy_lookahead[i]!=iLookAhead ){ |
| 139369 | 139786 | #ifdef YYFALLBACK |
| 139370 | 139787 | YYCODETYPE iFallback; /* Fallback token */ |
| 139371 | 139788 | if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) |
| 139372 | 139789 | && (iFallback = yyFallback[iLookAhead])!=0 ){ |
| 139373 | 139790 | #ifndef NDEBUG |
| | @@ -139426,11 +139843,10 @@ |
| 139426 | 139843 | } |
| 139427 | 139844 | #else |
| 139428 | 139845 | assert( stateno<=YY_REDUCE_COUNT ); |
| 139429 | 139846 | #endif |
| 139430 | 139847 | i = yy_reduce_ofst[stateno]; |
| 139431 | | - assert( i!=YY_REDUCE_USE_DFLT ); |
| 139432 | 139848 | assert( iLookAhead!=YYNOCODE ); |
| 139433 | 139849 | i += iLookAhead; |
| 139434 | 139850 | #ifdef YYERRORSYMBOL |
| 139435 | 139851 | if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){ |
| 139436 | 139852 | return yy_default[stateno]; |
| | @@ -139464,24 +139880,25 @@ |
| 139464 | 139880 | |
| 139465 | 139881 | /* |
| 139466 | 139882 | ** Print tracing information for a SHIFT action |
| 139467 | 139883 | */ |
| 139468 | 139884 | #ifndef NDEBUG |
| 139469 | | -static void yyTraceShift(yyParser *yypParser, int yyNewState){ |
| 139885 | +static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){ |
| 139470 | 139886 | if( yyTraceFILE ){ |
| 139471 | 139887 | if( yyNewState<YYNSTATE ){ |
| 139472 | | - fprintf(yyTraceFILE,"%sShift '%s', go to state %d\n", |
| 139473 | | - yyTracePrompt,yyTokenName[yypParser->yytos->major], |
| 139888 | + fprintf(yyTraceFILE,"%s%s '%s', go to state %d\n", |
| 139889 | + yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], |
| 139474 | 139890 | yyNewState); |
| 139475 | 139891 | }else{ |
| 139476 | | - fprintf(yyTraceFILE,"%sShift '%s'\n", |
| 139477 | | - yyTracePrompt,yyTokenName[yypParser->yytos->major]); |
| 139892 | + fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n", |
| 139893 | + yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], |
| 139894 | + yyNewState - YY_MIN_REDUCE); |
| 139478 | 139895 | } |
| 139479 | 139896 | } |
| 139480 | 139897 | } |
| 139481 | 139898 | #else |
| 139482 | | -# define yyTraceShift(X,Y) |
| 139899 | +# define yyTraceShift(X,Y,Z) |
| 139483 | 139900 | #endif |
| 139484 | 139901 | |
| 139485 | 139902 | /* |
| 139486 | 139903 | ** Perform a shift action. |
| 139487 | 139904 | */ |
| | @@ -139519,360 +139936,369 @@ |
| 139519 | 139936 | } |
| 139520 | 139937 | yytos = yypParser->yytos; |
| 139521 | 139938 | yytos->stateno = (YYACTIONTYPE)yyNewState; |
| 139522 | 139939 | yytos->major = (YYCODETYPE)yyMajor; |
| 139523 | 139940 | yytos->minor.yy0 = yyMinor; |
| 139524 | | - yyTraceShift(yypParser, yyNewState); |
| 139941 | + yyTraceShift(yypParser, yyNewState, "Shift"); |
| 139525 | 139942 | } |
| 139526 | 139943 | |
| 139527 | 139944 | /* The following table contains information about every rule that |
| 139528 | 139945 | ** is used during the reduce. |
| 139529 | 139946 | */ |
| 139530 | 139947 | static const struct { |
| 139531 | 139948 | YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ |
| 139532 | 139949 | signed char nrhs; /* Negative of the number of RHS symbols in the rule */ |
| 139533 | 139950 | } yyRuleInfo[] = { |
| 139534 | | - { 147, -1 }, |
| 139535 | | - { 147, -3 }, |
| 139536 | | - { 148, -1 }, |
| 139537 | | - { 149, -3 }, |
| 139538 | | - { 150, 0 }, |
| 139539 | | - { 150, -1 }, |
| 139540 | | - { 150, -1 }, |
| 139541 | | - { 150, -1 }, |
| 139542 | | - { 149, -2 }, |
| 139543 | | - { 149, -2 }, |
| 139544 | | - { 149, -2 }, |
| 139545 | | - { 149, -3 }, |
| 139546 | | - { 149, -5 }, |
| 139547 | | - { 154, -6 }, |
| 139548 | | - { 156, -1 }, |
| 139549 | | - { 158, 0 }, |
| 139550 | | - { 158, -3 }, |
| 139551 | | - { 157, -1 }, |
| 139552 | | - { 157, 0 }, |
| 139553 | | - { 155, -5 }, |
| 139554 | | - { 155, -2 }, |
| 139555 | | - { 162, 0 }, |
| 139556 | | - { 162, -2 }, |
| 139557 | | - { 164, -2 }, |
| 139558 | | - { 166, 0 }, |
| 139559 | | - { 166, -4 }, |
| 139560 | | - { 166, -6 }, |
| 139561 | | - { 167, -2 }, |
| 139562 | | - { 171, -2 }, |
| 139563 | | - { 171, -2 }, |
| 139564 | | - { 171, -4 }, |
| 139565 | | - { 171, -3 }, |
| 139566 | | - { 171, -3 }, |
| 139567 | | - { 171, -2 }, |
| 139568 | | - { 171, -3 }, |
| 139569 | | - { 171, -5 }, |
| 139570 | | - { 171, -2 }, |
| 139571 | | - { 171, -4 }, |
| 139572 | | - { 171, -4 }, |
| 139573 | | - { 171, -1 }, |
| 139574 | | - { 171, -2 }, |
| 139575 | | - { 176, 0 }, |
| 139576 | | - { 176, -1 }, |
| 139577 | | - { 178, 0 }, |
| 139578 | | - { 178, -2 }, |
| 139579 | | - { 180, -2 }, |
| 139580 | | - { 180, -3 }, |
| 139581 | | - { 180, -3 }, |
| 139582 | | - { 180, -3 }, |
| 139583 | | - { 181, -2 }, |
| 139584 | | - { 181, -2 }, |
| 139585 | | - { 181, -1 }, |
| 139586 | | - { 181, -1 }, |
| 139587 | | - { 181, -2 }, |
| 139588 | | - { 179, -3 }, |
| 139589 | | - { 179, -2 }, |
| 139590 | | - { 182, 0 }, |
| 139591 | | - { 182, -2 }, |
| 139592 | | - { 182, -2 }, |
| 139593 | | - { 161, 0 }, |
| 139594 | | - { 184, -1 }, |
| 139595 | | - { 185, -2 }, |
| 139596 | | - { 185, -7 }, |
| 139597 | | - { 185, -5 }, |
| 139598 | | - { 185, -5 }, |
| 139599 | | - { 185, -10 }, |
| 139600 | | - { 188, 0 }, |
| 139601 | | - { 174, 0 }, |
| 139602 | | - { 174, -3 }, |
| 139603 | | - { 189, 0 }, |
| 139604 | | - { 189, -2 }, |
| 139605 | | - { 190, -1 }, |
| 139606 | | - { 190, -1 }, |
| 139607 | | - { 149, -4 }, |
| 139608 | | - { 192, -2 }, |
| 139609 | | - { 192, 0 }, |
| 139610 | | - { 149, -9 }, |
| 139611 | | - { 149, -4 }, |
| 139612 | | - { 149, -1 }, |
| 139613 | | - { 163, -2 }, |
| 139614 | | - { 194, -3 }, |
| 139615 | | - { 197, -1 }, |
| 139616 | | - { 197, -2 }, |
| 139617 | | - { 197, -1 }, |
| 139618 | | - { 195, -9 }, |
| 139619 | | - { 206, -4 }, |
| 139620 | | - { 206, -5 }, |
| 139621 | | - { 198, -1 }, |
| 139622 | | - { 198, -1 }, |
| 139623 | | - { 198, 0 }, |
| 139624 | | - { 209, 0 }, |
| 139625 | | - { 199, -3 }, |
| 139626 | | - { 199, -2 }, |
| 139627 | | - { 199, -4 }, |
| 139628 | | - { 210, -2 }, |
| 139629 | | - { 210, 0 }, |
| 139630 | | - { 200, 0 }, |
| 139631 | | - { 200, -2 }, |
| 139632 | | - { 212, -2 }, |
| 139633 | | - { 212, 0 }, |
| 139634 | | - { 211, -7 }, |
| 139635 | | - { 211, -9 }, |
| 139636 | | - { 211, -7 }, |
| 139637 | | - { 211, -7 }, |
| 139638 | | - { 159, 0 }, |
| 139639 | | - { 159, -2 }, |
| 139640 | | - { 193, -2 }, |
| 139641 | | - { 213, -1 }, |
| 139642 | | - { 213, -2 }, |
| 139643 | | - { 213, -3 }, |
| 139644 | | - { 213, -4 }, |
| 139645 | | - { 215, -2 }, |
| 139646 | | - { 215, 0 }, |
| 139647 | | - { 214, 0 }, |
| 139648 | | - { 214, -3 }, |
| 139649 | | - { 214, -2 }, |
| 139650 | | - { 216, -4 }, |
| 139651 | | - { 216, 0 }, |
| 139652 | | - { 204, 0 }, |
| 139653 | | - { 204, -3 }, |
| 139654 | | - { 186, -4 }, |
| 139655 | | - { 186, -2 }, |
| 139656 | | - { 175, -1 }, |
| 139657 | | - { 175, -1 }, |
| 139658 | | - { 175, 0 }, |
| 139659 | | - { 202, 0 }, |
| 139660 | | - { 202, -3 }, |
| 139661 | | - { 203, 0 }, |
| 139662 | | - { 203, -2 }, |
| 139663 | | - { 205, 0 }, |
| 139664 | | - { 205, -2 }, |
| 139665 | | - { 205, -4 }, |
| 139666 | | - { 205, -4 }, |
| 139667 | | - { 149, -6 }, |
| 139668 | | - { 201, 0 }, |
| 139669 | | - { 201, -2 }, |
| 139670 | | - { 149, -8 }, |
| 139671 | | - { 218, -5 }, |
| 139672 | | - { 218, -7 }, |
| 139673 | | - { 218, -3 }, |
| 139674 | | - { 218, -5 }, |
| 139675 | | - { 149, -6 }, |
| 139676 | | - { 149, -7 }, |
| 139677 | | - { 219, -2 }, |
| 139678 | | - { 219, -1 }, |
| 139679 | | - { 220, 0 }, |
| 139680 | | - { 220, -3 }, |
| 139681 | | - { 217, -3 }, |
| 139682 | | - { 217, -1 }, |
| 139683 | | - { 173, -3 }, |
| 139684 | | - { 173, -1 }, |
| 139685 | | - { 173, -1 }, |
| 139686 | | - { 173, -3 }, |
| 139687 | | - { 173, -5 }, |
| 139688 | | - { 172, -1 }, |
| 139689 | | - { 172, -1 }, |
| 139690 | | - { 172, -1 }, |
| 139691 | | - { 173, -1 }, |
| 139692 | | - { 173, -3 }, |
| 139693 | | - { 173, -6 }, |
| 139694 | | - { 173, -5 }, |
| 139695 | | - { 173, -4 }, |
| 139696 | | - { 172, -1 }, |
| 139697 | | - { 173, -5 }, |
| 139698 | | - { 173, -3 }, |
| 139699 | | - { 173, -3 }, |
| 139700 | | - { 173, -3 }, |
| 139701 | | - { 173, -3 }, |
| 139702 | | - { 173, -3 }, |
| 139703 | | - { 173, -3 }, |
| 139704 | | - { 173, -3 }, |
| 139705 | | - { 173, -3 }, |
| 139706 | | - { 221, -2 }, |
| 139707 | | - { 173, -3 }, |
| 139708 | | - { 173, -5 }, |
| 139709 | | - { 173, -2 }, |
| 139710 | | - { 173, -3 }, |
| 139711 | | - { 173, -3 }, |
| 139712 | | - { 173, -4 }, |
| 139713 | | - { 173, -2 }, |
| 139714 | | - { 173, -2 }, |
| 139715 | | - { 173, -2 }, |
| 139716 | | - { 173, -2 }, |
| 139717 | | - { 222, -1 }, |
| 139718 | | - { 222, -2 }, |
| 139719 | | - { 173, -5 }, |
| 139720 | | - { 223, -1 }, |
| 139721 | | - { 223, -2 }, |
| 139722 | | - { 173, -5 }, |
| 139723 | | - { 173, -3 }, |
| 139724 | | - { 173, -5 }, |
| 139725 | | - { 173, -5 }, |
| 139726 | | - { 173, -4 }, |
| 139727 | | - { 173, -5 }, |
| 139728 | | - { 226, -5 }, |
| 139729 | | - { 226, -4 }, |
| 139730 | | - { 227, -2 }, |
| 139731 | | - { 227, 0 }, |
| 139732 | | - { 225, -1 }, |
| 139733 | | - { 225, 0 }, |
| 139734 | | - { 208, 0 }, |
| 139735 | | - { 207, -3 }, |
| 139736 | | - { 207, -1 }, |
| 139737 | | - { 224, 0 }, |
| 139738 | | - { 224, -3 }, |
| 139739 | | - { 149, -12 }, |
| 139740 | | - { 228, -1 }, |
| 139741 | | - { 228, 0 }, |
| 139742 | | - { 177, 0 }, |
| 139743 | | - { 177, -3 }, |
| 139744 | | - { 187, -5 }, |
| 139745 | | - { 187, -3 }, |
| 139746 | | - { 229, 0 }, |
| 139747 | | - { 229, -2 }, |
| 139748 | | - { 149, -4 }, |
| 139749 | | - { 149, -1 }, |
| 139750 | | - { 149, -2 }, |
| 139751 | | - { 149, -3 }, |
| 139752 | | - { 149, -5 }, |
| 139753 | | - { 149, -6 }, |
| 139754 | | - { 149, -5 }, |
| 139755 | | - { 149, -6 }, |
| 139756 | | - { 169, -2 }, |
| 139757 | | - { 170, -2 }, |
| 139758 | | - { 149, -5 }, |
| 139759 | | - { 231, -11 }, |
| 139760 | | - { 233, -1 }, |
| 139761 | | - { 233, -2 }, |
| 139762 | | - { 233, 0 }, |
| 139763 | | - { 234, -1 }, |
| 139764 | | - { 234, -1 }, |
| 139765 | | - { 234, -3 }, |
| 139766 | | - { 236, 0 }, |
| 139767 | | - { 236, -2 }, |
| 139768 | | - { 232, -3 }, |
| 139769 | | - { 232, -2 }, |
| 139770 | | - { 238, -3 }, |
| 139771 | | - { 239, -3 }, |
| 139772 | | - { 239, -2 }, |
| 139773 | | - { 237, -7 }, |
| 139774 | | - { 237, -5 }, |
| 139775 | | - { 237, -5 }, |
| 139776 | | - { 237, -1 }, |
| 139777 | | - { 173, -4 }, |
| 139778 | | - { 173, -6 }, |
| 139779 | | - { 191, -1 }, |
| 139780 | | - { 191, -1 }, |
| 139781 | | - { 191, -1 }, |
| 139782 | | - { 149, -4 }, |
| 139783 | | - { 149, -6 }, |
| 139784 | | - { 149, -3 }, |
| 139785 | | - { 241, 0 }, |
| 139786 | | - { 241, -2 }, |
| 139787 | | - { 149, -1 }, |
| 139788 | | - { 149, -3 }, |
| 139789 | | - { 149, -1 }, |
| 139790 | | - { 149, -3 }, |
| 139791 | | - { 149, -6 }, |
| 139792 | | - { 149, -7 }, |
| 139793 | | - { 242, -1 }, |
| 139794 | | - { 149, -1 }, |
| 139795 | | - { 149, -4 }, |
| 139796 | | - { 244, -8 }, |
| 139797 | | - { 246, 0 }, |
| 139798 | | - { 247, -1 }, |
| 139799 | | - { 247, -3 }, |
| 139800 | | - { 248, -1 }, |
| 139801 | | - { 196, 0 }, |
| 139802 | | - { 196, -2 }, |
| 139803 | | - { 196, -3 }, |
| 139804 | | - { 250, -6 }, |
| 139805 | | - { 250, -8 }, |
| 139806 | | - { 144, -1 }, |
| 139807 | | - { 145, -2 }, |
| 139808 | | - { 145, -1 }, |
| 139809 | | - { 146, -1 }, |
| 139810 | | - { 146, -3 }, |
| 139811 | | - { 147, 0 }, |
| 139812 | | - { 151, 0 }, |
| 139813 | | - { 151, -1 }, |
| 139814 | | - { 151, -2 }, |
| 139815 | | - { 153, -1 }, |
| 139816 | | - { 153, 0 }, |
| 139817 | | - { 149, -2 }, |
| 139818 | | - { 160, -4 }, |
| 139819 | | - { 160, -2 }, |
| 139820 | | - { 152, -1 }, |
| 139821 | | - { 152, -1 }, |
| 139822 | | - { 152, -1 }, |
| 139823 | | - { 166, -1 }, |
| 139824 | | - { 167, -1 }, |
| 139825 | | - { 168, -1 }, |
| 139826 | | - { 168, -1 }, |
| 139827 | | - { 165, -2 }, |
| 139828 | | - { 165, 0 }, |
| 139829 | | - { 171, -2 }, |
| 139830 | | - { 161, -2 }, |
| 139831 | | - { 183, -3 }, |
| 139832 | | - { 183, -1 }, |
| 139833 | | - { 184, 0 }, |
| 139834 | | - { 188, -1 }, |
| 139835 | | - { 190, -1 }, |
| 139836 | | - { 194, -1 }, |
| 139837 | | - { 195, -1 }, |
| 139838 | | - { 209, -2 }, |
| 139839 | | - { 210, -1 }, |
| 139840 | | - { 173, -1 }, |
| 139841 | | - { 221, -1 }, |
| 139842 | | - { 208, -1 }, |
| 139843 | | - { 230, -1 }, |
| 139844 | | - { 230, -1 }, |
| 139845 | | - { 230, -1 }, |
| 139846 | | - { 230, -1 }, |
| 139847 | | - { 230, -1 }, |
| 139848 | | - { 169, -1 }, |
| 139849 | | - { 235, 0 }, |
| 139850 | | - { 235, -3 }, |
| 139851 | | - { 238, -1 }, |
| 139852 | | - { 239, 0 }, |
| 139853 | | - { 240, -1 }, |
| 139854 | | - { 240, 0 }, |
| 139855 | | - { 243, 0 }, |
| 139856 | | - { 243, -1 }, |
| 139857 | | - { 245, -1 }, |
| 139858 | | - { 245, -3 }, |
| 139859 | | - { 246, -2 }, |
| 139860 | | - { 249, 0 }, |
| 139861 | | - { 249, -4 }, |
| 139862 | | - { 249, -2 }, |
| 139951 | + { 147, -1 }, /* (0) explain ::= EXPLAIN */ |
| 139952 | + { 147, -3 }, /* (1) explain ::= EXPLAIN QUERY PLAN */ |
| 139953 | + { 148, -1 }, /* (2) cmdx ::= cmd */ |
| 139954 | + { 149, -3 }, /* (3) cmd ::= BEGIN transtype trans_opt */ |
| 139955 | + { 150, 0 }, /* (4) transtype ::= */ |
| 139956 | + { 150, -1 }, /* (5) transtype ::= DEFERRED */ |
| 139957 | + { 150, -1 }, /* (6) transtype ::= IMMEDIATE */ |
| 139958 | + { 150, -1 }, /* (7) transtype ::= EXCLUSIVE */ |
| 139959 | + { 149, -2 }, /* (8) cmd ::= COMMIT|END trans_opt */ |
| 139960 | + { 149, -2 }, /* (9) cmd ::= ROLLBACK trans_opt */ |
| 139961 | + { 149, -2 }, /* (10) cmd ::= SAVEPOINT nm */ |
| 139962 | + { 149, -3 }, /* (11) cmd ::= RELEASE savepoint_opt nm */ |
| 139963 | + { 149, -5 }, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */ |
| 139964 | + { 154, -6 }, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */ |
| 139965 | + { 156, -1 }, /* (14) createkw ::= CREATE */ |
| 139966 | + { 158, 0 }, /* (15) ifnotexists ::= */ |
| 139967 | + { 158, -3 }, /* (16) ifnotexists ::= IF NOT EXISTS */ |
| 139968 | + { 157, -1 }, /* (17) temp ::= TEMP */ |
| 139969 | + { 157, 0 }, /* (18) temp ::= */ |
| 139970 | + { 155, -5 }, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */ |
| 139971 | + { 155, -2 }, /* (20) create_table_args ::= AS select */ |
| 139972 | + { 162, 0 }, /* (21) table_options ::= */ |
| 139973 | + { 162, -2 }, /* (22) table_options ::= WITHOUT nm */ |
| 139974 | + { 164, -2 }, /* (23) columnname ::= nm typetoken */ |
| 139975 | + { 166, 0 }, /* (24) typetoken ::= */ |
| 139976 | + { 166, -4 }, /* (25) typetoken ::= typename LP signed RP */ |
| 139977 | + { 166, -6 }, /* (26) typetoken ::= typename LP signed COMMA signed RP */ |
| 139978 | + { 167, -2 }, /* (27) typename ::= typename ID|STRING */ |
| 139979 | + { 171, 0 }, /* (28) scanpt ::= */ |
| 139980 | + { 172, -2 }, /* (29) ccons ::= CONSTRAINT nm */ |
| 139981 | + { 172, -4 }, /* (30) ccons ::= DEFAULT scanpt term scanpt */ |
| 139982 | + { 172, -4 }, /* (31) ccons ::= DEFAULT LP expr RP */ |
| 139983 | + { 172, -4 }, /* (32) ccons ::= DEFAULT PLUS term scanpt */ |
| 139984 | + { 172, -4 }, /* (33) ccons ::= DEFAULT MINUS term scanpt */ |
| 139985 | + { 172, -3 }, /* (34) ccons ::= DEFAULT scanpt ID|INDEXED */ |
| 139986 | + { 172, -3 }, /* (35) ccons ::= NOT NULL onconf */ |
| 139987 | + { 172, -5 }, /* (36) ccons ::= PRIMARY KEY sortorder onconf autoinc */ |
| 139988 | + { 172, -2 }, /* (37) ccons ::= UNIQUE onconf */ |
| 139989 | + { 172, -4 }, /* (38) ccons ::= CHECK LP expr RP */ |
| 139990 | + { 172, -4 }, /* (39) ccons ::= REFERENCES nm eidlist_opt refargs */ |
| 139991 | + { 172, -1 }, /* (40) ccons ::= defer_subclause */ |
| 139992 | + { 172, -2 }, /* (41) ccons ::= COLLATE ID|STRING */ |
| 139993 | + { 177, 0 }, /* (42) autoinc ::= */ |
| 139994 | + { 177, -1 }, /* (43) autoinc ::= AUTOINCR */ |
| 139995 | + { 179, 0 }, /* (44) refargs ::= */ |
| 139996 | + { 179, -2 }, /* (45) refargs ::= refargs refarg */ |
| 139997 | + { 181, -2 }, /* (46) refarg ::= MATCH nm */ |
| 139998 | + { 181, -3 }, /* (47) refarg ::= ON INSERT refact */ |
| 139999 | + { 181, -3 }, /* (48) refarg ::= ON DELETE refact */ |
| 140000 | + { 181, -3 }, /* (49) refarg ::= ON UPDATE refact */ |
| 140001 | + { 182, -2 }, /* (50) refact ::= SET NULL */ |
| 140002 | + { 182, -2 }, /* (51) refact ::= SET DEFAULT */ |
| 140003 | + { 182, -1 }, /* (52) refact ::= CASCADE */ |
| 140004 | + { 182, -1 }, /* (53) refact ::= RESTRICT */ |
| 140005 | + { 182, -2 }, /* (54) refact ::= NO ACTION */ |
| 140006 | + { 180, -3 }, /* (55) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ |
| 140007 | + { 180, -2 }, /* (56) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ |
| 140008 | + { 183, 0 }, /* (57) init_deferred_pred_opt ::= */ |
| 140009 | + { 183, -2 }, /* (58) init_deferred_pred_opt ::= INITIALLY DEFERRED */ |
| 140010 | + { 183, -2 }, /* (59) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ |
| 140011 | + { 161, 0 }, /* (60) conslist_opt ::= */ |
| 140012 | + { 185, -1 }, /* (61) tconscomma ::= COMMA */ |
| 140013 | + { 186, -2 }, /* (62) tcons ::= CONSTRAINT nm */ |
| 140014 | + { 186, -7 }, /* (63) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ |
| 140015 | + { 186, -5 }, /* (64) tcons ::= UNIQUE LP sortlist RP onconf */ |
| 140016 | + { 186, -5 }, /* (65) tcons ::= CHECK LP expr RP onconf */ |
| 140017 | + { 186, -10 }, /* (66) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ |
| 140018 | + { 189, 0 }, /* (67) defer_subclause_opt ::= */ |
| 140019 | + { 175, 0 }, /* (68) onconf ::= */ |
| 140020 | + { 175, -3 }, /* (69) onconf ::= ON CONFLICT resolvetype */ |
| 140021 | + { 190, 0 }, /* (70) orconf ::= */ |
| 140022 | + { 190, -2 }, /* (71) orconf ::= OR resolvetype */ |
| 140023 | + { 191, -1 }, /* (72) resolvetype ::= IGNORE */ |
| 140024 | + { 191, -1 }, /* (73) resolvetype ::= REPLACE */ |
| 140025 | + { 149, -4 }, /* (74) cmd ::= DROP TABLE ifexists fullname */ |
| 140026 | + { 193, -2 }, /* (75) ifexists ::= IF EXISTS */ |
| 140027 | + { 193, 0 }, /* (76) ifexists ::= */ |
| 140028 | + { 149, -9 }, /* (77) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ |
| 140029 | + { 149, -4 }, /* (78) cmd ::= DROP VIEW ifexists fullname */ |
| 140030 | + { 149, -1 }, /* (79) cmd ::= select */ |
| 140031 | + { 163, -2 }, /* (80) select ::= with selectnowith */ |
| 140032 | + { 195, -3 }, /* (81) selectnowith ::= selectnowith multiselect_op oneselect */ |
| 140033 | + { 198, -1 }, /* (82) multiselect_op ::= UNION */ |
| 140034 | + { 198, -2 }, /* (83) multiselect_op ::= UNION ALL */ |
| 140035 | + { 198, -1 }, /* (84) multiselect_op ::= EXCEPT|INTERSECT */ |
| 140036 | + { 196, -9 }, /* (85) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ |
| 140037 | + { 207, -4 }, /* (86) values ::= VALUES LP nexprlist RP */ |
| 140038 | + { 207, -5 }, /* (87) values ::= values COMMA LP exprlist RP */ |
| 140039 | + { 199, -1 }, /* (88) distinct ::= DISTINCT */ |
| 140040 | + { 199, -1 }, /* (89) distinct ::= ALL */ |
| 140041 | + { 199, 0 }, /* (90) distinct ::= */ |
| 140042 | + { 210, 0 }, /* (91) sclp ::= */ |
| 140043 | + { 200, -5 }, /* (92) selcollist ::= sclp scanpt expr scanpt as */ |
| 140044 | + { 200, -3 }, /* (93) selcollist ::= sclp scanpt STAR */ |
| 140045 | + { 200, -5 }, /* (94) selcollist ::= sclp scanpt nm DOT STAR */ |
| 140046 | + { 211, -2 }, /* (95) as ::= AS nm */ |
| 140047 | + { 211, 0 }, /* (96) as ::= */ |
| 140048 | + { 201, 0 }, /* (97) from ::= */ |
| 140049 | + { 201, -2 }, /* (98) from ::= FROM seltablist */ |
| 140050 | + { 213, -2 }, /* (99) stl_prefix ::= seltablist joinop */ |
| 140051 | + { 213, 0 }, /* (100) stl_prefix ::= */ |
| 140052 | + { 212, -7 }, /* (101) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ |
| 140053 | + { 212, -9 }, /* (102) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ |
| 140054 | + { 212, -7 }, /* (103) seltablist ::= stl_prefix LP select RP as on_opt using_opt */ |
| 140055 | + { 212, -7 }, /* (104) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ |
| 140056 | + { 159, 0 }, /* (105) dbnm ::= */ |
| 140057 | + { 159, -2 }, /* (106) dbnm ::= DOT nm */ |
| 140058 | + { 194, -2 }, /* (107) fullname ::= nm dbnm */ |
| 140059 | + { 214, -1 }, /* (108) joinop ::= COMMA|JOIN */ |
| 140060 | + { 214, -2 }, /* (109) joinop ::= JOIN_KW JOIN */ |
| 140061 | + { 214, -3 }, /* (110) joinop ::= JOIN_KW nm JOIN */ |
| 140062 | + { 214, -4 }, /* (111) joinop ::= JOIN_KW nm nm JOIN */ |
| 140063 | + { 216, -2 }, /* (112) on_opt ::= ON expr */ |
| 140064 | + { 216, 0 }, /* (113) on_opt ::= */ |
| 140065 | + { 215, 0 }, /* (114) indexed_opt ::= */ |
| 140066 | + { 215, -3 }, /* (115) indexed_opt ::= INDEXED BY nm */ |
| 140067 | + { 215, -2 }, /* (116) indexed_opt ::= NOT INDEXED */ |
| 140068 | + { 217, -4 }, /* (117) using_opt ::= USING LP idlist RP */ |
| 140069 | + { 217, 0 }, /* (118) using_opt ::= */ |
| 140070 | + { 205, 0 }, /* (119) orderby_opt ::= */ |
| 140071 | + { 205, -3 }, /* (120) orderby_opt ::= ORDER BY sortlist */ |
| 140072 | + { 187, -4 }, /* (121) sortlist ::= sortlist COMMA expr sortorder */ |
| 140073 | + { 187, -2 }, /* (122) sortlist ::= expr sortorder */ |
| 140074 | + { 176, -1 }, /* (123) sortorder ::= ASC */ |
| 140075 | + { 176, -1 }, /* (124) sortorder ::= DESC */ |
| 140076 | + { 176, 0 }, /* (125) sortorder ::= */ |
| 140077 | + { 203, 0 }, /* (126) groupby_opt ::= */ |
| 140078 | + { 203, -3 }, /* (127) groupby_opt ::= GROUP BY nexprlist */ |
| 140079 | + { 204, 0 }, /* (128) having_opt ::= */ |
| 140080 | + { 204, -2 }, /* (129) having_opt ::= HAVING expr */ |
| 140081 | + { 206, 0 }, /* (130) limit_opt ::= */ |
| 140082 | + { 206, -2 }, /* (131) limit_opt ::= LIMIT expr */ |
| 140083 | + { 206, -4 }, /* (132) limit_opt ::= LIMIT expr OFFSET expr */ |
| 140084 | + { 206, -4 }, /* (133) limit_opt ::= LIMIT expr COMMA expr */ |
| 140085 | + { 149, -6 }, /* (134) cmd ::= with DELETE FROM fullname indexed_opt where_opt */ |
| 140086 | + { 202, 0 }, /* (135) where_opt ::= */ |
| 140087 | + { 202, -2 }, /* (136) where_opt ::= WHERE expr */ |
| 140088 | + { 149, -8 }, /* (137) cmd ::= with UPDATE orconf fullname indexed_opt SET setlist where_opt */ |
| 140089 | + { 219, -5 }, /* (138) setlist ::= setlist COMMA nm EQ expr */ |
| 140090 | + { 219, -7 }, /* (139) setlist ::= setlist COMMA LP idlist RP EQ expr */ |
| 140091 | + { 219, -3 }, /* (140) setlist ::= nm EQ expr */ |
| 140092 | + { 219, -5 }, /* (141) setlist ::= LP idlist RP EQ expr */ |
| 140093 | + { 149, -6 }, /* (142) cmd ::= with insert_cmd INTO fullname idlist_opt select */ |
| 140094 | + { 149, -7 }, /* (143) cmd ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES */ |
| 140095 | + { 220, -2 }, /* (144) insert_cmd ::= INSERT orconf */ |
| 140096 | + { 220, -1 }, /* (145) insert_cmd ::= REPLACE */ |
| 140097 | + { 221, 0 }, /* (146) idlist_opt ::= */ |
| 140098 | + { 221, -3 }, /* (147) idlist_opt ::= LP idlist RP */ |
| 140099 | + { 218, -3 }, /* (148) idlist ::= idlist COMMA nm */ |
| 140100 | + { 218, -1 }, /* (149) idlist ::= nm */ |
| 140101 | + { 174, -3 }, /* (150) expr ::= LP expr RP */ |
| 140102 | + { 174, -1 }, /* (151) expr ::= ID|INDEXED */ |
| 140103 | + { 174, -1 }, /* (152) expr ::= JOIN_KW */ |
| 140104 | + { 174, -3 }, /* (153) expr ::= nm DOT nm */ |
| 140105 | + { 174, -5 }, /* (154) expr ::= nm DOT nm DOT nm */ |
| 140106 | + { 173, -1 }, /* (155) term ::= NULL|FLOAT|BLOB */ |
| 140107 | + { 173, -1 }, /* (156) term ::= STRING */ |
| 140108 | + { 173, -1 }, /* (157) term ::= INTEGER */ |
| 140109 | + { 174, -1 }, /* (158) expr ::= VARIABLE */ |
| 140110 | + { 174, -3 }, /* (159) expr ::= expr COLLATE ID|STRING */ |
| 140111 | + { 174, -6 }, /* (160) expr ::= CAST LP expr AS typetoken RP */ |
| 140112 | + { 174, -5 }, /* (161) expr ::= ID|INDEXED LP distinct exprlist RP */ |
| 140113 | + { 174, -4 }, /* (162) expr ::= ID|INDEXED LP STAR RP */ |
| 140114 | + { 173, -1 }, /* (163) term ::= CTIME_KW */ |
| 140115 | + { 174, -5 }, /* (164) expr ::= LP nexprlist COMMA expr RP */ |
| 140116 | + { 174, -3 }, /* (165) expr ::= expr AND expr */ |
| 140117 | + { 174, -3 }, /* (166) expr ::= expr OR expr */ |
| 140118 | + { 174, -3 }, /* (167) expr ::= expr LT|GT|GE|LE expr */ |
| 140119 | + { 174, -3 }, /* (168) expr ::= expr EQ|NE expr */ |
| 140120 | + { 174, -3 }, /* (169) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ |
| 140121 | + { 174, -3 }, /* (170) expr ::= expr PLUS|MINUS expr */ |
| 140122 | + { 174, -3 }, /* (171) expr ::= expr STAR|SLASH|REM expr */ |
| 140123 | + { 174, -3 }, /* (172) expr ::= expr CONCAT expr */ |
| 140124 | + { 222, -2 }, /* (173) likeop ::= NOT LIKE_KW|MATCH */ |
| 140125 | + { 174, -3 }, /* (174) expr ::= expr likeop expr */ |
| 140126 | + { 174, -5 }, /* (175) expr ::= expr likeop expr ESCAPE expr */ |
| 140127 | + { 174, -2 }, /* (176) expr ::= expr ISNULL|NOTNULL */ |
| 140128 | + { 174, -3 }, /* (177) expr ::= expr NOT NULL */ |
| 140129 | + { 174, -3 }, /* (178) expr ::= expr IS expr */ |
| 140130 | + { 174, -4 }, /* (179) expr ::= expr IS NOT expr */ |
| 140131 | + { 174, -2 }, /* (180) expr ::= NOT expr */ |
| 140132 | + { 174, -2 }, /* (181) expr ::= BITNOT expr */ |
| 140133 | + { 174, -2 }, /* (182) expr ::= MINUS expr */ |
| 140134 | + { 174, -2 }, /* (183) expr ::= PLUS expr */ |
| 140135 | + { 223, -1 }, /* (184) between_op ::= BETWEEN */ |
| 140136 | + { 223, -2 }, /* (185) between_op ::= NOT BETWEEN */ |
| 140137 | + { 174, -5 }, /* (186) expr ::= expr between_op expr AND expr */ |
| 140138 | + { 224, -1 }, /* (187) in_op ::= IN */ |
| 140139 | + { 224, -2 }, /* (188) in_op ::= NOT IN */ |
| 140140 | + { 174, -5 }, /* (189) expr ::= expr in_op LP exprlist RP */ |
| 140141 | + { 174, -3 }, /* (190) expr ::= LP select RP */ |
| 140142 | + { 174, -5 }, /* (191) expr ::= expr in_op LP select RP */ |
| 140143 | + { 174, -5 }, /* (192) expr ::= expr in_op nm dbnm paren_exprlist */ |
| 140144 | + { 174, -4 }, /* (193) expr ::= EXISTS LP select RP */ |
| 140145 | + { 174, -5 }, /* (194) expr ::= CASE case_operand case_exprlist case_else END */ |
| 140146 | + { 227, -5 }, /* (195) case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 140147 | + { 227, -4 }, /* (196) case_exprlist ::= WHEN expr THEN expr */ |
| 140148 | + { 228, -2 }, /* (197) case_else ::= ELSE expr */ |
| 140149 | + { 228, 0 }, /* (198) case_else ::= */ |
| 140150 | + { 226, -1 }, /* (199) case_operand ::= expr */ |
| 140151 | + { 226, 0 }, /* (200) case_operand ::= */ |
| 140152 | + { 209, 0 }, /* (201) exprlist ::= */ |
| 140153 | + { 208, -3 }, /* (202) nexprlist ::= nexprlist COMMA expr */ |
| 140154 | + { 208, -1 }, /* (203) nexprlist ::= expr */ |
| 140155 | + { 225, 0 }, /* (204) paren_exprlist ::= */ |
| 140156 | + { 225, -3 }, /* (205) paren_exprlist ::= LP exprlist RP */ |
| 140157 | + { 149, -12 }, /* (206) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 140158 | + { 229, -1 }, /* (207) uniqueflag ::= UNIQUE */ |
| 140159 | + { 229, 0 }, /* (208) uniqueflag ::= */ |
| 140160 | + { 178, 0 }, /* (209) eidlist_opt ::= */ |
| 140161 | + { 178, -3 }, /* (210) eidlist_opt ::= LP eidlist RP */ |
| 140162 | + { 188, -5 }, /* (211) eidlist ::= eidlist COMMA nm collate sortorder */ |
| 140163 | + { 188, -3 }, /* (212) eidlist ::= nm collate sortorder */ |
| 140164 | + { 230, 0 }, /* (213) collate ::= */ |
| 140165 | + { 230, -2 }, /* (214) collate ::= COLLATE ID|STRING */ |
| 140166 | + { 149, -4 }, /* (215) cmd ::= DROP INDEX ifexists fullname */ |
| 140167 | + { 149, -1 }, /* (216) cmd ::= VACUUM */ |
| 140168 | + { 149, -2 }, /* (217) cmd ::= VACUUM nm */ |
| 140169 | + { 149, -3 }, /* (218) cmd ::= PRAGMA nm dbnm */ |
| 140170 | + { 149, -5 }, /* (219) cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 140171 | + { 149, -6 }, /* (220) cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 140172 | + { 149, -5 }, /* (221) cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 140173 | + { 149, -6 }, /* (222) cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 140174 | + { 169, -2 }, /* (223) plus_num ::= PLUS INTEGER|FLOAT */ |
| 140175 | + { 170, -2 }, /* (224) minus_num ::= MINUS INTEGER|FLOAT */ |
| 140176 | + { 149, -5 }, /* (225) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 140177 | + { 232, -11 }, /* (226) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 140178 | + { 234, -1 }, /* (227) trigger_time ::= BEFORE|AFTER */ |
| 140179 | + { 234, -2 }, /* (228) trigger_time ::= INSTEAD OF */ |
| 140180 | + { 234, 0 }, /* (229) trigger_time ::= */ |
| 140181 | + { 235, -1 }, /* (230) trigger_event ::= DELETE|INSERT */ |
| 140182 | + { 235, -1 }, /* (231) trigger_event ::= UPDATE */ |
| 140183 | + { 235, -3 }, /* (232) trigger_event ::= UPDATE OF idlist */ |
| 140184 | + { 237, 0 }, /* (233) when_clause ::= */ |
| 140185 | + { 237, -2 }, /* (234) when_clause ::= WHEN expr */ |
| 140186 | + { 233, -3 }, /* (235) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 140187 | + { 233, -2 }, /* (236) trigger_cmd_list ::= trigger_cmd SEMI */ |
| 140188 | + { 239, -3 }, /* (237) trnm ::= nm DOT nm */ |
| 140189 | + { 240, -3 }, /* (238) tridxby ::= INDEXED BY nm */ |
| 140190 | + { 240, -2 }, /* (239) tridxby ::= NOT INDEXED */ |
| 140191 | + { 238, -8 }, /* (240) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */ |
| 140192 | + { 238, -7 }, /* (241) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select scanpt */ |
| 140193 | + { 238, -6 }, /* (242) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ |
| 140194 | + { 238, -3 }, /* (243) trigger_cmd ::= scanpt select scanpt */ |
| 140195 | + { 174, -4 }, /* (244) expr ::= RAISE LP IGNORE RP */ |
| 140196 | + { 174, -6 }, /* (245) expr ::= RAISE LP raisetype COMMA nm RP */ |
| 140197 | + { 192, -1 }, /* (246) raisetype ::= ROLLBACK */ |
| 140198 | + { 192, -1 }, /* (247) raisetype ::= ABORT */ |
| 140199 | + { 192, -1 }, /* (248) raisetype ::= FAIL */ |
| 140200 | + { 149, -4 }, /* (249) cmd ::= DROP TRIGGER ifexists fullname */ |
| 140201 | + { 149, -6 }, /* (250) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 140202 | + { 149, -3 }, /* (251) cmd ::= DETACH database_kw_opt expr */ |
| 140203 | + { 242, 0 }, /* (252) key_opt ::= */ |
| 140204 | + { 242, -2 }, /* (253) key_opt ::= KEY expr */ |
| 140205 | + { 149, -1 }, /* (254) cmd ::= REINDEX */ |
| 140206 | + { 149, -3 }, /* (255) cmd ::= REINDEX nm dbnm */ |
| 140207 | + { 149, -1 }, /* (256) cmd ::= ANALYZE */ |
| 140208 | + { 149, -3 }, /* (257) cmd ::= ANALYZE nm dbnm */ |
| 140209 | + { 149, -6 }, /* (258) cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 140210 | + { 149, -7 }, /* (259) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 140211 | + { 243, -1 }, /* (260) add_column_fullname ::= fullname */ |
| 140212 | + { 149, -1 }, /* (261) cmd ::= create_vtab */ |
| 140213 | + { 149, -4 }, /* (262) cmd ::= create_vtab LP vtabarglist RP */ |
| 140214 | + { 245, -8 }, /* (263) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 140215 | + { 247, 0 }, /* (264) vtabarg ::= */ |
| 140216 | + { 248, -1 }, /* (265) vtabargtoken ::= ANY */ |
| 140217 | + { 248, -3 }, /* (266) vtabargtoken ::= lp anylist RP */ |
| 140218 | + { 249, -1 }, /* (267) lp ::= LP */ |
| 140219 | + { 197, 0 }, /* (268) with ::= */ |
| 140220 | + { 197, -2 }, /* (269) with ::= WITH wqlist */ |
| 140221 | + { 197, -3 }, /* (270) with ::= WITH RECURSIVE wqlist */ |
| 140222 | + { 251, -6 }, /* (271) wqlist ::= nm eidlist_opt AS LP select RP */ |
| 140223 | + { 251, -8 }, /* (272) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */ |
| 140224 | + { 144, -1 }, /* (273) input ::= cmdlist */ |
| 140225 | + { 145, -2 }, /* (274) cmdlist ::= cmdlist ecmd */ |
| 140226 | + { 145, -1 }, /* (275) cmdlist ::= ecmd */ |
| 140227 | + { 146, -1 }, /* (276) ecmd ::= SEMI */ |
| 140228 | + { 146, -3 }, /* (277) ecmd ::= explain cmdx SEMI */ |
| 140229 | + { 147, 0 }, /* (278) explain ::= */ |
| 140230 | + { 151, 0 }, /* (279) trans_opt ::= */ |
| 140231 | + { 151, -1 }, /* (280) trans_opt ::= TRANSACTION */ |
| 140232 | + { 151, -2 }, /* (281) trans_opt ::= TRANSACTION nm */ |
| 140233 | + { 153, -1 }, /* (282) savepoint_opt ::= SAVEPOINT */ |
| 140234 | + { 153, 0 }, /* (283) savepoint_opt ::= */ |
| 140235 | + { 149, -2 }, /* (284) cmd ::= create_table create_table_args */ |
| 140236 | + { 160, -4 }, /* (285) columnlist ::= columnlist COMMA columnname carglist */ |
| 140237 | + { 160, -2 }, /* (286) columnlist ::= columnname carglist */ |
| 140238 | + { 152, -1 }, /* (287) nm ::= ID|INDEXED */ |
| 140239 | + { 152, -1 }, /* (288) nm ::= STRING */ |
| 140240 | + { 152, -1 }, /* (289) nm ::= JOIN_KW */ |
| 140241 | + { 166, -1 }, /* (290) typetoken ::= typename */ |
| 140242 | + { 167, -1 }, /* (291) typename ::= ID|STRING */ |
| 140243 | + { 168, -1 }, /* (292) signed ::= plus_num */ |
| 140244 | + { 168, -1 }, /* (293) signed ::= minus_num */ |
| 140245 | + { 165, -2 }, /* (294) carglist ::= carglist ccons */ |
| 140246 | + { 165, 0 }, /* (295) carglist ::= */ |
| 140247 | + { 172, -2 }, /* (296) ccons ::= NULL onconf */ |
| 140248 | + { 161, -2 }, /* (297) conslist_opt ::= COMMA conslist */ |
| 140249 | + { 184, -3 }, /* (298) conslist ::= conslist tconscomma tcons */ |
| 140250 | + { 184, -1 }, /* (299) conslist ::= tcons */ |
| 140251 | + { 185, 0 }, /* (300) tconscomma ::= */ |
| 140252 | + { 189, -1 }, /* (301) defer_subclause_opt ::= defer_subclause */ |
| 140253 | + { 191, -1 }, /* (302) resolvetype ::= raisetype */ |
| 140254 | + { 195, -1 }, /* (303) selectnowith ::= oneselect */ |
| 140255 | + { 196, -1 }, /* (304) oneselect ::= values */ |
| 140256 | + { 210, -2 }, /* (305) sclp ::= selcollist COMMA */ |
| 140257 | + { 211, -1 }, /* (306) as ::= ID|STRING */ |
| 140258 | + { 174, -1 }, /* (307) expr ::= term */ |
| 140259 | + { 222, -1 }, /* (308) likeop ::= LIKE_KW|MATCH */ |
| 140260 | + { 209, -1 }, /* (309) exprlist ::= nexprlist */ |
| 140261 | + { 231, -1 }, /* (310) nmnum ::= plus_num */ |
| 140262 | + { 231, -1 }, /* (311) nmnum ::= nm */ |
| 140263 | + { 231, -1 }, /* (312) nmnum ::= ON */ |
| 140264 | + { 231, -1 }, /* (313) nmnum ::= DELETE */ |
| 140265 | + { 231, -1 }, /* (314) nmnum ::= DEFAULT */ |
| 140266 | + { 169, -1 }, /* (315) plus_num ::= INTEGER|FLOAT */ |
| 140267 | + { 236, 0 }, /* (316) foreach_clause ::= */ |
| 140268 | + { 236, -3 }, /* (317) foreach_clause ::= FOR EACH ROW */ |
| 140269 | + { 239, -1 }, /* (318) trnm ::= nm */ |
| 140270 | + { 240, 0 }, /* (319) tridxby ::= */ |
| 140271 | + { 241, -1 }, /* (320) database_kw_opt ::= DATABASE */ |
| 140272 | + { 241, 0 }, /* (321) database_kw_opt ::= */ |
| 140273 | + { 244, 0 }, /* (322) kwcolumn_opt ::= */ |
| 140274 | + { 244, -1 }, /* (323) kwcolumn_opt ::= COLUMNKW */ |
| 140275 | + { 246, -1 }, /* (324) vtabarglist ::= vtabarg */ |
| 140276 | + { 246, -3 }, /* (325) vtabarglist ::= vtabarglist COMMA vtabarg */ |
| 140277 | + { 247, -2 }, /* (326) vtabarg ::= vtabarg vtabargtoken */ |
| 140278 | + { 250, 0 }, /* (327) anylist ::= */ |
| 140279 | + { 250, -4 }, /* (328) anylist ::= anylist LP anylist RP */ |
| 140280 | + { 250, -2 }, /* (329) anylist ::= anylist ANY */ |
| 139863 | 140281 | }; |
| 139864 | 140282 | |
| 139865 | 140283 | static void yy_accept(yyParser*); /* Forward Declaration */ |
| 139866 | 140284 | |
| 139867 | 140285 | /* |
| 139868 | 140286 | ** Perform a reduce action and the shift that must immediately |
| 139869 | 140287 | ** follow the reduce. |
| 140288 | +** |
| 140289 | +** The yyLookahead and yyLookaheadToken parameters provide reduce actions |
| 140290 | +** access to the lookahead token (if any). The yyLookahead will be YYNOCODE |
| 140291 | +** if the lookahead token has already been consumed. As this procedure is |
| 140292 | +** only called from one place, optimizing compilers will in-line it, which |
| 140293 | +** means that the extra parameters have no performance impact. |
| 139870 | 140294 | */ |
| 139871 | 140295 | static void yy_reduce( |
| 139872 | 140296 | yyParser *yypParser, /* The parser */ |
| 139873 | | - unsigned int yyruleno /* Number of the rule by which to reduce */ |
| 140297 | + unsigned int yyruleno, /* Number of the rule by which to reduce */ |
| 140298 | + int yyLookahead, /* Lookahead token, or YYNOCODE if none */ |
| 140299 | + sqlite3ParserTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ |
| 139874 | 140300 | ){ |
| 139875 | 140301 | int yygoto; /* The next state */ |
| 139876 | 140302 | int yyact; /* The next action */ |
| 139877 | 140303 | yyStackEntry *yymsp; /* The top of the parser's stack */ |
| 139878 | 140304 | int yysize; /* Amount to pop the stack */ |
| | @@ -139879,12 +140305,18 @@ |
| 139879 | 140305 | sqlite3ParserARG_FETCH; |
| 139880 | 140306 | yymsp = yypParser->yytos; |
| 139881 | 140307 | #ifndef NDEBUG |
| 139882 | 140308 | if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ |
| 139883 | 140309 | yysize = yyRuleInfo[yyruleno].nrhs; |
| 139884 | | - fprintf(yyTraceFILE, "%sReduce [%s], go to state %d.\n", yyTracePrompt, |
| 139885 | | - yyRuleName[yyruleno], yymsp[yysize].stateno); |
| 140310 | + if( yysize ){ |
| 140311 | + fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", |
| 140312 | + yyTracePrompt, |
| 140313 | + yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); |
| 140314 | + }else{ |
| 140315 | + fprintf(yyTraceFILE, "%sReduce %d [%s].\n", |
| 140316 | + yyTracePrompt, yyruleno, yyRuleName[yyruleno]); |
| 140317 | + } |
| 139886 | 140318 | } |
| 139887 | 140319 | #endif /* NDEBUG */ |
| 139888 | 140320 | |
| 139889 | 140321 | /* Check that the stack is large enough to grow by a single entry |
| 139890 | 140322 | ** if the RHS of the rule is empty. This ensures that there is room |
| | @@ -139931,19 +140363,19 @@ |
| 139931 | 140363 | break; |
| 139932 | 140364 | case 2: /* cmdx ::= cmd */ |
| 139933 | 140365 | { sqlite3FinishCoding(pParse); } |
| 139934 | 140366 | break; |
| 139935 | 140367 | case 3: /* cmd ::= BEGIN transtype trans_opt */ |
| 139936 | | -{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy194);} |
| 140368 | +{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy4);} |
| 139937 | 140369 | break; |
| 139938 | 140370 | case 4: /* transtype ::= */ |
| 139939 | | -{yymsp[1].minor.yy194 = TK_DEFERRED;} |
| 140371 | +{yymsp[1].minor.yy4 = TK_DEFERRED;} |
| 139940 | 140372 | break; |
| 139941 | 140373 | case 5: /* transtype ::= DEFERRED */ |
| 139942 | 140374 | case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6); |
| 139943 | 140375 | case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7); |
| 139944 | | -{yymsp[0].minor.yy194 = yymsp[0].major; /*A-overwrites-X*/} |
| 140376 | +{yymsp[0].minor.yy4 = yymsp[0].major; /*A-overwrites-X*/} |
| 139945 | 140377 | break; |
| 139946 | 140378 | case 8: /* cmd ::= COMMIT|END trans_opt */ |
| 139947 | 140379 | case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9); |
| 139948 | 140380 | {sqlite3EndTransaction(pParse,yymsp[-1].major);} |
| 139949 | 140381 | break; |
| | @@ -139962,61 +140394,61 @@ |
| 139962 | 140394 | sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0); |
| 139963 | 140395 | } |
| 139964 | 140396 | break; |
| 139965 | 140397 | case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */ |
| 139966 | 140398 | { |
| 139967 | | - sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy194,0,0,yymsp[-2].minor.yy194); |
| 140399 | + sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy4,0,0,yymsp[-2].minor.yy4); |
| 139968 | 140400 | } |
| 139969 | 140401 | break; |
| 139970 | 140402 | case 14: /* createkw ::= CREATE */ |
| 139971 | 140403 | {disableLookaside(pParse);} |
| 139972 | 140404 | break; |
| 139973 | 140405 | case 15: /* ifnotexists ::= */ |
| 139974 | 140406 | case 18: /* temp ::= */ yytestcase(yyruleno==18); |
| 139975 | 140407 | case 21: /* table_options ::= */ yytestcase(yyruleno==21); |
| 139976 | | - case 41: /* autoinc ::= */ yytestcase(yyruleno==41); |
| 139977 | | - case 56: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==56); |
| 139978 | | - case 66: /* defer_subclause_opt ::= */ yytestcase(yyruleno==66); |
| 139979 | | - case 75: /* ifexists ::= */ yytestcase(yyruleno==75); |
| 139980 | | - case 89: /* distinct ::= */ yytestcase(yyruleno==89); |
| 139981 | | - case 212: /* collate ::= */ yytestcase(yyruleno==212); |
| 139982 | | -{yymsp[1].minor.yy194 = 0;} |
| 140408 | + case 42: /* autoinc ::= */ yytestcase(yyruleno==42); |
| 140409 | + case 57: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==57); |
| 140410 | + case 67: /* defer_subclause_opt ::= */ yytestcase(yyruleno==67); |
| 140411 | + case 76: /* ifexists ::= */ yytestcase(yyruleno==76); |
| 140412 | + case 90: /* distinct ::= */ yytestcase(yyruleno==90); |
| 140413 | + case 213: /* collate ::= */ yytestcase(yyruleno==213); |
| 140414 | +{yymsp[1].minor.yy4 = 0;} |
| 139983 | 140415 | break; |
| 139984 | 140416 | case 16: /* ifnotexists ::= IF NOT EXISTS */ |
| 139985 | | -{yymsp[-2].minor.yy194 = 1;} |
| 140417 | +{yymsp[-2].minor.yy4 = 1;} |
| 139986 | 140418 | break; |
| 139987 | 140419 | case 17: /* temp ::= TEMP */ |
| 139988 | | - case 42: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==42); |
| 139989 | | -{yymsp[0].minor.yy194 = 1;} |
| 140420 | + case 43: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==43); |
| 140421 | +{yymsp[0].minor.yy4 = 1;} |
| 139990 | 140422 | break; |
| 139991 | 140423 | case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */ |
| 139992 | 140424 | { |
| 139993 | | - sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy194,0); |
| 140425 | + sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy4,0); |
| 139994 | 140426 | } |
| 139995 | 140427 | break; |
| 139996 | 140428 | case 20: /* create_table_args ::= AS select */ |
| 139997 | 140429 | { |
| 139998 | | - sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy243); |
| 139999 | | - sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy243); |
| 140430 | + sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy387); |
| 140431 | + sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy387); |
| 140000 | 140432 | } |
| 140001 | 140433 | break; |
| 140002 | 140434 | case 22: /* table_options ::= WITHOUT nm */ |
| 140003 | 140435 | { |
| 140004 | 140436 | if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){ |
| 140005 | | - yymsp[-1].minor.yy194 = TF_WithoutRowid | TF_NoVisibleRowid; |
| 140437 | + yymsp[-1].minor.yy4 = TF_WithoutRowid | TF_NoVisibleRowid; |
| 140006 | 140438 | }else{ |
| 140007 | | - yymsp[-1].minor.yy194 = 0; |
| 140439 | + yymsp[-1].minor.yy4 = 0; |
| 140008 | 140440 | sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z); |
| 140009 | 140441 | } |
| 140010 | 140442 | } |
| 140011 | 140443 | break; |
| 140012 | 140444 | case 23: /* columnname ::= nm typetoken */ |
| 140013 | 140445 | {sqlite3AddColumn(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);} |
| 140014 | 140446 | break; |
| 140015 | 140447 | case 24: /* typetoken ::= */ |
| 140016 | | - case 59: /* conslist_opt ::= */ yytestcase(yyruleno==59); |
| 140017 | | - case 95: /* as ::= */ yytestcase(yyruleno==95); |
| 140448 | + case 60: /* conslist_opt ::= */ yytestcase(yyruleno==60); |
| 140449 | + case 96: /* as ::= */ yytestcase(yyruleno==96); |
| 140018 | 140450 | {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;} |
| 140019 | 140451 | break; |
| 140020 | 140452 | case 25: /* typetoken ::= typename LP signed RP */ |
| 140021 | 140453 | { |
| 140022 | 140454 | yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z); |
| | @@ -140028,214 +140460,218 @@ |
| 140028 | 140460 | } |
| 140029 | 140461 | break; |
| 140030 | 140462 | case 27: /* typename ::= typename ID|STRING */ |
| 140031 | 140463 | {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);} |
| 140032 | 140464 | break; |
| 140033 | | - case 28: /* ccons ::= CONSTRAINT nm */ |
| 140034 | | - case 61: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==61); |
| 140465 | + case 28: /* scanpt ::= */ |
| 140466 | +{ |
| 140467 | + assert( yyLookahead!=YYNOCODE ); |
| 140468 | + yymsp[1].minor.yy336 = yyLookaheadToken.z; |
| 140469 | +} |
| 140470 | + break; |
| 140471 | + case 29: /* ccons ::= CONSTRAINT nm */ |
| 140472 | + case 62: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==62); |
| 140035 | 140473 | {pParse->constraintName = yymsp[0].minor.yy0;} |
| 140036 | 140474 | break; |
| 140037 | | - case 29: /* ccons ::= DEFAULT term */ |
| 140038 | | - case 31: /* ccons ::= DEFAULT PLUS term */ yytestcase(yyruleno==31); |
| 140039 | | -{sqlite3AddDefaultValue(pParse,&yymsp[0].minor.yy190);} |
| 140040 | | - break; |
| 140041 | | - case 30: /* ccons ::= DEFAULT LP expr RP */ |
| 140042 | | -{sqlite3AddDefaultValue(pParse,&yymsp[-1].minor.yy190);} |
| 140043 | | - break; |
| 140044 | | - case 32: /* ccons ::= DEFAULT MINUS term */ |
| 140045 | | -{ |
| 140046 | | - ExprSpan v; |
| 140047 | | - v.pExpr = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy190.pExpr, 0); |
| 140048 | | - v.zStart = yymsp[-1].minor.yy0.z; |
| 140049 | | - v.zEnd = yymsp[0].minor.yy190.zEnd; |
| 140050 | | - sqlite3AddDefaultValue(pParse,&v); |
| 140051 | | -} |
| 140052 | | - break; |
| 140053 | | - case 33: /* ccons ::= DEFAULT ID|INDEXED */ |
| 140054 | | -{ |
| 140055 | | - ExprSpan v; |
| 140056 | | - spanExpr(&v, pParse, TK_STRING, yymsp[0].minor.yy0); |
| 140057 | | - sqlite3AddDefaultValue(pParse,&v); |
| 140058 | | -} |
| 140059 | | - break; |
| 140060 | | - case 34: /* ccons ::= NOT NULL onconf */ |
| 140061 | | -{sqlite3AddNotNull(pParse, yymsp[0].minor.yy194);} |
| 140062 | | - break; |
| 140063 | | - case 35: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */ |
| 140064 | | -{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy194,yymsp[0].minor.yy194,yymsp[-2].minor.yy194);} |
| 140065 | | - break; |
| 140066 | | - case 36: /* ccons ::= UNIQUE onconf */ |
| 140067 | | -{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy194,0,0,0,0, |
| 140475 | + case 30: /* ccons ::= DEFAULT scanpt term scanpt */ |
| 140476 | +{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy314,yymsp[-2].minor.yy336,yymsp[0].minor.yy336);} |
| 140477 | + break; |
| 140478 | + case 31: /* ccons ::= DEFAULT LP expr RP */ |
| 140479 | +{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy314,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);} |
| 140480 | + break; |
| 140481 | + case 32: /* ccons ::= DEFAULT PLUS term scanpt */ |
| 140482 | +{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy314,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy336);} |
| 140483 | + break; |
| 140484 | + case 33: /* ccons ::= DEFAULT MINUS term scanpt */ |
| 140485 | +{ |
| 140486 | + Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[-1].minor.yy314, 0); |
| 140487 | + sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy336); |
| 140488 | +} |
| 140489 | + break; |
| 140490 | + case 34: /* ccons ::= DEFAULT scanpt ID|INDEXED */ |
| 140491 | +{ |
| 140492 | + Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0); |
| 140493 | + sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n); |
| 140494 | +} |
| 140495 | + break; |
| 140496 | + case 35: /* ccons ::= NOT NULL onconf */ |
| 140497 | +{sqlite3AddNotNull(pParse, yymsp[0].minor.yy4);} |
| 140498 | + break; |
| 140499 | + case 36: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */ |
| 140500 | +{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy4,yymsp[0].minor.yy4,yymsp[-2].minor.yy4);} |
| 140501 | + break; |
| 140502 | + case 37: /* ccons ::= UNIQUE onconf */ |
| 140503 | +{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy4,0,0,0,0, |
| 140068 | 140504 | SQLITE_IDXTYPE_UNIQUE);} |
| 140069 | 140505 | break; |
| 140070 | | - case 37: /* ccons ::= CHECK LP expr RP */ |
| 140071 | | -{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy190.pExpr);} |
| 140072 | | - break; |
| 140073 | | - case 38: /* ccons ::= REFERENCES nm eidlist_opt refargs */ |
| 140074 | | -{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy148,yymsp[0].minor.yy194);} |
| 140075 | | - break; |
| 140076 | | - case 39: /* ccons ::= defer_subclause */ |
| 140077 | | -{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy194);} |
| 140078 | | - break; |
| 140079 | | - case 40: /* ccons ::= COLLATE ID|STRING */ |
| 140506 | + case 38: /* ccons ::= CHECK LP expr RP */ |
| 140507 | +{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy314);} |
| 140508 | + break; |
| 140509 | + case 39: /* ccons ::= REFERENCES nm eidlist_opt refargs */ |
| 140510 | +{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy322,yymsp[0].minor.yy4);} |
| 140511 | + break; |
| 140512 | + case 40: /* ccons ::= defer_subclause */ |
| 140513 | +{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy4);} |
| 140514 | + break; |
| 140515 | + case 41: /* ccons ::= COLLATE ID|STRING */ |
| 140080 | 140516 | {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);} |
| 140081 | 140517 | break; |
| 140082 | | - case 43: /* refargs ::= */ |
| 140083 | | -{ yymsp[1].minor.yy194 = OE_None*0x0101; /* EV: R-19803-45884 */} |
| 140084 | | - break; |
| 140085 | | - case 44: /* refargs ::= refargs refarg */ |
| 140086 | | -{ yymsp[-1].minor.yy194 = (yymsp[-1].minor.yy194 & ~yymsp[0].minor.yy497.mask) | yymsp[0].minor.yy497.value; } |
| 140087 | | - break; |
| 140088 | | - case 45: /* refarg ::= MATCH nm */ |
| 140089 | | -{ yymsp[-1].minor.yy497.value = 0; yymsp[-1].minor.yy497.mask = 0x000000; } |
| 140090 | | - break; |
| 140091 | | - case 46: /* refarg ::= ON INSERT refact */ |
| 140092 | | -{ yymsp[-2].minor.yy497.value = 0; yymsp[-2].minor.yy497.mask = 0x000000; } |
| 140093 | | - break; |
| 140094 | | - case 47: /* refarg ::= ON DELETE refact */ |
| 140095 | | -{ yymsp[-2].minor.yy497.value = yymsp[0].minor.yy194; yymsp[-2].minor.yy497.mask = 0x0000ff; } |
| 140096 | | - break; |
| 140097 | | - case 48: /* refarg ::= ON UPDATE refact */ |
| 140098 | | -{ yymsp[-2].minor.yy497.value = yymsp[0].minor.yy194<<8; yymsp[-2].minor.yy497.mask = 0x00ff00; } |
| 140099 | | - break; |
| 140100 | | - case 49: /* refact ::= SET NULL */ |
| 140101 | | -{ yymsp[-1].minor.yy194 = OE_SetNull; /* EV: R-33326-45252 */} |
| 140102 | | - break; |
| 140103 | | - case 50: /* refact ::= SET DEFAULT */ |
| 140104 | | -{ yymsp[-1].minor.yy194 = OE_SetDflt; /* EV: R-33326-45252 */} |
| 140105 | | - break; |
| 140106 | | - case 51: /* refact ::= CASCADE */ |
| 140107 | | -{ yymsp[0].minor.yy194 = OE_Cascade; /* EV: R-33326-45252 */} |
| 140108 | | - break; |
| 140109 | | - case 52: /* refact ::= RESTRICT */ |
| 140110 | | -{ yymsp[0].minor.yy194 = OE_Restrict; /* EV: R-33326-45252 */} |
| 140111 | | - break; |
| 140112 | | - case 53: /* refact ::= NO ACTION */ |
| 140113 | | -{ yymsp[-1].minor.yy194 = OE_None; /* EV: R-33326-45252 */} |
| 140114 | | - break; |
| 140115 | | - case 54: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ |
| 140116 | | -{yymsp[-2].minor.yy194 = 0;} |
| 140117 | | - break; |
| 140118 | | - case 55: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ |
| 140119 | | - case 70: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==70); |
| 140120 | | - case 143: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==143); |
| 140121 | | -{yymsp[-1].minor.yy194 = yymsp[0].minor.yy194;} |
| 140122 | | - break; |
| 140123 | | - case 57: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ |
| 140124 | | - case 74: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==74); |
| 140125 | | - case 184: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==184); |
| 140126 | | - case 187: /* in_op ::= NOT IN */ yytestcase(yyruleno==187); |
| 140127 | | - case 213: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==213); |
| 140128 | | -{yymsp[-1].minor.yy194 = 1;} |
| 140129 | | - break; |
| 140130 | | - case 58: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ |
| 140131 | | -{yymsp[-1].minor.yy194 = 0;} |
| 140132 | | - break; |
| 140133 | | - case 60: /* tconscomma ::= COMMA */ |
| 140518 | + case 44: /* refargs ::= */ |
| 140519 | +{ yymsp[1].minor.yy4 = OE_None*0x0101; /* EV: R-19803-45884 */} |
| 140520 | + break; |
| 140521 | + case 45: /* refargs ::= refargs refarg */ |
| 140522 | +{ yymsp[-1].minor.yy4 = (yymsp[-1].minor.yy4 & ~yymsp[0].minor.yy215.mask) | yymsp[0].minor.yy215.value; } |
| 140523 | + break; |
| 140524 | + case 46: /* refarg ::= MATCH nm */ |
| 140525 | +{ yymsp[-1].minor.yy215.value = 0; yymsp[-1].minor.yy215.mask = 0x000000; } |
| 140526 | + break; |
| 140527 | + case 47: /* refarg ::= ON INSERT refact */ |
| 140528 | +{ yymsp[-2].minor.yy215.value = 0; yymsp[-2].minor.yy215.mask = 0x000000; } |
| 140529 | + break; |
| 140530 | + case 48: /* refarg ::= ON DELETE refact */ |
| 140531 | +{ yymsp[-2].minor.yy215.value = yymsp[0].minor.yy4; yymsp[-2].minor.yy215.mask = 0x0000ff; } |
| 140532 | + break; |
| 140533 | + case 49: /* refarg ::= ON UPDATE refact */ |
| 140534 | +{ yymsp[-2].minor.yy215.value = yymsp[0].minor.yy4<<8; yymsp[-2].minor.yy215.mask = 0x00ff00; } |
| 140535 | + break; |
| 140536 | + case 50: /* refact ::= SET NULL */ |
| 140537 | +{ yymsp[-1].minor.yy4 = OE_SetNull; /* EV: R-33326-45252 */} |
| 140538 | + break; |
| 140539 | + case 51: /* refact ::= SET DEFAULT */ |
| 140540 | +{ yymsp[-1].minor.yy4 = OE_SetDflt; /* EV: R-33326-45252 */} |
| 140541 | + break; |
| 140542 | + case 52: /* refact ::= CASCADE */ |
| 140543 | +{ yymsp[0].minor.yy4 = OE_Cascade; /* EV: R-33326-45252 */} |
| 140544 | + break; |
| 140545 | + case 53: /* refact ::= RESTRICT */ |
| 140546 | +{ yymsp[0].minor.yy4 = OE_Restrict; /* EV: R-33326-45252 */} |
| 140547 | + break; |
| 140548 | + case 54: /* refact ::= NO ACTION */ |
| 140549 | +{ yymsp[-1].minor.yy4 = OE_None; /* EV: R-33326-45252 */} |
| 140550 | + break; |
| 140551 | + case 55: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ |
| 140552 | +{yymsp[-2].minor.yy4 = 0;} |
| 140553 | + break; |
| 140554 | + case 56: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ |
| 140555 | + case 71: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==71); |
| 140556 | + case 144: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==144); |
| 140557 | +{yymsp[-1].minor.yy4 = yymsp[0].minor.yy4;} |
| 140558 | + break; |
| 140559 | + case 58: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ |
| 140560 | + case 75: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==75); |
| 140561 | + case 185: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==185); |
| 140562 | + case 188: /* in_op ::= NOT IN */ yytestcase(yyruleno==188); |
| 140563 | + case 214: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==214); |
| 140564 | +{yymsp[-1].minor.yy4 = 1;} |
| 140565 | + break; |
| 140566 | + case 59: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ |
| 140567 | +{yymsp[-1].minor.yy4 = 0;} |
| 140568 | + break; |
| 140569 | + case 61: /* tconscomma ::= COMMA */ |
| 140134 | 140570 | {pParse->constraintName.n = 0;} |
| 140135 | 140571 | break; |
| 140136 | | - case 62: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ |
| 140137 | | -{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy148,yymsp[0].minor.yy194,yymsp[-2].minor.yy194,0);} |
| 140572 | + case 63: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ |
| 140573 | +{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy322,yymsp[0].minor.yy4,yymsp[-2].minor.yy4,0);} |
| 140138 | 140574 | break; |
| 140139 | | - case 63: /* tcons ::= UNIQUE LP sortlist RP onconf */ |
| 140140 | | -{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy148,yymsp[0].minor.yy194,0,0,0,0, |
| 140575 | + case 64: /* tcons ::= UNIQUE LP sortlist RP onconf */ |
| 140576 | +{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy322,yymsp[0].minor.yy4,0,0,0,0, |
| 140141 | 140577 | SQLITE_IDXTYPE_UNIQUE);} |
| 140142 | 140578 | break; |
| 140143 | | - case 64: /* tcons ::= CHECK LP expr RP onconf */ |
| 140144 | | -{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy190.pExpr);} |
| 140145 | | - break; |
| 140146 | | - case 65: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ |
| 140147 | | -{ |
| 140148 | | - sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy148, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy148, yymsp[-1].minor.yy194); |
| 140149 | | - sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy194); |
| 140150 | | -} |
| 140151 | | - break; |
| 140152 | | - case 67: /* onconf ::= */ |
| 140153 | | - case 69: /* orconf ::= */ yytestcase(yyruleno==69); |
| 140154 | | -{yymsp[1].minor.yy194 = OE_Default;} |
| 140155 | | - break; |
| 140156 | | - case 68: /* onconf ::= ON CONFLICT resolvetype */ |
| 140157 | | -{yymsp[-2].minor.yy194 = yymsp[0].minor.yy194;} |
| 140158 | | - break; |
| 140159 | | - case 71: /* resolvetype ::= IGNORE */ |
| 140160 | | -{yymsp[0].minor.yy194 = OE_Ignore;} |
| 140161 | | - break; |
| 140162 | | - case 72: /* resolvetype ::= REPLACE */ |
| 140163 | | - case 144: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==144); |
| 140164 | | -{yymsp[0].minor.yy194 = OE_Replace;} |
| 140165 | | - break; |
| 140166 | | - case 73: /* cmd ::= DROP TABLE ifexists fullname */ |
| 140167 | | -{ |
| 140168 | | - sqlite3DropTable(pParse, yymsp[0].minor.yy185, 0, yymsp[-1].minor.yy194); |
| 140169 | | -} |
| 140170 | | - break; |
| 140171 | | - case 76: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ |
| 140172 | | -{ |
| 140173 | | - sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy148, yymsp[0].minor.yy243, yymsp[-7].minor.yy194, yymsp[-5].minor.yy194); |
| 140174 | | -} |
| 140175 | | - break; |
| 140176 | | - case 77: /* cmd ::= DROP VIEW ifexists fullname */ |
| 140177 | | -{ |
| 140178 | | - sqlite3DropTable(pParse, yymsp[0].minor.yy185, 1, yymsp[-1].minor.yy194); |
| 140179 | | -} |
| 140180 | | - break; |
| 140181 | | - case 78: /* cmd ::= select */ |
| 140579 | + case 65: /* tcons ::= CHECK LP expr RP onconf */ |
| 140580 | +{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy314);} |
| 140581 | + break; |
| 140582 | + case 66: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ |
| 140583 | +{ |
| 140584 | + sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy322, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy322, yymsp[-1].minor.yy4); |
| 140585 | + sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy4); |
| 140586 | +} |
| 140587 | + break; |
| 140588 | + case 68: /* onconf ::= */ |
| 140589 | + case 70: /* orconf ::= */ yytestcase(yyruleno==70); |
| 140590 | +{yymsp[1].minor.yy4 = OE_Default;} |
| 140591 | + break; |
| 140592 | + case 69: /* onconf ::= ON CONFLICT resolvetype */ |
| 140593 | +{yymsp[-2].minor.yy4 = yymsp[0].minor.yy4;} |
| 140594 | + break; |
| 140595 | + case 72: /* resolvetype ::= IGNORE */ |
| 140596 | +{yymsp[0].minor.yy4 = OE_Ignore;} |
| 140597 | + break; |
| 140598 | + case 73: /* resolvetype ::= REPLACE */ |
| 140599 | + case 145: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==145); |
| 140600 | +{yymsp[0].minor.yy4 = OE_Replace;} |
| 140601 | + break; |
| 140602 | + case 74: /* cmd ::= DROP TABLE ifexists fullname */ |
| 140603 | +{ |
| 140604 | + sqlite3DropTable(pParse, yymsp[0].minor.yy259, 0, yymsp[-1].minor.yy4); |
| 140605 | +} |
| 140606 | + break; |
| 140607 | + case 77: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ |
| 140608 | +{ |
| 140609 | + sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy322, yymsp[0].minor.yy387, yymsp[-7].minor.yy4, yymsp[-5].minor.yy4); |
| 140610 | +} |
| 140611 | + break; |
| 140612 | + case 78: /* cmd ::= DROP VIEW ifexists fullname */ |
| 140613 | +{ |
| 140614 | + sqlite3DropTable(pParse, yymsp[0].minor.yy259, 1, yymsp[-1].minor.yy4); |
| 140615 | +} |
| 140616 | + break; |
| 140617 | + case 79: /* cmd ::= select */ |
| 140182 | 140618 | { |
| 140183 | 140619 | SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0}; |
| 140184 | | - sqlite3Select(pParse, yymsp[0].minor.yy243, &dest); |
| 140185 | | - sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy243); |
| 140620 | + sqlite3Select(pParse, yymsp[0].minor.yy387, &dest); |
| 140621 | + sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy387); |
| 140186 | 140622 | } |
| 140187 | 140623 | break; |
| 140188 | | - case 79: /* select ::= with selectnowith */ |
| 140624 | + case 80: /* select ::= with selectnowith */ |
| 140189 | 140625 | { |
| 140190 | | - Select *p = yymsp[0].minor.yy243; |
| 140626 | + Select *p = yymsp[0].minor.yy387; |
| 140191 | 140627 | if( p ){ |
| 140192 | | - p->pWith = yymsp[-1].minor.yy285; |
| 140628 | + p->pWith = yymsp[-1].minor.yy451; |
| 140193 | 140629 | parserDoubleLinkSelect(pParse, p); |
| 140194 | 140630 | }else{ |
| 140195 | | - sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy285); |
| 140631 | + sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy451); |
| 140196 | 140632 | } |
| 140197 | | - yymsp[-1].minor.yy243 = p; /*A-overwrites-W*/ |
| 140633 | + yymsp[-1].minor.yy387 = p; /*A-overwrites-W*/ |
| 140198 | 140634 | } |
| 140199 | 140635 | break; |
| 140200 | | - case 80: /* selectnowith ::= selectnowith multiselect_op oneselect */ |
| 140636 | + case 81: /* selectnowith ::= selectnowith multiselect_op oneselect */ |
| 140201 | 140637 | { |
| 140202 | | - Select *pRhs = yymsp[0].minor.yy243; |
| 140203 | | - Select *pLhs = yymsp[-2].minor.yy243; |
| 140638 | + Select *pRhs = yymsp[0].minor.yy387; |
| 140639 | + Select *pLhs = yymsp[-2].minor.yy387; |
| 140204 | 140640 | if( pRhs && pRhs->pPrior ){ |
| 140205 | 140641 | SrcList *pFrom; |
| 140206 | 140642 | Token x; |
| 140207 | 140643 | x.n = 0; |
| 140208 | 140644 | parserDoubleLinkSelect(pParse, pRhs); |
| 140209 | 140645 | pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0); |
| 140210 | 140646 | pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0); |
| 140211 | 140647 | } |
| 140212 | 140648 | if( pRhs ){ |
| 140213 | | - pRhs->op = (u8)yymsp[-1].minor.yy194; |
| 140649 | + pRhs->op = (u8)yymsp[-1].minor.yy4; |
| 140214 | 140650 | pRhs->pPrior = pLhs; |
| 140215 | 140651 | if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue; |
| 140216 | 140652 | pRhs->selFlags &= ~SF_MultiValue; |
| 140217 | | - if( yymsp[-1].minor.yy194!=TK_ALL ) pParse->hasCompound = 1; |
| 140653 | + if( yymsp[-1].minor.yy4!=TK_ALL ) pParse->hasCompound = 1; |
| 140218 | 140654 | }else{ |
| 140219 | 140655 | sqlite3SelectDelete(pParse->db, pLhs); |
| 140220 | 140656 | } |
| 140221 | | - yymsp[-2].minor.yy243 = pRhs; |
| 140657 | + yymsp[-2].minor.yy387 = pRhs; |
| 140222 | 140658 | } |
| 140223 | 140659 | break; |
| 140224 | | - case 81: /* multiselect_op ::= UNION */ |
| 140225 | | - case 83: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==83); |
| 140226 | | -{yymsp[0].minor.yy194 = yymsp[0].major; /*A-overwrites-OP*/} |
| 140227 | | - break; |
| 140228 | | - case 82: /* multiselect_op ::= UNION ALL */ |
| 140229 | | -{yymsp[-1].minor.yy194 = TK_ALL;} |
| 140230 | | - break; |
| 140231 | | - case 84: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ |
| 140660 | + case 82: /* multiselect_op ::= UNION */ |
| 140661 | + case 84: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==84); |
| 140662 | +{yymsp[0].minor.yy4 = yymsp[0].major; /*A-overwrites-OP*/} |
| 140663 | + break; |
| 140664 | + case 83: /* multiselect_op ::= UNION ALL */ |
| 140665 | +{yymsp[-1].minor.yy4 = TK_ALL;} |
| 140666 | + break; |
| 140667 | + case 85: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ |
| 140232 | 140668 | { |
| 140233 | 140669 | #if SELECTTRACE_ENABLED |
| 140234 | 140670 | Token s = yymsp[-8].minor.yy0; /*A-overwrites-S*/ |
| 140235 | 140671 | #endif |
| 140236 | | - yymsp[-8].minor.yy243 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy148,yymsp[-5].minor.yy185,yymsp[-4].minor.yy72,yymsp[-3].minor.yy148,yymsp[-2].minor.yy72,yymsp[-1].minor.yy148,yymsp[-7].minor.yy194,yymsp[0].minor.yy72); |
| 140672 | + yymsp[-8].minor.yy387 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy322,yymsp[-5].minor.yy259,yymsp[-4].minor.yy314,yymsp[-3].minor.yy322,yymsp[-2].minor.yy314,yymsp[-1].minor.yy322,yymsp[-7].minor.yy4,yymsp[0].minor.yy314); |
| 140237 | 140673 | #if SELECTTRACE_ENABLED |
| 140238 | 140674 | /* Populate the Select.zSelName[] string that is used to help with |
| 140239 | 140675 | ** query planner debugging, to differentiate between multiple Select |
| 140240 | 140676 | ** objects in a complex query. |
| 140241 | 140677 | ** |
| | @@ -140242,496 +140678,483 @@ |
| 140242 | 140678 | ** If the SELECT keyword is immediately followed by a C-style comment |
| 140243 | 140679 | ** then extract the first few alphanumeric characters from within that |
| 140244 | 140680 | ** comment to be the zSelName value. Otherwise, the label is #N where |
| 140245 | 140681 | ** is an integer that is incremented with each SELECT statement seen. |
| 140246 | 140682 | */ |
| 140247 | | - if( yymsp[-8].minor.yy243!=0 ){ |
| 140683 | + if( yymsp[-8].minor.yy387!=0 ){ |
| 140248 | 140684 | const char *z = s.z+6; |
| 140249 | 140685 | int i; |
| 140250 | | - sqlite3_snprintf(sizeof(yymsp[-8].minor.yy243->zSelName), yymsp[-8].minor.yy243->zSelName, "#%d", |
| 140686 | + sqlite3_snprintf(sizeof(yymsp[-8].minor.yy387->zSelName), yymsp[-8].minor.yy387->zSelName, "#%d", |
| 140251 | 140687 | ++pParse->nSelect); |
| 140252 | 140688 | while( z[0]==' ' ) z++; |
| 140253 | 140689 | if( z[0]=='/' && z[1]=='*' ){ |
| 140254 | 140690 | z += 2; |
| 140255 | 140691 | while( z[0]==' ' ) z++; |
| 140256 | 140692 | for(i=0; sqlite3Isalnum(z[i]); i++){} |
| 140257 | | - sqlite3_snprintf(sizeof(yymsp[-8].minor.yy243->zSelName), yymsp[-8].minor.yy243->zSelName, "%.*s", i, z); |
| 140693 | + sqlite3_snprintf(sizeof(yymsp[-8].minor.yy387->zSelName), yymsp[-8].minor.yy387->zSelName, "%.*s", i, z); |
| 140258 | 140694 | } |
| 140259 | 140695 | } |
| 140260 | 140696 | #endif /* SELECTRACE_ENABLED */ |
| 140261 | 140697 | } |
| 140262 | 140698 | break; |
| 140263 | | - case 85: /* values ::= VALUES LP nexprlist RP */ |
| 140699 | + case 86: /* values ::= VALUES LP nexprlist RP */ |
| 140264 | 140700 | { |
| 140265 | | - yymsp[-3].minor.yy243 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy148,0,0,0,0,0,SF_Values,0); |
| 140701 | + yymsp[-3].minor.yy387 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values,0); |
| 140266 | 140702 | } |
| 140267 | 140703 | break; |
| 140268 | | - case 86: /* values ::= values COMMA LP exprlist RP */ |
| 140704 | + case 87: /* values ::= values COMMA LP exprlist RP */ |
| 140269 | 140705 | { |
| 140270 | | - Select *pRight, *pLeft = yymsp[-4].minor.yy243; |
| 140271 | | - pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy148,0,0,0,0,0,SF_Values|SF_MultiValue,0); |
| 140706 | + Select *pRight, *pLeft = yymsp[-4].minor.yy387; |
| 140707 | + pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values|SF_MultiValue,0); |
| 140272 | 140708 | if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue; |
| 140273 | 140709 | if( pRight ){ |
| 140274 | 140710 | pRight->op = TK_ALL; |
| 140275 | 140711 | pRight->pPrior = pLeft; |
| 140276 | | - yymsp[-4].minor.yy243 = pRight; |
| 140277 | | - }else{ |
| 140278 | | - yymsp[-4].minor.yy243 = pLeft; |
| 140279 | | - } |
| 140280 | | -} |
| 140281 | | - break; |
| 140282 | | - case 87: /* distinct ::= DISTINCT */ |
| 140283 | | -{yymsp[0].minor.yy194 = SF_Distinct;} |
| 140284 | | - break; |
| 140285 | | - case 88: /* distinct ::= ALL */ |
| 140286 | | -{yymsp[0].minor.yy194 = SF_All;} |
| 140287 | | - break; |
| 140288 | | - case 90: /* sclp ::= */ |
| 140289 | | - case 118: /* orderby_opt ::= */ yytestcase(yyruleno==118); |
| 140290 | | - case 125: /* groupby_opt ::= */ yytestcase(yyruleno==125); |
| 140291 | | - case 200: /* exprlist ::= */ yytestcase(yyruleno==200); |
| 140292 | | - case 203: /* paren_exprlist ::= */ yytestcase(yyruleno==203); |
| 140293 | | - case 208: /* eidlist_opt ::= */ yytestcase(yyruleno==208); |
| 140294 | | -{yymsp[1].minor.yy148 = 0;} |
| 140295 | | - break; |
| 140296 | | - case 91: /* selcollist ::= sclp expr as */ |
| 140297 | | -{ |
| 140298 | | - yymsp[-2].minor.yy148 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy148, yymsp[-1].minor.yy190.pExpr); |
| 140299 | | - if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-2].minor.yy148, &yymsp[0].minor.yy0, 1); |
| 140300 | | - sqlite3ExprListSetSpan(pParse,yymsp[-2].minor.yy148,&yymsp[-1].minor.yy190); |
| 140301 | | -} |
| 140302 | | - break; |
| 140303 | | - case 92: /* selcollist ::= sclp STAR */ |
| 140712 | + yymsp[-4].minor.yy387 = pRight; |
| 140713 | + }else{ |
| 140714 | + yymsp[-4].minor.yy387 = pLeft; |
| 140715 | + } |
| 140716 | +} |
| 140717 | + break; |
| 140718 | + case 88: /* distinct ::= DISTINCT */ |
| 140719 | +{yymsp[0].minor.yy4 = SF_Distinct;} |
| 140720 | + break; |
| 140721 | + case 89: /* distinct ::= ALL */ |
| 140722 | +{yymsp[0].minor.yy4 = SF_All;} |
| 140723 | + break; |
| 140724 | + case 91: /* sclp ::= */ |
| 140725 | + case 119: /* orderby_opt ::= */ yytestcase(yyruleno==119); |
| 140726 | + case 126: /* groupby_opt ::= */ yytestcase(yyruleno==126); |
| 140727 | + case 201: /* exprlist ::= */ yytestcase(yyruleno==201); |
| 140728 | + case 204: /* paren_exprlist ::= */ yytestcase(yyruleno==204); |
| 140729 | + case 209: /* eidlist_opt ::= */ yytestcase(yyruleno==209); |
| 140730 | +{yymsp[1].minor.yy322 = 0;} |
| 140731 | + break; |
| 140732 | + case 92: /* selcollist ::= sclp scanpt expr scanpt as */ |
| 140733 | +{ |
| 140734 | + yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[-2].minor.yy314); |
| 140735 | + if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[0].minor.yy0, 1); |
| 140736 | + sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy322,yymsp[-3].minor.yy336,yymsp[-1].minor.yy336); |
| 140737 | +} |
| 140738 | + break; |
| 140739 | + case 93: /* selcollist ::= sclp scanpt STAR */ |
| 140304 | 140740 | { |
| 140305 | 140741 | Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0); |
| 140306 | | - yymsp[-1].minor.yy148 = sqlite3ExprListAppend(pParse, yymsp[-1].minor.yy148, p); |
| 140742 | + yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy322, p); |
| 140307 | 140743 | } |
| 140308 | 140744 | break; |
| 140309 | | - case 93: /* selcollist ::= sclp nm DOT STAR */ |
| 140745 | + case 94: /* selcollist ::= sclp scanpt nm DOT STAR */ |
| 140310 | 140746 | { |
| 140311 | 140747 | Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0); |
| 140312 | 140748 | Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); |
| 140313 | 140749 | Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight); |
| 140314 | | - yymsp[-3].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy148, pDot); |
| 140750 | + yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot); |
| 140315 | 140751 | } |
| 140316 | 140752 | break; |
| 140317 | | - case 94: /* as ::= AS nm */ |
| 140318 | | - case 105: /* dbnm ::= DOT nm */ yytestcase(yyruleno==105); |
| 140319 | | - case 222: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==222); |
| 140320 | | - case 223: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==223); |
| 140753 | + case 95: /* as ::= AS nm */ |
| 140754 | + case 106: /* dbnm ::= DOT nm */ yytestcase(yyruleno==106); |
| 140755 | + case 223: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==223); |
| 140756 | + case 224: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==224); |
| 140321 | 140757 | {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;} |
| 140322 | 140758 | break; |
| 140323 | | - case 96: /* from ::= */ |
| 140324 | | -{yymsp[1].minor.yy185 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy185));} |
| 140325 | | - break; |
| 140326 | | - case 97: /* from ::= FROM seltablist */ |
| 140327 | | -{ |
| 140328 | | - yymsp[-1].minor.yy185 = yymsp[0].minor.yy185; |
| 140329 | | - sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy185); |
| 140330 | | -} |
| 140331 | | - break; |
| 140332 | | - case 98: /* stl_prefix ::= seltablist joinop */ |
| 140333 | | -{ |
| 140334 | | - if( ALWAYS(yymsp[-1].minor.yy185 && yymsp[-1].minor.yy185->nSrc>0) ) yymsp[-1].minor.yy185->a[yymsp[-1].minor.yy185->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy194; |
| 140335 | | -} |
| 140336 | | - break; |
| 140337 | | - case 99: /* stl_prefix ::= */ |
| 140338 | | -{yymsp[1].minor.yy185 = 0;} |
| 140339 | | - break; |
| 140340 | | - case 100: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ |
| 140341 | | -{ |
| 140342 | | - yymsp[-6].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy185,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy72,yymsp[0].minor.yy254); |
| 140343 | | - sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy185, &yymsp[-2].minor.yy0); |
| 140344 | | -} |
| 140345 | | - break; |
| 140346 | | - case 101: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ |
| 140347 | | -{ |
| 140348 | | - yymsp[-8].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy185,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy72,yymsp[0].minor.yy254); |
| 140349 | | - sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy185, yymsp[-4].minor.yy148); |
| 140350 | | -} |
| 140351 | | - break; |
| 140352 | | - case 102: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */ |
| 140353 | | -{ |
| 140354 | | - yymsp[-6].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy185,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy243,yymsp[-1].minor.yy72,yymsp[0].minor.yy254); |
| 140355 | | - } |
| 140356 | | - break; |
| 140357 | | - case 103: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ |
| 140358 | | -{ |
| 140359 | | - if( yymsp[-6].minor.yy185==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy72==0 && yymsp[0].minor.yy254==0 ){ |
| 140360 | | - yymsp[-6].minor.yy185 = yymsp[-4].minor.yy185; |
| 140361 | | - }else if( yymsp[-4].minor.yy185->nSrc==1 ){ |
| 140362 | | - yymsp[-6].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy185,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy72,yymsp[0].minor.yy254); |
| 140363 | | - if( yymsp[-6].minor.yy185 ){ |
| 140364 | | - struct SrcList_item *pNew = &yymsp[-6].minor.yy185->a[yymsp[-6].minor.yy185->nSrc-1]; |
| 140365 | | - struct SrcList_item *pOld = yymsp[-4].minor.yy185->a; |
| 140759 | + case 97: /* from ::= */ |
| 140760 | +{yymsp[1].minor.yy259 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy259));} |
| 140761 | + break; |
| 140762 | + case 98: /* from ::= FROM seltablist */ |
| 140763 | +{ |
| 140764 | + yymsp[-1].minor.yy259 = yymsp[0].minor.yy259; |
| 140765 | + sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy259); |
| 140766 | +} |
| 140767 | + break; |
| 140768 | + case 99: /* stl_prefix ::= seltablist joinop */ |
| 140769 | +{ |
| 140770 | + if( ALWAYS(yymsp[-1].minor.yy259 && yymsp[-1].minor.yy259->nSrc>0) ) yymsp[-1].minor.yy259->a[yymsp[-1].minor.yy259->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy4; |
| 140771 | +} |
| 140772 | + break; |
| 140773 | + case 100: /* stl_prefix ::= */ |
| 140774 | +{yymsp[1].minor.yy259 = 0;} |
| 140775 | + break; |
| 140776 | + case 101: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ |
| 140777 | +{ |
| 140778 | + yymsp[-6].minor.yy259 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy259,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy314,yymsp[0].minor.yy384); |
| 140779 | + sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy259, &yymsp[-2].minor.yy0); |
| 140780 | +} |
| 140781 | + break; |
| 140782 | + case 102: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ |
| 140783 | +{ |
| 140784 | + yymsp[-8].minor.yy259 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy259,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy314,yymsp[0].minor.yy384); |
| 140785 | + sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy259, yymsp[-4].minor.yy322); |
| 140786 | +} |
| 140787 | + break; |
| 140788 | + case 103: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */ |
| 140789 | +{ |
| 140790 | + yymsp[-6].minor.yy259 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy259,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy387,yymsp[-1].minor.yy314,yymsp[0].minor.yy384); |
| 140791 | + } |
| 140792 | + break; |
| 140793 | + case 104: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ |
| 140794 | +{ |
| 140795 | + if( yymsp[-6].minor.yy259==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy314==0 && yymsp[0].minor.yy384==0 ){ |
| 140796 | + yymsp[-6].minor.yy259 = yymsp[-4].minor.yy259; |
| 140797 | + }else if( yymsp[-4].minor.yy259->nSrc==1 ){ |
| 140798 | + yymsp[-6].minor.yy259 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy259,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy314,yymsp[0].minor.yy384); |
| 140799 | + if( yymsp[-6].minor.yy259 ){ |
| 140800 | + struct SrcList_item *pNew = &yymsp[-6].minor.yy259->a[yymsp[-6].minor.yy259->nSrc-1]; |
| 140801 | + struct SrcList_item *pOld = yymsp[-4].minor.yy259->a; |
| 140366 | 140802 | pNew->zName = pOld->zName; |
| 140367 | 140803 | pNew->zDatabase = pOld->zDatabase; |
| 140368 | 140804 | pNew->pSelect = pOld->pSelect; |
| 140369 | 140805 | pOld->zName = pOld->zDatabase = 0; |
| 140370 | 140806 | pOld->pSelect = 0; |
| 140371 | 140807 | } |
| 140372 | | - sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy185); |
| 140808 | + sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy259); |
| 140373 | 140809 | }else{ |
| 140374 | 140810 | Select *pSubquery; |
| 140375 | | - sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy185); |
| 140376 | | - pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy185,0,0,0,0,SF_NestedFrom,0); |
| 140377 | | - yymsp[-6].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy185,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy72,yymsp[0].minor.yy254); |
| 140811 | + sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy259); |
| 140812 | + pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy259,0,0,0,0,SF_NestedFrom,0); |
| 140813 | + yymsp[-6].minor.yy259 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy259,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy314,yymsp[0].minor.yy384); |
| 140378 | 140814 | } |
| 140379 | 140815 | } |
| 140380 | 140816 | break; |
| 140381 | | - case 104: /* dbnm ::= */ |
| 140382 | | - case 113: /* indexed_opt ::= */ yytestcase(yyruleno==113); |
| 140817 | + case 105: /* dbnm ::= */ |
| 140818 | + case 114: /* indexed_opt ::= */ yytestcase(yyruleno==114); |
| 140383 | 140819 | {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;} |
| 140384 | 140820 | break; |
| 140385 | | - case 106: /* fullname ::= nm dbnm */ |
| 140386 | | -{yymsp[-1].minor.yy185 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/} |
| 140387 | | - break; |
| 140388 | | - case 107: /* joinop ::= COMMA|JOIN */ |
| 140389 | | -{ yymsp[0].minor.yy194 = JT_INNER; } |
| 140390 | | - break; |
| 140391 | | - case 108: /* joinop ::= JOIN_KW JOIN */ |
| 140392 | | -{yymsp[-1].minor.yy194 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/} |
| 140393 | | - break; |
| 140394 | | - case 109: /* joinop ::= JOIN_KW nm JOIN */ |
| 140395 | | -{yymsp[-2].minor.yy194 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/} |
| 140396 | | - break; |
| 140397 | | - case 110: /* joinop ::= JOIN_KW nm nm JOIN */ |
| 140398 | | -{yymsp[-3].minor.yy194 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/} |
| 140399 | | - break; |
| 140400 | | - case 111: /* on_opt ::= ON expr */ |
| 140401 | | - case 128: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==128); |
| 140402 | | - case 135: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==135); |
| 140403 | | - case 196: /* case_else ::= ELSE expr */ yytestcase(yyruleno==196); |
| 140404 | | -{yymsp[-1].minor.yy72 = yymsp[0].minor.yy190.pExpr;} |
| 140405 | | - break; |
| 140406 | | - case 112: /* on_opt ::= */ |
| 140407 | | - case 127: /* having_opt ::= */ yytestcase(yyruleno==127); |
| 140408 | | - case 129: /* limit_opt ::= */ yytestcase(yyruleno==129); |
| 140409 | | - case 134: /* where_opt ::= */ yytestcase(yyruleno==134); |
| 140410 | | - case 197: /* case_else ::= */ yytestcase(yyruleno==197); |
| 140411 | | - case 199: /* case_operand ::= */ yytestcase(yyruleno==199); |
| 140412 | | -{yymsp[1].minor.yy72 = 0;} |
| 140413 | | - break; |
| 140414 | | - case 114: /* indexed_opt ::= INDEXED BY nm */ |
| 140821 | + case 107: /* fullname ::= nm dbnm */ |
| 140822 | +{yymsp[-1].minor.yy259 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/} |
| 140823 | + break; |
| 140824 | + case 108: /* joinop ::= COMMA|JOIN */ |
| 140825 | +{ yymsp[0].minor.yy4 = JT_INNER; } |
| 140826 | + break; |
| 140827 | + case 109: /* joinop ::= JOIN_KW JOIN */ |
| 140828 | +{yymsp[-1].minor.yy4 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/} |
| 140829 | + break; |
| 140830 | + case 110: /* joinop ::= JOIN_KW nm JOIN */ |
| 140831 | +{yymsp[-2].minor.yy4 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/} |
| 140832 | + break; |
| 140833 | + case 111: /* joinop ::= JOIN_KW nm nm JOIN */ |
| 140834 | +{yymsp[-3].minor.yy4 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/} |
| 140835 | + break; |
| 140836 | + case 112: /* on_opt ::= ON expr */ |
| 140837 | + case 129: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==129); |
| 140838 | + case 136: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==136); |
| 140839 | + case 197: /* case_else ::= ELSE expr */ yytestcase(yyruleno==197); |
| 140840 | +{yymsp[-1].minor.yy314 = yymsp[0].minor.yy314;} |
| 140841 | + break; |
| 140842 | + case 113: /* on_opt ::= */ |
| 140843 | + case 128: /* having_opt ::= */ yytestcase(yyruleno==128); |
| 140844 | + case 130: /* limit_opt ::= */ yytestcase(yyruleno==130); |
| 140845 | + case 135: /* where_opt ::= */ yytestcase(yyruleno==135); |
| 140846 | + case 198: /* case_else ::= */ yytestcase(yyruleno==198); |
| 140847 | + case 200: /* case_operand ::= */ yytestcase(yyruleno==200); |
| 140848 | +{yymsp[1].minor.yy314 = 0;} |
| 140849 | + break; |
| 140850 | + case 115: /* indexed_opt ::= INDEXED BY nm */ |
| 140415 | 140851 | {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;} |
| 140416 | 140852 | break; |
| 140417 | | - case 115: /* indexed_opt ::= NOT INDEXED */ |
| 140853 | + case 116: /* indexed_opt ::= NOT INDEXED */ |
| 140418 | 140854 | {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;} |
| 140419 | 140855 | break; |
| 140420 | | - case 116: /* using_opt ::= USING LP idlist RP */ |
| 140421 | | -{yymsp[-3].minor.yy254 = yymsp[-1].minor.yy254;} |
| 140422 | | - break; |
| 140423 | | - case 117: /* using_opt ::= */ |
| 140424 | | - case 145: /* idlist_opt ::= */ yytestcase(yyruleno==145); |
| 140425 | | -{yymsp[1].minor.yy254 = 0;} |
| 140426 | | - break; |
| 140427 | | - case 119: /* orderby_opt ::= ORDER BY sortlist */ |
| 140428 | | - case 126: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==126); |
| 140429 | | -{yymsp[-2].minor.yy148 = yymsp[0].minor.yy148;} |
| 140430 | | - break; |
| 140431 | | - case 120: /* sortlist ::= sortlist COMMA expr sortorder */ |
| 140432 | | -{ |
| 140433 | | - yymsp[-3].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy148,yymsp[-1].minor.yy190.pExpr); |
| 140434 | | - sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy148,yymsp[0].minor.yy194); |
| 140435 | | -} |
| 140436 | | - break; |
| 140437 | | - case 121: /* sortlist ::= expr sortorder */ |
| 140438 | | -{ |
| 140439 | | - yymsp[-1].minor.yy148 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy190.pExpr); /*A-overwrites-Y*/ |
| 140440 | | - sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy148,yymsp[0].minor.yy194); |
| 140441 | | -} |
| 140442 | | - break; |
| 140443 | | - case 122: /* sortorder ::= ASC */ |
| 140444 | | -{yymsp[0].minor.yy194 = SQLITE_SO_ASC;} |
| 140445 | | - break; |
| 140446 | | - case 123: /* sortorder ::= DESC */ |
| 140447 | | -{yymsp[0].minor.yy194 = SQLITE_SO_DESC;} |
| 140448 | | - break; |
| 140449 | | - case 124: /* sortorder ::= */ |
| 140450 | | -{yymsp[1].minor.yy194 = SQLITE_SO_UNDEFINED;} |
| 140451 | | - break; |
| 140452 | | - case 130: /* limit_opt ::= LIMIT expr */ |
| 140453 | | -{yymsp[-1].minor.yy72 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy190.pExpr,0);} |
| 140454 | | - break; |
| 140455 | | - case 131: /* limit_opt ::= LIMIT expr OFFSET expr */ |
| 140456 | | -{yymsp[-3].minor.yy72 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy190.pExpr,yymsp[0].minor.yy190.pExpr);} |
| 140457 | | - break; |
| 140458 | | - case 132: /* limit_opt ::= LIMIT expr COMMA expr */ |
| 140459 | | -{yymsp[-3].minor.yy72 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy190.pExpr,yymsp[-2].minor.yy190.pExpr);} |
| 140460 | | - break; |
| 140461 | | - case 133: /* cmd ::= with DELETE FROM fullname indexed_opt where_opt */ |
| 140462 | | -{ |
| 140463 | | - sqlite3WithPush(pParse, yymsp[-5].minor.yy285, 1); |
| 140464 | | - sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy185, &yymsp[-1].minor.yy0); |
| 140465 | | - sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy185,yymsp[0].minor.yy72,0,0); |
| 140466 | | -} |
| 140467 | | - break; |
| 140468 | | - case 136: /* cmd ::= with UPDATE orconf fullname indexed_opt SET setlist where_opt */ |
| 140469 | | -{ |
| 140470 | | - sqlite3WithPush(pParse, yymsp[-7].minor.yy285, 1); |
| 140471 | | - sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy185, &yymsp[-3].minor.yy0); |
| 140472 | | - sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy148,"set list"); |
| 140473 | | - sqlite3Update(pParse,yymsp[-4].minor.yy185,yymsp[-1].minor.yy148,yymsp[0].minor.yy72,yymsp[-5].minor.yy194,0,0); |
| 140474 | | -} |
| 140475 | | - break; |
| 140476 | | - case 137: /* setlist ::= setlist COMMA nm EQ expr */ |
| 140477 | | -{ |
| 140478 | | - yymsp[-4].minor.yy148 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy148, yymsp[0].minor.yy190.pExpr); |
| 140479 | | - sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy148, &yymsp[-2].minor.yy0, 1); |
| 140480 | | -} |
| 140481 | | - break; |
| 140482 | | - case 138: /* setlist ::= setlist COMMA LP idlist RP EQ expr */ |
| 140483 | | -{ |
| 140484 | | - yymsp[-6].minor.yy148 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy148, yymsp[-3].minor.yy254, yymsp[0].minor.yy190.pExpr); |
| 140485 | | -} |
| 140486 | | - break; |
| 140487 | | - case 139: /* setlist ::= nm EQ expr */ |
| 140488 | | -{ |
| 140489 | | - yylhsminor.yy148 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy190.pExpr); |
| 140490 | | - sqlite3ExprListSetName(pParse, yylhsminor.yy148, &yymsp[-2].minor.yy0, 1); |
| 140491 | | -} |
| 140492 | | - yymsp[-2].minor.yy148 = yylhsminor.yy148; |
| 140493 | | - break; |
| 140494 | | - case 140: /* setlist ::= LP idlist RP EQ expr */ |
| 140495 | | -{ |
| 140496 | | - yymsp[-4].minor.yy148 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy254, yymsp[0].minor.yy190.pExpr); |
| 140497 | | -} |
| 140498 | | - break; |
| 140499 | | - case 141: /* cmd ::= with insert_cmd INTO fullname idlist_opt select */ |
| 140500 | | -{ |
| 140501 | | - sqlite3WithPush(pParse, yymsp[-5].minor.yy285, 1); |
| 140502 | | - sqlite3Insert(pParse, yymsp[-2].minor.yy185, yymsp[0].minor.yy243, yymsp[-1].minor.yy254, yymsp[-4].minor.yy194); |
| 140503 | | -} |
| 140504 | | - break; |
| 140505 | | - case 142: /* cmd ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES */ |
| 140506 | | -{ |
| 140507 | | - sqlite3WithPush(pParse, yymsp[-6].minor.yy285, 1); |
| 140508 | | - sqlite3Insert(pParse, yymsp[-3].minor.yy185, 0, yymsp[-2].minor.yy254, yymsp[-5].minor.yy194); |
| 140509 | | -} |
| 140510 | | - break; |
| 140511 | | - case 146: /* idlist_opt ::= LP idlist RP */ |
| 140512 | | -{yymsp[-2].minor.yy254 = yymsp[-1].minor.yy254;} |
| 140513 | | - break; |
| 140514 | | - case 147: /* idlist ::= idlist COMMA nm */ |
| 140515 | | -{yymsp[-2].minor.yy254 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);} |
| 140516 | | - break; |
| 140517 | | - case 148: /* idlist ::= nm */ |
| 140518 | | -{yymsp[0].minor.yy254 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/} |
| 140519 | | - break; |
| 140520 | | - case 149: /* expr ::= LP expr RP */ |
| 140521 | | -{spanSet(&yymsp[-2].minor.yy190,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-B*/ yymsp[-2].minor.yy190.pExpr = yymsp[-1].minor.yy190.pExpr;} |
| 140522 | | - break; |
| 140523 | | - case 150: /* expr ::= ID|INDEXED */ |
| 140524 | | - case 151: /* expr ::= JOIN_KW */ yytestcase(yyruleno==151); |
| 140525 | | -{spanExpr(&yymsp[0].minor.yy190,pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/} |
| 140526 | | - break; |
| 140527 | | - case 152: /* expr ::= nm DOT nm */ |
| 140856 | + case 117: /* using_opt ::= USING LP idlist RP */ |
| 140857 | +{yymsp[-3].minor.yy384 = yymsp[-1].minor.yy384;} |
| 140858 | + break; |
| 140859 | + case 118: /* using_opt ::= */ |
| 140860 | + case 146: /* idlist_opt ::= */ yytestcase(yyruleno==146); |
| 140861 | +{yymsp[1].minor.yy384 = 0;} |
| 140862 | + break; |
| 140863 | + case 120: /* orderby_opt ::= ORDER BY sortlist */ |
| 140864 | + case 127: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==127); |
| 140865 | +{yymsp[-2].minor.yy322 = yymsp[0].minor.yy322;} |
| 140866 | + break; |
| 140867 | + case 121: /* sortlist ::= sortlist COMMA expr sortorder */ |
| 140868 | +{ |
| 140869 | + yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322,yymsp[-1].minor.yy314); |
| 140870 | + sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy322,yymsp[0].minor.yy4); |
| 140871 | +} |
| 140872 | + break; |
| 140873 | + case 122: /* sortlist ::= expr sortorder */ |
| 140874 | +{ |
| 140875 | + yymsp[-1].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy314); /*A-overwrites-Y*/ |
| 140876 | + sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy322,yymsp[0].minor.yy4); |
| 140877 | +} |
| 140878 | + break; |
| 140879 | + case 123: /* sortorder ::= ASC */ |
| 140880 | +{yymsp[0].minor.yy4 = SQLITE_SO_ASC;} |
| 140881 | + break; |
| 140882 | + case 124: /* sortorder ::= DESC */ |
| 140883 | +{yymsp[0].minor.yy4 = SQLITE_SO_DESC;} |
| 140884 | + break; |
| 140885 | + case 125: /* sortorder ::= */ |
| 140886 | +{yymsp[1].minor.yy4 = SQLITE_SO_UNDEFINED;} |
| 140887 | + break; |
| 140888 | + case 131: /* limit_opt ::= LIMIT expr */ |
| 140889 | +{yymsp[-1].minor.yy314 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy314,0);} |
| 140890 | + break; |
| 140891 | + case 132: /* limit_opt ::= LIMIT expr OFFSET expr */ |
| 140892 | +{yymsp[-3].minor.yy314 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy314,yymsp[0].minor.yy314);} |
| 140893 | + break; |
| 140894 | + case 133: /* limit_opt ::= LIMIT expr COMMA expr */ |
| 140895 | +{yymsp[-3].minor.yy314 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy314,yymsp[-2].minor.yy314);} |
| 140896 | + break; |
| 140897 | + case 134: /* cmd ::= with DELETE FROM fullname indexed_opt where_opt */ |
| 140898 | +{ |
| 140899 | + sqlite3WithPush(pParse, yymsp[-5].minor.yy451, 1); |
| 140900 | + sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy259, &yymsp[-1].minor.yy0); |
| 140901 | + sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy259,yymsp[0].minor.yy314,0,0); |
| 140902 | +} |
| 140903 | + break; |
| 140904 | + case 137: /* cmd ::= with UPDATE orconf fullname indexed_opt SET setlist where_opt */ |
| 140905 | +{ |
| 140906 | + sqlite3WithPush(pParse, yymsp[-7].minor.yy451, 1); |
| 140907 | + sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy259, &yymsp[-3].minor.yy0); |
| 140908 | + sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy322,"set list"); |
| 140909 | + sqlite3Update(pParse,yymsp[-4].minor.yy259,yymsp[-1].minor.yy322,yymsp[0].minor.yy314,yymsp[-5].minor.yy4,0,0); |
| 140910 | +} |
| 140911 | + break; |
| 140912 | + case 138: /* setlist ::= setlist COMMA nm EQ expr */ |
| 140913 | +{ |
| 140914 | + yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[0].minor.yy314); |
| 140915 | + sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, 1); |
| 140916 | +} |
| 140917 | + break; |
| 140918 | + case 139: /* setlist ::= setlist COMMA LP idlist RP EQ expr */ |
| 140919 | +{ |
| 140920 | + yymsp[-6].minor.yy322 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy322, yymsp[-3].minor.yy384, yymsp[0].minor.yy314); |
| 140921 | +} |
| 140922 | + break; |
| 140923 | + case 140: /* setlist ::= nm EQ expr */ |
| 140924 | +{ |
| 140925 | + yylhsminor.yy322 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy314); |
| 140926 | + sqlite3ExprListSetName(pParse, yylhsminor.yy322, &yymsp[-2].minor.yy0, 1); |
| 140927 | +} |
| 140928 | + yymsp[-2].minor.yy322 = yylhsminor.yy322; |
| 140929 | + break; |
| 140930 | + case 141: /* setlist ::= LP idlist RP EQ expr */ |
| 140931 | +{ |
| 140932 | + yymsp[-4].minor.yy322 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy384, yymsp[0].minor.yy314); |
| 140933 | +} |
| 140934 | + break; |
| 140935 | + case 142: /* cmd ::= with insert_cmd INTO fullname idlist_opt select */ |
| 140936 | +{ |
| 140937 | + sqlite3WithPush(pParse, yymsp[-5].minor.yy451, 1); |
| 140938 | + sqlite3Insert(pParse, yymsp[-2].minor.yy259, yymsp[0].minor.yy387, yymsp[-1].minor.yy384, yymsp[-4].minor.yy4); |
| 140939 | +} |
| 140940 | + break; |
| 140941 | + case 143: /* cmd ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES */ |
| 140942 | +{ |
| 140943 | + sqlite3WithPush(pParse, yymsp[-6].minor.yy451, 1); |
| 140944 | + sqlite3Insert(pParse, yymsp[-3].minor.yy259, 0, yymsp[-2].minor.yy384, yymsp[-5].minor.yy4); |
| 140945 | +} |
| 140946 | + break; |
| 140947 | + case 147: /* idlist_opt ::= LP idlist RP */ |
| 140948 | +{yymsp[-2].minor.yy384 = yymsp[-1].minor.yy384;} |
| 140949 | + break; |
| 140950 | + case 148: /* idlist ::= idlist COMMA nm */ |
| 140951 | +{yymsp[-2].minor.yy384 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy384,&yymsp[0].minor.yy0);} |
| 140952 | + break; |
| 140953 | + case 149: /* idlist ::= nm */ |
| 140954 | +{yymsp[0].minor.yy384 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/} |
| 140955 | + break; |
| 140956 | + case 150: /* expr ::= LP expr RP */ |
| 140957 | +{yymsp[-2].minor.yy314 = yymsp[-1].minor.yy314;} |
| 140958 | + break; |
| 140959 | + case 151: /* expr ::= ID|INDEXED */ |
| 140960 | + case 152: /* expr ::= JOIN_KW */ yytestcase(yyruleno==152); |
| 140961 | +{yymsp[0].minor.yy314=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/} |
| 140962 | + break; |
| 140963 | + case 153: /* expr ::= nm DOT nm */ |
| 140528 | 140964 | { |
| 140529 | 140965 | Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); |
| 140530 | 140966 | Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1); |
| 140531 | | - spanSet(&yymsp[-2].minor.yy190,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/ |
| 140532 | | - yymsp[-2].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp2); |
| 140967 | + yylhsminor.yy314 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2); |
| 140533 | 140968 | } |
| 140969 | + yymsp[-2].minor.yy314 = yylhsminor.yy314; |
| 140534 | 140970 | break; |
| 140535 | | - case 153: /* expr ::= nm DOT nm DOT nm */ |
| 140971 | + case 154: /* expr ::= nm DOT nm DOT nm */ |
| 140536 | 140972 | { |
| 140537 | 140973 | Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1); |
| 140538 | 140974 | Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); |
| 140539 | 140975 | Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1); |
| 140540 | 140976 | Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3); |
| 140541 | | - spanSet(&yymsp[-4].minor.yy190,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/ |
| 140542 | | - yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp4); |
| 140543 | | -} |
| 140544 | | - break; |
| 140545 | | - case 154: /* term ::= NULL|FLOAT|BLOB */ |
| 140546 | | - case 155: /* term ::= STRING */ yytestcase(yyruleno==155); |
| 140547 | | -{spanExpr(&yymsp[0].minor.yy190,pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/} |
| 140548 | | - break; |
| 140549 | | - case 156: /* term ::= INTEGER */ |
| 140550 | | -{ |
| 140551 | | - yylhsminor.yy190.pExpr = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1); |
| 140552 | | - yylhsminor.yy190.zStart = yymsp[0].minor.yy0.z; |
| 140553 | | - yylhsminor.yy190.zEnd = yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n; |
| 140554 | | -} |
| 140555 | | - yymsp[0].minor.yy190 = yylhsminor.yy190; |
| 140556 | | - break; |
| 140557 | | - case 157: /* expr ::= VARIABLE */ |
| 140977 | + yylhsminor.yy314 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4); |
| 140978 | +} |
| 140979 | + yymsp[-4].minor.yy314 = yylhsminor.yy314; |
| 140980 | + break; |
| 140981 | + case 155: /* term ::= NULL|FLOAT|BLOB */ |
| 140982 | + case 156: /* term ::= STRING */ yytestcase(yyruleno==156); |
| 140983 | +{yymsp[0].minor.yy314=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/} |
| 140984 | + break; |
| 140985 | + case 157: /* term ::= INTEGER */ |
| 140986 | +{ |
| 140987 | + yylhsminor.yy314 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1); |
| 140988 | +} |
| 140989 | + yymsp[0].minor.yy314 = yylhsminor.yy314; |
| 140990 | + break; |
| 140991 | + case 158: /* expr ::= VARIABLE */ |
| 140558 | 140992 | { |
| 140559 | 140993 | if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){ |
| 140560 | 140994 | u32 n = yymsp[0].minor.yy0.n; |
| 140561 | | - spanExpr(&yymsp[0].minor.yy190, pParse, TK_VARIABLE, yymsp[0].minor.yy0); |
| 140562 | | - sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy190.pExpr, n); |
| 140995 | + yymsp[0].minor.yy314 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0); |
| 140996 | + sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy314, n); |
| 140563 | 140997 | }else{ |
| 140564 | 140998 | /* When doing a nested parse, one can include terms in an expression |
| 140565 | 140999 | ** that look like this: #1 #2 ... These terms refer to registers |
| 140566 | 141000 | ** in the virtual machine. #N is the N-th register. */ |
| 140567 | 141001 | Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/ |
| 140568 | 141002 | assert( t.n>=2 ); |
| 140569 | | - spanSet(&yymsp[0].minor.yy190, &t, &t); |
| 140570 | 141003 | if( pParse->nested==0 ){ |
| 140571 | 141004 | sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t); |
| 140572 | | - yymsp[0].minor.yy190.pExpr = 0; |
| 140573 | | - }else{ |
| 140574 | | - yymsp[0].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0); |
| 140575 | | - if( yymsp[0].minor.yy190.pExpr ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy190.pExpr->iTable); |
| 140576 | | - } |
| 140577 | | - } |
| 140578 | | -} |
| 140579 | | - break; |
| 140580 | | - case 158: /* expr ::= expr COLLATE ID|STRING */ |
| 140581 | | -{ |
| 140582 | | - yymsp[-2].minor.yy190.pExpr = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy190.pExpr, &yymsp[0].minor.yy0, 1); |
| 140583 | | - yymsp[-2].minor.yy190.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; |
| 140584 | | -} |
| 140585 | | - break; |
| 140586 | | - case 159: /* expr ::= CAST LP expr AS typetoken RP */ |
| 140587 | | -{ |
| 140588 | | - spanSet(&yymsp[-5].minor.yy190,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/ |
| 140589 | | - yymsp[-5].minor.yy190.pExpr = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1); |
| 140590 | | - sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy190.pExpr, yymsp[-3].minor.yy190.pExpr, 0); |
| 140591 | | -} |
| 140592 | | - break; |
| 140593 | | - case 160: /* expr ::= ID|INDEXED LP distinct exprlist RP */ |
| 140594 | | -{ |
| 140595 | | - if( yymsp[-1].minor.yy148 && yymsp[-1].minor.yy148->nExpr>pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] ){ |
| 141005 | + yymsp[0].minor.yy314 = 0; |
| 141006 | + }else{ |
| 141007 | + yymsp[0].minor.yy314 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0); |
| 141008 | + if( yymsp[0].minor.yy314 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy314->iTable); |
| 141009 | + } |
| 141010 | + } |
| 141011 | +} |
| 141012 | + break; |
| 141013 | + case 159: /* expr ::= expr COLLATE ID|STRING */ |
| 141014 | +{ |
| 141015 | + yymsp[-2].minor.yy314 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy314, &yymsp[0].minor.yy0, 1); |
| 141016 | +} |
| 141017 | + break; |
| 141018 | + case 160: /* expr ::= CAST LP expr AS typetoken RP */ |
| 141019 | +{ |
| 141020 | + yymsp[-5].minor.yy314 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1); |
| 141021 | + sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy314, yymsp[-3].minor.yy314, 0); |
| 141022 | +} |
| 141023 | + break; |
| 141024 | + case 161: /* expr ::= ID|INDEXED LP distinct exprlist RP */ |
| 141025 | +{ |
| 141026 | + if( yymsp[-1].minor.yy322 && yymsp[-1].minor.yy322->nExpr>pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] ){ |
| 140596 | 141027 | sqlite3ErrorMsg(pParse, "too many arguments on function %T", &yymsp[-4].minor.yy0); |
| 140597 | 141028 | } |
| 140598 | | - yylhsminor.yy190.pExpr = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy148, &yymsp[-4].minor.yy0); |
| 140599 | | - spanSet(&yylhsminor.yy190,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); |
| 140600 | | - if( yymsp[-2].minor.yy194==SF_Distinct && yylhsminor.yy190.pExpr ){ |
| 140601 | | - yylhsminor.yy190.pExpr->flags |= EP_Distinct; |
| 140602 | | - } |
| 140603 | | -} |
| 140604 | | - yymsp[-4].minor.yy190 = yylhsminor.yy190; |
| 140605 | | - break; |
| 140606 | | - case 161: /* expr ::= ID|INDEXED LP STAR RP */ |
| 140607 | | -{ |
| 140608 | | - yylhsminor.yy190.pExpr = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0); |
| 140609 | | - spanSet(&yylhsminor.yy190,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); |
| 140610 | | -} |
| 140611 | | - yymsp[-3].minor.yy190 = yylhsminor.yy190; |
| 140612 | | - break; |
| 140613 | | - case 162: /* term ::= CTIME_KW */ |
| 140614 | | -{ |
| 140615 | | - yylhsminor.yy190.pExpr = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0); |
| 140616 | | - spanSet(&yylhsminor.yy190, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0); |
| 140617 | | -} |
| 140618 | | - yymsp[0].minor.yy190 = yylhsminor.yy190; |
| 140619 | | - break; |
| 140620 | | - case 163: /* expr ::= LP nexprlist COMMA expr RP */ |
| 140621 | | -{ |
| 140622 | | - ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy148, yymsp[-1].minor.yy190.pExpr); |
| 140623 | | - yylhsminor.yy190.pExpr = sqlite3PExpr(pParse, TK_VECTOR, 0, 0); |
| 140624 | | - if( yylhsminor.yy190.pExpr ){ |
| 140625 | | - yylhsminor.yy190.pExpr->x.pList = pList; |
| 140626 | | - spanSet(&yylhsminor.yy190, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0); |
| 141029 | + yylhsminor.yy314 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0); |
| 141030 | + if( yymsp[-2].minor.yy4==SF_Distinct && yylhsminor.yy314 ){ |
| 141031 | + yylhsminor.yy314->flags |= EP_Distinct; |
| 141032 | + } |
| 141033 | +} |
| 141034 | + yymsp[-4].minor.yy314 = yylhsminor.yy314; |
| 141035 | + break; |
| 141036 | + case 162: /* expr ::= ID|INDEXED LP STAR RP */ |
| 141037 | +{ |
| 141038 | + yylhsminor.yy314 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0); |
| 141039 | +} |
| 141040 | + yymsp[-3].minor.yy314 = yylhsminor.yy314; |
| 141041 | + break; |
| 141042 | + case 163: /* term ::= CTIME_KW */ |
| 141043 | +{ |
| 141044 | + yylhsminor.yy314 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0); |
| 141045 | +} |
| 141046 | + yymsp[0].minor.yy314 = yylhsminor.yy314; |
| 141047 | + break; |
| 141048 | + case 164: /* expr ::= LP nexprlist COMMA expr RP */ |
| 141049 | +{ |
| 141050 | + ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy322, yymsp[-1].minor.yy314); |
| 141051 | + yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0); |
| 141052 | + if( yymsp[-4].minor.yy314 ){ |
| 141053 | + yymsp[-4].minor.yy314->x.pList = pList; |
| 140627 | 141054 | }else{ |
| 140628 | 141055 | sqlite3ExprListDelete(pParse->db, pList); |
| 140629 | 141056 | } |
| 140630 | 141057 | } |
| 140631 | | - yymsp[-4].minor.yy190 = yylhsminor.yy190; |
| 140632 | | - break; |
| 140633 | | - case 164: /* expr ::= expr AND expr */ |
| 140634 | | - case 165: /* expr ::= expr OR expr */ yytestcase(yyruleno==165); |
| 140635 | | - case 166: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==166); |
| 140636 | | - case 167: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==167); |
| 140637 | | - case 168: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==168); |
| 140638 | | - case 169: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==169); |
| 140639 | | - case 170: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==170); |
| 140640 | | - case 171: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==171); |
| 140641 | | -{spanBinaryExpr(pParse,yymsp[-1].major,&yymsp[-2].minor.yy190,&yymsp[0].minor.yy190);} |
| 140642 | | - break; |
| 140643 | | - case 172: /* likeop ::= NOT LIKE_KW|MATCH */ |
| 141058 | + break; |
| 141059 | + case 165: /* expr ::= expr AND expr */ |
| 141060 | + case 166: /* expr ::= expr OR expr */ yytestcase(yyruleno==166); |
| 141061 | + case 167: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==167); |
| 141062 | + case 168: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==168); |
| 141063 | + case 169: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==169); |
| 141064 | + case 170: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==170); |
| 141065 | + case 171: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==171); |
| 141066 | + case 172: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==172); |
| 141067 | +{yymsp[-2].minor.yy314=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy314,yymsp[0].minor.yy314);} |
| 141068 | + break; |
| 141069 | + case 173: /* likeop ::= NOT LIKE_KW|MATCH */ |
| 140644 | 141070 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/} |
| 140645 | 141071 | break; |
| 140646 | | - case 173: /* expr ::= expr likeop expr */ |
| 141072 | + case 174: /* expr ::= expr likeop expr */ |
| 140647 | 141073 | { |
| 140648 | 141074 | ExprList *pList; |
| 140649 | 141075 | int bNot = yymsp[-1].minor.yy0.n & 0x80000000; |
| 140650 | 141076 | yymsp[-1].minor.yy0.n &= 0x7fffffff; |
| 140651 | | - pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy190.pExpr); |
| 140652 | | - pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy190.pExpr); |
| 140653 | | - yymsp[-2].minor.yy190.pExpr = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0); |
| 140654 | | - exprNot(pParse, bNot, &yymsp[-2].minor.yy190); |
| 140655 | | - yymsp[-2].minor.yy190.zEnd = yymsp[0].minor.yy190.zEnd; |
| 140656 | | - if( yymsp[-2].minor.yy190.pExpr ) yymsp[-2].minor.yy190.pExpr->flags |= EP_InfixFunc; |
| 141077 | + pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy314); |
| 141078 | + pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy314); |
| 141079 | + yymsp[-2].minor.yy314 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0); |
| 141080 | + if( bNot ) yymsp[-2].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy314, 0); |
| 141081 | + if( yymsp[-2].minor.yy314 ) yymsp[-2].minor.yy314->flags |= EP_InfixFunc; |
| 140657 | 141082 | } |
| 140658 | 141083 | break; |
| 140659 | | - case 174: /* expr ::= expr likeop expr ESCAPE expr */ |
| 141084 | + case 175: /* expr ::= expr likeop expr ESCAPE expr */ |
| 140660 | 141085 | { |
| 140661 | 141086 | ExprList *pList; |
| 140662 | 141087 | int bNot = yymsp[-3].minor.yy0.n & 0x80000000; |
| 140663 | 141088 | yymsp[-3].minor.yy0.n &= 0x7fffffff; |
| 140664 | | - pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy190.pExpr); |
| 140665 | | - pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy190.pExpr); |
| 140666 | | - pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy190.pExpr); |
| 140667 | | - yymsp[-4].minor.yy190.pExpr = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0); |
| 140668 | | - exprNot(pParse, bNot, &yymsp[-4].minor.yy190); |
| 140669 | | - yymsp[-4].minor.yy190.zEnd = yymsp[0].minor.yy190.zEnd; |
| 140670 | | - if( yymsp[-4].minor.yy190.pExpr ) yymsp[-4].minor.yy190.pExpr->flags |= EP_InfixFunc; |
| 140671 | | -} |
| 140672 | | - break; |
| 140673 | | - case 175: /* expr ::= expr ISNULL|NOTNULL */ |
| 140674 | | -{spanUnaryPostfix(pParse,yymsp[0].major,&yymsp[-1].minor.yy190,&yymsp[0].minor.yy0);} |
| 140675 | | - break; |
| 140676 | | - case 176: /* expr ::= expr NOT NULL */ |
| 140677 | | -{spanUnaryPostfix(pParse,TK_NOTNULL,&yymsp[-2].minor.yy190,&yymsp[0].minor.yy0);} |
| 140678 | | - break; |
| 140679 | | - case 177: /* expr ::= expr IS expr */ |
| 140680 | | -{ |
| 140681 | | - spanBinaryExpr(pParse,TK_IS,&yymsp[-2].minor.yy190,&yymsp[0].minor.yy190); |
| 140682 | | - binaryToUnaryIfNull(pParse, yymsp[0].minor.yy190.pExpr, yymsp[-2].minor.yy190.pExpr, TK_ISNULL); |
| 140683 | | -} |
| 140684 | | - break; |
| 140685 | | - case 178: /* expr ::= expr IS NOT expr */ |
| 140686 | | -{ |
| 140687 | | - spanBinaryExpr(pParse,TK_ISNOT,&yymsp[-3].minor.yy190,&yymsp[0].minor.yy190); |
| 140688 | | - binaryToUnaryIfNull(pParse, yymsp[0].minor.yy190.pExpr, yymsp[-3].minor.yy190.pExpr, TK_NOTNULL); |
| 140689 | | -} |
| 140690 | | - break; |
| 140691 | | - case 179: /* expr ::= NOT expr */ |
| 140692 | | - case 180: /* expr ::= BITNOT expr */ yytestcase(yyruleno==180); |
| 140693 | | -{spanUnaryPrefix(&yymsp[-1].minor.yy190,pParse,yymsp[-1].major,&yymsp[0].minor.yy190,&yymsp[-1].minor.yy0);/*A-overwrites-B*/} |
| 140694 | | - break; |
| 140695 | | - case 181: /* expr ::= MINUS expr */ |
| 140696 | | -{spanUnaryPrefix(&yymsp[-1].minor.yy190,pParse,TK_UMINUS,&yymsp[0].minor.yy190,&yymsp[-1].minor.yy0);/*A-overwrites-B*/} |
| 140697 | | - break; |
| 140698 | | - case 182: /* expr ::= PLUS expr */ |
| 140699 | | -{spanUnaryPrefix(&yymsp[-1].minor.yy190,pParse,TK_UPLUS,&yymsp[0].minor.yy190,&yymsp[-1].minor.yy0);/*A-overwrites-B*/} |
| 140700 | | - break; |
| 140701 | | - case 183: /* between_op ::= BETWEEN */ |
| 140702 | | - case 186: /* in_op ::= IN */ yytestcase(yyruleno==186); |
| 140703 | | -{yymsp[0].minor.yy194 = 0;} |
| 140704 | | - break; |
| 140705 | | - case 185: /* expr ::= expr between_op expr AND expr */ |
| 140706 | | -{ |
| 140707 | | - ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy190.pExpr); |
| 140708 | | - pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy190.pExpr); |
| 140709 | | - yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy190.pExpr, 0); |
| 140710 | | - if( yymsp[-4].minor.yy190.pExpr ){ |
| 140711 | | - yymsp[-4].minor.yy190.pExpr->x.pList = pList; |
| 141089 | + pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy314); |
| 141090 | + pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy314); |
| 141091 | + pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy314); |
| 141092 | + yymsp[-4].minor.yy314 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0); |
| 141093 | + if( bNot ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); |
| 141094 | + if( yymsp[-4].minor.yy314 ) yymsp[-4].minor.yy314->flags |= EP_InfixFunc; |
| 141095 | +} |
| 141096 | + break; |
| 141097 | + case 176: /* expr ::= expr ISNULL|NOTNULL */ |
| 141098 | +{yymsp[-1].minor.yy314 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy314,0);} |
| 141099 | + break; |
| 141100 | + case 177: /* expr ::= expr NOT NULL */ |
| 141101 | +{yymsp[-2].minor.yy314 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy314,0);} |
| 141102 | + break; |
| 141103 | + case 178: /* expr ::= expr IS expr */ |
| 141104 | +{ |
| 141105 | + yymsp[-2].minor.yy314 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy314,yymsp[0].minor.yy314); |
| 141106 | + binaryToUnaryIfNull(pParse, yymsp[0].minor.yy314, yymsp[-2].minor.yy314, TK_ISNULL); |
| 141107 | +} |
| 141108 | + break; |
| 141109 | + case 179: /* expr ::= expr IS NOT expr */ |
| 141110 | +{ |
| 141111 | + yymsp[-3].minor.yy314 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy314,yymsp[0].minor.yy314); |
| 141112 | + binaryToUnaryIfNull(pParse, yymsp[0].minor.yy314, yymsp[-3].minor.yy314, TK_NOTNULL); |
| 141113 | +} |
| 141114 | + break; |
| 141115 | + case 180: /* expr ::= NOT expr */ |
| 141116 | + case 181: /* expr ::= BITNOT expr */ yytestcase(yyruleno==181); |
| 141117 | +{yymsp[-1].minor.yy314 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy314, 0);/*A-overwrites-B*/} |
| 141118 | + break; |
| 141119 | + case 182: /* expr ::= MINUS expr */ |
| 141120 | +{yymsp[-1].minor.yy314 = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy314, 0);} |
| 141121 | + break; |
| 141122 | + case 183: /* expr ::= PLUS expr */ |
| 141123 | +{yymsp[-1].minor.yy314 = sqlite3PExpr(pParse, TK_UPLUS, yymsp[0].minor.yy314, 0);} |
| 141124 | + break; |
| 141125 | + case 184: /* between_op ::= BETWEEN */ |
| 141126 | + case 187: /* in_op ::= IN */ yytestcase(yyruleno==187); |
| 141127 | +{yymsp[0].minor.yy4 = 0;} |
| 141128 | + break; |
| 141129 | + case 186: /* expr ::= expr between_op expr AND expr */ |
| 141130 | +{ |
| 141131 | + ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy314); |
| 141132 | + pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy314); |
| 141133 | + yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy314, 0); |
| 141134 | + if( yymsp[-4].minor.yy314 ){ |
| 141135 | + yymsp[-4].minor.yy314->x.pList = pList; |
| 140712 | 141136 | }else{ |
| 140713 | 141137 | sqlite3ExprListDelete(pParse->db, pList); |
| 140714 | 141138 | } |
| 140715 | | - exprNot(pParse, yymsp[-3].minor.yy194, &yymsp[-4].minor.yy190); |
| 140716 | | - yymsp[-4].minor.yy190.zEnd = yymsp[0].minor.yy190.zEnd; |
| 141139 | + if( yymsp[-3].minor.yy4 ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); |
| 140717 | 141140 | } |
| 140718 | 141141 | break; |
| 140719 | | - case 188: /* expr ::= expr in_op LP exprlist RP */ |
| 141142 | + case 189: /* expr ::= expr in_op LP exprlist RP */ |
| 140720 | 141143 | { |
| 140721 | | - if( yymsp[-1].minor.yy148==0 ){ |
| 141144 | + if( yymsp[-1].minor.yy322==0 ){ |
| 140722 | 141145 | /* Expressions of the form |
| 140723 | 141146 | ** |
| 140724 | 141147 | ** expr1 IN () |
| 140725 | 141148 | ** expr1 NOT IN () |
| 140726 | 141149 | ** |
| 140727 | 141150 | ** simplify to constants 0 (false) and 1 (true), respectively, |
| 140728 | 141151 | ** regardless of the value of expr1. |
| 140729 | 141152 | */ |
| 140730 | | - sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy190.pExpr); |
| 140731 | | - yymsp[-4].minor.yy190.pExpr = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[yymsp[-3].minor.yy194],1); |
| 140732 | | - }else if( yymsp[-1].minor.yy148->nExpr==1 ){ |
| 141153 | + sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy314); |
| 141154 | + yymsp[-4].minor.yy314 = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[yymsp[-3].minor.yy4],1); |
| 141155 | + }else if( yymsp[-1].minor.yy322->nExpr==1 ){ |
| 140733 | 141156 | /* Expressions of the form: |
| 140734 | 141157 | ** |
| 140735 | 141158 | ** expr1 IN (?1) |
| 140736 | 141159 | ** expr1 NOT IN (?2) |
| 140737 | 141160 | ** |
| | @@ -140744,402 +141167,398 @@ |
| 140744 | 141167 | ** But, the RHS of the == or <> is marked with the EP_Generic flag |
| 140745 | 141168 | ** so that it may not contribute to the computation of comparison |
| 140746 | 141169 | ** affinity or the collating sequence to use for comparison. Otherwise, |
| 140747 | 141170 | ** the semantics would be subtly different from IN or NOT IN. |
| 140748 | 141171 | */ |
| 140749 | | - Expr *pRHS = yymsp[-1].minor.yy148->a[0].pExpr; |
| 140750 | | - yymsp[-1].minor.yy148->a[0].pExpr = 0; |
| 140751 | | - sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy148); |
| 141172 | + Expr *pRHS = yymsp[-1].minor.yy322->a[0].pExpr; |
| 141173 | + yymsp[-1].minor.yy322->a[0].pExpr = 0; |
| 141174 | + sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322); |
| 140752 | 141175 | /* pRHS cannot be NULL because a malloc error would have been detected |
| 140753 | 141176 | ** before now and control would have never reached this point */ |
| 140754 | 141177 | if( ALWAYS(pRHS) ){ |
| 140755 | 141178 | pRHS->flags &= ~EP_Collate; |
| 140756 | 141179 | pRHS->flags |= EP_Generic; |
| 140757 | 141180 | } |
| 140758 | | - yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, yymsp[-3].minor.yy194 ? TK_NE : TK_EQ, yymsp[-4].minor.yy190.pExpr, pRHS); |
| 140759 | | - }else{ |
| 140760 | | - yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy190.pExpr, 0); |
| 140761 | | - if( yymsp[-4].minor.yy190.pExpr ){ |
| 140762 | | - yymsp[-4].minor.yy190.pExpr->x.pList = yymsp[-1].minor.yy148; |
| 140763 | | - sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy190.pExpr); |
| 140764 | | - }else{ |
| 140765 | | - sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy148); |
| 140766 | | - } |
| 140767 | | - exprNot(pParse, yymsp[-3].minor.yy194, &yymsp[-4].minor.yy190); |
| 140768 | | - } |
| 140769 | | - yymsp[-4].minor.yy190.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; |
| 140770 | | - } |
| 140771 | | - break; |
| 140772 | | - case 189: /* expr ::= LP select RP */ |
| 140773 | | -{ |
| 140774 | | - spanSet(&yymsp[-2].minor.yy190,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-B*/ |
| 140775 | | - yymsp[-2].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_SELECT, 0, 0); |
| 140776 | | - sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy190.pExpr, yymsp[-1].minor.yy243); |
| 140777 | | - } |
| 140778 | | - break; |
| 140779 | | - case 190: /* expr ::= expr in_op LP select RP */ |
| 140780 | | -{ |
| 140781 | | - yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy190.pExpr, 0); |
| 140782 | | - sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy190.pExpr, yymsp[-1].minor.yy243); |
| 140783 | | - exprNot(pParse, yymsp[-3].minor.yy194, &yymsp[-4].minor.yy190); |
| 140784 | | - yymsp[-4].minor.yy190.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n]; |
| 140785 | | - } |
| 140786 | | - break; |
| 140787 | | - case 191: /* expr ::= expr in_op nm dbnm paren_exprlist */ |
| 141181 | + yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, yymsp[-3].minor.yy4 ? TK_NE : TK_EQ, yymsp[-4].minor.yy314, pRHS); |
| 141182 | + }else{ |
| 141183 | + yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy314, 0); |
| 141184 | + if( yymsp[-4].minor.yy314 ){ |
| 141185 | + yymsp[-4].minor.yy314->x.pList = yymsp[-1].minor.yy322; |
| 141186 | + sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy314); |
| 141187 | + }else{ |
| 141188 | + sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322); |
| 141189 | + } |
| 141190 | + if( yymsp[-3].minor.yy4 ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); |
| 141191 | + } |
| 141192 | + } |
| 141193 | + break; |
| 141194 | + case 190: /* expr ::= LP select RP */ |
| 141195 | +{ |
| 141196 | + yymsp[-2].minor.yy314 = sqlite3PExpr(pParse, TK_SELECT, 0, 0); |
| 141197 | + sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy314, yymsp[-1].minor.yy387); |
| 141198 | + } |
| 141199 | + break; |
| 141200 | + case 191: /* expr ::= expr in_op LP select RP */ |
| 141201 | +{ |
| 141202 | + yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy314, 0); |
| 141203 | + sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy314, yymsp[-1].minor.yy387); |
| 141204 | + if( yymsp[-3].minor.yy4 ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); |
| 141205 | + } |
| 141206 | + break; |
| 141207 | + case 192: /* expr ::= expr in_op nm dbnm paren_exprlist */ |
| 140788 | 141208 | { |
| 140789 | 141209 | SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); |
| 140790 | 141210 | Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0); |
| 140791 | | - if( yymsp[0].minor.yy148 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy148); |
| 140792 | | - yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy190.pExpr, 0); |
| 140793 | | - sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy190.pExpr, pSelect); |
| 140794 | | - exprNot(pParse, yymsp[-3].minor.yy194, &yymsp[-4].minor.yy190); |
| 140795 | | - yymsp[-4].minor.yy190.zEnd = yymsp[-1].minor.yy0.z ? &yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n] : &yymsp[-2].minor.yy0.z[yymsp[-2].minor.yy0.n]; |
| 141211 | + if( yymsp[0].minor.yy322 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy322); |
| 141212 | + yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy314, 0); |
| 141213 | + sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy314, pSelect); |
| 141214 | + if( yymsp[-3].minor.yy4 ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); |
| 140796 | 141215 | } |
| 140797 | 141216 | break; |
| 140798 | | - case 192: /* expr ::= EXISTS LP select RP */ |
| 141217 | + case 193: /* expr ::= EXISTS LP select RP */ |
| 140799 | 141218 | { |
| 140800 | 141219 | Expr *p; |
| 140801 | | - spanSet(&yymsp[-3].minor.yy190,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-B*/ |
| 140802 | | - p = yymsp[-3].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_EXISTS, 0, 0); |
| 140803 | | - sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy243); |
| 140804 | | - } |
| 140805 | | - break; |
| 140806 | | - case 193: /* expr ::= CASE case_operand case_exprlist case_else END */ |
| 140807 | | -{ |
| 140808 | | - spanSet(&yymsp[-4].minor.yy190,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-C*/ |
| 140809 | | - yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy72, 0); |
| 140810 | | - if( yymsp[-4].minor.yy190.pExpr ){ |
| 140811 | | - yymsp[-4].minor.yy190.pExpr->x.pList = yymsp[-1].minor.yy72 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy148,yymsp[-1].minor.yy72) : yymsp[-2].minor.yy148; |
| 140812 | | - sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy190.pExpr); |
| 140813 | | - }else{ |
| 140814 | | - sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy148); |
| 140815 | | - sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy72); |
| 140816 | | - } |
| 140817 | | -} |
| 140818 | | - break; |
| 140819 | | - case 194: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 140820 | | -{ |
| 140821 | | - yymsp[-4].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy148, yymsp[-2].minor.yy190.pExpr); |
| 140822 | | - yymsp[-4].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy148, yymsp[0].minor.yy190.pExpr); |
| 140823 | | -} |
| 140824 | | - break; |
| 140825 | | - case 195: /* case_exprlist ::= WHEN expr THEN expr */ |
| 140826 | | -{ |
| 140827 | | - yymsp[-3].minor.yy148 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy190.pExpr); |
| 140828 | | - yymsp[-3].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy148, yymsp[0].minor.yy190.pExpr); |
| 140829 | | -} |
| 140830 | | - break; |
| 140831 | | - case 198: /* case_operand ::= expr */ |
| 140832 | | -{yymsp[0].minor.yy72 = yymsp[0].minor.yy190.pExpr; /*A-overwrites-X*/} |
| 140833 | | - break; |
| 140834 | | - case 201: /* nexprlist ::= nexprlist COMMA expr */ |
| 140835 | | -{yymsp[-2].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy148,yymsp[0].minor.yy190.pExpr);} |
| 140836 | | - break; |
| 140837 | | - case 202: /* nexprlist ::= expr */ |
| 140838 | | -{yymsp[0].minor.yy148 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy190.pExpr); /*A-overwrites-Y*/} |
| 140839 | | - break; |
| 140840 | | - case 204: /* paren_exprlist ::= LP exprlist RP */ |
| 140841 | | - case 209: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==209); |
| 140842 | | -{yymsp[-2].minor.yy148 = yymsp[-1].minor.yy148;} |
| 140843 | | - break; |
| 140844 | | - case 205: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 141220 | + p = yymsp[-3].minor.yy314 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0); |
| 141221 | + sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy387); |
| 141222 | + } |
| 141223 | + break; |
| 141224 | + case 194: /* expr ::= CASE case_operand case_exprlist case_else END */ |
| 141225 | +{ |
| 141226 | + yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy314, 0); |
| 141227 | + if( yymsp[-4].minor.yy314 ){ |
| 141228 | + yymsp[-4].minor.yy314->x.pList = yymsp[-1].minor.yy314 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[-1].minor.yy314) : yymsp[-2].minor.yy322; |
| 141229 | + sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy314); |
| 141230 | + }else{ |
| 141231 | + sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy322); |
| 141232 | + sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy314); |
| 141233 | + } |
| 141234 | +} |
| 141235 | + break; |
| 141236 | + case 195: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 141237 | +{ |
| 141238 | + yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[-2].minor.yy314); |
| 141239 | + yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[0].minor.yy314); |
| 141240 | +} |
| 141241 | + break; |
| 141242 | + case 196: /* case_exprlist ::= WHEN expr THEN expr */ |
| 141243 | +{ |
| 141244 | + yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy314); |
| 141245 | + yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322, yymsp[0].minor.yy314); |
| 141246 | +} |
| 141247 | + break; |
| 141248 | + case 199: /* case_operand ::= expr */ |
| 141249 | +{yymsp[0].minor.yy314 = yymsp[0].minor.yy314; /*A-overwrites-X*/} |
| 141250 | + break; |
| 141251 | + case 202: /* nexprlist ::= nexprlist COMMA expr */ |
| 141252 | +{yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[0].minor.yy314);} |
| 141253 | + break; |
| 141254 | + case 203: /* nexprlist ::= expr */ |
| 141255 | +{yymsp[0].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy314); /*A-overwrites-Y*/} |
| 141256 | + break; |
| 141257 | + case 205: /* paren_exprlist ::= LP exprlist RP */ |
| 141258 | + case 210: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==210); |
| 141259 | +{yymsp[-2].minor.yy322 = yymsp[-1].minor.yy322;} |
| 141260 | + break; |
| 141261 | + case 206: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 140845 | 141262 | { |
| 140846 | 141263 | sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, |
| 140847 | | - sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy148, yymsp[-10].minor.yy194, |
| 140848 | | - &yymsp[-11].minor.yy0, yymsp[0].minor.yy72, SQLITE_SO_ASC, yymsp[-8].minor.yy194, SQLITE_IDXTYPE_APPDEF); |
| 140849 | | -} |
| 140850 | | - break; |
| 140851 | | - case 206: /* uniqueflag ::= UNIQUE */ |
| 140852 | | - case 246: /* raisetype ::= ABORT */ yytestcase(yyruleno==246); |
| 140853 | | -{yymsp[0].minor.yy194 = OE_Abort;} |
| 140854 | | - break; |
| 140855 | | - case 207: /* uniqueflag ::= */ |
| 140856 | | -{yymsp[1].minor.yy194 = OE_None;} |
| 140857 | | - break; |
| 140858 | | - case 210: /* eidlist ::= eidlist COMMA nm collate sortorder */ |
| 140859 | | -{ |
| 140860 | | - yymsp[-4].minor.yy148 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy148, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy194, yymsp[0].minor.yy194); |
| 140861 | | -} |
| 140862 | | - break; |
| 140863 | | - case 211: /* eidlist ::= nm collate sortorder */ |
| 140864 | | -{ |
| 140865 | | - yymsp[-2].minor.yy148 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy194, yymsp[0].minor.yy194); /*A-overwrites-Y*/ |
| 140866 | | -} |
| 140867 | | - break; |
| 140868 | | - case 214: /* cmd ::= DROP INDEX ifexists fullname */ |
| 140869 | | -{sqlite3DropIndex(pParse, yymsp[0].minor.yy185, yymsp[-1].minor.yy194);} |
| 140870 | | - break; |
| 140871 | | - case 215: /* cmd ::= VACUUM */ |
| 141264 | + sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy322, yymsp[-10].minor.yy4, |
| 141265 | + &yymsp[-11].minor.yy0, yymsp[0].minor.yy314, SQLITE_SO_ASC, yymsp[-8].minor.yy4, SQLITE_IDXTYPE_APPDEF); |
| 141266 | +} |
| 141267 | + break; |
| 141268 | + case 207: /* uniqueflag ::= UNIQUE */ |
| 141269 | + case 247: /* raisetype ::= ABORT */ yytestcase(yyruleno==247); |
| 141270 | +{yymsp[0].minor.yy4 = OE_Abort;} |
| 141271 | + break; |
| 141272 | + case 208: /* uniqueflag ::= */ |
| 141273 | +{yymsp[1].minor.yy4 = OE_None;} |
| 141274 | + break; |
| 141275 | + case 211: /* eidlist ::= eidlist COMMA nm collate sortorder */ |
| 141276 | +{ |
| 141277 | + yymsp[-4].minor.yy322 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy4, yymsp[0].minor.yy4); |
| 141278 | +} |
| 141279 | + break; |
| 141280 | + case 212: /* eidlist ::= nm collate sortorder */ |
| 141281 | +{ |
| 141282 | + yymsp[-2].minor.yy322 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy4, yymsp[0].minor.yy4); /*A-overwrites-Y*/ |
| 141283 | +} |
| 141284 | + break; |
| 141285 | + case 215: /* cmd ::= DROP INDEX ifexists fullname */ |
| 141286 | +{sqlite3DropIndex(pParse, yymsp[0].minor.yy259, yymsp[-1].minor.yy4);} |
| 141287 | + break; |
| 141288 | + case 216: /* cmd ::= VACUUM */ |
| 140872 | 141289 | {sqlite3Vacuum(pParse,0);} |
| 140873 | 141290 | break; |
| 140874 | | - case 216: /* cmd ::= VACUUM nm */ |
| 141291 | + case 217: /* cmd ::= VACUUM nm */ |
| 140875 | 141292 | {sqlite3Vacuum(pParse,&yymsp[0].minor.yy0);} |
| 140876 | 141293 | break; |
| 140877 | | - case 217: /* cmd ::= PRAGMA nm dbnm */ |
| 141294 | + case 218: /* cmd ::= PRAGMA nm dbnm */ |
| 140878 | 141295 | {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);} |
| 140879 | 141296 | break; |
| 140880 | | - case 218: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 141297 | + case 219: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 140881 | 141298 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);} |
| 140882 | 141299 | break; |
| 140883 | | - case 219: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 141300 | + case 220: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 140884 | 141301 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);} |
| 140885 | 141302 | break; |
| 140886 | | - case 220: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 141303 | + case 221: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 140887 | 141304 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);} |
| 140888 | 141305 | break; |
| 140889 | | - case 221: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 141306 | + case 222: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 140890 | 141307 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);} |
| 140891 | 141308 | break; |
| 140892 | | - case 224: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 141309 | + case 225: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 140893 | 141310 | { |
| 140894 | 141311 | Token all; |
| 140895 | 141312 | all.z = yymsp[-3].minor.yy0.z; |
| 140896 | 141313 | all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n; |
| 140897 | | - sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy145, &all); |
| 141314 | + sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy203, &all); |
| 140898 | 141315 | } |
| 140899 | 141316 | break; |
| 140900 | | - case 225: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 141317 | + case 226: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 140901 | 141318 | { |
| 140902 | | - sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy194, yymsp[-4].minor.yy332.a, yymsp[-4].minor.yy332.b, yymsp[-2].minor.yy185, yymsp[0].minor.yy72, yymsp[-10].minor.yy194, yymsp[-8].minor.yy194); |
| 141319 | + sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy4, yymsp[-4].minor.yy90.a, yymsp[-4].minor.yy90.b, yymsp[-2].minor.yy259, yymsp[0].minor.yy314, yymsp[-10].minor.yy4, yymsp[-8].minor.yy4); |
| 140903 | 141320 | yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/ |
| 140904 | 141321 | } |
| 140905 | 141322 | break; |
| 140906 | | - case 226: /* trigger_time ::= BEFORE|AFTER */ |
| 140907 | | -{ yymsp[0].minor.yy194 = yymsp[0].major; /*A-overwrites-X*/ } |
| 140908 | | - break; |
| 140909 | | - case 227: /* trigger_time ::= INSTEAD OF */ |
| 140910 | | -{ yymsp[-1].minor.yy194 = TK_INSTEAD;} |
| 140911 | | - break; |
| 140912 | | - case 228: /* trigger_time ::= */ |
| 140913 | | -{ yymsp[1].minor.yy194 = TK_BEFORE; } |
| 140914 | | - break; |
| 140915 | | - case 229: /* trigger_event ::= DELETE|INSERT */ |
| 140916 | | - case 230: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==230); |
| 140917 | | -{yymsp[0].minor.yy332.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy332.b = 0;} |
| 140918 | | - break; |
| 140919 | | - case 231: /* trigger_event ::= UPDATE OF idlist */ |
| 140920 | | -{yymsp[-2].minor.yy332.a = TK_UPDATE; yymsp[-2].minor.yy332.b = yymsp[0].minor.yy254;} |
| 140921 | | - break; |
| 140922 | | - case 232: /* when_clause ::= */ |
| 140923 | | - case 251: /* key_opt ::= */ yytestcase(yyruleno==251); |
| 140924 | | -{ yymsp[1].minor.yy72 = 0; } |
| 140925 | | - break; |
| 140926 | | - case 233: /* when_clause ::= WHEN expr */ |
| 140927 | | - case 252: /* key_opt ::= KEY expr */ yytestcase(yyruleno==252); |
| 140928 | | -{ yymsp[-1].minor.yy72 = yymsp[0].minor.yy190.pExpr; } |
| 140929 | | - break; |
| 140930 | | - case 234: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 140931 | | -{ |
| 140932 | | - assert( yymsp[-2].minor.yy145!=0 ); |
| 140933 | | - yymsp[-2].minor.yy145->pLast->pNext = yymsp[-1].minor.yy145; |
| 140934 | | - yymsp[-2].minor.yy145->pLast = yymsp[-1].minor.yy145; |
| 140935 | | -} |
| 140936 | | - break; |
| 140937 | | - case 235: /* trigger_cmd_list ::= trigger_cmd SEMI */ |
| 140938 | | -{ |
| 140939 | | - assert( yymsp[-1].minor.yy145!=0 ); |
| 140940 | | - yymsp[-1].minor.yy145->pLast = yymsp[-1].minor.yy145; |
| 140941 | | -} |
| 140942 | | - break; |
| 140943 | | - case 236: /* trnm ::= nm DOT nm */ |
| 141323 | + case 227: /* trigger_time ::= BEFORE|AFTER */ |
| 141324 | +{ yymsp[0].minor.yy4 = yymsp[0].major; /*A-overwrites-X*/ } |
| 141325 | + break; |
| 141326 | + case 228: /* trigger_time ::= INSTEAD OF */ |
| 141327 | +{ yymsp[-1].minor.yy4 = TK_INSTEAD;} |
| 141328 | + break; |
| 141329 | + case 229: /* trigger_time ::= */ |
| 141330 | +{ yymsp[1].minor.yy4 = TK_BEFORE; } |
| 141331 | + break; |
| 141332 | + case 230: /* trigger_event ::= DELETE|INSERT */ |
| 141333 | + case 231: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==231); |
| 141334 | +{yymsp[0].minor.yy90.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy90.b = 0;} |
| 141335 | + break; |
| 141336 | + case 232: /* trigger_event ::= UPDATE OF idlist */ |
| 141337 | +{yymsp[-2].minor.yy90.a = TK_UPDATE; yymsp[-2].minor.yy90.b = yymsp[0].minor.yy384;} |
| 141338 | + break; |
| 141339 | + case 233: /* when_clause ::= */ |
| 141340 | + case 252: /* key_opt ::= */ yytestcase(yyruleno==252); |
| 141341 | +{ yymsp[1].minor.yy314 = 0; } |
| 141342 | + break; |
| 141343 | + case 234: /* when_clause ::= WHEN expr */ |
| 141344 | + case 253: /* key_opt ::= KEY expr */ yytestcase(yyruleno==253); |
| 141345 | +{ yymsp[-1].minor.yy314 = yymsp[0].minor.yy314; } |
| 141346 | + break; |
| 141347 | + case 235: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 141348 | +{ |
| 141349 | + assert( yymsp[-2].minor.yy203!=0 ); |
| 141350 | + yymsp[-2].minor.yy203->pLast->pNext = yymsp[-1].minor.yy203; |
| 141351 | + yymsp[-2].minor.yy203->pLast = yymsp[-1].minor.yy203; |
| 141352 | +} |
| 141353 | + break; |
| 141354 | + case 236: /* trigger_cmd_list ::= trigger_cmd SEMI */ |
| 141355 | +{ |
| 141356 | + assert( yymsp[-1].minor.yy203!=0 ); |
| 141357 | + yymsp[-1].minor.yy203->pLast = yymsp[-1].minor.yy203; |
| 141358 | +} |
| 141359 | + break; |
| 141360 | + case 237: /* trnm ::= nm DOT nm */ |
| 140944 | 141361 | { |
| 140945 | 141362 | yymsp[-2].minor.yy0 = yymsp[0].minor.yy0; |
| 140946 | 141363 | sqlite3ErrorMsg(pParse, |
| 140947 | 141364 | "qualified table names are not allowed on INSERT, UPDATE, and DELETE " |
| 140948 | 141365 | "statements within triggers"); |
| 140949 | 141366 | } |
| 140950 | 141367 | break; |
| 140951 | | - case 237: /* tridxby ::= INDEXED BY nm */ |
| 141368 | + case 238: /* tridxby ::= INDEXED BY nm */ |
| 140952 | 141369 | { |
| 140953 | 141370 | sqlite3ErrorMsg(pParse, |
| 140954 | 141371 | "the INDEXED BY clause is not allowed on UPDATE or DELETE statements " |
| 140955 | 141372 | "within triggers"); |
| 140956 | 141373 | } |
| 140957 | 141374 | break; |
| 140958 | | - case 238: /* tridxby ::= NOT INDEXED */ |
| 141375 | + case 239: /* tridxby ::= NOT INDEXED */ |
| 140959 | 141376 | { |
| 140960 | 141377 | sqlite3ErrorMsg(pParse, |
| 140961 | 141378 | "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements " |
| 140962 | 141379 | "within triggers"); |
| 140963 | 141380 | } |
| 140964 | 141381 | break; |
| 140965 | | - case 239: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt */ |
| 140966 | | -{yymsp[-6].minor.yy145 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-4].minor.yy0, yymsp[-1].minor.yy148, yymsp[0].minor.yy72, yymsp[-5].minor.yy194);} |
| 140967 | | - break; |
| 140968 | | - case 240: /* trigger_cmd ::= insert_cmd INTO trnm idlist_opt select */ |
| 140969 | | -{yymsp[-4].minor.yy145 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy254, yymsp[0].minor.yy243, yymsp[-4].minor.yy194);/*A-overwrites-R*/} |
| 140970 | | - break; |
| 140971 | | - case 241: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt */ |
| 140972 | | -{yymsp[-4].minor.yy145 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[0].minor.yy72);} |
| 140973 | | - break; |
| 140974 | | - case 242: /* trigger_cmd ::= select */ |
| 140975 | | -{yymsp[0].minor.yy145 = sqlite3TriggerSelectStep(pParse->db, yymsp[0].minor.yy243); /*A-overwrites-X*/} |
| 140976 | | - break; |
| 140977 | | - case 243: /* expr ::= RAISE LP IGNORE RP */ |
| 140978 | | -{ |
| 140979 | | - spanSet(&yymsp[-3].minor.yy190,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/ |
| 140980 | | - yymsp[-3].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0); |
| 140981 | | - if( yymsp[-3].minor.yy190.pExpr ){ |
| 140982 | | - yymsp[-3].minor.yy190.pExpr->affinity = OE_Ignore; |
| 140983 | | - } |
| 140984 | | -} |
| 140985 | | - break; |
| 140986 | | - case 244: /* expr ::= RAISE LP raisetype COMMA nm RP */ |
| 140987 | | -{ |
| 140988 | | - spanSet(&yymsp[-5].minor.yy190,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/ |
| 140989 | | - yymsp[-5].minor.yy190.pExpr = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1); |
| 140990 | | - if( yymsp[-5].minor.yy190.pExpr ) { |
| 140991 | | - yymsp[-5].minor.yy190.pExpr->affinity = (char)yymsp[-3].minor.yy194; |
| 140992 | | - } |
| 140993 | | -} |
| 140994 | | - break; |
| 140995 | | - case 245: /* raisetype ::= ROLLBACK */ |
| 140996 | | -{yymsp[0].minor.yy194 = OE_Rollback;} |
| 140997 | | - break; |
| 140998 | | - case 247: /* raisetype ::= FAIL */ |
| 140999 | | -{yymsp[0].minor.yy194 = OE_Fail;} |
| 141000 | | - break; |
| 141001 | | - case 248: /* cmd ::= DROP TRIGGER ifexists fullname */ |
| 141002 | | -{ |
| 141003 | | - sqlite3DropTrigger(pParse,yymsp[0].minor.yy185,yymsp[-1].minor.yy194); |
| 141004 | | -} |
| 141005 | | - break; |
| 141006 | | - case 249: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 141007 | | -{ |
| 141008 | | - sqlite3Attach(pParse, yymsp[-3].minor.yy190.pExpr, yymsp[-1].minor.yy190.pExpr, yymsp[0].minor.yy72); |
| 141009 | | -} |
| 141010 | | - break; |
| 141011 | | - case 250: /* cmd ::= DETACH database_kw_opt expr */ |
| 141012 | | -{ |
| 141013 | | - sqlite3Detach(pParse, yymsp[0].minor.yy190.pExpr); |
| 141014 | | -} |
| 141015 | | - break; |
| 141016 | | - case 253: /* cmd ::= REINDEX */ |
| 141382 | + case 240: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */ |
| 141383 | +{yylhsminor.yy203 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-5].minor.yy0, yymsp[-2].minor.yy322, yymsp[-1].minor.yy314, yymsp[-6].minor.yy4, yymsp[-7].minor.yy0.z, yymsp[0].minor.yy336);} |
| 141384 | + yymsp[-7].minor.yy203 = yylhsminor.yy203; |
| 141385 | + break; |
| 141386 | + case 241: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select scanpt */ |
| 141387 | +{yylhsminor.yy203 = sqlite3TriggerInsertStep(pParse->db,&yymsp[-3].minor.yy0,yymsp[-2].minor.yy384,yymsp[-1].minor.yy387,yymsp[-5].minor.yy4,yymsp[-6].minor.yy336,yymsp[0].minor.yy336);/*yylhsminor.yy203-overwrites-yymsp[-5].minor.yy4*/} |
| 141388 | + yymsp[-6].minor.yy203 = yylhsminor.yy203; |
| 141389 | + break; |
| 141390 | + case 242: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ |
| 141391 | +{yylhsminor.yy203 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy314, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy336);} |
| 141392 | + yymsp[-5].minor.yy203 = yylhsminor.yy203; |
| 141393 | + break; |
| 141394 | + case 243: /* trigger_cmd ::= scanpt select scanpt */ |
| 141395 | +{yylhsminor.yy203 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy387, yymsp[-2].minor.yy336, yymsp[0].minor.yy336); /*yylhsminor.yy203-overwrites-yymsp[-1].minor.yy387*/} |
| 141396 | + yymsp[-2].minor.yy203 = yylhsminor.yy203; |
| 141397 | + break; |
| 141398 | + case 244: /* expr ::= RAISE LP IGNORE RP */ |
| 141399 | +{ |
| 141400 | + yymsp[-3].minor.yy314 = sqlite3PExpr(pParse, TK_RAISE, 0, 0); |
| 141401 | + if( yymsp[-3].minor.yy314 ){ |
| 141402 | + yymsp[-3].minor.yy314->affinity = OE_Ignore; |
| 141403 | + } |
| 141404 | +} |
| 141405 | + break; |
| 141406 | + case 245: /* expr ::= RAISE LP raisetype COMMA nm RP */ |
| 141407 | +{ |
| 141408 | + yymsp[-5].minor.yy314 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1); |
| 141409 | + if( yymsp[-5].minor.yy314 ) { |
| 141410 | + yymsp[-5].minor.yy314->affinity = (char)yymsp[-3].minor.yy4; |
| 141411 | + } |
| 141412 | +} |
| 141413 | + break; |
| 141414 | + case 246: /* raisetype ::= ROLLBACK */ |
| 141415 | +{yymsp[0].minor.yy4 = OE_Rollback;} |
| 141416 | + break; |
| 141417 | + case 248: /* raisetype ::= FAIL */ |
| 141418 | +{yymsp[0].minor.yy4 = OE_Fail;} |
| 141419 | + break; |
| 141420 | + case 249: /* cmd ::= DROP TRIGGER ifexists fullname */ |
| 141421 | +{ |
| 141422 | + sqlite3DropTrigger(pParse,yymsp[0].minor.yy259,yymsp[-1].minor.yy4); |
| 141423 | +} |
| 141424 | + break; |
| 141425 | + case 250: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 141426 | +{ |
| 141427 | + sqlite3Attach(pParse, yymsp[-3].minor.yy314, yymsp[-1].minor.yy314, yymsp[0].minor.yy314); |
| 141428 | +} |
| 141429 | + break; |
| 141430 | + case 251: /* cmd ::= DETACH database_kw_opt expr */ |
| 141431 | +{ |
| 141432 | + sqlite3Detach(pParse, yymsp[0].minor.yy314); |
| 141433 | +} |
| 141434 | + break; |
| 141435 | + case 254: /* cmd ::= REINDEX */ |
| 141017 | 141436 | {sqlite3Reindex(pParse, 0, 0);} |
| 141018 | 141437 | break; |
| 141019 | | - case 254: /* cmd ::= REINDEX nm dbnm */ |
| 141438 | + case 255: /* cmd ::= REINDEX nm dbnm */ |
| 141020 | 141439 | {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} |
| 141021 | 141440 | break; |
| 141022 | | - case 255: /* cmd ::= ANALYZE */ |
| 141441 | + case 256: /* cmd ::= ANALYZE */ |
| 141023 | 141442 | {sqlite3Analyze(pParse, 0, 0);} |
| 141024 | 141443 | break; |
| 141025 | | - case 256: /* cmd ::= ANALYZE nm dbnm */ |
| 141444 | + case 257: /* cmd ::= ANALYZE nm dbnm */ |
| 141026 | 141445 | {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} |
| 141027 | 141446 | break; |
| 141028 | | - case 257: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 141447 | + case 258: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 141029 | 141448 | { |
| 141030 | | - sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy185,&yymsp[0].minor.yy0); |
| 141449 | + sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy259,&yymsp[0].minor.yy0); |
| 141031 | 141450 | } |
| 141032 | 141451 | break; |
| 141033 | | - case 258: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 141452 | + case 259: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 141034 | 141453 | { |
| 141035 | 141454 | yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n; |
| 141036 | 141455 | sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0); |
| 141037 | 141456 | } |
| 141038 | 141457 | break; |
| 141039 | | - case 259: /* add_column_fullname ::= fullname */ |
| 141458 | + case 260: /* add_column_fullname ::= fullname */ |
| 141040 | 141459 | { |
| 141041 | 141460 | disableLookaside(pParse); |
| 141042 | | - sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy185); |
| 141461 | + sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy259); |
| 141043 | 141462 | } |
| 141044 | 141463 | break; |
| 141045 | | - case 260: /* cmd ::= create_vtab */ |
| 141464 | + case 261: /* cmd ::= create_vtab */ |
| 141046 | 141465 | {sqlite3VtabFinishParse(pParse,0);} |
| 141047 | 141466 | break; |
| 141048 | | - case 261: /* cmd ::= create_vtab LP vtabarglist RP */ |
| 141467 | + case 262: /* cmd ::= create_vtab LP vtabarglist RP */ |
| 141049 | 141468 | {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} |
| 141050 | 141469 | break; |
| 141051 | | - case 262: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 141470 | + case 263: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 141052 | 141471 | { |
| 141053 | | - sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy194); |
| 141472 | + sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy4); |
| 141054 | 141473 | } |
| 141055 | 141474 | break; |
| 141056 | | - case 263: /* vtabarg ::= */ |
| 141475 | + case 264: /* vtabarg ::= */ |
| 141057 | 141476 | {sqlite3VtabArgInit(pParse);} |
| 141058 | 141477 | break; |
| 141059 | | - case 264: /* vtabargtoken ::= ANY */ |
| 141060 | | - case 265: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==265); |
| 141061 | | - case 266: /* lp ::= LP */ yytestcase(yyruleno==266); |
| 141478 | + case 265: /* vtabargtoken ::= ANY */ |
| 141479 | + case 266: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==266); |
| 141480 | + case 267: /* lp ::= LP */ yytestcase(yyruleno==267); |
| 141062 | 141481 | {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);} |
| 141063 | 141482 | break; |
| 141064 | | - case 267: /* with ::= */ |
| 141065 | | -{yymsp[1].minor.yy285 = 0;} |
| 141066 | | - break; |
| 141067 | | - case 268: /* with ::= WITH wqlist */ |
| 141068 | | -{ yymsp[-1].minor.yy285 = yymsp[0].minor.yy285; } |
| 141069 | | - break; |
| 141070 | | - case 269: /* with ::= WITH RECURSIVE wqlist */ |
| 141071 | | -{ yymsp[-2].minor.yy285 = yymsp[0].minor.yy285; } |
| 141072 | | - break; |
| 141073 | | - case 270: /* wqlist ::= nm eidlist_opt AS LP select RP */ |
| 141074 | | -{ |
| 141075 | | - yymsp[-5].minor.yy285 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy148, yymsp[-1].minor.yy243); /*A-overwrites-X*/ |
| 141076 | | -} |
| 141077 | | - break; |
| 141078 | | - case 271: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */ |
| 141079 | | -{ |
| 141080 | | - yymsp[-7].minor.yy285 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy285, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy148, yymsp[-1].minor.yy243); |
| 141483 | + case 268: /* with ::= */ |
| 141484 | +{yymsp[1].minor.yy451 = 0;} |
| 141485 | + break; |
| 141486 | + case 269: /* with ::= WITH wqlist */ |
| 141487 | +{ yymsp[-1].minor.yy451 = yymsp[0].minor.yy451; } |
| 141488 | + break; |
| 141489 | + case 270: /* with ::= WITH RECURSIVE wqlist */ |
| 141490 | +{ yymsp[-2].minor.yy451 = yymsp[0].minor.yy451; } |
| 141491 | + break; |
| 141492 | + case 271: /* wqlist ::= nm eidlist_opt AS LP select RP */ |
| 141493 | +{ |
| 141494 | + yymsp[-5].minor.yy451 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy387); /*A-overwrites-X*/ |
| 141495 | +} |
| 141496 | + break; |
| 141497 | + case 272: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */ |
| 141498 | +{ |
| 141499 | + yymsp[-7].minor.yy451 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy451, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy387); |
| 141081 | 141500 | } |
| 141082 | 141501 | break; |
| 141083 | 141502 | default: |
| 141084 | | - /* (272) input ::= cmdlist */ yytestcase(yyruleno==272); |
| 141085 | | - /* (273) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==273); |
| 141086 | | - /* (274) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=274); |
| 141087 | | - /* (275) ecmd ::= SEMI */ yytestcase(yyruleno==275); |
| 141088 | | - /* (276) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==276); |
| 141089 | | - /* (277) explain ::= */ yytestcase(yyruleno==277); |
| 141090 | | - /* (278) trans_opt ::= */ yytestcase(yyruleno==278); |
| 141091 | | - /* (279) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==279); |
| 141092 | | - /* (280) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==280); |
| 141093 | | - /* (281) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==281); |
| 141094 | | - /* (282) savepoint_opt ::= */ yytestcase(yyruleno==282); |
| 141095 | | - /* (283) cmd ::= create_table create_table_args */ yytestcase(yyruleno==283); |
| 141096 | | - /* (284) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==284); |
| 141097 | | - /* (285) columnlist ::= columnname carglist */ yytestcase(yyruleno==285); |
| 141098 | | - /* (286) nm ::= ID|INDEXED */ yytestcase(yyruleno==286); |
| 141099 | | - /* (287) nm ::= STRING */ yytestcase(yyruleno==287); |
| 141100 | | - /* (288) nm ::= JOIN_KW */ yytestcase(yyruleno==288); |
| 141101 | | - /* (289) typetoken ::= typename */ yytestcase(yyruleno==289); |
| 141102 | | - /* (290) typename ::= ID|STRING */ yytestcase(yyruleno==290); |
| 141103 | | - /* (291) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=291); |
| 141104 | | - /* (292) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=292); |
| 141105 | | - /* (293) carglist ::= carglist ccons */ yytestcase(yyruleno==293); |
| 141106 | | - /* (294) carglist ::= */ yytestcase(yyruleno==294); |
| 141107 | | - /* (295) ccons ::= NULL onconf */ yytestcase(yyruleno==295); |
| 141108 | | - /* (296) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==296); |
| 141109 | | - /* (297) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==297); |
| 141110 | | - /* (298) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=298); |
| 141111 | | - /* (299) tconscomma ::= */ yytestcase(yyruleno==299); |
| 141112 | | - /* (300) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=300); |
| 141113 | | - /* (301) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=301); |
| 141114 | | - /* (302) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=302); |
| 141115 | | - /* (303) oneselect ::= values */ yytestcase(yyruleno==303); |
| 141116 | | - /* (304) sclp ::= selcollist COMMA */ yytestcase(yyruleno==304); |
| 141117 | | - /* (305) as ::= ID|STRING */ yytestcase(yyruleno==305); |
| 141118 | | - /* (306) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=306); |
| 141119 | | - /* (307) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==307); |
| 141120 | | - /* (308) exprlist ::= nexprlist */ yytestcase(yyruleno==308); |
| 141121 | | - /* (309) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=309); |
| 141122 | | - /* (310) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=310); |
| 141123 | | - /* (311) nmnum ::= ON */ yytestcase(yyruleno==311); |
| 141124 | | - /* (312) nmnum ::= DELETE */ yytestcase(yyruleno==312); |
| 141125 | | - /* (313) nmnum ::= DEFAULT */ yytestcase(yyruleno==313); |
| 141126 | | - /* (314) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==314); |
| 141127 | | - /* (315) foreach_clause ::= */ yytestcase(yyruleno==315); |
| 141128 | | - /* (316) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==316); |
| 141129 | | - /* (317) trnm ::= nm */ yytestcase(yyruleno==317); |
| 141130 | | - /* (318) tridxby ::= */ yytestcase(yyruleno==318); |
| 141131 | | - /* (319) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==319); |
| 141132 | | - /* (320) database_kw_opt ::= */ yytestcase(yyruleno==320); |
| 141133 | | - /* (321) kwcolumn_opt ::= */ yytestcase(yyruleno==321); |
| 141134 | | - /* (322) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==322); |
| 141135 | | - /* (323) vtabarglist ::= vtabarg */ yytestcase(yyruleno==323); |
| 141136 | | - /* (324) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==324); |
| 141137 | | - /* (325) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==325); |
| 141138 | | - /* (326) anylist ::= */ yytestcase(yyruleno==326); |
| 141139 | | - /* (327) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==327); |
| 141140 | | - /* (328) anylist ::= anylist ANY */ yytestcase(yyruleno==328); |
| 141503 | + /* (273) input ::= cmdlist */ yytestcase(yyruleno==273); |
| 141504 | + /* (274) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==274); |
| 141505 | + /* (275) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=275); |
| 141506 | + /* (276) ecmd ::= SEMI */ yytestcase(yyruleno==276); |
| 141507 | + /* (277) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==277); |
| 141508 | + /* (278) explain ::= */ yytestcase(yyruleno==278); |
| 141509 | + /* (279) trans_opt ::= */ yytestcase(yyruleno==279); |
| 141510 | + /* (280) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==280); |
| 141511 | + /* (281) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==281); |
| 141512 | + /* (282) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==282); |
| 141513 | + /* (283) savepoint_opt ::= */ yytestcase(yyruleno==283); |
| 141514 | + /* (284) cmd ::= create_table create_table_args */ yytestcase(yyruleno==284); |
| 141515 | + /* (285) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==285); |
| 141516 | + /* (286) columnlist ::= columnname carglist */ yytestcase(yyruleno==286); |
| 141517 | + /* (287) nm ::= ID|INDEXED */ yytestcase(yyruleno==287); |
| 141518 | + /* (288) nm ::= STRING */ yytestcase(yyruleno==288); |
| 141519 | + /* (289) nm ::= JOIN_KW */ yytestcase(yyruleno==289); |
| 141520 | + /* (290) typetoken ::= typename */ yytestcase(yyruleno==290); |
| 141521 | + /* (291) typename ::= ID|STRING */ yytestcase(yyruleno==291); |
| 141522 | + /* (292) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=292); |
| 141523 | + /* (293) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=293); |
| 141524 | + /* (294) carglist ::= carglist ccons */ yytestcase(yyruleno==294); |
| 141525 | + /* (295) carglist ::= */ yytestcase(yyruleno==295); |
| 141526 | + /* (296) ccons ::= NULL onconf */ yytestcase(yyruleno==296); |
| 141527 | + /* (297) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==297); |
| 141528 | + /* (298) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==298); |
| 141529 | + /* (299) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=299); |
| 141530 | + /* (300) tconscomma ::= */ yytestcase(yyruleno==300); |
| 141531 | + /* (301) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=301); |
| 141532 | + /* (302) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=302); |
| 141533 | + /* (303) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=303); |
| 141534 | + /* (304) oneselect ::= values */ yytestcase(yyruleno==304); |
| 141535 | + /* (305) sclp ::= selcollist COMMA */ yytestcase(yyruleno==305); |
| 141536 | + /* (306) as ::= ID|STRING */ yytestcase(yyruleno==306); |
| 141537 | + /* (307) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=307); |
| 141538 | + /* (308) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==308); |
| 141539 | + /* (309) exprlist ::= nexprlist */ yytestcase(yyruleno==309); |
| 141540 | + /* (310) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=310); |
| 141541 | + /* (311) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=311); |
| 141542 | + /* (312) nmnum ::= ON */ yytestcase(yyruleno==312); |
| 141543 | + /* (313) nmnum ::= DELETE */ yytestcase(yyruleno==313); |
| 141544 | + /* (314) nmnum ::= DEFAULT */ yytestcase(yyruleno==314); |
| 141545 | + /* (315) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==315); |
| 141546 | + /* (316) foreach_clause ::= */ yytestcase(yyruleno==316); |
| 141547 | + /* (317) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==317); |
| 141548 | + /* (318) trnm ::= nm */ yytestcase(yyruleno==318); |
| 141549 | + /* (319) tridxby ::= */ yytestcase(yyruleno==319); |
| 141550 | + /* (320) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==320); |
| 141551 | + /* (321) database_kw_opt ::= */ yytestcase(yyruleno==321); |
| 141552 | + /* (322) kwcolumn_opt ::= */ yytestcase(yyruleno==322); |
| 141553 | + /* (323) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==323); |
| 141554 | + /* (324) vtabarglist ::= vtabarg */ yytestcase(yyruleno==324); |
| 141555 | + /* (325) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==325); |
| 141556 | + /* (326) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==326); |
| 141557 | + /* (327) anylist ::= */ yytestcase(yyruleno==327); |
| 141558 | + /* (328) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==328); |
| 141559 | + /* (329) anylist ::= anylist ANY */ yytestcase(yyruleno==329); |
| 141141 | 141560 | break; |
| 141142 | 141561 | /********** End reduce actions ************************************************/ |
| 141143 | 141562 | }; |
| 141144 | 141563 | assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) ); |
| 141145 | 141564 | yygoto = yyRuleInfo[yyruleno].lhs; |
| | @@ -141151,20 +141570,15 @@ |
| 141151 | 141570 | assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) ); |
| 141152 | 141571 | |
| 141153 | 141572 | /* It is not possible for a REDUCE to be followed by an error */ |
| 141154 | 141573 | assert( yyact!=YY_ERROR_ACTION ); |
| 141155 | 141574 | |
| 141156 | | - if( yyact==YY_ACCEPT_ACTION ){ |
| 141157 | | - yypParser->yytos += yysize; |
| 141158 | | - yy_accept(yypParser); |
| 141159 | | - }else{ |
| 141160 | | - yymsp += yysize+1; |
| 141161 | | - yypParser->yytos = yymsp; |
| 141162 | | - yymsp->stateno = (YYACTIONTYPE)yyact; |
| 141163 | | - yymsp->major = (YYCODETYPE)yygoto; |
| 141164 | | - yyTraceShift(yypParser, yyact); |
| 141165 | | - } |
| 141575 | + yymsp += yysize+1; |
| 141576 | + yypParser->yytos = yymsp; |
| 141577 | + yymsp->stateno = (YYACTIONTYPE)yyact; |
| 141578 | + yymsp->major = (YYCODETYPE)yygoto; |
| 141579 | + yyTraceShift(yypParser, yyact, "... then shift"); |
| 141166 | 141580 | } |
| 141167 | 141581 | |
| 141168 | 141582 | /* |
| 141169 | 141583 | ** The following code executes when the parse fails |
| 141170 | 141584 | */ |
| | @@ -141271,24 +141685,35 @@ |
| 141271 | 141685 | #endif |
| 141272 | 141686 | sqlite3ParserARG_STORE; |
| 141273 | 141687 | |
| 141274 | 141688 | #ifndef NDEBUG |
| 141275 | 141689 | if( yyTraceFILE ){ |
| 141276 | | - fprintf(yyTraceFILE,"%sInput '%s'\n",yyTracePrompt,yyTokenName[yymajor]); |
| 141690 | + int stateno = yypParser->yytos->stateno; |
| 141691 | + if( stateno < YY_MIN_REDUCE ){ |
| 141692 | + fprintf(yyTraceFILE,"%sInput '%s' in state %d\n", |
| 141693 | + yyTracePrompt,yyTokenName[yymajor],stateno); |
| 141694 | + }else{ |
| 141695 | + fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n", |
| 141696 | + yyTracePrompt,yyTokenName[yymajor],stateno-YY_MIN_REDUCE); |
| 141697 | + } |
| 141277 | 141698 | } |
| 141278 | 141699 | #endif |
| 141279 | 141700 | |
| 141280 | 141701 | do{ |
| 141281 | 141702 | yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); |
| 141282 | | - if( yyact <= YY_MAX_SHIFTREDUCE ){ |
| 141703 | + if( yyact >= YY_MIN_REDUCE ){ |
| 141704 | + yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor,yyminor); |
| 141705 | + }else if( yyact <= YY_MAX_SHIFTREDUCE ){ |
| 141283 | 141706 | yy_shift(yypParser,yyact,yymajor,yyminor); |
| 141284 | 141707 | #ifndef YYNOERRORRECOVERY |
| 141285 | 141708 | yypParser->yyerrcnt--; |
| 141286 | 141709 | #endif |
| 141287 | 141710 | yymajor = YYNOCODE; |
| 141288 | | - }else if( yyact <= YY_MAX_REDUCE ){ |
| 141289 | | - yy_reduce(yypParser,yyact-YY_MIN_REDUCE); |
| 141711 | + }else if( yyact==YY_ACCEPT_ACTION ){ |
| 141712 | + yypParser->yytos--; |
| 141713 | + yy_accept(yypParser); |
| 141714 | + return; |
| 141290 | 141715 | }else{ |
| 141291 | 141716 | assert( yyact == YY_ERROR_ACTION ); |
| 141292 | 141717 | yyminorunion.yy0 = yyminor; |
| 141293 | 141718 | #ifdef YYERRORSYMBOL |
| 141294 | 141719 | int yymx; |
| | @@ -143527,10 +143952,11 @@ |
| 143527 | 143952 | { SQLITE_DBCONFIG_ENABLE_TRIGGER, SQLITE_EnableTrigger }, |
| 143528 | 143953 | { SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER, SQLITE_Fts3Tokenizer }, |
| 143529 | 143954 | { SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION, SQLITE_LoadExtension }, |
| 143530 | 143955 | { SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE, SQLITE_NoCkptOnClose }, |
| 143531 | 143956 | { SQLITE_DBCONFIG_ENABLE_QPSG, SQLITE_EnableQPSG }, |
| 143957 | + { SQLITE_DBCONFIG_TRIGGER_EQP, SQLITE_TriggerEQP }, |
| 143532 | 143958 | }; |
| 143533 | 143959 | unsigned int i; |
| 143534 | 143960 | rc = SQLITE_ERROR; /* IMP: R-42790-23372 */ |
| 143535 | 143961 | for(i=0; i<ArraySize(aFlagOp); i++){ |
| 143536 | 143962 | if( aFlagOp[i].op==op ){ |
| | @@ -146620,10 +147046,26 @@ |
| 146620 | 147046 | sqlite3ResetAllSchemasOfConnection(db); |
| 146621 | 147047 | } |
| 146622 | 147048 | sqlite3_mutex_leave(db->mutex); |
| 146623 | 147049 | break; |
| 146624 | 147050 | } |
| 147051 | + |
| 147052 | +#if defined(YYCOVERAGE) |
| 147053 | + /* sqlite3_test_control(SQLITE_TESTCTRL_PARSER_COVERAGE, FILE *out) |
| 147054 | + ** |
| 147055 | + ** This test control (only available when SQLite is compiled with |
| 147056 | + ** -DYYCOVERAGE) writes a report onto "out" that shows all |
| 147057 | + ** state/lookahead combinations in the parser state machine |
| 147058 | + ** which are never exercised. If any state is missed, make the |
| 147059 | + ** return code SQLITE_ERROR. |
| 147060 | + */ |
| 147061 | + case SQLITE_TESTCTRL_PARSER_COVERAGE: { |
| 147062 | + FILE *out = va_arg(ap, FILE*); |
| 147063 | + if( sqlite3ParserCoverage(out) ) rc = SQLITE_ERROR; |
| 147064 | + break; |
| 147065 | + } |
| 147066 | +#endif /* defined(YYCOVERAGE) */ |
| 146625 | 147067 | } |
| 146626 | 147068 | va_end(ap); |
| 146627 | 147069 | #endif /* SQLITE_UNTESTABLE */ |
| 146628 | 147070 | return rc; |
| 146629 | 147071 | } |
| | @@ -168393,11 +168835,11 @@ |
| 168393 | 168835 | int iHeight, /* Height of sub-tree rooted at pCell */ |
| 168394 | 168836 | RtreeNode **ppLeaf /* OUT: Selected leaf page */ |
| 168395 | 168837 | ){ |
| 168396 | 168838 | int rc; |
| 168397 | 168839 | int ii; |
| 168398 | | - RtreeNode *pNode; |
| 168840 | + RtreeNode *pNode = 0; |
| 168399 | 168841 | rc = nodeAcquire(pRtree, 1, 0, &pNode); |
| 168400 | 168842 | |
| 168401 | 168843 | for(ii=0; rc==SQLITE_OK && ii<(pRtree->iDepth-iHeight); ii++){ |
| 168402 | 168844 | int iCell; |
| 168403 | 168845 | sqlite3_int64 iBest = 0; |
| | @@ -169268,11 +169710,11 @@ |
| 169268 | 169710 | ** the root node (the operation that Gutman's paper says to perform |
| 169269 | 169711 | ** in this scenario). |
| 169270 | 169712 | */ |
| 169271 | 169713 | if( rc==SQLITE_OK && pRtree->iDepth>0 && NCELL(pRoot)==1 ){ |
| 169272 | 169714 | int rc2; |
| 169273 | | - RtreeNode *pChild; |
| 169715 | + RtreeNode *pChild = 0; |
| 169274 | 169716 | i64 iChild = nodeGetRowid(pRtree, pRoot, 0); |
| 169275 | 169717 | rc = nodeAcquire(pRtree, iChild, pRoot, &pChild); |
| 169276 | 169718 | if( rc==SQLITE_OK ){ |
| 169277 | 169719 | rc = removeNode(pRtree, pChild, pRtree->iDepth-1); |
| 169278 | 169720 | } |
| | @@ -186623,18 +187065,19 @@ |
| 186623 | 187065 | ** sqlite3Fts5ParserARG_FETCH Code to extract %extra_argument from fts5yypParser |
| 186624 | 187066 | ** fts5YYERRORSYMBOL is the code number of the error symbol. If not |
| 186625 | 187067 | ** defined, then do no error processing. |
| 186626 | 187068 | ** fts5YYNSTATE the combined number of states. |
| 186627 | 187069 | ** fts5YYNRULE the number of rules in the grammar |
| 187070 | +** fts5YYNFTS5TOKEN Number of terminal symbols |
| 186628 | 187071 | ** fts5YY_MAX_SHIFT Maximum value for shift actions |
| 186629 | 187072 | ** fts5YY_MIN_SHIFTREDUCE Minimum value for shift-reduce actions |
| 186630 | 187073 | ** fts5YY_MAX_SHIFTREDUCE Maximum value for shift-reduce actions |
| 186631 | | -** fts5YY_MIN_REDUCE Minimum value for reduce actions |
| 186632 | | -** fts5YY_MAX_REDUCE Maximum value for reduce actions |
| 186633 | 187074 | ** fts5YY_ERROR_ACTION The fts5yy_action[] code for syntax error |
| 186634 | 187075 | ** fts5YY_ACCEPT_ACTION The fts5yy_action[] code for accept |
| 186635 | 187076 | ** fts5YY_NO_ACTION The fts5yy_action[] code for no-op |
| 187077 | +** fts5YY_MIN_REDUCE Minimum value for reduce actions |
| 187078 | +** fts5YY_MAX_REDUCE Maximum value for reduce actions |
| 186636 | 187079 | */ |
| 186637 | 187080 | #ifndef INTERFACE |
| 186638 | 187081 | # define INTERFACE 1 |
| 186639 | 187082 | #endif |
| 186640 | 187083 | /************* Begin control #defines *****************************************/ |
| | @@ -186658,18 +187101,19 @@ |
| 186658 | 187101 | #define sqlite3Fts5ParserARG_PDECL ,Fts5Parse *pParse |
| 186659 | 187102 | #define sqlite3Fts5ParserARG_FETCH Fts5Parse *pParse = fts5yypParser->pParse |
| 186660 | 187103 | #define sqlite3Fts5ParserARG_STORE fts5yypParser->pParse = pParse |
| 186661 | 187104 | #define fts5YYNSTATE 35 |
| 186662 | 187105 | #define fts5YYNRULE 28 |
| 187106 | +#define fts5YYNFTS5TOKEN 16 |
| 186663 | 187107 | #define fts5YY_MAX_SHIFT 34 |
| 186664 | 187108 | #define fts5YY_MIN_SHIFTREDUCE 52 |
| 186665 | 187109 | #define fts5YY_MAX_SHIFTREDUCE 79 |
| 186666 | | -#define fts5YY_MIN_REDUCE 80 |
| 186667 | | -#define fts5YY_MAX_REDUCE 107 |
| 186668 | | -#define fts5YY_ERROR_ACTION 108 |
| 186669 | | -#define fts5YY_ACCEPT_ACTION 109 |
| 186670 | | -#define fts5YY_NO_ACTION 110 |
| 187110 | +#define fts5YY_ERROR_ACTION 80 |
| 187111 | +#define fts5YY_ACCEPT_ACTION 81 |
| 187112 | +#define fts5YY_NO_ACTION 82 |
| 187113 | +#define fts5YY_MIN_REDUCE 83 |
| 187114 | +#define fts5YY_MAX_REDUCE 110 |
| 186671 | 187115 | /************* End control #defines *******************************************/ |
| 186672 | 187116 | |
| 186673 | 187117 | /* Define the fts5yytestcase() macro to be a no-op if is not already defined |
| 186674 | 187118 | ** otherwise. |
| 186675 | 187119 | ** |
| | @@ -186695,39 +187139,33 @@ |
| 186695 | 187139 | ** token onto the stack and goto state N. |
| 186696 | 187140 | ** |
| 186697 | 187141 | ** N between fts5YY_MIN_SHIFTREDUCE Shift to an arbitrary state then |
| 186698 | 187142 | ** and fts5YY_MAX_SHIFTREDUCE reduce by rule N-fts5YY_MIN_SHIFTREDUCE. |
| 186699 | 187143 | ** |
| 186700 | | -** N between fts5YY_MIN_REDUCE Reduce by rule N-fts5YY_MIN_REDUCE |
| 186701 | | -** and fts5YY_MAX_REDUCE |
| 186702 | | -** |
| 186703 | 187144 | ** N == fts5YY_ERROR_ACTION A syntax error has occurred. |
| 186704 | 187145 | ** |
| 186705 | 187146 | ** N == fts5YY_ACCEPT_ACTION The parser accepts its input. |
| 186706 | 187147 | ** |
| 186707 | 187148 | ** N == fts5YY_NO_ACTION No such action. Denotes unused |
| 186708 | 187149 | ** slots in the fts5yy_action[] table. |
| 187150 | +** |
| 187151 | +** N between fts5YY_MIN_REDUCE Reduce by rule N-fts5YY_MIN_REDUCE |
| 187152 | +** and fts5YY_MAX_REDUCE |
| 186709 | 187153 | ** |
| 186710 | 187154 | ** The action table is constructed as a single large table named fts5yy_action[]. |
| 186711 | 187155 | ** Given state S and lookahead X, the action is computed as either: |
| 186712 | 187156 | ** |
| 186713 | 187157 | ** (A) N = fts5yy_action[ fts5yy_shift_ofst[S] + X ] |
| 186714 | 187158 | ** (B) N = fts5yy_default[S] |
| 186715 | 187159 | ** |
| 186716 | | -** The (A) formula is preferred. The B formula is used instead if: |
| 186717 | | -** (1) The fts5yy_shift_ofst[S]+X value is out of range, or |
| 186718 | | -** (2) fts5yy_lookahead[fts5yy_shift_ofst[S]+X] is not equal to X, or |
| 186719 | | -** (3) fts5yy_shift_ofst[S] equal fts5YY_SHIFT_USE_DFLT. |
| 186720 | | -** (Implementation note: fts5YY_SHIFT_USE_DFLT is chosen so that |
| 186721 | | -** fts5YY_SHIFT_USE_DFLT+X will be out of range for all possible lookaheads X. |
| 186722 | | -** Hence only tests (1) and (2) need to be evaluated.) |
| 187160 | +** The (A) formula is preferred. The B formula is used instead if |
| 187161 | +** fts5yy_lookahead[fts5yy_shift_ofst[S]+X] is not equal to X. |
| 186723 | 187162 | ** |
| 186724 | 187163 | ** The formulas above are for computing the action when the lookahead is |
| 186725 | 187164 | ** a terminal symbol. If the lookahead is a non-terminal (as occurs after |
| 186726 | 187165 | ** a reduce action) then the fts5yy_reduce_ofst[] array is used in place of |
| 186727 | | -** the fts5yy_shift_ofst[] array and fts5YY_REDUCE_USE_DFLT is used in place of |
| 186728 | | -** fts5YY_SHIFT_USE_DFLT. |
| 187166 | +** the fts5yy_shift_ofst[] array. |
| 186729 | 187167 | ** |
| 186730 | 187168 | ** The following are the tables generated in this section: |
| 186731 | 187169 | ** |
| 186732 | 187170 | ** fts5yy_action[] A single table containing all actions. |
| 186733 | 187171 | ** fts5yy_lookahead[] A table containing the lookahead for each entry in |
| | @@ -186739,19 +187177,19 @@ |
| 186739 | 187177 | ** fts5yy_default[] Default action for each state. |
| 186740 | 187178 | ** |
| 186741 | 187179 | *********** Begin parsing tables **********************************************/ |
| 186742 | 187180 | #define fts5YY_ACTTAB_COUNT (105) |
| 186743 | 187181 | static const fts5YYACTIONTYPE fts5yy_action[] = { |
| 186744 | | - /* 0 */ 109, 20, 93, 6, 28, 96, 95, 26, 26, 18, |
| 186745 | | - /* 10 */ 93, 6, 28, 17, 95, 56, 26, 19, 93, 6, |
| 186746 | | - /* 20 */ 28, 14, 95, 105, 26, 89, 93, 6, 28, 25, |
| 186747 | | - /* 30 */ 95, 78, 26, 21, 93, 6, 28, 104, 95, 58, |
| 186748 | | - /* 40 */ 26, 29, 93, 6, 28, 32, 95, 22, 26, 24, |
| 187182 | + /* 0 */ 81, 20, 96, 6, 28, 99, 98, 26, 26, 18, |
| 187183 | + /* 10 */ 96, 6, 28, 17, 98, 56, 26, 19, 96, 6, |
| 187184 | + /* 20 */ 28, 14, 98, 108, 26, 92, 96, 6, 28, 25, |
| 187185 | + /* 30 */ 98, 78, 26, 21, 96, 6, 28, 107, 98, 58, |
| 187186 | + /* 40 */ 26, 29, 96, 6, 28, 32, 98, 22, 26, 24, |
| 186749 | 187187 | /* 50 */ 16, 23, 11, 1, 14, 13, 24, 16, 31, 11, |
| 186750 | | - /* 60 */ 3, 94, 13, 27, 8, 95, 82, 26, 7, 4, |
| 186751 | | - /* 70 */ 5, 3, 4, 5, 3, 80, 4, 5, 3, 63, |
| 186752 | | - /* 80 */ 33, 34, 62, 12, 2, 83, 13, 10, 12, 71, |
| 187188 | + /* 60 */ 3, 97, 13, 27, 8, 98, 82, 26, 7, 4, |
| 187189 | + /* 70 */ 5, 3, 4, 5, 3, 83, 4, 5, 3, 63, |
| 187190 | + /* 80 */ 33, 34, 62, 12, 2, 86, 13, 10, 12, 71, |
| 186753 | 187191 | /* 90 */ 10, 13, 78, 5, 3, 78, 9, 30, 75, 82, |
| 186754 | 187192 | /* 100 */ 54, 57, 53, 57, 15, |
| 186755 | 187193 | }; |
| 186756 | 187194 | static const fts5YYCODETYPE fts5yy_lookahead[] = { |
| 186757 | 187195 | /* 0 */ 17, 18, 19, 20, 21, 23, 23, 25, 25, 18, |
| | @@ -186762,35 +187200,35 @@ |
| 186762 | 187200 | /* 50 */ 7, 22, 9, 10, 9, 12, 6, 7, 13, 9, |
| 186763 | 187201 | /* 60 */ 3, 19, 12, 21, 5, 23, 28, 25, 5, 1, |
| 186764 | 187202 | /* 70 */ 2, 3, 1, 2, 3, 0, 1, 2, 3, 11, |
| 186765 | 187203 | /* 80 */ 25, 26, 11, 9, 10, 5, 12, 10, 9, 11, |
| 186766 | 187204 | /* 90 */ 10, 12, 15, 2, 3, 15, 24, 25, 9, 28, |
| 186767 | | - /* 100 */ 8, 9, 8, 9, 9, |
| 187205 | + /* 100 */ 8, 9, 8, 9, 9, 28, 28, 28, 28, 28, |
| 187206 | + /* 110 */ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, |
| 187207 | + /* 120 */ 28, |
| 186768 | 187208 | }; |
| 186769 | | -#define fts5YY_SHIFT_USE_DFLT (105) |
| 186770 | 187209 | #define fts5YY_SHIFT_COUNT (34) |
| 186771 | 187210 | #define fts5YY_SHIFT_MIN (0) |
| 186772 | 187211 | #define fts5YY_SHIFT_MAX (95) |
| 186773 | 187212 | static const unsigned char fts5yy_shift_ofst[] = { |
| 186774 | 187213 | /* 0 */ 43, 43, 43, 43, 43, 43, 50, 74, 79, 45, |
| 186775 | 187214 | /* 10 */ 12, 80, 77, 12, 16, 16, 30, 30, 68, 71, |
| 186776 | 187215 | /* 20 */ 75, 91, 92, 94, 6, 31, 31, 59, 63, 57, |
| 186777 | 187216 | /* 30 */ 31, 89, 95, 31, 78, |
| 186778 | 187217 | }; |
| 186779 | | -#define fts5YY_REDUCE_USE_DFLT (-19) |
| 186780 | 187218 | #define fts5YY_REDUCE_COUNT (17) |
| 186781 | 187219 | #define fts5YY_REDUCE_MIN (-18) |
| 186782 | 187220 | #define fts5YY_REDUCE_MAX (72) |
| 186783 | 187221 | static const signed char fts5yy_reduce_ofst[] = { |
| 186784 | 187222 | /* 0 */ -17, -9, -1, 7, 15, 23, 42, -18, -18, 55, |
| 186785 | 187223 | /* 10 */ 72, -4, -4, 4, -4, 10, 25, 29, |
| 186786 | 187224 | }; |
| 186787 | 187225 | static const fts5YYACTIONTYPE fts5yy_default[] = { |
| 186788 | | - /* 0 */ 108, 108, 108, 108, 108, 108, 92, 108, 108, 102, |
| 186789 | | - /* 10 */ 108, 107, 107, 108, 107, 107, 108, 108, 108, 108, |
| 186790 | | - /* 20 */ 108, 88, 108, 108, 108, 98, 97, 108, 108, 87, |
| 186791 | | - /* 30 */ 100, 108, 108, 101, 108, |
| 187226 | + /* 0 */ 80, 80, 80, 80, 80, 80, 95, 80, 80, 105, |
| 187227 | + /* 10 */ 80, 110, 110, 80, 110, 110, 80, 80, 80, 80, |
| 187228 | + /* 20 */ 80, 91, 80, 80, 80, 101, 100, 80, 80, 90, |
| 187229 | + /* 30 */ 103, 80, 80, 104, 80, |
| 186792 | 187230 | }; |
| 186793 | 187231 | /********** End of lemon-generated parsing tables *****************************/ |
| 186794 | 187232 | |
| 186795 | 187233 | /* The next table maps tokens (terminal symbols) into fallback tokens. |
| 186796 | 187234 | ** If a construct like the following: |
| | @@ -186888,23 +187326,44 @@ |
| 186888 | 187326 | if( fts5yyTraceFILE==0 ) fts5yyTracePrompt = 0; |
| 186889 | 187327 | else if( fts5yyTracePrompt==0 ) fts5yyTraceFILE = 0; |
| 186890 | 187328 | } |
| 186891 | 187329 | #endif /* NDEBUG */ |
| 186892 | 187330 | |
| 186893 | | -#ifndef NDEBUG |
| 187331 | +#if defined(fts5YYCOVERAGE) || !defined(NDEBUG) |
| 186894 | 187332 | /* For tracing shifts, the names of all terminals and nonterminals |
| 186895 | 187333 | ** are required. The following table supplies these names */ |
| 186896 | 187334 | static const char *const fts5yyTokenName[] = { |
| 186897 | | - "$", "OR", "AND", "NOT", |
| 186898 | | - "TERM", "COLON", "MINUS", "LCP", |
| 186899 | | - "RCP", "STRING", "LP", "RP", |
| 186900 | | - "CARET", "COMMA", "PLUS", "STAR", |
| 186901 | | - "error", "input", "expr", "cnearset", |
| 186902 | | - "exprlist", "colset", "colsetlist", "nearset", |
| 186903 | | - "nearphrases", "phrase", "neardist_opt", "star_opt", |
| 187335 | + /* 0 */ "$", |
| 187336 | + /* 1 */ "OR", |
| 187337 | + /* 2 */ "AND", |
| 187338 | + /* 3 */ "NOT", |
| 187339 | + /* 4 */ "TERM", |
| 187340 | + /* 5 */ "COLON", |
| 187341 | + /* 6 */ "MINUS", |
| 187342 | + /* 7 */ "LCP", |
| 187343 | + /* 8 */ "RCP", |
| 187344 | + /* 9 */ "STRING", |
| 187345 | + /* 10 */ "LP", |
| 187346 | + /* 11 */ "RP", |
| 187347 | + /* 12 */ "CARET", |
| 187348 | + /* 13 */ "COMMA", |
| 187349 | + /* 14 */ "PLUS", |
| 187350 | + /* 15 */ "STAR", |
| 187351 | + /* 16 */ "error", |
| 187352 | + /* 17 */ "input", |
| 187353 | + /* 18 */ "expr", |
| 187354 | + /* 19 */ "cnearset", |
| 187355 | + /* 20 */ "exprlist", |
| 187356 | + /* 21 */ "colset", |
| 187357 | + /* 22 */ "colsetlist", |
| 187358 | + /* 23 */ "nearset", |
| 187359 | + /* 24 */ "nearphrases", |
| 187360 | + /* 25 */ "phrase", |
| 187361 | + /* 26 */ "neardist_opt", |
| 187362 | + /* 27 */ "star_opt", |
| 186904 | 187363 | }; |
| 186905 | | -#endif /* NDEBUG */ |
| 187364 | +#endif /* defined(fts5YYCOVERAGE) || !defined(NDEBUG) */ |
| 186906 | 187365 | |
| 186907 | 187366 | #ifndef NDEBUG |
| 186908 | 187367 | /* For tracing reduce actions, the names of all rules are required. |
| 186909 | 187368 | */ |
| 186910 | 187369 | static const char *const fts5yyRuleName[] = { |
| | @@ -187151,10 +187610,47 @@ |
| 187151 | 187610 | fts5yyParser *pParser = (fts5yyParser*)p; |
| 187152 | 187611 | return pParser->fts5yyhwm; |
| 187153 | 187612 | } |
| 187154 | 187613 | #endif |
| 187155 | 187614 | |
| 187615 | +/* This array of booleans keeps track of the parser statement |
| 187616 | +** coverage. The element fts5yycoverage[X][Y] is set when the parser |
| 187617 | +** is in state X and has a lookahead token Y. In a well-tested |
| 187618 | +** systems, every element of this matrix should end up being set. |
| 187619 | +*/ |
| 187620 | +#if defined(fts5YYCOVERAGE) |
| 187621 | +static unsigned char fts5yycoverage[fts5YYNSTATE][fts5YYNFTS5TOKEN]; |
| 187622 | +#endif |
| 187623 | + |
| 187624 | +/* |
| 187625 | +** Write into out a description of every state/lookahead combination that |
| 187626 | +** |
| 187627 | +** (1) has not been used by the parser, and |
| 187628 | +** (2) is not a syntax error. |
| 187629 | +** |
| 187630 | +** Return the number of missed state/lookahead combinations. |
| 187631 | +*/ |
| 187632 | +#if defined(fts5YYCOVERAGE) |
| 187633 | +static int sqlite3Fts5ParserCoverage(FILE *out){ |
| 187634 | + int stateno, iLookAhead, i; |
| 187635 | + int nMissed = 0; |
| 187636 | + for(stateno=0; stateno<fts5YYNSTATE; stateno++){ |
| 187637 | + i = fts5yy_shift_ofst[stateno]; |
| 187638 | + for(iLookAhead=0; iLookAhead<fts5YYNFTS5TOKEN; iLookAhead++){ |
| 187639 | + if( fts5yy_lookahead[i+iLookAhead]!=iLookAhead ) continue; |
| 187640 | + if( fts5yycoverage[stateno][iLookAhead]==0 ) nMissed++; |
| 187641 | + if( out ){ |
| 187642 | + fprintf(out,"State %d lookahead %s %s\n", stateno, |
| 187643 | + fts5yyTokenName[iLookAhead], |
| 187644 | + fts5yycoverage[stateno][iLookAhead] ? "ok" : "missed"); |
| 187645 | + } |
| 187646 | + } |
| 187647 | + } |
| 187648 | + return nMissed; |
| 187649 | +} |
| 187650 | +#endif |
| 187651 | + |
| 187156 | 187652 | /* |
| 187157 | 187653 | ** Find the appropriate action for a parser given the terminal |
| 187158 | 187654 | ** look-ahead token iLookAhead. |
| 187159 | 187655 | */ |
| 187160 | 187656 | static unsigned int fts5yy_find_shift_action( |
| | @@ -187162,17 +187658,22 @@ |
| 187162 | 187658 | fts5YYCODETYPE iLookAhead /* The look-ahead token */ |
| 187163 | 187659 | ){ |
| 187164 | 187660 | int i; |
| 187165 | 187661 | int stateno = pParser->fts5yytos->stateno; |
| 187166 | 187662 | |
| 187167 | | - if( stateno>=fts5YY_MIN_REDUCE ) return stateno; |
| 187663 | + if( stateno>fts5YY_MAX_SHIFT ) return stateno; |
| 187168 | 187664 | assert( stateno <= fts5YY_SHIFT_COUNT ); |
| 187665 | +#if defined(fts5YYCOVERAGE) |
| 187666 | + fts5yycoverage[stateno][iLookAhead] = 1; |
| 187667 | +#endif |
| 187169 | 187668 | do{ |
| 187170 | 187669 | i = fts5yy_shift_ofst[stateno]; |
| 187670 | + assert( i>=0 && i+fts5YYNFTS5TOKEN<=sizeof(fts5yy_lookahead)/sizeof(fts5yy_lookahead[0]) ); |
| 187171 | 187671 | assert( iLookAhead!=fts5YYNOCODE ); |
| 187672 | + assert( iLookAhead < fts5YYNFTS5TOKEN ); |
| 187172 | 187673 | i += iLookAhead; |
| 187173 | | - if( i<0 || i>=fts5YY_ACTTAB_COUNT || fts5yy_lookahead[i]!=iLookAhead ){ |
| 187674 | + if( fts5yy_lookahead[i]!=iLookAhead ){ |
| 187174 | 187675 | #ifdef fts5YYFALLBACK |
| 187175 | 187676 | fts5YYCODETYPE iFallback; /* Fallback token */ |
| 187176 | 187677 | if( iLookAhead<sizeof(fts5yyFallback)/sizeof(fts5yyFallback[0]) |
| 187177 | 187678 | && (iFallback = fts5yyFallback[iLookAhead])!=0 ){ |
| 187178 | 187679 | #ifndef NDEBUG |
| | @@ -187231,11 +187732,10 @@ |
| 187231 | 187732 | } |
| 187232 | 187733 | #else |
| 187233 | 187734 | assert( stateno<=fts5YY_REDUCE_COUNT ); |
| 187234 | 187735 | #endif |
| 187235 | 187736 | i = fts5yy_reduce_ofst[stateno]; |
| 187236 | | - assert( i!=fts5YY_REDUCE_USE_DFLT ); |
| 187237 | 187737 | assert( iLookAhead!=fts5YYNOCODE ); |
| 187238 | 187738 | i += iLookAhead; |
| 187239 | 187739 | #ifdef fts5YYERRORSYMBOL |
| 187240 | 187740 | if( i<0 || i>=fts5YY_ACTTAB_COUNT || fts5yy_lookahead[i]!=iLookAhead ){ |
| 187241 | 187741 | return fts5yy_default[stateno]; |
| | @@ -187269,24 +187769,25 @@ |
| 187269 | 187769 | |
| 187270 | 187770 | /* |
| 187271 | 187771 | ** Print tracing information for a SHIFT action |
| 187272 | 187772 | */ |
| 187273 | 187773 | #ifndef NDEBUG |
| 187274 | | -static void fts5yyTraceShift(fts5yyParser *fts5yypParser, int fts5yyNewState){ |
| 187774 | +static void fts5yyTraceShift(fts5yyParser *fts5yypParser, int fts5yyNewState, const char *zTag){ |
| 187275 | 187775 | if( fts5yyTraceFILE ){ |
| 187276 | 187776 | if( fts5yyNewState<fts5YYNSTATE ){ |
| 187277 | | - fprintf(fts5yyTraceFILE,"%sShift '%s', go to state %d\n", |
| 187278 | | - fts5yyTracePrompt,fts5yyTokenName[fts5yypParser->fts5yytos->major], |
| 187777 | + fprintf(fts5yyTraceFILE,"%s%s '%s', go to state %d\n", |
| 187778 | + fts5yyTracePrompt, zTag, fts5yyTokenName[fts5yypParser->fts5yytos->major], |
| 187279 | 187779 | fts5yyNewState); |
| 187280 | 187780 | }else{ |
| 187281 | | - fprintf(fts5yyTraceFILE,"%sShift '%s'\n", |
| 187282 | | - fts5yyTracePrompt,fts5yyTokenName[fts5yypParser->fts5yytos->major]); |
| 187781 | + fprintf(fts5yyTraceFILE,"%s%s '%s', pending reduce %d\n", |
| 187782 | + fts5yyTracePrompt, zTag, fts5yyTokenName[fts5yypParser->fts5yytos->major], |
| 187783 | + fts5yyNewState - fts5YY_MIN_REDUCE); |
| 187283 | 187784 | } |
| 187284 | 187785 | } |
| 187285 | 187786 | } |
| 187286 | 187787 | #else |
| 187287 | | -# define fts5yyTraceShift(X,Y) |
| 187788 | +# define fts5yyTraceShift(X,Y,Z) |
| 187288 | 187789 | #endif |
| 187289 | 187790 | |
| 187290 | 187791 | /* |
| 187291 | 187792 | ** Perform a shift action. |
| 187292 | 187793 | */ |
| | @@ -187324,59 +187825,67 @@ |
| 187324 | 187825 | } |
| 187325 | 187826 | fts5yytos = fts5yypParser->fts5yytos; |
| 187326 | 187827 | fts5yytos->stateno = (fts5YYACTIONTYPE)fts5yyNewState; |
| 187327 | 187828 | fts5yytos->major = (fts5YYCODETYPE)fts5yyMajor; |
| 187328 | 187829 | fts5yytos->minor.fts5yy0 = fts5yyMinor; |
| 187329 | | - fts5yyTraceShift(fts5yypParser, fts5yyNewState); |
| 187830 | + fts5yyTraceShift(fts5yypParser, fts5yyNewState, "Shift"); |
| 187330 | 187831 | } |
| 187331 | 187832 | |
| 187332 | 187833 | /* The following table contains information about every rule that |
| 187333 | 187834 | ** is used during the reduce. |
| 187334 | 187835 | */ |
| 187335 | 187836 | static const struct { |
| 187336 | 187837 | fts5YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ |
| 187337 | 187838 | signed char nrhs; /* Negative of the number of RHS symbols in the rule */ |
| 187338 | 187839 | } fts5yyRuleInfo[] = { |
| 187339 | | - { 17, -1 }, |
| 187340 | | - { 21, -4 }, |
| 187341 | | - { 21, -3 }, |
| 187342 | | - { 21, -1 }, |
| 187343 | | - { 21, -2 }, |
| 187344 | | - { 22, -2 }, |
| 187345 | | - { 22, -1 }, |
| 187346 | | - { 18, -3 }, |
| 187347 | | - { 18, -3 }, |
| 187348 | | - { 18, -3 }, |
| 187349 | | - { 18, -5 }, |
| 187350 | | - { 18, -3 }, |
| 187351 | | - { 18, -1 }, |
| 187352 | | - { 20, -1 }, |
| 187353 | | - { 20, -2 }, |
| 187354 | | - { 19, -1 }, |
| 187355 | | - { 19, -3 }, |
| 187356 | | - { 23, -1 }, |
| 187357 | | - { 23, -2 }, |
| 187358 | | - { 23, -5 }, |
| 187359 | | - { 24, -1 }, |
| 187360 | | - { 24, -2 }, |
| 187361 | | - { 26, 0 }, |
| 187362 | | - { 26, -2 }, |
| 187363 | | - { 25, -4 }, |
| 187364 | | - { 25, -2 }, |
| 187365 | | - { 27, -1 }, |
| 187366 | | - { 27, 0 }, |
| 187840 | + { 17, -1 }, /* (0) input ::= expr */ |
| 187841 | + { 21, -4 }, /* (1) colset ::= MINUS LCP colsetlist RCP */ |
| 187842 | + { 21, -3 }, /* (2) colset ::= LCP colsetlist RCP */ |
| 187843 | + { 21, -1 }, /* (3) colset ::= STRING */ |
| 187844 | + { 21, -2 }, /* (4) colset ::= MINUS STRING */ |
| 187845 | + { 22, -2 }, /* (5) colsetlist ::= colsetlist STRING */ |
| 187846 | + { 22, -1 }, /* (6) colsetlist ::= STRING */ |
| 187847 | + { 18, -3 }, /* (7) expr ::= expr AND expr */ |
| 187848 | + { 18, -3 }, /* (8) expr ::= expr OR expr */ |
| 187849 | + { 18, -3 }, /* (9) expr ::= expr NOT expr */ |
| 187850 | + { 18, -5 }, /* (10) expr ::= colset COLON LP expr RP */ |
| 187851 | + { 18, -3 }, /* (11) expr ::= LP expr RP */ |
| 187852 | + { 18, -1 }, /* (12) expr ::= exprlist */ |
| 187853 | + { 20, -1 }, /* (13) exprlist ::= cnearset */ |
| 187854 | + { 20, -2 }, /* (14) exprlist ::= exprlist cnearset */ |
| 187855 | + { 19, -1 }, /* (15) cnearset ::= nearset */ |
| 187856 | + { 19, -3 }, /* (16) cnearset ::= colset COLON nearset */ |
| 187857 | + { 23, -1 }, /* (17) nearset ::= phrase */ |
| 187858 | + { 23, -2 }, /* (18) nearset ::= CARET phrase */ |
| 187859 | + { 23, -5 }, /* (19) nearset ::= STRING LP nearphrases neardist_opt RP */ |
| 187860 | + { 24, -1 }, /* (20) nearphrases ::= phrase */ |
| 187861 | + { 24, -2 }, /* (21) nearphrases ::= nearphrases phrase */ |
| 187862 | + { 26, 0 }, /* (22) neardist_opt ::= */ |
| 187863 | + { 26, -2 }, /* (23) neardist_opt ::= COMMA STRING */ |
| 187864 | + { 25, -4 }, /* (24) phrase ::= phrase PLUS STRING star_opt */ |
| 187865 | + { 25, -2 }, /* (25) phrase ::= STRING star_opt */ |
| 187866 | + { 27, -1 }, /* (26) star_opt ::= STAR */ |
| 187867 | + { 27, 0 }, /* (27) star_opt ::= */ |
| 187367 | 187868 | }; |
| 187368 | 187869 | |
| 187369 | 187870 | static void fts5yy_accept(fts5yyParser*); /* Forward Declaration */ |
| 187370 | 187871 | |
| 187371 | 187872 | /* |
| 187372 | 187873 | ** Perform a reduce action and the shift that must immediately |
| 187373 | 187874 | ** follow the reduce. |
| 187875 | +** |
| 187876 | +** The fts5yyLookahead and fts5yyLookaheadToken parameters provide reduce actions |
| 187877 | +** access to the lookahead token (if any). The fts5yyLookahead will be fts5YYNOCODE |
| 187878 | +** if the lookahead token has already been consumed. As this procedure is |
| 187879 | +** only called from one place, optimizing compilers will in-line it, which |
| 187880 | +** means that the extra parameters have no performance impact. |
| 187374 | 187881 | */ |
| 187375 | 187882 | static void fts5yy_reduce( |
| 187376 | 187883 | fts5yyParser *fts5yypParser, /* The parser */ |
| 187377 | | - unsigned int fts5yyruleno /* Number of the rule by which to reduce */ |
| 187884 | + unsigned int fts5yyruleno, /* Number of the rule by which to reduce */ |
| 187885 | + int fts5yyLookahead, /* Lookahead token, or fts5YYNOCODE if none */ |
| 187886 | + sqlite3Fts5ParserFTS5TOKENTYPE fts5yyLookaheadToken /* Value of the lookahead token */ |
| 187378 | 187887 | ){ |
| 187379 | 187888 | int fts5yygoto; /* The next state */ |
| 187380 | 187889 | int fts5yyact; /* The next action */ |
| 187381 | 187890 | fts5yyStackEntry *fts5yymsp; /* The top of the parser's stack */ |
| 187382 | 187891 | int fts5yysize; /* Amount to pop the stack */ |
| | @@ -187383,12 +187892,18 @@ |
| 187383 | 187892 | sqlite3Fts5ParserARG_FETCH; |
| 187384 | 187893 | fts5yymsp = fts5yypParser->fts5yytos; |
| 187385 | 187894 | #ifndef NDEBUG |
| 187386 | 187895 | if( fts5yyTraceFILE && fts5yyruleno<(int)(sizeof(fts5yyRuleName)/sizeof(fts5yyRuleName[0])) ){ |
| 187387 | 187896 | fts5yysize = fts5yyRuleInfo[fts5yyruleno].nrhs; |
| 187388 | | - fprintf(fts5yyTraceFILE, "%sReduce [%s], go to state %d.\n", fts5yyTracePrompt, |
| 187389 | | - fts5yyRuleName[fts5yyruleno], fts5yymsp[fts5yysize].stateno); |
| 187897 | + if( fts5yysize ){ |
| 187898 | + fprintf(fts5yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", |
| 187899 | + fts5yyTracePrompt, |
| 187900 | + fts5yyruleno, fts5yyRuleName[fts5yyruleno], fts5yymsp[fts5yysize].stateno); |
| 187901 | + }else{ |
| 187902 | + fprintf(fts5yyTraceFILE, "%sReduce %d [%s].\n", |
| 187903 | + fts5yyTracePrompt, fts5yyruleno, fts5yyRuleName[fts5yyruleno]); |
| 187904 | + } |
| 187390 | 187905 | } |
| 187391 | 187906 | #endif /* NDEBUG */ |
| 187392 | 187907 | |
| 187393 | 187908 | /* Check that the stack is large enough to grow by a single entry |
| 187394 | 187909 | ** if the RHS of the rule is empty. This ensures that there is room |
| | @@ -187581,20 +188096,15 @@ |
| 187581 | 188096 | assert( !(fts5yyact>fts5YY_MAX_SHIFT && fts5yyact<=fts5YY_MAX_SHIFTREDUCE) ); |
| 187582 | 188097 | |
| 187583 | 188098 | /* It is not possible for a REDUCE to be followed by an error */ |
| 187584 | 188099 | assert( fts5yyact!=fts5YY_ERROR_ACTION ); |
| 187585 | 188100 | |
| 187586 | | - if( fts5yyact==fts5YY_ACCEPT_ACTION ){ |
| 187587 | | - fts5yypParser->fts5yytos += fts5yysize; |
| 187588 | | - fts5yy_accept(fts5yypParser); |
| 187589 | | - }else{ |
| 187590 | | - fts5yymsp += fts5yysize+1; |
| 187591 | | - fts5yypParser->fts5yytos = fts5yymsp; |
| 187592 | | - fts5yymsp->stateno = (fts5YYACTIONTYPE)fts5yyact; |
| 187593 | | - fts5yymsp->major = (fts5YYCODETYPE)fts5yygoto; |
| 187594 | | - fts5yyTraceShift(fts5yypParser, fts5yyact); |
| 187595 | | - } |
| 188101 | + fts5yymsp += fts5yysize+1; |
| 188102 | + fts5yypParser->fts5yytos = fts5yymsp; |
| 188103 | + fts5yymsp->stateno = (fts5YYACTIONTYPE)fts5yyact; |
| 188104 | + fts5yymsp->major = (fts5YYCODETYPE)fts5yygoto; |
| 188105 | + fts5yyTraceShift(fts5yypParser, fts5yyact, "... then shift"); |
| 187596 | 188106 | } |
| 187597 | 188107 | |
| 187598 | 188108 | /* |
| 187599 | 188109 | ** The following code executes when the parse fails |
| 187600 | 188110 | */ |
| | @@ -187702,24 +188212,35 @@ |
| 187702 | 188212 | #endif |
| 187703 | 188213 | sqlite3Fts5ParserARG_STORE; |
| 187704 | 188214 | |
| 187705 | 188215 | #ifndef NDEBUG |
| 187706 | 188216 | if( fts5yyTraceFILE ){ |
| 187707 | | - fprintf(fts5yyTraceFILE,"%sInput '%s'\n",fts5yyTracePrompt,fts5yyTokenName[fts5yymajor]); |
| 188217 | + int stateno = fts5yypParser->fts5yytos->stateno; |
| 188218 | + if( stateno < fts5YY_MIN_REDUCE ){ |
| 188219 | + fprintf(fts5yyTraceFILE,"%sInput '%s' in state %d\n", |
| 188220 | + fts5yyTracePrompt,fts5yyTokenName[fts5yymajor],stateno); |
| 188221 | + }else{ |
| 188222 | + fprintf(fts5yyTraceFILE,"%sInput '%s' with pending reduce %d\n", |
| 188223 | + fts5yyTracePrompt,fts5yyTokenName[fts5yymajor],stateno-fts5YY_MIN_REDUCE); |
| 188224 | + } |
| 187708 | 188225 | } |
| 187709 | 188226 | #endif |
| 187710 | 188227 | |
| 187711 | 188228 | do{ |
| 187712 | 188229 | fts5yyact = fts5yy_find_shift_action(fts5yypParser,(fts5YYCODETYPE)fts5yymajor); |
| 187713 | | - if( fts5yyact <= fts5YY_MAX_SHIFTREDUCE ){ |
| 188230 | + if( fts5yyact >= fts5YY_MIN_REDUCE ){ |
| 188231 | + fts5yy_reduce(fts5yypParser,fts5yyact-fts5YY_MIN_REDUCE,fts5yymajor,fts5yyminor); |
| 188232 | + }else if( fts5yyact <= fts5YY_MAX_SHIFTREDUCE ){ |
| 187714 | 188233 | fts5yy_shift(fts5yypParser,fts5yyact,fts5yymajor,fts5yyminor); |
| 187715 | 188234 | #ifndef fts5YYNOERRORRECOVERY |
| 187716 | 188235 | fts5yypParser->fts5yyerrcnt--; |
| 187717 | 188236 | #endif |
| 187718 | 188237 | fts5yymajor = fts5YYNOCODE; |
| 187719 | | - }else if( fts5yyact <= fts5YY_MAX_REDUCE ){ |
| 187720 | | - fts5yy_reduce(fts5yypParser,fts5yyact-fts5YY_MIN_REDUCE); |
| 188238 | + }else if( fts5yyact==fts5YY_ACCEPT_ACTION ){ |
| 188239 | + fts5yypParser->fts5yytos--; |
| 188240 | + fts5yy_accept(fts5yypParser); |
| 188241 | + return; |
| 187721 | 188242 | }else{ |
| 187722 | 188243 | assert( fts5yyact == fts5YY_ERROR_ACTION ); |
| 187723 | 188244 | fts5yyminorunion.fts5yy0 = fts5yyminor; |
| 187724 | 188245 | #ifdef fts5YYERRORSYMBOL |
| 187725 | 188246 | int fts5yymx; |
| | @@ -188193,10 +188714,20 @@ |
| 188193 | 188714 | *piPos = iAdj; |
| 188194 | 188715 | } |
| 188195 | 188716 | |
| 188196 | 188717 | return rc; |
| 188197 | 188718 | } |
| 188719 | + |
| 188720 | +/* |
| 188721 | +** Return the value in pVal interpreted as utf-8 text. Except, if pVal |
| 188722 | +** contains a NULL value, return a pointer to a static string zero |
| 188723 | +** bytes in length instead of a NULL pointer. |
| 188724 | +*/ |
| 188725 | +static const char *fts5ValueToText(sqlite3_value *pVal){ |
| 188726 | + const char *zRet = (const char*)sqlite3_value_text(pVal); |
| 188727 | + return zRet ? zRet : ""; |
| 188728 | +} |
| 188198 | 188729 | |
| 188199 | 188730 | /* |
| 188200 | 188731 | ** Implementation of snippet() function. |
| 188201 | 188732 | */ |
| 188202 | 188733 | static void fts5SnippetFunction( |
| | @@ -188229,13 +188760,13 @@ |
| 188229 | 188760 | } |
| 188230 | 188761 | |
| 188231 | 188762 | nCol = pApi->xColumnCount(pFts); |
| 188232 | 188763 | memset(&ctx, 0, sizeof(HighlightContext)); |
| 188233 | 188764 | iCol = sqlite3_value_int(apVal[0]); |
| 188234 | | - ctx.zOpen = (const char*)sqlite3_value_text(apVal[1]); |
| 188235 | | - ctx.zClose = (const char*)sqlite3_value_text(apVal[2]); |
| 188236 | | - zEllips = (const char*)sqlite3_value_text(apVal[3]); |
| 188765 | + ctx.zOpen = fts5ValueToText(apVal[1]); |
| 188766 | + ctx.zClose = fts5ValueToText(apVal[2]); |
| 188767 | + zEllips = fts5ValueToText(apVal[3]); |
| 188237 | 188768 | nToken = sqlite3_value_int(apVal[4]); |
| 188238 | 188769 | |
| 188239 | 188770 | iBestCol = (iCol>=0 ? iCol : 0); |
| 188240 | 188771 | nPhrase = pApi->xPhraseCount(pFts); |
| 188241 | 188772 | aSeen = sqlite3_malloc(nPhrase); |
| | @@ -202410,11 +202941,11 @@ |
| 202410 | 202941 | int nArg, /* Number of args */ |
| 202411 | 202942 | sqlite3_value **apUnused /* Function arguments */ |
| 202412 | 202943 | ){ |
| 202413 | 202944 | assert( nArg==0 ); |
| 202414 | 202945 | UNUSED_PARAM2(nArg, apUnused); |
| 202415 | | - sqlite3_result_text(pCtx, "fts5: 2017-12-13 15:32:33 30bf38d589adf0b2eb613e184ffb03ed7e625736cb04fd5c341328f72bc5ef4d", -1, SQLITE_TRANSIENT); |
| 202946 | + sqlite3_result_text(pCtx, "fts5: 2018-01-06 15:49:57 252ee55a7fc0b068b707af27bd912e684c28320996e78f0675217046b8c2fb49", -1, SQLITE_TRANSIENT); |
| 202416 | 202947 | } |
| 202417 | 202948 | |
| 202418 | 202949 | static int fts5Init(sqlite3 *db){ |
| 202419 | 202950 | static const sqlite3_module fts5Mod = { |
| 202420 | 202951 | /* iVersion */ 2, |
| | @@ -206678,12 +207209,12 @@ |
| 206678 | 207209 | } |
| 206679 | 207210 | #endif /* SQLITE_CORE */ |
| 206680 | 207211 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */ |
| 206681 | 207212 | |
| 206682 | 207213 | /************** End of stmt.c ************************************************/ |
| 206683 | | -#if __LINE__!=206683 |
| 207214 | +#if __LINE__!=207214 |
| 206684 | 207215 | #undef SQLITE_SOURCE_ID |
| 206685 | | -#define SQLITE_SOURCE_ID "2017-12-13 20:35:34 1c0aa919ee429cd194820ec9c54084563f39e63fd399b23f859fc6703b42alt2" |
| 207216 | +#define SQLITE_SOURCE_ID "2018-01-07 20:38:10 67c4a8c6881e33b830aa27c80e7e3d697a4222939edd77cd5ca77ece1647alt2" |
| 206686 | 207217 | #endif |
| 206687 | 207218 | /* Return the source-id for this library */ |
| 206688 | 207219 | SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; } |
| 206689 | 207220 | /************************** End of sqlite3.c ******************************/ |
| 206690 | 207221 | |