@@ -135,11 +135,11 @@
135 135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
136 136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
137 137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
138 138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION "3.8.3"
139 139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION_NUMBER 3008003
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2014-01-18 15:22:53 2ad4583c0cc7988f0dfe78fd0a2eb0fdb92d835a"
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2014-01-21 00:19:43 cc1cb3217800ff666a00bf4f544a5a477589bc1b"
141 141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
142 142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
143 143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
144 144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version, sqlite3_sourceid
145 145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -8200,10 +8200,11 @@
8200 8200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TK_AGG_FUNCTION 155
8201 8201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TK_AGG_COLUMN 156
8202 8202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TK_UMINUS 157
8203 8203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TK_UPLUS 158
8204 8204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TK_REGISTER 159
8205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define TK_LEVEL 160
8205 8206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8206 8207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of parse.h ***********************************************/
8207 8208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in sqliteInt.h ******************/
8208 8209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <stdio.h>
8209 8210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <stdlib.h>
@@ -10759,11 +10760,10 @@
10759 10760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_Ephemeral 0x02 /* An ephemeral table */
10760 10761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_HasPrimaryKey 0x04 /* Table has a primary key */
10761 10762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_Autoincrement 0x08 /* Integer primary key is autoincrement */
10762 10763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_Virtual 0x10 /* Is a virtual table */
10763 10764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_WithoutRowid 0x20 /* No rowid used. PRIMARY KEY is the key */
10764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define TF_Recursive 0x40 /* Recursive reference within CTE */
10765 10765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10766 10766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10767 10767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10768 10768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Test to see whether or not a table is a virtual table. This is
10769 10769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** done as a macro so that it will be optimized out when virtual
@@ -11430,10 +11430,12 @@
11430 11430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_AllowAgg 0x01 /* Aggregate functions are allowed here */
11431 11431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_HasAgg 0x02 /* One or more aggregate functions seen */
11432 11432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_IsCheck 0x04 /* True if resolving names in a CHECK constraint */
11433 11433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_InAggFunc 0x08 /* True if analyzing arguments to an agg func */
11434 11434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NC_PartIdx 0x10 /* True if resolving a partial index WHERE */
11435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define NC_Recursive 0x20 /* Resolvingn a recursive CTE definition */
11436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define NC_UsesLevel 0x40 /* The LEVEL pseudo-column has been seen */
11435 11437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11436 11438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
11437 11439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** An instance of the following structure contains all information
11438 11440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** needed to generate code for a single SELECT statement.
11439 11441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -11487,10 +11489,11 @@
11487 11489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_Values 0x0080 /* Synthesized from VALUES clause */
11488 11490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_Materialize 0x0100 /* Force materialization of views */
11489 11491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_NestedFrom 0x0200 /* Part of a parenthesized FROM clause */
11490 11492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_MaybeConvert 0x0400 /* Need convertCompoundSelectToSubquery() */
11491 11493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_Recursive 0x0800 /* The recursive part of a recursive CTE */
11494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SF_UsesLevel 0x1000 /* Uses the LEVEL pseudo-column */
11492 11495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11493 11496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11494 11497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
11495 11498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The results of a select can be distributed in several ways. The
11496 11499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "SRT" prefix means "SELECT Result Type".
@@ -11693,10 +11696,11 @@
11693 11696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table **apVtabLock; /* Pointer to virtual tables needing locking */
11694 11697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
11695 11698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pZombieTab; /* List of Table objects to delete after code gen */
11696 11699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TriggerPrg *pTriggerPrg; /* Linked list of coded triggers */
11697 11700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
With *pWith; /* Current WITH clause, or NULL */
11701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int regLevel; /* Register holding the LEVEL variable */
11698 11702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bFreeWith; /* True if pWith should be freed with parser */
11699 11703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
11700 11704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11701 11705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
11702 11706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if currently inside an sqlite3_declare_vtab() call.
@@ -54364,11 +54368,11 @@
54364 54368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void assertCellInfo(BtCursor *pCur){
54365 54369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CellInfo info;
54366 54370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iPage = pCur->iPage;
54367 54371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&info, 0, sizeof(info));
54368 54372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
btreeParseCell(pCur->apPage[iPage], pCur->aiIdx[iPage], &info);
54369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( memcmp(&info, &pCur->info, sizeof(info))==0 );
54373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB || memcmp(&info, &pCur->info, sizeof(info))==0 );
54370 54374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
54371 54375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
54372 54376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define assertCellInfo(x)
54373 54377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
54374 54378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef _MSC_VER
@@ -55000,30 +55004,28 @@
55000 55004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
55001 55005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->eState = CURSOR_INVALID;
55002 55006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
55003 55007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55004 55008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->iPage = 0;
55005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
55006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If pCur->pKeyInfo is not NULL, then the caller that opened this cursor
55007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** expected to open it on an index b-tree. Otherwise, if pKeyInfo is
55008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** NULL, the caller expects a table b-tree. If this is not the case,
55009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** return an SQLITE_CORRUPT error. */
55010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pCur->apPage[0]->intKey==1 || pCur->apPage[0]->intKey==0 );
55011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pCur->pKeyInfo==0)!=pCur->apPage[0]->intKey ){
55012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
55013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
55014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
55015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
55016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Assert that the root page is of the correct type. This must be the
55017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** case as the call to this function that loaded the root-page (either
55018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** this call or a previous invocation) would have detected corruption
55019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if the assumption were not true, and it is not possible for the flags
55020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** byte to have been modified while this cursor is holding a reference
55021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to the page. */
55009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55022 55010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot = pCur->apPage[0];
55023 55011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRoot->pgno==pCur->pgnoRoot );
55024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pRoot->isInit && (pCur->pKeyInfo==0)==pRoot->intKey );
55012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
55013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If pCur->pKeyInfo is not NULL, then the caller that opened this cursor
55014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** expected to open it on an index b-tree. Otherwise, if pKeyInfo is
55015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** NULL, the caller expects a table b-tree. If this is not the case,
55016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** return an SQLITE_CORRUPT error.
55017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
55018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Earlier versions of SQLite assumed that this test could not fail
55019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if the root page was already loaded when this function was called (i.e.
55020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if pCur->iPage>=0). But this is not so if the database is corrupted
55021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in such a way that page pRoot is linked into a second b-tree table
55022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (or the freelist). */
55023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRoot->intKey==1 || pRoot->intKey==0 );
55024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRoot->isInit==0 || (pCur->pKeyInfo==0)!=pRoot->intKey ){
55025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_BKPT;
55026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55025 55027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55026 55028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->aiIdx[0] = 0;
55027 55029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->info.nSize = 0;
55028 55030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->atLast = 0;
55029 55031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->validNKey = 0;
@@ -55861,10 +55863,11 @@
55861 55863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
releasePage(pTrunk);
55862 55864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
releasePage(pPrevTrunk);
55863 55865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
55864 55866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3PagerPageRefcount((*ppPage)->pDbPage)>1 ){
55865 55867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
releasePage(*ppPage);
55868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *ppPage = 0;
55866 55869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
55867 55870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55868 55871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(*ppPage)->isInit = 0;
55869 55872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
55870 55873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppPage = 0;
@@ -75127,11 +75130,11 @@
75127 75130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db; /* The database connection */
75128 75131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct SrcList_item *pItem; /* Use for looping over pSrcList items */
75129 75132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct SrcList_item *pMatch = 0; /* The matching pSrcList item */
75130 75133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
NameContext *pTopNC = pNC; /* First namecontext in the list */
75131 75134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Schema *pSchema = 0; /* Schema of the expression */
75132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int isTrigger = 0; /* True if resolved to a trigger column */
75135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 newOp = TK_COLUMN; /* pExpr->op after resolving name */
75133 75136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = 0; /* Table hold the row */
75134 75137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Column *pCol; /* A column of pTab */
75135 75138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75136 75139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNC ); /* the name context cannot be NULL. */
75137 75140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zCol ); /* The Z in X.Y.Z cannot be NULL */
@@ -75167,10 +75170,26 @@
75167 75170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75168 75171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Start at the inner-most context and move outward until a match is found */
75169 75172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( pNC && cnt==0 ){
75170 75173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pEList;
75171 75174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrcList = pNC->pSrcList;
75175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
75176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_CTE
75177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The identifier "LEVEL", with a table or database qualifier and within a
75178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** recursive common table expression, resolves to the special LEVEL pseudo-column.
75179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** To access table names called "level", add a table qualifier.
75180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
75181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pNC->ncFlags&NC_Recursive)!=0 && zTab==0 && sqlite3_stricmp(zCol,"level")==0 ){
75182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( cnt==0 );
75183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cnt = 1;
75184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ newOp = TK_LEVEL;
75185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->iColumn = -1;
75186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->affinity = SQLITE_AFF_INTEGER;
75187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNC->ncFlags |= NC_UsesLevel;
75188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
75189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
75190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
75172 75191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75173 75192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSrcList ){
75174 75193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pItem=pSrcList->a; i<pSrcList->nSrc; i++, pItem++){
75175 75194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pItem->pTab;
75176 75195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab!=0 && pTab->zName!=0 );
@@ -75272,11 +75291,11 @@
75272 75291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iCol==32 );
75273 75292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->newmask |= (iCol>=32 ? 0xffffffff : (((u32)1)<<iCol));
75274 75293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75275 75294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn = (i16)iCol;
75276 75295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pTab = pTab;
75277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isTrigger = 1;
75296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ newOp = TK_TRIGGER;
75278 75297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75279 75298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75280 75299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75281 75300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_TRIGGER) */
75282 75301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -75396,15 +75415,15 @@
75396 75415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
75397 75416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pExpr->pLeft);
75398 75417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pLeft = 0;
75399 75418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pExpr->pRight);
75400 75419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pRight = 0;
75401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pExpr->op = (isTrigger ? TK_TRIGGER : TK_COLUMN);
75420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->op = newOp;
75402 75421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lookupname_end:
75403 75422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cnt==1 ){
75404 75423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNC!=0 );
75405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->op!=TK_AS ){
75424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op!=TK_AS && pExpr->op!=TK_LEVEL ){
75406 75425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3AuthRead(pParse, pExpr, pSchema, pNC->pSrcList);
75407 75426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75408 75427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Increment the nRef value on all name contexts from TopNC up to
75409 75428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the point where the name matched. */
75410 75429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(;;){
@@ -76097,10 +76116,11 @@
76097 76116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76098 76117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Set up the local name-context to pass to sqlite3ResolveExprNames() to
76099 76118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** resolve the result-set expression list.
76100 76119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
76101 76120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sNC.ncFlags = NC_AllowAgg;
76121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->selFlags & SF_Recursive ) sNC.ncFlags |= NC_Recursive;
76102 76122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sNC.pSrcList = p->pSrc;
76103 76123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sNC.pNext = pOuterNC;
76104 76124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76105 76125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Resolve names in the result set. */
76106 76126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pEList = p->pEList;
@@ -76175,10 +76195,14 @@
76175 76195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"the GROUP BY clause");
76176 76196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Abort;
76177 76197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
76178 76198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
76179 76199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
76200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sNC.ncFlags & NC_UsesLevel ){
76201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->selFlags |= SF_UsesLevel;
76202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
76203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sNC.ncFlags &= ~(NC_Recursive|NC_UsesLevel);
76180 76204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76181 76205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Advance to the next term of the compound
76182 76206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
76183 76207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->pPrior;
76184 76208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCompound++;
@@ -78811,10 +78835,16 @@
78811 78835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inReg = sqlite3ExprCodeGetColumn(pParse, pExpr->pTab,
78812 78836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn, iTab, target,
78813 78837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op2);
78814 78838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
78815 78839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_CTE
78841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case TK_LEVEL: {
78842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ inReg = pParse->regLevel;
78843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
78844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
78845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
78816 78846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_INTEGER: {
78817 78847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeInteger(pParse, pExpr, 0, target);
78818 78848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
78819 78849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78820 78850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_FLOATING_POINT
@@ -79434,10 +79464,11 @@
79434 79464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprCodeTemp(Parse *pParse, Expr *pExpr, int *pReg){
79435 79465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r2;
79436 79466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = sqlite3ExprSkipCollate(pExpr);
79437 79467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ConstFactorOk(pParse)
79438 79468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pExpr->op!=TK_REGISTER
79469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pExpr->op!=TK_LEVEL
79439 79470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3ExprIsConstantNotJoin(pExpr)
79440 79471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
79441 79472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *p = pParse->pConstExpr;
79442 79473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
79443 79474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pReg = 0;
@@ -101208,21 +101239,23 @@
101208 101239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto multi_select_end;
101209 101240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101210 101241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101211 101242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_CTE
101212 101243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->selFlags & SF_Recursive ){
101213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SrcList *pSrc = p->pSrc;
101214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nCol = p->pEList->nExpr;
101244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SrcList *pSrc = p->pSrc; /* The FROM clause of the right-most SELECT */
101245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCol = p->pEList->nExpr; /* Number of columns in the result set */
101215 101246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNext;
101216 101247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrSwap;
101217 101248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCont, iBreak;
101218 101249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tmp1; /* Intermediate table */
101219 101250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tmp2; /* Next intermediate table */
101220 101251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tmp3 = 0; /* To ensure unique results if UNION */
101221 101252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eDest = SRT_Table;
101222 101253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest tmp2dest;
101223 101254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
101255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int regLevel = 0; /* Register for LEVEL value */
101256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int savedRegLevel; /* Saved value of pParse->regLevel */
101224 101257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101225 101258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check that there is no ORDER BY or LIMIT clause. Neither of these
101226 101259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are supported on recursive queries. */
101227 101260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pOffset==0 || p->pLimit );
101228 101261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pOrderBy || p->pLimit ){
@@ -101260,10 +101293,18 @@
101260 101293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101261 101294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101262 101295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Store the results of the initial SELECT in tmp2. */
101263 101296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Select(pParse, pPrior, &tmp2dest);
101264 101297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) goto multi_select_end;
101298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
101299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Allocate and initialize a register to hold the LEVEL pseudo-column */
101300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ savedRegLevel = pParse->regLevel;
101301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->selFlags & SF_UsesLevel ){
101302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regLevel = pParse->regLevel = ++pParse->nMem;
101303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Integer, 0, regLevel);
101304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "level=0"));
101305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
101265 101306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101266 101307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Clear tmp1. Then switch the contents of tmp1 and tmp2. Then return
101267 101308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the contents of tmp1 to the caller. Or, if tmp1 is empty at this
101268 101309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** point, the recursive query has finished - jump to address iBreak. */
101269 101310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrSwap = sqlite3VdbeAddOp2(v, OP_SwapCursors, tmp1, tmp2);
@@ -101271,10 +101312,14 @@
101271 101312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrNext = sqlite3VdbeCurrentAddr(v);
101272 101313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, p->pEList, tmp1, p->pEList->nExpr,
101273 101314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, 0, &dest, iCont, iBreak);
101274 101315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iCont);
101275 101316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Next, tmp1, addrNext);
101317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( regLevel ){
101318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_AddImm, regLevel, 1);
101319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "level++"));
101320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
101276 101321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101277 101322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Execute the recursive SELECT. Store the results in tmp2. While this
101278 101323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SELECT is running, the contents of tmp1 are read by recursive
101279 101324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** references to the current CTE. */
101280 101325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = 0;
@@ -101283,10 +101328,11 @@
101283 101328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = pPrior;
101284 101329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) goto multi_select_end;
101285 101330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101286 101331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrSwap);
101287 101332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iBreak);
101333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->regLevel = savedRegLevel;
101288 101334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
101289 101335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
101290 101336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101291 101337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Compound SELECTs that have an ORDER BY clause are handled separately.
101292 101338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -103011,10 +103057,11 @@
103011 103057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCte->zErr ){
103012 103058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, pCte->zErr, pCte->zName);
103013 103059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
103014 103060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103015 103061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
103062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pFrom->pTab==0 );
103016 103063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table));
103017 103064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab==0 ) return WRC_Abort;
103018 103065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->nRef = 1;
103019 103066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->zName = sqlite3DbStrDup(db, pCte->zName);
103020 103067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->iPKey = -1;
@@ -110432,11 +110479,12 @@
110432 110479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=nTerm=0, pTerm=pWC->a; i<pWC->nTerm; i++, pTerm++){
110433 110480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->leftCursor != pSrc->iCursor ) continue;
110434 110481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( IsPowerOfTwo(pTerm->eOperator & ~WO_EQUIV) );
110435 110482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->eOperator & WO_IN );
110436 110483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->eOperator & WO_ISNULL );
110437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTerm->eOperator & (WO_ISNULL) ) continue;
110484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pTerm->eOperator & WO_ALL );
110485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pTerm->eOperator & ~(WO_ISNULL|WO_EQUIV))==0 ) continue;
110438 110486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->wtFlags & TERM_VNULL ) continue;
110439 110487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nTerm++;
110440 110488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110441 110489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110442 110490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the ORDER BY clause contains only columns in the current
@@ -110484,11 +110532,12 @@
110484 110532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 op;
110485 110533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->leftCursor != pSrc->iCursor ) continue;
110486 110534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( IsPowerOfTwo(pTerm->eOperator & ~WO_EQUIV) );
110487 110535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->eOperator & WO_IN );
110488 110536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->eOperator & WO_ISNULL );
110489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTerm->eOperator & (WO_ISNULL) ) continue;
110537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pTerm->eOperator & WO_ALL );
110538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pTerm->eOperator & ~(WO_ISNULL|WO_EQUIV))==0 ) continue;
110490 110539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->wtFlags & TERM_VNULL ) continue;
110491 110540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxCons[j].iColumn = pTerm->u.leftColumn;
110492 110541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxCons[j].iTermOffset = i;
110493 110542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = (u8)pTerm->eOperator & WO_ALL;
110494 110543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==WO_IN ) op = WO_EQ;
110495 110544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!