@@ -16,11 +16,11 @@
16 16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if you want a wrapper to interface SQLite with your choice of programming
17 17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** language. The code for the "sqlite3" command-line shell is also in a
18 18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** separate file. This file contains only code for the core SQLite library.
19 19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
20 20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The content in this amalgamation comes from Fossil check-in
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 0083d5169a46104a25355bdd9d5a2f4027b0 with changes in files:
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 6f98b16d210a9f5b6ca4b4599e3dab3263ed with changes in files:
22 22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
23 23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
24 24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
25 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_AMALGAMATION
26 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CORE 1
@@ -465,11 +465,11 @@
465 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
466 466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
467 467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
468 468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION "3.51.0"
469 469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION_NUMBER 3051000
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2025-06-30 16:41:40 0083d5169a46104a25355bdd9d5a2f4027b049191ebda571dd228477ec217296"
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2025-07-04 14:24:18 6f98b16d210a9f5b6ca4b4599e3dab3263eddbae7c70ddbcabf988f4a1014e8b"
471 471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
472 472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
473 473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
474 474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
475 475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -15565,10 +15565,11 @@
15565 15565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00010000 Beginning of DELETE/INSERT/UPDATE processing
15566 15566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00020000 Transform DISTINCT into GROUP BY
15567 15567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00040000 SELECT tree dump after all code has been generated
15568 15568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00080000 NOT NULL strength reduction
15569 15569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00100000 Pointers are all shown as zero
15570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x00200000 EXISTS-to-JOIN optimization
15570 15571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15571 15572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15572 15573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15573 15574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros for "wheretrace"
15574 15575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -16750,10 +16751,11 @@
16750 16751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
16751 16752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16752 16753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeInsert(BtCursor*, const BtreePayload *pPayload,
16753 16754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags, int seekResult);
16754 16755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeFirst(BtCursor*, int *pRes);
16756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3BtreeIsEmpty(BtCursor *pCur, int *pRes);
16755 16757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor*, int *pRes);
16756 16758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor*, int flags);
16757 16759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeEof(BtCursor*);
16758 16760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor*, int flags);
16759 16761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE i64 sqlite3BtreeIntegerKey(BtCursor*);
@@ -17083,76 +17085,76 @@
17083 17085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Last 32 /* jump0 */
17084 17086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_IfSizeBetween 33 /* jump */
17085 17087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_SorterSort 34 /* jump */
17086 17088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Sort 35 /* jump */
17087 17089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Rewind 36 /* jump0 */
17088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterNext 37 /* jump */
17089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Prev 38 /* jump */
17090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Next 39 /* jump */
17091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxLE 40 /* jump, synopsis: key=r[P3@P4] */
17092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxGT 41 /* jump, synopsis: key=r[P3@P4] */
17093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxLT 42 /* jump, synopsis: key=r[P3@P4] */
17090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfEmpty 37 /* jump, synopsis: if( empty(P1) ) goto P2 */
17091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterNext 38 /* jump */
17092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Prev 39 /* jump */
17093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Next 40 /* jump */
17094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxLE 41 /* jump, synopsis: key=r[P3@P4] */
17095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxGT 42 /* jump, synopsis: key=r[P3@P4] */
17094 17096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Or 43 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */
17095 17097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_And 44 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */
17096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxGE 45 /* jump, synopsis: key=r[P3@P4] */
17097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetRead 46 /* jump, synopsis: r[P3]=rowset(P1) */
17098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetTest 47 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
17099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Program 48 /* jump0 */
17100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkIfZero 49 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
17101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfPos 50 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
17098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxLT 45 /* jump, synopsis: key=r[P3@P4] */
17099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxGE 46 /* jump, synopsis: key=r[P3@P4] */
17100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetRead 47 /* jump, synopsis: r[P3]=rowset(P1) */
17101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetTest 48 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
17102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Program 49 /* jump0 */
17103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FkIfZero 50 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
17102 17104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_IsNull 51 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
17103 17105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_NotNull 52 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
17104 17106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Ne 53 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */
17105 17107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Eq 54 /* jump, same as TK_EQ, synopsis: IF r[P3]==r[P1] */
17106 17108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Gt 55 /* jump, same as TK_GT, synopsis: IF r[P3]>r[P1] */
17107 17109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Le 56 /* jump, same as TK_LE, synopsis: IF r[P3]<=r[P1] */
17108 17110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Lt 57 /* jump, same as TK_LT, synopsis: IF r[P3]<r[P1] */
17109 17111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Ge 58 /* jump, same as TK_GE, synopsis: IF r[P3]>=r[P1] */
17110 17112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ElseEq 59 /* jump, same as TK_ESCAPE */
17111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfNotZero 60 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
17112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DecrJumpZero 61 /* jump, synopsis: if (--r[P1])==0 goto P2 */
17113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IncrVacuum 62 /* jump */
17114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VNext 63 /* jump */
17115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Filter 64 /* jump, synopsis: if key(P3@P4) not in filter(P1) goto P2 */
17116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_PureFunc 65 /* synopsis: r[P3]=func(r[P2@NP]) */
17117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Function 66 /* synopsis: r[P3]=func(r[P2@NP]) */
17118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Return 67
17119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_EndCoroutine 68
17120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_HaltIfNull 69 /* synopsis: if r[P3]=null halt */
17121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Halt 70
17122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Integer 71 /* synopsis: r[P2]=P1 */
17123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Int64 72 /* synopsis: r[P2]=P4 */
17124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_String 73 /* synopsis: r[P2]='P4' (len=P1) */
17125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_BeginSubrtn 74 /* synopsis: r[P2]=NULL */
17126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Null 75 /* synopsis: r[P2..P3]=NULL */
17127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SoftNull 76 /* synopsis: r[P1]=NULL */
17128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Blob 77 /* synopsis: r[P2]=P4 (len=P1) */
17129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Variable 78 /* synopsis: r[P2]=parameter(P1) */
17130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Move 79 /* synopsis: r[P2@P3]=r[P1@P3] */
17131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Copy 80 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
17132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SCopy 81 /* synopsis: r[P2]=r[P1] */
17133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IntCopy 82 /* synopsis: r[P2]=r[P1] */
17134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkCheck 83
17135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResultRow 84 /* synopsis: output=r[P1@P2] */
17136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CollSeq 85
17137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AddImm 86 /* synopsis: r[P1]=r[P1]+P2 */
17138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RealAffinity 87
17139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Cast 88 /* synopsis: affinity(r[P1]) */
17140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Permutation 89
17141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Compare 90 /* synopsis: r[P1@P3] <-> r[P2@P3] */
17142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IsTrue 91 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
17143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ZeroOrNull 92 /* synopsis: r[P2] = 0 OR NULL */
17144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Offset 93 /* synopsis: r[P3] = sqlite_offset(P1) */
17145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Column 94 /* synopsis: r[P3]=PX cursor P1 column P2 */
17146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_TypeCheck 95 /* synopsis: typecheck(r[P1@P2]) */
17147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Affinity 96 /* synopsis: affinity(r[P1@P2]) */
17148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MakeRecord 97 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
17149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Count 98 /* synopsis: r[P2]=count() */
17150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReadCookie 99
17151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SetCookie 100
17152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReopenIdx 101 /* synopsis: root=P2 iDb=P3 */
17153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenRead 102 /* synopsis: root=P2 iDb=P3 */
17113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfPos 60 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
17114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfNotZero 61 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
17115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DecrJumpZero 62 /* jump, synopsis: if (--r[P1])==0 goto P2 */
17116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IncrVacuum 63 /* jump */
17117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VNext 64 /* jump */
17118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Filter 65 /* jump, synopsis: if key(P3@P4) not in filter(P1) goto P2 */
17119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_PureFunc 66 /* synopsis: r[P3]=func(r[P2@NP]) */
17120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Function 67 /* synopsis: r[P3]=func(r[P2@NP]) */
17121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Return 68
17122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_EndCoroutine 69
17123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_HaltIfNull 70 /* synopsis: if r[P3]=null halt */
17124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Halt 71
17125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Integer 72 /* synopsis: r[P2]=P1 */
17126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Int64 73 /* synopsis: r[P2]=P4 */
17127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_String 74 /* synopsis: r[P2]='P4' (len=P1) */
17128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_BeginSubrtn 75 /* synopsis: r[P2]=NULL */
17129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Null 76 /* synopsis: r[P2..P3]=NULL */
17130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SoftNull 77 /* synopsis: r[P1]=NULL */
17131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Blob 78 /* synopsis: r[P2]=P4 (len=P1) */
17132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Variable 79 /* synopsis: r[P2]=parameter(P1) */
17133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Move 80 /* synopsis: r[P2@P3]=r[P1@P3] */
17134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Copy 81 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
17135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SCopy 82 /* synopsis: r[P2]=r[P1] */
17136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IntCopy 83 /* synopsis: r[P2]=r[P1] */
17137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FkCheck 84
17138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ResultRow 85 /* synopsis: output=r[P1@P2] */
17139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CollSeq 86
17140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AddImm 87 /* synopsis: r[P1]=r[P1]+P2 */
17141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RealAffinity 88
17142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Cast 89 /* synopsis: affinity(r[P1]) */
17143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Permutation 90
17144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Compare 91 /* synopsis: r[P1@P3] <-> r[P2@P3] */
17145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IsTrue 92 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
17146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ZeroOrNull 93 /* synopsis: r[P2] = 0 OR NULL */
17147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Offset 94 /* synopsis: r[P3] = sqlite_offset(P1) */
17148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Column 95 /* synopsis: r[P3]=PX cursor P1 column P2 */
17149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_TypeCheck 96 /* synopsis: typecheck(r[P1@P2]) */
17150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Affinity 97 /* synopsis: affinity(r[P1@P2]) */
17151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MakeRecord 98 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
17152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Count 99 /* synopsis: r[P2]=count() */
17153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ReadCookie 100
17154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SetCookie 101
17155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ReopenIdx 102 /* synopsis: root=P2 iDb=P3 */
17154 17156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_BitAnd 103 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
17155 17157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_BitOr 104 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
17156 17158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ShiftLeft 105 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
17157 17159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ShiftRight 106 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
17158 17160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Add 107 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
@@ -17159,87 +17161,88 @@
17159 17161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Subtract 108 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
17160 17162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Multiply 109 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
17161 17163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Divide 110 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
17162 17164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Remainder 111 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
17163 17165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Concat 112 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
17164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenWrite 113 /* synopsis: root=P2 iDb=P3 */
17165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenDup 114
17166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenRead 113 /* synopsis: root=P2 iDb=P3 */
17167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenWrite 114 /* synopsis: root=P2 iDb=P3 */
17166 17168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_BitNot 115 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
17167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenAutoindex 116 /* synopsis: nColumn=P2 */
17168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenEphemeral 117 /* synopsis: nColumn=P2 */
17169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenDup 116
17170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenAutoindex 117 /* synopsis: nColumn=P2 */
17169 17171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_String8 118 /* same as TK_STRING, synopsis: r[P2]='P4' */
17170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterOpen 119
17171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SequenceTest 120 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
17172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenPseudo 121 /* synopsis: P3 columns in r[P2] */
17173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Close 122
17174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ColumnsUsed 123
17175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekScan 124 /* synopsis: Scan-ahead up to P1 rows */
17176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekHit 125 /* synopsis: set P2<=seekHit<=P3 */
17177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Sequence 126 /* synopsis: r[P2]=cursor[P1].ctr++ */
17178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NewRowid 127 /* synopsis: r[P2]=rowid */
17179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Insert 128 /* synopsis: intkey=r[P3] data=r[P2] */
17180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowCell 129
17181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Delete 130
17182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResetCount 131
17183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterCompare 132 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
17184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterData 133 /* synopsis: r[P2]=data */
17185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowData 134 /* synopsis: r[P2]=data */
17186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Rowid 135 /* synopsis: r[P2]=PX rowid of P1 */
17187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NullRow 136
17188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekEnd 137
17189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxInsert 138 /* synopsis: key=r[P2] */
17190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterInsert 139 /* synopsis: key=r[P2] */
17191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxDelete 140 /* synopsis: key=r[P2@P3] */
17192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DeferredSeek 141 /* synopsis: Move P3 to P1.rowid if needed */
17193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxRowid 142 /* synopsis: r[P2]=rowid */
17194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FinishSeek 143
17195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Destroy 144
17196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Clear 145
17197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResetSorter 146
17198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CreateBtree 147 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
17199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SqlExec 148
17200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ParseSchema 149
17201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_LoadAnalysis 150
17202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropTable 151
17203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropIndex 152
17204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropTrigger 153
17172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenEphemeral 119 /* synopsis: nColumn=P2 */
17173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterOpen 120
17174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SequenceTest 121 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
17175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenPseudo 122 /* synopsis: P3 columns in r[P2] */
17176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Close 123
17177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ColumnsUsed 124
17178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekScan 125 /* synopsis: Scan-ahead up to P1 rows */
17179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekHit 126 /* synopsis: set P2<=seekHit<=P3 */
17180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Sequence 127 /* synopsis: r[P2]=cursor[P1].ctr++ */
17181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NewRowid 128 /* synopsis: r[P2]=rowid */
17182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Insert 129 /* synopsis: intkey=r[P3] data=r[P2] */
17183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowCell 130
17184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Delete 131
17185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ResetCount 132
17186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterCompare 133 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
17187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterData 134 /* synopsis: r[P2]=data */
17188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowData 135 /* synopsis: r[P2]=data */
17189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Rowid 136 /* synopsis: r[P2]=PX rowid of P1 */
17190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NullRow 137
17191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekEnd 138
17192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxInsert 139 /* synopsis: key=r[P2] */
17193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterInsert 140 /* synopsis: key=r[P2] */
17194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxDelete 141 /* synopsis: key=r[P2@P3] */
17195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DeferredSeek 142 /* synopsis: Move P3 to P1.rowid if needed */
17196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxRowid 143 /* synopsis: r[P2]=rowid */
17197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FinishSeek 144
17198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Destroy 145
17199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Clear 146
17200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ResetSorter 147
17201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CreateBtree 148 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
17202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SqlExec 149
17203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ParseSchema 150
17204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_LoadAnalysis 151
17205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DropTable 152
17206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DropIndex 153
17205 17207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Real 154 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
17206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IntegrityCk 155
17207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetAdd 156 /* synopsis: rowset(P1)=r[P2] */
17208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Param 157
17209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkCounter 158 /* synopsis: fkctr[P1]+=P2 */
17210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MemMax 159 /* synopsis: r[P1]=max(r[P1],r[P2]) */
17211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OffsetLimit 160 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
17212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggInverse 161 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
17213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggStep 162 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggStep1 163 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggValue 164 /* synopsis: r[P3]=value N=P2 */
17216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggFinal 165 /* synopsis: accum=r[P1] N=P2 */
17217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Expire 166
17218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CursorLock 167
17219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CursorUnlock 168
17220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_TableLock 169 /* synopsis: iDb=P1 root=P2 write=P3 */
17221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VBegin 170
17222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VCreate 171
17223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VDestroy 172
17224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VOpen 173
17225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VCheck 174
17226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VInitIn 175 /* synopsis: r[P2]=ValueList(P1,P3) */
17227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VColumn 176 /* synopsis: r[P3]=vcolumn(P2) */
17228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VRename 177
17229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Pagecount 178
17230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MaxPgcnt 179
17231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ClrSubtype 180 /* synopsis: r[P1].subtype = 0 */
17232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_GetSubtype 181 /* synopsis: r[P2] = r[P1].subtype */
17233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SetSubtype 182 /* synopsis: r[P2].subtype = r[P1] */
17234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FilterAdd 183 /* synopsis: filter(P1) += key(P3@P4) */
17235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Trace 184
17236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CursorHint 185
17237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReleaseReg 186 /* synopsis: release r[P1@P2] mask P3 */
17238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Noop 187
17239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Explain 188
17240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Abortable 189
17208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DropTrigger 155
17209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IntegrityCk 156
17210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetAdd 157 /* synopsis: rowset(P1)=r[P2] */
17211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Param 158
17212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FkCounter 159 /* synopsis: fkctr[P1]+=P2 */
17213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MemMax 160 /* synopsis: r[P1]=max(r[P1],r[P2]) */
17214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OffsetLimit 161 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
17215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggInverse 162 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
17216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggStep 163 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggStep1 164 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggValue 165 /* synopsis: r[P3]=value N=P2 */
17219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggFinal 166 /* synopsis: accum=r[P1] N=P2 */
17220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Expire 167
17221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CursorLock 168
17222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CursorUnlock 169
17223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_TableLock 170 /* synopsis: iDb=P1 root=P2 write=P3 */
17224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VBegin 171
17225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VCreate 172
17226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VDestroy 173
17227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VOpen 174
17228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VCheck 175
17229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VInitIn 176 /* synopsis: r[P2]=ValueList(P1,P3) */
17230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VColumn 177 /* synopsis: r[P3]=vcolumn(P2) */
17231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VRename 178
17232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Pagecount 179
17233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MaxPgcnt 180
17234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ClrSubtype 181 /* synopsis: r[P1].subtype = 0 */
17235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_GetSubtype 182 /* synopsis: r[P2] = r[P1].subtype */
17236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SetSubtype 183 /* synopsis: r[P2].subtype = r[P1] */
17237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FilterAdd 184 /* synopsis: filter(P1) += key(P3@P4) */
17238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Trace 185
17239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CursorHint 186
17240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ReleaseReg 187 /* synopsis: release r[P1@P2] mask P3 */
17241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Noop 188
17242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Explain 189
17243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Abortable 190
17241 17244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17242 17245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Properties such as "out2" or "jump" that are specified in
17243 17246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** comments following the "case" for each opcode in the vdbe.c
17244 17247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are encoded into bitvectors as follows:
17245 17248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -17254,38 +17257,38 @@
17254 17257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_INITIALIZER {\
17255 17258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 0 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x41, 0x00,\
17256 17259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 8 */ 0x81, 0x01, 0x01, 0x81, 0x83, 0x83, 0x01, 0x01,\
17257 17260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 16 */ 0x03, 0x03, 0x01, 0x12, 0x01, 0xc9, 0xc9, 0xc9,\
17258 17261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 24 */ 0xc9, 0x01, 0x49, 0x49, 0x49, 0x49, 0xc9, 0x49,\
17259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 32 */ 0xc1, 0x01, 0x41, 0x41, 0xc1, 0x01, 0x41, 0x41,\
17260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ 0x41, 0x41, 0x41, 0x26, 0x26, 0x41, 0x23, 0x0b,\
17261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ 0x81, 0x01, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b,\
17262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 56 */ 0x0b, 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x01, 0x41,\
17263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 64 */ 0x01, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x10,\
17264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 72 */ 0x10, 0x10, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00,\
17265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 80 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02,\
17266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 88 */ 0x02, 0x00, 0x00, 0x12, 0x1e, 0x20, 0x40, 0x00,\
17267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 96 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x40, 0x40, 0x26,\
17262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 32 */ 0xc1, 0x01, 0x41, 0x41, 0xc1, 0x01, 0x01, 0x41,\
17263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 40 */ 0x41, 0x41, 0x41, 0x26, 0x26, 0x41, 0x41, 0x23,\
17264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 48 */ 0x0b, 0x81, 0x01, 0x03, 0x03, 0x0b, 0x0b, 0x0b,\
17265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 56 */ 0x0b, 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x03, 0x01,\
17266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 64 */ 0x41, 0x01, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00,\
17267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 72 */ 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, 0x10, 0x10,\
17268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 80 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x02,\
17269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 88 */ 0x02, 0x02, 0x00, 0x00, 0x12, 0x1e, 0x20, 0x40,\
17270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 96 */ 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x40, 0x26,\
17268 17271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
17269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 112 */ 0x26, 0x00, 0x40, 0x12, 0x40, 0x40, 0x10, 0x00,\
17270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 120 */ 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x10, 0x10,\
17271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x50,\
17272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 136 */ 0x00, 0x40, 0x04, 0x04, 0x00, 0x40, 0x50, 0x40,\
17273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 144 */ 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,\
17274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 152 */ 0x00, 0x00, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04,\
17275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 160 */ 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
17276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x50,\
17277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 176 */ 0x40, 0x00, 0x10, 0x10, 0x02, 0x12, 0x12, 0x00,\
17278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 184 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}
17272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 112 */ 0x26, 0x40, 0x00, 0x12, 0x40, 0x40, 0x10, 0x40,\
17273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 120 */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x10,\
17274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 128 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,\
17275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 136 */ 0x50, 0x00, 0x40, 0x04, 0x04, 0x00, 0x40, 0x50,\
17276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 144 */ 0x40, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\
17277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 152 */ 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x10, 0x00,\
17278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 160 */ 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
17279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10,\
17280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 176 */ 0x50, 0x40, 0x00, 0x10, 0x10, 0x02, 0x12, 0x12,\
17281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 184 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}
17279 17282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17280 17283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The resolve3P2Values() routine is able to run faster if it knows
17281 17284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the value of the largest JUMP opcode. The smaller the maximum
17282 17285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** JUMP opcode the better, so the mkopcodeh.tcl script that
17283 17286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** generated this include file strives to group all JUMP opcodes
17284 17287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** together near the beginning of the list.
17285 17288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
17286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_MX_JUMP_OPCODE 64 /* Maximum JUMP opcode */
17289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_MX_JUMP_OPCODE 65 /* Maximum JUMP opcode */
17287 17290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17288 17291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of opcodes.h *********************************************/
17289 17292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in vdbe.h ***********************/
17290 17293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17291 17294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -18300,10 +18303,11 @@
18300 18303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_Coroutines 0x02000000 /* Co-routines for subqueries */
18301 18304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_NullUnusedCols 0x04000000 /* NULL unused columns in subqueries */
18302 18305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OnePass 0x08000000 /* Single-pass DELETE and UPDATE */
18303 18306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OrderBySubq 0x10000000 /* ORDER BY in subquery helps outer */
18304 18307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_StarQuery 0x20000000 /* Heurists for star queries */
18308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_ExistsToJoin 0x40000000 /* The EXISTS-to-JOIN optimization */
18305 18309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AllOpts 0xffffffff /* All optimizations */
18306 18310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18307 18311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
18308 18312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros for testing whether or not optimizations are enabled or disabled.
18309 18313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -19744,10 +19748,11 @@
19744 19748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isSynthUsing :1; /* u3.pUsing is synthesized from NATURAL */
19745 19749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isNestedFrom :1; /* pSelect is a SF_NestedFrom subquery */
19746 19750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned rowidUsed :1; /* The ROWID of this table is referenced */
19747 19751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned fixedSchema :1; /* Uses u4.pSchema, not u4.zDatabase */
19748 19752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned hadSchema :1; /* Had u4.zDatabase before u4.pSchema */
19753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned fromExists :1; /* Comes from WHERE EXISTS(...) */
19749 19754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} fg;
19750 19755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCursor; /* The VDBE cursor number used to access this table */
19751 19756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask colUsed; /* Bit N set if column N used. Details above for N>62 */
19752 19757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
19753 19758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zIndexedBy; /* Identifier from "INDEXED BY <zIndex>" clause */
@@ -20274,10 +20279,11 @@
20274 20279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 mayAbort; /* True if statement may throw an ABORT exception */
20275 20280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 hasCompound; /* Need to invoke convertCompoundSelectToSubquery() */
20276 20281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 disableLookaside; /* Number of times lookaside has been disabled */
20277 20282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 prepFlags; /* SQLITE_PREPARE_* flags */
20278 20283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 withinRJSubrtn; /* Nesting level for RIGHT JOIN body subroutines */
20284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bHasExists; /* Has a correlated "EXISTS (SELECT ....)" expression */
20279 20285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 mSubrtnSig; /* mini Bloom filter on available SubrtnSig.selId */
20280 20286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */
20281 20287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bReturning; /* Coding a RETURNING trigger */
20282 20288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */
20283 20289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 disableTriggers; /* True to disable triggers */
@@ -37721,76 +37727,76 @@
37721 37727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 32 */ "Last" OpHelp(""),
37722 37728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 33 */ "IfSizeBetween" OpHelp(""),
37723 37729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 34 */ "SorterSort" OpHelp(""),
37724 37730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 35 */ "Sort" OpHelp(""),
37725 37731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 36 */ "Rewind" OpHelp(""),
37726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 37 */ "SorterNext" OpHelp(""),
37727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 38 */ "Prev" OpHelp(""),
37728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 39 */ "Next" OpHelp(""),
37729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ "IdxLE" OpHelp("key=r[P3@P4]"),
37730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 41 */ "IdxGT" OpHelp("key=r[P3@P4]"),
37731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 42 */ "IdxLT" OpHelp("key=r[P3@P4]"),
37732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 37 */ "IfEmpty" OpHelp("if( empty(P1) ) goto P2"),
37733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 38 */ "SorterNext" OpHelp(""),
37734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 39 */ "Prev" OpHelp(""),
37735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 40 */ "Next" OpHelp(""),
37736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 41 */ "IdxLE" OpHelp("key=r[P3@P4]"),
37737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 42 */ "IdxGT" OpHelp("key=r[P3@P4]"),
37732 37738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 43 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
37733 37739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 44 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
37734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 45 */ "IdxGE" OpHelp("key=r[P3@P4]"),
37735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 46 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
37736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 47 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
37737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ "Program" OpHelp(""),
37738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 49 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
37739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 50 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
37740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 45 */ "IdxLT" OpHelp("key=r[P3@P4]"),
37741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 46 */ "IdxGE" OpHelp("key=r[P3@P4]"),
37742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 47 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
37743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 48 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
37744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 49 */ "Program" OpHelp(""),
37745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 50 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
37740 37746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 51 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
37741 37747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 52 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
37742 37748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 53 */ "Ne" OpHelp("IF r[P3]!=r[P1]"),
37743 37749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 54 */ "Eq" OpHelp("IF r[P3]==r[P1]"),
37744 37750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 55 */ "Gt" OpHelp("IF r[P3]>r[P1]"),
37745 37751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 56 */ "Le" OpHelp("IF r[P3]<=r[P1]"),
37746 37752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 57 */ "Lt" OpHelp("IF r[P3]<r[P1]"),
37747 37753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 58 */ "Ge" OpHelp("IF r[P3]>=r[P1]"),
37748 37754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 59 */ "ElseEq" OpHelp(""),
37749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 60 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
37750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 61 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
37751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 62 */ "IncrVacuum" OpHelp(""),
37752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 63 */ "VNext" OpHelp(""),
37753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 64 */ "Filter" OpHelp("if key(P3@P4) not in filter(P1) goto P2"),
37754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 65 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
37755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 66 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
37756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 67 */ "Return" OpHelp(""),
37757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 68 */ "EndCoroutine" OpHelp(""),
37758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 69 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
37759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 70 */ "Halt" OpHelp(""),
37760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 71 */ "Integer" OpHelp("r[P2]=P1"),
37761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 72 */ "Int64" OpHelp("r[P2]=P4"),
37762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 73 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
37763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 74 */ "BeginSubrtn" OpHelp("r[P2]=NULL"),
37764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 75 */ "Null" OpHelp("r[P2..P3]=NULL"),
37765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 76 */ "SoftNull" OpHelp("r[P1]=NULL"),
37766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 77 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
37767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 78 */ "Variable" OpHelp("r[P2]=parameter(P1)"),
37768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 79 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
37769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 80 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
37770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 81 */ "SCopy" OpHelp("r[P2]=r[P1]"),
37771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 82 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
37772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 83 */ "FkCheck" OpHelp(""),
37773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 84 */ "ResultRow" OpHelp("output=r[P1@P2]"),
37774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 85 */ "CollSeq" OpHelp(""),
37775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 86 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
37776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 87 */ "RealAffinity" OpHelp(""),
37777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 88 */ "Cast" OpHelp("affinity(r[P1])"),
37778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 89 */ "Permutation" OpHelp(""),
37779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 90 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
37780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 91 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
37781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 92 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
37782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 93 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
37783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 94 */ "Column" OpHelp("r[P3]=PX cursor P1 column P2"),
37784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 95 */ "TypeCheck" OpHelp("typecheck(r[P1@P2])"),
37785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 96 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
37786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 97 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
37787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 98 */ "Count" OpHelp("r[P2]=count()"),
37788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 99 */ "ReadCookie" OpHelp(""),
37789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 100 */ "SetCookie" OpHelp(""),
37790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 101 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
37791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 102 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
37755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 60 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
37756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 61 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
37757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 62 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
37758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 63 */ "IncrVacuum" OpHelp(""),
37759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 64 */ "VNext" OpHelp(""),
37760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 65 */ "Filter" OpHelp("if key(P3@P4) not in filter(P1) goto P2"),
37761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 66 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
37762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 67 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
37763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 68 */ "Return" OpHelp(""),
37764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 69 */ "EndCoroutine" OpHelp(""),
37765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 70 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
37766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 71 */ "Halt" OpHelp(""),
37767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 72 */ "Integer" OpHelp("r[P2]=P1"),
37768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 73 */ "Int64" OpHelp("r[P2]=P4"),
37769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 74 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
37770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 75 */ "BeginSubrtn" OpHelp("r[P2]=NULL"),
37771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 76 */ "Null" OpHelp("r[P2..P3]=NULL"),
37772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 77 */ "SoftNull" OpHelp("r[P1]=NULL"),
37773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 78 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
37774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 79 */ "Variable" OpHelp("r[P2]=parameter(P1)"),
37775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 80 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
37776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 81 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
37777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 82 */ "SCopy" OpHelp("r[P2]=r[P1]"),
37778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 83 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
37779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 84 */ "FkCheck" OpHelp(""),
37780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 85 */ "ResultRow" OpHelp("output=r[P1@P2]"),
37781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 86 */ "CollSeq" OpHelp(""),
37782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 87 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
37783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 88 */ "RealAffinity" OpHelp(""),
37784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 89 */ "Cast" OpHelp("affinity(r[P1])"),
37785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 90 */ "Permutation" OpHelp(""),
37786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 91 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
37787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 92 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
37788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 93 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
37789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 94 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
37790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 95 */ "Column" OpHelp("r[P3]=PX cursor P1 column P2"),
37791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 96 */ "TypeCheck" OpHelp("typecheck(r[P1@P2])"),
37792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 97 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
37793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 98 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
37794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 99 */ "Count" OpHelp("r[P2]=count()"),
37795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 100 */ "ReadCookie" OpHelp(""),
37796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 101 */ "SetCookie" OpHelp(""),
37797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 102 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
37792 37798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 103 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
37793 37799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 104 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
37794 37800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 105 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
37795 37801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 106 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
37796 37802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 107 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -37797,87 +37803,88 @@
37797 37803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 108 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
37798 37804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 109 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
37799 37805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 110 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
37800 37806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 111 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
37801 37807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 112 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
37802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 113 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
37803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 114 */ "OpenDup" OpHelp(""),
37808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 113 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
37809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 114 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
37804 37810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 115 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
37805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 116 */ "OpenAutoindex" OpHelp("nColumn=P2"),
37806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 117 */ "OpenEphemeral" OpHelp("nColumn=P2"),
37811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 116 */ "OpenDup" OpHelp(""),
37812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 117 */ "OpenAutoindex" OpHelp("nColumn=P2"),
37807 37813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 118 */ "String8" OpHelp("r[P2]='P4'"),
37808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 119 */ "SorterOpen" OpHelp(""),
37809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 120 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
37810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 121 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
37811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 122 */ "Close" OpHelp(""),
37812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 123 */ "ColumnsUsed" OpHelp(""),
37813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 124 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
37814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 125 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
37815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 126 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
37816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 127 */ "NewRowid" OpHelp("r[P2]=rowid"),
37817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 128 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
37818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 129 */ "RowCell" OpHelp(""),
37819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 130 */ "Delete" OpHelp(""),
37820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 131 */ "ResetCount" OpHelp(""),
37821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 132 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
37822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 133 */ "SorterData" OpHelp("r[P2]=data"),
37823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 134 */ "RowData" OpHelp("r[P2]=data"),
37824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 135 */ "Rowid" OpHelp("r[P2]=PX rowid of P1"),
37825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 136 */ "NullRow" OpHelp(""),
37826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 137 */ "SeekEnd" OpHelp(""),
37827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 138 */ "IdxInsert" OpHelp("key=r[P2]"),
37828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 139 */ "SorterInsert" OpHelp("key=r[P2]"),
37829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 140 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
37830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 141 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
37831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 142 */ "IdxRowid" OpHelp("r[P2]=rowid"),
37832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 143 */ "FinishSeek" OpHelp(""),
37833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 144 */ "Destroy" OpHelp(""),
37834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 145 */ "Clear" OpHelp(""),
37835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 146 */ "ResetSorter" OpHelp(""),
37836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 147 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
37837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 148 */ "SqlExec" OpHelp(""),
37838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 149 */ "ParseSchema" OpHelp(""),
37839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 150 */ "LoadAnalysis" OpHelp(""),
37840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 151 */ "DropTable" OpHelp(""),
37841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 152 */ "DropIndex" OpHelp(""),
37842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 153 */ "DropTrigger" OpHelp(""),
37814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 119 */ "OpenEphemeral" OpHelp("nColumn=P2"),
37815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 120 */ "SorterOpen" OpHelp(""),
37816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 121 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
37817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 122 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
37818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 123 */ "Close" OpHelp(""),
37819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 124 */ "ColumnsUsed" OpHelp(""),
37820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 125 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
37821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 126 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
37822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 127 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
37823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 128 */ "NewRowid" OpHelp("r[P2]=rowid"),
37824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 129 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
37825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 130 */ "RowCell" OpHelp(""),
37826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 131 */ "Delete" OpHelp(""),
37827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 132 */ "ResetCount" OpHelp(""),
37828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 133 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
37829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 134 */ "SorterData" OpHelp("r[P2]=data"),
37830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 135 */ "RowData" OpHelp("r[P2]=data"),
37831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 136 */ "Rowid" OpHelp("r[P2]=PX rowid of P1"),
37832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 137 */ "NullRow" OpHelp(""),
37833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 138 */ "SeekEnd" OpHelp(""),
37834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 139 */ "IdxInsert" OpHelp("key=r[P2]"),
37835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 140 */ "SorterInsert" OpHelp("key=r[P2]"),
37836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 141 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
37837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 142 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
37838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 143 */ "IdxRowid" OpHelp("r[P2]=rowid"),
37839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 144 */ "FinishSeek" OpHelp(""),
37840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 145 */ "Destroy" OpHelp(""),
37841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 146 */ "Clear" OpHelp(""),
37842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 147 */ "ResetSorter" OpHelp(""),
37843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 148 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
37844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 149 */ "SqlExec" OpHelp(""),
37845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 150 */ "ParseSchema" OpHelp(""),
37846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 151 */ "LoadAnalysis" OpHelp(""),
37847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 152 */ "DropTable" OpHelp(""),
37848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 153 */ "DropIndex" OpHelp(""),
37843 37849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 154 */ "Real" OpHelp("r[P2]=P4"),
37844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 155 */ "IntegrityCk" OpHelp(""),
37845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 156 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
37846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 157 */ "Param" OpHelp(""),
37847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 158 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
37848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 159 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
37849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 160 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
37850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 161 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
37851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 162 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
37852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 163 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
37853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 164 */ "AggValue" OpHelp("r[P3]=value N=P2"),
37854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 165 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
37855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 166 */ "Expire" OpHelp(""),
37856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 167 */ "CursorLock" OpHelp(""),
37857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 168 */ "CursorUnlock" OpHelp(""),
37858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 169 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
37859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 170 */ "VBegin" OpHelp(""),
37860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 171 */ "VCreate" OpHelp(""),
37861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 172 */ "VDestroy" OpHelp(""),
37862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 173 */ "VOpen" OpHelp(""),
37863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 174 */ "VCheck" OpHelp(""),
37864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 175 */ "VInitIn" OpHelp("r[P2]=ValueList(P1,P3)"),
37865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 176 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
37866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 177 */ "VRename" OpHelp(""),
37867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 178 */ "Pagecount" OpHelp(""),
37868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 179 */ "MaxPgcnt" OpHelp(""),
37869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 180 */ "ClrSubtype" OpHelp("r[P1].subtype = 0"),
37870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 181 */ "GetSubtype" OpHelp("r[P2] = r[P1].subtype"),
37871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 182 */ "SetSubtype" OpHelp("r[P2].subtype = r[P1]"),
37872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 183 */ "FilterAdd" OpHelp("filter(P1) += key(P3@P4)"),
37873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 184 */ "Trace" OpHelp(""),
37874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 185 */ "CursorHint" OpHelp(""),
37875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 186 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
37876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 187 */ "Noop" OpHelp(""),
37877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 188 */ "Explain" OpHelp(""),
37878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 189 */ "Abortable" OpHelp(""),
37850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 155 */ "DropTrigger" OpHelp(""),
37851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 156 */ "IntegrityCk" OpHelp(""),
37852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 157 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
37853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 158 */ "Param" OpHelp(""),
37854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 159 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
37855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 160 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
37856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 161 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
37857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 162 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
37858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 163 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
37859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 164 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
37860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 165 */ "AggValue" OpHelp("r[P3]=value N=P2"),
37861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 166 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
37862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 167 */ "Expire" OpHelp(""),
37863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 168 */ "CursorLock" OpHelp(""),
37864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 169 */ "CursorUnlock" OpHelp(""),
37865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 170 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
37866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 171 */ "VBegin" OpHelp(""),
37867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 172 */ "VCreate" OpHelp(""),
37868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 173 */ "VDestroy" OpHelp(""),
37869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 174 */ "VOpen" OpHelp(""),
37870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 175 */ "VCheck" OpHelp(""),
37871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 176 */ "VInitIn" OpHelp("r[P2]=ValueList(P1,P3)"),
37872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 177 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
37873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 178 */ "VRename" OpHelp(""),
37874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 179 */ "Pagecount" OpHelp(""),
37875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 180 */ "MaxPgcnt" OpHelp(""),
37876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 181 */ "ClrSubtype" OpHelp("r[P1].subtype = 0"),
37877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 182 */ "GetSubtype" OpHelp("r[P2] = r[P1].subtype"),
37878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 183 */ "SetSubtype" OpHelp("r[P2].subtype = r[P1]"),
37879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 184 */ "FilterAdd" OpHelp("filter(P1) += key(P3@P4)"),
37880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 185 */ "Trace" OpHelp(""),
37881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 186 */ "CursorHint" OpHelp(""),
37882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 187 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
37883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 188 */ "Noop" OpHelp(""),
37884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 189 */ "Explain" OpHelp(""),
37885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 190 */ "Abortable" OpHelp(""),
37879 37886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
37880 37887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return azName[i];
37881 37888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37882 37889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
37883 37890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -73586,14 +73593,14 @@
73586 73593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *pTmp; /* Temporary ptr into data[] */
73587 73594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73588 73595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->pBt!=0 );
73589 73596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
73590 73597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( CORRUPT_DB || iStart>=pPage->hdrOffset+6+pPage->childPtrSize );
73591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( CORRUPT_DB || iEnd <= pPage->pBt->usableSize );
73598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB || iEnd <= (int)pPage->pBt->usableSize );
73592 73599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
73593 73600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iSize>=4 ); /* Minimum cell size is 4 */
73594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( CORRUPT_DB || iStart<=pPage->pBt->usableSize-4 );
73601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB || iStart<=(int)pPage->pBt->usableSize-4 );
73595 73602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73596 73603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The list of freeblocks must be in ascending order. Find the
73597 73604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** spot on the list where iStart should be inserted.
73598 73605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
73599 73606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hdr = pPage->hdrOffset;
@@ -77323,10 +77330,34 @@
77323 77330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = 1;
77324 77331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_OK;
77325 77332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77326 77333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
77327 77334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
77336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Set *pRes to 1 (true) if the BTree pointed to by cursor pCur contains zero
77337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** rows of content. Set *pRes to 0 (false) if the table contains content.
77338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return SQLITE_OK on success or some error code (ex: SQLITE_NOMEM) if
77339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** something goes wrong.
77340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
77341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3BtreeIsEmpty(BtCursor *pCur, int *pRes){
77342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
77343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
77344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( cursorOwnsBtShared(pCur) );
77345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
77346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur->eState==CURSOR_VALID ){
77347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pRes = 0;
77348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_OK;
77349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
77350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = moveToRoot(pCur);
77351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_EMPTY ){
77352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pRes = 1;
77353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_OK;
77354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
77355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pRes = 0;
77356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
77357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
77358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
77328 77359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77329 77360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
77330 77361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The cursors is CURSOR_VALID and has BTCF_AtLast set. Verify that
77331 77362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this flags are true for a consistent database.
77332 77363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -100850,10 +100881,36 @@
100850 100881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeBranchTaken(res!=0,2);
100851 100882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ) goto jump_to_p2;
100852 100883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100853 100884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
100854 100885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
100887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: IfEmpty P1 P2 * * *
100888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Synopsis: if( empty(P1) ) goto P2
100889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
100890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Check to see if the b-tree table that cursor P1 references is empty
100891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and jump to P2 if it is.
100892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
100893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_IfEmpty: { /* jump */
100894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCursor *pC;
100895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ BtCursor *pCrsr;
100896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int res;
100897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
100898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p1>=0 && pOp->p1<p->nCursor );
100899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p2>=0 && pOp->p2<p->nOp );
100900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
100901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pC = p->apCsr[pOp->p1];
100902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pC!=0 );
100903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pC->eCurType==CURTYPE_BTREE );
100904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCrsr = pC->uc.pCursor;
100905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pCrsr );
100906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3BtreeIsEmpty(pCrsr, &res);
100907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc ) goto abort_due_to_error;
100908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res!=0,2);
100909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res ) goto jump_to_p2;
100910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
100911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
100855 100912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100856 100913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: Next P1 P2 P3 * P5
100857 100914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
100858 100915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Advance cursor P1 so that it points to the next key/data pair in its
100859 100916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table or index. If there are no more key/value pairs then fall through
@@ -102722,11 +102779,18 @@
102722 102779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab_cursor *pVCur;
102723 102780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab *pVtab;
102724 102781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const sqlite3_module *pModule;
102725 102782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102726 102783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->bIsReader );
102727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCur = 0;
102784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCur = p->apCsr[pOp->p1];
102785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur!=0
102786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS( pCur->eCurType==CURTYPE_VTAB )
102787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS( pCur->uc.pVCur->pVtab==pOp->p4.pVtab->pVtab )
102788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
102789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This opcode is a no-op if the cursor is already open */
102790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
102791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
102728 102792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVCur = 0;
102729 102793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVtab = pOp->p4.pVtab->pVtab;
102730 102794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pVtab==0 || NEVER(pVtab->pModule==0) ){
102731 102795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_LOCKED;
102732 102796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto abort_due_to_error;
@@ -109563,15 +109627,20 @@
109563 109627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** type of the function
109564 109628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
109565 109629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
109566 109630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109567 109631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SUBQUERY
109632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case TK_EXISTS:
109633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr) );
109634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->bHasExists = 1;
109635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* no break */ deliberate_fall_through
109568 109636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SELECT:
109569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case TK_EXISTS: testcase( pExpr->op==TK_EXISTS );
109570 109637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
109571 109638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IN: {
109572 109639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_IN );
109640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pExpr->op==TK_EXISTS );
109641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pExpr->op==TK_SELECT );
109573 109642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(pExpr) ){
109574 109643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nRef = pNC->nRef;
109575 109644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IsCheck );
109576 109645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_PartIdx );
109577 109646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IdxExpr );
@@ -111660,11 +111729,11 @@
111660 111729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRight;
111661 111730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pRight==0 ){
111662 111731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pLeft;
111663 111732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
111664 111733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 f = pLeft->flags | pRight->flags;
111665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (f&(EP_OuterON|EP_InnerON|EP_IsFalse))==EP_IsFalse
111734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (f&(EP_OuterON|EP_InnerON|EP_IsFalse|EP_HasFunc))==EP_IsFalse
111666 111735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !IN_RENAME_OBJECT
111667 111736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
111668 111737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDeferredDelete(pParse, pLeft);
111669 111738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDeferredDelete(pParse, pRight);
111670 111739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3Expr(db, TK_INTEGER, "0");
@@ -112940,12 +113009,15 @@
112940 113009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then compute the right operand first and do an IsNull jump if the
112941 113010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** right operand evalutes to NULL.
112942 113011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
112943 113012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( exprEvalRhsFirst(pExpr) && sqlite3ExprCanBeNull(pExpr->pRight) ){
112944 113013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, pFree2);
112945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrIsNull = sqlite3VdbeAddOp1(v, OP_IsNull, r2); VdbeCoverage(v);
113014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = sqlite3VdbeAddOp1(v, OP_IsNull, r2);
113015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "skip left operand"));
113016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
112946 113017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
113018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = 0; /* Silence a false-positive uninit-var warning in MSVC */
112947 113019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrIsNull = 0;
112948 113020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112949 113021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, pFree1);
112950 113022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrIsNull==0 ){
112951 113023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -112955,11 +113027,13 @@
112955 113027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** operand.
112956 113028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
112957 113029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr->pRight, EP_Subquery)
112958 113030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3ExprCanBeNull(pExpr->pLeft)
112959 113031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
112960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrIsNull = sqlite3VdbeAddOp1(v, OP_IsNull, r1); VdbeCoverage(v);
113032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = sqlite3VdbeAddOp1(v, OP_IsNull, r1);
113033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "skip right operand"));
113034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
112961 113035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112962 113036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, pFree2);
112963 113037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112964 113038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pR1 = r1;
112965 113039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pR2 = r2;
@@ -114408,21 +114482,27 @@
114408 114482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dest.eDest = SRT_Exists;
114409 114483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, dest.iSDParm);
114410 114484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "Init EXISTS result"));
114411 114485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114412 114486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSel->pLimit ){
114413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The subquery already has a limit. If the pre-existing limit is X
114414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** then make the new limit X<>0 so that the new limit is either 1 or 0 */
114415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3 *db = pParse->db;
114416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLimit = sqlite3Expr(db, TK_INTEGER, "0");
114417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pLimit ){
114418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLimit->affExpr = SQLITE_AFF_NUMERIC;
114419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLimit = sqlite3PExpr(pParse, TK_NE,
114420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDup(db, pSel->pLimit->pLeft, 0), pLimit);
114421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
114422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDeferredDelete(pParse, pSel->pLimit->pLeft);
114423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pSel->pLimit->pLeft = pLimit;
114487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The subquery already has a limit. If the pre-existing limit X is
114488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** not already integer value 1 or 0, then make the new limit X<>0 so that
114489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the new limit is either 1 or 0 */
114490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pLeft = pSel->pLimit->pLeft;
114491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pLeft, EP_IntValue)==0
114492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (pLeft->u.iValue!=1 && pLeft->u.iValue!=0)
114493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
114494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db = pParse->db;
114495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLimit = sqlite3Expr(db, TK_INTEGER, "0");
114496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pLimit ){
114497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLimit->affExpr = SQLITE_AFF_NUMERIC;
114498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLimit = sqlite3PExpr(pParse, TK_NE,
114499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprDup(db, pLeft, 0), pLimit);
114500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
114501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprDeferredDelete(pParse, pLeft);
114502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSel->pLimit->pLeft = pLimit;
114503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
114424 114504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
114425 114505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is no pre-existing limit add a limit of 1 */
114426 114506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLimit = sqlite3Expr(pParse->db, TK_INTEGER, "1");
114427 114507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSel->pLimit = sqlite3PExpr(pParse, TK_LIMIT, pLimit, 0);
114428 114508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -115628,10 +115708,11 @@
115628 115708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
115629 115709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrIsNull ){
115630 115710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
115631 115711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrIsNull);
115632 115712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Null, 0, target);
115713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "short-circut value"));
115633 115714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115634 115715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
115635 115716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115636 115717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_UMINUS: {
115637 115718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLeft = pExpr->pLeft;
@@ -128437,18 +128518,21 @@
128437 128518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Append the contents of SrcList p2 to SrcList p1 and return the resulting
128438 128519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SrcList. Or, if an error occurs, return NULL. In all cases, p1 and p2
128439 128520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are deleted by this function.
128440 128521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
128441 128522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE SrcList *sqlite3SrcListAppendList(Parse *pParse, SrcList *p1, SrcList *p2){
128442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p1 && p1->nSrc==1 );
128523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p1 );
128443 128524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p2 ){
128444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SrcList *pNew = sqlite3SrcListEnlarge(pParse, p1, p2->nSrc, 1);
128525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nOld = p1->nSrc;
128526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SrcList *pNew = sqlite3SrcListEnlarge(pParse, p1, p2->nSrc, nOld);
128445 128527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew==0 ){
128446 128528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcListDelete(pParse->db, p2);
128447 128529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
128448 128530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1 = pNew;
128449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(&p1->a[1], p2->a, p2->nSrc*sizeof(SrcItem));
128531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(&p1->a[nOld], p2->a, p2->nSrc*sizeof(SrcItem));
128532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nOld==1 || (p2->nSrc==1 && (p2->a[0].fg.jointype&JT_LTORJ)==0) );
128533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p1->nSrc>=2 );
128450 128534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(pParse->db, p2);
128451 128535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1->a[0].fg.jointype |= (JT_LTORJ & p1->a[1].fg.jointype);
128452 128536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128453 128537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128454 128538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p1;
@@ -145523,11 +145607,11 @@
145523 145607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc, /* Array of tables to search */
145524 145608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iStart, /* First member of pSrc->a[] to check */
145525 145609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEnd, /* Last member of pSrc->a[] to check */
145526 145610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zCol, /* Name of the column we are looking for */
145527 145611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *piTab, /* Write index of pSrc->a[] here */
145528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *piCol, /* Write index of pSrc->a[*piTab].pTab->aCol[] here */
145612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *piCol, /* Write index of pSrc->a[*piTab].pSTab->aCol[] here */
145529 145613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bIgnoreHidden /* Ignore hidden columns */
145530 145614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
145531 145615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; /* For looping over tables in pSrc */
145532 145616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol; /* Index of column matching zCol */
145533 145617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -148175,11 +148259,13 @@
148175 148259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int unionTab; /* Cursor number of the temp table holding result */
148176 148260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 op = 0; /* One of the SRT_ operations to apply to self */
148177 148261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int priorOp; /* The SRT_ operation to apply to prior selects */
148178 148262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLimit; /* Saved values of p->nLimit */
148179 148263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addr;
148264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int emptyBypass = 0; /* IfEmpty opcode to bypass RHS */
148180 148265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest uniondest;
148266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
148181 148267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148182 148268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->op==TK_EXCEPT );
148183 148269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->op==TK_UNION );
148184 148270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
priorOp = SRT_Union;
148185 148271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( dest.eDest==priorOp ){
@@ -148214,10 +148300,12 @@
148214 148300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148215 148301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code the current SELECT statement
148216 148302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
148217 148303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->op==TK_EXCEPT ){
148218 148304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = SRT_Except;
148305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ emptyBypass = sqlite3VdbeAddOp1(v, OP_IfEmpty, unionTab);
148306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
148219 148307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
148220 148308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->op==TK_UNION );
148221 148309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = SRT_Union;
148222 148310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148223 148311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = 0;
@@ -148234,10 +148322,11 @@
148234 148322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = pPrior;
148235 148323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pOrderBy = 0;
148236 148324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->op==TK_UNION ){
148237 148325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
148238 148326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( emptyBypass ) sqlite3VdbeJumpHere(v, emptyBypass);
148239 148328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, p->pLimit);
148240 148329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLimit = pLimit;
148241 148330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iLimit = 0;
148242 148331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iOffset = 0;
148243 148332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -148267,10 +148356,11 @@
148267 148356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCont, iBreak, iStart;
148268 148357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLimit;
148269 148358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addr;
148270 148359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest intersectdest;
148271 148360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r1;
148361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int emptyBypass;
148272 148362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148273 148363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* INTERSECT is different from the others since it requires
148274 148364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** two temporary tables. Hence it has its own case. Begin
148275 148365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by allocating the tables we will need.
148276 148366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -148290,10 +148380,11 @@
148290 148380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TREETRACE(0x400, pParse, p, ("multiSelect INTERSECT left...\n"));
148291 148381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Select(pParse, pPrior, &intersectdest);
148292 148382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
148293 148383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto multi_select_end;
148294 148384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ emptyBypass = sqlite3VdbeAddOp1(v, OP_IfEmpty, tab1); VdbeCoverage(v);
148295 148386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148296 148387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code the current SELECT into temporary table "tab2"
148297 148388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
148298 148389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab2, 0);
148299 148390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->addrOpenEphm[1] == -1 );
@@ -148321,11 +148412,11 @@
148321 148412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) break;
148322 148413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pEList );
148323 148414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iBreak = sqlite3VdbeMakeLabel(pParse);
148324 148415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCont = sqlite3VdbeMakeLabel(pParse);
148325 148416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
computeLimitRegisters(pParse, p, iBreak);
148326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Rewind, tab1, iBreak); VdbeCoverage(v);
148417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_Rewind, tab1);
148327 148418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3GetTempReg(pParse);
148328 148419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStart = sqlite3VdbeAddOp2(v, OP_RowData, tab1, r1);
148329 148420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NotFound, tab2, iCont, r1, 0);
148330 148421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
148331 148422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, r1);
@@ -148333,10 +148424,11 @@
148333 148424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, 0, &dest, iCont, iBreak);
148334 148425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iCont);
148335 148426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Next, tab1, iStart); VdbeCoverage(v);
148336 148427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iBreak);
148337 148428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, tab2, 0);
148429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, emptyBypass);
148338 148430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, tab1, 0);
148339 148431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
148340 148432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148341 148433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148342 148434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -149011,10 +149103,11 @@
149011 149103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct SubstContext {
149012 149104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse; /* The parsing context */
149013 149105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTable; /* Replace references to this table */
149014 149106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iNewTable; /* New table number */
149015 149107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isOuterJoin; /* Add TK_IF_NULL_ROW opcodes on each replacement */
149108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nSelDepth; /* Depth of sub-query recursion. Top==1 */
149016 149109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pEList; /* Replacement expressions */
149017 149110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pCList; /* Collation sequences for replacement expr */
149018 149111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} SubstContext;
149019 149112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149020 149113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Forward Declarations */
@@ -149117,10 +149210,13 @@
149117 149210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149118 149211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149119 149212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
149120 149213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_IF_NULL_ROW && pExpr->iTable==pSubst->iTable ){
149121 149214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pSubst->iNewTable;
149215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
149216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op==TK_AGG_FUNCTION && pExpr->op2>=pSubst->nSelDepth ){
149217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->op2--;
149122 149218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149123 149219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pLeft = substExpr(pSubst, pExpr->pLeft);
149124 149220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pRight = substExpr(pSubst, pExpr->pRight);
149125 149221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(pExpr) ){
149126 149222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substSelect(pSubst, pExpr->x.pSelect, 1);
@@ -149155,10 +149251,11 @@
149155 149251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
149156 149252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc;
149157 149253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem;
149158 149254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
149159 149255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !p ) return;
149256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSubst->nSelDepth++;
149160 149257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
149161 149258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, p->pEList);
149162 149259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, p->pGroupBy);
149163 149260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, p->pOrderBy);
149164 149261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pHaving = substExpr(pSubst, p->pHaving);
@@ -149172,10 +149269,11 @@
149172 149269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isTabFunc ){
149173 149270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, pItem->u1.pFuncArg);
149174 149271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149175 149272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149176 149273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}while( doPrior && (p = p->pPrior)!=0 );
149274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSubst->nSelDepth--;
149177 149275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149178 149276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW) */
149179 149277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149180 149278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW)
149181 149279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -149783,11 +149881,11 @@
149783 149881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Defer deleting the Table object associated with the
149784 149882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** subquery until code generation is
149785 149883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** complete, since there may still exist Expr.pTab entries that
149786 149884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** refer to the subquery even after flattening. Ticket #3346.
149787 149885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
149788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pSubitem->pTab is always non-NULL by test restrictions and tests above.
149886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pSubitem->pSTab is always non-NULL by test restrictions and tests above.
149789 149887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
149790 149888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pSubitem->pSTab!=0) ){
149791 149889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTabToDel = pSubitem->pSTab;
149792 149890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTabToDel->nTabRef==1 ){
149793 149891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pToplevel = sqlite3ParseToplevel(pParse);
@@ -149913,10 +150011,11 @@
149913 150011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SubstContext x;
149914 150012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pParse = pParse;
149915 150013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iTable = iParent;
149916 150014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iNewTable = iNewParent;
149917 150015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.isOuterJoin = isOuterJoin;
150016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x.nSelDepth = 0;
149918 150017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pEList = pSub->pEList;
149919 150018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pCList = findLeftmostExprlist(pSub);
149920 150019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substSelect(&x, pParent, 0);
149921 150020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149922 150021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -150498,10 +150597,11 @@
150498 150597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsetJoinExpr(pNew, -1, 1);
150499 150598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pParse = pParse;
150500 150599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iTable = pSrc->iCursor;
150501 150600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iNewTable = pSrc->iCursor;
150502 150601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.isOuterJoin = 0;
150602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x.nSelDepth = 0;
150503 150603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pEList = pSubq->pEList;
150504 150604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pCList = findLeftmostExprlist(pSubq);
150505 150605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = substExpr(&x, pNew);
150506 150606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
150507 150607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubq->pWin && 0==pushDownWindowCheck(pParse, pSubq, pNew) ){
@@ -150895,11 +150995,11 @@
150895 150995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a WITH clause on the stack currently maintained by the parser (on the
150896 150996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pParse->pWith linked list). And if currently processing a CTE
150897 150997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CTE expression, through routine checks to see if the reference is
150898 150998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a recursive reference to the CTE.
150899 150999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
150900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If pFrom matches a CTE according to either of these two above, pFrom->pTab
151000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If pFrom matches a CTE according to either of these two above, pFrom->pSTab
150901 151001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and other fields are populated accordingly.
150902 151002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
150903 151003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 0 if no match is found.
150904 151004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 1 if a match is found.
150905 151005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 2 if an error condition is detected.
@@ -152521,10 +152621,79 @@
152521 152621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem--;
152522 152622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isSubquery ) return 0; /* (1c-i) */
152523 152623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
152524 152624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
152525 152625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
152626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
152627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
152628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Argument pWhere is the WHERE clause belonging to SELECT statement p. This
152629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** function attempts to transform expressions of the form:
152630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** EXISTS (SELECT ...)
152632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** into joins. For example, given
152634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CREATE TABLE sailors(sid INTEGER PRIMARY KEY, name TEXT);
152636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CREATE TABLE reserves(sid INT, day DATE, PRIMARY KEY(sid, day));
152637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SELECT name FROM sailors AS S WHERE EXISTS (
152639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SELECT * FROM reserves AS R WHERE S.sid = R.sid AND R.day = '2022-10-25'
152640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** );
152641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the SELECT statement may be transformed as follows:
152643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SELECT name FROM sailors AS S, reserves AS R
152645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** WHERE S.sid = R.sid AND R.day = '2022-10-25';
152646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
152647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static SQLITE_NOINLINE void existsToJoin(
152648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Parse *pParse,
152649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Select *p,
152650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pWhere
152651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
152652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWhere
152653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !ExprHasProperty(pWhere, EP_OuterON|EP_InnerON)
152654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && p->pSrc->nSrc>0
152655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && p->pSrc->nSrc<BMS
152656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pParse->db->mallocFailed==0
152657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
152658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWhere->op==TK_AND ){
152659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pRight = pWhere->pRight;
152660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ existsToJoin(pParse, p, pWhere->pLeft);
152661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ existsToJoin(pParse, p, pRight);
152662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else if( pWhere->op==TK_EXISTS ){
152664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Select *pSub = pWhere->x.pSelect;
152665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSub->pSrc->nSrc==1
152666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pSub->selFlags & SF_Aggregate)==0
152667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pSub->pWhere
152668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !pSub->pSrc->a[0].fg.isSubquery
152669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
152670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(pWhere, 0, sizeof(*pWhere));
152671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWhere->op = TK_INTEGER;
152672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWhere->u.iValue = 1;
152673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(pWhere, EP_IntValue);
152674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
152675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->pWhere!=0 );
152676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSub->pSrc->a[0].fg.fromExists = 1;
152677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSub->pSrc->a[0].fg.jointype |= JT_CROSS;
152678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pSrc = sqlite3SrcListAppendList(pParse, p->pSrc, pSub->pSrc);
152679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pWhere = sqlite3PExpr(pParse, TK_AND, p->pWhere, pSub->pWhere);
152680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
152681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSub->pWhere = 0;
152682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSub->pSrc = 0;
152683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ParserAddCleanup(pParse, sqlite3SelectDeleteGeneric, pSub);
152684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if TREETRACE_ENABLED
152685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3TreeTrace & 0x100000 ){
152686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ TREETRACE(0x100000,pParse,p,
152687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ("After EXISTS-to-JOIN optimization:\n"));
152688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3TreeViewSelect(0, p, 0);
152689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
152691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152526 152695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152527 152696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
152528 152697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate byte-code for the SELECT statement given in the p argument.
152529 152698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
152530 152699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The results are returned according to the SelectDest structure.
@@ -152889,10 +153058,17 @@
152889 153058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
152890 153059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pNext==0 ) ExplainQueryPlanPop(pParse);
152891 153060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
152892 153061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
152893 153062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
153063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
153064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If there may be an "EXISTS (SELECT ...)" in the WHERE clause, attempt
153065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to change it into a join. */
153066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->bHasExists && OptimizationEnabled(db,SQLITE_ExistsToJoin) ){
153067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ existsToJoin(pParse, p, p->pWhere);
153068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTabList = p->pSrc;
153069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152894 153070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152895 153071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do the WHERE-clause constant propagation optimization if this is
152896 153072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a join. No need to spend time on this operation for non-join queries
152897 153073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** as the equivalent optimization will be handled by query planner in
152898 153074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3WhereBegin(). tag-select-0330
@@ -153676,24 +153852,24 @@
153676 153852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** over to a0,a1,a2. It then calls the output subroutine
153677 153853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and resets the aggregate accumulator registers in preparation
153678 153854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for the next GROUP BY batch.
153679 153855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153680 153856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regOutputRow, addrOutputRow);
153681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "output one row"));
153857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "output one row of %d", p->selId));
153682 153858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeMove(pParse, iBMem, iAMem, pGroupBy->nExpr);
153683 153859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IfPos, iAbortFlag, addrEnd); VdbeCoverage(v);
153684 153860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "check abort flag"));
153685 153861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset);
153686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "reset accumulator"));
153862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "reset accumulator %d", p->selId));
153687 153863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153688 153864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Update the aggregate accumulators based on the content of
153689 153865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the current row
153690 153866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153691 153867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
153692 153868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
updateAccumulator(pParse, iUseFlag, pAggInfo, eDist);
153693 153869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 1, iUseFlag);
153694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "indicate data in accumulator"));
153870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "indicate data in accumulator %d", p->selId));
153695 153871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153696 153872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* End of the loop
153697 153873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153698 153874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( groupBySort ){
153699 153875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SorterNext, pAggInfo->sortingIdx,addrTopOfLoop);
@@ -153706,11 +153882,11 @@
153706 153882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pDistinct);
153707 153883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153708 153884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Output the final row of result
153709 153885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153710 153886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regOutputRow, addrOutputRow);
153711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "output final row"));
153887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "output final row of %d", p->selId));
153712 153888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153713 153889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump over the subroutines
153714 153890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153715 153891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGoto(v, addrEnd);
153716 153892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -153727,26 +153903,26 @@
153727 153903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
153728 153904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrOutputRow);
153729 153905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOutputRow = sqlite3VdbeCurrentAddr(v);
153730 153906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IfPos, iUseFlag, addrOutputRow+2);
153731 153907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
153732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "Groupby result generator entry point"));
153908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "Groupby result generator entry point %d", p->selId));
153733 153909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
153734 153910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
finalizeAggFunctions(pParse, pAggInfo);
153735 153911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pHaving, addrOutputRow+1, SQLITE_JUMPIFNULL);
153736 153912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, -1, &sSort,
153737 153913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&sDistinct, pDest,
153738 153914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOutputRow+1, addrSetAbort);
153739 153915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
153740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "end groupby result generator"));
153916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "end groupby result generator %d", p->selId));
153741 153917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153742 153918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate a subroutine that will reset the group-by accumulator
153743 153919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153744 153920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrReset);
153745 153921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
resetAccumulator(pParse, pAggInfo);
153746 153922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, iUseFlag);
153747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "indicate accumulator empty"));
153923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "indicate accumulator %d empty", p->selId));
153748 153924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regReset);
153749 153925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153750 153926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( distFlag!=0 && eDist!=WHERE_DISTINCT_NOOP ){
153751 153927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_func *pF = &pAggInfo->aFunc[0];
153752 153928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr);
@@ -159334,10 +159510,11 @@
159334 159510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct WhereLevel {
159335 159511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLeftJoin; /* Memory cell used to implement LEFT OUTER JOIN */
159336 159512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTabCur; /* The VDBE cursor used to access the table */
159337 159513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iIdxCur; /* The VDBE cursor used to access pIdx */
159338 159514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrBrk; /* Jump here to break out of the loop */
159515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrHalt; /* Abort the query due to empty table or similar */
159339 159516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNxt; /* Jump here to start the next IN combination */
159340 159517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrSkip; /* Jump here for next iteration of skip-scan */
159341 159518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrCont; /* Jump here to continue with the next loop cycle */
159342 159519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrFirst; /* First instruction of interior of the loop */
159343 159520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrBody; /* Beginning of the body of this loop */
@@ -160043,10 +160220,11 @@
160043 160220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pLoop; /* The controlling WhereLoop object */
160044 160221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 flags; /* Flags that describe this loop */
160045 160222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_DEBUG) && !defined(SQLITE_OMIT_EXPLAIN)
160046 160223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zMsg; /* Text to add to EQP output */
160047 160224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
160225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFormat;
160048 160226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
StrAccum str; /* EQP output string */
160049 160227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char zBuf[100]; /* Initial space for EQP output string */
160050 160228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
160051 160229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ) return;
160052 160230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -160057,11 +160235,18 @@
160057 160235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0))
160058 160236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (wctrlFlags&(WHERE_ORDERBY_MIN|WHERE_ORDERBY_MAX));
160059 160237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
160060 160238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StrAccumInit(&str, db, zBuf, sizeof(zBuf), SQLITE_MAX_LENGTH);
160061 160239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
str.printfFlags = SQLITE_PRINTF_INTERNAL;
160062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_str_appendf(&str, "%s %S", isSearch ? "SEARCH" : "SCAN", pItem);
160240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->fg.fromExists ){
160241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFormat = "SINGLETON %S";
160242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( isSearch ){
160243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFormat = "SEARCH %S";
160244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
160245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFormat = "SCAN %S";
160246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
160247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(&str, zFormat, pItem);
160063 160248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (flags & (WHERE_IPK|WHERE_VIRTUALTABLE))==0 ){
160064 160249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFmt = 0;
160065 160250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx;
160066 160251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
160067 160252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLoop->u.btree.pIndex!=0 );
@@ -161308,19 +161493,20 @@
161308 161493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereInfo *pWInfo, /* Complete information about the WHERE clause */
161309 161494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLevel, /* Which level of pWInfo->a[] should be coded */
161310 161495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNxt, /* Jump here to bypass inner loops */
161311 161496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask notReady /* Loops that are not ready */
161312 161497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
161498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int saved_addrBrk;
161313 161499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( ++iLevel < pWInfo->nLevel ){
161314 161500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLevel *pLevel = &pWInfo->a[iLevel];
161315 161501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pLoop = pLevel->pWLoop;
161316 161502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->regFilter==0 ) continue;
161317 161503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->pWLoop->nSkip ) continue;
161318 161504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ,--- Because sqlite3ConstructBloomFilter() has will not have set
161319 161505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** vvvvv--' pLevel->regFilter if this were true. */
161320 161506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pLoop->prereq & notReady) ) continue;
161321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pLevel->addrBrk==0 );
161507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ saved_addrBrk = pLevel->addrBrk;
161322 161508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->addrBrk = addrNxt;
161323 161509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & WHERE_IPK ){
161324 161510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pTerm = pLoop->aLTerm[0];
161325 161511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRowid;
161326 161512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTerm!=0 );
@@ -161346,11 +161532,11 @@
161346 161532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(pParse->pVdbe, OP_Filter, pLevel->regFilter,
161347 161533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrNxt, r1, nEq);
161348 161534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(pParse->pVdbe);
161349 161535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161350 161536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->regFilter = 0;
161351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLevel->addrBrk = 0;
161537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrBrk = saved_addrBrk;
161352 161538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161353 161539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161354 161540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161355 161541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
161356 161542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Loop pLoop is a WHERE_INDEXED level that uses at least one IN(...)
@@ -161393,11 +161579,10 @@
161393 161579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereClause *pWC; /* Decomposition of the entire WHERE clause */
161394 161580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pTerm; /* A WHERE clause term */
161395 161581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db; /* Database connection */
161396 161582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pTabItem; /* FROM clause term being coded */
161397 161583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrBrk; /* Jump here to break out of the loop */
161398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrHalt; /* addrBrk for the outermost loop */
161399 161584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrCont; /* Jump here to continue with next cycle */
161400 161585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRowidReg = 0; /* Rowid is stored in this register, if not zero */
161401 161586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iReleaseReg = 0; /* Temp register to free before returning */
161402 161587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx = 0; /* Index used by loop (if any) */
161403 161588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLoop; /* Iteration of constraint generator loop */
@@ -161437,11 +161622,11 @@
161437 161622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When there is an IN operator, we also have a "addrNxt" label that
161438 161623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** means to continue with the next IN value combination. When
161439 161624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** there are no IN operators in the constraints, the "addrNxt" label
161440 161625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is the same as "addrBrk".
161441 161626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
161442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrBrk = pLevel->addrBrk = pLevel->addrNxt = sqlite3VdbeMakeLabel(pParse);
161627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrBrk = pLevel->addrNxt = pLevel->addrBrk;
161443 161628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrCont = pLevel->addrCont = sqlite3VdbeMakeLabel(pParse);
161444 161629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161445 161630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If this is the right table of a LEFT OUTER JOIN, allocate and
161446 161631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** initialize a memory cell that records if this table matches any
161447 161632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** row of the left table of the join.
@@ -161453,18 +161638,10 @@
161453 161638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->iLeftJoin = ++pParse->nMem;
161454 161639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, pLevel->iLeftJoin);
161455 161640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "init LEFT JOIN match flag"));
161456 161641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161457 161642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Compute a safe address to jump to if we discover that the table for
161459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** this loop is empty and can never contribute content. */
161460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(j=iLevel; j>0; j--){
161461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWInfo->a[j].iLeftJoin ) break;
161462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWInfo->a[j].pRJ ) break;
161463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
161464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrHalt = pWInfo->a[j].addrBrk;
161465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
161466 161643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Special case of a FROM clause subquery implemented as a co-routine */
161467 161644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTabItem->fg.viaCoroutine ){
161468 161645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regYield;
161469 161646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Subquery *pSubq;
161470 161647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTabItem->fg.isSubquery && pTabItem->u4.pSubq!=0 );
@@ -161699,11 +161876,11 @@
161699 161876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, pX->op==TK_LE);
161700 161877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, pX->op==TK_LT);
161701 161878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, pX->op==TK_GE);
161702 161879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, rTemp);
161703 161880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
161704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, bRev ? OP_Last : OP_Rewind, iCur, addrHalt);
161881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, bRev ? OP_Last : OP_Rewind, iCur, pLevel->addrHalt);
161705 161882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev==0);
161706 161883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev!=0);
161707 161884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161708 161885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pEnd ){
161709 161886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pX;
@@ -162494,11 +162671,11 @@
162494 162671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = OP_Noop;
162495 162672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
162496 162673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCursorHint(pTabItem, pWInfo, pLevel, 0);
162497 162674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = aStep[bRev];
162498 162675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p1 = iCur;
162499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLevel->p2 = 1 + sqlite3VdbeAddOp2(v, aStart[bRev], iCur, addrHalt);
162676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->p2 = 1 + sqlite3VdbeAddOp2(v, aStart[bRev],iCur,pLevel->addrHalt);
162500 162677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev==0);
162501 162678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev!=0);
162502 162679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP;
162503 162680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
162504 162681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -164509,11 +164686,11 @@
164509 164686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SELECT statement passed as the second argument. These terms are only
164510 164687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** added if:
164511 164688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
164512 164689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 1. The SELECT statement has a LIMIT clause, and
164513 164690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2. The SELECT statement is not an aggregate or DISTINCT query, and
164514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 3. The SELECT statement has exactly one object in its from clause, and
164691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 3. The SELECT statement has exactly one object in its FROM clause, and
164515 164692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that object is a virtual table, and
164516 164693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 4. There are no terms in the WHERE clause that will not be passed
164517 164694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the virtual table xBestIndex method.
164518 164695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 5. The ORDER BY clause, if any, will be made available to the xBestIndex
164519 164696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** method.
@@ -164546,12 +164723,26 @@
164546 164723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pWC->a[] array. So this term can be ignored, as a LIMIT clause
164547 164724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will only be added if each of the child terms passes the
164548 164725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (leftCursor==iCsr) test below. */
164549 164726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
164550 164727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWC->a[ii].leftCursor!=iCsr ) return;
164552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWC->a[ii].prereqRight!=0 ) return;
164728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWC->a[ii].leftCursor==iCsr && pWC->a[ii].prereqRight==0 ) continue;
164729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
164730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If this term has a parent with exactly one child, and the parent will
164731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be passed through to xBestIndex, then this term can be ignored. */
164732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWC->a[ii].iParent>=0 ){
164733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WhereTerm *pParent = &pWC->a[ pWC->a[ii].iParent ];
164734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParent->leftCursor==iCsr
164735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pParent->prereqRight==0
164736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pParent->nChild==1
164737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
164738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
164739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
164740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
164741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
164742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This term will not be passed through. Do not add a LIMIT clause. */
164743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
164553 164744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164554 164745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
164555 164746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check condition (5). Return early if it is not met. */
164556 164747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrderBy ){
164557 164748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pOrderBy->nExpr; ii++){
@@ -165986,11 +166177,13 @@
165986 166177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_InitCoroutine, regYield, 0, pSubq->addrFillSub);
165987 166178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrTop = sqlite3VdbeAddOp1(v, OP_Yield, regYield);
165988 166179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
165989 166180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "next row of %s", pSrc->pSTab->zName));
165990 166181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
165991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, pLevel->iTabCur); VdbeCoverage(v);
166182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pLevel->addrHalt );
166183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrTop = sqlite3VdbeAddOp2(v, OP_Rewind,pLevel->iTabCur,pLevel->addrHalt);
166184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
165992 166185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
165993 166186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPartial ){
165994 166187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iContinue = sqlite3VdbeMakeLabel(pParse);
165995 166188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pPartial, iContinue, SQLITE_JUMPIFNULL);
165996 166189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop->wsFlags |= WHERE_PARTIALIDX;
@@ -166014,15 +166207,18 @@
166014 166207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLevel->iIdxCur>0 );
166015 166208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
translateColumnToCopy(pParse, addrTop, pLevel->iTabCur,
166016 166209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->u4.pSubq->regResult, pLevel->iIdxCur);
166017 166210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGoto(v, addrTop);
166018 166211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->fg.viaCoroutine = 0;
166212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrTop);
166019 166213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
166020 166214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1); VdbeCoverage(v);
166021 166215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_STMTSTATUS_AUTOINDEX);
166216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pSrc->fg.jointype & JT_LEFT)!=0 ){
166217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrTop);
166218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
166022 166219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
166023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, addrTop);
166024 166220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regRecord);
166025 166221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
166026 166222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump here when skipping the initialization */
166027 166223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrInit);
166028 166224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeScanStatusRange(v, addrExp, addrExp, -1);
@@ -168298,10 +168494,11 @@
168298 168494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& saved_nEq==pNew->nLTerm
168299 168495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pProbe->noSkipScan==0
168300 168496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pProbe->hasStat1!=0
168301 168497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& OptimizationEnabled(db, SQLITE_SkipScan)
168302 168498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pProbe->aiRowLogEst[saved_nEq+1]>=42 /* TUNING: Minimum for skip-scan */
168499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pSrc->fg.fromExists==0
168303 168500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (rc = whereLoopResize(db, pNew, pNew->nLTerm+1))==SQLITE_OK
168304 168501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
168305 168502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LogEst nIter;
168306 168503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.btree.nEq++;
168307 168504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nSkip++;
@@ -171855,10 +172052,18 @@
171855 172052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171856 172053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTabItem = &pTabList->a[pLevel->iFrom];
171857 172054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pTabItem->pSTab;
171858 172055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
171859 172056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop = pLevel->pWLoop;
172057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrBrk = sqlite3VdbeMakeLabel(pParse);
172058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ii==0 || (pTabItem[0].fg.jointype & JT_LEFT)!=0 ){
172059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrHalt = pLevel->addrBrk;
172060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pWInfo->a[ii-1].pRJ ){
172061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrHalt = pWInfo->a[ii-1].addrBrk;
172062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
172063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrHalt = pWInfo->a[ii-1].addrHalt;
172064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
171860 172065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTab->tabFlags & TF_Ephemeral)!=0 || IsView(pTab) ){
171861 172066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do nothing */
171862 172067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
171863 172068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
171864 172069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){
@@ -171906,10 +172111,17 @@
171906 172111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171907 172112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_COLUMN_USED_MASK
171908 172113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Dup8(v, OP_ColumnsUsed, pTabItem->iCursor, 0, 0,
171909 172114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(const u8*)&pTabItem->colUsed, P4_INT64);
171910 172115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
172116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ii>=2
172117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pTabItem[0].fg.jointype & (JT_LTORJ|JT_LEFT))==0
172118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pLevel->addrHalt==pWInfo->a[0].addrHalt
172119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
172120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IfEmpty, pTabItem->iCursor, pWInfo->iBreak);
172121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
172122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
171911 172123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
171912 172124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
171913 172125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171914 172126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & WHERE_INDEXED ){
171915 172127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIx = pLoop->u.btree.pIndex;
@@ -172162,10 +172374,13 @@
172162 172374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_SeekLT);
172163 172375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_SeekGT);
172164 172376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 1, pLevel->p2);
172165 172377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
172166 172378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_DISABLE_SKIPAHEAD_DISTINCT */
172379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTabList->a[pLevel->iFrom].fg.fromExists ){
172380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
172381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
172167 172382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The common case: Advance to the next row */
172168 172383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->addrCont ) sqlite3VdbeResolveLabel(v, pLevel->addrCont);
172169 172384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, pLevel->op, pLevel->p1, pLevel->p2, pLevel->p3);
172170 172385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, pLevel->p5);
172171 172386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
@@ -180234,16 +180449,25 @@
180234 180449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Expressions of the form
180235 180450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
180236 180451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expr1 IN ()
180237 180452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expr1 NOT IN ()
180238 180453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
180239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** simplify to constants 0 (false) and 1 (true), respectively,
180240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** regardless of the value of expr1.
180454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** simplify to constants 0 (false) and 1 (true), respectively.
180455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
180456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Except, do not apply this optimization if expr1 contains a function
180457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** because that function might be an aggregate (we don't know yet whether
180458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** it is or not) and if it is an aggregate, that could change the meaning
180459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the whole query.
180241 180460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
180242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy590);
180243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yymsp[-4].minor.yy590 = sqlite3Expr(pParse->db, TK_STRING, yymsp[-3].minor.yy502 ? "true" : "false");
180244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( yymsp[-4].minor.yy590 ) sqlite3ExprIdToTrueFalse(yymsp[-4].minor.yy590);
180461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pB = sqlite3Expr(pParse->db, TK_STRING, yymsp[-3].minor.yy502 ? "true" : "false");
180462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pB ) sqlite3ExprIdToTrueFalse(pB);
180463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !ExprHasProperty(yymsp[-4].minor.yy590, EP_HasFunc) ){
180464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy590);
180465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yymsp[-4].minor.yy590 = pB;
180466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
180467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, yymsp[-3].minor.yy502 ? TK_OR : TK_AND, pB, yymsp[-4].minor.yy590);
180468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
180245 180469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
180246 180470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRHS = yymsp[-1].minor.yy402->a[0].pExpr;
180247 180471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yymsp[-1].minor.yy402->nExpr==1 && sqlite3ExprIsConstant(pParse,pRHS) && yymsp[-4].minor.yy590->op!=TK_VECTOR ){
180248 180472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yymsp[-1].minor.yy402->a[0].pExpr = 0;
180249 180473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy402);
@@ -247032,22 +247256,24 @@
247032 247256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLast ){
247033 247257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOff;
247034 247258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pIter->pLeaf);
247035 247259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->pLeaf = pLast;
247036 247260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafPgno = pgnoLast;
247037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iOff = fts5LeafFirstRowidOff(pLast);
247038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iOff>pLast->szLeaf ){
247039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- FTS5_CORRUPT_ITER(p, pIter);
247040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
247041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
247042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iOff += fts5GetVarint(&pLast->p[iOff], (u64*)&pIter->iRowid);
247043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIter->iLeafOffset = iOff;
247044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
247045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fts5LeafIsTermless(pLast) ){
247046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIter->iEndofDoclist = pLast->nn+1;
247047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
247048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIter->iEndofDoclist = fts5LeafFirstTermOff(pLast);
247261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->rc==SQLITE_OK ){
247262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iOff = fts5LeafFirstRowidOff(pLast);
247263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iOff>pLast->szLeaf ){
247264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ITER(p, pIter);
247265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
247266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
247267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iOff += fts5GetVarint(&pLast->p[iOff], (u64*)&pIter->iRowid);
247268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIter->iLeafOffset = iOff;
247269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
247270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fts5LeafIsTermless(pLast) ){
247271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIter->iEndofDoclist = pLast->nn+1;
247272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
247273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIter->iEndofDoclist = fts5LeafFirstTermOff(pLast);
247274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
247049 247275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
247050 247276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
247051 247277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
247052 247278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5SegIterReverseInitPage(p, pIter);
247053 247279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -250396,11 +250622,11 @@
250396 250622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250397 250623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pStruct->aLevel[i].nMerge<=nThis );
250398 250624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250399 250625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250400 250626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte += (((i64)pStruct->nLevel)+1) * sizeof(Fts5StructureLevel);
250401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( nByte==SZ_FTS5STRUCTURE(pStruct->nLevel+2) );
250627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nByte==(i64)SZ_FTS5STRUCTURE(pStruct->nLevel+2) );
250402 250628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = (Fts5Structure*)sqlite3Fts5MallocZero(&p->rc, nByte);
250403 250629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250404 250630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew ){
250405 250631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5StructureLevel *pLvl;
250406 250632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte = nSeg * sizeof(Fts5StructureSegment);
@@ -257648,11 +257874,11 @@
257648 257874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
257649 257875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
257650 257876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
257651 257877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
257652 257878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
257653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2025-06-30 16:41:40 0083d5169a46104a25355bdd9d5a2f4027b049191ebda571dd228477ec217296", -1, SQLITE_TRANSIENT);
257879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2025-07-04 14:24:18 6f98b16d210a9f5b6ca4b4599e3dab3263eddbae7c70ddbcabf988f4a1014e8b", -1, SQLITE_TRANSIENT);
257654 257880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
257655 257881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
257656 257882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
257657 257883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Implementation of fts5_locale(LOCALE, TEXT) function.
257658 257884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
257659 257885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!