@@ -37,11 +37,11 @@
37 37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
38 38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This file implements routines used to report what compile-time options
39 39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLite was built with.
40 40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
41 41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS /* IMP: R-16824-07538 */
43 43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
44 44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
45 45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Include the configuration header output by 'configure' if we're using the
46 46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** autoconf-based build
47 47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -1167,11 +1167,11 @@
1167 1167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1168 1168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
1169 1169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1170 1170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION "3.29.0"
1171 1171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION_NUMBER 3029000
1172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2019-06-13 14:07:41 f8696b60eec0dcacfe92d9a31cbf1436d674140e5447de0cd1c2f52bff6c2be4"
1172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2019-07-08 13:45:02 8fb0c6d5a38e77aa4c5f394fb8af1b0c7c6a4790e932aabc213a3078ee9acaf6"
1173 1173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1174 1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1175 1175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
1176 1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
1177 1177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -3262,10 +3262,38 @@
3262 3262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the writable_schema, positive to enable writable_schema, or negative to
3263 3263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** leave the setting unchanged. The second parameter is a pointer to an
3264 3264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** integer into which is written 0 or 1 to indicate whether the writable_schema
3265 3265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is enabled or disabled following this call.
3266 3266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dd>
3267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [[SQLITE_DBCONFIG_LEGACY_ALTER_TABLE]]
3269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dt>SQLITE_DBCONFIG_LEGACY_ALTER_TABLE</dt>
3270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>The SQLITE_DBCONFIG_LEGACY_ALTER_TABLE option activates or deactivates
3271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the legacy behavior of the [ALTER TABLE RENAME] command such it
3272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** behaves as it did prior to [version 3.24.0] (2018-06-04). See the
3273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "Compatibility Notice" on the [ALTER TABLE RENAME documentation] for
3274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** additional information. This feature can also be turned on and off
3275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** using the [PRAGMA legacy_alter_table] statement.
3276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** </dd>
3277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [[SQLITE_DBCONFIG_DQS_DML]]
3279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dt>SQLITE_DBCONFIG_DQS_DML</td>
3280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>The SQLITE_DBCONFIG_DQS_DML option activates or deactivates
3281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the legacy [double-quoted string literal] misfeature for DML statement
3282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** only, that is DELETE, INSERT, SELECT, and UPDATE statements. The
3283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** default value of this setting is determined by the [-DSQLITE_DQS]
3284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** compile-time option.
3285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** </dd>
3286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [[SQLITE_DBCONFIG_DQS_DDL]]
3288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dt>SQLITE_DBCONFIG_DQS_DDL</td>
3289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>The SQLITE_DBCONFIG_DQS option activates or deactivates
3290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the legacy [double-quoted string literal] misfeature for DDL statements,
3291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** such as CREATE TABLE and CREATE INDEX. The
3292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** default value of this setting is determined by the [-DSQLITE_DQS]
3293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** compile-time option.
3294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** </dd>
3267 3295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dl>
3268 3296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
3269 3297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
3270 3298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */
3271 3299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_DBCONFIG_ENABLE_FKEY 1002 /* int int* */
@@ -3276,11 +3304,14 @@
3276 3304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_DBCONFIG_ENABLE_QPSG 1007 /* int int* */
3277 3305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */
3278 3306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_DBCONFIG_RESET_DATABASE 1009 /* int int* */
3279 3307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_DBCONFIG_DEFENSIVE 1010 /* int int* */
3280 3308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_DBCONFIG_WRITABLE_SCHEMA 1011 /* int int* */
3281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_DBCONFIG_MAX 1011 /* Largest DBCONFIG */
3309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE 1012 /* int int* */
3310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_DBCONFIG_DQS_DML 1013 /* int int* */
3311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_DBCONFIG_DQS_DDL 1014 /* int int* */
3312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_DBCONFIG_MAX 1014 /* Largest DBCONFIG */
3282 3313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3283 3314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3284 3315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Enable Or Disable Extended Result Codes
3285 3316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3
3286 3317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -16482,10 +16513,12 @@
16482 16513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TriggerEQP 0x01000000 /* Show trigger EXPLAIN QUERY PLAN */
16483 16514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_ResetDatabase 0x02000000 /* Reset the database */
16484 16515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_LegacyAlter 0x04000000 /* Legacy ALTER TABLE behaviour */
16485 16516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_NoSchemaError 0x08000000 /* Do not report schema parse errors*/
16486 16517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_Defensive 0x10000000 /* Input SQL is likely hostile */
16518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_DqsDDL 0x20000000 /* dbl-quoted strings allowed in DDL*/
16519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_DqsDML 0x40000000 /* dbl-quoted strings allowed in DML*/
16487 16520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16488 16521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Flags used only if debugging */
16489 16522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define HI(X) ((u64)(X)<<32)
16490 16523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
16491 16524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_SqlTrace HI(0x0001) /* Debug print SQL as it executes */
@@ -17728,12 +17761,11 @@
17728 17761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_UUpsert 0x0200 /* True if uNC.pUpsert is used */
17729 17762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_MinMaxAgg 0x1000 /* min/max aggregates seen. See note above */
17730 17763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_Complex 0x2000 /* True if a function or subquery seen */
17731 17764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_AllowWin 0x4000 /* Window functions are allowed here */
17732 17765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_HasWin 0x8000 /* One or more window functions seen */
17733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define NC_NoDblQStr 0x10000 /* Do not allow double-quoted string hack.
17734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Mnemonic: "NO DouBLe-Quoted STRings" */
17766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define NC_IsDDL 0x10000 /* Resolving names in a CREATE statement */
17735 17767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17736 17768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
17737 17769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** An instance of the following object describes a single ON CONFLICT
17738 17770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** clause in an upsert.
17739 17771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -19781,12 +19813,19 @@
19781 19813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19782 19814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* EVIDENCE-OF: R-38720-18127 The default setting is determined by the
19783 19815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_ALLOW_COVERING_INDEX_SCAN compile-time option, or is "on" if
19784 19816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that compile-time option is omitted.
19785 19817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef SQLITE_ALLOW_COVERING_INDEX_SCAN
19818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !defined(SQLITE_ALLOW_COVERING_INDEX_SCAN)
19787 19819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_ALLOW_COVERING_INDEX_SCAN 1
19820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
19821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # if !SQLITE_ALLOW_COVERING_INDEX_SCAN
19822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # error "Compile-time disabling of covering index scan using the\
19823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -DSQLITE_ALLOW_COVERING_INDEX_SCAN=0 option is deprecated.\
19824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Contact SQLite developers if this is a problem for you, and\
19825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ delete this #error macro to continue with your build."
19826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # endif
19788 19827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
19789 19828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19790 19829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The minimum PMA size is set to this value multiplied by the database
19791 19830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** page size in bytes.
19792 19831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -49444,20 +49483,20 @@
49444 49483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGroup = (PGroup*)&pCache[1];
49445 49484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGroup->mxPinned = 10;
49446 49485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
49447 49486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGroup = &pcache1.grp;
49448 49487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
49488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pcache1EnterMutex(pGroup);
49449 49489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pGroup->lru.isAnchor==0 ){
49450 49490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGroup->lru.isAnchor = 1;
49451 49491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGroup->lru.pLruPrev = pGroup->lru.pLruNext = &pGroup->lru;
49452 49492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
49453 49493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->pGroup = pGroup;
49454 49494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->szPage = szPage;
49455 49495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->szExtra = szExtra;
49456 49496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->szAlloc = szPage + szExtra + ROUND8(sizeof(PgHdr1));
49457 49497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->bPurgeable = (bPurgeable ? 1 : 0);
49458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pcache1EnterMutex(pGroup);
49459 49498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1ResizeHash(pCache);
49460 49499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bPurgeable ){
49461 49500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->nMin = 10;
49462 49501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGroup->nMinPage += pCache->nMin;
49463 49502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGroup->mxPinned = pGroup->nMaxPage + 10 - pGroup->nMinPage;
@@ -87511,17 +87550,18 @@
87511 87550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx = p->apCsr[pOp->p1];
87512 87551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCx ){
87513 87552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the ephermeral table is already open, erase all existing content
87514 87553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** so that the table is empty again, rather than creating a new table. */
87515 87554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCx->isEphemeral );
87555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCx->seqCount = 0;
87556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCx->cacheStatus = CACHE_STALE;
87516 87557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCx->pBtx ){
87517 87558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeClearTable(pCx->pBtx, pCx->pgnoRoot, 0);
87518 87559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87519 87560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
87520 87561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx = allocateCursor(p, pOp->p1, pOp->p2, -1, CURTYPE_BTREE);
87521 87562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCx==0 ) goto no_mem;
87522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCx->nullRow = 1;
87523 87563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx->isEphemeral = 1;
87524 87564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeOpen(db->pVfs, 0, db, &pCx->pBtx,
87525 87565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BTREE_OMIT_JOURNAL | BTREE_SINGLE | pOp->p5,
87526 87566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vfsFlags);
87527 87567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
@@ -87553,10 +87593,11 @@
87553 87593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87554 87594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87555 87595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx->isOrdered = (pOp->p5!=BTREE_UNORDERED);
87556 87596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87557 87597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) goto abort_due_to_error;
87598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCx->nullRow = 1;
87558 87599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
87559 87600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87560 87601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
87561 87602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: SorterOpen P1 P2 P3 P4 *
87562 87603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -95521,10 +95562,27 @@
95521 95562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zCol && sqlite3StrICmp(zSpan, zCol)!=0 ){
95522 95563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
95523 95564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95524 95565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
95525 95566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
95568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
95569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return TRUE if the double-quoted string mis-feature should be supported.
95570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
95571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int areDoubleQuotedStringsEnabled(sqlite3 *db, NameContext *pTopNC){
95572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->init.busy ) return 1; /* Always support for legacy schemas */
95573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTopNC->ncFlags & NC_IsDDL ){
95574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Currently parsing a DDL statement */
95575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3WritableSchema(db) && (db->flags & SQLITE_DqsDML)!=0 ){
95576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
95577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
95578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (db->flags & SQLITE_DqsDDL)!=0;
95579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
95580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Currently parsing a DML statement */
95581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (db->flags & SQLITE_DqsDML)!=0;
95582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
95583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
95526 95584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
95527 95585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
95528 95586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Given the name of a column of the form X.Y.Z or Y.Z or just Z, look up
95529 95587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that name in the set of source tables in pSrcList and make the pExpr
95530 95588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expression node refer back to that source column. The following changes
@@ -95850,12 +95908,12 @@
95850 95908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Because no reference was made to outer contexts, the pNC->nRef
95851 95909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fields are not changed in any context.
95852 95910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
95853 95911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cnt==0 && zTab==0 ){
95854 95912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_ID );
95855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr,EP_DblQuoted)
95856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && 0==(pTopNC->ncFlags&NC_NoDblQStr)
95913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pExpr,EP_DblQuoted)
95914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && areDoubleQuotedStringsEnabled(db, pTopNC)
95857 95915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
95858 95916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If a double-quoted identifier does not match any known column name,
95859 95917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then treat it as a string.
95860 95918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
95861 95919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This hack was added in the early days of SQLite in a misguided attempt
@@ -97144,14 +97202,11 @@
97144 97202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sSrc.a[0].pTab = pTab;
97145 97203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sSrc.a[0].iCursor = -1;
97146 97204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97147 97205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sNC.pParse = pParse;
97148 97206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sNC.pSrcList = &sSrc;
97149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sNC.ncFlags = type;
97150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !pParse->db->init.busy && !sqlite3WritableSchema(pParse->db) ){
97151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sNC.ncFlags |= NC_NoDblQStr;
97152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
97207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sNC.ncFlags = type | NC_IsDDL;
97153 97208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (rc = sqlite3ResolveExprNames(&sNC, pExpr))!=SQLITE_OK ) return rc;
97154 97209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pList ) rc = sqlite3ResolveExprListNames(&sNC, pList);
97155 97210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
97156 97211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97157 97212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -100544,11 +100599,12 @@
100544 100599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
100545 100600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Convert a scalar expression node to a TK_REGISTER referencing
100546 100601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** register iReg. The caller must ensure that iReg already contains
100547 100602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the correct value for the expression.
100548 100603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
100549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void exprToRegister(Expr *p, int iReg){
100604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void exprToRegister(Expr *pExpr, int iReg){
100605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *p = sqlite3ExprSkipCollate(pExpr);
100550 100606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->op2 = p->op;
100551 100607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->op = TK_REGISTER;
100552 100608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iTable = iReg;
100553 100609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprClearProperty(p, EP_Skip);
100554 100610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -103438,15 +103494,24 @@
103438 103494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
103439 103495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
103440 103496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Walker callback used by sqlite3RenameExprUnmap().
103441 103497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
103442 103498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int renameUnmapSelectCb(Walker *pWalker, Select *p){
103499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Parse *pParse = pWalker->pParse;
103500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
103501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ALWAYS(p->pEList) ){
103502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pList = p->pEList;
103503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<pList->nExpr; i++){
103504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pList->a[i].zName ){
103505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3RenameTokenRemap(pParse, 0, (void*)pList->a[i].zName);
103506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
103507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
103508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
103443 103509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(p->pSrc) ){ /* Every Select as a SrcList, even if it is empty */
103444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Parse *pParse = pWalker->pParse;
103445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
103446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<p->pSrc->nSrc; i++){
103447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3RenameTokenRemap(pParse, 0, (void*)p->pSrc->a[0].zName);
103510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SrcList *pSrc = p->pSrc;
103511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<pSrc->nSrc; i++){
103512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3RenameTokenRemap(pParse, 0, (void*)pSrc->a[i].zName);
103448 103513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103449 103514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103450 103515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
103451 103516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103452 103517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -107836,14 +107901,18 @@
107836 107901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void SQLITE_NOINLINE deleteTable(sqlite3 *db, Table *pTable){
107837 107902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIndex, *pNext;
107838 107903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
107839 107904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
107840 107905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Record the number of outstanding lookaside allocations in schema Tables
107841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** prior to doing any free() operations. Since schema Tables do not use
107842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** lookaside, this number should not change. */
107906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** prior to doing any free() operations. Since schema Tables do not use
107907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** lookaside, this number should not change.
107908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
107909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If malloc has already failed, it may be that it failed while allocating
107910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a Table object that was going to be marked ephemeral. So do not check
107911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that no lookaside memory is used in this case either. */
107843 107912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nLookaside = 0;
107844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db && (pTable->tabFlags & TF_Ephemeral)==0 ){
107913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db && !db->mallocFailed && (pTable->tabFlags & TF_Ephemeral)==0 ){
107845 107914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nLookaside = sqlite3LookasideUsed(db, 0);
107846 107915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107847 107916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
107848 107917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
107849 107918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Delete all indices associated with this table. */
@@ -127167,13 +127236,10 @@
127167 127236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( pSelect->pPrior ) pSelect = pSelect->pPrior;
127168 127237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = sqlite3DbMallocZero(db, sizeof(Table) );
127169 127238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab==0 ){
127170 127239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
127171 127240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
127172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The sqlite3ResultSetOfSelect() is only used n contexts where lookaside
127173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is disabled */
127174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( db->lookaside.bDisable );
127175 127241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->nTabRef = 1;
127176 127242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->zName = 0;
127177 127243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
127178 127244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ColumnsFromExprList(pParse, pSelect->pEList, &pTab->nCol, &pTab->aCol);
127179 127245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectAddColumnTypeAndCollation(pParse, pTab, pSelect);
@@ -139175,32 +139241,35 @@
139175 139241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zNew[iTo++] = zNew[iFrom];
139176 139242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
139177 139243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zNew[iTo] = 0;
139178 139244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iTo>0 );
139179 139245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If the RHS begins with a digit, a +/- sign or whitespace, then the
139181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** LHS must be an ordinary column (not a virtual table column) with
139182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** TEXT affinity. Otherwise the LHS might be numeric and "lhs >= rhs"
139183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** would be false even though "lhs LIKE rhs" is true. But if the RHS
139184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** does not start with a digit or +/-, then "lhs LIKE rhs" will always
139185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be false if the LHS is numeric and so the optimization still works.
139246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If the LHS is not an ordinary column with TEXT affinity, then the
139247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pattern prefix boundaries (both the start and end boundaries) must
139248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** not look like a number. Otherwise the pattern might be treated as
139249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a number, which will invalidate the LIKE optimization.
139186 139250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
139187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 2018-09-10 ticket c94369cae9b561b1f996d0054bfab11389f9d033
139188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The RHS pattern must not be '/%' because the termination condition
139189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** will then become "x<'0'" and if the affinity is numeric, will then
139190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be converted into "x<0", which is incorrect.
139251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Getting this right has been a persistent source of bugs in the
139252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** LIKE optimization. See, for example:
139253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2018-09-10 https://sqlite.org/src/info/c94369cae9b561b1
139254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2019-05-02 https://sqlite.org/src/info/b043a54c3de54b28
139255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2019-06-10 https://sqlite.org/src/info/fd76310a5e843e07
139256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2019-06-14 https://sqlite.org/src/info/ce8717f0885af975
139191 139257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
139192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3Isdigit(zNew[0])
139193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || sqlite3Isspace(zNew[0])
139194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || zNew[0]=='-'
139195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || zNew[0]=='+'
139196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || zNew[iTo-1]=='0'-1
139197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
139198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pLeft->op!=TK_COLUMN
139199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || sqlite3ExprAffinity(pLeft)!=SQLITE_AFF_TEXT
139200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || IsVirtual(pLeft->y.pTab) /* Value might be numeric */
139201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
139258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pLeft->op!=TK_COLUMN
139259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || sqlite3ExprAffinity(pLeft)!=SQLITE_AFF_TEXT
139260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || IsVirtual(pLeft->y.pTab) /* Value might be numeric */
139261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
139262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isNum;
139263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ double rDummy;
139264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
139265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isNum<=0 ){
139266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zNew[iTo-1]++;
139267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
139268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zNew[iTo-1]--;
139269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
139270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isNum>0 ){
139202 139271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pPrefix);
139203 139272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ValueFree(pVal);
139204 139273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
139205 139274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
139206 139275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -141083,21 +141152,21 @@
141083 141152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
141084 141153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine runs over generated VDBE code and translates OP_Column
141085 141154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** opcodes into OP_Copy when the table is being accessed via co-routine
141086 141155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** instead of via table lookup.
141087 141156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
141088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the bIncrRowid parameter is 0, then any OP_Rowid instructions on
141089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** cursor iTabCur are transformed into OP_Null. Or, if bIncrRowid is non-zero,
141090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** then each OP_Rowid is transformed into an instruction to increment the
141091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** value stored in its output register.
141157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the iAutoidxCur is not zero, then any OP_Rowid instructions on
141158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** cursor iTabCur are transformed into OP_Sequence opcode for the
141159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** iAutoidxCur cursor, in order to generate unique rowids for the
141160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** automatic index being generated.
141092 141161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
141093 141162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void translateColumnToCopy(
141094 141163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse, /* Parsing context */
141095 141164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iStart, /* Translate from this opcode to the end */
141096 141165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTabCur, /* OP_Column/OP_Rowid references to this table */
141097 141166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRegister, /* The first column is in this register */
141098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bIncrRowid /* If non-zero, transform OP_rowid to OP_AddImm(1) */
141167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iAutoidxCur /* If non-zero, cursor of autoindex being generated */
141099 141168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
141100 141169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = pParse->pVdbe;
141101 141170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp = sqlite3VdbeGetOp(v, iStart);
141102 141171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEnd = sqlite3VdbeCurrentAddr(v);
141103 141172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->db->mallocFailed ) return;
@@ -141107,15 +141176,13 @@
141107 141176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->opcode = OP_Copy;
141108 141177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p1 = pOp->p2 + iRegister;
141109 141178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p2 = pOp->p3;
141110 141179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p3 = 0;
141111 141180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pOp->opcode==OP_Rowid ){
141112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( bIncrRowid ){
141113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Increment the value stored in the P2 operand of the OP_Rowid. */
141114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pOp->opcode = OP_AddImm;
141115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pOp->p1 = pOp->p2;
141116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pOp->p2 = 1;
141181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iAutoidxCur ){
141182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->opcode = OP_Sequence;
141183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->p1 = iAutoidxCur;
141117 141184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
141118 141185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->opcode = OP_Null;
141119 141186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p1 = 0;
141120 141187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p3 = 0;
141121 141188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -141385,12 +141452,13 @@
141385 141452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
141386 141453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPartial ) sqlite3VdbeResolveLabel(v, iContinue);
141387 141454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTabItem->fg.viaCoroutine ){
141388 141455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP2(v, addrCounter, regBase+n);
141389 141456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pParse->db->mallocFailed );
141457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pLevel->iIdxCur>0 );
141390 141458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
translateColumnToCopy(pParse, addrTop, pLevel->iTabCur,
141391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTabItem->regResult, 1);
141459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTabItem->regResult, pLevel->iIdxCur);
141392 141460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGoto(v, addrTop);
141393 141461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTabItem->fg.viaCoroutine = 0;
141394 141462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
141395 141463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1); VdbeCoverage(v);
141396 141464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -146631,10 +146699,11 @@
146631 146699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct WindowRewrite WindowRewrite;
146632 146700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct WindowRewrite {
146633 146701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Window *pWin;
146634 146702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc;
146635 146703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pSub;
146704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab;
146636 146705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pSubSelect; /* Current sub-select, if any */
146637 146706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
146638 146707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146639 146708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
146640 146709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Callback function used by selectWindowRewriteEList(). If necessary,
@@ -146691,10 +146760,11 @@
146691 146760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(pExpr, 0, sizeof(Expr));
146692 146761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146693 146762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_COLUMN;
146694 146763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn = p->pSub->nExpr-1;
146695 146764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = p->pWin->iEphCsr;
146765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->y.pTab = p->pTab;
146696 146766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146697 146767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146698 146768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
146699 146769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146700 146770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -146734,10 +146804,11 @@
146734 146804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void selectWindowRewriteEList(
146735 146805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse,
146736 146806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Window *pWin,
146737 146807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc,
146738 146808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pEList, /* Rewrite expressions in this list */
146809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab,
146739 146810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList **ppSub /* IN/OUT: Sub-select expression-list */
146740 146811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
146741 146812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Walker sWalker;
146742 146813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WindowRewrite sRewrite;
146743 146814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -146745,10 +146816,11 @@
146745 146816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&sRewrite, 0, sizeof(WindowRewrite));
146746 146817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146747 146818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sRewrite.pSub = *ppSub;
146748 146819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sRewrite.pWin = pWin;
146749 146820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sRewrite.pSrc = pSrc;
146821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sRewrite.pTab = pTab;
146750 146822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146751 146823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sWalker.pParse = pParse;
146752 146824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sWalker.xExprCallback = selectWindowRewriteExprCb;
146753 146825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sWalker.xSelectCallback = selectWindowRewriteSelectCb;
146754 146826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sWalker.u.pRewrite = &sRewrite;
@@ -146804,15 +146876,22 @@
146804 146876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pSort = 0;
146805 146877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146806 146878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pSublist = 0; /* Expression list for sub-query */
146807 146879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Window *pMWin = p->pWin; /* Master window object */
146808 146880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Window *pWin; /* Window object iterator */
146881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab;
146882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
146883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab = sqlite3DbMallocZero(db, sizeof(Table));
146884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTab==0 ){
146885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_NOMEM;
146886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
146809 146887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146810 146888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pSrc = 0;
146811 146889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pWhere = 0;
146812 146890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pGroupBy = 0;
146813 146891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pHaving = 0;
146892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->selFlags &= ~SF_Aggregate;
146814 146893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146815 146894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Create the ORDER BY clause for the sub-select. This is the concatenation
146816 146895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the window PARTITION and ORDER BY clauses. Then, if this makes it
146817 146896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** redundant, remove the ORDER BY from the parent SELECT. */
146818 146897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSort = sqlite3ExprListDup(db, pMWin->pPartition, 0);
@@ -146828,12 +146907,12 @@
146828 146907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The OpenEphemeral instruction is coded later, after it is known how
146829 146908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** many columns the table will have. */
146830 146909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMWin->iEphCsr = pParse->nTab++;
146831 146910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nTab += 3;
146832 146911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- selectWindowRewriteEList(pParse, pMWin, pSrc, p->pEList, &pSublist);
146834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- selectWindowRewriteEList(pParse, pMWin, pSrc, p->pOrderBy, &pSublist);
146912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ selectWindowRewriteEList(pParse, pMWin, pSrc, p->pEList, pTab, &pSublist);
146913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ selectWindowRewriteEList(pParse, pMWin, pSrc, p->pOrderBy, pTab, &pSublist);
146835 146914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMWin->nBufferCol = (pSublist ? pSublist->nExpr : 0);
146836 146915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146837 146916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Append the PARTITION BY and ORDER BY expressions to the to the
146838 146917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sub-select expression list. They are required to figure out where
146839 146918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** boundaries for partitions and sets of peer rows lie. */
@@ -146871,28 +146950,32 @@
146871 146950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSub = sqlite3SelectNew(
146872 146951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse, pSublist, pSrc, pWhere, pGroupBy, pHaving, pSort, 0, 0
146873 146952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
146874 146953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pSrc = sqlite3SrcListAppend(pParse, 0, 0, 0);
146875 146954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pSrc ){
146955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab2;
146876 146956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pSrc->a[0].pSelect = pSub;
146877 146957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcListAssignCursors(pParse, p->pSrc);
146878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3ExpandSubquery(pParse, &p->pSrc->a[0]) ){
146958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSub->selFlags |= SF_Expanded;
146959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab2 = sqlite3ResultSetOfSelect(pParse, pSub);
146960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTab2==0 ){
146879 146961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
146880 146962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
146881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pSub->selFlags |= SF_Expanded;
146882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->selFlags &= ~SF_Aggregate;
146883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3SelectPrep(pParse, pSub, 0);
146963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(pTab, pTab2, sizeof(Table));
146964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->tabFlags |= TF_Ephemeral;
146965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pSrc->a[0].pTab = pTab;
146966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab = pTab2;
146884 146967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
146886 146968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pMWin->iEphCsr, pSublist->nExpr);
146887 146969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_OpenDup, pMWin->iEphCsr+1, pMWin->iEphCsr);
146888 146970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_OpenDup, pMWin->iEphCsr+2, pMWin->iEphCsr);
146889 146971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_OpenDup, pMWin->iEphCsr+3, pMWin->iEphCsr);
146890 146972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
146891 146973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(db, pSub);
146892 146974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146893 146975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ) rc = SQLITE_NOMEM;
146976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbFree(db, pTab);
146894 146977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146895 146978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146896 146979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
146897 146980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146898 146981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -155959,10 +156042,13 @@
155959 156042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ SQLITE_DBCONFIG_TRIGGER_EQP, SQLITE_TriggerEQP },
155960 156043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ SQLITE_DBCONFIG_RESET_DATABASE, SQLITE_ResetDatabase },
155961 156044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ SQLITE_DBCONFIG_DEFENSIVE, SQLITE_Defensive },
155962 156045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ SQLITE_DBCONFIG_WRITABLE_SCHEMA, SQLITE_WriteSchema|
155963 156046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_NoSchemaError },
156047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { SQLITE_DBCONFIG_LEGACY_ALTER_TABLE, SQLITE_LegacyAlter },
156048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { SQLITE_DBCONFIG_DQS_DDL, SQLITE_DqsDDL },
156049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { SQLITE_DBCONFIG_DQS_DML, SQLITE_DqsDML },
155964 156050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
155965 156051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int i;
155966 156052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_ERROR; /* IMP: R-42790-23372 */
155967 156053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<ArraySize(aFlagOp); i++){
155968 156054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aFlagOp[i].op==op ){
@@ -155989,62 +156075,55 @@
155989 156075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
155990 156076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
155991 156077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
155992 156078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
155993 156079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
155994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
155995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
155996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Return true if the buffer z[0..n-1] contains all spaces.
155997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
155998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int allSpaces(const char *z, int n){
155999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( n>0 && z[n-1]==' ' ){ n--; }
156000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return n==0;
156001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
156002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
156003 156080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
156004 156081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the default collating function named "BINARY" which is always
156005 156082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** available.
156006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
156007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the padFlag argument is not NULL then space padding at the end
156008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of strings is ignored. This implements the RTRIM collation.
156009 156083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
156010 156084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int binCollFunc(
156011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void *padFlag,
156085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *NotUsed,
156012 156086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nKey1, const void *pKey1,
156013 156087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nKey2, const void *pKey2
156014 156088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
156015 156089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc, n;
156090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(NotUsed);
156016 156091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = nKey1<nKey2 ? nKey1 : nKey2;
156017 156092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* EVIDENCE-OF: R-65033-28449 The built-in BINARY collation compares
156018 156093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** strings byte by byte using the memcmp() function from the standard C
156019 156094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** library. */
156020 156095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pKey1 && pKey2 );
156021 156096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = memcmp(pKey1, pKey2, n);
156022 156097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==0 ){
156023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( padFlag
156024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && allSpaces(((char*)pKey1)+n, nKey1-n)
156025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && allSpaces(((char*)pKey2)+n, nKey2-n)
156026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
156027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* EVIDENCE-OF: R-31624-24737 RTRIM is like BINARY except that extra
156028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** spaces at the end of either string do not change the result. In other
156029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** words, strings will compare equal to one another as long as they
156030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** differ only in the number of spaces at the end.
156031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
156032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
156033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = nKey1 - nKey2;
156034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
156098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = nKey1 - nKey2;
156035 156099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156036 156100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
156037 156101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
156103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
156104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This is the collating function named "RTRIM" which is always
156105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** available. Ignore trailing spaces.
156106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
156107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int rtrimCollFunc(
156108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pUser,
156109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nKey1, const void *pKey1,
156110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nKey2, const void *pKey2
156111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
156112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const u8 *pK1 = (const u8*)pKey1;
156113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const u8 *pK2 = (const u8*)pKey2;
156114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( nKey1 && pK1[nKey1-1]==' ' ) nKey1--;
156115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( nKey2 && pK2[nKey2-1]==' ' ) nKey2--;
156116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return binCollFunc(pUser, nKey1, pKey1, nKey2, pKey2);
156117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
156038 156118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156039 156119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
156040 156120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if CollSeq is the default built-in BINARY.
156041 156121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
156042 156122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3IsBinary(const CollSeq *p){
156043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p==0 || p->xCmp!=binCollFunc || p->pUser!=0
156044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || strcmp(p->zName,"BINARY")==0 );
156045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return p==0 || (p->xCmp==binCollFunc && p->pUser==0);
156123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p==0 || p->xCmp!=binCollFunc || strcmp(p->zName,"BINARY")==0 );
156124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return p==0 || p->xCmp==binCollFunc;
156046 156125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156047 156126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156048 156127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
156049 156128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Another built-in collating sequence: NOCASE.
156050 156129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -158191,11 +158270,39 @@
158191 158270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->autoCommit = 1;
158192 158271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->nextAutovac = -1;
158193 158272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->szMmap = sqlite3GlobalConfig.szMmap;
158194 158273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->nextPagesize = 0;
158195 158274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->nMaxSorterMmap = 0x7FFFFFFF;
158196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db->flags |= SQLITE_ShortColNames | SQLITE_EnableTrigger | SQLITE_CacheSpill
158275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->flags |= SQLITE_ShortColNames
158276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ | SQLITE_EnableTrigger
158277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ | SQLITE_CacheSpill
158278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
158279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The SQLITE_DQS compile-time option determines the default settings
158280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for SQLITE_DBCONFIG_DQS_DDL and SQLITE_DBCONFIG_DQS_DML.
158281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
158282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLITE_DQS SQLITE_DBCONFIG_DQS_DDL SQLITE_DBCONFIG_DQS_DML
158283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ---------- ----------------------- -----------------------
158284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** undefined on on
158285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 3 on on
158286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2 on off
158287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 1 off on
158288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0 off off
158289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
158290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Legacy behavior is 3 (double-quoted string literals are allowed anywhere)
158291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and so that is the default. But developers are encouranged to use
158292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** -DSQLITE_DQS=0 (best) or -DSQLITE_DQS=1 (second choice) if possible.
158293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
158294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !defined(SQLITE_DQS)
158295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_DQS 3
158296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
158297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if (SQLITE_DQS&1)==1
158298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ | SQLITE_DqsDML
158299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
158300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if (SQLITE_DQS&2)==2
158301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ | SQLITE_DqsDDL
158302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
158303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
158197 158304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_DEFAULT_AUTOMATIC_INDEX) || SQLITE_DEFAULT_AUTOMATIC_INDEX
158198 158305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
| SQLITE_AutoIndex
158199 158306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
158200 158307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_DEFAULT_CKPTFULLFSYNC
158201 158308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
| SQLITE_CkptFullFSync
@@ -158242,11 +158349,11 @@
158242 158349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
158243 158350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
createCollation(db, sqlite3StrBINARY, SQLITE_UTF8, 0, binCollFunc, 0);
158244 158351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
createCollation(db, sqlite3StrBINARY, SQLITE_UTF16BE, 0, binCollFunc, 0);
158245 158352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
createCollation(db, sqlite3StrBINARY, SQLITE_UTF16LE, 0, binCollFunc, 0);
158246 158353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
createCollation(db, "NOCASE", SQLITE_UTF8, 0, nocaseCollatingFunc, 0);
158247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- createCollation(db, "RTRIM", SQLITE_UTF8, (void*)1, binCollFunc, 0);
158354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ createCollation(db, "RTRIM", SQLITE_UTF8, 0, rtrimCollFunc, 0);
158248 158355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ){
158249 158356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto opendb_out;
158250 158357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
158251 158358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* EVIDENCE-OF: R-08308-17224 The default collating function for all
158252 158359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** strings is BINARY.
@@ -175175,14 +175282,17 @@
175175 175282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWriter->aNodeWriter[i].iBlock = pWriter->iStart + i*pWriter->nLeafEst;
175176 175283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
175177 175284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
175178 175285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = &pWriter->aNodeWriter[nHeight];
175179 175286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode->iBlock = pWriter->iStart + pWriter->nLeafEst*nHeight;
175180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blobGrowBuffer(&pNode->block, MAX(nRoot, p->nNodeSize), &rc);
175287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blobGrowBuffer(&pNode->block,
175288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ MAX(nRoot, p->nNodeSize)+FTS3_NODE_PADDING, &rc
175289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
175181 175290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
175182 175291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(pNode->block.a, aRoot, nRoot);
175183 175292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode->block.n = nRoot;
175293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&pNode->block.a[nRoot], 0, FTS3_NODE_PADDING);
175184 175294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
175185 175295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
175186 175296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=nHeight; i>=0 && rc==SQLITE_OK; i--){
175187 175297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
NodeReader reader;
175188 175298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = &pWriter->aNodeWriter[i];
@@ -175198,14 +175308,17 @@
175198 175308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *aBlock = 0;
175199 175309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nBlock = 0;
175200 175310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = &pWriter->aNodeWriter[i-1];
175201 175311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode->iBlock = reader.iChild;
175202 175312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Fts3ReadBlock(p, reader.iChild, &aBlock, &nBlock, 0);
175203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blobGrowBuffer(&pNode->block, MAX(nBlock, p->nNodeSize), &rc);
175313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blobGrowBuffer(&pNode->block,
175314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ MAX(nBlock, p->nNodeSize)+FTS3_NODE_PADDING, &rc
175315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
175204 175316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
175205 175317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(pNode->block.a, aBlock, nBlock);
175206 175318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode->block.n = nBlock;
175319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&pNode->block.a[nBlock], 0, FTS3_NODE_PADDING);
175207 175320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
175208 175321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(aBlock);
175209 175322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
175210 175323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
175211 175324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -180252,11 +180365,11 @@
180252 180365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
180253 180366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pApnd ){
180254 180367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 iStart, iLabel;
180255 180368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
JsonNode *pNode;
180256 180369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStart = jsonParseAddNode(pParse, JSON_OBJECT, 2, 0);
180257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iLabel = jsonParseAddNode(pParse, JSON_STRING, i, zPath);
180370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iLabel = jsonParseAddNode(pParse, JSON_STRING, nKey, zKey);
180258 180371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPath += i;
180259 180372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = jsonLookupAppend(pParse, zPath, pApnd, pzErr);
180260 180373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->oom ) return 0;
180261 180374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode ){
180262 180375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot = &pParse->aNode[iRoot];
@@ -218891,11 +219004,11 @@
218891 219004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
218892 219005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
218893 219006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
218894 219007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
218895 219008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
218896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2019-06-13 14:07:41 f8696b60eec0dcacfe92d9a31cbf1436d674140e5447de0cd1c2f52bff6c2be4", -1, SQLITE_TRANSIENT);
219009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2019-07-08 13:45:02 8fb0c6d5a38e77aa4c5f394fb8af1b0c7c6a4790e932aabc213a3078ee9acaf6", -1, SQLITE_TRANSIENT);
218897 219010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
218898 219011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
218899 219012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
218900 219013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if zName is the extension on one of the shadow tables used
218901 219014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by this module.
@@ -223657,12 +223770,12 @@
223657 223770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
223658 223771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_CORE */
223659 223772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
223660 223773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
223661 223774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of stmt.c ************************************************/
223662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if __LINE__!=223662
223775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if __LINE__!=223775
223663 223776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#undef SQLITE_SOURCE_ID
223664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2019-06-13 14:07:41 f8696b60eec0dcacfe92d9a31cbf1436d674140e5447de0cd1c2f52bff6calt2"
223777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2019-07-08 13:45:02 8fb0c6d5a38e77aa4c5f394fb8af1b0c7c6a4790e932aabc213a3078ee9aalt2"
223665 223778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
223666 223779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Return the source-id for this library */
223667 223780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
223668 223781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************************** End of sqlite3.c ******************************/
223669 223782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!