Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Update the built-in SQLite to the latest 3.43.0 alpha code in order to fix compiler warnings on old PPC macs. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
aaf6abf6cab4f00115385e1f73115996 |
| User & Date: | drh 2023-06-19 13:10:49.576 |
Context
|
2023-06-19
| ||
| 13:54 | Fix a bug in repo_list_page() that manifests only on 32-bit builds on big-endian CPUs. check-in: 42076cabfa user: drh tags: trunk | |
| 13:10 | Update the built-in SQLite to the latest 3.43.0 alpha code in order to fix compiler warnings on old PPC macs. check-in: aaf6abf6ca user: drh tags: trunk | |
|
2023-06-18
| ||
| 23:20 | Update documentation to "fossil patch" and "fossil ui" to talk about the algorithm used for locating the fossil executable on the remote host. check-in: d22e2b3817 user: drh tags: trunk | |
Changes
Changes to extsrc/shell.c.
| ︙ | ︙ | |||
242 243 244 245 246 247 248 249 250 251 252 253 254 255 | #define IsDigit(X) isdigit((unsigned char)X) #define ToLower(X) (char)tolower((unsigned char)X) #if defined(_WIN32) || defined(WIN32) #if SQLITE_OS_WINRT #include <intrin.h> #endif #define WIN32_LEAN_AND_MEAN #include <windows.h> /* string conversion routines only needed on Win32 */ extern char *sqlite3_win32_unicode_to_utf8(LPCWSTR); extern char *sqlite3_win32_mbcs_to_utf8_v2(const char *, int); extern char *sqlite3_win32_utf8_to_mbcs_v2(const char *, int); | > | 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 | #define IsDigit(X) isdigit((unsigned char)X) #define ToLower(X) (char)tolower((unsigned char)X) #if defined(_WIN32) || defined(WIN32) #if SQLITE_OS_WINRT #include <intrin.h> #endif #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #include <windows.h> /* string conversion routines only needed on Win32 */ extern char *sqlite3_win32_unicode_to_utf8(LPCWSTR); extern char *sqlite3_win32_mbcs_to_utf8_v2(const char *, int); extern char *sqlite3_win32_utf8_to_mbcs_v2(const char *, int); |
| ︙ | ︙ | |||
1469 1470 1471 1472 1473 1474 1475 | */ #ifndef is_filtered # define is_filtered(a) ((((a).attrib)&_A_HIDDEN) || (((a).attrib)&_A_SYSTEM)) #endif /* | | | 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 | */ #ifndef is_filtered # define is_filtered(a) ((((a).attrib)&_A_HIDDEN) || (((a).attrib)&_A_SYSTEM)) #endif /* ** Provide the function prototype for the POSIX compatible getenv() ** function. This function is not thread-safe. */ extern const char *windirent_getenv(const char *name); /* ** Finally, we can provide the function prototypes for the opendir(), |
| ︙ | ︙ | |||
4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 |
case SERIES_COLUMN_STEP: x = pCur->ss.iStep; break;
default: x = pCur->ss.iValueNow; break;
}
sqlite3_result_int64(ctx, x);
return SQLITE_OK;
}
/*
** Return the rowid for the current row, logically equivalent to n+1 where
** "n" is the ascending integer in the aforesaid production definition.
*/
static int seriesRowid(sqlite3_vtab_cursor *cur, sqlite_int64 *pRowid){
series_cursor *pCur = (series_cursor*)cur;
sqlite3_uint64 n = pCur->ss.uSeqIndexNow;
| > > > > | | 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 |
case SERIES_COLUMN_STEP: x = pCur->ss.iStep; break;
default: x = pCur->ss.iValueNow; break;
}
sqlite3_result_int64(ctx, x);
return SQLITE_OK;
}
#ifndef LARGEST_UINT64
#define LARGEST_UINT64 (0xffffffff|(((sqlite3_uint64)0xffffffff)<<32))
#endif
/*
** Return the rowid for the current row, logically equivalent to n+1 where
** "n" is the ascending integer in the aforesaid production definition.
*/
static int seriesRowid(sqlite3_vtab_cursor *cur, sqlite_int64 *pRowid){
series_cursor *pCur = (series_cursor*)cur;
sqlite3_uint64 n = pCur->ss.uSeqIndexNow;
*pRowid = (sqlite3_int64)((n<LARGEST_UINT64)? n+1 : 0);
return SQLITE_OK;
}
/*
** Return TRUE if the cursor has been moved off of the last
** row of output.
*/
|
| ︙ | ︙ | |||
12911 12912 12913 12914 12915 12916 12917 | ** ); ** ** It contains one entry for each b-tree pointer between a parent and ** child page in the database. */ #if !defined(SQLITEINT_H) | | < | 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 12934 12935 | ** ); ** ** It contains one entry for each b-tree pointer between a parent and ** child page in the database. */ #if !defined(SQLITEINT_H) /* #include "sqlite3.h" */ /* typedef unsigned char u8; */ /* typedef unsigned int u32; */ #endif #include <string.h> #include <assert.h> #ifndef SQLITE_OMIT_VIRTUALTABLE #define DBDATA_PADDING_BYTES 100 |
| ︙ | ︙ | |||
13502 13503 13504 13505 13506 13507 13508 13509 |
}else{
pCsr->iField++;
if( pCsr->iField>0 ){
sqlite3_int64 iType;
if( pCsr->pHdrPtr>&pCsr->pRec[pCsr->nRec] ){
bNextPage = 1;
}else{
pCsr->pHdrPtr += dbdataGetVarintU32(pCsr->pHdrPtr, &iType);
| > | > > > > > | 13506 13507 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13526 13527 |
}else{
pCsr->iField++;
if( pCsr->iField>0 ){
sqlite3_int64 iType;
if( pCsr->pHdrPtr>&pCsr->pRec[pCsr->nRec] ){
bNextPage = 1;
}else{
int szField = 0;
pCsr->pHdrPtr += dbdataGetVarintU32(pCsr->pHdrPtr, &iType);
szField = dbdataValueBytes(iType);
if( (pCsr->nRec - (pCsr->pPtr - pCsr->pRec))<szField ){
pCsr->pPtr = &pCsr->pRec[pCsr->nRec];
}else{
pCsr->pPtr += szField;
}
}
}
}
if( bNextPage ){
sqlite3_free(pCsr->aPage);
sqlite3_free(pCsr->pRec);
|
| ︙ | ︙ | |||
13776 13777 13778 13779 13780 13781 13782 |
int rc = sqlite3_create_module(db, "sqlite_dbdata", &dbdata_module, 0);
if( rc==SQLITE_OK ){
rc = sqlite3_create_module(db, "sqlite_dbptr", &dbdata_module, (void*)1);
}
return rc;
}
| < < < < | 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 13803 13804 |
int rc = sqlite3_create_module(db, "sqlite_dbdata", &dbdata_module, 0);
if( rc==SQLITE_OK ){
rc = sqlite3_create_module(db, "sqlite_dbptr", &dbdata_module, (void*)1);
}
return rc;
}
int sqlite3_dbdata_init(
sqlite3 *db,
char **pzErrMsg,
const sqlite3_api_routines *pApi
){
(void)pzErrMsg;
return sqlite3DbdataRegister(db);
}
#endif /* ifndef SQLITE_OMIT_VIRTUALTABLE */
/************************* End ../ext/recover/dbdata.c ********************/
|
| ︙ | ︙ | |||
15898 15899 15900 15901 15902 15903 15904 |
if( iFree && iFree<=iContent ) return 0;
while( iFree ){
int iNext = 0;
int nByte = 0;
if( iFree>(n-4) ) return 0;
iNext = recoverGetU16(&a[iFree]);
nByte = recoverGetU16(&a[iFree+2]);
| | | 15904 15905 15906 15907 15908 15909 15910 15911 15912 15913 15914 15915 15916 15917 15918 |
if( iFree && iFree<=iContent ) return 0;
while( iFree ){
int iNext = 0;
int nByte = 0;
if( iFree>(n-4) ) return 0;
iNext = recoverGetU16(&a[iFree]);
nByte = recoverGetU16(&a[iFree+2]);
if( iFree+nByte>n || nByte<4 ) return 0;
if( iNext && iNext<iFree+nByte ) return 0;
memset(&aUsed[iFree], 0xFF, nByte);
iFree = iNext;
}
/* Run through the cells */
if( eType==0x02 || eType==0x05 ){
|
| ︙ | ︙ | |||
16724 16725 16726 16727 16728 16729 16730 |
** State information about the database connection is contained in an
** instance of the following structure.
*/
typedef struct ShellState ShellState;
struct ShellState {
sqlite3 *db; /* The database */
u8 autoExplain; /* Automatically turn on .explain mode */
| | | | 16730 16731 16732 16733 16734 16735 16736 16737 16738 16739 16740 16741 16742 16743 16744 16745 16746 16747 16748 16749 16750 16751 16752 16753 16754 16755 16756 |
** State information about the database connection is contained in an
** instance of the following structure.
*/
typedef struct ShellState ShellState;
struct ShellState {
sqlite3 *db; /* The database */
u8 autoExplain; /* Automatically turn on .explain mode */
u8 autoEQP; /* Run EXPLAIN QUERY PLAN prior to each SQL stmt */
u8 autoEQPtest; /* autoEQP is in test mode */
u8 autoEQPtrace; /* autoEQP is in trace mode */
u8 scanstatsOn; /* True to display scan stats before each finalize */
u8 openMode; /* SHELL_OPEN_NORMAL, _APPENDVFS, or _ZIPFILE */
u8 doXdgOpen; /* Invoke start/open/xdg-open in output_reset() */
u8 nEqpLevel; /* Depth of the EQP output graph */
u8 eTraceType; /* SHELL_TRACE_* value for type of trace */
u8 bSafeMode; /* True to prohibit unsafe operations */
u8 bSafeModePersist; /* The long-term value of bSafeMode */
ColModeOpts cmOpts; /* Option values affecting columnar mode output */
unsigned statsOn; /* True to display memory stats before each finalize */
unsigned mEqpLines; /* Mask of vertical lines in the EQP output graph */
int inputNesting; /* Track nesting level of .read and other redirects */
int outCount; /* Revert to stdout when reaching zero */
int cnt; /* Number of records displayed so far */
int lineno; /* Line number of last line read from in */
int openFlags; /* Additional flags to open. (SQLITE_OPEN_NOFOLLOW) */
FILE *in; /* Read commands from this stream */
FILE *out; /* Write results here */
|
| ︙ | ︙ | |||
16787 16788 16789 16790 16791 16792 16793 |
OpenSession aSession[4]; /* Array of sessions. [0] is in focus. */
#endif
} aAuxDb[5], /* Array of all database connections */
*pAuxDb; /* Currently active database connection */
int *aiIndent; /* Array of indents used in MODE_Explain */
int nIndent; /* Size of array aiIndent[] */
int iIndent; /* Index of current op in aiIndent[] */
| | | 16793 16794 16795 16796 16797 16798 16799 16800 16801 16802 16803 16804 16805 16806 16807 |
OpenSession aSession[4]; /* Array of sessions. [0] is in focus. */
#endif
} aAuxDb[5], /* Array of all database connections */
*pAuxDb; /* Currently active database connection */
int *aiIndent; /* Array of indents used in MODE_Explain */
int nIndent; /* Size of array aiIndent[] */
int iIndent; /* Index of current op in aiIndent[] */
char *zNonce; /* Nonce for temporary safe-mode escapes */
EQPGraph sGraph; /* Information for the graphical EXPLAIN QUERY PLAN */
ExpertInfo expert; /* Valid if previous command was ".expert OPT..." */
#ifdef SQLITE_SHELL_FIDDLE
struct {
const char * zInput; /* Input string from wasm/JS proxy */
const char * zPos; /* Cursor pos into zInput */
const char * zDefaultDbName; /* Default name for db file */
|
| ︙ | ︙ | |||
16829 16830 16831 16832 16833 16834 16835 | */ #define SHELL_TRACE_PLAIN 0 /* Show input SQL text */ #define SHELL_TRACE_EXPANDED 1 /* Show expanded SQL text */ #define SHELL_TRACE_NORMALIZED 2 /* Show normalized SQL text */ /* Bits in the ShellState.flgProgress variable */ #define SHELL_PROGRESS_QUIET 0x01 /* Omit announcing every progress callback */ | | | 16835 16836 16837 16838 16839 16840 16841 16842 16843 16844 16845 16846 16847 16848 16849 |
*/
#define SHELL_TRACE_PLAIN 0 /* Show input SQL text */
#define SHELL_TRACE_EXPANDED 1 /* Show expanded SQL text */
#define SHELL_TRACE_NORMALIZED 2 /* Show normalized SQL text */
/* Bits in the ShellState.flgProgress variable */
#define SHELL_PROGRESS_QUIET 0x01 /* Omit announcing every progress callback */
#define SHELL_PROGRESS_RESET 0x02 /* Reset the count when the progress
** callback limit is reached, and for each
** top-level SQL statement */
#define SHELL_PROGRESS_ONCE 0x04 /* Cancel the --limit after firing once */
/*
** These are the allowed shellFlgs values
*/
|
| ︙ | ︙ | |||
18343 18344 18345 18346 18347 18348 18349 | } /* ** Allocate space and save off string indicating current error. */ static char *save_err_msg( sqlite3 *db, /* Database to query */ | | | 18349 18350 18351 18352 18353 18354 18355 18356 18357 18358 18359 18360 18361 18362 18363 |
}
/*
** Allocate space and save off string indicating current error.
*/
static char *save_err_msg(
sqlite3 *db, /* Database to query */
const char *zPhase, /* When the error occurs */
int rc, /* Error code returned from API */
const char *zSql /* SQL string, or NULL */
){
char *zErr;
char *zContext;
sqlite3_str *pStr = sqlite3_str_new(0);
sqlite3_str_appendf(pStr, "%s, %s", zPhase, sqlite3_errmsg(db));
|
| ︙ | ︙ | |||
18766 18767 18768 18769 18770 18771 18772 |
** SQL trigger or foreign key. */
int p2 = sqlite3_column_int(pSql, 3);
int p2op = (p2 + (iOp-iAddr));
/* Grow the p->aiIndent array as required */
if( iOp>=nAlloc ){
if( iOp==0 ){
| | | 18772 18773 18774 18775 18776 18777 18778 18779 18780 18781 18782 18783 18784 18785 18786 |
** SQL trigger or foreign key. */
int p2 = sqlite3_column_int(pSql, 3);
int p2op = (p2 + (iOp-iAddr));
/* Grow the p->aiIndent array as required */
if( iOp>=nAlloc ){
if( iOp==0 ){
/* Do further verification that this is explain output. Abort if
** it is not */
static const char *explainCols[] = {
"addr", "opcode", "p1", "p2", "p3", "p4", "p5", "comment" };
int jj;
for(jj=0; jj<ArraySize(explainCols); jj++){
if( cli_strcmp(sqlite3_column_name(pSql,jj),explainCols[jj])!=0 ){
p->cMode = p->mode;
|
| ︙ | ︙ | |||
19109 19110 19111 19112 19113 19114 19115 | ** This is different from ordinary exec_prepared_stmt() in that ** it has to run the entire query and gather the results into memory ** first, in order to determine column widths, before providing ** any output. */ static void exec_prepared_stmt_columnar( ShellState *p, /* Pointer to ShellState */ | | | 19115 19116 19117 19118 19119 19120 19121 19122 19123 19124 19125 19126 19127 19128 19129 |
** This is different from ordinary exec_prepared_stmt() in that
** it has to run the entire query and gather the results into memory
** first, in order to determine column widths, before providing
** any output.
*/
static void exec_prepared_stmt_columnar(
ShellState *p, /* Pointer to ShellState */
sqlite3_stmt *pStmt /* Statement to run */
){
sqlite3_int64 nRow = 0;
int nColumn = 0;
char **azData = 0;
sqlite3_int64 nAlloc = 0;
char *abRowDiv = 0;
const unsigned char *uz;
|
| ︙ | ︙ | |||
19335 19336 19337 19338 19339 19340 19341 | } /* ** Run a prepared statement */ static void exec_prepared_stmt( ShellState *pArg, /* Pointer to ShellState */ | | | 19341 19342 19343 19344 19345 19346 19347 19348 19349 19350 19351 19352 19353 19354 19355 |
}
/*
** Run a prepared statement
*/
static void exec_prepared_stmt(
ShellState *pArg, /* Pointer to ShellState */
sqlite3_stmt *pStmt /* Statement to run */
){
int rc;
sqlite3_uint64 nRow = 0;
if( pArg->cMode==MODE_Column
|| pArg->cMode==MODE_Table
|| pArg->cMode==MODE_Box
|
| ︙ | ︙ | |||
19594 19595 19596 19597 19598 19599 19600 |
while( IsSpace(zSql[0]) ) zSql++;
continue;
}
zStmtSql = sqlite3_sql(pStmt);
if( zStmtSql==0 ) zStmtSql = "";
while( IsSpace(zStmtSql[0]) ) zStmtSql++;
| | | 19600 19601 19602 19603 19604 19605 19606 19607 19608 19609 19610 19611 19612 19613 19614 |
while( IsSpace(zSql[0]) ) zSql++;
continue;
}
zStmtSql = sqlite3_sql(pStmt);
if( zStmtSql==0 ) zStmtSql = "";
while( IsSpace(zStmtSql[0]) ) zStmtSql++;
/* save off the prepared statement handle and reset row count */
if( pArg ){
pArg->pStmt = pStmt;
pArg->cnt = 0;
}
/* Show the EXPLAIN QUERY PLAN if .eqp is on */
if( pArg && pArg->autoEQP && sqlite3_stmt_isexplain(pStmt)==0 ){
|
| ︙ | ︙ | |||
19642 19643 19644 19645 19646 19647 19648 |
explain_data_delete(pArg);
}
sqlite3_finalize(pExplain);
sqlite3_free(zEQP);
}
if( pArg->autoEQP>=AUTOEQP_trigger && triggerEQP==0 ){
sqlite3_db_config(db, SQLITE_DBCONFIG_TRIGGER_EQP, 0, 0);
| | | 19648 19649 19650 19651 19652 19653 19654 19655 19656 19657 19658 19659 19660 19661 19662 |
explain_data_delete(pArg);
}
sqlite3_finalize(pExplain);
sqlite3_free(zEQP);
}
if( pArg->autoEQP>=AUTOEQP_trigger && triggerEQP==0 ){
sqlite3_db_config(db, SQLITE_DBCONFIG_TRIGGER_EQP, 0, 0);
/* Reprepare pStmt before reactivating trace modes */
sqlite3_finalize(pStmt);
sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0);
if( pArg ) pArg->pStmt = pStmt;
}
restore_debug_trace_modes();
}
|
| ︙ | ︙ | |||
19779 19780 19781 19782 19783 19784 19785 |
** is tricky. We never need to preserve a rowid for a WITHOUT ROWID table
** or a table with an INTEGER PRIMARY KEY. We are unable to preserve
** rowids on tables where the rowid is inaccessible because there are other
** columns in the table named "rowid", "_rowid_", and "oid".
*/
if( preserveRowid && isIPK ){
/* If a single PRIMARY KEY column with type INTEGER was seen, then it
| | | 19785 19786 19787 19788 19789 19790 19791 19792 19793 19794 19795 19796 19797 19798 19799 |
** is tricky. We never need to preserve a rowid for a WITHOUT ROWID table
** or a table with an INTEGER PRIMARY KEY. We are unable to preserve
** rowids on tables where the rowid is inaccessible because there are other
** columns in the table named "rowid", "_rowid_", and "oid".
*/
if( preserveRowid && isIPK ){
/* If a single PRIMARY KEY column with type INTEGER was seen, then it
** might be an alias for the ROWID. But it might also be a WITHOUT ROWID
** table or a INTEGER PRIMARY KEY DESC column, neither of which are
** ROWID aliases. To distinguish these cases, check to see if
** there is a "pk" entry in "PRAGMA index_list". There will be
** no "pk" index if the PRIMARY KEY really is an alias for the ROWID.
*/
zSql = sqlite3_mprintf("SELECT 1 FROM pragma_index_list(%Q)"
" WHERE origin='pk'", zTab);
|
| ︙ | ︙ | |||
20756 20757 20758 20759 20760 20761 20762 |
* This is a short-span macro. See further below for usage.
*/
#define SHELL_SUB_MACRO(base, variant) base ## _ ## variant
#define SHELL_SUBMACRO(base, variant) SHELL_SUB_MACRO(base, variant)
/* Let custom-included extensions get their ..._init() called.
* The WHATEVER_INIT( db, pzErrorMsg, pApi ) macro should cause
* the extension's sqlite3_*_init( db, pzErrorMsg, pApi )
| | | 20762 20763 20764 20765 20766 20767 20768 20769 20770 20771 20772 20773 20774 20775 20776 |
* This is a short-span macro. See further below for usage.
*/
#define SHELL_SUB_MACRO(base, variant) base ## _ ## variant
#define SHELL_SUBMACRO(base, variant) SHELL_SUB_MACRO(base, variant)
/* Let custom-included extensions get their ..._init() called.
* The WHATEVER_INIT( db, pzErrorMsg, pApi ) macro should cause
* the extension's sqlite3_*_init( db, pzErrorMsg, pApi )
* initialization routine to be called.
*/
{
int irc = SHELL_SUBMACRO(SQLITE_SHELL_EXTFUNCS, INIT)(p->db);
/* Let custom-included extensions expose their functionality.
* The WHATEVER_EXPOSE( db, pzErrorMsg ) macro should cause
* the SQL functions, virtual tables, collating sequences or
* VFS's implemented by the extension to be registered.
|
| ︙ | ︙ | |||
20833 20834 20835 20836 20837 20838 20839 |
sqlite3_db_config(
p->db, SQLITE_DBCONFIG_STMT_SCANSTATUS, p->scanstatsOn, (int*)0
);
}
}
/*
| | | 20839 20840 20841 20842 20843 20844 20845 20846 20847 20848 20849 20850 20851 20852 20853 |
sqlite3_db_config(
p->db, SQLITE_DBCONFIG_STMT_SCANSTATUS, p->scanstatsOn, (int*)0
);
}
}
/*
** Attempt to close the database connection. Report errors.
*/
void close_db(sqlite3 *db){
int rc = sqlite3_close(db);
if( rc ){
utf8_printf(stderr, "Error: sqlite3_close() returns %d: %s\n",
rc, sqlite3_errmsg(db));
}
|
| ︙ | ︙ | |||
21327 21328 21329 21330 21331 21332 21333 |
i += 2;
}
memcpy(zInsert+i, ");", 3);
rc = sqlite3_prepare_v2(newDb, zInsert, -1, &pInsert, 0);
if( rc ){
utf8_printf(stderr, "Error %d: %s on [%s]\n",
sqlite3_extended_errcode(newDb), sqlite3_errmsg(newDb),
| | | 21333 21334 21335 21336 21337 21338 21339 21340 21341 21342 21343 21344 21345 21346 21347 |
i += 2;
}
memcpy(zInsert+i, ");", 3);
rc = sqlite3_prepare_v2(newDb, zInsert, -1, &pInsert, 0);
if( rc ){
utf8_printf(stderr, "Error %d: %s on [%s]\n",
sqlite3_extended_errcode(newDb), sqlite3_errmsg(newDb),
zInsert);
goto end_data_xfer;
}
for(k=0; k<2; k++){
while( (rc = sqlite3_step(pQuery))==SQLITE_ROW ){
for(i=0; i<n; i++){
switch( sqlite3_column_type(pQuery, i) ){
case SQLITE_NULL: {
|
| ︙ | ︙ | |||
27405 27406 27407 27408 27409 27410 27411 |
for(i=1; i<argc; i++){
char *z;
z = argv[i];
if( z[0]!='-' || i>nOptsEnd ){
if( data.aAuxDb->zDbFilename==0 ){
data.aAuxDb->zDbFilename = z;
}else{
| | | 27411 27412 27413 27414 27415 27416 27417 27418 27419 27420 27421 27422 27423 27424 27425 |
for(i=1; i<argc; i++){
char *z;
z = argv[i];
if( z[0]!='-' || i>nOptsEnd ){
if( data.aAuxDb->zDbFilename==0 ){
data.aAuxDb->zDbFilename = z;
}else{
/* Excess arguments are interpreted as SQL (or dot-commands) and
** mean that nothing is read from stdin */
readStdin = 0;
nCmd++;
azCmd = realloc(azCmd, sizeof(azCmd[0])*nCmd);
shell_check_oom(azCmd);
azCmd[nCmd-1] = z;
}
|
| ︙ | ︙ | |||
27490 27491 27492 27493 27494 27495 27496 |
void *pOutArg,
int makeDefault
);
vfstrace_register("trace",0,(int(*)(const char*,void*))fputs,stderr,1);
#endif
#ifdef SQLITE_ENABLE_MULTIPLEX
}else if( cli_strcmp(z,"-multiplex")==0 ){
| | | 27496 27497 27498 27499 27500 27501 27502 27503 27504 27505 27506 27507 27508 27509 27510 |
void *pOutArg,
int makeDefault
);
vfstrace_register("trace",0,(int(*)(const char*,void*))fputs,stderr,1);
#endif
#ifdef SQLITE_ENABLE_MULTIPLEX
}else if( cli_strcmp(z,"-multiplex")==0 ){
extern int sqlite3_multiplex_initialize(const char*,int);
sqlite3_multiplex_initialize(0, 1);
#endif
}else if( cli_strcmp(z,"-mmap")==0 ){
sqlite3_int64 sz = integerValue(cmdline_option_value(argc,argv,++i));
verify_uninitialized();
sqlite3_config(SQLITE_CONFIG_MMAP_SIZE, sz, sz);
#if defined(SQLITE_ENABLE_SORTER_REFERENCES)
|
| ︙ | ︙ | |||
27533 27534 27535 27536 27537 27538 27539 |
#endif
}else if( cli_strcmp(z, "-memtrace")==0 ){
sqlite3MemTraceActivate(stderr);
}else if( cli_strcmp(z,"-bail")==0 ){
bail_on_error = 1;
}else if( cli_strcmp(z,"-nonce")==0 ){
free(data.zNonce);
| | | 27539 27540 27541 27542 27543 27544 27545 27546 27547 27548 27549 27550 27551 27552 27553 |
#endif
}else if( cli_strcmp(z, "-memtrace")==0 ){
sqlite3MemTraceActivate(stderr);
}else if( cli_strcmp(z,"-bail")==0 ){
bail_on_error = 1;
}else if( cli_strcmp(z,"-nonce")==0 ){
free(data.zNonce);
data.zNonce = strdup(cmdline_option_value(argc, argv, ++i));
}else if( cli_strcmp(z,"-unsafe-testing")==0 ){
ShellSetFlag(&data,SHFLG_TestingMode);
}else if( cli_strcmp(z,"-safe")==0 ){
/* no-op - catch this on the second pass */
}
}
#ifndef SQLITE_SHELL_FIDDLE
|
| ︙ | ︙ |
Changes to extsrc/sqlite3.c.
| ︙ | ︙ | |||
14 15 16 17 18 19 20 | ** the text of this file. Search for "Begin file sqlite3.h" to find the start ** of the embedded sqlite3.h header file.) Additional code files may be needed ** if you want a wrapper to interface SQLite with your choice of programming ** language. The code for the "sqlite3" command-line shell is also in a ** separate file. This file contains only code for the core SQLite library. ** ** The content in this amalgamation comes from Fossil check-in | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | ** the text of this file. Search for "Begin file sqlite3.h" to find the start ** of the embedded sqlite3.h header file.) Additional code files may be needed ** if you want a wrapper to interface SQLite with your choice of programming ** language. The code for the "sqlite3" command-line shell is also in a ** separate file. This file contains only code for the core SQLite library. ** ** The content in this amalgamation comes from Fossil check-in ** c94f87806a8b408d8204fc7deec16d01c08. */ #define SQLITE_CORE 1 #define SQLITE_AMALGAMATION 1 #ifndef SQLITE_PRIVATE # define SQLITE_PRIVATE static #endif /************** Begin file sqliteInt.h ***************************************/ |
| ︙ | ︙ | |||
457 458 459 460 461 462 463 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.43.0" #define SQLITE_VERSION_NUMBER 3043000 | | | 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.43.0" #define SQLITE_VERSION_NUMBER 3043000 #define SQLITE_SOURCE_ID "2023-06-19 13:09:16 3c94f87806a8b408d8204fc7deec16d01c085ee199ff21a1f20b6346ce816cfe" /* ** 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 |
| ︙ | ︙ | |||
18639 18640 18641 18642 18643 18644 18645 18646 18647 18648 18649 18650 18651 18652 | #define ExprAlwaysFalse(E) (((E)->flags&(EP_OuterON|EP_IsFalse))==EP_IsFalse) /* Macros used to ensure that the correct members of unions are accessed ** in Expr. */ #define ExprUseUToken(E) (((E)->flags&EP_IntValue)==0) #define ExprUseUValue(E) (((E)->flags&EP_IntValue)!=0) #define ExprUseXList(E) (((E)->flags&EP_xIsSelect)==0) #define ExprUseXSelect(E) (((E)->flags&EP_xIsSelect)!=0) #define ExprUseYTab(E) (((E)->flags&(EP_WinFunc|EP_Subrtn))==0) #define ExprUseYWin(E) (((E)->flags&EP_WinFunc)!=0) #define ExprUseYSub(E) (((E)->flags&EP_Subrtn)!=0) /* Flags for use with Expr.vvaFlags | > > | 18639 18640 18641 18642 18643 18644 18645 18646 18647 18648 18649 18650 18651 18652 18653 18654 | #define ExprAlwaysFalse(E) (((E)->flags&(EP_OuterON|EP_IsFalse))==EP_IsFalse) /* Macros used to ensure that the correct members of unions are accessed ** in Expr. */ #define ExprUseUToken(E) (((E)->flags&EP_IntValue)==0) #define ExprUseUValue(E) (((E)->flags&EP_IntValue)!=0) #define ExprUseWOfst(E) (((E)->flags&(EP_InnerON|EP_OuterON))==0) #define ExprUseWJoin(E) (((E)->flags&(EP_InnerON|EP_OuterON))!=0) #define ExprUseXList(E) (((E)->flags&EP_xIsSelect)==0) #define ExprUseXSelect(E) (((E)->flags&EP_xIsSelect)!=0) #define ExprUseYTab(E) (((E)->flags&(EP_WinFunc|EP_Subrtn))==0) #define ExprUseYWin(E) (((E)->flags&EP_WinFunc)!=0) #define ExprUseYSub(E) (((E)->flags&EP_Subrtn)!=0) /* Flags for use with Expr.vvaFlags |
| ︙ | ︙ | |||
21107 21108 21109 21110 21111 21112 21113 21114 21115 21116 21117 21118 21119 21120 | #if SQLITE_MAX_EXPR_DEPTH>0 SQLITE_PRIVATE int sqlite3SelectExprHeight(const Select *); SQLITE_PRIVATE int sqlite3ExprCheckHeight(Parse*, int); #else #define sqlite3SelectExprHeight(x) 0 #define sqlite3ExprCheckHeight(x,y) #endif SQLITE_PRIVATE u32 sqlite3Get4byte(const u8*); SQLITE_PRIVATE void sqlite3Put4byte(u8*, u32); #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY SQLITE_PRIVATE void sqlite3ConnectionBlocked(sqlite3 *, sqlite3 *); SQLITE_PRIVATE void sqlite3ConnectionUnlocked(sqlite3 *db); | > | 21109 21110 21111 21112 21113 21114 21115 21116 21117 21118 21119 21120 21121 21122 21123 | #if SQLITE_MAX_EXPR_DEPTH>0 SQLITE_PRIVATE int sqlite3SelectExprHeight(const Select *); SQLITE_PRIVATE int sqlite3ExprCheckHeight(Parse*, int); #else #define sqlite3SelectExprHeight(x) 0 #define sqlite3ExprCheckHeight(x,y) #endif SQLITE_PRIVATE void sqlite3ExprSetErrorOffset(Expr*,int); SQLITE_PRIVATE u32 sqlite3Get4byte(const u8*); SQLITE_PRIVATE void sqlite3Put4byte(u8*, u32); #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY SQLITE_PRIVATE void sqlite3ConnectionBlocked(sqlite3 *, sqlite3 *); SQLITE_PRIVATE void sqlite3ConnectionUnlocked(sqlite3 *db); |
| ︙ | ︙ | |||
23745 23746 23747 23748 23749 23750 23751 |
** The "21a-" indicates the 2-digit month followed by "-". The "20c" indicates
** the 2-digit day which is the last integer in the set.
**
** The function returns the number of successful conversions.
*/
static int getDigits(const char *zDate, const char *zFormat, ...){
/* The aMx[] array translates the 3rd character of each format
| | | | 23748 23749 23750 23751 23752 23753 23754 23755 23756 23757 23758 23759 23760 23761 23762 23763 |
** The "21a-" indicates the 2-digit month followed by "-". The "20c" indicates
** the 2-digit day which is the last integer in the set.
**
** The function returns the number of successful conversions.
*/
static int getDigits(const char *zDate, const char *zFormat, ...){
/* The aMx[] array translates the 3rd character of each format
** spec into a max size: a b c d e f */
static const u16 aMx[] = { 12, 14, 24, 31, 59, 14712 };
va_list ap;
int cnt = 0;
char nextC;
va_start(ap, zFormat);
do{
char N = zFormat[0] - '0';
char min = zFormat[1] - '0';
|
| ︙ | ︙ | |||
24087 24088 24089 24090 24091 24092 24093 |
p->validYMD = 1;
}
/*
** Compute the Hour, Minute, and Seconds from the julian day number.
*/
static void computeHMS(DateTime *p){
| | | | | < < < | | | 24090 24091 24092 24093 24094 24095 24096 24097 24098 24099 24100 24101 24102 24103 24104 24105 24106 24107 24108 24109 24110 24111 |
p->validYMD = 1;
}
/*
** Compute the Hour, Minute, and Seconds from the julian day number.
*/
static void computeHMS(DateTime *p){
int day_ms, day_min; /* milliseconds, minutes into the day */
if( p->validHMS ) return;
computeJD(p);
day_ms = (int)((p->iJD + 43200000) % 86400000);
p->s = (day_ms % 60000)/1000.0;
day_min = day_ms/60000;
p->m = day_min % 60;
p->h = day_min / 60;
p->rawS = 0;
p->validHMS = 1;
}
/*
** Compute both YMD and HMS
*/
|
| ︙ | ︙ | |||
24507 24508 24509 24510 24511 24512 24513 24514 24515 24516 |
case '7':
case '8':
case '9': {
double rRounder;
int i;
int Y,M,D,h,m,x;
const char *z2 = z;
for(n=1; z[n]; n++){
if( z[n]==':' ) break;
if( sqlite3Isspace(z[n]) ) break;
| > > | > | > | | | | > > > > > | | 24507 24508 24509 24510 24511 24512 24513 24514 24515 24516 24517 24518 24519 24520 24521 24522 24523 24524 24525 24526 24527 24528 24529 24530 24531 24532 24533 24534 24535 24536 24537 24538 24539 24540 24541 24542 24543 24544 24545 24546 24547 24548 24549 24550 24551 |
case '7':
case '8':
case '9': {
double rRounder;
int i;
int Y,M,D,h,m,x;
const char *z2 = z;
char z0 = z[0];
for(n=1; z[n]; n++){
if( z[n]==':' ) break;
if( sqlite3Isspace(z[n]) ) break;
if( z[n]=='-' ){
if( n==5 && getDigits(&z[1], "40f", &Y)==1 ) break;
if( n==6 && getDigits(&z[1], "50f", &Y)==1 ) break;
}
}
if( sqlite3AtoF(z, &r, n, SQLITE_UTF8)<=0 ){
assert( rc==1 );
break;
}
if( z[n]=='-' ){
/* A modifier of the form (+|-)YYYY-MM-DD adds or subtracts the
** specified number of years, months, and days. MM is limited to
** the range 0-11 and DD is limited to 0-30.
*/
if( z0!='+' && z0!='-' ) break; /* Must start with +/- */
if( n==5 ){
if( getDigits(&z[1], "40f-20a-20d", &Y, &M, &D)!=3 ) break;
}else{
assert( n==6 );
if( getDigits(&z[1], "50f-20a-20d", &Y, &M, &D)!=3 ) break;
z++;
}
if( M>=12 ) break; /* M range 0..11 */
if( D>=31 ) break; /* D range 0..30 */
computeYMD_HMS(p);
p->validJD = 0;
if( z0=='-' ){
p->Y -= Y;
p->M -= M;
D = -D;
}else{
p->Y += Y;
p->M += M;
}
|
| ︙ | ︙ | |||
24572 24573 24574 24575 24576 24577 24578 |
if( !sqlite3Isdigit(*z2) ) z2++;
memset(&tx, 0, sizeof(tx));
if( parseHhMmSs(z2, &tx) ) break;
computeJD(&tx);
tx.iJD -= 43200000;
day = tx.iJD/86400000;
tx.iJD -= day*86400000;
| | | | 24581 24582 24583 24584 24585 24586 24587 24588 24589 24590 24591 24592 24593 24594 24595 24596 24597 24598 24599 24600 24601 24602 24603 24604 24605 24606 24607 24608 24609 24610 24611 |
if( !sqlite3Isdigit(*z2) ) z2++;
memset(&tx, 0, sizeof(tx));
if( parseHhMmSs(z2, &tx) ) break;
computeJD(&tx);
tx.iJD -= 43200000;
day = tx.iJD/86400000;
tx.iJD -= day*86400000;
if( z0=='-' ) tx.iJD = -tx.iJD;
computeJD(p);
clearYMD_HMS_TZ(p);
p->iJD += tx.iJD;
rc = 0;
break;
}
/* If control reaches this point, it means the transformation is
** one of the forms like "+NNN days". */
z += n;
while( sqlite3Isspace(*z) ) z++;
n = sqlite3Strlen30(z);
if( n>10 || n<3 ) break;
if( sqlite3UpperToLower[(u8)z[n-1]]=='s' ) n--;
computeJD(p);
assert( rc==1 );
rRounder = r<0 ? -0.5 : +0.5;
for(i=0; i<ArraySize(aXformType); i++){
if( aXformType[i].nName==n
&& sqlite3_strnicmp(aXformType[i].zName, z, n)==0
&& r>-aXformType[i].rLimit && r<aXformType[i].rLimit
){
switch( i ){
|
| ︙ | ︙ | |||
24755 24756 24757 24758 24759 24760 24761 |
zBuf[12] = '0' + (x.h/10)%10;
zBuf[13] = '0' + (x.h)%10;
zBuf[14] = ':';
zBuf[15] = '0' + (x.m/10)%10;
zBuf[16] = '0' + (x.m)%10;
zBuf[17] = ':';
if( x.useSubsec ){
| | | 24764 24765 24766 24767 24768 24769 24770 24771 24772 24773 24774 24775 24776 24777 24778 |
zBuf[12] = '0' + (x.h/10)%10;
zBuf[13] = '0' + (x.h)%10;
zBuf[14] = ':';
zBuf[15] = '0' + (x.m/10)%10;
zBuf[16] = '0' + (x.m)%10;
zBuf[17] = ':';
if( x.useSubsec ){
s = (int)(1000.0*x.s + 0.5);
zBuf[18] = '0' + (s/10000)%10;
zBuf[19] = '0' + (s/1000)%10;
zBuf[20] = '.';
zBuf[21] = '0' + (s/100)%10;
zBuf[22] = '0' + (s/10)%10;
zBuf[23] = '0' + (s)%10;
zBuf[24] = 0;
|
| ︙ | ︙ | |||
24802 24803 24804 24805 24806 24807 24808 |
zBuf[0] = '0' + (x.h/10)%10;
zBuf[1] = '0' + (x.h)%10;
zBuf[2] = ':';
zBuf[3] = '0' + (x.m/10)%10;
zBuf[4] = '0' + (x.m)%10;
zBuf[5] = ':';
if( x.useSubsec ){
| | | 24811 24812 24813 24814 24815 24816 24817 24818 24819 24820 24821 24822 24823 24824 24825 |
zBuf[0] = '0' + (x.h/10)%10;
zBuf[1] = '0' + (x.h)%10;
zBuf[2] = ':';
zBuf[3] = '0' + (x.m/10)%10;
zBuf[4] = '0' + (x.m)%10;
zBuf[5] = ':';
if( x.useSubsec ){
s = (int)(1000.0*x.s + 0.5);
zBuf[6] = '0' + (s/10000)%10;
zBuf[7] = '0' + (s/1000)%10;
zBuf[8] = '.';
zBuf[9] = '0' + (s/100)%10;
zBuf[10] = '0' + (s/10)%10;
zBuf[11] = '0' + (s)%10;
zBuf[12] = 0;
|
| ︙ | ︙ | |||
25032 25033 25034 25035 25036 25037 25038 | ** ** Both DATE arguments must be either a julian day number, or an ** ISO-8601 string. The unix timestamps are not supported by this ** routine. */ static void timediffFunc( sqlite3_context *context, | | > | | 25041 25042 25043 25044 25045 25046 25047 25048 25049 25050 25051 25052 25053 25054 25055 25056 25057 25058 25059 25060 25061 25062 25063 |
**
** Both DATE arguments must be either a julian day number, or an
** ISO-8601 string. The unix timestamps are not supported by this
** routine.
*/
static void timediffFunc(
sqlite3_context *context,
int NotUsed1,
sqlite3_value **argv
){
char sign;
int Y, M;
DateTime d1, d2;
sqlite3_str sRes;
UNUSED_PARAMETER(NotUsed1);
if( isDate(context, 1, &argv[0], &d1) ) return;
if( isDate(context, 1, &argv[1], &d2) ) return;
computeYMD_HMS(&d1);
computeYMD_HMS(&d2);
if( d1.iJD>=d2.iJD ){
sign = '+';
Y = d1.Y - d2.Y;
if( Y ){
|
| ︙ | ︙ | |||
25061 25062 25063 25064 25065 25066 25067 |
M += 12;
}
if( M!=0 ){
d2.M = d1.M;
d2.validJD = 0;
computeJD(&d2);
}
| | | | | | | 25071 25072 25073 25074 25075 25076 25077 25078 25079 25080 25081 25082 25083 25084 25085 25086 25087 25088 25089 25090 25091 25092 25093 25094 25095 25096 25097 25098 25099 25100 25101 25102 25103 25104 25105 25106 25107 25108 25109 25110 25111 25112 25113 25114 25115 25116 25117 25118 25119 25120 25121 25122 25123 25124 25125 25126 25127 25128 25129 25130 25131 25132 25133 25134 |
M += 12;
}
if( M!=0 ){
d2.M = d1.M;
d2.validJD = 0;
computeJD(&d2);
}
while( d1.iJD<d2.iJD ){
M--;
if( M<0 ){
M = 11;
Y--;
}
d2.M--;
if( d2.M<1 ){
d2.M = 12;
d2.Y--;
}
d2.validJD = 0;
computeJD(&d2);
}
d1.iJD -= d2.iJD;
d1.iJD += (u64)1486995408 * (u64)100000;
}else /* d1<d2 */{
sign = '-';
Y = d2.Y - d1.Y;
if( Y ){
d2.Y = d1.Y;
d2.validJD = 0;
computeJD(&d2);
}
M = d2.M - d1.M;
if( M<0 ){
Y--;
M += 12;
}
if( M!=0 ){
d2.M = d1.M;
d2.validJD = 0;
computeJD(&d2);
}
while( d1.iJD>d2.iJD ){
M--;
if( M<0 ){
M = 11;
Y--;
}
d2.M++;
if( d2.M>12 ){
d2.M = 1;
d2.Y++;
}
d2.validJD = 0;
computeJD(&d2);
}
d1.iJD = d2.iJD - d1.iJD;
d1.iJD += (u64)1486995408 * (u64)100000;
}
d1.validYMD = 0;
d1.validHMS = 0;
d1.validTZ = 0;
computeYMD_HMS(&d1);
sqlite3StrAccumInit(&sRes, 0, 0, 0, 100);
sqlite3_str_appendf(&sRes, "%c%04d-%02d-%02d %02d:%02d:%06.3f",
|
| ︙ | ︙ | |||
48844 48845 48846 48847 48848 48849 48850 |
gotPendingLock = 0;
}
/* Acquire an EXCLUSIVE lock
*/
if( locktype==EXCLUSIVE_LOCK && res ){
assert( pFile->locktype>=SHARED_LOCK );
| | | 48854 48855 48856 48857 48858 48859 48860 48861 48862 48863 48864 48865 48866 48867 48868 |
gotPendingLock = 0;
}
/* Acquire an EXCLUSIVE lock
*/
if( locktype==EXCLUSIVE_LOCK && res ){
assert( pFile->locktype>=SHARED_LOCK );
(void)winUnlockReadLock(pFile);
res = winLockFile(&pFile->h, SQLITE_LOCKFILE_FLAGS, SHARED_FIRST, 0,
SHARED_SIZE, 0);
if( res ){
newLocktype = EXCLUSIVE_LOCK;
}else{
lastErrno = osGetLastError();
winGetReadLock(pFile);
|
| ︙ | ︙ | |||
60605 60606 60607 60608 60609 60610 60611 |
void (*xReinit)(DbPage*) /* Function to reinitialize pages */
){
u8 *pPtr;
Pager *pPager = 0; /* Pager object to allocate and return */
int rc = SQLITE_OK; /* Return code */
int tempFile = 0; /* True for temp files (incl. in-memory files) */
int memDb = 0; /* True if this is an in-memory file */
| < < < < | 60615 60616 60617 60618 60619 60620 60621 60622 60623 60624 60625 60626 60627 60628 60629 |
void (*xReinit)(DbPage*) /* Function to reinitialize pages */
){
u8 *pPtr;
Pager *pPager = 0; /* Pager object to allocate and return */
int rc = SQLITE_OK; /* Return code */
int tempFile = 0; /* True for temp files (incl. in-memory files) */
int memDb = 0; /* True if this is an in-memory file */
int memJM = 0; /* Memory journal mode */
int readOnly = 0; /* True if this is a read-only file */
int journalFileSize; /* Bytes to allocate for each journal fd */
char *zPathname = 0; /* Full path to database file */
int nPathname = 0; /* Number of bytes in zPathname */
int useJournal = (flags & PAGER_OMIT_JOURNAL)==0; /* False to omit journal */
int pcacheSize = sqlite3PcacheSize(); /* Bytes to allocate for PCache */
u32 szPageDflt = SQLITE_DEFAULT_PAGE_SIZE; /* Default page size */
|
| ︙ | ︙ | |||
60728 60729 60730 60731 60732 60733 60734 60735 60736 60737 60738 60739 |
** - \0
**
** The sqlite3_create_filename() interface and the databaseFilename() utility
** that is used by sqlite3_filename_database() and kin also depend on the
** specific formatting and order of the various filenames, so if the format
** changes here, be sure to change it there as well.
*/
pPtr = (u8 *)sqlite3MallocZero(
ROUND8(sizeof(*pPager)) + /* Pager structure */
ROUND8(pcacheSize) + /* PCache object */
ROUND8(pVfs->szOsFile) + /* The main db file */
journalFileSize * 2 + /* The two journal files */
| > | | | 60734 60735 60736 60737 60738 60739 60740 60741 60742 60743 60744 60745 60746 60747 60748 60749 60750 60751 60752 60753 60754 60755 60756 60757 60758 60759 60760 60761 60762 60763 60764 60765 60766 60767 60768 60769 60770 60771 60772 60773 60774 60775 |
** - \0
**
** The sqlite3_create_filename() interface and the databaseFilename() utility
** that is used by sqlite3_filename_database() and kin also depend on the
** specific formatting and order of the various filenames, so if the format
** changes here, be sure to change it there as well.
*/
assert( SQLITE_PTRSIZE==sizeof(Pager*) );
pPtr = (u8 *)sqlite3MallocZero(
ROUND8(sizeof(*pPager)) + /* Pager structure */
ROUND8(pcacheSize) + /* PCache object */
ROUND8(pVfs->szOsFile) + /* The main db file */
journalFileSize * 2 + /* The two journal files */
SQLITE_PTRSIZE + /* Space to hold a pointer */
4 + /* Database prefix */
nPathname + 1 + /* database filename */
nUriByte + /* query parameters */
nPathname + 8 + 1 + /* Journal filename */
#ifndef SQLITE_OMIT_WAL
nPathname + 4 + 1 + /* WAL filename */
#endif
3 /* Terminator */
);
assert( EIGHT_BYTE_ALIGNMENT(SQLITE_INT_TO_PTR(journalFileSize)) );
if( !pPtr ){
sqlite3DbFree(0, zPathname);
return SQLITE_NOMEM_BKPT;
}
pPager = (Pager*)pPtr; pPtr += ROUND8(sizeof(*pPager));
pPager->pPCache = (PCache*)pPtr; pPtr += ROUND8(pcacheSize);
pPager->fd = (sqlite3_file*)pPtr; pPtr += ROUND8(pVfs->szOsFile);
pPager->sjfd = (sqlite3_file*)pPtr; pPtr += journalFileSize;
pPager->jfd = (sqlite3_file*)pPtr; pPtr += journalFileSize;
assert( EIGHT_BYTE_ALIGNMENT(pPager->jfd) );
memcpy(pPtr, &pPager, SQLITE_PTRSIZE); pPtr += SQLITE_PTRSIZE;
/* Fill in the Pager.zFilename and pPager.zQueryParam fields */
pPtr += 4; /* Skip zero prefix */
pPager->zFilename = (char*)pPtr;
if( nPathname>0 ){
memcpy(pPtr, zPathname, nPathname); pPtr += nPathname + 1;
if( zUri ){
|
| ︙ | ︙ | |||
60808 60809 60810 60811 60812 60813 60814 |
/* Open the pager file.
*/
if( zFilename && zFilename[0] ){
int fout = 0; /* VFS flags returned by xOpen() */
rc = sqlite3OsOpen(pVfs, pPager->zFilename, pPager->fd, vfsFlags, &fout);
assert( !memDb );
| < < | 60815 60816 60817 60818 60819 60820 60821 60822 60823 60824 60825 60826 60827 60828 60829 |
/* Open the pager file.
*/
if( zFilename && zFilename[0] ){
int fout = 0; /* VFS flags returned by xOpen() */
rc = sqlite3OsOpen(pVfs, pPager->zFilename, pPager->fd, vfsFlags, &fout);
assert( !memDb );
pPager->memVfs = memJM = (fout&SQLITE_OPEN_MEMORY)!=0;
readOnly = (fout&SQLITE_OPEN_READONLY)!=0;
/* If the file was successfully opened for read/write access,
** choose a default page size in case we have to create the
** database file. The default page size is the maximum of:
**
** + SQLITE_DEFAULT_PAGE_SIZE,
|
| ︙ | ︙ | |||
71536 71537 71538 71539 71540 71541 71542 71543 71544 71545 71546 71547 71548 71549 |
** when compiling on a different architecture.
*/
assert( sizeof(i64)==8 );
assert( sizeof(u64)==8 );
assert( sizeof(u32)==4 );
assert( sizeof(u16)==2 );
assert( sizeof(Pgno)==4 );
pBt = sqlite3MallocZero( sizeof(*pBt) );
if( pBt==0 ){
rc = SQLITE_NOMEM_BKPT;
goto btree_open_out;
}
rc = sqlite3PagerOpen(pVfs, &pBt->pPager, zFilename,
| > > > | 71541 71542 71543 71544 71545 71546 71547 71548 71549 71550 71551 71552 71553 71554 71555 71556 71557 |
** when compiling on a different architecture.
*/
assert( sizeof(i64)==8 );
assert( sizeof(u64)==8 );
assert( sizeof(u32)==4 );
assert( sizeof(u16)==2 );
assert( sizeof(Pgno)==4 );
/* Suppress false-positive compiler warning from PVS-Studio */
memset(&zDbHeader[16], 0, 8);
pBt = sqlite3MallocZero( sizeof(*pBt) );
if( pBt==0 ){
rc = SQLITE_NOMEM_BKPT;
goto btree_open_out;
}
rc = sqlite3PagerOpen(pVfs, &pBt->pPager, zFilename,
|
| ︙ | ︙ | |||
76383 76384 76385 76386 76387 76388 76389 |
u8 *pSrcEnd; /* Current pCArray->apEnd[k] value */
assert( i<iEnd );
j = get2byte(&aData[hdr+5]);
if( NEVER(j>(u32)usableSize) ){ j = 0; }
memcpy(&pTmp[j], &aData[j], usableSize - j);
| | | 76391 76392 76393 76394 76395 76396 76397 76398 76399 76400 76401 76402 76403 76404 76405 |
u8 *pSrcEnd; /* Current pCArray->apEnd[k] value */
assert( i<iEnd );
j = get2byte(&aData[hdr+5]);
if( NEVER(j>(u32)usableSize) ){ j = 0; }
memcpy(&pTmp[j], &aData[j], usableSize - j);
for(k=0; ALWAYS(k<NB*2) && pCArray->ixNx[k]<=i; k++){}
pSrcEnd = pCArray->apEnd[k];
pData = pEnd;
while( 1/*exit by break*/ ){
u8 *pCell = pCArray->apCell[i];
u16 sz = pCArray->szCell[i];
assert( sz>0 );
|
| ︙ | ︙ | |||
76466 76467 76468 76469 76470 76471 76472 | u8 *aData = pPg->aData; /* Complete page */ u8 *pData = *ppData; /* Content area. A subset of aData[] */ int iEnd = iFirst + nCell; /* End of loop. One past last cell to ins */ int k; /* Current slot in pCArray->apEnd[] */ u8 *pEnd; /* Maximum extent of cell data */ assert( CORRUPT_DB || pPg->hdrOffset==0 ); /* Never called on page 1 */ if( iEnd<=iFirst ) return 0; | | | 76474 76475 76476 76477 76478 76479 76480 76481 76482 76483 76484 76485 76486 76487 76488 |
u8 *aData = pPg->aData; /* Complete page */
u8 *pData = *ppData; /* Content area. A subset of aData[] */
int iEnd = iFirst + nCell; /* End of loop. One past last cell to ins */
int k; /* Current slot in pCArray->apEnd[] */
u8 *pEnd; /* Maximum extent of cell data */
assert( CORRUPT_DB || pPg->hdrOffset==0 ); /* Never called on page 1 */
if( iEnd<=iFirst ) return 0;
for(k=0; ALWAYS(k<NB*2) && pCArray->ixNx[k]<=i ; k++){}
pEnd = pCArray->apEnd[k];
while( 1 /*Exit by break*/ ){
int sz, rc;
u8 *pSlot;
assert( pCArray->szCell[i]!=0 );
sz = pCArray->szCell[i];
if( (aData[1]==0 && aData[2]==0) || (pSlot = pageFindSlot(pPg,sz,&rc))==0 ){
|
| ︙ | ︙ | |||
77576 77577 77578 77579 77580 77581 77582 |
assert(leafCorrection==4);
sz = pParent->xCellSize(pParent, pCell);
}
}
iOvflSpace += sz;
assert( sz<=pBt->maxLocal+23 );
assert( iOvflSpace <= (int)pBt->pageSize );
| | | 77584 77585 77586 77587 77588 77589 77590 77591 77592 77593 77594 77595 77596 77597 77598 |
assert(leafCorrection==4);
sz = pParent->xCellSize(pParent, pCell);
}
}
iOvflSpace += sz;
assert( sz<=pBt->maxLocal+23 );
assert( iOvflSpace <= (int)pBt->pageSize );
for(k=0; ALWAYS(k<NB*2) && b.ixNx[k]<=j; k++){}
pSrcEnd = b.apEnd[k];
if( SQLITE_WITHIN(pSrcEnd, pCell, pCell+sz) ){
rc = SQLITE_CORRUPT_BKPT;
goto balance_cleanup;
}
rc = insertCell(pParent, nxDiv+i, pCell, sz, pTemp, pNew->pgno);
if( rc!=SQLITE_OK ) goto balance_cleanup;
|
| ︙ | ︙ | |||
77612 77613 77614 77615 77616 77617 77618 77619 77620 77621 77622 77623 77624 77625 |
** step. On the upward pass, both conditions are always true, so the
** upwards pass simply processes pages that were missed on the downward
** pass.
*/
for(i=1-nNew; i<nNew; i++){
int iPg = i<0 ? -i : i;
assert( iPg>=0 && iPg<nNew );
if( abDone[iPg] ) continue; /* Skip pages already processed */
if( i>=0 /* On the upwards pass, or... */
|| cntOld[iPg-1]>=cntNew[iPg-1] /* Condition (1) is true */
){
int iNew;
int iOld;
int nNewCell;
| > > | 77620 77621 77622 77623 77624 77625 77626 77627 77628 77629 77630 77631 77632 77633 77634 77635 |
** step. On the upward pass, both conditions are always true, so the
** upwards pass simply processes pages that were missed on the downward
** pass.
*/
for(i=1-nNew; i<nNew; i++){
int iPg = i<0 ? -i : i;
assert( iPg>=0 && iPg<nNew );
assert( iPg>=1 || i>=0 );
assert( iPg<ArraySize(cntOld) );
if( abDone[iPg] ) continue; /* Skip pages already processed */
if( i>=0 /* On the upwards pass, or... */
|| cntOld[iPg-1]>=cntNew[iPg-1] /* Condition (1) is true */
){
int iNew;
int iOld;
int nNewCell;
|
| ︙ | ︙ | |||
107347 107348 107349 107350 107351 107352 107353 107354 107355 107356 107357 107358 107359 107360 |
if( pParse->nErr ) return;
if( p && ExprUseXList(p) && p->x.pList ){
p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
}
}
#define exprSetHeight(y)
#endif /* SQLITE_MAX_EXPR_DEPTH>0 */
/*
** This routine is the core allocator for Expr nodes.
**
** Construct a new expression node and return a pointer to it. Memory
** for this node and for the pToken argument is a single allocation
** obtained from sqlite3DbMalloc(). The calling function
| > > > > > > > > > | 107357 107358 107359 107360 107361 107362 107363 107364 107365 107366 107367 107368 107369 107370 107371 107372 107373 107374 107375 107376 107377 107378 107379 |
if( pParse->nErr ) return;
if( p && ExprUseXList(p) && p->x.pList ){
p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
}
}
#define exprSetHeight(y)
#endif /* SQLITE_MAX_EXPR_DEPTH>0 */
/*
** Set the error offset for an Expr node, if possible.
*/
SQLITE_PRIVATE void sqlite3ExprSetErrorOffset(Expr *pExpr, int iOfst){
if( pExpr==0 ) return;
if( NEVER(ExprUseWJoin(pExpr)) ) return;
pExpr->w.iOfst = iOfst;
}
/*
** This routine is the core allocator for Expr nodes.
**
** Construct a new expression node and return a pointer to it. Memory
** for this node and for the pToken argument is a single allocation
** obtained from sqlite3DbMalloc(). The calling function
|
| ︙ | ︙ | |||
111091 111092 111093 111094 111095 111096 111097 |
pDef = sqlite3FindFunction(db, "unknown", nFarg, enc, 0);
}
#endif
if( pDef==0 || pDef->xFinalize!=0 ){
sqlite3ErrorMsg(pParse, "unknown function: %#T()", pExpr);
break;
}
| | | 111110 111111 111112 111113 111114 111115 111116 111117 111118 111119 111120 111121 111122 111123 111124 |
pDef = sqlite3FindFunction(db, "unknown", nFarg, enc, 0);
}
#endif
if( pDef==0 || pDef->xFinalize!=0 ){
sqlite3ErrorMsg(pParse, "unknown function: %#T()", pExpr);
break;
}
if( (pDef->funcFlags & SQLITE_FUNC_INLINE)!=0 && ALWAYS(pFarg!=0) ){
assert( (pDef->funcFlags & SQLITE_FUNC_UNSAFE)==0 );
assert( (pDef->funcFlags & SQLITE_FUNC_DIRECT)==0 );
return exprCodeInlineFunction(pParse, pFarg,
SQLITE_PTR_TO_INT(pDef->pUserData), target);
}else if( pDef->funcFlags & (SQLITE_FUNC_DIRECT|SQLITE_FUNC_UNSAFE) ){
sqlite3ExprFunctionUsable(pParse, pExpr, pDef);
}
|
| ︙ | ︙ | |||
113794 113795 113796 113797 113798 113799 113800 |
pCol->zCnName = sqlite3DbStrDup(db, pCol->zCnName);
pCol->hName = sqlite3StrIHash(pCol->zCnName);
}
assert( IsOrdinaryTable(pNew) );
pNew->u.tab.pDfltList = sqlite3ExprListDup(db, pTab->u.tab.pDfltList, 0);
pNew->pSchema = db->aDb[iDb].pSchema;
pNew->u.tab.addColOffset = pTab->u.tab.addColOffset;
| | | 113813 113814 113815 113816 113817 113818 113819 113820 113821 113822 113823 113824 113825 113826 113827 |
pCol->zCnName = sqlite3DbStrDup(db, pCol->zCnName);
pCol->hName = sqlite3StrIHash(pCol->zCnName);
}
assert( IsOrdinaryTable(pNew) );
pNew->u.tab.pDfltList = sqlite3ExprListDup(db, pTab->u.tab.pDfltList, 0);
pNew->pSchema = db->aDb[iDb].pSchema;
pNew->u.tab.addColOffset = pTab->u.tab.addColOffset;
assert( pNew->nTabRef==1 );
exit_begin_add_column:
sqlite3SrcListDelete(db, pSrc);
return;
}
/*
|
| ︙ | ︙ | |||
125173 125174 125175 125176 125177 125178 125179 |
{
u16 wcf = WHERE_ONEPASS_DESIRED|WHERE_DUPLICATES_OK;
if( sNC.ncFlags & NC_Subquery ) bComplex = 1;
wcf |= (bComplex ? 0 : WHERE_ONEPASS_MULTIROW);
if( HasRowid(pTab) ){
/* For a rowid table, initialize the RowSet to an empty set */
pPk = 0;
| | | 125192 125193 125194 125195 125196 125197 125198 125199 125200 125201 125202 125203 125204 125205 125206 |
{
u16 wcf = WHERE_ONEPASS_DESIRED|WHERE_DUPLICATES_OK;
if( sNC.ncFlags & NC_Subquery ) bComplex = 1;
wcf |= (bComplex ? 0 : WHERE_ONEPASS_MULTIROW);
if( HasRowid(pTab) ){
/* For a rowid table, initialize the RowSet to an empty set */
pPk = 0;
assert( nPk==1 );
iRowSet = ++pParse->nMem;
sqlite3VdbeAddOp2(v, OP_Null, 0, iRowSet);
}else{
/* For a WITHOUT ROWID table, create an ephemeral table used to
** hold all primary keys for rows to be deleted. */
pPk = sqlite3PrimaryKeyIndex(pTab);
assert( pPk!=0 );
|
| ︙ | ︙ | |||
129656 129657 129658 129659 129660 129661 129662 |
assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
/* Remove the FK from the fkeyHash hash table. */
if( db->pnBytesFreed==0 ){
if( pFKey->pPrevTo ){
pFKey->pPrevTo->pNextTo = pFKey->pNextTo;
}else{
| < | | | 129675 129676 129677 129678 129679 129680 129681 129682 129683 129684 129685 129686 129687 129688 129689 129690 |
assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
/* Remove the FK from the fkeyHash hash table. */
if( db->pnBytesFreed==0 ){
if( pFKey->pPrevTo ){
pFKey->pPrevTo->pNextTo = pFKey->pNextTo;
}else{
const char *z = (pFKey->pNextTo ? pFKey->pNextTo->zTo : pFKey->zTo);
sqlite3HashInsert(&pTab->pSchema->fkeyHash, z, pFKey->pNextTo);
}
if( pFKey->pNextTo ){
pFKey->pNextTo->pPrevTo = pFKey->pPrevTo;
}
}
/* EV: R-30323-21917 Each foreign key constraint in SQLite is
|
| ︙ | ︙ | |||
132344 132345 132346 132347 132348 132349 132350 132351 132352 132353 132354 132355 132356 132357 132358 132359 132360 132361 132362 |
int iDb;
int iDataCur;
Index *pIdx;
Vdbe *v;
assert( op==OP_OpenRead || op==OP_OpenWrite );
assert( op==OP_OpenWrite || p5==0 );
if( IsVirtual(pTab) ){
/* This routine is a no-op for virtual tables. Leave the output
** variables *piDataCur and *piIdxCur set to illegal cursor numbers
** for improved error detection. */
*piDataCur = *piIdxCur = -999;
return 0;
}
iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
v = pParse->pVdbe;
assert( v!=0 );
if( iBase<0 ) iBase = pParse->nTab;
iDataCur = iBase++;
| > > | | | | 132362 132363 132364 132365 132366 132367 132368 132369 132370 132371 132372 132373 132374 132375 132376 132377 132378 132379 132380 132381 132382 132383 132384 132385 132386 132387 132388 132389 132390 132391 132392 132393 132394 132395 132396 132397 132398 132399 132400 132401 |
int iDb;
int iDataCur;
Index *pIdx;
Vdbe *v;
assert( op==OP_OpenRead || op==OP_OpenWrite );
assert( op==OP_OpenWrite || p5==0 );
assert( piDataCur!=0 );
assert( piIdxCur!=0 );
if( IsVirtual(pTab) ){
/* This routine is a no-op for virtual tables. Leave the output
** variables *piDataCur and *piIdxCur set to illegal cursor numbers
** for improved error detection. */
*piDataCur = *piIdxCur = -999;
return 0;
}
iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
v = pParse->pVdbe;
assert( v!=0 );
if( iBase<0 ) iBase = pParse->nTab;
iDataCur = iBase++;
*piDataCur = iDataCur;
if( HasRowid(pTab) && (aToOpen==0 || aToOpen[0]) ){
sqlite3OpenTable(pParse, iDataCur, iDb, pTab, op);
}else{
sqlite3TableLock(pParse, iDb, pTab->tnum, op==OP_OpenWrite, pTab->zName);
}
*piIdxCur = iBase;
for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
int iIdxCur = iBase++;
assert( pIdx->pSchema==pTab->pSchema );
if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){
*piDataCur = iIdxCur;
p5 = 0;
}
if( aToOpen==0 || aToOpen[i+1] ){
sqlite3VdbeAddOp3(v, op, iIdxCur, pIdx->tnum, iDb);
sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
sqlite3VdbeChangeP5(v, p5);
VdbeComment((v, "%s", pIdx->zName));
|
| ︙ | ︙ | |||
145377 145378 145379 145380 145381 145382 145383 145384 145385 145386 145387 145388 145389 145390 145391 145392 145393 145394 |
}
a[k].pExpr = 0;
}else{
/* This expression is a "*" or a "TABLE.*" and needs to be
** expanded. */
int tableSeen = 0; /* Set to 1 when TABLE matches */
char *zTName = 0; /* text of name of TABLE */
if( pE->op==TK_DOT ){
assert( pE->pLeft!=0 );
assert( !ExprHasProperty(pE->pLeft, EP_IntValue) );
zTName = pE->pLeft->u.zToken;
}
for(i=0, pFrom=pTabList->a; i<pTabList->nSrc; i++, pFrom++){
Table *pTab = pFrom->pTab; /* Table for this data source */
ExprList *pNestedFrom; /* Result-set of a nested FROM clause */
char *zTabName; /* AS name for this data source */
const char *zSchemaName = 0; /* Schema name for this data source */
int iDb; /* Schema index for this data src */
| > > > > > > | 145397 145398 145399 145400 145401 145402 145403 145404 145405 145406 145407 145408 145409 145410 145411 145412 145413 145414 145415 145416 145417 145418 145419 145420 |
}
a[k].pExpr = 0;
}else{
/* This expression is a "*" or a "TABLE.*" and needs to be
** expanded. */
int tableSeen = 0; /* Set to 1 when TABLE matches */
char *zTName = 0; /* text of name of TABLE */
int iErrOfst;
if( pE->op==TK_DOT ){
assert( pE->pLeft!=0 );
assert( !ExprHasProperty(pE->pLeft, EP_IntValue) );
zTName = pE->pLeft->u.zToken;
assert( ExprUseWOfst(pE->pLeft) );
iErrOfst = pE->pRight->w.iOfst;
}else{
assert( ExprUseWOfst(pE) );
iErrOfst = pE->w.iOfst;
}
for(i=0, pFrom=pTabList->a; i<pTabList->nSrc; i++, pFrom++){
Table *pTab = pFrom->pTab; /* Table for this data source */
ExprList *pNestedFrom; /* Result-set of a nested FROM clause */
char *zTabName; /* AS name for this data source */
const char *zSchemaName = 0; /* Schema name for this data source */
int iDb; /* Schema index for this data src */
|
| ︙ | ︙ | |||
145417 145418 145419 145420 145421 145422 145423 145424 145425 145426 145427 145428 145429 145430 |
&& (selFlags & SF_NestedFrom)!=0
){
int ii;
pUsing = pFrom[1].u3.pUsing;
for(ii=0; ii<pUsing->nId; ii++){
const char *zUName = pUsing->a[ii].zName;
pRight = sqlite3Expr(db, TK_ID, zUName);
pNew = sqlite3ExprListAppend(pParse, pNew, pRight);
if( pNew ){
struct ExprList_item *pX = &pNew->a[pNew->nExpr-1];
assert( pX->zEName==0 );
pX->zEName = sqlite3MPrintf(db,"..%s", zUName);
pX->fg.eEName = ENAME_TAB;
pX->fg.bUsingTerm = 1;
| > | 145443 145444 145445 145446 145447 145448 145449 145450 145451 145452 145453 145454 145455 145456 145457 |
&& (selFlags & SF_NestedFrom)!=0
){
int ii;
pUsing = pFrom[1].u3.pUsing;
for(ii=0; ii<pUsing->nId; ii++){
const char *zUName = pUsing->a[ii].zName;
pRight = sqlite3Expr(db, TK_ID, zUName);
sqlite3ExprSetErrorOffset(pRight, iErrOfst);
pNew = sqlite3ExprListAppend(pParse, pNew, pRight);
if( pNew ){
struct ExprList_item *pX = &pNew->a[pNew->nExpr-1];
assert( pX->zEName==0 );
pX->zEName = sqlite3MPrintf(db,"..%s", zUName);
pX->fg.eEName = ENAME_TAB;
pX->fg.bUsingTerm = 1;
|
| ︙ | ︙ | |||
145489 145490 145491 145492 145493 145494 145495 145496 145497 145498 145499 145500 145501 145502 |
if( zSchemaName ){
pLeft = sqlite3Expr(db, TK_ID, zSchemaName);
pExpr = sqlite3PExpr(pParse, TK_DOT, pLeft, pExpr);
}
}else{
pExpr = pRight;
}
pNew = sqlite3ExprListAppend(pParse, pNew, pExpr);
if( pNew==0 ){
break; /* OOM */
}
pX = &pNew->a[pNew->nExpr-1];
assert( pX->zEName==0 );
if( (selFlags & SF_NestedFrom)!=0 && !IN_RENAME_OBJECT ){
| > | 145516 145517 145518 145519 145520 145521 145522 145523 145524 145525 145526 145527 145528 145529 145530 |
if( zSchemaName ){
pLeft = sqlite3Expr(db, TK_ID, zSchemaName);
pExpr = sqlite3PExpr(pParse, TK_DOT, pLeft, pExpr);
}
}else{
pExpr = pRight;
}
sqlite3ExprSetErrorOffset(pExpr, iErrOfst);
pNew = sqlite3ExprListAppend(pParse, pNew, pExpr);
if( pNew==0 ){
break; /* OOM */
}
pX = &pNew->a[pNew->nExpr-1];
assert( pX->zEName==0 );
if( (selFlags & SF_NestedFrom)!=0 && !IN_RENAME_OBJECT ){
|
| ︙ | ︙ | |||
150148 150149 150150 150151 150152 150153 150154 150155 150156 150157 150158 150159 150160 150161 150162 150163 150164 150165 |
if( pUpsert==0 ){
if( nChangeFrom==0 && eOnePass!=ONEPASS_MULTI ){
sqlite3WhereEnd(pWInfo);
}
if( !isView ){
int addrOnce = 0;
/* Open every index that needs updating. */
if( eOnePass!=ONEPASS_OFF ){
if( aiCurOnePass[0]>=0 ) aToOpen[aiCurOnePass[0]-iBaseCur] = 0;
if( aiCurOnePass[1]>=0 ) aToOpen[aiCurOnePass[1]-iBaseCur] = 0;
}
if( eOnePass==ONEPASS_MULTI && (nIdx-(aiCurOnePass[1]>=0))>0 ){
addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v);
}
sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenWrite, 0, iBaseCur,
| > > | | 150176 150177 150178 150179 150180 150181 150182 150183 150184 150185 150186 150187 150188 150189 150190 150191 150192 150193 150194 150195 150196 150197 150198 150199 150200 150201 150202 150203 |
if( pUpsert==0 ){
if( nChangeFrom==0 && eOnePass!=ONEPASS_MULTI ){
sqlite3WhereEnd(pWInfo);
}
if( !isView ){
int addrOnce = 0;
int iNotUsed1 = 0;
int iNotUsed2 = 0;
/* Open every index that needs updating. */
if( eOnePass!=ONEPASS_OFF ){
if( aiCurOnePass[0]>=0 ) aToOpen[aiCurOnePass[0]-iBaseCur] = 0;
if( aiCurOnePass[1]>=0 ) aToOpen[aiCurOnePass[1]-iBaseCur] = 0;
}
if( eOnePass==ONEPASS_MULTI && (nIdx-(aiCurOnePass[1]>=0))>0 ){
addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v);
}
sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenWrite, 0, iBaseCur,
aToOpen, &iNotUsed1, &iNotUsed2);
if( addrOnce ){
sqlite3VdbeJumpHereOrPopInst(v, addrOnce);
}
}
/* Top of the update loop */
if( eOnePass!=ONEPASS_OFF ){
|
| ︙ | ︙ | |||
156447 156448 156449 156450 156451 156452 156453 |
** with a wildcard and if (2) the non-wildcard prefix does not end with
** an (illegal 0xff) character, or (3) the pattern does not consist of
** a single escape character. The second condition is necessary so
** that we can increment the prefix key to find an upper bound for the
** range search. The third is because the caller assumes that the pattern
** consists of at least one character after all escapes have been
** removed. */
| | | 156477 156478 156479 156480 156481 156482 156483 156484 156485 156486 156487 156488 156489 156490 156491 |
** with a wildcard and if (2) the non-wildcard prefix does not end with
** an (illegal 0xff) character, or (3) the pattern does not consist of
** a single escape character. The second condition is necessary so
** that we can increment the prefix key to find an upper bound for the
** range search. The third is because the caller assumes that the pattern
** consists of at least one character after all escapes have been
** removed. */
if( (cnt>1 || (cnt>0 && z[0]!=wc[3])) && 255!=(u8)z[cnt-1] ){
Expr *pPrefix;
/* A "complete" match if the pattern ends with "*" or "%" */
*pisComplete = c==wc[0] && z[cnt+1]==0;
/* Get the pattern prefix. Remove all escapes from the prefix. */
pPrefix = sqlite3Expr(db, TK_STRING, (char*)z);
|
| ︙ | ︙ | |||
168541 168542 168543 168544 168545 168546 168547 | #define sqlite3ParserCTX_PDECL ,Parse *pParse #define sqlite3ParserCTX_PARAM ,pParse #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse; #define sqlite3ParserCTX_STORE yypParser->pParse=pParse; #define YYFALLBACK 1 #define YYNSTATE 575 #define YYNRULE 403 | | | 168571 168572 168573 168574 168575 168576 168577 168578 168579 168580 168581 168582 168583 168584 168585 | #define sqlite3ParserCTX_PDECL ,Parse *pParse #define sqlite3ParserCTX_PARAM ,pParse #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse; #define sqlite3ParserCTX_STORE yypParser->pParse=pParse; #define YYFALLBACK 1 #define YYNSTATE 575 #define YYNRULE 403 #define YYNRULE_WITH_ACTION 338 #define YYNTOKEN 185 #define YY_MAX_SHIFT 574 #define YY_MIN_SHIFTREDUCE 833 #define YY_MAX_SHIFTREDUCE 1235 #define YY_ERROR_ACTION 1236 #define YY_ACCEPT_ACTION 1237 #define YY_NO_ACTION 1238 |
| ︙ | ︙ | |||
168623 168624 168625 168626 168627 168628 168629 |
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (2096)
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 568, 208, 568, 118, 115, 229, 568, 118, 115, 229,
/* 10 */ 568, 1310, 377, 1289, 408, 562, 562, 562, 568, 409,
/* 20 */ 378, 1310, 1272, 41, 41, 41, 41, 208, 1520, 71,
/* 30 */ 71, 969, 419, 41, 41, 491, 303, 279, 303, 970,
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 168653 168654 168655 168656 168657 168658 168659 168660 168661 168662 168663 168664 168665 168666 168667 168668 168669 168670 168671 168672 168673 168674 168675 168676 168677 168678 168679 168680 168681 168682 168683 168684 168685 168686 168687 168688 168689 168690 168691 168692 168693 168694 168695 168696 168697 168698 168699 168700 168701 168702 168703 168704 168705 168706 168707 168708 168709 168710 168711 168712 168713 168714 168715 168716 168717 168718 168719 168720 168721 168722 168723 168724 168725 168726 168727 168728 168729 168730 168731 168732 168733 168734 168735 168736 168737 168738 168739 168740 168741 168742 168743 168744 168745 168746 168747 168748 168749 168750 168751 168752 168753 168754 168755 168756 168757 168758 168759 168760 168761 168762 168763 168764 168765 168766 168767 168768 168769 168770 168771 168772 168773 168774 168775 168776 168777 168778 168779 168780 168781 168782 168783 168784 168785 168786 168787 168788 168789 168790 168791 168792 168793 168794 168795 168796 168797 168798 168799 168800 168801 168802 168803 168804 168805 168806 168807 168808 168809 168810 168811 168812 168813 168814 168815 168816 168817 168818 168819 168820 168821 168822 168823 168824 168825 168826 168827 168828 168829 168830 168831 168832 168833 168834 168835 168836 168837 168838 168839 168840 168841 168842 168843 168844 168845 168846 168847 168848 168849 168850 168851 168852 168853 168854 168855 168856 168857 168858 168859 168860 168861 168862 168863 168864 168865 168866 168867 168868 168869 168870 168871 168872 |
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (2096)
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 568, 208, 568, 118, 115, 229, 568, 118, 115, 229,
/* 10 */ 568, 1310, 377, 1289, 408, 562, 562, 562, 568, 409,
/* 20 */ 378, 1310, 1272, 41, 41, 41, 41, 208, 1520, 71,
/* 30 */ 71, 969, 419, 41, 41, 491, 303, 279, 303, 970,
/* 40 */ 397, 71, 71, 125, 126, 80, 1210, 1210, 1047, 1050,
/* 50 */ 1037, 1037, 123, 123, 124, 124, 124, 124, 476, 409,
/* 60 */ 1237, 1, 1, 574, 2, 1241, 550, 118, 115, 229,
/* 70 */ 317, 480, 146, 480, 524, 118, 115, 229, 529, 1323,
/* 80 */ 417, 523, 142, 125, 126, 80, 1210, 1210, 1047, 1050,
/* 90 */ 1037, 1037, 123, 123, 124, 124, 124, 124, 118, 115,
/* 100 */ 229, 327, 122, 122, 122, 122, 121, 121, 120, 120,
/* 110 */ 120, 119, 116, 444, 284, 284, 284, 284, 442, 442,
/* 120 */ 442, 1559, 376, 1561, 1186, 375, 1157, 565, 1157, 565,
/* 130 */ 409, 1559, 537, 259, 226, 444, 101, 145, 449, 316,
/* 140 */ 559, 240, 122, 122, 122, 122, 121, 121, 120, 120,
/* 150 */ 120, 119, 116, 444, 125, 126, 80, 1210, 1210, 1047,
/* 160 */ 1050, 1037, 1037, 123, 123, 124, 124, 124, 124, 142,
/* 170 */ 294, 1186, 339, 448, 120, 120, 120, 119, 116, 444,
/* 180 */ 127, 1186, 1187, 1186, 148, 441, 440, 568, 119, 116,
/* 190 */ 444, 124, 124, 124, 124, 117, 122, 122, 122, 122,
/* 200 */ 121, 121, 120, 120, 120, 119, 116, 444, 454, 113,
/* 210 */ 13, 13, 546, 122, 122, 122, 122, 121, 121, 120,
/* 220 */ 120, 120, 119, 116, 444, 422, 316, 559, 1186, 1187,
/* 230 */ 1186, 149, 1218, 409, 1218, 124, 124, 124, 124, 122,
/* 240 */ 122, 122, 122, 121, 121, 120, 120, 120, 119, 116,
/* 250 */ 444, 465, 342, 1034, 1034, 1048, 1051, 125, 126, 80,
/* 260 */ 1210, 1210, 1047, 1050, 1037, 1037, 123, 123, 124, 124,
/* 270 */ 124, 124, 1275, 522, 222, 1186, 568, 409, 224, 514,
/* 280 */ 175, 82, 83, 122, 122, 122, 122, 121, 121, 120,
/* 290 */ 120, 120, 119, 116, 444, 1005, 16, 16, 1186, 133,
/* 300 */ 133, 125, 126, 80, 1210, 1210, 1047, 1050, 1037, 1037,
/* 310 */ 123, 123, 124, 124, 124, 124, 122, 122, 122, 122,
/* 320 */ 121, 121, 120, 120, 120, 119, 116, 444, 1038, 546,
/* 330 */ 1186, 373, 1186, 1187, 1186, 252, 1429, 399, 504, 501,
/* 340 */ 500, 111, 560, 566, 4, 924, 924, 433, 499, 340,
/* 350 */ 460, 328, 360, 394, 1231, 1186, 1187, 1186, 563, 568,
/* 360 */ 122, 122, 122, 122, 121, 121, 120, 120, 120, 119,
/* 370 */ 116, 444, 284, 284, 369, 1572, 1598, 441, 440, 154,
/* 380 */ 409, 445, 71, 71, 1282, 565, 1215, 1186, 1187, 1186,
/* 390 */ 85, 1217, 271, 557, 543, 515, 515, 568, 98, 1216,
/* 400 */ 6, 1274, 472, 142, 125, 126, 80, 1210, 1210, 1047,
/* 410 */ 1050, 1037, 1037, 123, 123, 124, 124, 124, 124, 550,
/* 420 */ 13, 13, 1024, 507, 1218, 1186, 1218, 549, 109, 109,
/* 430 */ 222, 568, 1232, 175, 568, 427, 110, 197, 445, 569,
/* 440 */ 445, 430, 1546, 1014, 325, 551, 1186, 270, 287, 368,
/* 450 */ 510, 363, 509, 257, 71, 71, 543, 71, 71, 359,
/* 460 */ 316, 559, 1604, 122, 122, 122, 122, 121, 121, 120,
/* 470 */ 120, 120, 119, 116, 444, 1014, 1014, 1016, 1017, 27,
/* 480 */ 284, 284, 1186, 1187, 1186, 1152, 568, 1603, 409, 899,
/* 490 */ 190, 550, 356, 565, 550, 935, 533, 517, 1152, 516,
/* 500 */ 413, 1152, 552, 1186, 1187, 1186, 568, 544, 544, 51,
/* 510 */ 51, 214, 125, 126, 80, 1210, 1210, 1047, 1050, 1037,
/* 520 */ 1037, 123, 123, 124, 124, 124, 124, 1186, 474, 135,
/* 530 */ 135, 409, 284, 284, 1484, 505, 121, 121, 120, 120,
/* 540 */ 120, 119, 116, 444, 1005, 565, 518, 217, 541, 541,
/* 550 */ 316, 559, 142, 6, 532, 125, 126, 80, 1210, 1210,
/* 560 */ 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124, 124,
/* 570 */ 1548, 122, 122, 122, 122, 121, 121, 120, 120, 120,
/* 580 */ 119, 116, 444, 485, 1186, 1187, 1186, 482, 281, 1263,
/* 590 */ 955, 252, 1186, 373, 504, 501, 500, 1186, 340, 570,
/* 600 */ 1186, 570, 409, 292, 499, 955, 874, 191, 480, 316,
/* 610 */ 559, 384, 290, 380, 122, 122, 122, 122, 121, 121,
/* 620 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1210,
/* 630 */ 1210, 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124,
/* 640 */ 124, 409, 394, 1132, 1186, 867, 100, 284, 284, 1186,
/* 650 */ 1187, 1186, 373, 1089, 1186, 1187, 1186, 1186, 1187, 1186,
/* 660 */ 565, 455, 32, 373, 233, 125, 126, 80, 1210, 1210,
/* 670 */ 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124, 124,
/* 680 */ 1428, 957, 568, 228, 956, 122, 122, 122, 122, 121,
/* 690 */ 121, 120, 120, 120, 119, 116, 444, 1152, 228, 1186,
/* 700 */ 157, 1186, 1187, 1186, 1547, 13, 13, 301, 955, 1226,
/* 710 */ 1152, 153, 409, 1152, 373, 1575, 1170, 5, 369, 1572,
/* 720 */ 429, 1232, 3, 955, 122, 122, 122, 122, 121, 121,
/* 730 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1210,
/* 740 */ 1210, 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124,
/* 750 */ 124, 409, 208, 567, 1186, 1025, 1186, 1187, 1186, 1186,
/* 760 */ 388, 850, 155, 1546, 286, 402, 1094, 1094, 488, 568,
/* 770 */ 465, 342, 1315, 1315, 1546, 125, 126, 80, 1210, 1210,
/* 780 */ 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124, 124,
/* 790 */ 129, 568, 13, 13, 374, 122, 122, 122, 122, 121,
/* 800 */ 121, 120, 120, 120, 119, 116, 444, 302, 568, 453,
/* 810 */ 528, 1186, 1187, 1186, 13, 13, 1186, 1187, 1186, 1293,
/* 820 */ 463, 1263, 409, 1313, 1313, 1546, 1010, 453, 452, 200,
/* 830 */ 299, 71, 71, 1261, 122, 122, 122, 122, 121, 121,
/* 840 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1210,
/* 850 */ 1210, 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124,
/* 860 */ 124, 409, 227, 1069, 1152, 284, 284, 419, 312, 278,
/* 870 */ 278, 285, 285, 1415, 406, 405, 382, 1152, 565, 568,
/* 880 */ 1152, 1189, 565, 1592, 565, 125, 126, 80, 1210, 1210,
/* 890 */ 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124, 124,
/* 900 */ 453, 1476, 13, 13, 1530, 122, 122, 122, 122, 121,
/* 910 */ 121, 120, 120, 120, 119, 116, 444, 201, 568, 354,
/* 920 */ 1578, 574, 2, 1241, 838, 839, 840, 1554, 317, 1205,
/* 930 */ 146, 6, 409, 255, 254, 253, 206, 1323, 9, 1189,
/* 940 */ 262, 71, 71, 424, 122, 122, 122, 122, 121, 121,
/* 950 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1210,
/* 960 */ 1210, 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124,
/* 970 */ 124, 568, 284, 284, 568, 1206, 409, 573, 313, 1241,
/* 980 */ 349, 1292, 352, 419, 317, 565, 146, 491, 525, 1635,
/* 990 */ 395, 371, 491, 1323, 70, 70, 1291, 71, 71, 240,
/* 1000 */ 1321, 104, 80, 1210, 1210, 1047, 1050, 1037, 1037, 123,
/* 1010 */ 123, 124, 124, 124, 124, 122, 122, 122, 122, 121,
/* 1020 */ 121, 120, 120, 120, 119, 116, 444, 1110, 284, 284,
/* 1030 */ 428, 448, 1519, 1206, 439, 284, 284, 1483, 1348, 311,
/* 1040 */ 474, 565, 1111, 969, 491, 491, 217, 1259, 565, 1532,
/* 1050 */ 568, 970, 207, 568, 1024, 240, 383, 1112, 519, 122,
/* 1060 */ 122, 122, 122, 121, 121, 120, 120, 120, 119, 116,
/* 1070 */ 444, 1015, 107, 71, 71, 1014, 13, 13, 910, 568,
/* 1080 */ 1489, 568, 284, 284, 97, 526, 491, 448, 911, 1322,
/* 1090 */ 1318, 545, 409, 284, 284, 565, 151, 209, 1489, 1491,
/* 1100 */ 262, 450, 55, 55, 56, 56, 565, 1014, 1014, 1016,
/* 1110 */ 443, 332, 409, 527, 12, 295, 125, 126, 80, 1210,
/* 1120 */ 1210, 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124,
/* 1130 */ 124, 347, 409, 862, 1528, 1206, 125, 126, 80, 1210,
/* 1140 */ 1210, 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124,
/* 1150 */ 124, 1133, 1633, 474, 1633, 371, 125, 114, 80, 1210,
/* 1160 */ 1210, 1047, 1050, 1037, 1037, 123, 123, 124, 124, 124,
/* 1170 */ 124, 1489, 329, 474, 331, 122, 122, 122, 122, 121,
/* 1180 */ 121, 120, 120, 120, 119, 116, 444, 203, 1415, 568,
/* 1190 */ 1290, 862, 464, 1206, 436, 122, 122, 122, 122, 121,
/* 1200 */ 121, 120, 120, 120, 119, 116, 444, 553, 1133, 1634,
/* 1210 */ 539, 1634, 15, 15, 890, 122, 122, 122, 122, 121,
/* 1220 */ 121, 120, 120, 120, 119, 116, 444, 568, 298, 538,
/* 1230 */ 1131, 1415, 1552, 1553, 1327, 409, 6, 6, 1163, 1264,
/* 1240 */ 415, 320, 284, 284, 1415, 508, 565, 525, 300, 457,
/* 1250 */ 43, 43, 568, 891, 12, 565, 330, 478, 425, 407,
/* 1260 */ 126, 80, 1210, 1210, 1047, 1050, 1037, 1037, 123, 123,
/* 1270 */ 124, 124, 124, 124, 568, 57, 57, 288, 1186, 1415,
/* 1280 */ 496, 458, 392, 392, 391, 273, 389, 1131, 1551, 847,
/* 1290 */ 1163, 407, 6, 568, 321, 1152, 470, 44, 44, 1550,
/* 1300 */ 1110, 426, 234, 6, 323, 256, 540, 256, 1152, 431,
/* 1310 */ 568, 1152, 322, 17, 487, 1111, 58, 58, 122, 122,
/* 1320 */ 122, 122, 121, 121, 120, 120, 120, 119, 116, 444,
/* 1330 */ 1112, 216, 481, 59, 59, 1186, 1187, 1186, 111, 560,
/* 1340 */ 324, 4, 236, 456, 526, 568, 237, 456, 568, 437,
/* 1350 */ 168, 556, 420, 141, 479, 563, 568, 293, 568, 1091,
/* 1360 */ 568, 293, 568, 1091, 531, 568, 870, 8, 60, 60,
/* 1370 */ 235, 61, 61, 568, 414, 568, 414, 568, 445, 62,
/* 1380 */ 62, 45, 45, 46, 46, 47, 47, 199, 49, 49,
/* 1390 */ 557, 568, 359, 568, 100, 486, 50, 50, 63, 63,
/* 1400 */ 64, 64, 561, 415, 535, 410, 568, 1024, 568, 534,
/* 1410 */ 316, 559, 316, 559, 65, 65, 14, 14, 568, 1024,
/* 1420 */ 568, 512, 930, 870, 1015, 109, 109, 929, 1014, 66,
/* 1430 */ 66, 131, 131, 110, 451, 445, 569, 445, 416, 177,
/* 1440 */ 1014, 132, 132, 67, 67, 568, 467, 568, 930, 471,
/* 1450 */ 1360, 283, 226, 929, 315, 1359, 407, 568, 459, 407,
/* 1460 */ 1014, 1014, 1016, 239, 407, 86, 213, 1346, 52, 52,
/* 1470 */ 68, 68, 1014, 1014, 1016, 1017, 27, 1577, 1174, 447,
/* 1480 */ 69, 69, 288, 97, 108, 1535, 106, 392, 392, 391,
/* 1490 */ 273, 389, 568, 877, 847, 881, 568, 111, 560, 466,
/* 1500 */ 4, 568, 152, 30, 38, 568, 1128, 234, 396, 323,
/* 1510 */ 111, 560, 527, 4, 563, 53, 53, 322, 568, 163,
/* 1520 */ 163, 568, 337, 468, 164, 164, 333, 563, 76, 76,
/* 1530 */ 568, 289, 1508, 568, 31, 1507, 568, 445, 338, 483,
/* 1540 */ 100, 54, 54, 344, 72, 72, 296, 236, 1076, 557,
/* 1550 */ 445, 877, 1356, 134, 134, 168, 73, 73, 141, 161,
/* 1560 */ 161, 1566, 557, 535, 568, 319, 568, 348, 536, 1007,
/* 1570 */ 473, 261, 261, 889, 888, 235, 535, 568, 1024, 568,
/* 1580 */ 475, 534, 261, 367, 109, 109, 521, 136, 136, 130,
/* 1590 */ 130, 1024, 110, 366, 445, 569, 445, 109, 109, 1014,
/* 1600 */ 162, 162, 156, 156, 568, 110, 1076, 445, 569, 445,
/* 1610 */ 410, 351, 1014, 568, 353, 316, 559, 568, 343, 568,
/* 1620 */ 100, 497, 357, 258, 100, 896, 897, 140, 140, 355,
/* 1630 */ 1306, 1014, 1014, 1016, 1017, 27, 139, 139, 362, 451,
/* 1640 */ 137, 137, 138, 138, 1014, 1014, 1016, 1017, 27, 1174,
/* 1650 */ 447, 568, 372, 288, 111, 560, 1018, 4, 392, 392,
/* 1660 */ 391, 273, 389, 568, 1137, 847, 568, 1072, 568, 258,
/* 1670 */ 492, 563, 568, 211, 75, 75, 555, 960, 234, 261,
/* 1680 */ 323, 111, 560, 927, 4, 113, 77, 77, 322, 74,
/* 1690 */ 74, 42, 42, 1369, 445, 48, 48, 1414, 563, 972,
/* 1700 */ 973, 1088, 1087, 1088, 1087, 860, 557, 150, 928, 1342,
/* 1710 */ 113, 1354, 554, 1419, 1018, 1271, 1262, 1250, 236, 1249,
/* 1720 */ 1251, 445, 1585, 1339, 308, 276, 168, 309, 11, 141,
/* 1730 */ 393, 310, 232, 557, 1401, 1024, 335, 291, 1396, 219,
/* 1740 */ 336, 109, 109, 934, 297, 1406, 235, 341, 477, 110,
/* 1750 */ 502, 445, 569, 445, 1389, 1405, 1014, 400, 1289, 365,
/* 1760 */ 223, 1480, 1024, 1479, 1351, 1352, 1350, 1349, 109, 109,
/* 1770 */ 204, 1588, 1226, 558, 265, 218, 110, 205, 445, 569,
/* 1780 */ 445, 410, 387, 1014, 1527, 179, 316, 559, 1014, 1014,
/* 1790 */ 1016, 1017, 27, 230, 1525, 1223, 79, 560, 85, 4,
/* 1800 */ 418, 215, 548, 81, 84, 188, 1402, 173, 181, 461,
/* 1810 */ 451, 35, 462, 563, 183, 1014, 1014, 1016, 1017, 27,
/* 1820 */ 184, 1485, 185, 186, 495, 242, 98, 398, 1408, 36,
/* 1830 */ 1407, 484, 91, 469, 401, 1410, 445, 192, 1474, 246,
/* 1840 */ 1496, 490, 346, 277, 248, 196, 493, 511, 557, 350,
/* 1850 */ 1252, 249, 250, 403, 1309, 1308, 111, 560, 432, 4,
/* 1860 */ 1307, 1300, 93, 1602, 881, 1601, 224, 404, 434, 520,
/* 1870 */ 263, 435, 1571, 563, 1279, 1278, 364, 1024, 306, 1277,
/* 1880 */ 264, 1600, 1557, 109, 109, 370, 1299, 307, 1556, 438,
/* 1890 */ 128, 110, 1374, 445, 569, 445, 445, 546, 1014, 10,
/* 1900 */ 1461, 105, 381, 1373, 34, 571, 99, 1332, 557, 314,
/* 1910 */ 1180, 530, 272, 274, 379, 210, 1331, 547, 385, 386,
/* 1920 */ 275, 572, 1247, 1242, 411, 412, 1512, 165, 178, 1513,
/* 1930 */ 1014, 1014, 1016, 1017, 27, 1511, 1510, 1024, 78, 147,
/* 1940 */ 166, 220, 221, 109, 109, 834, 304, 167, 446, 212,
/* 1950 */ 318, 110, 231, 445, 569, 445, 144, 1086, 1014, 1084,
/* 1960 */ 326, 180, 169, 1205, 182, 334, 238, 913, 241, 1100,
/* 1970 */ 187, 170, 171, 421, 87, 88, 423, 189, 89, 90,
/* 1980 */ 172, 1103, 243, 1099, 244, 158, 18, 245, 345, 247,
/* 1990 */ 1014, 1014, 1016, 1017, 27, 261, 1092, 193, 1220, 489,
/* 2000 */ 194, 37, 366, 849, 494, 251, 195, 506, 92, 19,
/* 2010 */ 498, 358, 20, 503, 879, 361, 94, 892, 305, 159,
/* 2020 */ 513, 39, 95, 1168, 160, 1053, 964, 1139, 96, 174,
/* 2030 */ 1138, 225, 280, 282, 198, 958, 113, 1158, 1154, 260,
/* 2040 */ 21, 22, 23, 1156, 1162, 1161, 1143, 24, 33, 25,
/* 2050 */ 202, 542, 26, 100, 1067, 102, 1054, 103, 7, 1052,
/* 2060 */ 1056, 1109, 1057, 1108, 266, 267, 28, 40, 390, 1019,
/* 2070 */ 861, 112, 29, 564, 1176, 1175, 268, 176, 143, 923,
/* 2080 */ 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
/* 2090 */ 1238, 1238, 1238, 1238, 269, 1593,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 193, 193, 193, 274, 275, 276, 193, 274, 275, 276,
/* 10 */ 193, 223, 219, 225, 206, 210, 211, 212, 193, 19,
/* 20 */ 219, 233, 216, 216, 217, 216, 217, 193, 295, 216,
/* 30 */ 217, 31, 193, 216, 217, 193, 228, 213, 230, 39,
/* 40 */ 206, 216, 217, 43, 44, 45, 46, 47, 48, 49,
|
| ︙ | ︙ | |||
169171 169172 169173 169174 169175 169176 169177 |
/* 360 */ 1639, 1641, 1646, 1656, 1655, 1658, 1659, 1661, 1663, 1560,
/* 370 */ 1564, 1596, 1605, 1664, 1670, 1565, 1571, 1627, 1638, 1657,
/* 380 */ 1665, 1623, 1702, 1630, 1666, 1667, 1671, 1673, 1703, 1718,
/* 390 */ 1719, 1729, 1730, 1731, 1621, 1622, 1628, 1720, 1713, 1716,
/* 400 */ 1722, 1723, 1733, 1717, 1724, 1727, 1728, 1725, 1740,
};
static const YYACTIONTYPE yy_default[] = {
| | | | | | | | | | | | | | | | | | | | | | | | | | 169201 169202 169203 169204 169205 169206 169207 169208 169209 169210 169211 169212 169213 169214 169215 169216 169217 169218 169219 169220 169221 169222 169223 169224 169225 169226 169227 169228 169229 169230 169231 169232 169233 169234 169235 169236 169237 169238 169239 169240 169241 169242 169243 169244 169245 169246 169247 169248 169249 169250 169251 169252 169253 169254 169255 169256 169257 169258 169259 169260 169261 169262 169263 169264 169265 169266 169267 169268 169269 169270 169271 |
/* 360 */ 1639, 1641, 1646, 1656, 1655, 1658, 1659, 1661, 1663, 1560,
/* 370 */ 1564, 1596, 1605, 1664, 1670, 1565, 1571, 1627, 1638, 1657,
/* 380 */ 1665, 1623, 1702, 1630, 1666, 1667, 1671, 1673, 1703, 1718,
/* 390 */ 1719, 1729, 1730, 1731, 1621, 1622, 1628, 1720, 1713, 1716,
/* 400 */ 1722, 1723, 1733, 1717, 1724, 1727, 1728, 1725, 1740,
};
static const YYACTIONTYPE yy_default[] = {
/* 0 */ 1639, 1639, 1639, 1469, 1236, 1347, 1236, 1236, 1236, 1469,
/* 10 */ 1469, 1469, 1236, 1377, 1377, 1522, 1269, 1236, 1236, 1236,
/* 20 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1468, 1236, 1236,
/* 30 */ 1236, 1236, 1555, 1555, 1236, 1236, 1236, 1236, 1236, 1236,
/* 40 */ 1236, 1236, 1386, 1236, 1393, 1236, 1236, 1236, 1236, 1236,
/* 50 */ 1470, 1471, 1236, 1236, 1236, 1521, 1523, 1486, 1400, 1399,
/* 60 */ 1398, 1397, 1504, 1365, 1391, 1384, 1388, 1465, 1466, 1464,
/* 70 */ 1617, 1471, 1470, 1236, 1387, 1433, 1449, 1432, 1236, 1236,
/* 80 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 90 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 100 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 110 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 120 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 130 */ 1441, 1448, 1447, 1446, 1455, 1445, 1442, 1435, 1434, 1436,
/* 140 */ 1437, 1236, 1236, 1260, 1236, 1236, 1257, 1311, 1236, 1236,
/* 150 */ 1236, 1236, 1236, 1541, 1540, 1236, 1438, 1236, 1269, 1427,
/* 160 */ 1426, 1452, 1439, 1451, 1450, 1529, 1591, 1590, 1487, 1236,
/* 170 */ 1236, 1236, 1236, 1236, 1236, 1555, 1236, 1236, 1236, 1236,
/* 180 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 190 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1367,
/* 200 */ 1555, 1555, 1236, 1269, 1555, 1555, 1368, 1368, 1265, 1265,
/* 210 */ 1371, 1236, 1536, 1338, 1338, 1338, 1338, 1347, 1338, 1236,
/* 220 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 230 */ 1236, 1236, 1236, 1236, 1526, 1524, 1236, 1236, 1236, 1236,
/* 240 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 250 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 260 */ 1236, 1236, 1236, 1343, 1236, 1236, 1236, 1236, 1236, 1236,
/* 270 */ 1236, 1236, 1236, 1236, 1236, 1584, 1236, 1499, 1325, 1343,
/* 280 */ 1343, 1343, 1343, 1345, 1326, 1324, 1337, 1270, 1243, 1631,
/* 290 */ 1403, 1392, 1344, 1392, 1628, 1390, 1403, 1403, 1390, 1403,
/* 300 */ 1344, 1628, 1286, 1606, 1281, 1377, 1377, 1377, 1367, 1367,
/* 310 */ 1367, 1367, 1371, 1371, 1467, 1344, 1337, 1236, 1631, 1631,
/* 320 */ 1353, 1353, 1630, 1630, 1353, 1487, 1614, 1412, 1314, 1320,
/* 330 */ 1320, 1320, 1320, 1353, 1254, 1390, 1614, 1614, 1390, 1412,
/* 340 */ 1314, 1390, 1314, 1390, 1353, 1254, 1503, 1625, 1353, 1254,
/* 350 */ 1477, 1353, 1254, 1353, 1254, 1477, 1312, 1312, 1312, 1301,
/* 360 */ 1236, 1236, 1477, 1312, 1286, 1312, 1301, 1312, 1312, 1573,
/* 370 */ 1236, 1481, 1481, 1477, 1353, 1565, 1565, 1380, 1380, 1385,
/* 380 */ 1371, 1472, 1353, 1236, 1385, 1383, 1381, 1390, 1304, 1587,
/* 390 */ 1587, 1583, 1583, 1583, 1636, 1636, 1536, 1599, 1269, 1269,
/* 400 */ 1269, 1269, 1599, 1288, 1288, 1270, 1270, 1269, 1599, 1236,
/* 410 */ 1236, 1236, 1236, 1236, 1236, 1594, 1236, 1531, 1488, 1357,
/* 420 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 430 */ 1236, 1236, 1236, 1236, 1542, 1236, 1236, 1236, 1236, 1236,
/* 440 */ 1236, 1236, 1236, 1236, 1236, 1417, 1236, 1239, 1533, 1236,
/* 450 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1394, 1395, 1358,
/* 460 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1409, 1236, 1236,
/* 470 */ 1236, 1404, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 480 */ 1627, 1236, 1236, 1236, 1236, 1236, 1236, 1502, 1501, 1236,
/* 490 */ 1236, 1355, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 500 */ 1236, 1236, 1236, 1236, 1236, 1284, 1236, 1236, 1236, 1236,
/* 510 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 520 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1382,
/* 530 */ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 540 */ 1236, 1236, 1236, 1236, 1570, 1372, 1236, 1236, 1236, 1236,
/* 550 */ 1618, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
/* 560 */ 1236, 1236, 1236, 1236, 1236, 1610, 1328, 1418, 1236, 1421,
/* 570 */ 1258, 1236, 1248, 1236, 1236,
};
/********** End of lemon-generated parsing tables *****************************/
/* The next table maps tokens (terminal symbols) into fallback tokens.
** If a construct like the following:
**
|
| ︙ | ︙ | |||
170156 170157 170158 170159 170160 170161 170162 | /* 302 */ "with ::= WITH RECURSIVE wqlist", /* 303 */ "wqas ::= AS", /* 304 */ "wqas ::= AS MATERIALIZED", /* 305 */ "wqas ::= AS NOT MATERIALIZED", /* 306 */ "wqitem ::= nm eidlist_opt wqas LP select RP", /* 307 */ "wqlist ::= wqitem", /* 308 */ "wqlist ::= wqlist COMMA wqitem", | | < | | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > | | 170186 170187 170188 170189 170190 170191 170192 170193 170194 170195 170196 170197 170198 170199 170200 170201 170202 170203 170204 170205 170206 170207 170208 170209 170210 170211 170212 170213 170214 170215 170216 170217 170218 170219 170220 170221 170222 170223 170224 170225 170226 170227 170228 170229 170230 170231 170232 170233 170234 170235 170236 170237 170238 170239 170240 170241 170242 170243 170244 170245 170246 170247 170248 170249 170250 170251 170252 170253 170254 170255 170256 170257 170258 170259 170260 170261 170262 170263 170264 170265 170266 170267 170268 170269 170270 170271 170272 170273 170274 170275 170276 170277 170278 170279 170280 170281 170282 170283 170284 170285 170286 170287 170288 170289 170290 170291 170292 170293 | /* 302 */ "with ::= WITH RECURSIVE wqlist", /* 303 */ "wqas ::= AS", /* 304 */ "wqas ::= AS MATERIALIZED", /* 305 */ "wqas ::= AS NOT MATERIALIZED", /* 306 */ "wqitem ::= nm eidlist_opt wqas LP select RP", /* 307 */ "wqlist ::= wqitem", /* 308 */ "wqlist ::= wqlist COMMA wqitem", /* 309 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn", /* 310 */ "windowdefn ::= nm AS LP window RP", /* 311 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt", /* 312 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt", /* 313 */ "window ::= ORDER BY sortlist frame_opt", /* 314 */ "window ::= nm ORDER BY sortlist frame_opt", /* 315 */ "window ::= nm frame_opt", /* 316 */ "frame_opt ::=", /* 317 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt", /* 318 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt", /* 319 */ "range_or_rows ::= RANGE|ROWS|GROUPS", /* 320 */ "frame_bound_s ::= frame_bound", /* 321 */ "frame_bound_s ::= UNBOUNDED PRECEDING", /* 322 */ "frame_bound_e ::= frame_bound", /* 323 */ "frame_bound_e ::= UNBOUNDED FOLLOWING", /* 324 */ "frame_bound ::= expr PRECEDING|FOLLOWING", /* 325 */ "frame_bound ::= CURRENT ROW", /* 326 */ "frame_exclude_opt ::=", /* 327 */ "frame_exclude_opt ::= EXCLUDE frame_exclude", /* 328 */ "frame_exclude ::= NO OTHERS", /* 329 */ "frame_exclude ::= CURRENT ROW", /* 330 */ "frame_exclude ::= GROUP|TIES", /* 331 */ "window_clause ::= WINDOW windowdefn_list", /* 332 */ "filter_over ::= filter_clause over_clause", /* 333 */ "filter_over ::= over_clause", /* 334 */ "filter_over ::= filter_clause", /* 335 */ "over_clause ::= OVER LP window RP", /* 336 */ "over_clause ::= OVER nm", /* 337 */ "filter_clause ::= FILTER LP WHERE expr RP", /* 338 */ "input ::= cmdlist", /* 339 */ "cmdlist ::= cmdlist ecmd", /* 340 */ "cmdlist ::= ecmd", /* 341 */ "ecmd ::= SEMI", /* 342 */ "ecmd ::= cmdx SEMI", /* 343 */ "ecmd ::= explain cmdx SEMI", /* 344 */ "trans_opt ::=", /* 345 */ "trans_opt ::= TRANSACTION", /* 346 */ "trans_opt ::= TRANSACTION nm", /* 347 */ "savepoint_opt ::= SAVEPOINT", /* 348 */ "savepoint_opt ::=", /* 349 */ "cmd ::= create_table create_table_args", /* 350 */ "table_option_set ::= table_option", /* 351 */ "columnlist ::= columnlist COMMA columnname carglist", /* 352 */ "columnlist ::= columnname carglist", /* 353 */ "nm ::= ID|INDEXED|JOIN_KW", /* 354 */ "nm ::= STRING", /* 355 */ "typetoken ::= typename", /* 356 */ "typename ::= ID|STRING", /* 357 */ "signed ::= plus_num", /* 358 */ "signed ::= minus_num", /* 359 */ "carglist ::= carglist ccons", /* 360 */ "carglist ::=", /* 361 */ "ccons ::= NULL onconf", /* 362 */ "ccons ::= GENERATED ALWAYS AS generated", /* 363 */ "ccons ::= AS generated", /* 364 */ "conslist_opt ::= COMMA conslist", /* 365 */ "conslist ::= conslist tconscomma tcons", /* 366 */ "conslist ::= tcons", /* 367 */ "tconscomma ::=", /* 368 */ "defer_subclause_opt ::= defer_subclause", /* 369 */ "resolvetype ::= raisetype", /* 370 */ "selectnowith ::= oneselect", /* 371 */ "oneselect ::= values", /* 372 */ "sclp ::= selcollist COMMA", /* 373 */ "as ::= ID|STRING", /* 374 */ "indexed_opt ::= indexed_by", /* 375 */ "returning ::=", /* 376 */ "expr ::= term", /* 377 */ "likeop ::= LIKE_KW|MATCH", /* 378 */ "case_operand ::= expr", /* 379 */ "exprlist ::= nexprlist", /* 380 */ "nmnum ::= plus_num", /* 381 */ "nmnum ::= nm", /* 382 */ "nmnum ::= ON", /* 383 */ "nmnum ::= DELETE", /* 384 */ "nmnum ::= DEFAULT", /* 385 */ "plus_num ::= INTEGER|FLOAT", /* 386 */ "foreach_clause ::=", /* 387 */ "foreach_clause ::= FOR EACH ROW", /* 388 */ "trnm ::= nm", /* 389 */ "tridxby ::=", /* 390 */ "database_kw_opt ::= DATABASE", /* 391 */ "database_kw_opt ::=", /* 392 */ "kwcolumn_opt ::=", /* 393 */ "kwcolumn_opt ::= COLUMNKW", /* 394 */ "vtabarglist ::= vtabarg", /* 395 */ "vtabarglist ::= vtabarglist COMMA vtabarg", /* 396 */ "vtabarg ::= vtabarg vtabargtoken", /* 397 */ "anylist ::=", /* 398 */ "anylist ::= anylist LP anylist RP", /* 399 */ "anylist ::= anylist ANY", /* 400 */ "with ::=", /* 401 */ "windowdefn_list ::= windowdefn", /* 402 */ "window ::= frame_opt", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number |
| ︙ | ︙ | |||
171065 171066 171067 171068 171069 171070 171071 | 266, /* (302) with ::= WITH RECURSIVE wqlist */ 305, /* (303) wqas ::= AS */ 305, /* (304) wqas ::= AS MATERIALIZED */ 305, /* (305) wqas ::= AS NOT MATERIALIZED */ 304, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */ 241, /* (307) wqlist ::= wqitem */ 241, /* (308) wqlist ::= wqlist COMMA wqitem */ | | < | | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > | 171095 171096 171097 171098 171099 171100 171101 171102 171103 171104 171105 171106 171107 171108 171109 171110 171111 171112 171113 171114 171115 171116 171117 171118 171119 171120 171121 171122 171123 171124 171125 171126 171127 171128 171129 171130 171131 171132 171133 171134 171135 171136 171137 171138 171139 171140 171141 171142 171143 171144 171145 171146 171147 171148 171149 171150 171151 171152 171153 171154 171155 171156 171157 171158 171159 171160 171161 171162 171163 171164 171165 171166 171167 171168 171169 171170 171171 171172 171173 171174 171175 171176 171177 171178 171179 171180 171181 171182 171183 171184 171185 171186 171187 171188 171189 171190 171191 171192 171193 171194 171195 171196 171197 171198 171199 171200 171201 171202 |
266, /* (302) with ::= WITH RECURSIVE wqlist */
305, /* (303) wqas ::= AS */
305, /* (304) wqas ::= AS MATERIALIZED */
305, /* (305) wqas ::= AS NOT MATERIALIZED */
304, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
241, /* (307) wqlist ::= wqitem */
241, /* (308) wqlist ::= wqlist COMMA wqitem */
306, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
307, /* (310) windowdefn ::= nm AS LP window RP */
308, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
308, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
308, /* (313) window ::= ORDER BY sortlist frame_opt */
308, /* (314) window ::= nm ORDER BY sortlist frame_opt */
308, /* (315) window ::= nm frame_opt */
309, /* (316) frame_opt ::= */
309, /* (317) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
309, /* (318) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
313, /* (319) range_or_rows ::= RANGE|ROWS|GROUPS */
315, /* (320) frame_bound_s ::= frame_bound */
315, /* (321) frame_bound_s ::= UNBOUNDED PRECEDING */
316, /* (322) frame_bound_e ::= frame_bound */
316, /* (323) frame_bound_e ::= UNBOUNDED FOLLOWING */
314, /* (324) frame_bound ::= expr PRECEDING|FOLLOWING */
314, /* (325) frame_bound ::= CURRENT ROW */
317, /* (326) frame_exclude_opt ::= */
317, /* (327) frame_exclude_opt ::= EXCLUDE frame_exclude */
318, /* (328) frame_exclude ::= NO OTHERS */
318, /* (329) frame_exclude ::= CURRENT ROW */
318, /* (330) frame_exclude ::= GROUP|TIES */
251, /* (331) window_clause ::= WINDOW windowdefn_list */
273, /* (332) filter_over ::= filter_clause over_clause */
273, /* (333) filter_over ::= over_clause */
273, /* (334) filter_over ::= filter_clause */
312, /* (335) over_clause ::= OVER LP window RP */
312, /* (336) over_clause ::= OVER nm */
311, /* (337) filter_clause ::= FILTER LP WHERE expr RP */
185, /* (338) input ::= cmdlist */
186, /* (339) cmdlist ::= cmdlist ecmd */
186, /* (340) cmdlist ::= ecmd */
187, /* (341) ecmd ::= SEMI */
187, /* (342) ecmd ::= cmdx SEMI */
187, /* (343) ecmd ::= explain cmdx SEMI */
192, /* (344) trans_opt ::= */
192, /* (345) trans_opt ::= TRANSACTION */
192, /* (346) trans_opt ::= TRANSACTION nm */
194, /* (347) savepoint_opt ::= SAVEPOINT */
194, /* (348) savepoint_opt ::= */
190, /* (349) cmd ::= create_table create_table_args */
203, /* (350) table_option_set ::= table_option */
201, /* (351) columnlist ::= columnlist COMMA columnname carglist */
201, /* (352) columnlist ::= columnname carglist */
193, /* (353) nm ::= ID|INDEXED|JOIN_KW */
193, /* (354) nm ::= STRING */
208, /* (355) typetoken ::= typename */
209, /* (356) typename ::= ID|STRING */
210, /* (357) signed ::= plus_num */
210, /* (358) signed ::= minus_num */
207, /* (359) carglist ::= carglist ccons */
207, /* (360) carglist ::= */
215, /* (361) ccons ::= NULL onconf */
215, /* (362) ccons ::= GENERATED ALWAYS AS generated */
215, /* (363) ccons ::= AS generated */
202, /* (364) conslist_opt ::= COMMA conslist */
228, /* (365) conslist ::= conslist tconscomma tcons */
228, /* (366) conslist ::= tcons */
229, /* (367) tconscomma ::= */
233, /* (368) defer_subclause_opt ::= defer_subclause */
235, /* (369) resolvetype ::= raisetype */
239, /* (370) selectnowith ::= oneselect */
240, /* (371) oneselect ::= values */
254, /* (372) sclp ::= selcollist COMMA */
255, /* (373) as ::= ID|STRING */
264, /* (374) indexed_opt ::= indexed_by */
272, /* (375) returning ::= */
217, /* (376) expr ::= term */
274, /* (377) likeop ::= LIKE_KW|MATCH */
278, /* (378) case_operand ::= expr */
261, /* (379) exprlist ::= nexprlist */
284, /* (380) nmnum ::= plus_num */
284, /* (381) nmnum ::= nm */
284, /* (382) nmnum ::= ON */
284, /* (383) nmnum ::= DELETE */
284, /* (384) nmnum ::= DEFAULT */
211, /* (385) plus_num ::= INTEGER|FLOAT */
289, /* (386) foreach_clause ::= */
289, /* (387) foreach_clause ::= FOR EACH ROW */
292, /* (388) trnm ::= nm */
293, /* (389) tridxby ::= */
294, /* (390) database_kw_opt ::= DATABASE */
294, /* (391) database_kw_opt ::= */
297, /* (392) kwcolumn_opt ::= */
297, /* (393) kwcolumn_opt ::= COLUMNKW */
299, /* (394) vtabarglist ::= vtabarg */
299, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
300, /* (396) vtabarg ::= vtabarg vtabargtoken */
303, /* (397) anylist ::= */
303, /* (398) anylist ::= anylist LP anylist RP */
303, /* (399) anylist ::= anylist ANY */
266, /* (400) with ::= */
306, /* (401) windowdefn_list ::= windowdefn */
308, /* (402) window ::= frame_opt */
};
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
** of symbols on the right-hand side of that rule. */
static const signed char yyRuleInfoNRhs[] = {
-1, /* (0) explain ::= EXPLAIN */
-3, /* (1) explain ::= EXPLAIN QUERY PLAN */
|
| ︙ | ︙ | |||
171473 171474 171475 171476 171477 171478 171479 | -3, /* (302) with ::= WITH RECURSIVE wqlist */ -1, /* (303) wqas ::= AS */ -2, /* (304) wqas ::= AS MATERIALIZED */ -3, /* (305) wqas ::= AS NOT MATERIALIZED */ -6, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */ -1, /* (307) wqlist ::= wqitem */ -3, /* (308) wqlist ::= wqlist COMMA wqitem */ | < | | | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > | 171503 171504 171505 171506 171507 171508 171509 171510 171511 171512 171513 171514 171515 171516 171517 171518 171519 171520 171521 171522 171523 171524 171525 171526 171527 171528 171529 171530 171531 171532 171533 171534 171535 171536 171537 171538 171539 171540 171541 171542 171543 171544 171545 171546 171547 171548 171549 171550 171551 171552 171553 171554 171555 171556 171557 171558 171559 171560 171561 171562 171563 171564 171565 171566 171567 171568 171569 171570 171571 171572 171573 171574 171575 171576 171577 171578 171579 171580 171581 171582 171583 171584 171585 171586 171587 171588 171589 171590 171591 171592 171593 171594 171595 171596 171597 171598 171599 171600 171601 171602 171603 171604 171605 171606 171607 171608 171609 171610 |
-3, /* (302) with ::= WITH RECURSIVE wqlist */
-1, /* (303) wqas ::= AS */
-2, /* (304) wqas ::= AS MATERIALIZED */
-3, /* (305) wqas ::= AS NOT MATERIALIZED */
-6, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */
-1, /* (307) wqlist ::= wqitem */
-3, /* (308) wqlist ::= wqlist COMMA wqitem */
-3, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
-5, /* (310) windowdefn ::= nm AS LP window RP */
-5, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
-6, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
-4, /* (313) window ::= ORDER BY sortlist frame_opt */
-5, /* (314) window ::= nm ORDER BY sortlist frame_opt */
-2, /* (315) window ::= nm frame_opt */
0, /* (316) frame_opt ::= */
-3, /* (317) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
-6, /* (318) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
-1, /* (319) range_or_rows ::= RANGE|ROWS|GROUPS */
-1, /* (320) frame_bound_s ::= frame_bound */
-2, /* (321) frame_bound_s ::= UNBOUNDED PRECEDING */
-1, /* (322) frame_bound_e ::= frame_bound */
-2, /* (323) frame_bound_e ::= UNBOUNDED FOLLOWING */
-2, /* (324) frame_bound ::= expr PRECEDING|FOLLOWING */
-2, /* (325) frame_bound ::= CURRENT ROW */
0, /* (326) frame_exclude_opt ::= */
-2, /* (327) frame_exclude_opt ::= EXCLUDE frame_exclude */
-2, /* (328) frame_exclude ::= NO OTHERS */
-2, /* (329) frame_exclude ::= CURRENT ROW */
-1, /* (330) frame_exclude ::= GROUP|TIES */
-2, /* (331) window_clause ::= WINDOW windowdefn_list */
-2, /* (332) filter_over ::= filter_clause over_clause */
-1, /* (333) filter_over ::= over_clause */
-1, /* (334) filter_over ::= filter_clause */
-4, /* (335) over_clause ::= OVER LP window RP */
-2, /* (336) over_clause ::= OVER nm */
-5, /* (337) filter_clause ::= FILTER LP WHERE expr RP */
-1, /* (338) input ::= cmdlist */
-2, /* (339) cmdlist ::= cmdlist ecmd */
-1, /* (340) cmdlist ::= ecmd */
-1, /* (341) ecmd ::= SEMI */
-2, /* (342) ecmd ::= cmdx SEMI */
-3, /* (343) ecmd ::= explain cmdx SEMI */
0, /* (344) trans_opt ::= */
-1, /* (345) trans_opt ::= TRANSACTION */
-2, /* (346) trans_opt ::= TRANSACTION nm */
-1, /* (347) savepoint_opt ::= SAVEPOINT */
0, /* (348) savepoint_opt ::= */
-2, /* (349) cmd ::= create_table create_table_args */
-1, /* (350) table_option_set ::= table_option */
-4, /* (351) columnlist ::= columnlist COMMA columnname carglist */
-2, /* (352) columnlist ::= columnname carglist */
-1, /* (353) nm ::= ID|INDEXED|JOIN_KW */
-1, /* (354) nm ::= STRING */
-1, /* (355) typetoken ::= typename */
-1, /* (356) typename ::= ID|STRING */
-1, /* (357) signed ::= plus_num */
-1, /* (358) signed ::= minus_num */
-2, /* (359) carglist ::= carglist ccons */
0, /* (360) carglist ::= */
-2, /* (361) ccons ::= NULL onconf */
-4, /* (362) ccons ::= GENERATED ALWAYS AS generated */
-2, /* (363) ccons ::= AS generated */
-2, /* (364) conslist_opt ::= COMMA conslist */
-3, /* (365) conslist ::= conslist tconscomma tcons */
-1, /* (366) conslist ::= tcons */
0, /* (367) tconscomma ::= */
-1, /* (368) defer_subclause_opt ::= defer_subclause */
-1, /* (369) resolvetype ::= raisetype */
-1, /* (370) selectnowith ::= oneselect */
-1, /* (371) oneselect ::= values */
-2, /* (372) sclp ::= selcollist COMMA */
-1, /* (373) as ::= ID|STRING */
-1, /* (374) indexed_opt ::= indexed_by */
0, /* (375) returning ::= */
-1, /* (376) expr ::= term */
-1, /* (377) likeop ::= LIKE_KW|MATCH */
-1, /* (378) case_operand ::= expr */
-1, /* (379) exprlist ::= nexprlist */
-1, /* (380) nmnum ::= plus_num */
-1, /* (381) nmnum ::= nm */
-1, /* (382) nmnum ::= ON */
-1, /* (383) nmnum ::= DELETE */
-1, /* (384) nmnum ::= DEFAULT */
-1, /* (385) plus_num ::= INTEGER|FLOAT */
0, /* (386) foreach_clause ::= */
-3, /* (387) foreach_clause ::= FOR EACH ROW */
-1, /* (388) trnm ::= nm */
0, /* (389) tridxby ::= */
-1, /* (390) database_kw_opt ::= DATABASE */
0, /* (391) database_kw_opt ::= */
0, /* (392) kwcolumn_opt ::= */
-1, /* (393) kwcolumn_opt ::= COLUMNKW */
-1, /* (394) vtabarglist ::= vtabarg */
-3, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
-2, /* (396) vtabarg ::= vtabarg vtabargtoken */
0, /* (397) anylist ::= */
-4, /* (398) anylist ::= anylist LP anylist RP */
-2, /* (399) anylist ::= anylist ANY */
0, /* (400) with ::= */
-1, /* (401) windowdefn_list ::= windowdefn */
-1, /* (402) window ::= frame_opt */
};
static void yy_accept(yyParser*); /* Forward Declaration */
/*
** Perform a reduce action and the shift that must immediately
** follow the reduce.
|
| ︙ | ︙ | |||
171626 171627 171628 171629 171630 171631 171632 |
break;
case 4: /* transtype ::= */
{yymsp[1].minor.yy394 = TK_DEFERRED;}
break;
case 5: /* transtype ::= DEFERRED */
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
| | | 171656 171657 171658 171659 171660 171661 171662 171663 171664 171665 171666 171667 171668 171669 171670 |
break;
case 4: /* transtype ::= */
{yymsp[1].minor.yy394 = TK_DEFERRED;}
break;
case 5: /* transtype ::= DEFERRED */
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
case 319: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==319);
{yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/}
break;
case 8: /* cmd ::= COMMIT|END trans_opt */
case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
{sqlite3EndTransaction(pParse,yymsp[-1].major);}
break;
case 10: /* cmd ::= SAVEPOINT nm */
|
| ︙ | ︙ | |||
171922 171923 171924 171925 171926 171927 171928 |
break;
case 87: /* select ::= selectnowith */
{
Select *p = yymsp[0].minor.yy47;
if( p ){
parserDoubleLinkSelect(pParse, p);
}
| < | 171952 171953 171954 171955 171956 171957 171958 171959 171960 171961 171962 171963 171964 171965 |
break;
case 87: /* select ::= selectnowith */
{
Select *p = yymsp[0].minor.yy47;
if( p ){
parserDoubleLinkSelect(pParse, p);
}
}
break;
case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */
{
Select *pRhs = yymsp[0].minor.yy47;
Select *pLhs = yymsp[-2].minor.yy47;
if( pRhs && pRhs->pPrior ){
|
| ︙ | ︙ | |||
172014 172015 172016 172017 172018 172019 172020 172021 172022 172023 172024 172025 |
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.yy522,yymsp[-1].minor.yy522);
}
break;
case 101: /* 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 102: /* selcollist ::= sclp scanpt nm DOT STAR */
{
| > > | > | | | 172043 172044 172045 172046 172047 172048 172049 172050 172051 172052 172053 172054 172055 172056 172057 172058 172059 172060 172061 172062 172063 172064 172065 172066 172067 |
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.yy522,yymsp[-1].minor.yy522);
}
break;
case 101: /* selcollist ::= sclp scanpt STAR */
{
Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
sqlite3ExprSetErrorOffset(p, (int)(yymsp[0].minor.yy0.z - pParse->zTail));
yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy322, p);
}
break;
case 102: /* selcollist ::= sclp scanpt nm DOT STAR */
{
Expr *pRight, *pLeft, *pDot;
pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
sqlite3ExprSetErrorOffset(pRight, (int)(yymsp[0].minor.yy0.z - pParse->zTail));
pLeft = tokenExpr(pParse, TK_ID, yymsp[-2].minor.yy0);
pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot);
}
break;
case 103: /* as ::= AS nm */
case 115: /* dbnm ::= DOT nm */ yytestcase(yyruleno==115);
case 254: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
case 255: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==255);
|
| ︙ | ︙ | |||
172915 172916 172917 172918 172919 172920 172921 |
}
break;
case 308: /* wqlist ::= wqlist COMMA wqitem */
{
yymsp[-2].minor.yy521 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy521, yymsp[0].minor.yy385);
}
break;
| | < < < < | | | | | < < < < < < < | | | | | | | | | | | | | | | | | > > > > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > | 172947 172948 172949 172950 172951 172952 172953 172954 172955 172956 172957 172958 172959 172960 172961 172962 172963 172964 172965 172966 172967 172968 172969 172970 172971 172972 172973 172974 172975 172976 172977 172978 172979 172980 172981 172982 172983 172984 172985 172986 172987 172988 172989 172990 172991 172992 172993 172994 172995 172996 172997 172998 172999 173000 173001 173002 173003 173004 173005 173006 173007 173008 173009 173010 173011 173012 173013 173014 173015 173016 173017 173018 173019 173020 173021 173022 173023 173024 173025 173026 173027 173028 173029 173030 173031 173032 173033 173034 173035 173036 173037 173038 173039 173040 173041 173042 173043 173044 173045 173046 173047 173048 173049 173050 173051 173052 173053 173054 173055 173056 173057 173058 173059 173060 173061 173062 173063 173064 173065 173066 173067 173068 173069 173070 173071 173072 173073 173074 173075 173076 173077 173078 173079 173080 173081 173082 173083 173084 173085 173086 173087 173088 173089 173090 173091 173092 173093 173094 173095 173096 173097 173098 173099 173100 173101 173102 173103 173104 173105 173106 173107 173108 173109 173110 173111 173112 173113 173114 173115 173116 173117 173118 173119 173120 173121 173122 173123 173124 173125 173126 173127 173128 173129 173130 173131 173132 173133 173134 173135 173136 173137 173138 173139 173140 173141 173142 173143 173144 173145 173146 173147 173148 173149 173150 173151 173152 173153 173154 173155 173156 173157 173158 173159 173160 173161 173162 173163 173164 173165 173166 |
}
break;
case 308: /* wqlist ::= wqlist COMMA wqitem */
{
yymsp[-2].minor.yy521 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy521, yymsp[0].minor.yy385);
}
break;
case 309: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
{
assert( yymsp[0].minor.yy41!=0 );
sqlite3WindowChain(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy41);
yymsp[0].minor.yy41->pNextWin = yymsp[-2].minor.yy41;
yylhsminor.yy41 = yymsp[0].minor.yy41;
}
yymsp[-2].minor.yy41 = yylhsminor.yy41;
break;
case 310: /* windowdefn ::= nm AS LP window RP */
{
if( ALWAYS(yymsp[-1].minor.yy41) ){
yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
}
yylhsminor.yy41 = yymsp[-1].minor.yy41;
}
yymsp[-4].minor.yy41 = yylhsminor.yy41;
break;
case 311: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
{
yymsp[-4].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, 0);
}
break;
case 312: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
{
yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, &yymsp[-5].minor.yy0);
}
yymsp[-5].minor.yy41 = yylhsminor.yy41;
break;
case 313: /* window ::= ORDER BY sortlist frame_opt */
{
yymsp[-3].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, 0);
}
break;
case 314: /* window ::= nm ORDER BY sortlist frame_opt */
{
yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0);
}
yymsp[-4].minor.yy41 = yylhsminor.yy41;
break;
case 315: /* window ::= nm frame_opt */
{
yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, 0, &yymsp[-1].minor.yy0);
}
yymsp[-1].minor.yy41 = yylhsminor.yy41;
break;
case 316: /* frame_opt ::= */
{
yymsp[1].minor.yy41 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
}
break;
case 317: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
{
yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy394, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy516);
}
yymsp[-2].minor.yy41 = yylhsminor.yy41;
break;
case 318: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
{
yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy394, yymsp[-3].minor.yy595.eType, yymsp[-3].minor.yy595.pExpr, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, yymsp[0].minor.yy516);
}
yymsp[-5].minor.yy41 = yylhsminor.yy41;
break;
case 320: /* frame_bound_s ::= frame_bound */
case 322: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==322);
{yylhsminor.yy595 = yymsp[0].minor.yy595;}
yymsp[0].minor.yy595 = yylhsminor.yy595;
break;
case 321: /* frame_bound_s ::= UNBOUNDED PRECEDING */
case 323: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==323);
case 325: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==325);
{yylhsminor.yy595.eType = yymsp[-1].major; yylhsminor.yy595.pExpr = 0;}
yymsp[-1].minor.yy595 = yylhsminor.yy595;
break;
case 324: /* frame_bound ::= expr PRECEDING|FOLLOWING */
{yylhsminor.yy595.eType = yymsp[0].major; yylhsminor.yy595.pExpr = yymsp[-1].minor.yy528;}
yymsp[-1].minor.yy595 = yylhsminor.yy595;
break;
case 326: /* frame_exclude_opt ::= */
{yymsp[1].minor.yy516 = 0;}
break;
case 327: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
{yymsp[-1].minor.yy516 = yymsp[0].minor.yy516;}
break;
case 328: /* frame_exclude ::= NO OTHERS */
case 329: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==329);
{yymsp[-1].minor.yy516 = yymsp[-1].major; /*A-overwrites-X*/}
break;
case 330: /* frame_exclude ::= GROUP|TIES */
{yymsp[0].minor.yy516 = yymsp[0].major; /*A-overwrites-X*/}
break;
case 331: /* window_clause ::= WINDOW windowdefn_list */
{ yymsp[-1].minor.yy41 = yymsp[0].minor.yy41; }
break;
case 332: /* filter_over ::= filter_clause over_clause */
{
if( yymsp[0].minor.yy41 ){
yymsp[0].minor.yy41->pFilter = yymsp[-1].minor.yy528;
}else{
sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528);
}
yylhsminor.yy41 = yymsp[0].minor.yy41;
}
yymsp[-1].minor.yy41 = yylhsminor.yy41;
break;
case 333: /* filter_over ::= over_clause */
{
yylhsminor.yy41 = yymsp[0].minor.yy41;
}
yymsp[0].minor.yy41 = yylhsminor.yy41;
break;
case 334: /* filter_over ::= filter_clause */
{
yylhsminor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
if( yylhsminor.yy41 ){
yylhsminor.yy41->eFrmType = TK_FILTER;
yylhsminor.yy41->pFilter = yymsp[0].minor.yy528;
}else{
sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy528);
}
}
yymsp[0].minor.yy41 = yylhsminor.yy41;
break;
case 335: /* over_clause ::= OVER LP window RP */
{
yymsp[-3].minor.yy41 = yymsp[-1].minor.yy41;
assert( yymsp[-3].minor.yy41!=0 );
}
break;
case 336: /* over_clause ::= OVER nm */
{
yymsp[-1].minor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
if( yymsp[-1].minor.yy41 ){
yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
}
}
break;
case 337: /* filter_clause ::= FILTER LP WHERE expr RP */
{ yymsp[-4].minor.yy528 = yymsp[-1].minor.yy528; }
break;
default:
/* (338) input ::= cmdlist */ yytestcase(yyruleno==338);
/* (339) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==339);
/* (340) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=340);
/* (341) ecmd ::= SEMI */ yytestcase(yyruleno==341);
/* (342) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==342);
/* (343) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=343);
/* (344) trans_opt ::= */ yytestcase(yyruleno==344);
/* (345) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==345);
/* (346) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==346);
/* (347) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==347);
/* (348) savepoint_opt ::= */ yytestcase(yyruleno==348);
/* (349) cmd ::= create_table create_table_args */ yytestcase(yyruleno==349);
/* (350) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=350);
/* (351) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==351);
/* (352) columnlist ::= columnname carglist */ yytestcase(yyruleno==352);
/* (353) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==353);
/* (354) nm ::= STRING */ yytestcase(yyruleno==354);
/* (355) typetoken ::= typename */ yytestcase(yyruleno==355);
/* (356) typename ::= ID|STRING */ yytestcase(yyruleno==356);
/* (357) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=357);
/* (358) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=358);
/* (359) carglist ::= carglist ccons */ yytestcase(yyruleno==359);
/* (360) carglist ::= */ yytestcase(yyruleno==360);
/* (361) ccons ::= NULL onconf */ yytestcase(yyruleno==361);
/* (362) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==362);
/* (363) ccons ::= AS generated */ yytestcase(yyruleno==363);
/* (364) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==364);
/* (365) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==365);
/* (366) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=366);
/* (367) tconscomma ::= */ yytestcase(yyruleno==367);
/* (368) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=368);
/* (369) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=369);
/* (370) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=370);
/* (371) oneselect ::= values */ yytestcase(yyruleno==371);
/* (372) sclp ::= selcollist COMMA */ yytestcase(yyruleno==372);
/* (373) as ::= ID|STRING */ yytestcase(yyruleno==373);
/* (374) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=374);
/* (375) returning ::= */ yytestcase(yyruleno==375);
/* (376) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=376);
/* (377) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==377);
/* (378) case_operand ::= expr */ yytestcase(yyruleno==378);
/* (379) exprlist ::= nexprlist */ yytestcase(yyruleno==379);
/* (380) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=380);
/* (381) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=381);
/* (382) nmnum ::= ON */ yytestcase(yyruleno==382);
/* (383) nmnum ::= DELETE */ yytestcase(yyruleno==383);
/* (384) nmnum ::= DEFAULT */ yytestcase(yyruleno==384);
/* (385) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==385);
/* (386) foreach_clause ::= */ yytestcase(yyruleno==386);
/* (387) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==387);
/* (388) trnm ::= nm */ yytestcase(yyruleno==388);
/* (389) tridxby ::= */ yytestcase(yyruleno==389);
/* (390) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==390);
/* (391) database_kw_opt ::= */ yytestcase(yyruleno==391);
/* (392) kwcolumn_opt ::= */ yytestcase(yyruleno==392);
/* (393) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==393);
/* (394) vtabarglist ::= vtabarg */ yytestcase(yyruleno==394);
/* (395) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==395);
/* (396) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==396);
/* (397) anylist ::= */ yytestcase(yyruleno==397);
/* (398) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==398);
/* (399) anylist ::= anylist ANY */ yytestcase(yyruleno==399);
/* (400) with ::= */ yytestcase(yyruleno==400);
/* (401) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=401);
/* (402) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=402);
break;
/********** End reduce actions ************************************************/
};
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
yygoto = yyRuleInfoLhs[yyruleno];
yysize = yyRuleInfoNRhs[yyruleno];
yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto);
|
| ︙ | ︙ | |||
203501 203502 203503 203504 203505 203506 203507 203508 203509 203510 203511 203512 203513 203514 | # define ALWAYS(X) ((X)?1:(assert(0),0)) # define NEVER(X) ((X)?(assert(0),1):0) #else # define ALWAYS(X) (X) # define NEVER(X) (X) #endif #endif /* !defined(SQLITE_AMALGAMATION) */ /* #include <string.h> */ /* #include <stdio.h> */ /* #include <assert.h> */ /* #include <stdlib.h> */ /* The following macro is used to suppress compiler warnings. | > > > > > | 203530 203531 203532 203533 203534 203535 203536 203537 203538 203539 203540 203541 203542 203543 203544 203545 203546 203547 203548 | # define ALWAYS(X) ((X)?1:(assert(0),0)) # define NEVER(X) ((X)?(assert(0),1):0) #else # define ALWAYS(X) (X) # define NEVER(X) (X) #endif #endif /* !defined(SQLITE_AMALGAMATION) */ /* Macro to check for 4-byte alignment. Only used inside of assert() */ #ifdef SQLITE_DEBUG # define FOUR_BYTE_ALIGNED(X) ((((char*)(X) - (char*)0) & 3)==0) #endif /* #include <string.h> */ /* #include <stdio.h> */ /* #include <assert.h> */ /* #include <stdlib.h> */ /* The following macro is used to suppress compiler warnings. |
| ︙ | ︙ | |||
203908 203909 203910 203911 203912 203913 203914 |
** Functions to deserialize a 16 bit integer, 32 bit real number and
** 64 bit integer. The deserialized value is returned.
*/
static int readInt16(u8 *p){
return (p[0]<<8) + p[1];
}
static void readCoord(u8 *p, RtreeCoord *pCoord){
| | | 203942 203943 203944 203945 203946 203947 203948 203949 203950 203951 203952 203953 203954 203955 203956 |
** Functions to deserialize a 16 bit integer, 32 bit real number and
** 64 bit integer. The deserialized value is returned.
*/
static int readInt16(u8 *p){
return (p[0]<<8) + p[1];
}
static void readCoord(u8 *p, RtreeCoord *pCoord){
assert( FOUR_BYTE_ALIGNED(p) );
#if SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300
pCoord->u = _byteswap_ulong(*(u32*)p);
#elif SQLITE_BYTEORDER==1234 && GCC_VERSION>=4003000
pCoord->u = __builtin_bswap32(*(u32*)p);
#elif SQLITE_BYTEORDER==4321
pCoord->u = *(u32*)p;
#else
|
| ︙ | ︙ | |||
203962 203963 203964 203965 203966 203967 203968 |
*/
static void writeInt16(u8 *p, int i){
p[0] = (i>> 8)&0xFF;
p[1] = (i>> 0)&0xFF;
}
static int writeCoord(u8 *p, RtreeCoord *pCoord){
u32 i;
| | | 203996 203997 203998 203999 204000 204001 204002 204003 204004 204005 204006 204007 204008 204009 204010 |
*/
static void writeInt16(u8 *p, int i){
p[0] = (i>> 8)&0xFF;
p[1] = (i>> 0)&0xFF;
}
static int writeCoord(u8 *p, RtreeCoord *pCoord){
u32 i;
assert( FOUR_BYTE_ALIGNED(p) );
assert( sizeof(RtreeCoord)==4 );
assert( sizeof(u32)==4 );
#if SQLITE_BYTEORDER==1234 && GCC_VERSION>=4003000
i = __builtin_bswap32(pCoord->u);
memcpy(p, &i, 4);
#elif SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300
i = _byteswap_ulong(pCoord->u);
|
| ︙ | ︙ | |||
204690 204691 204692 204693 204694 204695 204696 |
** in a coordinate pair. But make pCellData point to the lower bound.
*/
pCellData += 8 + 4*(p->iCoord&0xfe);
assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE
|| p->op==RTREE_GT || p->op==RTREE_EQ || p->op==RTREE_TRUE
|| p->op==RTREE_FALSE );
| | | 204724 204725 204726 204727 204728 204729 204730 204731 204732 204733 204734 204735 204736 204737 204738 |
** in a coordinate pair. But make pCellData point to the lower bound.
*/
pCellData += 8 + 4*(p->iCoord&0xfe);
assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE
|| p->op==RTREE_GT || p->op==RTREE_EQ || p->op==RTREE_TRUE
|| p->op==RTREE_FALSE );
assert( FOUR_BYTE_ALIGNED(pCellData) );
switch( p->op ){
case RTREE_TRUE: return; /* Always satisfied */
case RTREE_FALSE: break; /* Never satisfied */
case RTREE_EQ:
RTREE_DECODE_COORD(eInt, pCellData, val);
/* val now holds the lower bound of the coordinate pair */
if( p->u.rValue>=val ){
|
| ︙ | ︙ | |||
204743 204744 204745 204746 204747 204748 204749 |
){
RtreeDValue xN; /* Coordinate value converted to a double */
assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE
|| p->op==RTREE_GT || p->op==RTREE_EQ || p->op==RTREE_TRUE
|| p->op==RTREE_FALSE );
pCellData += 8 + p->iCoord*4;
| | | 204777 204778 204779 204780 204781 204782 204783 204784 204785 204786 204787 204788 204789 204790 204791 |
){
RtreeDValue xN; /* Coordinate value converted to a double */
assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE
|| p->op==RTREE_GT || p->op==RTREE_EQ || p->op==RTREE_TRUE
|| p->op==RTREE_FALSE );
pCellData += 8 + p->iCoord*4;
assert( FOUR_BYTE_ALIGNED(pCellData) );
RTREE_DECODE_COORD(eInt, pCellData, xN);
switch( p->op ){
case RTREE_TRUE: return; /* Always satisfied */
case RTREE_FALSE: break; /* Never satisfied */
case RTREE_LE: if( xN <= p->u.rValue ) return; break;
case RTREE_LT: if( xN < p->u.rValue ) return; break;
case RTREE_GE: if( xN >= p->u.rValue ) return; break;
|
| ︙ | ︙ | |||
242952 242953 242954 242955 242956 242957 242958 |
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);
| | | 242986 242987 242988 242989 242990 242991 242992 242993 242994 242995 242996 242997 242998 242999 243000 |
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: 2023-06-19 13:09:16 3c94f87806a8b408d8204fc7deec16d01c085ee199ff21a1f20b6346ce816cfe", -1, SQLITE_TRANSIENT);
}
/*
** Return true if zName is the extension on one of the shadow tables used
** by this module.
*/
static int fts5ShadowName(const char *zName){
|
| ︙ | ︙ |
Changes to extsrc/sqlite3.h.
| ︙ | ︙ | |||
144 145 146 147 148 149 150 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.43.0" #define SQLITE_VERSION_NUMBER 3043000 | | | 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.43.0" #define SQLITE_VERSION_NUMBER 3043000 #define SQLITE_SOURCE_ID "2023-06-19 13:09:16 3c94f87806a8b408d8204fc7deec16d01c085ee199ff21a1f20b6346ce816cfe" /* ** 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 |
| ︙ | ︙ |