@@ -452,11 +452,11 @@
452 452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453 453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
454 454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
455 455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION "3.39.0"
456 456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION_NUMBER 3039000
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2022-03-11 15:42:05 0606e8e93edb5de4d154f377dbf91f15295d25ca9013c0f1612ae6d63a0139ea"
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2022-03-23 10:04:52 43143ad131f17734fd2eff849e0a1bc2e26daf6a28c7e07d697d38732e6af5fc"
458 458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
459 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
460 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
461 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
462 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -5897,11 +5897,12 @@
5897 5897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5898 5898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_value_dup(V) interface makes a copy of the [sqlite3_value]
5899 5899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** object D and returns a pointer to that copy. ^The [sqlite3_value] returned
5900 5900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is a [protected sqlite3_value] object even if the input is not.
5901 5901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_value_dup(V) interface returns NULL if V is NULL or if a
5902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** memory allocation fails.
5902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** memory allocation fails. ^If V is a [pointer value], then the result
5903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of sqlite3_value_dup(V) is a NULL value.
5903 5904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5904 5905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_value_free(V) interface frees an [sqlite3_value] object
5905 5906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** previously obtained from [sqlite3_value_dup()]. ^If V is a NULL pointer
5906 5907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then sqlite3_value_free(V) is a harmless no-op.
5907 5908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -9858,12 +9859,12 @@
9858 9859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9859 9860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This API may only be used from within an [xBestIndex|xBestIndex method]
9860 9861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of a [virtual table] implementation. The result of calling this
9861 9862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** interface from outside of xBestIndex() is undefined and probably harmful.
9862 9863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ^The sqlite3_vtab_distinct() interface returns an integer that is
9864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** either 0, 1, or 2. The integer returned by sqlite3_vtab_distinct()
9864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^The sqlite3_vtab_distinct() interface returns an integer between 0 and
9865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 3. The integer returned by sqlite3_vtab_distinct()
9865 9866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** gives the virtual table additional information about how the query
9866 9867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** planner wants the output to be ordered. As long as the virtual table
9867 9868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** can meet the ordering requirements of the query planner, it may set
9868 9869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the "orderByConsumed" flag.
9869 9870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -9891,10 +9892,17 @@
9891 9892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** values in all "aOrderBy" columns to be returned, as long as all such rows
9892 9893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are adjacent. ^The virtual table may, if it chooses, omit extra rows
9893 9894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that have the same value for all columns identified by "aOrderBy".
9894 9895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^However omitting the extra rows is optional.
9895 9896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This mode is used for a DISTINCT query.
9897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <li value="3"><p>
9898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^(If the sqlite3_vtab_distinct() interface returns 3, that means
9899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that the query planner needs only distinct rows but it does need the
9900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** rows to be sorted.)^ ^The virtual table implementation is free to omit
9901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** rows that are identical in all aOrderBy columns, if it wants to, but
9902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** it is not required to omit any rows. This mode is used for queries
9903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that have both DISTINCT and ORDER BY clauses.
9896 9904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </ol>
9897 9905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9898 9906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^For the purposes of comparing virtual table output values to see if the
9899 9907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** values are same value for sorting purposes, two NULL values are considered
9900 9908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to be the same. In other words, the comparison operator is "IS"
@@ -39731,15 +39739,21 @@
39731 39739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ofst, /* First lock to acquire or release */
39732 39740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n, /* Number of locks to acquire or release */
39733 39741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags /* What to do with the lock */
39734 39742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
39735 39743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixFile *pDbFd = (unixFile*)fd; /* Connection holding shared memory */
39736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unixShm *p = pDbFd->pShm; /* The shared memory being locked */
39737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unixShmNode *pShmNode = p->pShmNode; /* The underlying file iNode */
39744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unixShm *p; /* The shared memory being locked */
39745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unixShmNode *pShmNode; /* The underlying file iNode */
39738 39746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK; /* Result code */
39739 39747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 mask; /* Mask of locks to take or release */
39740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *aLock = pShmNode->aLock;
39748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *aLock;
39749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
39750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p = pDbFd->pShm;
39751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p==0 ) return SQLITE_IOERR_SHMLOCK;
39752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pShmNode = p->pShmNode;
39753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(pShmNode==0) ) return SQLITE_IOERR_SHMLOCK;
39754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aLock = pShmNode->aLock;
39741 39755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
39742 39756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pShmNode==pDbFd->pInode->pShmNode );
39743 39757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pShmNode->pInode==pDbFd->pInode );
39744 39758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ofst>=0 && ofst+n<=SQLITE_SHM_NLOCK );
39745 39759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( n>=1 );
@@ -47026,14 +47040,18 @@
47026 47040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags /* What to do with the lock */
47027 47041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
47028 47042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
winFile *pDbFd = (winFile*)fd; /* Connection holding shared memory */
47029 47043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
winShm *p = pDbFd->pShm; /* The shared memory being locked */
47030 47044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
winShm *pX; /* For looping over all siblings */
47031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- winShmNode *pShmNode = p->pShmNode;
47045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ winShmNode *pShmNode;
47032 47046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK; /* Result code */
47033 47047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 mask; /* Mask of locks to take or release */
47034 47048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
47049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p==0 ) return SQLITE_IOERR_SHMLOCK;
47050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pShmNode = p->pShmNode;
47051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(pShmNode==0) ) return SQLITE_IOERR_SHMLOCK;
47052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
47035 47053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ofst>=0 && ofst+n<=SQLITE_SHM_NLOCK );
47036 47054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( n>=1 );
47037 47055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( flags==(SQLITE_SHM_LOCK | SQLITE_SHM_SHARED)
47038 47056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| flags==(SQLITE_SHM_LOCK | SQLITE_SHM_EXCLUSIVE)
47039 47057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| flags==(SQLITE_SHM_UNLOCK | SQLITE_SHM_SHARED)
@@ -50959,12 +50977,11 @@
50959 50977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
50960 50978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Make sure the page is marked as dirty. If it isn't dirty already,
50961 50979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** make it so.
50962 50980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
50963 50981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3PcacheMakeDirty(PgHdr *p){
50964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->nRef>0 || p->pCache->bPurgeable==0 );
50965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( p->nRef==0 );
50982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->nRef>0 );
50966 50983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3PcachePageSanity(p) );
50967 50984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->flags & (PGHDR_CLEAN|PGHDR_DONT_WRITE) ){ /*OPTIMIZATION-IF-FALSE*/
50968 50985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags &= ~PGHDR_DONT_WRITE;
50969 50986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->flags & PGHDR_CLEAN ){
50970 50987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags ^= (PGHDR_DIRTY|PGHDR_CLEAN);
@@ -75197,28 +75214,10 @@
75197 75214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned char *newCell = 0;
75198 75215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75199 75216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (flags & (BTREE_SAVEPOSITION|BTREE_APPEND|BTREE_PREFORMAT))==flags );
75200 75217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (flags & BTREE_PREFORMAT)==0 || seekResult || pCur->pKeyInfo==0 );
75201 75218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pCur->eState==CURSOR_FAULT ){
75203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pCur->skipNext!=SQLITE_OK );
75204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return pCur->skipNext;
75205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
75206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
75207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( cursorOwnsBtShared(pCur) );
75208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (pCur->curFlags & BTCF_WriteFlag)!=0
75209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && pBt->inTransaction==TRANS_WRITE
75210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (pBt->btsFlags & BTS_READ_ONLY)==0 );
75211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( hasSharedCacheTableLock(p, pCur->pgnoRoot, pCur->pKeyInfo!=0, 2) );
75212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
75213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Assert that the caller has been consistent. If this cursor was opened
75214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** expecting an index b-tree, then the caller should be inserting blob
75215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** keys with no associated data. If the cursor was opened expecting an
75216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** intkey table, the caller should be inserting integer keys with a
75217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** blob of associated data. */
75218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (flags & BTREE_PREFORMAT) || (pX->pKey==0)==(pCur->pKeyInfo==0) );
75219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
75220 75219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Save the positions of any other cursors open on this table.
75221 75220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
75222 75221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** In some cases, the call to btreeMoveto() below is a no-op. For
75223 75222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** example, when inserting data into a table with auto-generated integer
75224 75223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** keys, the VDBE layer invokes sqlite3BtreeLast() to figure out the
@@ -75239,10 +75238,33 @@
75239 75238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** set the flag, load the schema, and then unset the flag. */
75240 75239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
75241 75240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75242 75241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75243 75242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Ensure that the cursor is not in the CURSOR_FAULT state and that it
75244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** points to a valid cell.
75245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
75246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur->eState>=CURSOR_REQUIRESEEK ){
75247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pCur->eState==CURSOR_REQUIRESEEK );
75248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pCur->eState==CURSOR_FAULT );
75249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = moveToRoot(pCur);
75250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc && rc!=SQLITE_EMPTY ) return rc;
75251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
75252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
75253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( cursorOwnsBtShared(pCur) );
75254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pCur->curFlags & BTCF_WriteFlag)!=0
75255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pBt->inTransaction==TRANS_WRITE
75256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pBt->btsFlags & BTS_READ_ONLY)==0 );
75257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( hasSharedCacheTableLock(p, pCur->pgnoRoot, pCur->pKeyInfo!=0, 2) );
75258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
75259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Assert that the caller has been consistent. If this cursor was opened
75260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** expecting an index b-tree, then the caller should be inserting blob
75261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** keys with no associated data. If the cursor was opened expecting an
75262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** intkey table, the caller should be inserting integer keys with a
75263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** blob of associated data. */
75264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (flags & BTREE_PREFORMAT) || (pX->pKey==0)==(pCur->pKeyInfo==0) );
75265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
75244 75266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->pKeyInfo==0 ){
75245 75267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pX->pKey==0 );
75246 75268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If this is an insert into a table b-tree, invalidate any incrblob
75247 75269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cursors open on the row being replaced */
75248 75270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->hasIncrblobCur ){
@@ -75327,18 +75349,18 @@
75327 75349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return btreeOverwriteCell(pCur, &x2);
75328 75350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75329 75351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75330 75352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75331 75353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->eState==CURSOR_VALID
75332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || (pCur->eState==CURSOR_INVALID && loc)
75333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || CORRUPT_DB );
75354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (pCur->eState==CURSOR_INVALID && loc) );
75334 75355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75335 75356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage = pCur->pPage;
75336 75357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->intKey || pX->nKey>=0 || (flags & BTREE_PREFORMAT) );
75337 75358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->leaf || !pPage->intKey );
75338 75359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPage->nFree<0 ){
75339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pCur->eState>CURSOR_INVALID ){
75360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(pCur->eState>CURSOR_INVALID) ){
75361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ^^^^^--- due to the moveToRoot() call above */
75340 75362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_CORRUPT_BKPT;
75341 75363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
75342 75364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = btreeComputeFreeSpace(pPage);
75343 75365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75344 75366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
@@ -75615,16 +75637,20 @@
75615 75637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pBt->btsFlags & BTS_READ_ONLY)==0 );
75616 75638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->curFlags & BTCF_WriteFlag );
75617 75639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( hasSharedCacheTableLock(p, pCur->pgnoRoot, pCur->pKeyInfo!=0, 2) );
75618 75640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !hasReadConflicts(p, pCur->pgnoRoot) );
75619 75641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (flags & ~(BTREE_SAVEPOSITION | BTREE_AUXDELETE))==0 );
75620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pCur->eState==CURSOR_REQUIRESEEK ){
75621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = btreeRestoreCursorPosition(pCur);
75622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( rc!=SQLITE_OK || CORRUPT_DB || pCur->eState==CURSOR_VALID );
75623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc || pCur->eState!=CURSOR_VALID ) return rc;
75642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur->eState!=CURSOR_VALID ){
75643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur->eState>=CURSOR_REQUIRESEEK ){
75644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = btreeRestoreCursorPosition(pCur);
75645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( rc!=SQLITE_OK || CORRUPT_DB || pCur->eState==CURSOR_VALID );
75646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc || pCur->eState!=CURSOR_VALID ) return rc;
75647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
75648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_BKPT;
75649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
75624 75650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( CORRUPT_DB || pCur->eState==CURSOR_VALID );
75651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pCur->eState==CURSOR_VALID );
75626 75652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75627 75653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCellDepth = pCur->iPage;
75628 75654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCellIdx = pCur->ix;
75629 75655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage = pCur->pPage;
75630 75656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPage->nCell<=iCellIdx ){
@@ -75652,11 +75678,12 @@
75652 75678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** bPreserve==2 Cursor won't move. Set CURSOR_SKIPNEXT.
75653 75679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
75654 75680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bPreserve = (flags & BTREE_SAVEPOSITION)!=0;
75655 75681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bPreserve ){
75656 75682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pPage->leaf
75657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || (pPage->nFree+pPage->xCellSize(pPage,pCell)+2)>(int)(pBt->usableSize*2/3)
75683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (pPage->nFree+pPage->xCellSize(pPage,pCell)+2) >
75684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (int)(pBt->usableSize*2/3)
75658 75685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pPage->nCell==1 /* See dbfuzz001.test for a test case */
75659 75686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
75660 75687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A b-tree rebalance will be required after deleting this entry.
75661 75688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Save the cursor key. */
75662 75689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = saveCursorKey(pCur);
@@ -82987,11 +83014,11 @@
82987 83014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (!deferred && p->nFkConstraint>0)
82988 83015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
82989 83016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = SQLITE_CONSTRAINT_FOREIGNKEY;
82990 83017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->errorAction = OE_Abort;
82991 83018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeError(p, "FOREIGN KEY constraint failed");
82992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_ERROR;
83019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CONSTRAINT_FOREIGNKEY;
82993 83020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82994 83021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
82995 83022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82996 83023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
82997 83024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -85578,10 +85605,13 @@
85578 85605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->flags |= MEM_Ephem;
85579 85606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3VdbeMemMakeWriteable(pNew)!=SQLITE_OK ){
85580 85607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ValueFree(pNew);
85581 85608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = 0;
85582 85609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pNew->flags & MEM_Null ){
85611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Do not duplicate pointer values */
85612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->flags &= ~(MEM_Term|MEM_Subtype);
85583 85613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85584 85614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pNew;
85585 85615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85586 85616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
85587 85617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Destroy an sqlite3_value object previously obtained from
@@ -125318,11 +125348,11 @@
125318 125348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OomFault(db);
125319 125349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
125320 125350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
125321 125351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
125322 125352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=j=0; i<pTab->nCol; i++){
125323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pTab->aCol[i].affinity!=0 );
125353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTab->aCol[i].affinity!=0 || sqlite3VdbeParser(v)->nErr>0 );
125324 125354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTab->aCol[i].colFlags & COLFLAG_VIRTUAL)==0 ){
125325 125355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zColAff[j++] = pTab->aCol[i].affinity;
125326 125356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
125327 125357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
125328 125358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
@@ -128783,10 +128813,15 @@
128783 128813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*vtab_rhs_value)(sqlite3_index_info*,int,sqlite3_value**);
128784 128814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*vtab_distinct)(sqlite3_index_info*);
128785 128815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*vtab_in)(sqlite3_index_info*,int,int);
128786 128816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*vtab_in_first)(sqlite3_value*,sqlite3_value**);
128787 128817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*vtab_in_next)(sqlite3_value*,sqlite3_value**);
128818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Version 3.39.0 and later */
128819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int (*deserialize)(sqlite3*,const char*,unsigned char*,
128820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_int64,sqlite3_int64,unsigned);
128821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned char *(*serialize)(sqlite3*,const char *,sqlite3_int64*,
128822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int);
128788 128823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
128789 128824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
128790 128825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
128791 128826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the function signature used for all extension entry points. It
128792 128827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is also defined in the file "loadext.c".
@@ -129101,10 +129136,14 @@
129101 129136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_vtab_rhs_value sqlite3_api->vtab_rhs_value
129102 129137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_vtab_distinct sqlite3_api->vtab_distinct
129103 129138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_vtab_in sqlite3_api->vtab_in
129104 129139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_vtab_in_first sqlite3_api->vtab_in_first
129105 129140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_vtab_in_next sqlite3_api->vtab_in_next
129141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_DESERIALIZE
129142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define sqlite3_deserialize sqlite3_api->deserialize
129143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define sqlite3_serialize sqlite3_api->serialize
129144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
129106 129145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
129107 129146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
129108 129147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
129109 129148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This case when the file really is being compiled as a loadable
129110 129149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** extension */
@@ -129596,11 +129635,19 @@
129596 129635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_error_offset,
129597 129636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab_rhs_value,
129598 129637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab_distinct,
129599 129638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab_in,
129600 129639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab_in_first,
129601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_vtab_in_next
129640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_vtab_in_next,
129641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Version 3.39.0 and later */
129642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_DESERIALIZE
129643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_deserialize,
129644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_serialize
129645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
129646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0,
129647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0
129648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
129602 129649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
129603 129650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
129604 129651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* True if x is the directory separator character
129605 129652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
129606 129653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_OS_WIN
@@ -134449,11 +134496,11 @@
134449 134496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** how to process the DISTINCT keyword, to simplify passing that information
134450 134497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** into the selectInnerLoop() routine.
134451 134498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
134452 134499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct DistinctCtx DistinctCtx;
134453 134500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct DistinctCtx {
134454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 isTnct; /* True if the DISTINCT keyword is present */
134501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 isTnct; /* 0: Not distinct. 1: DISTICT 2: DISTINCT and ORDER BY */
134455 134502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eTnctType; /* One of the WHERE_DISTINCT_* operators */
134456 134503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tabTnct; /* Ephemeral table used for DISTINCT processing */
134457 134504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrTnct; /* Address of OP_OpenEphemeral opcode for tabTnct */
134458 134505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
134459 134506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -141249,10 +141296,11 @@
141249 141296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->selFlags |= SF_Aggregate;
141250 141297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Notice that even thought SF_Distinct has been cleared from p->selFlags,
141251 141298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the sDistinct.isTnct is still set. Hence, isTnct represents the
141252 141299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** original setting of the SF_Distinct flag, not the current setting */
141253 141300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sDistinct.isTnct );
141301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sDistinct.isTnct = 2;
141254 141302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
141255 141303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SELECTTRACE_ENABLED
141256 141304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3SelectTrace & 0x400 ){
141257 141305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SELECTTRACE(0x400,pParse,p,("Transform DISTINCT into GROUP BY:\n"));
141258 141306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewSelect(0, p, 0);
@@ -141592,11 +141640,12 @@
141592 141640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the right order to begin with.
141593 141641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
141594 141642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset);
141595 141643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SELECTTRACE(1,pParse,p,("WhereBegin\n"));
141596 141644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pGroupBy, pDistinct,
141597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, (WHERE_GROUPBY|(orderByGrp ? WHERE_SORTBYGROUP : 0)|distFlag), 0
141645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, (sDistinct.isTnct==2 ? WHERE_DISTINCTBY : WHERE_GROUPBY)
141646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ | (orderByGrp ? WHERE_SORTBYGROUP : 0) | distFlag, 0
141598 141647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
141599 141648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo==0 ){
141600 141649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pDistinct);
141601 141650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto select_end;
141602 141651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -141774,11 +141823,11 @@
141774 141823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
resetAccumulator(pParse, pAggInfo);
141775 141824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, iUseFlag);
141776 141825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "indicate accumulator empty"));
141777 141826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regReset);
141778 141827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
141779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( eDist!=WHERE_DISTINCT_NOOP ){
141828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( distFlag!=0 && eDist!=WHERE_DISTINCT_NOOP ){
141780 141829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_func *pF = &pAggInfo->aFunc[0];
141781 141830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr);
141782 141831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
141783 141832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} /* endif pGroupBy. Begin aggregate queries without GROUP BY: */
141784 141833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else {
@@ -142248,15 +142297,14 @@
142248 142297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& 0==sqlite3StrICmp(pTrig->table, pTab->zName)
142249 142298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pTrig->pTabSchema!=pTmpSchema
142250 142299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
142251 142300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTrig->pNext = pList;
142252 142301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pList = pTrig;
142253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( pTrig->op==TK_RETURNING
142302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pTrig->op==TK_RETURNING ){
142254 142303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
142255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && pParse->db->pVtabCtx==0
142304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->db->pVtabCtx==0 );
142256 142305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
142257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
142258 142306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->bReturning );
142259 142307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( &(pParse->u1.pReturning->retTrig) == pTrig );
142260 142308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTrig->table = pTab->zName;
142261 142309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTrig->pTabSchema = pTab->pSchema;
142262 142310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTrig->pNext = pList;
@@ -146506,10 +146554,11 @@
146506 146554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pCtx->pTab;
146507 146555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( IsVirtual(pTab) );
146508 146556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146509 146557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ParseObjectInit(&sParse, db);
146510 146558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sParse.eParseMode = PARSE_MODE_DECLARE_VTAB;
146559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sParse.disableTriggers = 1;
146511 146560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* We should never be able to reach this point while loading the
146512 146561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** schema. Nevertheless, defend against that (turn off db->init.busy)
146513 146562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in case a bug arises. */
146514 146563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db->init.busy==0 );
146515 146564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
initBusy = db->init.busy;
@@ -153429,12 +153478,14 @@
153429 153478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* No matches cause a break out of the loop */
153430 153479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
153431 153480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
153432 153481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i==n ){
153433 153482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nOrderBy = n;
153434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pWInfo->wctrlFlags & (WHERE_GROUPBY|WHERE_DISTINCTBY)) ){
153435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- eDistinct = 1 + ((pWInfo->wctrlFlags & WHERE_DISTINCTBY)!=0);
153483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pWInfo->wctrlFlags & WHERE_DISTINCTBY) ){
153484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eDistinct = 2 + ((pWInfo->wctrlFlags & WHERE_SORTBYGROUP)!=0);
153485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pWInfo->wctrlFlags & WHERE_GROUPBY ){
153486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eDistinct = 1;
153436 153487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
153437 153488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
153438 153489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
153439 153490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153440 153491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Allocate the sqlite3_index_info structure
@@ -155986,13 +156037,11 @@
155986 156037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
155987 156038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if ORDER BY clause may be handled as DISTINCT.
155988 156039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
155989 156040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_vtab_distinct(sqlite3_index_info *pIdxInfo){
155990 156041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HiddenIndexInfo *pHidden = (HiddenIndexInfo*)&pIdxInfo[1];
155991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pHidden->eDistinct==0
155992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || pHidden->eDistinct==1
155993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || pHidden->eDistinct==2 );
156042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pHidden->eDistinct>=0 && pHidden->eDistinct<=3 );
155994 156043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pHidden->eDistinct;
155995 156044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
155996 156045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
155997 156046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if (defined(SQLITE_ENABLE_DBPAGE_VTAB) || defined(SQLITE_TEST)) \
155998 156047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !defined(SQLITE_OMIT_VIRTUALTABLE)
@@ -156447,11 +156496,13 @@
156447 156496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( wctrlFlags & WHERE_ORDERBY_LIMIT ) continue;
156448 156497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
156449 156498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop = pLast;
156450 156499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156451 156500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){
156452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pLoop->u.vtab.isOrdered && (wctrlFlags & WHERE_DISTINCTBY)==0 ){
156501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pLoop->u.vtab.isOrdered
156502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ((wctrlFlags&(WHERE_DISTINCTBY|WHERE_SORTBYGROUP))!=WHERE_DISTINCTBY)
156503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
156453 156504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
obSat = obDone;
156454 156505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156455 156506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
156456 156507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( wctrlFlags & WHERE_DISTINCTBY ){
156457 156508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop->u.btree.nDistinctCol = 0;
@@ -156714,11 +156765,11 @@
156714 156765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
156715 156766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SELECT * FROM t1 GROUP BY x,y ORDER BY x,y; -- IsSorted()==1
156716 156767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SELECT * FROM t1 GROUP BY y,x ORDER BY y,x; -- IsSorted()==0
156717 156768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
156718 156769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3WhereIsSorted(WhereInfo *pWInfo){
156719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pWInfo->wctrlFlags & WHERE_GROUPBY );
156770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pWInfo->wctrlFlags & (WHERE_GROUPBY|WHERE_DISTINCTBY) );
156720 156771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWInfo->wctrlFlags & WHERE_SORTBYGROUP );
156721 156772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pWInfo->sorted;
156722 156773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156723 156774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156724 156775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef WHERETRACE_ENABLED
@@ -157115,16 +157166,16 @@
157115 157166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->eDistinct = WHERE_DISTINCT_ORDERED;
157116 157167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
157117 157168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
157118 157169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->bOrderedInnerLoop = 0;
157119 157170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo->pOrderBy ){
157171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWInfo->nOBSat = pFrom->isOrdered;
157120 157172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo->wctrlFlags & WHERE_DISTINCTBY ){
157121 157173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFrom->isOrdered==pWInfo->pOrderBy->nExpr ){
157122 157174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->eDistinct = WHERE_DISTINCT_ORDERED;
157123 157175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
157124 157176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
157125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pWInfo->nOBSat = pFrom->isOrdered;
157126 157177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->revMask = pFrom->revLoop;
157127 157178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo->nOBSat<=0 ){
157128 157179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->nOBSat = 0;
157129 157180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nLoop>0 ){
157130 157181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 wsFlags = pFrom->aLoop[nLoop-1]->wsFlags;
@@ -158111,10 +158162,30 @@
158111 158162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (db->flags & SQLITE_VdbeAddopTrace)==0 ) return;
158112 158163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbePrintOp(0, pc, pOp);
158113 158164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
158114 158165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
158115 158166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
158168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
158169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return true if cursor iCur is opened by instruction k of the
158170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** bytecode. Used inside of assert() only.
158171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
158172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int cursorIsOpen(Vdbe *v, int iCur, int k){
158173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( k>=0 ){
158174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeOp *pOp = sqlite3VdbeGetOp(v,k--);
158175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p1!=iCur ) continue;
158176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_Close ) return 0;
158177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_OpenRead ) return 1;
158178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_OpenWrite ) return 1;
158179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_OpenDup ) return 1;
158180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_OpenAutoindex ) return 1;
158181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_OpenEphemeral ) return 1;
158182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
158183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
158184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
158185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* SQLITE_DEBUG */
158186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
158116 158187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
158117 158188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate the end of the WHERE loop. See comments on
158118 158189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3WhereBegin() for additional information.
158119 158190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
158120 158191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
@@ -158363,30 +158434,44 @@
158363 158434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pOp->opcode==OP_Offset
158364 158435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
158365 158436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
158366 158437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int x = pOp->p2;
158367 158438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIdx->pTable==pTab );
158439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
158440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_Offset ){
158441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Do not need to translate the column number */
158442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
158443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
158368 158444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !HasRowid(pTab) ){
158369 158445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pPk = sqlite3PrimaryKeyIndex(pTab);
158370 158446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x = pPk->aiColumn[x];
158371 158447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( x>=0 );
158372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
158373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( pOp->opcode==OP_Offset ){
158374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Do not need to translate the column number */
158375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
158376 158448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
158377 158449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( x!=sqlite3StorageColumnToTable(pTab,x) );
158378 158450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x = sqlite3StorageColumnToTable(pTab,x);
158379 158451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
158380 158452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x = sqlite3TableColumnToIndex(pIdx, x);
158381 158453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( x>=0 ){
158382 158454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p2 = x;
158383 158455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p1 = pLevel->iIdxCur;
158384 158456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OpcodeRewriteTrace(db, k, pOp);
158457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
158458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Unable to translate the table reference into an index
158459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** reference. Verify that this is harmless - that the
158460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** table being referenced really is open.
158461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
158462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
158463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
158464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || cursorIsOpen(v,pOp->p1,k)
158465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pOp->opcode==OP_Offset
158466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
158467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
158468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
158469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || cursorIsOpen(v,pOp->p1,k)
158470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
158471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
158385 158472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
158386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 || x>=0
158387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || pWInfo->eOnePass );
158388 158473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pOp->opcode==OP_Rowid ){
158389 158474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p1 = pLevel->iIdxCur;
158390 158475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->opcode = OP_IdxRowid;
158391 158476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OpcodeRewriteTrace(db, k, pOp);
158392 158477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pOp->opcode==OP_IfNullRow ){
@@ -234607,11 +234692,11 @@
234607 234692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
234608 234693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
234609 234694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
234610 234695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
234611 234696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
234612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2022-03-11 15:42:05 0606e8e93edb5de4d154f377dbf91f15295d25ca9013c0f1612ae6d63a0139ea", -1, SQLITE_TRANSIENT);
234697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2022-03-14 20:31:57 387ab17b8a0a4b87903aab52abc7da79098b882aff2ab687a554d5794e9d183e", -1, SQLITE_TRANSIENT);
234613 234698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
234614 234699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
234615 234700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
234616 234701 { 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
234617 234702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by this module.
234618 234703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!