Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Update the built-in SQLite to version 3.23.1. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
52b3b8ed223190c52501f19850a307e4 |
User & Date: | drh 2018-04-10 17:48:28 |
Context
2018-04-11
| ||
20:34 | Correct minor typo ... (check-in: 805a58c3 user: andygoth tags: trunk) | |
08:16 | Merge trunk. Update to Beta 2 of OpenSSL 1.1.1 (with TLS 1.3 support !!!) ... (check-in: 87f3c946 user: jan.nijtmans tags: openssl-1.1) | |
2018-04-10
| ||
17:48 | Update the built-in SQLite to version 3.23.1. ... (check-in: 52b3b8ed user: drh tags: trunk) | |
11:55 | Enhance the replacement algorithm for the tarball cache so that it gives extra weight to tarballs that have been accessed more than once. ... (check-in: 7ffa5ae0 user: drh tags: trunk) | |
Changes
Changes to src/shell.c.
︙ | ︙ | |||
11253 11254 11255 11256 11257 11258 11259 | if( f==0 ){ utf8_printf(stderr, "Error: cannot open \"%s\"\n", zFile); } } return f; } | < | 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 | if( f==0 ){ utf8_printf(stderr, "Error: cannot open \"%s\"\n", zFile); } } return f; } #if !defined(SQLITE_OMIT_TRACE) && !defined(SQLITE_OMIT_FLOATING_POINT) /* ** A routine for handling output from sqlite3_trace(). */ static int sql_trace_callback( unsigned mType, void *pArg, |
︙ | ︙ | |||
11275 11276 11277 11278 11279 11280 11281 | const char *z = (const char*)pX; int i = strlen30(z); while( i>0 && z[i-1]==';' ){ i--; } utf8_printf(f, "%.*s;\n", i, z); } return 0; } | < | 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 | const char *z = (const char*)pX; int i = strlen30(z); while( i>0 && z[i-1]==';' ){ i--; } utf8_printf(f, "%.*s;\n", i, z); } return 0; } #endif /* ** A no-op routine that runs with the ".breakpoint" doc-command. This is ** a useful spot to set a debugger breakpoint. */ static void test_breakpoint(void){ |
︙ | ︙ |
Changes to src/sqlite3.c.
1 2 | /****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite | | | 1 2 3 4 5 6 7 8 9 10 | /****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite ** version 3.23.1. By combining all the individual C code files into this ** single large file, the entire code can be compiled as a single translation ** unit. This allows many compilers to do optimizations that would not be ** possible if the files were compiled separately. Performance improvements ** of 5% or more are commonly seen when SQLite is compiled as a single ** translation unit. ** ** This file is all you need to compile SQLite. To use SQLite in other |
︙ | ︙ | |||
1143 1144 1145 1146 1147 1148 1149 | ** been edited in any way since it was last checked in, then the last ** four hexadecimal digits of the hash may be modified. ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ | | | | | 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 | ** been edited in any way since it was last checked in, then the last ** four hexadecimal digits of the hash may be modified. ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.23.1" #define SQLITE_VERSION_NUMBER 3023001 #define SQLITE_SOURCE_ID "2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b" /* ** CAPI3REF: Run-Time Library Version Numbers ** KEYWORDS: sqlite3_version sqlite3_sourceid ** ** These interfaces provide the same information as the [SQLITE_VERSION], ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros |
︙ | ︙ | |||
11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 | ** may set (*ppRebase) to point to a "rebase" that may be used with the ** sqlite3_rebaser APIs buffer before returning. In this case (*pnRebase) ** is set to the size of the buffer in bytes. It is the responsibility of the ** caller to eventually free any such buffer using sqlite3_free(). The buffer ** is only allocated and populated if one or more conflicts were encountered ** while applying the patchset. See comments surrounding the sqlite3_rebaser ** APIs for further details. */ SQLITE_API int sqlite3changeset_apply( sqlite3 *db, /* Apply change to "main" db of this handle */ int nChangeset, /* Size of changeset in bytes */ void *pChangeset, /* Changeset blob */ int(*xFilter)( void *pCtx, /* Copy of sixth arg to _apply() */ | > > > > > > > | 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 | ** may set (*ppRebase) to point to a "rebase" that may be used with the ** sqlite3_rebaser APIs buffer before returning. In this case (*pnRebase) ** is set to the size of the buffer in bytes. It is the responsibility of the ** caller to eventually free any such buffer using sqlite3_free(). The buffer ** is only allocated and populated if one or more conflicts were encountered ** while applying the patchset. See comments surrounding the sqlite3_rebaser ** APIs for further details. ** ** The behavior of sqlite3changeset_apply_v2() and its streaming equivalent ** may be modified by passing a combination of ** [SQLITE_CHANGESETAPPLY_NOSAVEPOINT | supported flags] as the 9th parameter. ** ** Note that the sqlite3changeset_apply_v2() API is still <b>experimental</b> ** and therefore subject to change. */ SQLITE_API int sqlite3changeset_apply( sqlite3 *db, /* Apply change to "main" db of this handle */ int nChangeset, /* Size of changeset in bytes */ void *pChangeset, /* Changeset blob */ int(*xFilter)( void *pCtx, /* Copy of sixth arg to _apply() */ |
︙ | ︙ | |||
11156 11157 11158 11159 11160 11161 11162 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ | | > > > > > > > > > > > > > > > > > > > | 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ void **ppRebase, int *pnRebase, /* OUT: Rebase data */ int flags /* Combination of SESSION_APPLY_* flags */ ); /* ** CAPI3REF: Flags for sqlite3changeset_apply_v2 ** ** The following flags may passed via the 9th parameter to ** [sqlite3changeset_apply_v2] and [sqlite3changeset_apply_v2_strm]: ** ** <dl> ** <dt>SQLITE_CHANGESETAPPLY_NOSAVEPOINT <dd> ** Usually, the sessions module encloses all operations performed by ** a single call to apply_v2() or apply_v2_strm() in a [SAVEPOINT]. The ** SAVEPOINT is committed if the changeset or patchset is successfully ** applied, or rolled back if an error occurs. Specifying this flag ** causes the sessions module to omit this savepoint. In this case, if the ** caller has an open transaction or savepoint when apply_v2() is called, ** it may revert the partially applied changeset by rolling it back. */ #define SQLITE_CHANGESETAPPLY_NOSAVEPOINT 0x0001 /* ** CAPI3REF: Constants Passed To The Conflict Handler ** ** Values that may be passed as the second argument to a conflict-handler. ** ** <dl> ** <dt>SQLITE_CHANGESET_DATA<dd> |
︙ | ︙ | |||
11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 | ** ** The six streaming API xxx_strm() functions serve similar purposes to the ** corresponding non-streaming API functions: ** ** <table border=1 style="margin-left:8ex;margin-right:8ex"> ** <tr><th>Streaming function<th>Non-streaming equivalent</th> ** <tr><td>sqlite3changeset_apply_strm<td>[sqlite3changeset_apply] ** <tr><td>sqlite3changeset_concat_strm<td>[sqlite3changeset_concat] ** <tr><td>sqlite3changeset_invert_strm<td>[sqlite3changeset_invert] ** <tr><td>sqlite3changeset_start_strm<td>[sqlite3changeset_start] ** <tr><td>sqlite3session_changeset_strm<td>[sqlite3session_changeset] ** <tr><td>sqlite3session_patchset_strm<td>[sqlite3session_patchset] ** </table> ** | > | 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 | ** ** The six streaming API xxx_strm() functions serve similar purposes to the ** corresponding non-streaming API functions: ** ** <table border=1 style="margin-left:8ex;margin-right:8ex"> ** <tr><th>Streaming function<th>Non-streaming equivalent</th> ** <tr><td>sqlite3changeset_apply_strm<td>[sqlite3changeset_apply] ** <tr><td>sqlite3changeset_apply_strm_v2<td>[sqlite3changeset_apply_v2] ** <tr><td>sqlite3changeset_concat_strm<td>[sqlite3changeset_concat] ** <tr><td>sqlite3changeset_invert_strm<td>[sqlite3changeset_invert] ** <tr><td>sqlite3changeset_start_strm<td>[sqlite3changeset_start] ** <tr><td>sqlite3session_changeset_strm<td>[sqlite3session_changeset] ** <tr><td>sqlite3session_patchset_strm<td>[sqlite3session_patchset] ** </table> ** |
︙ | ︙ | |||
11528 11529 11530 11531 11532 11533 11534 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ | | > | 11555 11556 11557 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ void **ppRebase, int *pnRebase, int flags ); SQLITE_API int sqlite3changeset_concat_strm( int (*xInputA)(void *pIn, void *pData, int *pnData), void *pInA, int (*xInputB)(void *pIn, void *pData, int *pnData), void *pInB, int (*xOutput)(void *pOut, const void *pData, int nData), |
︙ | ︙ | |||
21283 21284 21285 21286 21287 21288 21289 21290 21291 21292 21293 21294 21295 21296 21297 21298 21299 21300 21301 21302 21303 21304 21305 21306 | ** and we need to know about the failures. Use sqlite3OsFileControlHint() ** when simply tossing information over the wall to the VFS and we do not ** really care if the VFS receives and understands the information since it ** is only a hint and can be safely ignored. The sqlite3OsFileControlHint() ** routine has no return value since the return value would be meaningless. */ SQLITE_PRIVATE int sqlite3OsFileControl(sqlite3_file *id, int op, void *pArg){ #ifdef SQLITE_TEST if( op!=SQLITE_FCNTL_COMMIT_PHASETWO && op!=SQLITE_FCNTL_LOCK_TIMEOUT ){ /* Faults are not injected into COMMIT_PHASETWO because, assuming SQLite ** is using a regular VFS, it is called after the corresponding ** transaction has been committed. Injecting a fault at this point ** confuses the test scripts - the COMMIT comand returns SQLITE_NOMEM ** but the transaction is committed anyway. ** ** The core must call OsFileControl() though, not OsFileControlHint(), ** as if a custom VFS (e.g. zipvfs) returns an error here, it probably ** means the commit really has failed and an error should be returned ** to the user. */ DO_OS_MALLOC_TEST(id); } #endif | > < | 21311 21312 21313 21314 21315 21316 21317 21318 21319 21320 21321 21322 21323 21324 21325 21326 21327 21328 21329 21330 21331 21332 21333 21334 21335 21336 21337 21338 21339 21340 21341 21342 | ** and we need to know about the failures. Use sqlite3OsFileControlHint() ** when simply tossing information over the wall to the VFS and we do not ** really care if the VFS receives and understands the information since it ** is only a hint and can be safely ignored. The sqlite3OsFileControlHint() ** routine has no return value since the return value would be meaningless. */ SQLITE_PRIVATE int sqlite3OsFileControl(sqlite3_file *id, int op, void *pArg){ if( id->pMethods==0 ) return SQLITE_NOTFOUND; #ifdef SQLITE_TEST if( op!=SQLITE_FCNTL_COMMIT_PHASETWO && op!=SQLITE_FCNTL_LOCK_TIMEOUT ){ /* Faults are not injected into COMMIT_PHASETWO because, assuming SQLite ** is using a regular VFS, it is called after the corresponding ** transaction has been committed. Injecting a fault at this point ** confuses the test scripts - the COMMIT comand returns SQLITE_NOMEM ** but the transaction is committed anyway. ** ** The core must call OsFileControl() though, not OsFileControlHint(), ** as if a custom VFS (e.g. zipvfs) returns an error here, it probably ** means the commit really has failed and an error should be returned ** to the user. */ DO_OS_MALLOC_TEST(id); } #endif return id->pMethods->xFileControl(id, op, pArg); } SQLITE_PRIVATE void sqlite3OsFileControlHint(sqlite3_file *id, int op, void *pArg){ if( id->pMethods ) (void)id->pMethods->xFileControl(id, op, pArg); } SQLITE_PRIVATE int sqlite3OsSectorSize(sqlite3_file *id){ |
︙ | ︙ | |||
98996 98997 98998 98999 99000 99001 99002 99003 99004 99005 99006 99007 99008 99009 99010 99011 99012 99013 99014 99015 99016 99017 99018 99019 99020 99021 99022 99023 99024 99025 99026 99027 99028 | ** a later stage of processing, so the TK_AGG_FUNCTION case does not ** need to be considered here. */ assert( pExpr->op!=TK_AGG_COLUMN ); testcase( pExpr->op==TK_AGG_FUNCTION ); if( ExprHasProperty(pExpr, EP_FromJoin) ) return WRC_Prune; switch( pExpr->op ){ case TK_ISNULL: case TK_IS: case TK_OR: case TK_CASE: case TK_IN: case TK_FUNCTION: testcase( pExpr->op==TK_ISNULL ); testcase( pExpr->op==TK_IS ); testcase( pExpr->op==TK_OR ); testcase( pExpr->op==TK_CASE ); testcase( pExpr->op==TK_IN ); testcase( pExpr->op==TK_FUNCTION ); return WRC_Prune; case TK_COLUMN: if( pWalker->u.iCur==pExpr->iTable ){ pWalker->eCode = 1; return WRC_Abort; } return WRC_Prune; default: return WRC_Continue; } } /* ** Return true (non-zero) if expression p can only be true if at least | > > > > > > > > > > > > > > > > > > > > > > > > > | 99024 99025 99026 99027 99028 99029 99030 99031 99032 99033 99034 99035 99036 99037 99038 99039 99040 99041 99042 99043 99044 99045 99046 99047 99048 99049 99050 99051 99052 99053 99054 99055 99056 99057 99058 99059 99060 99061 99062 99063 99064 99065 99066 99067 99068 99069 99070 99071 99072 99073 99074 99075 99076 99077 99078 99079 99080 99081 | ** a later stage of processing, so the TK_AGG_FUNCTION case does not ** need to be considered here. */ assert( pExpr->op!=TK_AGG_COLUMN ); testcase( pExpr->op==TK_AGG_FUNCTION ); if( ExprHasProperty(pExpr, EP_FromJoin) ) return WRC_Prune; switch( pExpr->op ){ case TK_ISNOT: case TK_NOT: case TK_ISNULL: case TK_IS: case TK_OR: case TK_CASE: case TK_IN: case TK_FUNCTION: testcase( pExpr->op==TK_ISNOT ); testcase( pExpr->op==TK_NOT ); testcase( pExpr->op==TK_ISNULL ); testcase( pExpr->op==TK_IS ); testcase( pExpr->op==TK_OR ); testcase( pExpr->op==TK_CASE ); testcase( pExpr->op==TK_IN ); testcase( pExpr->op==TK_FUNCTION ); return WRC_Prune; case TK_COLUMN: if( pWalker->u.iCur==pExpr->iTable ){ pWalker->eCode = 1; return WRC_Abort; } return WRC_Prune; /* Virtual tables are allowed to use constraints like x=NULL. So ** a term of the form x=y does not prove that y is not null if x ** is the column of a virtual table */ case TK_EQ: case TK_NE: case TK_LT: case TK_LE: case TK_GT: case TK_GE: testcase( pExpr->op==TK_EQ ); testcase( pExpr->op==TK_NE ); testcase( pExpr->op==TK_LT ); testcase( pExpr->op==TK_LE ); testcase( pExpr->op==TK_GT ); testcase( pExpr->op==TK_GE ); if( (pExpr->pLeft->op==TK_COLUMN && IsVirtual(pExpr->pLeft->pTab)) || (pExpr->pRight->op==TK_COLUMN && IsVirtual(pExpr->pRight->pTab)) ){ return WRC_Prune; } default: return WRC_Continue; } } /* ** Return true (non-zero) if expression p can only be true if at least |
︙ | ︙ | |||
104602 104603 104604 104605 104606 104607 104608 | ** the schema-version whenever the schema changes. */ SQLITE_PRIVATE void sqlite3ChangeCookie(Parse *pParse, int iDb){ sqlite3 *db = pParse->db; Vdbe *v = pParse->pVdbe; assert( sqlite3SchemaMutexHeld(db, iDb, 0) ); sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_SCHEMA_VERSION, | | | 104655 104656 104657 104658 104659 104660 104661 104662 104663 104664 104665 104666 104667 104668 104669 | ** the schema-version whenever the schema changes. */ SQLITE_PRIVATE void sqlite3ChangeCookie(Parse *pParse, int iDb){ sqlite3 *db = pParse->db; Vdbe *v = pParse->pVdbe; assert( sqlite3SchemaMutexHeld(db, iDb, 0) ); sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_SCHEMA_VERSION, (int)(1+(unsigned)db->aDb[iDb].pSchema->schema_cookie)); } /* ** Measure the number of characters needed to output the given ** identifier. The number returned includes any quotes used ** but does not include the null terminator. ** |
︙ | ︙ | |||
124591 124592 124593 124594 124595 124596 124597 | } assert( p->pSrc!=0 ); if( (selFlags & SF_Expanded)!=0 ){ return WRC_Prune; } pTabList = p->pSrc; pEList = p->pEList; | < | < | 124644 124645 124646 124647 124648 124649 124650 124651 124652 124653 124654 124655 124656 124657 124658 | } assert( p->pSrc!=0 ); if( (selFlags & SF_Expanded)!=0 ){ return WRC_Prune; } pTabList = p->pSrc; pEList = p->pEList; sqlite3WithPush(pParse, p->pWith, 0); /* Make sure cursor numbers have been assigned to all entries in ** the FROM clause of the SELECT statement. */ sqlite3SrcListAssignCursors(pParse, pTabList); /* Look up every table named in the FROM clause of the select. If |
︙ | ︙ | |||
128056 128057 128058 128059 128060 128061 128062 | assert( pPk!=0 ); nPk = pPk->nKeyCol; iPk = pParse->nMem+1; pParse->nMem += nPk; regKey = ++pParse->nMem; iEph = pParse->nTab++; | | | 128107 128108 128109 128110 128111 128112 128113 128114 128115 128116 128117 128118 128119 128120 128121 | assert( pPk!=0 ); nPk = pPk->nKeyCol; iPk = pParse->nMem+1; pParse->nMem += nPk; regKey = ++pParse->nMem; iEph = pParse->nTab++; sqlite3VdbeAddOp3(v, OP_Null, 0, iPk, iPk+nPk-1); addrOpen = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, iEph, nPk); sqlite3VdbeSetP4KeyInfo(pParse, pPk); } /* Begin the database scan. ** ** Do not consider a single-pass strategy for a multi-row update if |
︙ | ︙ | |||
130228 130229 130230 130231 130232 130233 130234 | ** a separate source file for easier editing. */ /* ** Trace output macros */ #if defined(SQLITE_TEST) || defined(SQLITE_DEBUG) | | | 130279 130280 130281 130282 130283 130284 130285 130286 130287 130288 130289 130290 130291 130292 130293 | ** a separate source file for easier editing. */ /* ** Trace output macros */ #if defined(SQLITE_TEST) || defined(SQLITE_DEBUG) /***/ extern int sqlite3WhereTrace; #endif #if defined(SQLITE_DEBUG) \ && (defined(SQLITE_TEST) || defined(SQLITE_ENABLE_WHERETRACE)) # define WHERETRACE(K,X) if(sqlite3WhereTrace&(K)) sqlite3DebugPrintf X # define WHERETRACE_ENABLED 1 #else # define WHERETRACE(K,X) |
︙ | ︙ | |||
136881 136882 136883 136884 136885 136886 136887 | int rc = SQLITE_OK; /* Return code */ LogEst rSize; /* Number of rows in the table */ LogEst rLogSize; /* Logarithm of table size */ WhereTerm *pTop = 0, *pBtm = 0; /* Top and bottom range constraints */ pNew = pBuilder->pNew; if( db->mallocFailed ) return SQLITE_NOMEM_BKPT; | | | | 136932 136933 136934 136935 136936 136937 136938 136939 136940 136941 136942 136943 136944 136945 136946 136947 | int rc = SQLITE_OK; /* Return code */ LogEst rSize; /* Number of rows in the table */ LogEst rLogSize; /* Logarithm of table size */ WhereTerm *pTop = 0, *pBtm = 0; /* Top and bottom range constraints */ pNew = pBuilder->pNew; if( db->mallocFailed ) return SQLITE_NOMEM_BKPT; WHERETRACE(0x800, ("BEGIN %s.addBtreeIdx(%s), nEq=%d\n", pProbe->pTable->zName,pProbe->zName, pNew->u.btree.nEq)); assert( (pNew->wsFlags & WHERE_VIRTUALTABLE)==0 ); assert( (pNew->wsFlags & WHERE_TOP_LIMIT)==0 ); if( pNew->wsFlags & WHERE_BTM_LIMIT ){ opMask = WO_LT|WO_LE; }else{ assert( pNew->u.btree.nBtm==0 ); |
︙ | ︙ | |||
137168 137169 137170 137171 137172 137173 137174 | whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nIter + nInMul); pNew->nOut = saved_nOut; pNew->u.btree.nEq = saved_nEq; pNew->nSkip = saved_nSkip; pNew->wsFlags = saved_wsFlags; } | | | | 137219 137220 137221 137222 137223 137224 137225 137226 137227 137228 137229 137230 137231 137232 137233 137234 | whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nIter + nInMul); pNew->nOut = saved_nOut; pNew->u.btree.nEq = saved_nEq; pNew->nSkip = saved_nSkip; pNew->wsFlags = saved_wsFlags; } WHERETRACE(0x800, ("END %s.addBtreeIdx(%s), nEq=%d, rc=%d\n", pProbe->pTable->zName, pProbe->zName, saved_nEq, rc)); return rc; } /* ** Return True if it is possible that pIndex might be useful in ** implementing the ORDER BY clause in pBuilder. ** |
︙ | ︙ | |||
137607 137608 137609 137610 137611 137612 137613 | int j = pIdxCons->iTermOffset; if( iTerm>=nConstraint || j<0 || j>=pWC->nTerm || pNew->aLTerm[iTerm]!=0 || pIdxCons->usable==0 ){ | < > | | 137658 137659 137660 137661 137662 137663 137664 137665 137666 137667 137668 137669 137670 137671 137672 137673 137674 | int j = pIdxCons->iTermOffset; if( iTerm>=nConstraint || j<0 || j>=pWC->nTerm || pNew->aLTerm[iTerm]!=0 || pIdxCons->usable==0 ){ sqlite3ErrorMsg(pParse,"%s.xBestIndex malfunction",pSrc->pTab->zName); testcase( pIdxInfo->needToFreeIdxStr ); return SQLITE_ERROR; } testcase( iTerm==nConstraint-1 ); testcase( j==0 ); testcase( j==pWC->nTerm-1 ); pTerm = &pWC->a[j]; pNew->prereq |= pTerm->prereqRight; assert( iTerm<pNew->nLSlot ); |
︙ | ︙ | |||
137637 137638 137639 137640 137641 137642 137643 137644 137645 137646 137647 137648 137649 137650 | *pbIn = 1; assert( (mExclude & WO_IN)==0 ); } } } pNew->u.vtab.omitMask &= ~mNoOmit; pNew->nLTerm = mxTerm+1; assert( pNew->nLTerm<=pNew->nLSlot ); pNew->u.vtab.idxNum = pIdxInfo->idxNum; pNew->u.vtab.needFree = pIdxInfo->needToFreeIdxStr; pIdxInfo->needToFreeIdxStr = 0; pNew->u.vtab.idxStr = pIdxInfo->idxStr; pNew->u.vtab.isOrdered = (i8)(pIdxInfo->orderByConsumed ? pIdxInfo->nOrderBy : 0); | > > > > > > > > > | 137688 137689 137690 137691 137692 137693 137694 137695 137696 137697 137698 137699 137700 137701 137702 137703 137704 137705 137706 137707 137708 137709 137710 | *pbIn = 1; assert( (mExclude & WO_IN)==0 ); } } } pNew->u.vtab.omitMask &= ~mNoOmit; pNew->nLTerm = mxTerm+1; for(i=0; i<=mxTerm; i++){ if( pNew->aLTerm[i]==0 ){ /* The non-zero argvIdx values must be contiguous. Raise an ** error if they are not */ sqlite3ErrorMsg(pParse,"%s.xBestIndex malfunction",pSrc->pTab->zName); testcase( pIdxInfo->needToFreeIdxStr ); return SQLITE_ERROR; } } assert( pNew->nLTerm<=pNew->nLSlot ); pNew->u.vtab.idxNum = pIdxInfo->idxNum; pNew->u.vtab.needFree = pIdxInfo->needToFreeIdxStr; pIdxInfo->needToFreeIdxStr = 0; pNew->u.vtab.idxStr = pIdxInfo->idxStr; pNew->u.vtab.isOrdered = (i8)(pIdxInfo->orderByConsumed ? pIdxInfo->nOrderBy : 0); |
︙ | ︙ | |||
137752 137753 137754 137755 137756 137757 137758 137759 137760 137761 137762 137763 137764 137765 | nConstraint = p->nConstraint; if( whereLoopResize(pParse->db, pNew, nConstraint) ){ sqlite3DbFree(pParse->db, p); return SQLITE_NOMEM_BKPT; } /* First call xBestIndex() with all constraints usable. */ WHERETRACE(0x40, (" VirtualOne: all usable\n")); rc = whereLoopAddVirtualOne(pBuilder, mPrereq, ALLBITS, 0, p, mNoOmit, &bIn); /* If the call to xBestIndex() with all terms enabled produced a plan ** that does not require any source tables (IOW: a plan with mBest==0), ** then there is no point in making any further calls to xBestIndex() ** since they will all return the same result (if the xBestIndex() | > | 137812 137813 137814 137815 137816 137817 137818 137819 137820 137821 137822 137823 137824 137825 137826 | nConstraint = p->nConstraint; if( whereLoopResize(pParse->db, pNew, nConstraint) ){ sqlite3DbFree(pParse->db, p); return SQLITE_NOMEM_BKPT; } /* First call xBestIndex() with all constraints usable. */ WHERETRACE(0x800, ("BEGIN %s.addVirtual()\n", pSrc->pTab->zName)); WHERETRACE(0x40, (" VirtualOne: all usable\n")); rc = whereLoopAddVirtualOne(pBuilder, mPrereq, ALLBITS, 0, p, mNoOmit, &bIn); /* If the call to xBestIndex() with all terms enabled produced a plan ** that does not require any source tables (IOW: a plan with mBest==0), ** then there is no point in making any further calls to xBestIndex() ** since they will all return the same result (if the xBestIndex() |
︙ | ︙ | |||
137827 137828 137829 137830 137831 137832 137833 137834 137835 137836 137837 137838 137839 137840 | rc = whereLoopAddVirtualOne( pBuilder, mPrereq, mPrereq, WO_IN, p, mNoOmit, &bIn); } } if( p->needToFreeIdxStr ) sqlite3_free(p->idxStr); sqlite3DbFreeNN(pParse->db, p); return rc; } #endif /* SQLITE_OMIT_VIRTUALTABLE */ /* ** Add WhereLoop entries to handle OR terms. This works for either ** btrees or virtual tables. | > | 137888 137889 137890 137891 137892 137893 137894 137895 137896 137897 137898 137899 137900 137901 137902 | rc = whereLoopAddVirtualOne( pBuilder, mPrereq, mPrereq, WO_IN, p, mNoOmit, &bIn); } } if( p->needToFreeIdxStr ) sqlite3_free(p->idxStr); sqlite3DbFreeNN(pParse->db, p); WHERETRACE(0x800, ("END %s.addVirtual(), rc=%d\n", pSrc->pTab->zName, rc)); return rc; } #endif /* SQLITE_OMIT_VIRTUALTABLE */ /* ** Add WhereLoop entries to handle OR terms. This works for either ** btrees or virtual tables. |
︙ | ︙ | |||
139967 139968 139969 139970 139971 139972 139973 | #define YYSTACKDEPTH 100 #endif #define sqlite3ParserARG_SDECL Parse *pParse; #define sqlite3ParserARG_PDECL ,Parse *pParse #define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse #define sqlite3ParserARG_STORE yypParser->pParse = pParse #define YYFALLBACK 1 | | | | | | | | | | | | 140029 140030 140031 140032 140033 140034 140035 140036 140037 140038 140039 140040 140041 140042 140043 140044 140045 140046 140047 140048 140049 140050 140051 140052 140053 | #define YYSTACKDEPTH 100 #endif #define sqlite3ParserARG_SDECL Parse *pParse; #define sqlite3ParserARG_PDECL ,Parse *pParse #define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse #define sqlite3ParserARG_STORE yypParser->pParse = pParse #define YYFALLBACK 1 #define YYNSTATE 472 #define YYNRULE 333 #define YYNTOKEN 143 #define YY_MAX_SHIFT 471 #define YY_MIN_SHIFTREDUCE 681 #define YY_MAX_SHIFTREDUCE 1013 #define YY_ERROR_ACTION 1014 #define YY_ACCEPT_ACTION 1015 #define YY_NO_ACTION 1016 #define YY_MIN_REDUCE 1017 #define YY_MAX_REDUCE 1349 /************* End control #defines *******************************************/ /* Define the yytestcase() macro to be a no-op if is not already defined ** otherwise. ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production |
︙ | ︙ | |||
140043 140044 140045 140046 140047 140048 140049 | ** yy_shift_ofst[] For each state, the offset into yy_action for ** shifting terminals. ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | < | | | | | | > | | | | | | | | | > | < < | > | > | < < | | | | | | | | | | | | | | | | | | | > > | | | | > | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | 140105 140106 140107 140108 140109 140110 140111 140112 140113 140114 140115 140116 140117 140118 140119 140120 140121 140122 140123 140124 140125 140126 140127 140128 140129 140130 140131 140132 140133 140134 140135 140136 140137 140138 140139 140140 140141 140142 140143 140144 140145 140146 140147 140148 140149 140150 140151 140152 140153 140154 140155 140156 140157 140158 140159 140160 140161 140162 140163 140164 140165 140166 140167 140168 140169 140170 140171 140172 140173 140174 140175 140176 140177 140178 140179 140180 140181 140182 140183 140184 140185 140186 140187 140188 140189 140190 140191 140192 140193 140194 140195 140196 140197 140198 140199 140200 140201 140202 140203 140204 140205 140206 140207 140208 140209 140210 140211 140212 140213 140214 140215 140216 140217 140218 140219 140220 140221 140222 140223 140224 140225 140226 140227 140228 140229 140230 140231 140232 140233 140234 140235 140236 140237 140238 140239 140240 140241 140242 140243 140244 140245 140246 140247 140248 140249 140250 140251 140252 140253 140254 140255 140256 140257 140258 140259 140260 140261 140262 140263 140264 140265 140266 140267 140268 140269 140270 140271 140272 140273 140274 140275 140276 140277 140278 140279 140280 140281 140282 140283 140284 140285 140286 140287 140288 140289 140290 140291 140292 140293 140294 140295 140296 140297 140298 140299 140300 140301 140302 140303 140304 140305 140306 140307 140308 140309 140310 140311 140312 140313 140314 140315 140316 140317 140318 140319 140320 140321 140322 140323 140324 140325 140326 140327 140328 140329 140330 140331 140332 140333 140334 140335 140336 140337 140338 140339 140340 140341 140342 140343 140344 140345 140346 140347 140348 140349 140350 140351 140352 140353 140354 140355 140356 140357 140358 140359 140360 140361 140362 140363 140364 140365 140366 140367 140368 140369 140370 140371 140372 140373 140374 140375 140376 140377 140378 140379 140380 140381 140382 140383 140384 140385 140386 140387 140388 140389 140390 140391 140392 140393 140394 140395 140396 140397 140398 140399 140400 140401 140402 140403 140404 140405 140406 140407 140408 140409 140410 140411 140412 140413 140414 140415 140416 140417 140418 140419 140420 140421 140422 140423 140424 140425 140426 140427 140428 140429 140430 140431 140432 140433 140434 140435 140436 140437 140438 140439 140440 140441 140442 140443 140444 140445 140446 140447 140448 140449 140450 140451 140452 140453 140454 140455 140456 140457 140458 140459 140460 140461 140462 140463 140464 140465 140466 140467 140468 140469 140470 140471 140472 140473 140474 140475 140476 140477 140478 140479 140480 140481 140482 140483 140484 140485 140486 140487 140488 140489 140490 140491 140492 140493 140494 140495 140496 140497 140498 140499 140500 140501 140502 140503 140504 140505 140506 140507 140508 140509 140510 140511 140512 140513 140514 140515 140516 140517 140518 140519 140520 140521 140522 140523 140524 140525 140526 140527 140528 140529 140530 140531 140532 140533 140534 140535 140536 140537 140538 140539 140540 140541 140542 140543 140544 140545 140546 140547 140548 140549 140550 140551 140552 140553 140554 140555 140556 140557 140558 140559 140560 140561 140562 140563 140564 140565 140566 140567 140568 140569 140570 140571 140572 140573 140574 140575 140576 140577 140578 140579 140580 140581 140582 140583 140584 140585 140586 140587 140588 140589 140590 140591 140592 140593 | ** yy_shift_ofst[] For each state, the offset into yy_action for ** shifting terminals. ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (1566) static const YYACTIONTYPE yy_action[] = { /* 0 */ 1169, 1015, 167, 167, 1, 168, 466, 1313, 466, 1083, /* 10 */ 1062, 466, 97, 94, 183, 1057, 466, 329, 1083, 342, /* 20 */ 97, 94, 183, 459, 459, 459, 436, 57, 57, 57, /* 30 */ 57, 807, 57, 57, 367, 367, 367, 57, 57, 808, /* 40 */ 1270, 1088, 1088, 104, 105, 95, 991, 991, 868, 871, /* 50 */ 860, 860, 102, 102, 103, 103, 103, 103, 233, 233, /* 60 */ 326, 1011, 449, 437, 449, 446, 351, 449, 461, 1142, /* 70 */ 463, 342, 449, 426, 1316, 209, 180, 742, 80, 299, /* 80 */ 857, 857, 869, 872, 101, 101, 101, 101, 100, 100, /* 90 */ 99, 99, 99, 98, 368, 104, 105, 95, 991, 991, /* 100 */ 868, 871, 860, 860, 102, 102, 103, 103, 103, 103, /* 110 */ 99, 99, 99, 98, 368, 355, 97, 94, 183, 228, /* 120 */ 106, 1012, 407, 342, 101, 101, 101, 101, 100, 100, /* 130 */ 99, 99, 99, 98, 368, 861, 101, 101, 101, 101, /* 140 */ 100, 100, 99, 99, 99, 98, 368, 104, 105, 95, /* 150 */ 991, 991, 868, 871, 860, 860, 102, 102, 103, 103, /* 160 */ 103, 103, 201, 368, 375, 420, 417, 416, 387, 273, /* 170 */ 65, 97, 94, 183, 168, 342, 415, 951, 1343, 396, /* 180 */ 66, 1343, 320, 959, 371, 970, 334, 340, 101, 101, /* 190 */ 101, 101, 100, 100, 99, 99, 99, 98, 368, 104, /* 200 */ 105, 95, 991, 991, 868, 871, 860, 860, 102, 102, /* 210 */ 103, 103, 103, 103, 373, 100, 100, 99, 99, 99, /* 220 */ 98, 368, 970, 971, 972, 201, 1100, 342, 420, 417, /* 230 */ 416, 287, 366, 365, 337, 970, 1162, 463, 949, 415, /* 240 */ 101, 101, 101, 101, 100, 100, 99, 99, 99, 98, /* 250 */ 368, 104, 105, 95, 991, 991, 868, 871, 860, 860, /* 260 */ 102, 102, 103, 103, 103, 103, 777, 241, 233, 233, /* 270 */ 9, 847, 970, 971, 972, 390, 998, 1141, 998, 342, /* 280 */ 463, 252, 829, 719, 98, 368, 840, 298, 338, 142, /* 290 */ 839, 339, 101, 101, 101, 101, 100, 100, 99, 99, /* 300 */ 99, 98, 368, 104, 105, 95, 991, 991, 868, 871, /* 310 */ 860, 860, 102, 102, 103, 103, 103, 103, 272, 466, /* 320 */ 392, 839, 839, 841, 97, 94, 183, 390, 1317, 253, /* 330 */ 456, 342, 125, 166, 807, 712, 208, 407, 386, 970, /* 340 */ 57, 57, 808, 238, 101, 101, 101, 101, 100, 100, /* 350 */ 99, 99, 99, 98, 368, 104, 105, 95, 991, 991, /* 360 */ 868, 871, 860, 860, 102, 102, 103, 103, 103, 103, /* 370 */ 466, 108, 466, 267, 465, 442, 970, 971, 972, 261, /* 380 */ 951, 1344, 909, 342, 1344, 142, 829, 848, 1292, 959, /* 390 */ 371, 55, 55, 57, 57, 242, 101, 101, 101, 101, /* 400 */ 100, 100, 99, 99, 99, 98, 368, 104, 105, 95, /* 410 */ 991, 991, 868, 871, 860, 860, 102, 102, 103, 103, /* 420 */ 103, 103, 272, 382, 262, 253, 456, 310, 364, 253, /* 430 */ 456, 86, 264, 84, 266, 342, 441, 176, 175, 834, /* 440 */ 464, 949, 767, 767, 332, 313, 1094, 396, 101, 101, /* 450 */ 101, 101, 100, 100, 99, 99, 99, 98, 368, 104, /* 460 */ 105, 95, 991, 991, 868, 871, 860, 860, 102, 102, /* 470 */ 103, 103, 103, 103, 227, 227, 233, 233, 233, 233, /* 480 */ 387, 273, 234, 234, 326, 950, 463, 342, 463, 298, /* 490 */ 463, 914, 914, 404, 463, 1037, 123, 265, 27, 970, /* 500 */ 101, 101, 101, 101, 100, 100, 99, 99, 99, 98, /* 510 */ 368, 104, 105, 95, 991, 991, 868, 871, 860, 860, /* 520 */ 102, 102, 103, 103, 103, 103, 435, 233, 233, 466, /* 530 */ 285, 686, 687, 688, 127, 271, 970, 971, 972, 463, /* 540 */ 1345, 327, 342, 407, 157, 1012, 988, 13, 13, 181, /* 550 */ 41, 41, 101, 101, 101, 101, 100, 100, 99, 99, /* 560 */ 99, 98, 368, 715, 794, 378, 104, 105, 95, 991, /* 570 */ 991, 868, 871, 860, 860, 102, 102, 103, 103, 103, /* 580 */ 103, 970, 378, 377, 346, 239, 847, 1086, 1086, 280, /* 590 */ 1169, 283, 204, 203, 202, 177, 298, 342, 407, 298, /* 600 */ 715, 840, 169, 299, 407, 839, 82, 101, 101, 101, /* 610 */ 101, 100, 100, 99, 99, 99, 98, 368, 970, 971, /* 620 */ 972, 104, 105, 95, 991, 991, 868, 871, 860, 860, /* 630 */ 102, 102, 103, 103, 103, 103, 839, 839, 841, 362, /* 640 */ 240, 124, 1169, 172, 126, 378, 1269, 1169, 1066, 342, /* 650 */ 253, 456, 407, 407, 407, 396, 352, 401, 407, 429, /* 660 */ 398, 85, 101, 101, 101, 101, 100, 100, 99, 99, /* 670 */ 99, 98, 368, 104, 105, 95, 991, 991, 868, 871, /* 680 */ 860, 860, 102, 102, 103, 103, 103, 103, 1169, 466, /* 690 */ 230, 233, 233, 792, 1235, 1095, 1091, 1293, 1, 77, /* 700 */ 278, 342, 205, 463, 974, 911, 1040, 348, 353, 911, /* 710 */ 42, 42, 79, 403, 101, 101, 101, 101, 100, 100, /* 720 */ 99, 99, 99, 98, 368, 104, 93, 95, 991, 991, /* 730 */ 868, 871, 860, 860, 102, 102, 103, 103, 103, 103, /* 740 */ 402, 9, 974, 243, 772, 458, 348, 232, 180, 771, /* 750 */ 946, 312, 342, 328, 363, 349, 143, 831, 389, 1278, /* 760 */ 211, 211, 21, 347, 432, 182, 101, 101, 101, 101, /* 770 */ 100, 100, 99, 99, 99, 98, 368, 105, 95, 991, /* 780 */ 991, 868, 871, 860, 860, 102, 102, 103, 103, 103, /* 790 */ 103, 792, 724, 22, 732, 731, 233, 233, 1239, 256, /* 800 */ 391, 274, 342, 211, 79, 360, 257, 413, 463, 397, /* 810 */ 207, 288, 260, 450, 79, 1239, 1241, 101, 101, 101, /* 820 */ 101, 100, 100, 99, 99, 99, 98, 368, 95, 991, /* 830 */ 991, 868, 871, 860, 860, 102, 102, 103, 103, 103, /* 840 */ 103, 91, 457, 296, 3, 233, 233, 5, 438, 212, /* 850 */ 331, 394, 739, 740, 295, 898, 894, 463, 460, 207, /* 860 */ 801, 1237, 722, 211, 698, 843, 1283, 101, 101, 101, /* 870 */ 101, 100, 100, 99, 99, 99, 98, 368, 1239, 380, /* 880 */ 357, 369, 233, 233, 989, 219, 236, 297, 423, 292, /* 890 */ 422, 206, 454, 898, 463, 970, 91, 457, 290, 3, /* 900 */ 722, 142, 268, 843, 847, 466, 1258, 149, 388, 425, /* 910 */ 88, 89, 769, 460, 930, 87, 447, 90, 369, 468, /* 920 */ 467, 385, 989, 839, 1257, 439, 57, 57, 395, 931, /* 930 */ 1065, 158, 970, 971, 972, 772, 369, 471, 1019, 399, /* 940 */ 771, 253, 456, 254, 932, 119, 891, 454, 233, 233, /* 950 */ 4, 970, 1096, 275, 839, 839, 841, 842, 19, 847, /* 960 */ 463, 449, 448, 163, 453, 88, 89, 776, 970, 1127, /* 970 */ 279, 930, 90, 369, 468, 467, 91, 457, 839, 3, /* 980 */ 235, 1064, 466, 1228, 233, 233, 931, 970, 970, 971, /* 990 */ 972, 970, 908, 460, 908, 2, 463, 81, 457, 212, /* 1000 */ 3, 932, 282, 10, 10, 970, 971, 972, 189, 839, /* 1010 */ 839, 841, 842, 19, 460, 284, 369, 354, 907, 286, /* 1020 */ 907, 753, 466, 1079, 970, 971, 972, 454, 970, 971, /* 1030 */ 972, 754, 970, 1063, 989, 372, 792, 369, 1118, 847, /* 1040 */ 291, 452, 466, 10, 10, 88, 89, 142, 454, 168, /* 1050 */ 300, 412, 90, 369, 468, 467, 793, 356, 839, 706, /* 1060 */ 847, 341, 121, 10, 10, 301, 88, 89, 379, 970, /* 1070 */ 971, 972, 989, 90, 369, 468, 467, 244, 205, 839, /* 1080 */ 1306, 245, 1135, 245, 250, 1168, 1114, 253, 456, 839, /* 1090 */ 839, 841, 842, 19, 1125, 237, 122, 451, 1174, 733, /* 1100 */ 324, 324, 323, 222, 321, 466, 1046, 695, 182, 225, /* 1110 */ 839, 839, 841, 842, 19, 103, 103, 103, 103, 96, /* 1120 */ 185, 466, 259, 1039, 1028, 170, 10, 10, 1027, 421, /* 1130 */ 258, 1029, 1300, 708, 792, 466, 408, 734, 8, 347, /* 1140 */ 444, 174, 12, 12, 290, 101, 101, 101, 101, 100, /* 1150 */ 100, 99, 99, 99, 98, 368, 32, 32, 466, 187, /* 1160 */ 466, 1111, 103, 103, 103, 103, 188, 466, 325, 138, /* 1170 */ 186, 708, 303, 305, 307, 358, 970, 270, 393, 43, /* 1180 */ 43, 44, 44, 1157, 333, 178, 418, 294, 45, 45, /* 1190 */ 1232, 318, 101, 101, 101, 101, 100, 100, 99, 99, /* 1200 */ 99, 98, 368, 381, 343, 366, 365, 466, 263, 253, /* 1210 */ 456, 466, 1062, 970, 971, 972, 1231, 997, 309, 466, /* 1220 */ 455, 466, 427, 466, 995, 173, 996, 1303, 46, 46, /* 1230 */ 145, 376, 37, 37, 1006, 1277, 466, 214, 1275, 64, /* 1240 */ 47, 47, 33, 33, 34, 34, 1003, 67, 466, 998, /* 1250 */ 350, 998, 466, 155, 233, 233, 466, 36, 36, 24, /* 1260 */ 140, 77, 1154, 466, 383, 466, 463, 428, 466, 48, /* 1270 */ 48, 466, 147, 49, 49, 466, 150, 50, 50, 466, /* 1280 */ 151, 152, 466, 384, 11, 11, 51, 51, 466, 110, /* 1290 */ 110, 153, 52, 52, 411, 466, 38, 38, 466, 191, /* 1300 */ 53, 53, 466, 54, 54, 466, 400, 466, 330, 39, /* 1310 */ 39, 466, 1164, 466, 25, 466, 56, 56, 466, 131, /* 1320 */ 131, 72, 466, 132, 132, 159, 133, 133, 61, 61, /* 1330 */ 1226, 195, 40, 40, 111, 111, 58, 58, 406, 112, /* 1340 */ 112, 466, 277, 113, 113, 466, 226, 466, 1246, 466, /* 1350 */ 197, 466, 164, 466, 409, 466, 198, 466, 199, 466, /* 1360 */ 335, 281, 109, 109, 466, 1030, 130, 130, 129, 129, /* 1370 */ 117, 117, 116, 116, 114, 114, 115, 115, 60, 60, /* 1380 */ 62, 62, 466, 359, 466, 59, 59, 424, 1082, 1081, /* 1390 */ 1080, 724, 1073, 1054, 336, 293, 1053, 1052, 1315, 431, /* 1400 */ 361, 76, 248, 31, 31, 35, 35, 1072, 249, 440, /* 1410 */ 302, 434, 213, 1122, 6, 311, 1212, 107, 83, 251, /* 1420 */ 78, 1123, 445, 220, 443, 1036, 304, 23, 1121, 469, /* 1430 */ 965, 221, 223, 1104, 314, 224, 344, 317, 315, 316, /* 1440 */ 470, 306, 1025, 1120, 308, 1262, 1020, 134, 120, 246, /* 1450 */ 682, 370, 171, 255, 1263, 135, 184, 1261, 1260, 374, /* 1460 */ 118, 906, 904, 827, 1050, 146, 136, 137, 148, 1049, /* 1470 */ 63, 1047, 756, 190, 269, 920, 154, 156, 68, 69, /* 1480 */ 70, 71, 139, 923, 192, 193, 144, 919, 345, 128, /* 1490 */ 14, 194, 276, 211, 1000, 405, 196, 161, 912, 160, /* 1500 */ 26, 697, 410, 295, 200, 289, 414, 162, 419, 73, /* 1510 */ 15, 16, 141, 74, 28, 247, 846, 845, 735, 874, /* 1520 */ 954, 75, 430, 955, 29, 433, 179, 229, 231, 800, /* 1530 */ 165, 795, 87, 210, 889, 79, 875, 17, 873, 877, /* 1540 */ 929, 18, 928, 216, 215, 878, 20, 30, 462, 844, /* 1550 */ 707, 92, 766, 770, 7, 322, 217, 218, 319, 1308, /* 1560 */ 960, 1016, 1016, 1016, 1016, 1307, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 152, 144, 145, 146, 147, 152, 152, 172, 152, 180, /* 10 */ 181, 152, 223, 224, 225, 180, 152, 164, 189, 19, /* 20 */ 223, 224, 225, 168, 169, 170, 163, 173, 174, 173, /* 30 */ 174, 31, 173, 174, 168, 169, 170, 173, 174, 39, /* 40 */ 243, 191, 192, 43, 44, 45, 46, 47, 48, 49, /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 195, 196, /* 60 */ 22, 23, 208, 209, 208, 209, 218, 208, 209, 176, /* 70 */ 207, 19, 208, 209, 23, 212, 213, 26, 26, 152, /* 80 */ 46, 47, 48, 49, 84, 85, 86, 87, 88, 89, /* 90 */ 90, 91, 92, 93, 94, 43, 44, 45, 46, 47, /* 100 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, /* 110 */ 90, 91, 92, 93, 94, 188, 223, 224, 225, 171, /* 120 */ 68, 83, 152, 19, 84, 85, 86, 87, 88, 89, /* 130 */ 90, 91, 92, 93, 94, 101, 84, 85, 86, 87, /* 140 */ 88, 89, 90, 91, 92, 93, 94, 43, 44, 45, /* 150 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, /* 160 */ 56, 57, 99, 94, 194, 102, 103, 104, 109, 110, /* 170 */ 66, 223, 224, 225, 152, 19, 113, 22, 23, 152, /* 180 */ 24, 26, 160, 1, 2, 59, 164, 173, 84, 85, /* 190 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 43, /* 200 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, /* 210 */ 54, 55, 56, 57, 244, 88, 89, 90, 91, 92, /* 220 */ 93, 94, 96, 97, 98, 99, 196, 19, 102, 103, /* 230 */ 104, 23, 88, 89, 173, 59, 163, 207, 83, 113, /* 240 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, /* 250 */ 94, 43, 44, 45, 46, 47, 48, 49, 50, 51, /* 260 */ 52, 53, 54, 55, 56, 57, 90, 240, 195, 196, /* 270 */ 171, 82, 96, 97, 98, 152, 132, 176, 134, 19, /* 280 */ 207, 200, 72, 23, 93, 94, 97, 152, 173, 79, /* 290 */ 101, 210, 84, 85, 86, 87, 88, 89, 90, 91, /* 300 */ 92, 93, 94, 43, 44, 45, 46, 47, 48, 49, /* 310 */ 50, 51, 52, 53, 54, 55, 56, 57, 108, 152, /* 320 */ 152, 132, 133, 134, 223, 224, 225, 152, 186, 119, /* 330 */ 120, 19, 197, 234, 31, 23, 26, 152, 239, 59, /* 340 */ 173, 174, 39, 220, 84, 85, 86, 87, 88, 89, /* 350 */ 90, 91, 92, 93, 94, 43, 44, 45, 46, 47, /* 360 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, /* 370 */ 152, 22, 152, 16, 152, 208, 96, 97, 98, 194, /* 380 */ 22, 23, 11, 19, 26, 79, 72, 23, 0, 1, /* 390 */ 2, 173, 174, 173, 174, 220, 84, 85, 86, 87, /* 400 */ 88, 89, 90, 91, 92, 93, 94, 43, 44, 45, /* 410 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, /* 420 */ 56, 57, 108, 109, 110, 119, 120, 152, 208, 119, /* 430 */ 120, 137, 75, 139, 77, 19, 152, 88, 89, 23, /* 440 */ 115, 83, 117, 118, 163, 227, 163, 152, 84, 85, /* 450 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 43, /* 460 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, /* 470 */ 54, 55, 56, 57, 195, 196, 195, 196, 195, 196, /* 480 */ 109, 110, 195, 196, 22, 23, 207, 19, 207, 152, /* 490 */ 207, 108, 109, 110, 207, 163, 22, 140, 24, 59, /* 500 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, /* 510 */ 94, 43, 44, 45, 46, 47, 48, 49, 50, 51, /* 520 */ 52, 53, 54, 55, 56, 57, 152, 195, 196, 152, /* 530 */ 16, 7, 8, 9, 197, 240, 96, 97, 98, 207, /* 540 */ 249, 250, 19, 152, 22, 83, 26, 173, 174, 152, /* 550 */ 173, 174, 84, 85, 86, 87, 88, 89, 90, 91, /* 560 */ 92, 93, 94, 59, 124, 152, 43, 44, 45, 46, /* 570 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, /* 580 */ 57, 59, 169, 170, 157, 194, 82, 191, 192, 75, /* 590 */ 152, 77, 108, 109, 110, 26, 152, 19, 152, 152, /* 600 */ 96, 97, 24, 152, 152, 101, 138, 84, 85, 86, /* 610 */ 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, /* 620 */ 98, 43, 44, 45, 46, 47, 48, 49, 50, 51, /* 630 */ 52, 53, 54, 55, 56, 57, 132, 133, 134, 188, /* 640 */ 194, 197, 152, 123, 197, 232, 194, 152, 182, 19, /* 650 */ 119, 120, 152, 152, 152, 152, 218, 230, 152, 163, /* 660 */ 233, 138, 84, 85, 86, 87, 88, 89, 90, 91, /* 670 */ 92, 93, 94, 43, 44, 45, 46, 47, 48, 49, /* 680 */ 50, 51, 52, 53, 54, 55, 56, 57, 152, 152, /* 690 */ 23, 195, 196, 26, 194, 194, 194, 146, 147, 130, /* 700 */ 194, 19, 46, 207, 59, 29, 166, 167, 218, 33, /* 710 */ 173, 174, 26, 218, 84, 85, 86, 87, 88, 89, /* 720 */ 90, 91, 92, 93, 94, 43, 44, 45, 46, 47, /* 730 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, /* 740 */ 64, 171, 97, 240, 116, 166, 167, 212, 213, 121, /* 750 */ 23, 152, 19, 26, 218, 247, 248, 23, 23, 152, /* 760 */ 26, 26, 22, 107, 163, 98, 84, 85, 86, 87, /* 770 */ 88, 89, 90, 91, 92, 93, 94, 44, 45, 46, /* 780 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, /* 790 */ 57, 124, 106, 53, 100, 101, 195, 196, 152, 152, /* 800 */ 23, 23, 19, 26, 26, 19, 152, 23, 207, 239, /* 810 */ 26, 23, 152, 163, 26, 169, 170, 84, 85, 86, /* 820 */ 87, 88, 89, 90, 91, 92, 93, 94, 45, 46, /* 830 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, /* 840 */ 57, 19, 20, 101, 22, 195, 196, 22, 19, 24, /* 850 */ 163, 19, 7, 8, 112, 59, 23, 207, 36, 26, /* 860 */ 23, 152, 59, 26, 21, 59, 152, 84, 85, 86, /* 870 */ 87, 88, 89, 90, 91, 92, 93, 94, 232, 221, /* 880 */ 94, 59, 195, 196, 59, 99, 100, 101, 102, 103, /* 890 */ 104, 105, 70, 97, 207, 59, 19, 20, 112, 22, /* 900 */ 97, 79, 152, 97, 82, 152, 152, 71, 221, 90, /* 910 */ 88, 89, 23, 36, 12, 26, 163, 95, 96, 97, /* 920 */ 98, 78, 97, 101, 152, 96, 173, 174, 96, 27, /* 930 */ 182, 22, 96, 97, 98, 116, 59, 148, 149, 152, /* 940 */ 121, 119, 120, 154, 42, 156, 103, 70, 195, 196, /* 950 */ 22, 59, 163, 152, 132, 133, 134, 135, 136, 82, /* 960 */ 207, 208, 209, 71, 62, 88, 89, 90, 59, 152, /* 970 */ 152, 12, 95, 96, 97, 98, 19, 20, 101, 22, /* 980 */ 22, 182, 152, 140, 195, 196, 27, 59, 96, 97, /* 990 */ 98, 59, 132, 36, 134, 22, 207, 19, 20, 24, /* 1000 */ 22, 42, 152, 173, 174, 96, 97, 98, 219, 132, /* 1010 */ 133, 134, 135, 136, 36, 152, 59, 187, 132, 152, /* 1020 */ 134, 62, 152, 152, 96, 97, 98, 70, 96, 97, /* 1030 */ 98, 72, 59, 152, 59, 246, 26, 59, 214, 82, /* 1040 */ 152, 192, 152, 173, 174, 88, 89, 79, 70, 152, /* 1050 */ 152, 19, 95, 96, 97, 98, 124, 187, 101, 23, /* 1060 */ 82, 164, 26, 173, 174, 152, 88, 89, 100, 96, /* 1070 */ 97, 98, 97, 95, 96, 97, 98, 187, 46, 101, /* 1080 */ 122, 184, 152, 186, 211, 152, 152, 119, 120, 132, /* 1090 */ 133, 134, 135, 136, 152, 5, 22, 152, 152, 35, /* 1100 */ 10, 11, 12, 13, 14, 152, 152, 17, 98, 235, /* 1110 */ 132, 133, 134, 135, 136, 54, 55, 56, 57, 58, /* 1120 */ 30, 152, 32, 152, 152, 198, 173, 174, 152, 65, /* 1130 */ 40, 152, 152, 59, 124, 152, 236, 73, 199, 107, /* 1140 */ 187, 171, 173, 174, 112, 84, 85, 86, 87, 88, /* 1150 */ 89, 90, 91, 92, 93, 94, 173, 174, 152, 69, /* 1160 */ 152, 211, 54, 55, 56, 57, 76, 152, 150, 79, /* 1170 */ 80, 97, 211, 211, 211, 111, 59, 241, 241, 173, /* 1180 */ 174, 173, 174, 202, 202, 185, 177, 176, 173, 174, /* 1190 */ 176, 201, 84, 85, 86, 87, 88, 89, 90, 91, /* 1200 */ 92, 93, 94, 215, 114, 88, 89, 152, 215, 119, /* 1210 */ 120, 152, 181, 96, 97, 98, 176, 100, 215, 152, /* 1220 */ 229, 152, 163, 152, 107, 199, 109, 155, 173, 174, /* 1230 */ 245, 141, 173, 174, 60, 159, 152, 122, 159, 242, /* 1240 */ 173, 174, 173, 174, 173, 174, 38, 242, 152, 132, /* 1250 */ 159, 134, 152, 22, 195, 196, 152, 173, 174, 222, /* 1260 */ 43, 130, 202, 152, 18, 152, 207, 208, 152, 173, /* 1270 */ 174, 152, 190, 173, 174, 152, 193, 173, 174, 152, /* 1280 */ 193, 193, 152, 159, 173, 174, 173, 174, 152, 173, /* 1290 */ 174, 193, 173, 174, 18, 152, 173, 174, 152, 158, /* 1300 */ 173, 174, 152, 173, 174, 152, 159, 152, 202, 173, /* 1310 */ 174, 152, 190, 152, 222, 152, 173, 174, 152, 173, /* 1320 */ 174, 137, 152, 173, 174, 190, 173, 174, 173, 174, /* 1330 */ 202, 158, 173, 174, 173, 174, 173, 174, 61, 173, /* 1340 */ 174, 152, 237, 173, 174, 152, 159, 152, 238, 152, /* 1350 */ 158, 152, 22, 152, 178, 152, 158, 152, 158, 152, /* 1360 */ 178, 159, 173, 174, 152, 159, 173, 174, 173, 174, /* 1370 */ 173, 174, 173, 174, 173, 174, 173, 174, 173, 174, /* 1380 */ 173, 174, 152, 63, 152, 173, 174, 107, 175, 175, /* 1390 */ 175, 106, 183, 175, 178, 175, 177, 175, 175, 178, /* 1400 */ 94, 107, 231, 173, 174, 173, 174, 183, 231, 125, /* 1410 */ 216, 178, 159, 217, 22, 159, 226, 129, 137, 228, /* 1420 */ 128, 217, 126, 25, 127, 162, 216, 26, 217, 161, /* 1430 */ 13, 153, 153, 206, 205, 6, 251, 202, 204, 203, /* 1440 */ 151, 216, 151, 217, 216, 171, 151, 165, 179, 179, /* 1450 */ 4, 3, 22, 142, 171, 165, 15, 171, 171, 81, /* 1460 */ 16, 23, 23, 120, 171, 131, 165, 111, 123, 171, /* 1470 */ 171, 171, 20, 125, 16, 1, 123, 131, 53, 53, /* 1480 */ 53, 53, 111, 96, 34, 122, 248, 1, 251, 5, /* 1490 */ 22, 107, 140, 26, 74, 41, 122, 107, 67, 67, /* 1500 */ 24, 20, 19, 112, 105, 23, 66, 22, 66, 22, /* 1510 */ 22, 22, 37, 22, 22, 66, 23, 23, 28, 23, /* 1520 */ 23, 26, 24, 23, 22, 24, 122, 23, 23, 96, /* 1530 */ 22, 124, 26, 34, 23, 26, 23, 34, 23, 23, /* 1540 */ 23, 34, 23, 22, 26, 11, 22, 22, 26, 23, /* 1550 */ 23, 22, 116, 23, 22, 15, 122, 122, 23, 122, /* 1560 */ 1, 252, 252, 252, 252, 122, 252, 252, 252, 252, /* 1570 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1580 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1590 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1600 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1610 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1620 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1630 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1640 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1650 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1660 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1670 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1680 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1690 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, /* 1700 */ 252, 252, 252, 252, 252, 252, 252, 252, 252, }; #define YY_SHIFT_COUNT (471) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (1559) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 182, 1090, 822, 822, 306, 957, 957, 957, 957, 210, /* 10 */ 0, 0, 104, 630, 957, 957, 957, 957, 957, 957, /* 20 */ 957, 1117, 1117, 126, 968, 306, 306, 306, 306, 306, /* 30 */ 306, 52, 156, 208, 260, 312, 364, 416, 468, 523, /* 40 */ 578, 630, 630, 630, 630, 630, 630, 630, 630, 630, /* 50 */ 630, 630, 630, 630, 630, 630, 630, 630, 682, 630, /* 60 */ 733, 783, 783, 877, 957, 957, 957, 957, 957, 957, /* 70 */ 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, /* 80 */ 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, /* 90 */ 957, 957, 957, 957, 957, 978, 957, 957, 957, 957, /* 100 */ 957, 957, 957, 957, 957, 957, 957, 957, 957, 1061, /* 110 */ 1108, 1108, 1108, 1108, 1108, 40, 127, 20, 280, 843, /* 120 */ 1032, 144, 144, 280, 310, 310, 310, 310, 59, 191, /* 130 */ 69, 1566, 1566, 1566, 786, 786, 786, 522, 836, 522, /* 140 */ 959, 959, 892, 155, 358, 280, 280, 280, 280, 280, /* 150 */ 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, /* 160 */ 280, 280, 280, 280, 280, 280, 371, 388, 645, 645, /* 170 */ 531, 1566, 1566, 1566, 504, 189, 189, 909, 63, 176, /* 180 */ 928, 440, 932, 973, 280, 280, 280, 280, 280, 314, /* 190 */ 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, /* 200 */ 280, 280, 1064, 1064, 1064, 280, 280, 280, 280, 667, /* 210 */ 280, 280, 280, 825, 280, 280, 902, 280, 280, 280, /* 220 */ 280, 280, 280, 280, 280, 383, 676, 325, 975, 975, /* 230 */ 975, 975, 1010, 325, 325, 819, 349, 524, 569, 829, /* 240 */ 829, 832, 569, 832, 686, 51, 656, 303, 303, 303, /* 250 */ 829, 294, 520, 628, 474, 1174, 1115, 1115, 1208, 1208, /* 260 */ 1115, 1231, 1217, 1131, 1246, 1246, 1246, 1246, 1115, 1276, /* 270 */ 1131, 1231, 1217, 1217, 1131, 1115, 1276, 1184, 1277, 1115, /* 280 */ 1276, 1330, 1115, 1276, 1115, 1276, 1330, 1280, 1280, 1280, /* 290 */ 1320, 1330, 1280, 1285, 1280, 1320, 1280, 1280, 1330, 1306, /* 300 */ 1306, 1330, 1284, 1294, 1284, 1294, 1284, 1294, 1284, 1294, /* 310 */ 1115, 1392, 1115, 1281, 1288, 1296, 1292, 1297, 1131, 1398, /* 320 */ 1401, 1417, 1417, 1429, 1429, 1429, 1566, 1566, 1566, 1566, /* 330 */ 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, /* 340 */ 1566, 1566, 34, 357, 38, 462, 514, 484, 1074, 727, /* 350 */ 740, 734, 735, 777, 778, 784, 788, 803, 694, 845, /* 360 */ 742, 796, 833, 837, 889, 860, 886, 1036, 806, 958, /* 370 */ 1446, 1448, 1430, 1311, 1441, 1378, 1444, 1438, 1439, 1343, /* 380 */ 1334, 1356, 1345, 1452, 1348, 1458, 1474, 1353, 1346, 1425, /* 390 */ 1426, 1427, 1428, 1371, 1387, 1450, 1363, 1486, 1484, 1468, /* 400 */ 1384, 1352, 1431, 1467, 1432, 1420, 1454, 1374, 1390, 1476, /* 410 */ 1481, 1483, 1391, 1399, 1485, 1440, 1487, 1488, 1482, 1489, /* 420 */ 1442, 1490, 1491, 1449, 1475, 1493, 1494, 1496, 1495, 1497, /* 430 */ 1492, 1498, 1500, 1502, 1501, 1404, 1504, 1505, 1433, 1499, /* 440 */ 1508, 1407, 1506, 1503, 1509, 1507, 1511, 1513, 1515, 1506, /* 450 */ 1516, 1517, 1518, 1519, 1521, 1534, 1524, 1525, 1526, 1527, /* 460 */ 1529, 1530, 1532, 1522, 1436, 1434, 1435, 1437, 1443, 1535, /* 470 */ 1540, 1559, }; #define YY_REDUCE_COUNT (341) #define YY_REDUCE_MIN (-211) #define YY_REDUCE_MAX (1301) static const short yy_reduce_ofst[] = { /* 0 */ -143, 789, 753, 1059, -137, -146, -144, -141, -136, 687, /* 10 */ -107, 101, -203, -52, 830, 870, 890, 167, 953, 218, /* 20 */ 220, 413, 646, 897, 73, 281, 283, 332, 496, 601, /* 30 */ 650, -211, -211, -211, -211, -211, -211, -211, -211, -211, /* 40 */ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, /* 50 */ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, /* 60 */ -211, -211, -211, 374, 377, 537, 969, 983, 1006, 1008, /* 70 */ 1015, 1055, 1067, 1069, 1071, 1084, 1096, 1100, 1104, 1111, /* 80 */ 1113, 1116, 1119, 1123, 1127, 1130, 1136, 1143, 1146, 1150, /* 90 */ 1153, 1155, 1159, 1161, 1163, 1166, 1170, 1189, 1193, 1195, /* 100 */ 1197, 1199, 1201, 1203, 1205, 1207, 1212, 1230, 1232, -211, /* 110 */ -211, -211, -211, -211, -211, -211, -211, -211, -30, 427, /* 120 */ -171, -145, -134, 22, 279, 287, 279, 287, 99, -211, /* 130 */ -211, -211, -211, -211, -165, -165, -165, 123, 135, 175, /* 140 */ -150, 396, 337, 291, 291, -147, 185, 391, 446, 444, /* 150 */ 452, 500, 501, 502, 27, -152, 295, 438, 490, 503, /* 160 */ 495, 506, -73, 447, 451, 536, 570, 551, 540, 579, /* 170 */ 30, 508, 535, 81, 14, 61, 115, 168, 142, 222, /* 180 */ 275, 284, 397, 599, 607, 647, 654, 660, 709, 658, /* 190 */ 714, 750, 754, 772, 787, 801, 817, 818, 850, 863, /* 200 */ 867, 871, 466, 748, 799, 881, 888, 898, 913, 824, /* 210 */ 930, 933, 934, 873, 942, 945, 849, 946, 222, 954, /* 220 */ 971, 972, 976, 979, 980, 900, 874, 927, 950, 961, /* 230 */ 962, 963, 824, 927, 927, 939, 970, 1018, 981, 988, /* 240 */ 993, 936, 982, 937, 1009, 1000, 1031, 1011, 1014, 1040, /* 250 */ 1003, 991, 990, 1026, 1072, 985, 1076, 1079, 997, 1005, /* 260 */ 1091, 1037, 1082, 1060, 1083, 1087, 1088, 1098, 1124, 1141, /* 270 */ 1106, 1092, 1122, 1135, 1128, 1147, 1173, 1110, 1105, 1187, /* 280 */ 1192, 1176, 1202, 1198, 1206, 1200, 1182, 1213, 1214, 1215, /* 290 */ 1209, 1216, 1218, 1219, 1220, 1224, 1222, 1223, 1221, 1171, /* 300 */ 1177, 1233, 1196, 1194, 1204, 1210, 1211, 1225, 1226, 1228, /* 310 */ 1253, 1190, 1256, 1191, 1227, 1229, 1234, 1236, 1235, 1263, /* 320 */ 1268, 1278, 1279, 1289, 1291, 1295, 1185, 1237, 1238, 1282, /* 330 */ 1274, 1283, 1286, 1287, 1290, 1269, 1270, 1293, 1298, 1299, /* 340 */ 1300, 1301, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 1297, 1349, 1221, 1014, 1119, 1221, 1221, 1221, 1221, 1014, /* 10 */ 1145, 1145, 1272, 1045, 1014, 1014, 1014, 1014, 1014, 1220, /* 20 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 30 */ 1014, 1151, 1014, 1014, 1014, 1014, 1222, 1223, 1014, 1014, /* 40 */ 1014, 1271, 1273, 1161, 1160, 1159, 1158, 1254, 1132, 1156, /* 50 */ 1149, 1153, 1216, 1217, 1215, 1219, 1222, 1223, 1014, 1152, /* 60 */ 1186, 1200, 1185, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 70 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 80 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 90 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 100 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1194, /* 110 */ 1199, 1206, 1198, 1195, 1188, 1187, 1189, 1190, 1014, 1035, /* 120 */ 1084, 1014, 1014, 1014, 1289, 1288, 1014, 1014, 1045, 1191, /* 130 */ 1192, 1203, 1202, 1201, 1279, 1305, 1304, 1014, 1014, 1014, /* 140 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 150 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 160 */ 1014, 1014, 1014, 1014, 1014, 1014, 1045, 1297, 1041, 1041, /* 170 */ 1014, 1284, 1119, 1110, 1014, 1014, 1014, 1014, 1014, 1014, /* 180 */ 1014, 1014, 1014, 1014, 1014, 1276, 1274, 1014, 1236, 1014, /* 190 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 200 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 210 */ 1014, 1014, 1014, 1115, 1014, 1014, 1014, 1014, 1014, 1014, /* 220 */ 1014, 1014, 1014, 1014, 1299, 1014, 1249, 1098, 1115, 1115, /* 230 */ 1115, 1115, 1117, 1099, 1097, 1109, 1045, 1021, 1155, 1134, /* 240 */ 1134, 1338, 1155, 1338, 1059, 1319, 1056, 1145, 1145, 1145, /* 250 */ 1134, 1218, 1116, 1109, 1014, 1341, 1124, 1124, 1340, 1340, /* 260 */ 1124, 1166, 1087, 1155, 1093, 1093, 1093, 1093, 1124, 1032, /* 270 */ 1155, 1166, 1087, 1087, 1155, 1124, 1032, 1253, 1335, 1124, /* 280 */ 1032, 1229, 1124, 1032, 1124, 1032, 1229, 1085, 1085, 1085, /* 290 */ 1074, 1229, 1085, 1059, 1085, 1074, 1085, 1085, 1229, 1233, /* 300 */ 1233, 1229, 1138, 1133, 1138, 1133, 1138, 1133, 1138, 1133, /* 310 */ 1124, 1224, 1124, 1014, 1150, 1139, 1148, 1146, 1155, 1038, /* 320 */ 1077, 1302, 1302, 1298, 1298, 1298, 1346, 1346, 1284, 1314, /* 330 */ 1045, 1045, 1045, 1045, 1314, 1061, 1061, 1045, 1045, 1045, /* 340 */ 1045, 1314, 1014, 1014, 1014, 1014, 1014, 1014, 1309, 1014, /* 350 */ 1238, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 360 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1171, /* 370 */ 1014, 1017, 1281, 1014, 1014, 1280, 1014, 1014, 1014, 1014, /* 380 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 390 */ 1014, 1014, 1014, 1014, 1014, 1014, 1337, 1014, 1014, 1014, /* 400 */ 1014, 1014, 1014, 1252, 1251, 1014, 1014, 1126, 1014, 1014, /* 410 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 420 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 430 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 440 */ 1014, 1014, 1147, 1014, 1140, 1014, 1014, 1014, 1014, 1328, /* 450 */ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, /* 460 */ 1014, 1014, 1014, 1323, 1101, 1173, 1014, 1172, 1176, 1014, /* 470 */ 1026, 1014, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. |
︙ | ︙ | |||
140896 140897 140898 140899 140900 140901 140902 | /* 190 */ "orconf", /* 191 */ "resolvetype", /* 192 */ "raisetype", /* 193 */ "ifexists", /* 194 */ "fullname", /* 195 */ "selectnowith", /* 196 */ "oneselect", | | | 140965 140966 140967 140968 140969 140970 140971 140972 140973 140974 140975 140976 140977 140978 140979 | /* 190 */ "orconf", /* 191 */ "resolvetype", /* 192 */ "raisetype", /* 193 */ "ifexists", /* 194 */ "fullname", /* 195 */ "selectnowith", /* 196 */ "oneselect", /* 197 */ "wqlist", /* 198 */ "multiselect_op", /* 199 */ "distinct", /* 200 */ "selcollist", /* 201 */ "from", /* 202 */ "where_opt", /* 203 */ "groupby_opt", /* 204 */ "having_opt", |
︙ | ︙ | |||
140918 140919 140920 140921 140922 140923 140924 | /* 212 */ "seltablist", /* 213 */ "stl_prefix", /* 214 */ "joinop", /* 215 */ "indexed_opt", /* 216 */ "on_opt", /* 217 */ "using_opt", /* 218 */ "idlist", | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 140987 140988 140989 140990 140991 140992 140993 140994 140995 140996 140997 140998 140999 141000 141001 141002 141003 141004 141005 141006 141007 141008 141009 141010 141011 141012 141013 141014 141015 141016 141017 141018 141019 141020 141021 141022 141023 141024 141025 141026 141027 141028 141029 141030 141031 141032 141033 | /* 212 */ "seltablist", /* 213 */ "stl_prefix", /* 214 */ "joinop", /* 215 */ "indexed_opt", /* 216 */ "on_opt", /* 217 */ "using_opt", /* 218 */ "idlist", /* 219 */ "with", /* 220 */ "setlist", /* 221 */ "insert_cmd", /* 222 */ "idlist_opt", /* 223 */ "likeop", /* 224 */ "between_op", /* 225 */ "in_op", /* 226 */ "paren_exprlist", /* 227 */ "case_operand", /* 228 */ "case_exprlist", /* 229 */ "case_else", /* 230 */ "uniqueflag", /* 231 */ "collate", /* 232 */ "nmnum", /* 233 */ "trigger_decl", /* 234 */ "trigger_cmd_list", /* 235 */ "trigger_time", /* 236 */ "trigger_event", /* 237 */ "foreach_clause", /* 238 */ "when_clause", /* 239 */ "trigger_cmd", /* 240 */ "trnm", /* 241 */ "tridxby", /* 242 */ "database_kw_opt", /* 243 */ "key_opt", /* 244 */ "add_column_fullname", /* 245 */ "kwcolumn_opt", /* 246 */ "create_vtab", /* 247 */ "vtabarglist", /* 248 */ "vtabarg", /* 249 */ "vtabargtoken", /* 250 */ "lp", /* 251 */ "anylist", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { |
︙ | ︙ | |||
141038 141039 141040 141041 141042 141043 141044 | /* 73 */ "resolvetype ::= REPLACE", /* 74 */ "cmd ::= DROP TABLE ifexists fullname", /* 75 */ "ifexists ::= IF EXISTS", /* 76 */ "ifexists ::=", /* 77 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select", /* 78 */ "cmd ::= DROP VIEW ifexists fullname", /* 79 */ "cmd ::= select", | | > > | | | | | | | | | | | | | | | | | | | | | | | | | | | < < | | > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < < < | | | | | | | | | | | | | | | | > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | 141107 141108 141109 141110 141111 141112 141113 141114 141115 141116 141117 141118 141119 141120 141121 141122 141123 141124 141125 141126 141127 141128 141129 141130 141131 141132 141133 141134 141135 141136 141137 141138 141139 141140 141141 141142 141143 141144 141145 141146 141147 141148 141149 141150 141151 141152 141153 141154 141155 141156 141157 141158 141159 141160 141161 141162 141163 141164 141165 141166 141167 141168 141169 141170 141171 141172 141173 141174 141175 141176 141177 141178 141179 141180 141181 141182 141183 141184 141185 141186 141187 141188 141189 141190 141191 141192 141193 141194 141195 141196 141197 141198 141199 141200 141201 141202 141203 141204 141205 141206 141207 141208 141209 141210 141211 141212 141213 141214 141215 141216 141217 141218 141219 141220 141221 141222 141223 141224 141225 141226 141227 141228 141229 141230 141231 141232 141233 141234 141235 141236 141237 141238 141239 141240 141241 141242 141243 141244 141245 141246 141247 141248 141249 141250 141251 141252 141253 141254 141255 141256 141257 141258 141259 141260 141261 141262 141263 141264 141265 141266 141267 141268 141269 141270 141271 141272 141273 141274 141275 141276 141277 141278 141279 141280 141281 141282 141283 141284 141285 141286 141287 141288 141289 141290 141291 141292 141293 141294 141295 141296 141297 141298 141299 141300 141301 141302 141303 141304 141305 141306 141307 141308 141309 141310 141311 141312 141313 141314 141315 141316 141317 141318 141319 141320 141321 141322 141323 141324 141325 141326 141327 141328 141329 141330 141331 141332 141333 141334 141335 141336 141337 141338 141339 141340 141341 141342 141343 141344 141345 141346 141347 141348 141349 141350 141351 141352 141353 141354 141355 141356 141357 141358 141359 141360 141361 141362 141363 141364 141365 141366 141367 141368 141369 141370 141371 141372 141373 | /* 73 */ "resolvetype ::= REPLACE", /* 74 */ "cmd ::= DROP TABLE ifexists fullname", /* 75 */ "ifexists ::= IF EXISTS", /* 76 */ "ifexists ::=", /* 77 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select", /* 78 */ "cmd ::= DROP VIEW ifexists fullname", /* 79 */ "cmd ::= select", /* 80 */ "select ::= WITH wqlist selectnowith", /* 81 */ "select ::= WITH RECURSIVE wqlist selectnowith", /* 82 */ "select ::= selectnowith", /* 83 */ "selectnowith ::= selectnowith multiselect_op oneselect", /* 84 */ "multiselect_op ::= UNION", /* 85 */ "multiselect_op ::= UNION ALL", /* 86 */ "multiselect_op ::= EXCEPT|INTERSECT", /* 87 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt", /* 88 */ "values ::= VALUES LP nexprlist RP", /* 89 */ "values ::= values COMMA LP exprlist RP", /* 90 */ "distinct ::= DISTINCT", /* 91 */ "distinct ::= ALL", /* 92 */ "distinct ::=", /* 93 */ "sclp ::=", /* 94 */ "selcollist ::= sclp scanpt expr scanpt as", /* 95 */ "selcollist ::= sclp scanpt STAR", /* 96 */ "selcollist ::= sclp scanpt nm DOT STAR", /* 97 */ "as ::= AS nm", /* 98 */ "as ::=", /* 99 */ "from ::=", /* 100 */ "from ::= FROM seltablist", /* 101 */ "stl_prefix ::= seltablist joinop", /* 102 */ "stl_prefix ::=", /* 103 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt", /* 104 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt", /* 105 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt", /* 106 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt", /* 107 */ "dbnm ::=", /* 108 */ "dbnm ::= DOT nm", /* 109 */ "fullname ::= nm", /* 110 */ "fullname ::= nm DOT nm", /* 111 */ "joinop ::= COMMA|JOIN", /* 112 */ "joinop ::= JOIN_KW JOIN", /* 113 */ "joinop ::= JOIN_KW nm JOIN", /* 114 */ "joinop ::= JOIN_KW nm nm JOIN", /* 115 */ "on_opt ::= ON expr", /* 116 */ "on_opt ::=", /* 117 */ "indexed_opt ::=", /* 118 */ "indexed_opt ::= INDEXED BY nm", /* 119 */ "indexed_opt ::= NOT INDEXED", /* 120 */ "using_opt ::= USING LP idlist RP", /* 121 */ "using_opt ::=", /* 122 */ "orderby_opt ::=", /* 123 */ "orderby_opt ::= ORDER BY sortlist", /* 124 */ "sortlist ::= sortlist COMMA expr sortorder", /* 125 */ "sortlist ::= expr sortorder", /* 126 */ "sortorder ::= ASC", /* 127 */ "sortorder ::= DESC", /* 128 */ "sortorder ::=", /* 129 */ "groupby_opt ::=", /* 130 */ "groupby_opt ::= GROUP BY nexprlist", /* 131 */ "having_opt ::=", /* 132 */ "having_opt ::= HAVING expr", /* 133 */ "limit_opt ::=", /* 134 */ "limit_opt ::= LIMIT expr", /* 135 */ "limit_opt ::= LIMIT expr OFFSET expr", /* 136 */ "limit_opt ::= LIMIT expr COMMA expr", /* 137 */ "cmd ::= with DELETE FROM fullname indexed_opt where_opt", /* 138 */ "where_opt ::=", /* 139 */ "where_opt ::= WHERE expr", /* 140 */ "cmd ::= with UPDATE orconf fullname indexed_opt SET setlist where_opt", /* 141 */ "setlist ::= setlist COMMA nm EQ expr", /* 142 */ "setlist ::= setlist COMMA LP idlist RP EQ expr", /* 143 */ "setlist ::= nm EQ expr", /* 144 */ "setlist ::= LP idlist RP EQ expr", /* 145 */ "cmd ::= with insert_cmd INTO fullname idlist_opt select", /* 146 */ "cmd ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES", /* 147 */ "insert_cmd ::= INSERT orconf", /* 148 */ "insert_cmd ::= REPLACE", /* 149 */ "idlist_opt ::=", /* 150 */ "idlist_opt ::= LP idlist RP", /* 151 */ "idlist ::= idlist COMMA nm", /* 152 */ "idlist ::= nm", /* 153 */ "expr ::= LP expr RP", /* 154 */ "expr ::= ID|INDEXED", /* 155 */ "expr ::= JOIN_KW", /* 156 */ "expr ::= nm DOT nm", /* 157 */ "expr ::= nm DOT nm DOT nm", /* 158 */ "term ::= NULL|FLOAT|BLOB", /* 159 */ "term ::= STRING", /* 160 */ "term ::= INTEGER", /* 161 */ "expr ::= VARIABLE", /* 162 */ "expr ::= expr COLLATE ID|STRING", /* 163 */ "expr ::= CAST LP expr AS typetoken RP", /* 164 */ "expr ::= ID|INDEXED LP distinct exprlist RP", /* 165 */ "expr ::= ID|INDEXED LP STAR RP", /* 166 */ "term ::= CTIME_KW", /* 167 */ "expr ::= LP nexprlist COMMA expr RP", /* 168 */ "expr ::= expr AND expr", /* 169 */ "expr ::= expr OR expr", /* 170 */ "expr ::= expr LT|GT|GE|LE expr", /* 171 */ "expr ::= expr EQ|NE expr", /* 172 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", /* 173 */ "expr ::= expr PLUS|MINUS expr", /* 174 */ "expr ::= expr STAR|SLASH|REM expr", /* 175 */ "expr ::= expr CONCAT expr", /* 176 */ "likeop ::= NOT LIKE_KW|MATCH", /* 177 */ "expr ::= expr likeop expr", /* 178 */ "expr ::= expr likeop expr ESCAPE expr", /* 179 */ "expr ::= expr ISNULL|NOTNULL", /* 180 */ "expr ::= expr NOT NULL", /* 181 */ "expr ::= expr IS expr", /* 182 */ "expr ::= expr IS NOT expr", /* 183 */ "expr ::= NOT expr", /* 184 */ "expr ::= BITNOT expr", /* 185 */ "expr ::= MINUS expr", /* 186 */ "expr ::= PLUS expr", /* 187 */ "between_op ::= BETWEEN", /* 188 */ "between_op ::= NOT BETWEEN", /* 189 */ "expr ::= expr between_op expr AND expr", /* 190 */ "in_op ::= IN", /* 191 */ "in_op ::= NOT IN", /* 192 */ "expr ::= expr in_op LP exprlist RP", /* 193 */ "expr ::= LP select RP", /* 194 */ "expr ::= expr in_op LP select RP", /* 195 */ "expr ::= expr in_op nm dbnm paren_exprlist", /* 196 */ "expr ::= EXISTS LP select RP", /* 197 */ "expr ::= CASE case_operand case_exprlist case_else END", /* 198 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", /* 199 */ "case_exprlist ::= WHEN expr THEN expr", /* 200 */ "case_else ::= ELSE expr", /* 201 */ "case_else ::=", /* 202 */ "case_operand ::= expr", /* 203 */ "case_operand ::=", /* 204 */ "exprlist ::=", /* 205 */ "nexprlist ::= nexprlist COMMA expr", /* 206 */ "nexprlist ::= expr", /* 207 */ "paren_exprlist ::=", /* 208 */ "paren_exprlist ::= LP exprlist RP", /* 209 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt", /* 210 */ "uniqueflag ::= UNIQUE", /* 211 */ "uniqueflag ::=", /* 212 */ "eidlist_opt ::=", /* 213 */ "eidlist_opt ::= LP eidlist RP", /* 214 */ "eidlist ::= eidlist COMMA nm collate sortorder", /* 215 */ "eidlist ::= nm collate sortorder", /* 216 */ "collate ::=", /* 217 */ "collate ::= COLLATE ID|STRING", /* 218 */ "cmd ::= DROP INDEX ifexists fullname", /* 219 */ "cmd ::= VACUUM", /* 220 */ "cmd ::= VACUUM nm", /* 221 */ "cmd ::= PRAGMA nm dbnm", /* 222 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", /* 223 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", /* 224 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", /* 225 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", /* 226 */ "plus_num ::= PLUS INTEGER|FLOAT", /* 227 */ "minus_num ::= MINUS INTEGER|FLOAT", /* 228 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END", /* 229 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", /* 230 */ "trigger_time ::= BEFORE|AFTER", /* 231 */ "trigger_time ::= INSTEAD OF", /* 232 */ "trigger_time ::=", /* 233 */ "trigger_event ::= DELETE|INSERT", /* 234 */ "trigger_event ::= UPDATE", /* 235 */ "trigger_event ::= UPDATE OF idlist", /* 236 */ "when_clause ::=", /* 237 */ "when_clause ::= WHEN expr", /* 238 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", /* 239 */ "trigger_cmd_list ::= trigger_cmd SEMI", /* 240 */ "trnm ::= nm DOT nm", /* 241 */ "tridxby ::= INDEXED BY nm", /* 242 */ "tridxby ::= NOT INDEXED", /* 243 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt", /* 244 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select scanpt", /* 245 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt", /* 246 */ "trigger_cmd ::= scanpt select scanpt", /* 247 */ "expr ::= RAISE LP IGNORE RP", /* 248 */ "expr ::= RAISE LP raisetype COMMA nm RP", /* 249 */ "raisetype ::= ROLLBACK", /* 250 */ "raisetype ::= ABORT", /* 251 */ "raisetype ::= FAIL", /* 252 */ "cmd ::= DROP TRIGGER ifexists fullname", /* 253 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", /* 254 */ "cmd ::= DETACH database_kw_opt expr", /* 255 */ "key_opt ::=", /* 256 */ "key_opt ::= KEY expr", /* 257 */ "cmd ::= REINDEX", /* 258 */ "cmd ::= REINDEX nm dbnm", /* 259 */ "cmd ::= ANALYZE", /* 260 */ "cmd ::= ANALYZE nm dbnm", /* 261 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", /* 262 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist", /* 263 */ "add_column_fullname ::= fullname", /* 264 */ "cmd ::= create_vtab", /* 265 */ "cmd ::= create_vtab LP vtabarglist RP", /* 266 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm", /* 267 */ "vtabarg ::=", /* 268 */ "vtabargtoken ::= ANY", /* 269 */ "vtabargtoken ::= lp anylist RP", /* 270 */ "lp ::= LP", /* 271 */ "with ::= WITH wqlist", /* 272 */ "with ::= WITH RECURSIVE wqlist", /* 273 */ "wqlist ::= nm eidlist_opt AS LP select RP", /* 274 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP", /* 275 */ "input ::= cmdlist", /* 276 */ "cmdlist ::= cmdlist ecmd", /* 277 */ "cmdlist ::= ecmd", /* 278 */ "ecmd ::= SEMI", /* 279 */ "ecmd ::= explain cmdx SEMI", /* 280 */ "explain ::=", /* 281 */ "trans_opt ::=", /* 282 */ "trans_opt ::= TRANSACTION", /* 283 */ "trans_opt ::= TRANSACTION nm", /* 284 */ "savepoint_opt ::= SAVEPOINT", /* 285 */ "savepoint_opt ::=", /* 286 */ "cmd ::= create_table create_table_args", /* 287 */ "columnlist ::= columnlist COMMA columnname carglist", /* 288 */ "columnlist ::= columnname carglist", /* 289 */ "nm ::= ID|INDEXED", /* 290 */ "nm ::= STRING", /* 291 */ "nm ::= JOIN_KW", /* 292 */ "typetoken ::= typename", /* 293 */ "typename ::= ID|STRING", /* 294 */ "signed ::= plus_num", /* 295 */ "signed ::= minus_num", /* 296 */ "carglist ::= carglist ccons", /* 297 */ "carglist ::=", /* 298 */ "ccons ::= NULL onconf", /* 299 */ "conslist_opt ::= COMMA conslist", /* 300 */ "conslist ::= conslist tconscomma tcons", /* 301 */ "conslist ::= tcons", /* 302 */ "tconscomma ::=", /* 303 */ "defer_subclause_opt ::= defer_subclause", /* 304 */ "resolvetype ::= raisetype", /* 305 */ "selectnowith ::= oneselect", /* 306 */ "oneselect ::= values", /* 307 */ "sclp ::= selcollist COMMA", /* 308 */ "as ::= ID|STRING", /* 309 */ "expr ::= term", /* 310 */ "likeop ::= LIKE_KW|MATCH", /* 311 */ "exprlist ::= nexprlist", /* 312 */ "nmnum ::= plus_num", /* 313 */ "nmnum ::= nm", /* 314 */ "nmnum ::= ON", /* 315 */ "nmnum ::= DELETE", /* 316 */ "nmnum ::= DEFAULT", /* 317 */ "plus_num ::= INTEGER|FLOAT", /* 318 */ "foreach_clause ::=", /* 319 */ "foreach_clause ::= FOR EACH ROW", /* 320 */ "trnm ::= nm", /* 321 */ "tridxby ::=", /* 322 */ "database_kw_opt ::= DATABASE", /* 323 */ "database_kw_opt ::=", /* 324 */ "kwcolumn_opt ::=", /* 325 */ "kwcolumn_opt ::= COLUMNKW", /* 326 */ "vtabarglist ::= vtabarg", /* 327 */ "vtabarglist ::= vtabarglist COMMA vtabarg", /* 328 */ "vtabarg ::= vtabarg vtabargtoken", /* 329 */ "anylist ::=", /* 330 */ "anylist ::= anylist LP anylist RP", /* 331 */ "anylist ::= anylist ANY", /* 332 */ "with ::=", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number |
︙ | ︙ | |||
141421 141422 141423 141424 141425 141426 141427 | } break; case 173: /* term */ case 174: /* expr */ case 202: /* where_opt */ case 204: /* having_opt */ case 216: /* on_opt */ | | | | | | | | | < | | | | | 141493 141494 141495 141496 141497 141498 141499 141500 141501 141502 141503 141504 141505 141506 141507 141508 141509 141510 141511 141512 141513 141514 141515 141516 141517 141518 141519 141520 141521 141522 141523 141524 141525 141526 141527 141528 141529 141530 141531 141532 141533 141534 141535 141536 141537 141538 141539 141540 141541 141542 141543 141544 141545 141546 141547 141548 141549 141550 141551 141552 141553 141554 141555 141556 141557 | } break; case 173: /* term */ case 174: /* expr */ case 202: /* where_opt */ case 204: /* having_opt */ case 216: /* on_opt */ case 227: /* case_operand */ case 229: /* case_else */ case 238: /* when_clause */ case 243: /* key_opt */ { sqlite3ExprDelete(pParse->db, (yypminor->yy314)); } break; case 178: /* eidlist_opt */ case 187: /* sortlist */ case 188: /* eidlist */ case 200: /* selcollist */ case 203: /* groupby_opt */ case 205: /* orderby_opt */ case 208: /* nexprlist */ case 209: /* exprlist */ case 210: /* sclp */ case 220: /* setlist */ case 226: /* paren_exprlist */ case 228: /* case_exprlist */ { sqlite3ExprListDelete(pParse->db, (yypminor->yy322)); } break; case 194: /* fullname */ case 201: /* from */ case 212: /* seltablist */ case 213: /* stl_prefix */ { sqlite3SrcListDelete(pParse->db, (yypminor->yy259)); } break; case 197: /* wqlist */ { sqlite3WithDelete(pParse->db, (yypminor->yy451)); } break; case 217: /* using_opt */ case 218: /* idlist */ case 222: /* idlist_opt */ { sqlite3IdListDelete(pParse->db, (yypminor->yy384)); } break; case 234: /* trigger_cmd_list */ case 239: /* trigger_cmd */ { sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy203)); } break; case 236: /* trigger_event */ { sqlite3IdListDelete(pParse->db, (yypminor->yy90).b); } break; /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } |
︙ | ︙ | |||
141851 141852 141853 141854 141855 141856 141857 | { 191, -1 }, /* (73) resolvetype ::= REPLACE */ { 149, -4 }, /* (74) cmd ::= DROP TABLE ifexists fullname */ { 193, -2 }, /* (75) ifexists ::= IF EXISTS */ { 193, 0 }, /* (76) ifexists ::= */ { 149, -9 }, /* (77) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ { 149, -4 }, /* (78) cmd ::= DROP VIEW ifexists fullname */ { 149, -1 }, /* (79) cmd ::= select */ | | > > | | | | | | | | | | | | | | | | | | | | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < < < | | | | | | | | | | | | | | | | | | | | | | > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | 141922 141923 141924 141925 141926 141927 141928 141929 141930 141931 141932 141933 141934 141935 141936 141937 141938 141939 141940 141941 141942 141943 141944 141945 141946 141947 141948 141949 141950 141951 141952 141953 141954 141955 141956 141957 141958 141959 141960 141961 141962 141963 141964 141965 141966 141967 141968 141969 141970 141971 141972 141973 141974 141975 141976 141977 141978 141979 141980 141981 141982 141983 141984 141985 141986 141987 141988 141989 141990 141991 141992 141993 141994 141995 141996 141997 141998 141999 142000 142001 142002 142003 142004 142005 142006 142007 142008 142009 142010 142011 142012 142013 142014 142015 142016 142017 142018 142019 142020 142021 142022 142023 142024 142025 142026 142027 142028 142029 142030 142031 142032 142033 142034 142035 142036 142037 142038 142039 142040 142041 142042 142043 142044 142045 142046 142047 142048 142049 142050 142051 142052 142053 142054 142055 142056 142057 142058 142059 142060 142061 142062 142063 142064 142065 142066 142067 142068 142069 142070 142071 142072 142073 142074 142075 142076 142077 142078 142079 142080 142081 142082 142083 142084 142085 142086 142087 142088 142089 142090 142091 142092 142093 142094 142095 142096 142097 142098 142099 142100 142101 142102 142103 142104 142105 142106 142107 142108 142109 142110 142111 142112 142113 142114 142115 142116 142117 142118 142119 142120 142121 142122 142123 142124 142125 142126 142127 142128 142129 142130 142131 142132 142133 142134 142135 142136 142137 142138 142139 142140 142141 142142 142143 142144 142145 142146 142147 142148 142149 142150 142151 142152 142153 142154 142155 142156 142157 142158 142159 142160 142161 142162 142163 142164 142165 142166 142167 142168 142169 142170 142171 142172 142173 142174 142175 142176 142177 142178 142179 142180 142181 142182 142183 142184 142185 142186 142187 142188 | { 191, -1 }, /* (73) resolvetype ::= REPLACE */ { 149, -4 }, /* (74) cmd ::= DROP TABLE ifexists fullname */ { 193, -2 }, /* (75) ifexists ::= IF EXISTS */ { 193, 0 }, /* (76) ifexists ::= */ { 149, -9 }, /* (77) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ { 149, -4 }, /* (78) cmd ::= DROP VIEW ifexists fullname */ { 149, -1 }, /* (79) cmd ::= select */ { 163, -3 }, /* (80) select ::= WITH wqlist selectnowith */ { 163, -4 }, /* (81) select ::= WITH RECURSIVE wqlist selectnowith */ { 163, -1 }, /* (82) select ::= selectnowith */ { 195, -3 }, /* (83) selectnowith ::= selectnowith multiselect_op oneselect */ { 198, -1 }, /* (84) multiselect_op ::= UNION */ { 198, -2 }, /* (85) multiselect_op ::= UNION ALL */ { 198, -1 }, /* (86) multiselect_op ::= EXCEPT|INTERSECT */ { 196, -9 }, /* (87) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ { 207, -4 }, /* (88) values ::= VALUES LP nexprlist RP */ { 207, -5 }, /* (89) values ::= values COMMA LP exprlist RP */ { 199, -1 }, /* (90) distinct ::= DISTINCT */ { 199, -1 }, /* (91) distinct ::= ALL */ { 199, 0 }, /* (92) distinct ::= */ { 210, 0 }, /* (93) sclp ::= */ { 200, -5 }, /* (94) selcollist ::= sclp scanpt expr scanpt as */ { 200, -3 }, /* (95) selcollist ::= sclp scanpt STAR */ { 200, -5 }, /* (96) selcollist ::= sclp scanpt nm DOT STAR */ { 211, -2 }, /* (97) as ::= AS nm */ { 211, 0 }, /* (98) as ::= */ { 201, 0 }, /* (99) from ::= */ { 201, -2 }, /* (100) from ::= FROM seltablist */ { 213, -2 }, /* (101) stl_prefix ::= seltablist joinop */ { 213, 0 }, /* (102) stl_prefix ::= */ { 212, -7 }, /* (103) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ { 212, -9 }, /* (104) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ { 212, -7 }, /* (105) seltablist ::= stl_prefix LP select RP as on_opt using_opt */ { 212, -7 }, /* (106) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ { 159, 0 }, /* (107) dbnm ::= */ { 159, -2 }, /* (108) dbnm ::= DOT nm */ { 194, -1 }, /* (109) fullname ::= nm */ { 194, -3 }, /* (110) fullname ::= nm DOT nm */ { 214, -1 }, /* (111) joinop ::= COMMA|JOIN */ { 214, -2 }, /* (112) joinop ::= JOIN_KW JOIN */ { 214, -3 }, /* (113) joinop ::= JOIN_KW nm JOIN */ { 214, -4 }, /* (114) joinop ::= JOIN_KW nm nm JOIN */ { 216, -2 }, /* (115) on_opt ::= ON expr */ { 216, 0 }, /* (116) on_opt ::= */ { 215, 0 }, /* (117) indexed_opt ::= */ { 215, -3 }, /* (118) indexed_opt ::= INDEXED BY nm */ { 215, -2 }, /* (119) indexed_opt ::= NOT INDEXED */ { 217, -4 }, /* (120) using_opt ::= USING LP idlist RP */ { 217, 0 }, /* (121) using_opt ::= */ { 205, 0 }, /* (122) orderby_opt ::= */ { 205, -3 }, /* (123) orderby_opt ::= ORDER BY sortlist */ { 187, -4 }, /* (124) sortlist ::= sortlist COMMA expr sortorder */ { 187, -2 }, /* (125) sortlist ::= expr sortorder */ { 176, -1 }, /* (126) sortorder ::= ASC */ { 176, -1 }, /* (127) sortorder ::= DESC */ { 176, 0 }, /* (128) sortorder ::= */ { 203, 0 }, /* (129) groupby_opt ::= */ { 203, -3 }, /* (130) groupby_opt ::= GROUP BY nexprlist */ { 204, 0 }, /* (131) having_opt ::= */ { 204, -2 }, /* (132) having_opt ::= HAVING expr */ { 206, 0 }, /* (133) limit_opt ::= */ { 206, -2 }, /* (134) limit_opt ::= LIMIT expr */ { 206, -4 }, /* (135) limit_opt ::= LIMIT expr OFFSET expr */ { 206, -4 }, /* (136) limit_opt ::= LIMIT expr COMMA expr */ { 149, -6 }, /* (137) cmd ::= with DELETE FROM fullname indexed_opt where_opt */ { 202, 0 }, /* (138) where_opt ::= */ { 202, -2 }, /* (139) where_opt ::= WHERE expr */ { 149, -8 }, /* (140) cmd ::= with UPDATE orconf fullname indexed_opt SET setlist where_opt */ { 220, -5 }, /* (141) setlist ::= setlist COMMA nm EQ expr */ { 220, -7 }, /* (142) setlist ::= setlist COMMA LP idlist RP EQ expr */ { 220, -3 }, /* (143) setlist ::= nm EQ expr */ { 220, -5 }, /* (144) setlist ::= LP idlist RP EQ expr */ { 149, -6 }, /* (145) cmd ::= with insert_cmd INTO fullname idlist_opt select */ { 149, -7 }, /* (146) cmd ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES */ { 221, -2 }, /* (147) insert_cmd ::= INSERT orconf */ { 221, -1 }, /* (148) insert_cmd ::= REPLACE */ { 222, 0 }, /* (149) idlist_opt ::= */ { 222, -3 }, /* (150) idlist_opt ::= LP idlist RP */ { 218, -3 }, /* (151) idlist ::= idlist COMMA nm */ { 218, -1 }, /* (152) idlist ::= nm */ { 174, -3 }, /* (153) expr ::= LP expr RP */ { 174, -1 }, /* (154) expr ::= ID|INDEXED */ { 174, -1 }, /* (155) expr ::= JOIN_KW */ { 174, -3 }, /* (156) expr ::= nm DOT nm */ { 174, -5 }, /* (157) expr ::= nm DOT nm DOT nm */ { 173, -1 }, /* (158) term ::= NULL|FLOAT|BLOB */ { 173, -1 }, /* (159) term ::= STRING */ { 173, -1 }, /* (160) term ::= INTEGER */ { 174, -1 }, /* (161) expr ::= VARIABLE */ { 174, -3 }, /* (162) expr ::= expr COLLATE ID|STRING */ { 174, -6 }, /* (163) expr ::= CAST LP expr AS typetoken RP */ { 174, -5 }, /* (164) expr ::= ID|INDEXED LP distinct exprlist RP */ { 174, -4 }, /* (165) expr ::= ID|INDEXED LP STAR RP */ { 173, -1 }, /* (166) term ::= CTIME_KW */ { 174, -5 }, /* (167) expr ::= LP nexprlist COMMA expr RP */ { 174, -3 }, /* (168) expr ::= expr AND expr */ { 174, -3 }, /* (169) expr ::= expr OR expr */ { 174, -3 }, /* (170) expr ::= expr LT|GT|GE|LE expr */ { 174, -3 }, /* (171) expr ::= expr EQ|NE expr */ { 174, -3 }, /* (172) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ { 174, -3 }, /* (173) expr ::= expr PLUS|MINUS expr */ { 174, -3 }, /* (174) expr ::= expr STAR|SLASH|REM expr */ { 174, -3 }, /* (175) expr ::= expr CONCAT expr */ { 223, -2 }, /* (176) likeop ::= NOT LIKE_KW|MATCH */ { 174, -3 }, /* (177) expr ::= expr likeop expr */ { 174, -5 }, /* (178) expr ::= expr likeop expr ESCAPE expr */ { 174, -2 }, /* (179) expr ::= expr ISNULL|NOTNULL */ { 174, -3 }, /* (180) expr ::= expr NOT NULL */ { 174, -3 }, /* (181) expr ::= expr IS expr */ { 174, -4 }, /* (182) expr ::= expr IS NOT expr */ { 174, -2 }, /* (183) expr ::= NOT expr */ { 174, -2 }, /* (184) expr ::= BITNOT expr */ { 174, -2 }, /* (185) expr ::= MINUS expr */ { 174, -2 }, /* (186) expr ::= PLUS expr */ { 224, -1 }, /* (187) between_op ::= BETWEEN */ { 224, -2 }, /* (188) between_op ::= NOT BETWEEN */ { 174, -5 }, /* (189) expr ::= expr between_op expr AND expr */ { 225, -1 }, /* (190) in_op ::= IN */ { 225, -2 }, /* (191) in_op ::= NOT IN */ { 174, -5 }, /* (192) expr ::= expr in_op LP exprlist RP */ { 174, -3 }, /* (193) expr ::= LP select RP */ { 174, -5 }, /* (194) expr ::= expr in_op LP select RP */ { 174, -5 }, /* (195) expr ::= expr in_op nm dbnm paren_exprlist */ { 174, -4 }, /* (196) expr ::= EXISTS LP select RP */ { 174, -5 }, /* (197) expr ::= CASE case_operand case_exprlist case_else END */ { 228, -5 }, /* (198) case_exprlist ::= case_exprlist WHEN expr THEN expr */ { 228, -4 }, /* (199) case_exprlist ::= WHEN expr THEN expr */ { 229, -2 }, /* (200) case_else ::= ELSE expr */ { 229, 0 }, /* (201) case_else ::= */ { 227, -1 }, /* (202) case_operand ::= expr */ { 227, 0 }, /* (203) case_operand ::= */ { 209, 0 }, /* (204) exprlist ::= */ { 208, -3 }, /* (205) nexprlist ::= nexprlist COMMA expr */ { 208, -1 }, /* (206) nexprlist ::= expr */ { 226, 0 }, /* (207) paren_exprlist ::= */ { 226, -3 }, /* (208) paren_exprlist ::= LP exprlist RP */ { 149, -12 }, /* (209) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ { 230, -1 }, /* (210) uniqueflag ::= UNIQUE */ { 230, 0 }, /* (211) uniqueflag ::= */ { 178, 0 }, /* (212) eidlist_opt ::= */ { 178, -3 }, /* (213) eidlist_opt ::= LP eidlist RP */ { 188, -5 }, /* (214) eidlist ::= eidlist COMMA nm collate sortorder */ { 188, -3 }, /* (215) eidlist ::= nm collate sortorder */ { 231, 0 }, /* (216) collate ::= */ { 231, -2 }, /* (217) collate ::= COLLATE ID|STRING */ { 149, -4 }, /* (218) cmd ::= DROP INDEX ifexists fullname */ { 149, -1 }, /* (219) cmd ::= VACUUM */ { 149, -2 }, /* (220) cmd ::= VACUUM nm */ { 149, -3 }, /* (221) cmd ::= PRAGMA nm dbnm */ { 149, -5 }, /* (222) cmd ::= PRAGMA nm dbnm EQ nmnum */ { 149, -6 }, /* (223) cmd ::= PRAGMA nm dbnm LP nmnum RP */ { 149, -5 }, /* (224) cmd ::= PRAGMA nm dbnm EQ minus_num */ { 149, -6 }, /* (225) cmd ::= PRAGMA nm dbnm LP minus_num RP */ { 169, -2 }, /* (226) plus_num ::= PLUS INTEGER|FLOAT */ { 170, -2 }, /* (227) minus_num ::= MINUS INTEGER|FLOAT */ { 149, -5 }, /* (228) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ { 233, -11 }, /* (229) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ { 235, -1 }, /* (230) trigger_time ::= BEFORE|AFTER */ { 235, -2 }, /* (231) trigger_time ::= INSTEAD OF */ { 235, 0 }, /* (232) trigger_time ::= */ { 236, -1 }, /* (233) trigger_event ::= DELETE|INSERT */ { 236, -1 }, /* (234) trigger_event ::= UPDATE */ { 236, -3 }, /* (235) trigger_event ::= UPDATE OF idlist */ { 238, 0 }, /* (236) when_clause ::= */ { 238, -2 }, /* (237) when_clause ::= WHEN expr */ { 234, -3 }, /* (238) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ { 234, -2 }, /* (239) trigger_cmd_list ::= trigger_cmd SEMI */ { 240, -3 }, /* (240) trnm ::= nm DOT nm */ { 241, -3 }, /* (241) tridxby ::= INDEXED BY nm */ { 241, -2 }, /* (242) tridxby ::= NOT INDEXED */ { 239, -8 }, /* (243) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */ { 239, -7 }, /* (244) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select scanpt */ { 239, -6 }, /* (245) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ { 239, -3 }, /* (246) trigger_cmd ::= scanpt select scanpt */ { 174, -4 }, /* (247) expr ::= RAISE LP IGNORE RP */ { 174, -6 }, /* (248) expr ::= RAISE LP raisetype COMMA nm RP */ { 192, -1 }, /* (249) raisetype ::= ROLLBACK */ { 192, -1 }, /* (250) raisetype ::= ABORT */ { 192, -1 }, /* (251) raisetype ::= FAIL */ { 149, -4 }, /* (252) cmd ::= DROP TRIGGER ifexists fullname */ { 149, -6 }, /* (253) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ { 149, -3 }, /* (254) cmd ::= DETACH database_kw_opt expr */ { 243, 0 }, /* (255) key_opt ::= */ { 243, -2 }, /* (256) key_opt ::= KEY expr */ { 149, -1 }, /* (257) cmd ::= REINDEX */ { 149, -3 }, /* (258) cmd ::= REINDEX nm dbnm */ { 149, -1 }, /* (259) cmd ::= ANALYZE */ { 149, -3 }, /* (260) cmd ::= ANALYZE nm dbnm */ { 149, -6 }, /* (261) cmd ::= ALTER TABLE fullname RENAME TO nm */ { 149, -7 }, /* (262) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ { 244, -1 }, /* (263) add_column_fullname ::= fullname */ { 149, -1 }, /* (264) cmd ::= create_vtab */ { 149, -4 }, /* (265) cmd ::= create_vtab LP vtabarglist RP */ { 246, -8 }, /* (266) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ { 248, 0 }, /* (267) vtabarg ::= */ { 249, -1 }, /* (268) vtabargtoken ::= ANY */ { 249, -3 }, /* (269) vtabargtoken ::= lp anylist RP */ { 250, -1 }, /* (270) lp ::= LP */ { 219, -2 }, /* (271) with ::= WITH wqlist */ { 219, -3 }, /* (272) with ::= WITH RECURSIVE wqlist */ { 197, -6 }, /* (273) wqlist ::= nm eidlist_opt AS LP select RP */ { 197, -8 }, /* (274) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */ { 144, -1 }, /* (275) input ::= cmdlist */ { 145, -2 }, /* (276) cmdlist ::= cmdlist ecmd */ { 145, -1 }, /* (277) cmdlist ::= ecmd */ { 146, -1 }, /* (278) ecmd ::= SEMI */ { 146, -3 }, /* (279) ecmd ::= explain cmdx SEMI */ { 147, 0 }, /* (280) explain ::= */ { 151, 0 }, /* (281) trans_opt ::= */ { 151, -1 }, /* (282) trans_opt ::= TRANSACTION */ { 151, -2 }, /* (283) trans_opt ::= TRANSACTION nm */ { 153, -1 }, /* (284) savepoint_opt ::= SAVEPOINT */ { 153, 0 }, /* (285) savepoint_opt ::= */ { 149, -2 }, /* (286) cmd ::= create_table create_table_args */ { 160, -4 }, /* (287) columnlist ::= columnlist COMMA columnname carglist */ { 160, -2 }, /* (288) columnlist ::= columnname carglist */ { 152, -1 }, /* (289) nm ::= ID|INDEXED */ { 152, -1 }, /* (290) nm ::= STRING */ { 152, -1 }, /* (291) nm ::= JOIN_KW */ { 166, -1 }, /* (292) typetoken ::= typename */ { 167, -1 }, /* (293) typename ::= ID|STRING */ { 168, -1 }, /* (294) signed ::= plus_num */ { 168, -1 }, /* (295) signed ::= minus_num */ { 165, -2 }, /* (296) carglist ::= carglist ccons */ { 165, 0 }, /* (297) carglist ::= */ { 172, -2 }, /* (298) ccons ::= NULL onconf */ { 161, -2 }, /* (299) conslist_opt ::= COMMA conslist */ { 184, -3 }, /* (300) conslist ::= conslist tconscomma tcons */ { 184, -1 }, /* (301) conslist ::= tcons */ { 185, 0 }, /* (302) tconscomma ::= */ { 189, -1 }, /* (303) defer_subclause_opt ::= defer_subclause */ { 191, -1 }, /* (304) resolvetype ::= raisetype */ { 195, -1 }, /* (305) selectnowith ::= oneselect */ { 196, -1 }, /* (306) oneselect ::= values */ { 210, -2 }, /* (307) sclp ::= selcollist COMMA */ { 211, -1 }, /* (308) as ::= ID|STRING */ { 174, -1 }, /* (309) expr ::= term */ { 223, -1 }, /* (310) likeop ::= LIKE_KW|MATCH */ { 209, -1 }, /* (311) exprlist ::= nexprlist */ { 232, -1 }, /* (312) nmnum ::= plus_num */ { 232, -1 }, /* (313) nmnum ::= nm */ { 232, -1 }, /* (314) nmnum ::= ON */ { 232, -1 }, /* (315) nmnum ::= DELETE */ { 232, -1 }, /* (316) nmnum ::= DEFAULT */ { 169, -1 }, /* (317) plus_num ::= INTEGER|FLOAT */ { 237, 0 }, /* (318) foreach_clause ::= */ { 237, -3 }, /* (319) foreach_clause ::= FOR EACH ROW */ { 240, -1 }, /* (320) trnm ::= nm */ { 241, 0 }, /* (321) tridxby ::= */ { 242, -1 }, /* (322) database_kw_opt ::= DATABASE */ { 242, 0 }, /* (323) database_kw_opt ::= */ { 245, 0 }, /* (324) kwcolumn_opt ::= */ { 245, -1 }, /* (325) kwcolumn_opt ::= COLUMNKW */ { 247, -1 }, /* (326) vtabarglist ::= vtabarg */ { 247, -3 }, /* (327) vtabarglist ::= vtabarglist COMMA vtabarg */ { 248, -2 }, /* (328) vtabarg ::= vtabarg vtabargtoken */ { 251, 0 }, /* (329) anylist ::= */ { 251, -4 }, /* (330) anylist ::= anylist LP anylist RP */ { 251, -2 }, /* (331) anylist ::= anylist ANY */ { 219, 0 }, /* (332) with ::= */ }; static void yy_accept(yyParser*); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. |
︙ | ︙ | |||
142234 142235 142236 142237 142238 142239 142240 | case 15: /* ifnotexists ::= */ case 18: /* temp ::= */ yytestcase(yyruleno==18); case 21: /* table_options ::= */ yytestcase(yyruleno==21); case 42: /* autoinc ::= */ yytestcase(yyruleno==42); case 57: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==57); case 67: /* defer_subclause_opt ::= */ yytestcase(yyruleno==67); case 76: /* ifexists ::= */ yytestcase(yyruleno==76); | | | | 142308 142309 142310 142311 142312 142313 142314 142315 142316 142317 142318 142319 142320 142321 142322 142323 | case 15: /* ifnotexists ::= */ case 18: /* temp ::= */ yytestcase(yyruleno==18); case 21: /* table_options ::= */ yytestcase(yyruleno==21); case 42: /* autoinc ::= */ yytestcase(yyruleno==42); case 57: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==57); case 67: /* defer_subclause_opt ::= */ yytestcase(yyruleno==67); case 76: /* ifexists ::= */ yytestcase(yyruleno==76); case 92: /* distinct ::= */ yytestcase(yyruleno==92); case 216: /* collate ::= */ yytestcase(yyruleno==216); {yymsp[1].minor.yy4 = 0;} break; case 16: /* ifnotexists ::= IF NOT EXISTS */ {yymsp[-2].minor.yy4 = 1;} break; case 17: /* temp ::= TEMP */ case 43: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==43); |
︙ | ︙ | |||
142271 142272 142273 142274 142275 142276 142277 | } break; case 23: /* columnname ::= nm typetoken */ {sqlite3AddColumn(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);} break; case 24: /* typetoken ::= */ case 60: /* conslist_opt ::= */ yytestcase(yyruleno==60); | | | 142345 142346 142347 142348 142349 142350 142351 142352 142353 142354 142355 142356 142357 142358 142359 | } break; case 23: /* columnname ::= nm typetoken */ {sqlite3AddColumn(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);} break; case 24: /* typetoken ::= */ case 60: /* conslist_opt ::= */ yytestcase(yyruleno==60); case 98: /* as ::= */ yytestcase(yyruleno==98); {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;} break; case 25: /* typetoken ::= typename LP signed RP */ { yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z); } break; |
︙ | ︙ | |||
142382 142383 142384 142385 142386 142387 142388 | { yymsp[-1].minor.yy4 = OE_None; /* EV: R-33326-45252 */} break; case 55: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ {yymsp[-2].minor.yy4 = 0;} break; case 56: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ case 71: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==71); | | | | | | 142456 142457 142458 142459 142460 142461 142462 142463 142464 142465 142466 142467 142468 142469 142470 142471 142472 142473 142474 142475 142476 142477 | { yymsp[-1].minor.yy4 = OE_None; /* EV: R-33326-45252 */} break; case 55: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ {yymsp[-2].minor.yy4 = 0;} break; case 56: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ case 71: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==71); case 147: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==147); {yymsp[-1].minor.yy4 = yymsp[0].minor.yy4;} break; case 58: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ case 75: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==75); case 188: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==188); case 191: /* in_op ::= NOT IN */ yytestcase(yyruleno==191); case 217: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==217); {yymsp[-1].minor.yy4 = 1;} break; case 59: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ {yymsp[-1].minor.yy4 = 0;} break; case 61: /* tconscomma ::= COMMA */ {pParse->constraintName.n = 0;} |
︙ | ︙ | |||
142425 142426 142427 142428 142429 142430 142431 | case 69: /* onconf ::= ON CONFLICT resolvetype */ {yymsp[-2].minor.yy4 = yymsp[0].minor.yy4;} break; case 72: /* resolvetype ::= IGNORE */ {yymsp[0].minor.yy4 = OE_Ignore;} break; case 73: /* resolvetype ::= REPLACE */ | | | 142499 142500 142501 142502 142503 142504 142505 142506 142507 142508 142509 142510 142511 142512 142513 | case 69: /* onconf ::= ON CONFLICT resolvetype */ {yymsp[-2].minor.yy4 = yymsp[0].minor.yy4;} break; case 72: /* resolvetype ::= IGNORE */ {yymsp[0].minor.yy4 = OE_Ignore;} break; case 73: /* resolvetype ::= REPLACE */ case 148: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==148); {yymsp[0].minor.yy4 = OE_Replace;} break; case 74: /* cmd ::= DROP TABLE ifexists fullname */ { sqlite3DropTable(pParse, yymsp[0].minor.yy259, 0, yymsp[-1].minor.yy4); } break; |
︙ | ︙ | |||
142450 142451 142452 142453 142454 142455 142456 | case 79: /* cmd ::= select */ { SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0}; sqlite3Select(pParse, yymsp[0].minor.yy387, &dest); sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy387); } break; | | > > > > > > > > > > > > > > > > > > > > > | | | 142524 142525 142526 142527 142528 142529 142530 142531 142532 142533 142534 142535 142536 142537 142538 142539 142540 142541 142542 142543 142544 142545 142546 142547 142548 142549 142550 142551 142552 142553 142554 142555 142556 142557 142558 142559 142560 142561 142562 142563 142564 142565 142566 142567 142568 142569 142570 142571 | case 79: /* cmd ::= select */ { SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0}; sqlite3Select(pParse, yymsp[0].minor.yy387, &dest); sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy387); } break; case 80: /* select ::= WITH wqlist selectnowith */ { Select *p = yymsp[0].minor.yy387; if( p ){ p->pWith = yymsp[-1].minor.yy451; parserDoubleLinkSelect(pParse, p); }else{ sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy451); } yymsp[-2].minor.yy387 = p; } break; case 81: /* select ::= WITH RECURSIVE wqlist selectnowith */ { Select *p = yymsp[0].minor.yy387; if( p ){ p->pWith = yymsp[-1].minor.yy451; parserDoubleLinkSelect(pParse, p); }else{ sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy451); } yymsp[-3].minor.yy387 = p; } break; case 82: /* select ::= selectnowith */ { Select *p = yymsp[0].minor.yy387; if( p ){ parserDoubleLinkSelect(pParse, p); } yymsp[0].minor.yy387 = p; /*A-overwrites-X*/ } break; case 83: /* selectnowith ::= selectnowith multiselect_op oneselect */ { Select *pRhs = yymsp[0].minor.yy387; Select *pLhs = yymsp[-2].minor.yy387; if( pRhs && pRhs->pPrior ){ SrcList *pFrom; Token x; x.n = 0; |
︙ | ︙ | |||
142486 142487 142488 142489 142490 142491 142492 | if( yymsp[-1].minor.yy4!=TK_ALL ) pParse->hasCompound = 1; }else{ sqlite3SelectDelete(pParse->db, pLhs); } yymsp[-2].minor.yy387 = pRhs; } break; | | | | | | 142581 142582 142583 142584 142585 142586 142587 142588 142589 142590 142591 142592 142593 142594 142595 142596 142597 142598 142599 142600 142601 142602 | if( yymsp[-1].minor.yy4!=TK_ALL ) pParse->hasCompound = 1; }else{ sqlite3SelectDelete(pParse->db, pLhs); } yymsp[-2].minor.yy387 = pRhs; } break; case 84: /* multiselect_op ::= UNION */ case 86: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==86); {yymsp[0].minor.yy4 = yymsp[0].major; /*A-overwrites-OP*/} break; case 85: /* multiselect_op ::= UNION ALL */ {yymsp[-1].minor.yy4 = TK_ALL;} break; case 87: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ { #if SELECTTRACE_ENABLED Token s = yymsp[-8].minor.yy0; /*A-overwrites-S*/ #endif 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); #if SELECTTRACE_ENABLED /* Populate the Select.zSelName[] string that is used to help with |
︙ | ︙ | |||
142524 142525 142526 142527 142528 142529 142530 | for(i=0; sqlite3Isalnum(z[i]); i++){} sqlite3_snprintf(sizeof(yymsp[-8].minor.yy387->zSelName), yymsp[-8].minor.yy387->zSelName, "%.*s", i, z); } } #endif /* SELECTRACE_ENABLED */ } break; | | | | | | | | | | | | | | | | | | | | | | | | | | | 142619 142620 142621 142622 142623 142624 142625 142626 142627 142628 142629 142630 142631 142632 142633 142634 142635 142636 142637 142638 142639 142640 142641 142642 142643 142644 142645 142646 142647 142648 142649 142650 142651 142652 142653 142654 142655 142656 142657 142658 142659 142660 142661 142662 142663 142664 142665 142666 142667 142668 142669 142670 142671 142672 142673 142674 142675 142676 142677 142678 142679 142680 142681 142682 142683 142684 142685 142686 142687 142688 142689 142690 142691 142692 142693 142694 142695 142696 142697 142698 142699 142700 142701 142702 142703 142704 142705 142706 142707 142708 142709 142710 142711 142712 142713 142714 142715 142716 142717 142718 142719 142720 142721 142722 142723 142724 142725 142726 142727 | for(i=0; sqlite3Isalnum(z[i]); i++){} sqlite3_snprintf(sizeof(yymsp[-8].minor.yy387->zSelName), yymsp[-8].minor.yy387->zSelName, "%.*s", i, z); } } #endif /* SELECTRACE_ENABLED */ } break; case 88: /* values ::= VALUES LP nexprlist RP */ { yymsp[-3].minor.yy387 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values,0); } break; case 89: /* values ::= values COMMA LP exprlist RP */ { Select *pRight, *pLeft = yymsp[-4].minor.yy387; pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values|SF_MultiValue,0); if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue; if( pRight ){ pRight->op = TK_ALL; pRight->pPrior = pLeft; yymsp[-4].minor.yy387 = pRight; }else{ yymsp[-4].minor.yy387 = pLeft; } } break; case 90: /* distinct ::= DISTINCT */ {yymsp[0].minor.yy4 = SF_Distinct;} break; case 91: /* distinct ::= ALL */ {yymsp[0].minor.yy4 = SF_All;} break; case 93: /* sclp ::= */ case 122: /* orderby_opt ::= */ yytestcase(yyruleno==122); case 129: /* groupby_opt ::= */ yytestcase(yyruleno==129); case 204: /* exprlist ::= */ yytestcase(yyruleno==204); case 207: /* paren_exprlist ::= */ yytestcase(yyruleno==207); case 212: /* eidlist_opt ::= */ yytestcase(yyruleno==212); {yymsp[1].minor.yy322 = 0;} break; case 94: /* selcollist ::= sclp scanpt expr scanpt as */ { yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[-2].minor.yy314); if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[0].minor.yy0, 1); sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy322,yymsp[-3].minor.yy336,yymsp[-1].minor.yy336); } break; case 95: /* selcollist ::= sclp scanpt STAR */ { Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0); yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy322, p); } break; case 96: /* selcollist ::= sclp scanpt nm DOT STAR */ { Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0); Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight); yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot); } break; case 97: /* as ::= AS nm */ case 108: /* dbnm ::= DOT nm */ yytestcase(yyruleno==108); case 226: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==226); case 227: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==227); {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;} break; case 99: /* from ::= */ {yymsp[1].minor.yy259 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy259));} break; case 100: /* from ::= FROM seltablist */ { yymsp[-1].minor.yy259 = yymsp[0].minor.yy259; sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy259); } break; case 101: /* stl_prefix ::= seltablist joinop */ { 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; } break; case 102: /* stl_prefix ::= */ {yymsp[1].minor.yy259 = 0;} break; case 103: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ { 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); sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy259, &yymsp[-2].minor.yy0); } break; case 104: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ { 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); sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy259, yymsp[-4].minor.yy322); } break; case 105: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */ { 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); } break; case 106: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ { if( yymsp[-6].minor.yy259==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy314==0 && yymsp[0].minor.yy384==0 ){ yymsp[-6].minor.yy259 = yymsp[-4].minor.yy259; }else if( yymsp[-4].minor.yy259->nSrc==1 ){ 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); if( yymsp[-6].minor.yy259 ){ struct SrcList_item *pNew = &yymsp[-6].minor.yy259->a[yymsp[-6].minor.yy259->nSrc-1]; |
︙ | ︙ | |||
142642 142643 142644 142645 142646 142647 142648 | Select *pSubquery; sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy259); pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy259,0,0,0,0,SF_NestedFrom,0); 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); } } break; | | | | | > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | < | | | | | < | < | | | | | | | | | | | | | 142737 142738 142739 142740 142741 142742 142743 142744 142745 142746 142747 142748 142749 142750 142751 142752 142753 142754 142755 142756 142757 142758 142759 142760 142761 142762 142763 142764 142765 142766 142767 142768 142769 142770 142771 142772 142773 142774 142775 142776 142777 142778 142779 142780 142781 142782 142783 142784 142785 142786 142787 142788 142789 142790 142791 142792 142793 142794 142795 142796 142797 142798 142799 142800 142801 142802 142803 142804 142805 142806 142807 142808 142809 142810 142811 142812 142813 142814 142815 142816 142817 142818 142819 142820 142821 142822 142823 142824 142825 142826 142827 142828 142829 142830 142831 142832 142833 142834 142835 142836 142837 142838 142839 142840 142841 142842 142843 142844 142845 142846 142847 142848 142849 142850 142851 142852 142853 142854 142855 142856 142857 142858 142859 142860 142861 142862 142863 142864 142865 142866 142867 142868 142869 142870 142871 142872 142873 142874 142875 142876 142877 142878 142879 142880 142881 142882 142883 142884 142885 142886 142887 142888 142889 142890 142891 142892 142893 142894 142895 142896 142897 142898 142899 142900 142901 142902 142903 142904 142905 142906 142907 142908 142909 142910 142911 142912 142913 142914 142915 142916 142917 142918 142919 142920 142921 142922 142923 142924 | Select *pSubquery; sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy259); pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy259,0,0,0,0,SF_NestedFrom,0); 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); } } break; case 107: /* dbnm ::= */ case 117: /* indexed_opt ::= */ yytestcase(yyruleno==117); {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;} break; case 109: /* fullname ::= nm */ {yymsp[0].minor.yy259 = sqlite3SrcListAppend(pParse->db,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/} break; case 110: /* fullname ::= nm DOT nm */ {yymsp[-2].minor.yy259 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/} break; case 111: /* joinop ::= COMMA|JOIN */ { yymsp[0].minor.yy4 = JT_INNER; } break; case 112: /* joinop ::= JOIN_KW JOIN */ {yymsp[-1].minor.yy4 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/} break; case 113: /* joinop ::= JOIN_KW nm JOIN */ {yymsp[-2].minor.yy4 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/} break; case 114: /* joinop ::= JOIN_KW nm nm JOIN */ {yymsp[-3].minor.yy4 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/} break; case 115: /* on_opt ::= ON expr */ case 132: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==132); case 139: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==139); case 200: /* case_else ::= ELSE expr */ yytestcase(yyruleno==200); {yymsp[-1].minor.yy314 = yymsp[0].minor.yy314;} break; case 116: /* on_opt ::= */ case 131: /* having_opt ::= */ yytestcase(yyruleno==131); case 133: /* limit_opt ::= */ yytestcase(yyruleno==133); case 138: /* where_opt ::= */ yytestcase(yyruleno==138); case 201: /* case_else ::= */ yytestcase(yyruleno==201); case 203: /* case_operand ::= */ yytestcase(yyruleno==203); {yymsp[1].minor.yy314 = 0;} break; case 118: /* indexed_opt ::= INDEXED BY nm */ {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;} break; case 119: /* indexed_opt ::= NOT INDEXED */ {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;} break; case 120: /* using_opt ::= USING LP idlist RP */ {yymsp[-3].minor.yy384 = yymsp[-1].minor.yy384;} break; case 121: /* using_opt ::= */ case 149: /* idlist_opt ::= */ yytestcase(yyruleno==149); {yymsp[1].minor.yy384 = 0;} break; case 123: /* orderby_opt ::= ORDER BY sortlist */ case 130: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==130); {yymsp[-2].minor.yy322 = yymsp[0].minor.yy322;} break; case 124: /* sortlist ::= sortlist COMMA expr sortorder */ { yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322,yymsp[-1].minor.yy314); sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy322,yymsp[0].minor.yy4); } break; case 125: /* sortlist ::= expr sortorder */ { yymsp[-1].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy314); /*A-overwrites-Y*/ sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy322,yymsp[0].minor.yy4); } break; case 126: /* sortorder ::= ASC */ {yymsp[0].minor.yy4 = SQLITE_SO_ASC;} break; case 127: /* sortorder ::= DESC */ {yymsp[0].minor.yy4 = SQLITE_SO_DESC;} break; case 128: /* sortorder ::= */ {yymsp[1].minor.yy4 = SQLITE_SO_UNDEFINED;} break; case 134: /* limit_opt ::= LIMIT expr */ {yymsp[-1].minor.yy314 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy314,0);} break; case 135: /* limit_opt ::= LIMIT expr OFFSET expr */ {yymsp[-3].minor.yy314 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy314,yymsp[0].minor.yy314);} break; case 136: /* limit_opt ::= LIMIT expr COMMA expr */ {yymsp[-3].minor.yy314 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy314,yymsp[-2].minor.yy314);} break; case 137: /* cmd ::= with DELETE FROM fullname indexed_opt where_opt */ { sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy259, &yymsp[-1].minor.yy0); sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy259,yymsp[0].minor.yy314,0,0); } break; case 140: /* cmd ::= with UPDATE orconf fullname indexed_opt SET setlist where_opt */ { sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy259, &yymsp[-3].minor.yy0); sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy322,"set list"); sqlite3Update(pParse,yymsp[-4].minor.yy259,yymsp[-1].minor.yy322,yymsp[0].minor.yy314,yymsp[-5].minor.yy4,0,0); } break; case 141: /* setlist ::= setlist COMMA nm EQ expr */ { yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[0].minor.yy314); sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, 1); } break; case 142: /* setlist ::= setlist COMMA LP idlist RP EQ expr */ { yymsp[-6].minor.yy322 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy322, yymsp[-3].minor.yy384, yymsp[0].minor.yy314); } break; case 143: /* setlist ::= nm EQ expr */ { yylhsminor.yy322 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy314); sqlite3ExprListSetName(pParse, yylhsminor.yy322, &yymsp[-2].minor.yy0, 1); } yymsp[-2].minor.yy322 = yylhsminor.yy322; break; case 144: /* setlist ::= LP idlist RP EQ expr */ { yymsp[-4].minor.yy322 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy384, yymsp[0].minor.yy314); } break; case 145: /* cmd ::= with insert_cmd INTO fullname idlist_opt select */ { sqlite3Insert(pParse, yymsp[-2].minor.yy259, yymsp[0].minor.yy387, yymsp[-1].minor.yy384, yymsp[-4].minor.yy4); } break; case 146: /* cmd ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES */ { sqlite3Insert(pParse, yymsp[-3].minor.yy259, 0, yymsp[-2].minor.yy384, yymsp[-5].minor.yy4); } break; case 150: /* idlist_opt ::= LP idlist RP */ {yymsp[-2].minor.yy384 = yymsp[-1].minor.yy384;} break; case 151: /* idlist ::= idlist COMMA nm */ {yymsp[-2].minor.yy384 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy384,&yymsp[0].minor.yy0);} break; case 152: /* idlist ::= nm */ {yymsp[0].minor.yy384 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/} break; case 153: /* expr ::= LP expr RP */ {yymsp[-2].minor.yy314 = yymsp[-1].minor.yy314;} break; case 154: /* expr ::= ID|INDEXED */ case 155: /* expr ::= JOIN_KW */ yytestcase(yyruleno==155); {yymsp[0].minor.yy314=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/} break; case 156: /* expr ::= nm DOT nm */ { Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1); yylhsminor.yy314 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2); } yymsp[-2].minor.yy314 = yylhsminor.yy314; break; case 157: /* expr ::= nm DOT nm DOT nm */ { Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1); Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1); Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3); yylhsminor.yy314 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4); } yymsp[-4].minor.yy314 = yylhsminor.yy314; break; case 158: /* term ::= NULL|FLOAT|BLOB */ case 159: /* term ::= STRING */ yytestcase(yyruleno==159); {yymsp[0].minor.yy314=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/} break; case 160: /* term ::= INTEGER */ { yylhsminor.yy314 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1); } yymsp[0].minor.yy314 = yylhsminor.yy314; break; case 161: /* expr ::= VARIABLE */ { if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){ u32 n = yymsp[0].minor.yy0.n; yymsp[0].minor.yy314 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0); sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy314, n); }else{ /* When doing a nested parse, one can include terms in an expression |
︙ | ︙ | |||
142838 142839 142840 142841 142842 142843 142844 | }else{ yymsp[0].minor.yy314 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0); if( yymsp[0].minor.yy314 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy314->iTable); } } } break; | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 142932 142933 142934 142935 142936 142937 142938 142939 142940 142941 142942 142943 142944 142945 142946 142947 142948 142949 142950 142951 142952 142953 142954 142955 142956 142957 142958 142959 142960 142961 142962 142963 142964 142965 142966 142967 142968 142969 142970 142971 142972 142973 142974 142975 142976 142977 142978 142979 142980 142981 142982 142983 142984 142985 142986 142987 142988 142989 142990 142991 142992 142993 142994 142995 142996 142997 142998 142999 143000 143001 143002 143003 143004 143005 143006 143007 143008 143009 143010 143011 143012 143013 143014 143015 143016 143017 143018 143019 143020 143021 143022 143023 143024 143025 143026 143027 143028 143029 143030 143031 143032 143033 143034 143035 143036 143037 143038 143039 143040 143041 143042 143043 143044 143045 143046 143047 143048 143049 143050 143051 143052 143053 143054 143055 143056 143057 143058 143059 143060 143061 143062 143063 143064 143065 143066 143067 143068 143069 143070 143071 143072 143073 143074 143075 | }else{ yymsp[0].minor.yy314 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0); if( yymsp[0].minor.yy314 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy314->iTable); } } } break; case 162: /* expr ::= expr COLLATE ID|STRING */ { yymsp[-2].minor.yy314 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy314, &yymsp[0].minor.yy0, 1); } break; case 163: /* expr ::= CAST LP expr AS typetoken RP */ { yymsp[-5].minor.yy314 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1); sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy314, yymsp[-3].minor.yy314, 0); } break; case 164: /* expr ::= ID|INDEXED LP distinct exprlist RP */ { if( yymsp[-1].minor.yy322 && yymsp[-1].minor.yy322->nExpr>pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] ){ sqlite3ErrorMsg(pParse, "too many arguments on function %T", &yymsp[-4].minor.yy0); } yylhsminor.yy314 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0); if( yymsp[-2].minor.yy4==SF_Distinct && yylhsminor.yy314 ){ yylhsminor.yy314->flags |= EP_Distinct; } } yymsp[-4].minor.yy314 = yylhsminor.yy314; break; case 165: /* expr ::= ID|INDEXED LP STAR RP */ { yylhsminor.yy314 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0); } yymsp[-3].minor.yy314 = yylhsminor.yy314; break; case 166: /* term ::= CTIME_KW */ { yylhsminor.yy314 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0); } yymsp[0].minor.yy314 = yylhsminor.yy314; break; case 167: /* expr ::= LP nexprlist COMMA expr RP */ { ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy322, yymsp[-1].minor.yy314); yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0); if( yymsp[-4].minor.yy314 ){ yymsp[-4].minor.yy314->x.pList = pList; }else{ sqlite3ExprListDelete(pParse->db, pList); } } break; case 168: /* expr ::= expr AND expr */ case 169: /* expr ::= expr OR expr */ yytestcase(yyruleno==169); case 170: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==170); case 171: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==171); case 172: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==172); case 173: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==173); case 174: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==174); case 175: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==175); {yymsp[-2].minor.yy314=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy314,yymsp[0].minor.yy314);} break; case 176: /* likeop ::= NOT LIKE_KW|MATCH */ {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/} break; case 177: /* expr ::= expr likeop expr */ { ExprList *pList; int bNot = yymsp[-1].minor.yy0.n & 0x80000000; yymsp[-1].minor.yy0.n &= 0x7fffffff; pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy314); pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy314); yymsp[-2].minor.yy314 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0); if( bNot ) yymsp[-2].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy314, 0); if( yymsp[-2].minor.yy314 ) yymsp[-2].minor.yy314->flags |= EP_InfixFunc; } break; case 178: /* expr ::= expr likeop expr ESCAPE expr */ { ExprList *pList; int bNot = yymsp[-3].minor.yy0.n & 0x80000000; yymsp[-3].minor.yy0.n &= 0x7fffffff; pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy314); pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy314); pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy314); yymsp[-4].minor.yy314 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0); if( bNot ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); if( yymsp[-4].minor.yy314 ) yymsp[-4].minor.yy314->flags |= EP_InfixFunc; } break; case 179: /* expr ::= expr ISNULL|NOTNULL */ {yymsp[-1].minor.yy314 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy314,0);} break; case 180: /* expr ::= expr NOT NULL */ {yymsp[-2].minor.yy314 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy314,0);} break; case 181: /* expr ::= expr IS expr */ { yymsp[-2].minor.yy314 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy314,yymsp[0].minor.yy314); binaryToUnaryIfNull(pParse, yymsp[0].minor.yy314, yymsp[-2].minor.yy314, TK_ISNULL); } break; case 182: /* expr ::= expr IS NOT expr */ { yymsp[-3].minor.yy314 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy314,yymsp[0].minor.yy314); binaryToUnaryIfNull(pParse, yymsp[0].minor.yy314, yymsp[-3].minor.yy314, TK_NOTNULL); } break; case 183: /* expr ::= NOT expr */ case 184: /* expr ::= BITNOT expr */ yytestcase(yyruleno==184); {yymsp[-1].minor.yy314 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy314, 0);/*A-overwrites-B*/} break; case 185: /* expr ::= MINUS expr */ {yymsp[-1].minor.yy314 = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy314, 0);} break; case 186: /* expr ::= PLUS expr */ {yymsp[-1].minor.yy314 = sqlite3PExpr(pParse, TK_UPLUS, yymsp[0].minor.yy314, 0);} break; case 187: /* between_op ::= BETWEEN */ case 190: /* in_op ::= IN */ yytestcase(yyruleno==190); {yymsp[0].minor.yy4 = 0;} break; case 189: /* expr ::= expr between_op expr AND expr */ { ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy314); pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy314); yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy314, 0); if( yymsp[-4].minor.yy314 ){ yymsp[-4].minor.yy314->x.pList = pList; }else{ sqlite3ExprListDelete(pParse->db, pList); } if( yymsp[-3].minor.yy4 ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); } break; case 192: /* expr ::= expr in_op LP exprlist RP */ { if( yymsp[-1].minor.yy322==0 ){ /* Expressions of the form ** ** expr1 IN () ** expr1 NOT IN () ** |
︙ | ︙ | |||
143019 143020 143021 143022 143023 143024 143025 | }else{ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322); } if( yymsp[-3].minor.yy4 ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); } } break; | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < < < | < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | 143113 143114 143115 143116 143117 143118 143119 143120 143121 143122 143123 143124 143125 143126 143127 143128 143129 143130 143131 143132 143133 143134 143135 143136 143137 143138 143139 143140 143141 143142 143143 143144 143145 143146 143147 143148 143149 143150 143151 143152 143153 143154 143155 143156 143157 143158 143159 143160 143161 143162 143163 143164 143165 143166 143167 143168 143169 143170 143171 143172 143173 143174 143175 143176 143177 143178 143179 143180 143181 143182 143183 143184 143185 143186 143187 143188 143189 143190 143191 143192 143193 143194 143195 143196 143197 143198 143199 143200 143201 143202 143203 143204 143205 143206 143207 143208 143209 143210 143211 143212 143213 143214 143215 143216 143217 143218 143219 143220 143221 143222 143223 143224 143225 143226 143227 143228 143229 143230 143231 143232 143233 143234 143235 143236 143237 143238 143239 143240 143241 143242 143243 143244 143245 143246 143247 143248 143249 143250 143251 143252 143253 143254 143255 143256 143257 143258 143259 143260 143261 143262 143263 143264 143265 143266 143267 143268 143269 143270 143271 143272 143273 143274 143275 143276 143277 143278 143279 143280 143281 143282 143283 143284 143285 143286 143287 143288 143289 143290 143291 143292 143293 143294 143295 143296 143297 143298 143299 143300 143301 143302 143303 143304 143305 143306 143307 143308 143309 143310 143311 143312 143313 143314 143315 143316 143317 143318 143319 143320 143321 143322 143323 143324 143325 143326 143327 143328 143329 143330 143331 143332 143333 143334 143335 143336 143337 143338 143339 143340 143341 143342 143343 143344 143345 143346 143347 143348 143349 143350 143351 143352 143353 143354 143355 143356 143357 143358 143359 143360 143361 143362 143363 143364 143365 143366 143367 143368 143369 143370 143371 143372 143373 143374 143375 143376 143377 143378 143379 143380 143381 143382 143383 143384 143385 143386 143387 143388 143389 143390 143391 143392 143393 143394 143395 143396 143397 143398 143399 143400 143401 143402 143403 143404 143405 143406 143407 143408 143409 143410 143411 143412 143413 143414 143415 143416 143417 143418 143419 143420 143421 143422 143423 143424 143425 143426 143427 143428 143429 143430 143431 143432 143433 143434 143435 143436 143437 143438 143439 143440 143441 143442 143443 143444 143445 143446 143447 143448 143449 143450 143451 143452 143453 143454 143455 143456 143457 143458 143459 143460 143461 143462 143463 143464 143465 143466 143467 143468 143469 143470 143471 143472 143473 143474 143475 143476 143477 143478 143479 143480 143481 143482 143483 143484 143485 143486 143487 143488 | }else{ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322); } if( yymsp[-3].minor.yy4 ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); } } break; case 193: /* expr ::= LP select RP */ { yymsp[-2].minor.yy314 = sqlite3PExpr(pParse, TK_SELECT, 0, 0); sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy314, yymsp[-1].minor.yy387); } break; case 194: /* expr ::= expr in_op LP select RP */ { yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy314, 0); sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy314, yymsp[-1].minor.yy387); if( yymsp[-3].minor.yy4 ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); } break; case 195: /* expr ::= expr in_op nm dbnm paren_exprlist */ { SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0); if( yymsp[0].minor.yy322 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy322); yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy314, 0); sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy314, pSelect); if( yymsp[-3].minor.yy4 ) yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy314, 0); } break; case 196: /* expr ::= EXISTS LP select RP */ { Expr *p; p = yymsp[-3].minor.yy314 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0); sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy387); } break; case 197: /* expr ::= CASE case_operand case_exprlist case_else END */ { yymsp[-4].minor.yy314 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy314, 0); if( yymsp[-4].minor.yy314 ){ yymsp[-4].minor.yy314->x.pList = yymsp[-1].minor.yy314 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[-1].minor.yy314) : yymsp[-2].minor.yy322; sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy314); }else{ sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy322); sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy314); } } break; case 198: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ { yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[-2].minor.yy314); yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[0].minor.yy314); } break; case 199: /* case_exprlist ::= WHEN expr THEN expr */ { yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy314); yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322, yymsp[0].minor.yy314); } break; case 202: /* case_operand ::= expr */ {yymsp[0].minor.yy314 = yymsp[0].minor.yy314; /*A-overwrites-X*/} break; case 205: /* nexprlist ::= nexprlist COMMA expr */ {yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[0].minor.yy314);} break; case 206: /* nexprlist ::= expr */ {yymsp[0].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy314); /*A-overwrites-Y*/} break; case 208: /* paren_exprlist ::= LP exprlist RP */ case 213: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==213); {yymsp[-2].minor.yy322 = yymsp[-1].minor.yy322;} break; case 209: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ { sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy322, yymsp[-10].minor.yy4, &yymsp[-11].minor.yy0, yymsp[0].minor.yy314, SQLITE_SO_ASC, yymsp[-8].minor.yy4, SQLITE_IDXTYPE_APPDEF); } break; case 210: /* uniqueflag ::= UNIQUE */ case 250: /* raisetype ::= ABORT */ yytestcase(yyruleno==250); {yymsp[0].minor.yy4 = OE_Abort;} break; case 211: /* uniqueflag ::= */ {yymsp[1].minor.yy4 = OE_None;} break; case 214: /* eidlist ::= eidlist COMMA nm collate sortorder */ { yymsp[-4].minor.yy322 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy4, yymsp[0].minor.yy4); } break; case 215: /* eidlist ::= nm collate sortorder */ { yymsp[-2].minor.yy322 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy4, yymsp[0].minor.yy4); /*A-overwrites-Y*/ } break; case 218: /* cmd ::= DROP INDEX ifexists fullname */ {sqlite3DropIndex(pParse, yymsp[0].minor.yy259, yymsp[-1].minor.yy4);} break; case 219: /* cmd ::= VACUUM */ {sqlite3Vacuum(pParse,0);} break; case 220: /* cmd ::= VACUUM nm */ {sqlite3Vacuum(pParse,&yymsp[0].minor.yy0);} break; case 221: /* cmd ::= PRAGMA nm dbnm */ {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);} break; case 222: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);} break; case 223: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);} break; case 224: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);} break; case 225: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);} break; case 228: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ { Token all; all.z = yymsp[-3].minor.yy0.z; all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n; sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy203, &all); } break; case 229: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ { 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); yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/ } break; case 230: /* trigger_time ::= BEFORE|AFTER */ { yymsp[0].minor.yy4 = yymsp[0].major; /*A-overwrites-X*/ } break; case 231: /* trigger_time ::= INSTEAD OF */ { yymsp[-1].minor.yy4 = TK_INSTEAD;} break; case 232: /* trigger_time ::= */ { yymsp[1].minor.yy4 = TK_BEFORE; } break; case 233: /* trigger_event ::= DELETE|INSERT */ case 234: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==234); {yymsp[0].minor.yy90.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy90.b = 0;} break; case 235: /* trigger_event ::= UPDATE OF idlist */ {yymsp[-2].minor.yy90.a = TK_UPDATE; yymsp[-2].minor.yy90.b = yymsp[0].minor.yy384;} break; case 236: /* when_clause ::= */ case 255: /* key_opt ::= */ yytestcase(yyruleno==255); { yymsp[1].minor.yy314 = 0; } break; case 237: /* when_clause ::= WHEN expr */ case 256: /* key_opt ::= KEY expr */ yytestcase(yyruleno==256); { yymsp[-1].minor.yy314 = yymsp[0].minor.yy314; } break; case 238: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ { assert( yymsp[-2].minor.yy203!=0 ); yymsp[-2].minor.yy203->pLast->pNext = yymsp[-1].minor.yy203; yymsp[-2].minor.yy203->pLast = yymsp[-1].minor.yy203; } break; case 239: /* trigger_cmd_list ::= trigger_cmd SEMI */ { assert( yymsp[-1].minor.yy203!=0 ); yymsp[-1].minor.yy203->pLast = yymsp[-1].minor.yy203; } break; case 240: /* trnm ::= nm DOT nm */ { yymsp[-2].minor.yy0 = yymsp[0].minor.yy0; sqlite3ErrorMsg(pParse, "qualified table names are not allowed on INSERT, UPDATE, and DELETE " "statements within triggers"); } break; case 241: /* tridxby ::= INDEXED BY nm */ { sqlite3ErrorMsg(pParse, "the INDEXED BY clause is not allowed on UPDATE or DELETE statements " "within triggers"); } break; case 242: /* tridxby ::= NOT INDEXED */ { sqlite3ErrorMsg(pParse, "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements " "within triggers"); } break; case 243: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */ {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);} yymsp[-7].minor.yy203 = yylhsminor.yy203; break; case 244: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select scanpt */ {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*/} yymsp[-6].minor.yy203 = yylhsminor.yy203; break; case 245: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ {yylhsminor.yy203 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy314, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy336);} yymsp[-5].minor.yy203 = yylhsminor.yy203; break; case 246: /* trigger_cmd ::= scanpt select scanpt */ {yylhsminor.yy203 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy387, yymsp[-2].minor.yy336, yymsp[0].minor.yy336); /*yylhsminor.yy203-overwrites-yymsp[-1].minor.yy387*/} yymsp[-2].minor.yy203 = yylhsminor.yy203; break; case 247: /* expr ::= RAISE LP IGNORE RP */ { yymsp[-3].minor.yy314 = sqlite3PExpr(pParse, TK_RAISE, 0, 0); if( yymsp[-3].minor.yy314 ){ yymsp[-3].minor.yy314->affinity = OE_Ignore; } } break; case 248: /* expr ::= RAISE LP raisetype COMMA nm RP */ { yymsp[-5].minor.yy314 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1); if( yymsp[-5].minor.yy314 ) { yymsp[-5].minor.yy314->affinity = (char)yymsp[-3].minor.yy4; } } break; case 249: /* raisetype ::= ROLLBACK */ {yymsp[0].minor.yy4 = OE_Rollback;} break; case 251: /* raisetype ::= FAIL */ {yymsp[0].minor.yy4 = OE_Fail;} break; case 252: /* cmd ::= DROP TRIGGER ifexists fullname */ { sqlite3DropTrigger(pParse,yymsp[0].minor.yy259,yymsp[-1].minor.yy4); } break; case 253: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ { sqlite3Attach(pParse, yymsp[-3].minor.yy314, yymsp[-1].minor.yy314, yymsp[0].minor.yy314); } break; case 254: /* cmd ::= DETACH database_kw_opt expr */ { sqlite3Detach(pParse, yymsp[0].minor.yy314); } break; case 257: /* cmd ::= REINDEX */ {sqlite3Reindex(pParse, 0, 0);} break; case 258: /* cmd ::= REINDEX nm dbnm */ {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} break; case 259: /* cmd ::= ANALYZE */ {sqlite3Analyze(pParse, 0, 0);} break; case 260: /* cmd ::= ANALYZE nm dbnm */ {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} break; case 261: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ { sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy259,&yymsp[0].minor.yy0); } break; case 262: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ { yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n; sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0); } break; case 263: /* add_column_fullname ::= fullname */ { disableLookaside(pParse); sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy259); } break; case 264: /* cmd ::= create_vtab */ {sqlite3VtabFinishParse(pParse,0);} break; case 265: /* cmd ::= create_vtab LP vtabarglist RP */ {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} break; case 266: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ { sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy4); } break; case 267: /* vtabarg ::= */ {sqlite3VtabArgInit(pParse);} break; case 268: /* vtabargtoken ::= ANY */ case 269: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==269); case 270: /* lp ::= LP */ yytestcase(yyruleno==270); {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);} break; case 271: /* with ::= WITH wqlist */ case 272: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==272); { sqlite3WithPush(pParse, yymsp[0].minor.yy451, 1); } break; case 273: /* wqlist ::= nm eidlist_opt AS LP select RP */ { yymsp[-5].minor.yy451 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy387); /*A-overwrites-X*/ } break; case 274: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */ { yymsp[-7].minor.yy451 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy451, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy387); } break; default: /* (275) input ::= cmdlist */ yytestcase(yyruleno==275); /* (276) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==276); /* (277) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=277); /* (278) ecmd ::= SEMI */ yytestcase(yyruleno==278); /* (279) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==279); /* (280) explain ::= */ yytestcase(yyruleno==280); /* (281) trans_opt ::= */ yytestcase(yyruleno==281); /* (282) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==282); /* (283) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==283); /* (284) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==284); /* (285) savepoint_opt ::= */ yytestcase(yyruleno==285); /* (286) cmd ::= create_table create_table_args */ yytestcase(yyruleno==286); /* (287) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==287); /* (288) columnlist ::= columnname carglist */ yytestcase(yyruleno==288); /* (289) nm ::= ID|INDEXED */ yytestcase(yyruleno==289); /* (290) nm ::= STRING */ yytestcase(yyruleno==290); /* (291) nm ::= JOIN_KW */ yytestcase(yyruleno==291); /* (292) typetoken ::= typename */ yytestcase(yyruleno==292); /* (293) typename ::= ID|STRING */ yytestcase(yyruleno==293); /* (294) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=294); /* (295) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=295); /* (296) carglist ::= carglist ccons */ yytestcase(yyruleno==296); /* (297) carglist ::= */ yytestcase(yyruleno==297); /* (298) ccons ::= NULL onconf */ yytestcase(yyruleno==298); /* (299) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==299); /* (300) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==300); /* (301) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=301); /* (302) tconscomma ::= */ yytestcase(yyruleno==302); /* (303) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=303); /* (304) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=304); /* (305) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=305); /* (306) oneselect ::= values */ yytestcase(yyruleno==306); /* (307) sclp ::= selcollist COMMA */ yytestcase(yyruleno==307); /* (308) as ::= ID|STRING */ yytestcase(yyruleno==308); /* (309) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=309); /* (310) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==310); /* (311) exprlist ::= nexprlist */ yytestcase(yyruleno==311); /* (312) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=312); /* (313) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=313); /* (314) nmnum ::= ON */ yytestcase(yyruleno==314); /* (315) nmnum ::= DELETE */ yytestcase(yyruleno==315); /* (316) nmnum ::= DEFAULT */ yytestcase(yyruleno==316); /* (317) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==317); /* (318) foreach_clause ::= */ yytestcase(yyruleno==318); /* (319) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==319); /* (320) trnm ::= nm */ yytestcase(yyruleno==320); /* (321) tridxby ::= */ yytestcase(yyruleno==321); /* (322) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==322); /* (323) database_kw_opt ::= */ yytestcase(yyruleno==323); /* (324) kwcolumn_opt ::= */ yytestcase(yyruleno==324); /* (325) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==325); /* (326) vtabarglist ::= vtabarg */ yytestcase(yyruleno==326); /* (327) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==327); /* (328) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==328); /* (329) anylist ::= */ yytestcase(yyruleno==329); /* (330) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==330); /* (331) anylist ::= anylist ANY */ yytestcase(yyruleno==331); /* (332) with ::= */ yytestcase(yyruleno==332); break; /********** End reduce actions ************************************************/ }; assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) ); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto); |
︙ | ︙ | |||
180438 180439 180440 180441 180442 180443 180444 | /* ** An object of this type is used internally as an abstraction for ** input data. Input data may be supplied either as a single large buffer ** (e.g. sqlite3changeset_start()) or using a stream function (e.g. ** sqlite3changeset_start_strm()). */ struct SessionInput { | | | 180528 180529 180530 180531 180532 180533 180534 180535 180536 180537 180538 180539 180540 180541 180542 | /* ** An object of this type is used internally as an abstraction for ** input data. Input data may be supplied either as a single large buffer ** (e.g. sqlite3changeset_start()) or using a stream function (e.g. ** sqlite3changeset_start_strm()). */ struct SessionInput { int bNoDiscard; /* If true, do not discard in InputBuffer() */ int iCurrent; /* Offset in aData[] of current change */ int iNext; /* Offset in aData[] of next change */ u8 *aData; /* Pointer to buffer containing changeset */ int nData; /* Number of bytes in aData */ SessionBuffer buf; /* Current read buffer */ int (*xInput)(void*, void*, int*); /* Input stream call (or NULL) */ |
︙ | ︙ | |||
182963 182964 182965 182966 182967 182968 182969 | } /* ** If the SessionInput object passed as the only argument is a streaming ** object and the buffer is full, discard some data to free up space. */ static void sessionDiscardData(SessionInput *pIn){ | | | 183053 183054 183055 183056 183057 183058 183059 183060 183061 183062 183063 183064 183065 183066 183067 | } /* ** If the SessionInput object passed as the only argument is a streaming ** object and the buffer is full, discard some data to free up space. */ static void sessionDiscardData(SessionInput *pIn){ if( pIn->xInput && pIn->iNext>=SESSIONS_STRM_CHUNK_SIZE ){ int nMove = pIn->buf.nBuf - pIn->iNext; assert( nMove>=0 ); if( nMove>0 ){ memmove(pIn->buf.aBuf, &pIn->buf.aBuf[pIn->iNext], nMove); } pIn->buf.nBuf -= pIn->iNext; pIn->iNext = 0; |
︙ | ︙ | |||
184604 184605 184606 184607 184608 184609 184610 | ), int(*xConflict)( void *pCtx, /* Copy of fifth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ | | > | > | > | 184694 184695 184696 184697 184698 184699 184700 184701 184702 184703 184704 184705 184706 184707 184708 184709 184710 184711 184712 184713 184714 184715 184716 184717 184718 184719 184720 184721 184722 184723 184724 184725 | ), int(*xConflict)( void *pCtx, /* Copy of fifth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ void **ppRebase, int *pnRebase, /* OUT: Rebase information */ int flags /* SESSION_APPLY_XXX flags */ ){ int schemaMismatch = 0; int rc = SQLITE_OK; /* Return code */ const char *zTab = 0; /* Name of current table */ int nTab = 0; /* Result of sqlite3Strlen30(zTab) */ SessionApplyCtx sApply; /* changeset_apply() context object */ int bPatchset; assert( xConflict!=0 ); pIter->in.bNoDiscard = 1; memset(&sApply, 0, sizeof(sApply)); sqlite3_mutex_enter(sqlite3_db_mutex(db)); if( (flags & SQLITE_CHANGESETAPPLY_NOSAVEPOINT)==0 ){ rc = sqlite3_exec(db, "SAVEPOINT changeset_apply", 0, 0, 0); } if( rc==SQLITE_OK ){ rc = sqlite3_exec(db, "PRAGMA defer_foreign_keys = 1", 0, 0, 0); } while( rc==SQLITE_OK && SQLITE_ROW==sqlite3changeset_next(pIter) ){ int nCol; int op; const char *zNew; |
︙ | ︙ | |||
184756 184757 184758 184759 184760 184761 184762 | if( res!=SQLITE_CHANGESET_OMIT ){ rc = SQLITE_CONSTRAINT; } } } sqlite3_exec(db, "PRAGMA defer_foreign_keys = 0", 0, 0, 0); | > | | | | | > | 184849 184850 184851 184852 184853 184854 184855 184856 184857 184858 184859 184860 184861 184862 184863 184864 184865 184866 184867 184868 184869 | if( res!=SQLITE_CHANGESET_OMIT ){ rc = SQLITE_CONSTRAINT; } } } sqlite3_exec(db, "PRAGMA defer_foreign_keys = 0", 0, 0, 0); if( (flags & SQLITE_CHANGESETAPPLY_NOSAVEPOINT)==0 ){ if( rc==SQLITE_OK ){ rc = sqlite3_exec(db, "RELEASE changeset_apply", 0, 0, 0); }else{ sqlite3_exec(db, "ROLLBACK TO changeset_apply", 0, 0, 0); sqlite3_exec(db, "RELEASE changeset_apply", 0, 0, 0); } } if( rc==SQLITE_OK && bPatchset==0 && ppRebase && pnRebase ){ *ppRebase = (void*)sApply.rebase.aBuf; *pnRebase = sApply.rebase.nBuf; sApply.rebase.aBuf = 0; } |
︙ | ︙ | |||
184797 184798 184799 184800 184801 184802 184803 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ | | > | | 184892 184893 184894 184895 184896 184897 184898 184899 184900 184901 184902 184903 184904 184905 184906 184907 184908 184909 184910 184911 184912 184913 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ void **ppRebase, int *pnRebase, int flags ){ sqlite3_changeset_iter *pIter; /* Iterator to skip through changeset */ int rc = sqlite3changeset_start(&pIter, nChangeset, pChangeset); if( rc==SQLITE_OK ){ rc = sessionChangesetApply( db, pIter, xFilter, xConflict, pCtx, ppRebase, pnRebase, flags ); } return rc; } /* ** Apply the changeset passed via pChangeset/nChangeset to the main database |
︙ | ︙ | |||
184830 184831 184832 184833 184834 184835 184836 | void *pCtx, /* Copy of fifth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx /* First argument passed to xConflict */ ){ return sqlite3changeset_apply_v2( | | | 184926 184927 184928 184929 184930 184931 184932 184933 184934 184935 184936 184937 184938 184939 184940 | void *pCtx, /* Copy of fifth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx /* First argument passed to xConflict */ ){ return sqlite3changeset_apply_v2( db, nChangeset, pChangeset, xFilter, xConflict, pCtx, 0, 0, 0 ); } /* ** Apply the changeset passed via xInput/pIn to the main database ** attached to handle "db". Invoke the supplied conflict handler callback ** to resolve any conflicts encountered while applying the change. |
︙ | ︙ | |||
184853 184854 184855 184856 184857 184858 184859 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ | | > | | | 184949 184950 184951 184952 184953 184954 184955 184956 184957 184958 184959 184960 184961 184962 184963 184964 184965 184966 184967 184968 184969 184970 184971 184972 184973 184974 184975 184976 184977 184978 184979 184980 184981 184982 184983 184984 184985 184986 184987 184988 184989 184990 184991 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ void **ppRebase, int *pnRebase, int flags ){ sqlite3_changeset_iter *pIter; /* Iterator to skip through changeset */ int rc = sqlite3changeset_start_strm(&pIter, xInput, pIn); if( rc==SQLITE_OK ){ rc = sessionChangesetApply( db, pIter, xFilter, xConflict, pCtx, ppRebase, pnRebase, flags ); } return rc; } SQLITE_API int sqlite3changeset_apply_strm( sqlite3 *db, /* Apply change to "main" db of this handle */ int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */ void *pIn, /* First arg for xInput */ int(*xFilter)( void *pCtx, /* Copy of sixth arg to _apply() */ const char *zTab /* Table name */ ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx /* First argument passed to xConflict */ ){ return sqlite3changeset_apply_v2_strm( db, xInput, pIn, xFilter, xConflict, pCtx, 0, 0, 0 ); } /* ** sqlite3_changegroup handle. */ struct sqlite3_changegroup { |
︙ | ︙ | |||
203460 203461 203462 203463 203464 203465 203466 203467 203468 203469 203470 203471 203472 203473 203474 203475 203476 203477 203478 203479 203480 203481 203482 203483 203484 203485 | FTS5_BI_ROWID_GE, 0, 0, -1}, }; int aColMap[3]; aColMap[0] = -1; aColMap[1] = nCol; aColMap[2] = nCol+1; /* Set idxFlags flags for all WHERE clause terms that will be used. */ for(i=0; i<pInfo->nConstraint; i++){ struct sqlite3_index_constraint *p = &pInfo->aConstraint[i]; int iCol = p->iColumn; if( (p->op==SQLITE_INDEX_CONSTRAINT_MATCH && iCol>=0 && iCol<=nCol) || (p->op==SQLITE_INDEX_CONSTRAINT_EQ && iCol==nCol) ){ /* A MATCH operator or equivalent */ if( p->usable ){ idxFlags = (idxFlags & 0xFFFF) | FTS5_BI_MATCH | (iCol << 16); aConstraint[0].iConsIndex = i; }else{ /* As there exists an unusable MATCH constraint this is an ** unusable plan. Set a prohibitively high cost. */ pInfo->estimatedCost = 1e50; return SQLITE_OK; } | > > > > > > | | | 203557 203558 203559 203560 203561 203562 203563 203564 203565 203566 203567 203568 203569 203570 203571 203572 203573 203574 203575 203576 203577 203578 203579 203580 203581 203582 203583 203584 203585 203586 203587 203588 203589 203590 203591 203592 203593 203594 203595 203596 203597 203598 203599 203600 | FTS5_BI_ROWID_GE, 0, 0, -1}, }; int aColMap[3]; aColMap[0] = -1; aColMap[1] = nCol; aColMap[2] = nCol+1; assert( SQLITE_INDEX_CONSTRAINT_EQ<SQLITE_INDEX_CONSTRAINT_MATCH ); assert( SQLITE_INDEX_CONSTRAINT_GT<SQLITE_INDEX_CONSTRAINT_MATCH ); assert( SQLITE_INDEX_CONSTRAINT_LE<SQLITE_INDEX_CONSTRAINT_MATCH ); assert( SQLITE_INDEX_CONSTRAINT_GE<SQLITE_INDEX_CONSTRAINT_MATCH ); assert( SQLITE_INDEX_CONSTRAINT_LE<SQLITE_INDEX_CONSTRAINT_MATCH ); /* Set idxFlags flags for all WHERE clause terms that will be used. */ for(i=0; i<pInfo->nConstraint; i++){ struct sqlite3_index_constraint *p = &pInfo->aConstraint[i]; int iCol = p->iColumn; if( (p->op==SQLITE_INDEX_CONSTRAINT_MATCH && iCol>=0 && iCol<=nCol) || (p->op==SQLITE_INDEX_CONSTRAINT_EQ && iCol==nCol) ){ /* A MATCH operator or equivalent */ if( p->usable ){ idxFlags = (idxFlags & 0xFFFF) | FTS5_BI_MATCH | (iCol << 16); aConstraint[0].iConsIndex = i; }else{ /* As there exists an unusable MATCH constraint this is an ** unusable plan. Set a prohibitively high cost. */ pInfo->estimatedCost = 1e50; return SQLITE_OK; } }else if( p->op<=SQLITE_INDEX_CONSTRAINT_MATCH ){ int j; for(j=1; j<ArraySize(aConstraint); j++){ struct Constraint *pC = &aConstraint[j]; if( iCol==aColMap[pC->iCol] && (p->op & pC->op) && p->usable ){ pC->iConsIndex = i; idxFlags |= pC->fts5op; } } } } |
︙ | ︙ | |||
205555 205556 205557 205558 205559 205560 205561 | static void fts5SourceIdFunc( sqlite3_context *pCtx, /* Function call context */ int nArg, /* Number of args */ sqlite3_value **apUnused /* Function arguments */ ){ assert( nArg==0 ); UNUSED_PARAM2(nArg, apUnused); | | | 205658 205659 205660 205661 205662 205663 205664 205665 205666 205667 205668 205669 205670 205671 205672 | static void fts5SourceIdFunc( sqlite3_context *pCtx, /* Function call context */ int nArg, /* Number of args */ sqlite3_value **apUnused /* Function arguments */ ){ assert( nArg==0 ); UNUSED_PARAM2(nArg, apUnused); sqlite3_result_text(pCtx, "fts5: 2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b", -1, SQLITE_TRANSIENT); } static int fts5Init(sqlite3 *db){ static const sqlite3_module fts5Mod = { /* iVersion */ 2, /* xCreate */ fts5CreateMethod, /* xConnect */ fts5ConnectMethod, |
︙ | ︙ | |||
209825 209826 209827 209828 209829 209830 209831 | #endif return rc; } #endif /* SQLITE_CORE */ #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */ /************** End of stmt.c ************************************************/ | | | | 209928 209929 209930 209931 209932 209933 209934 209935 209936 209937 209938 209939 209940 209941 | #endif return rc; } #endif /* SQLITE_CORE */ #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */ /************** End of stmt.c ************************************************/ #if __LINE__!=209935 #undef SQLITE_SOURCE_ID #define SQLITE_SOURCE_ID "2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd14alt2" #endif /* Return the source-id for this library */ SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; } /************************** End of sqlite3.c ******************************/ |
Changes to src/sqlite3.h.
︙ | ︙ | |||
119 120 121 122 123 124 125 | ** been edited in any way since it was last checked in, then the last ** four hexadecimal digits of the hash may be modified. ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ | | | | | 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | ** been edited in any way since it was last checked in, then the last ** four hexadecimal digits of the hash may be modified. ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.23.1" #define SQLITE_VERSION_NUMBER 3023001 #define SQLITE_SOURCE_ID "2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b" /* ** CAPI3REF: Run-Time Library Version Numbers ** KEYWORDS: sqlite3_version sqlite3_sourceid ** ** These interfaces provide the same information as the [SQLITE_VERSION], ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros |
︙ | ︙ | |||
10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10112 10113 10114 10115 | ** may set (*ppRebase) to point to a "rebase" that may be used with the ** sqlite3_rebaser APIs buffer before returning. In this case (*pnRebase) ** is set to the size of the buffer in bytes. It is the responsibility of the ** caller to eventually free any such buffer using sqlite3_free(). The buffer ** is only allocated and populated if one or more conflicts were encountered ** while applying the patchset. See comments surrounding the sqlite3_rebaser ** APIs for further details. */ SQLITE_API int sqlite3changeset_apply( sqlite3 *db, /* Apply change to "main" db of this handle */ int nChangeset, /* Size of changeset in bytes */ void *pChangeset, /* Changeset blob */ int(*xFilter)( void *pCtx, /* Copy of sixth arg to _apply() */ | > > > > > > > | 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 | ** may set (*ppRebase) to point to a "rebase" that may be used with the ** sqlite3_rebaser APIs buffer before returning. In this case (*pnRebase) ** is set to the size of the buffer in bytes. It is the responsibility of the ** caller to eventually free any such buffer using sqlite3_free(). The buffer ** is only allocated and populated if one or more conflicts were encountered ** while applying the patchset. See comments surrounding the sqlite3_rebaser ** APIs for further details. ** ** The behavior of sqlite3changeset_apply_v2() and its streaming equivalent ** may be modified by passing a combination of ** [SQLITE_CHANGESETAPPLY_NOSAVEPOINT | supported flags] as the 9th parameter. ** ** Note that the sqlite3changeset_apply_v2() API is still <b>experimental</b> ** and therefore subject to change. */ SQLITE_API int sqlite3changeset_apply( sqlite3 *db, /* Apply change to "main" db of this handle */ int nChangeset, /* Size of changeset in bytes */ void *pChangeset, /* Changeset blob */ int(*xFilter)( void *pCtx, /* Copy of sixth arg to _apply() */ |
︙ | ︙ | |||
10132 10133 10134 10135 10136 10137 10138 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ | | > > > > > > > > > > > > > > > > > > > | 10139 10140 10141 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10172 10173 10174 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ void **ppRebase, int *pnRebase, /* OUT: Rebase data */ int flags /* Combination of SESSION_APPLY_* flags */ ); /* ** CAPI3REF: Flags for sqlite3changeset_apply_v2 ** ** The following flags may passed via the 9th parameter to ** [sqlite3changeset_apply_v2] and [sqlite3changeset_apply_v2_strm]: ** ** <dl> ** <dt>SQLITE_CHANGESETAPPLY_NOSAVEPOINT <dd> ** Usually, the sessions module encloses all operations performed by ** a single call to apply_v2() or apply_v2_strm() in a [SAVEPOINT]. The ** SAVEPOINT is committed if the changeset or patchset is successfully ** applied, or rolled back if an error occurs. Specifying this flag ** causes the sessions module to omit this savepoint. In this case, if the ** caller has an open transaction or savepoint when apply_v2() is called, ** it may revert the partially applied changeset by rolling it back. */ #define SQLITE_CHANGESETAPPLY_NOSAVEPOINT 0x0001 /* ** CAPI3REF: Constants Passed To The Conflict Handler ** ** Values that may be passed as the second argument to a conflict-handler. ** ** <dl> ** <dt>SQLITE_CHANGESET_DATA<dd> |
︙ | ︙ | |||
10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 | ** ** The six streaming API xxx_strm() functions serve similar purposes to the ** corresponding non-streaming API functions: ** ** <table border=1 style="margin-left:8ex;margin-right:8ex"> ** <tr><th>Streaming function<th>Non-streaming equivalent</th> ** <tr><td>sqlite3changeset_apply_strm<td>[sqlite3changeset_apply] ** <tr><td>sqlite3changeset_concat_strm<td>[sqlite3changeset_concat] ** <tr><td>sqlite3changeset_invert_strm<td>[sqlite3changeset_invert] ** <tr><td>sqlite3changeset_start_strm<td>[sqlite3changeset_start] ** <tr><td>sqlite3session_changeset_strm<td>[sqlite3session_changeset] ** <tr><td>sqlite3session_patchset_strm<td>[sqlite3session_patchset] ** </table> ** | > | 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 | ** ** The six streaming API xxx_strm() functions serve similar purposes to the ** corresponding non-streaming API functions: ** ** <table border=1 style="margin-left:8ex;margin-right:8ex"> ** <tr><th>Streaming function<th>Non-streaming equivalent</th> ** <tr><td>sqlite3changeset_apply_strm<td>[sqlite3changeset_apply] ** <tr><td>sqlite3changeset_apply_strm_v2<td>[sqlite3changeset_apply_v2] ** <tr><td>sqlite3changeset_concat_strm<td>[sqlite3changeset_concat] ** <tr><td>sqlite3changeset_invert_strm<td>[sqlite3changeset_invert] ** <tr><td>sqlite3changeset_start_strm<td>[sqlite3changeset_start] ** <tr><td>sqlite3session_changeset_strm<td>[sqlite3session_changeset] ** <tr><td>sqlite3session_patchset_strm<td>[sqlite3session_patchset] ** </table> ** |
︙ | ︙ | |||
10504 10505 10506 10507 10508 10509 10510 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ | | > | 10531 10532 10533 10534 10535 10536 10537 10538 10539 10540 10541 10542 10543 10544 10545 10546 | ), int(*xConflict)( void *pCtx, /* Copy of sixth arg to _apply() */ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */ sqlite3_changeset_iter *p /* Handle describing change and conflict */ ), void *pCtx, /* First argument passed to xConflict */ void **ppRebase, int *pnRebase, int flags ); SQLITE_API int sqlite3changeset_concat_strm( int (*xInputA)(void *pIn, void *pData, int *pnData), void *pInA, int (*xInputB)(void *pIn, void *pData, int *pnData), void *pInB, int (*xOutput)(void *pOut, const void *pData, int nData), |
︙ | ︙ |