@@ -1,8 +1,8 @@
1 1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******************************************************************************
2 2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This file is an amalgamation of many separate C source files from SQLite
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** version 3.8.3.1. By combining all the individual C code files into this
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** version 3.8.4. By combining all the individual C code files into this
4 4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** single large file, the entire code can be compiled as a single translation
5 5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** unit. This allows many compilers to do optimizations that would not be
6 6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** possible if the files were compiled separately. Performance improvements
7 7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of 5% or more are commonly seen when SQLite is compiled as a single
8 8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** translation unit.
@@ -187,13 +187,13 @@
187 187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
188 188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: [sqlite3_libversion()],
189 189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
190 190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
191 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION "3.8.3.1"
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION_NUMBER 3008003
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2014-02-11 14:52:19 ea3317a4803d71d88183b29f1d3086f46d68a00e"
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION "3.8.4"
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION_NUMBER 3008004
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2014-02-27 15:04:13 a6690400235705ecc0d1a60dacff6ad5fb1f944a"
195 195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
196 196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
197 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
198 198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version, sqlite3_sourceid
199 199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -6202,11 +6202,12 @@
6202 6202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_ISKEYWORD 16
6203 6203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17
6204 6204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
6205 6205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_EXPLAIN_STMT 19
6206 6206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_NEVER_CORRUPT 20
6207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_TESTCTRL_LAST 20
6207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_TESTCTRL_VDBE_COVERAGE 21
6208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_TESTCTRL_LAST 21
6208 6209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
6209 6210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
6210 6211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: SQLite Runtime Status
6211 6212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6212 6213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^This interface is used to retrieve runtime status information
@@ -8852,12 +8853,10 @@
8852 8853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeKey(BtCursor*, u32 offset, u32 amt, void*);
8853 8854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE const void *sqlite3BtreeKeyFetch(BtCursor*, u32 *pAmt);
8854 8855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE const void *sqlite3BtreeDataFetch(BtCursor*, u32 *pAmt);
8855 8856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeDataSize(BtCursor*, u32 *pSize);
8856 8857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeData(BtCursor*, u32 offset, u32 amt, void*);
8857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3BtreeSetCachedRowid(BtCursor*, sqlite3_int64);
8858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE sqlite3_int64 sqlite3BtreeGetCachedRowid(BtCursor*);
8859 8858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8860 8859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot, int, int*);
8861 8860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE struct Pager *sqlite3BtreePager(Btree*);
8862 8861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8863 8862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor*, u32 offset, u32 amt, void*);
@@ -8993,13 +8992,16 @@
8993 8992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} p4;
8994 8993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
8995 8994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zComment; /* Comment to improve readability */
8996 8995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
8997 8996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef VDBE_PROFILE
8998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int cnt; /* Number of times this instruction was executed */
8997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 cnt; /* Number of times this instruction was executed */
8999 8998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 cycles; /* Total time spent executing this instruction */
9000 8999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
9000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_VDBE_COVERAGE
9001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iSrcLine; /* Source-code line that generated this opcode */
9002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
9001 9003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
9002 9004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct VdbeOp VdbeOp;
9003 9005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9004 9006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9005 9007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -9105,75 +9107,75 @@
9105 9107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_VUpdate 15 /* synopsis: data=r[P3@P2] */
9106 9108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Goto 16
9107 9109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Gosub 17
9108 9110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Return 18
9109 9111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Not 19 /* same as TK_NOT, synopsis: r[P2]= !r[P1] */
9110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Yield 20
9111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_HaltIfNull 21 /* synopsis: if r[P3] null then halt */
9112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Halt 22
9113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Integer 23 /* synopsis: r[P2]=P1 */
9114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Int64 24 /* synopsis: r[P2]=P4 */
9115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_String 25 /* synopsis: r[P2]='P4' (len=P1) */
9116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Null 26 /* synopsis: r[P2..P3]=NULL */
9117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Blob 27 /* synopsis: r[P2]=P4 (len=P1) */
9118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Variable 28 /* synopsis: r[P2]=parameter(P1,P4) */
9119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Move 29 /* synopsis: r[P2@P3]=r[P1@P3] */
9120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Copy 30 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
9121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SCopy 31 /* synopsis: r[P2]=r[P1] */
9122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResultRow 32 /* synopsis: output=r[P1@P2] */
9123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CollSeq 33
9124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AddImm 34 /* synopsis: r[P1]=r[P1]+P2 */
9125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MustBeInt 35
9126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RealAffinity 36
9127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Permutation 37
9128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Compare 38
9129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Jump 39
9130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Once 40
9131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_If 41
9132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfNot 42
9133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Column 43 /* synopsis: r[P3]=PX */
9134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Affinity 44 /* synopsis: affinity(r[P1@P2]) */
9135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MakeRecord 45 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
9136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Count 46 /* synopsis: r[P2]=count() */
9137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReadCookie 47
9138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SetCookie 48
9139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VerifyCookie 49
9140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenRead 50 /* synopsis: root=P2 iDb=P3 */
9141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenWrite 51 /* synopsis: root=P2 iDb=P3 */
9142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenAutoindex 52 /* synopsis: nColumn=P2 */
9143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenEphemeral 53 /* synopsis: nColumn=P2 */
9144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterOpen 54
9145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenPseudo 55 /* synopsis: content in r[P2@P3] */
9146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Close 56
9147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekLt 57 /* synopsis: key=r[P3@P4] */
9148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekLe 58 /* synopsis: key=r[P3@P4] */
9149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekGe 59 /* synopsis: key=r[P3@P4] */
9150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekGt 60 /* synopsis: key=r[P3@P4] */
9151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Seek 61 /* synopsis: intkey=r[P2] */
9152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NoConflict 62 /* synopsis: key=r[P3@P4] */
9153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NotFound 63 /* synopsis: key=r[P3@P4] */
9154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Found 64 /* synopsis: key=r[P3@P4] */
9155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NotExists 65 /* synopsis: intkey=r[P3] */
9156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Sequence 66 /* synopsis: r[P2]=rowid */
9157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NewRowid 67 /* synopsis: r[P2]=rowid */
9158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Insert 68 /* synopsis: intkey=r[P3] data=r[P2] */
9159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_InsertInt 69 /* synopsis: intkey=P3 data=r[P2] */
9160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Delete 70
9112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_InitCoroutine 20
9113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_EndCoroutine 21
9114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Yield 22
9115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_HaltIfNull 23 /* synopsis: if r[P3]=null halt */
9116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Halt 24
9117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Integer 25 /* synopsis: r[P2]=P1 */
9118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Int64 26 /* synopsis: r[P2]=P4 */
9119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_String 27 /* synopsis: r[P2]='P4' (len=P1) */
9120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Null 28 /* synopsis: r[P2..P3]=NULL */
9121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SoftNull 29 /* synopsis: r[P1]=NULL */
9122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Blob 30 /* synopsis: r[P2]=P4 (len=P1) */
9123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Variable 31 /* synopsis: r[P2]=parameter(P1,P4) */
9124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Move 32 /* synopsis: r[P2@P3]=r[P1@P3] */
9125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Copy 33 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
9126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SCopy 34 /* synopsis: r[P2]=r[P1] */
9127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ResultRow 35 /* synopsis: output=r[P1@P2] */
9128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CollSeq 36
9129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AddImm 37 /* synopsis: r[P1]=r[P1]+P2 */
9130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MustBeInt 38
9131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RealAffinity 39
9132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Permutation 40
9133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Compare 41
9134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Jump 42
9135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Once 43
9136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_If 44
9137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfNot 45
9138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Column 46 /* synopsis: r[P3]=PX */
9139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Affinity 47 /* synopsis: affinity(r[P1@P2]) */
9140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MakeRecord 48 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
9141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Count 49 /* synopsis: r[P2]=count() */
9142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ReadCookie 50
9143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SetCookie 51
9144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenRead 52 /* synopsis: root=P2 iDb=P3 */
9145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenWrite 53 /* synopsis: root=P2 iDb=P3 */
9146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenAutoindex 54 /* synopsis: nColumn=P2 */
9147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenEphemeral 55 /* synopsis: nColumn=P2 */
9148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterOpen 56
9149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenPseudo 57 /* synopsis: P3 columns in r[P2] */
9150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Close 58
9151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekLT 59
9152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekLE 60
9153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekGE 61
9154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekGT 62
9155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Seek 63 /* synopsis: intkey=r[P2] */
9156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NoConflict 64 /* synopsis: key=r[P3@P4] */
9157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NotFound 65 /* synopsis: key=r[P3@P4] */
9158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Found 66 /* synopsis: key=r[P3@P4] */
9159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NotExists 67 /* synopsis: intkey=r[P3] */
9160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Sequence 68 /* synopsis: r[P2]=rowid */
9161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NewRowid 69 /* synopsis: r[P2]=rowid */
9162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Insert 70 /* synopsis: intkey=r[P3] data=r[P2] */
9161 9163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Or 71 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */
9162 9164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_And 72 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */
9163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResetCount 73
9164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterCompare 74 /* synopsis: if key(P1)!=rtrim(r[P3],P4) goto P2 */
9165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterData 75 /* synopsis: r[P2]=data */
9165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_InsertInt 73 /* synopsis: intkey=P3 data=r[P2] */
9166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Delete 74
9167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ResetCount 75
9166 9168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_IsNull 76 /* same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
9167 9169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_NotNull 77 /* same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
9168 9170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Ne 78 /* same as TK_NE, synopsis: if r[P1]!=r[P3] goto P2 */
9169 9171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Eq 79 /* same as TK_EQ, synopsis: if r[P1]==r[P3] goto P2 */
9170 9172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Gt 80 /* same as TK_GT, synopsis: if r[P1]>r[P3] goto P2 */
9171 9173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Le 81 /* same as TK_LE, synopsis: if r[P1]<=r[P3] goto P2 */
9172 9174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Lt 82 /* same as TK_LT, synopsis: if r[P1]<r[P3] goto P2 */
9173 9175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Ge 83 /* same as TK_GE, synopsis: if r[P1]>=r[P3] goto P2 */
9174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowKey 84 /* synopsis: r[P2]=key */
9176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterCompare 84 /* synopsis: if key(P1)!=rtrim(r[P3],P4) goto P2 */
9175 9177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_BitAnd 85 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
9176 9178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_BitOr 86 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
9177 9179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ShiftLeft 87 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
9178 9180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ShiftRight 88 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
9179 9181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Add 89 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
@@ -9180,68 +9182,72 @@
9180 9182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Subtract 90 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
9181 9183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Multiply 91 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
9182 9184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Divide 92 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
9183 9185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Remainder 93 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
9184 9186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Concat 94 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
9185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowData 95 /* synopsis: r[P2]=data */
9187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterData 95 /* synopsis: r[P2]=data */
9186 9188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_BitNot 96 /* same as TK_BITNOT, synopsis: r[P1]= ~r[P1] */
9187 9189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_String8 97 /* same as TK_STRING, synopsis: r[P2]='P4' */
9188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Rowid 98 /* synopsis: r[P2]=rowid */
9189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NullRow 99
9190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Last 100
9191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterSort 101
9192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Sort 102
9193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Rewind 103
9194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterInsert 104
9195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxInsert 105 /* synopsis: key=r[P2] */
9196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxDelete 106 /* synopsis: key=r[P2@P3] */
9197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxRowid 107 /* synopsis: r[P2]=rowid */
9198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxLT 108 /* synopsis: key=r[P3@P4] */
9199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxGE 109 /* synopsis: key=r[P3@P4] */
9200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Destroy 110
9201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Clear 111
9202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CreateIndex 112 /* synopsis: r[P2]=root iDb=P1 */
9203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CreateTable 113 /* synopsis: r[P2]=root iDb=P1 */
9204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ParseSchema 114
9205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_LoadAnalysis 115
9206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropTable 116
9207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropIndex 117
9208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropTrigger 118
9209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IntegrityCk 119
9210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetAdd 120 /* synopsis: rowset(P1)=r[P2] */
9211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetRead 121 /* synopsis: r[P3]=rowset(P1) */
9212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetTest 122 /* synopsis: if r[P3] in rowset(P1) goto P2 */
9213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Program 123
9214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Param 124
9215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkCounter 125 /* synopsis: fkctr[P1]+=P2 */
9216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkIfZero 126 /* synopsis: if fkctr[P1]==0 goto P2 */
9217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MemMax 127 /* synopsis: r[P1]=max(r[P1],r[P2]) */
9218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfPos 128 /* synopsis: if r[P1]>0 goto P2 */
9219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfNeg 129 /* synopsis: if r[P1]<0 goto P2 */
9220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfZero 130 /* synopsis: r[P1]+=P3, if r[P1]==0 goto P2 */
9221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggFinal 131 /* synopsis: accum=r[P1] N=P2 */
9222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IncrVacuum 132
9190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowKey 98 /* synopsis: r[P2]=key */
9191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowData 99 /* synopsis: r[P2]=data */
9192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Rowid 100 /* synopsis: r[P2]=rowid */
9193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NullRow 101
9194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Last 102
9195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterSort 103
9196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Sort 104
9197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Rewind 105
9198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterInsert 106
9199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxInsert 107 /* synopsis: key=r[P2] */
9200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxDelete 108 /* synopsis: key=r[P2@P3] */
9201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxRowid 109 /* synopsis: r[P2]=rowid */
9202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxLE 110 /* synopsis: key=r[P3@P4] */
9203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxGT 111 /* synopsis: key=r[P3@P4] */
9204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxLT 112 /* synopsis: key=r[P3@P4] */
9205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxGE 113 /* synopsis: key=r[P3@P4] */
9206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Destroy 114
9207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Clear 115
9208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CreateIndex 116 /* synopsis: r[P2]=root iDb=P1 */
9209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CreateTable 117 /* synopsis: r[P2]=root iDb=P1 */
9210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ParseSchema 118
9211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_LoadAnalysis 119
9212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DropTable 120
9213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DropIndex 121
9214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DropTrigger 122
9215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IntegrityCk 123
9216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetAdd 124 /* synopsis: rowset(P1)=r[P2] */
9217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetRead 125 /* synopsis: r[P3]=rowset(P1) */
9218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetTest 126 /* synopsis: if r[P3] in rowset(P1) goto P2 */
9219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Program 127
9220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Param 128
9221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FkCounter 129 /* synopsis: fkctr[P1]+=P2 */
9222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FkIfZero 130 /* synopsis: if fkctr[P1]==0 goto P2 */
9223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MemMax 131 /* synopsis: r[P1]=max(r[P1],r[P2]) */
9224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfPos 132 /* synopsis: if r[P1]>0 goto P2 */
9223 9225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Real 133 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
9224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Expire 134
9225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_TableLock 135 /* synopsis: iDb=P1 root=P2 write=P3 */
9226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VBegin 136
9227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VCreate 137
9228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VDestroy 138
9229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VOpen 139
9230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VColumn 140 /* synopsis: r[P3]=vcolumn(P2) */
9231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VNext 141
9232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VRename 142
9226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfNeg 134 /* synopsis: if r[P1]<0 goto P2 */
9227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfZero 135 /* synopsis: r[P1]+=P3, if r[P1]==0 goto P2 */
9228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggFinal 136 /* synopsis: accum=r[P1] N=P2 */
9229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IncrVacuum 137
9230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Expire 138
9231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_TableLock 139 /* synopsis: iDb=P1 root=P2 write=P3 */
9232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VBegin 140
9233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VCreate 141
9234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VDestroy 142
9233 9235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ToText 143 /* same as TK_TO_TEXT */
9234 9236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ToBlob 144 /* same as TK_TO_BLOB */
9235 9237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ToNumeric 145 /* same as TK_TO_NUMERIC */
9236 9238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ToInt 146 /* same as TK_TO_INT */
9237 9239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ToReal 147 /* same as TK_TO_REAL */
9238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Pagecount 148
9239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MaxPgcnt 149
9240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Trace 150
9241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Noop 151
9242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Explain 152
9240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VOpen 148
9241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VColumn 149 /* synopsis: r[P3]=vcolumn(P2) */
9242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VNext 150
9243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VRename 151
9244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Pagecount 152
9245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MaxPgcnt 153
9246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Init 154 /* synopsis: Start at P2 */
9247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Noop 155
9248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Explain 156
9243 9249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9244 9250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9245 9251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Properties such as "out2" or "jump" that are specified in
9246 9252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** comments following the "case" for each opcode in the vdbe.c
9247 9253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are encoded into bitvectors as follows:
@@ -9254,28 +9260,28 @@
9254 9260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_OUT2 0x0020 /* out2: P2 is an output */
9255 9261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_OUT3 0x0040 /* out3: P3 is an output */
9256 9262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_INITIALIZER {\
9257 9263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,\
9258 9264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 8 */ 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00,\
9259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 16 */ 0x01, 0x01, 0x04, 0x24, 0x04, 0x10, 0x00, 0x02,\
9260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 24 */ 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x20,\
9261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 32 */ 0x00, 0x00, 0x04, 0x05, 0x04, 0x00, 0x00, 0x01,\
9262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ 0x01, 0x05, 0x05, 0x00, 0x00, 0x00, 0x02, 0x02,\
9263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
9264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 56 */ 0x00, 0x11, 0x11, 0x11, 0x11, 0x08, 0x11, 0x11,\
9265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 64 */ 0x11, 0x11, 0x02, 0x02, 0x00, 0x00, 0x00, 0x4c,\
9265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 16 */ 0x01, 0x01, 0x04, 0x24, 0x01, 0x04, 0x05, 0x10,\
9266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 24 */ 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02,\
9267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 32 */ 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x05, 0x04,\
9268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 40 */ 0x00, 0x00, 0x01, 0x01, 0x05, 0x05, 0x00, 0x00,\
9269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 48 */ 0x00, 0x02, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00,\
9270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 56 */ 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x08,\
9271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 64 */ 0x11, 0x11, 0x11, 0x11, 0x02, 0x02, 0x00, 0x4c,\
9266 9272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 72 */ 0x4c, 0x00, 0x00, 0x00, 0x05, 0x05, 0x15, 0x15,\
9267 9273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 80 */ 0x15, 0x15, 0x15, 0x15, 0x00, 0x4c, 0x4c, 0x4c,\
9268 9274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 88 */ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x00,\
9269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 96 */ 0x24, 0x02, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01,\
9270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 104 */ 0x08, 0x08, 0x00, 0x02, 0x01, 0x01, 0x02, 0x00,\
9271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 112 */ 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
9272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 120 */ 0x0c, 0x45, 0x15, 0x01, 0x02, 0x00, 0x01, 0x08,\
9273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 128 */ 0x05, 0x05, 0x05, 0x00, 0x01, 0x02, 0x00, 0x00,\
9274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 136 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04,\
9275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 144 */ 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, 0x00,\
9276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 152 */ 0x00,}
9275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 96 */ 0x24, 0x02, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01,\
9276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 104 */ 0x01, 0x01, 0x08, 0x08, 0x00, 0x02, 0x01, 0x01,\
9277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 112 */ 0x01, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00,\
9278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 120 */ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x45, 0x15, 0x01,\
9279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 128 */ 0x02, 0x00, 0x01, 0x08, 0x05, 0x02, 0x05, 0x05,\
9280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 136 */ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,\
9281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 144 */ 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00,\
9282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 152 */ 0x02, 0x02, 0x01, 0x00, 0x00,}
9277 9283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9278 9284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of opcodes.h *********************************************/
9279 9285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in vdbe.h ***********************/
9280 9286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9281 9287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -9287,11 +9293,11 @@
9287 9293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeAddOp1(Vdbe*,int,int);
9288 9294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeAddOp2(Vdbe*,int,int,int);
9289 9295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeAddOp3(Vdbe*,int,int,int,int);
9290 9296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeAddOp4(Vdbe*,int,int,int,int,const char *zP4,int);
9291 9297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeAddOp4Int(Vdbe*,int,int,int,int,int);
9292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3VdbeAddOpList(Vdbe*, int nOp, VdbeOpList const *aOp);
9298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3VdbeAddOpList(Vdbe*, int nOp, VdbeOpList const *aOp, int iLineno);
9293 9299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeAddParseSchemaOp(Vdbe*,int,char*);
9294 9300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeP1(Vdbe*, u32 addr, int P1);
9295 9301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeP2(Vdbe*, u32 addr, int P2);
9296 9302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeP3(Vdbe*, u32 addr, int P3);
9297 9303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeP5(Vdbe*, u8 P5);
@@ -9358,10 +9364,45 @@
9358 9364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define VdbeComment(X)
9359 9365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define VdbeNoopComment(X)
9360 9366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define VdbeModuleComment(X)
9361 9367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
9362 9368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
9370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The VdbeCoverage macros are used to set a coverage testing point
9371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for VDBE branch instructions. The coverage testing points are line
9372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** numbers in the sqlite3.c source file. VDBE branch coverage testing
9373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** only works with an amalagmation build. That's ok since a VDBE branch
9374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** coverage build designed for testing the test suite only. No application
9375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** should ever ship with VDBE branch coverage measuring turned on.
9376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
9377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** VdbeCoverage(v) // Mark the previously coded instruction
9378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** // as a branch
9379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
9380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** VdbeCoverageIf(v, conditional) // Mark previous if conditional true
9381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
9382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** VdbeCoverageAlwaysTaken(v) // Previous branch is always taken
9383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
9384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** VdbeCoverageNeverTaken(v) // Previous branch is never taken
9385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
9386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Every VDBE branch operation must be tagged with one of the macros above.
9387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If not, then when "make test" is run with -DSQLITE_VDBE_COVERAGE and
9388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** -DSQLITE_DEBUG then an ALWAYS() will fail in the vdbeTakeBranch()
9389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** routine in vdbe.c, alerting the developer to the missed tag.
9390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
9391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_VDBE_COVERAGE
9392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3VdbeSetLineNumber(Vdbe*,int);
9393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeCoverage(v) sqlite3VdbeSetLineNumber(v,__LINE__)
9394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeCoverageIf(v,x) if(x)sqlite3VdbeSetLineNumber(v,__LINE__)
9395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeCoverageAlwaysTaken(v) sqlite3VdbeSetLineNumber(v,2);
9396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeCoverageNeverTaken(v) sqlite3VdbeSetLineNumber(v,1);
9397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
9398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeCoverage(v)
9399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeCoverageIf(v,x)
9400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeCoverageAlwaysTaken(v)
9401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeCoverageNeverTaken(v)
9402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
9403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
9363 9404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
9364 9405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9365 9406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of vdbe.h ************************************************/
9366 9407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in sqliteInt.h ******************/
9367 9408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Include pager.h in the middle of sqliteInt.h *****************/
@@ -10415,12 +10456,11 @@
10415 10456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10416 10457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10417 10458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if it OK to factor constant expressions into the initialization
10418 10459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** code. The argument is a Parse object for the code generator.
10419 10460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
10420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define ConstFactorOk(P) \
10421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((P)->cookieGoto>0 && OptimizationEnabled((P)->db,SQLITE_FactorOutConst))
10461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ConstFactorOk(P) ((P)->okConstFactor)
10422 10462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10423 10463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10424 10464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Possible values for the sqlite.magic field.
10425 10465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The numbers are obtained at random and have no special meaning, other
10426 10466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** than being distinct from one another.
@@ -10642,14 +10682,20 @@
10642 10682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_MASK 0x67
10643 10683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10644 10684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10645 10685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Additional bit values that can be ORed with an affinity without
10646 10686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** changing the affinity.
10687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
10688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The SQLITE_NOTNULL flag is a combination of NULLEQ and JUMPIFNULL.
10689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** It causes an assert() to fire if either operand to a comparison
10690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** operator is NULL. It is added to certain comparison operators to
10691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** prove that the operands are always NOT NULL.
10647 10692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
10648 10693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_JUMPIFNULL 0x08 /* jumps if either operand is NULL */
10649 10694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_STOREP2 0x10 /* Store result in reg[P2] rather than jump */
10650 10695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_NULLEQ 0x80 /* NULL=NULL */
10696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_NOTNULL 0x88 /* Assert that operands are never NULL */
10651 10697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10652 10698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10653 10699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** An object of this type is created for each virtual table present in
10654 10700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database schema.
10655 10701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -11347,10 +11393,11 @@
11347 11393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zAlias; /* The "B" part of a "A AS B" phrase. zName is the "A" */
11348 11394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab; /* An SQL table corresponding to zName */
11349 11395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pSelect; /* A SELECT statement used in place of a table name */
11350 11396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrFillSub; /* Address of subroutine to manifest a subquery */
11351 11397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regReturn; /* Register holding return address of addrFillSub */
11398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int regResult; /* Registers holding results of a co-routine */
11352 11399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 jointype; /* Type of join between this able and the previous */
11353 11400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned notIndexed :1; /* True if there is a NOT INDEXED clause */
11354 11401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isCorrelated :1; /* True if sub-query is correlated */
11355 11402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned viaCoroutine :1; /* Implemented as a co-routine */
11356 11403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isRecursive :1; /* True for recursive reference in WITH */
@@ -11475,11 +11522,10 @@
11475 11522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pGroupBy; /* The GROUP BY clause */
11476 11523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pHaving; /* The HAVING clause */
11477 11524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pOrderBy; /* The ORDER BY clause */
11478 11525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pPrior; /* Prior select in a compound select statement */
11479 11526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pNext; /* Next select to the left in a compound */
11480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Select *pRightmost; /* Right-most select in a compound select statement */
11481 11527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLimit; /* LIMIT expression. NULL means not used. */
11482 11528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pOffset; /* OFFSET expression. NULL means not used. */
11483 11529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
With *pWith; /* WITH clause attached to this select. Or NULL. */
11484 11530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
11485 11531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -11493,14 +11539,15 @@
11493 11539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_UsesEphemeral 0x0008 /* Uses the OpenEphemeral opcode */
11494 11540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_Expanded 0x0010 /* sqlite3SelectExpand() called on this */
11495 11541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_HasTypeInfo 0x0020 /* FROM subqueries have Table metadata */
11496 11542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_UseSorter 0x0040 /* Sort using a sorter */
11497 11543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_Values 0x0080 /* Synthesized from VALUES clause */
11498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SF_Materialize 0x0100 /* Force materialization of views */
11544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SF_Materialize 0x0100 /* NOT USED */
11499 11545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_NestedFrom 0x0200 /* Part of a parenthesized FROM clause */
11500 11546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_MaybeConvert 0x0400 /* Need convertCompoundSelectToSubquery() */
11501 11547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SF_Recursive 0x0800 /* The recursive part of a recursive CTE */
11548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SF_Compound 0x1000 /* Part of a compound query */
11502 11549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11503 11550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11504 11551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
11505 11552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The results of a SELECT can be distributed in several ways, as defined
11506 11553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by one of the following macros. The "SRT" prefix means "SELECT Result
@@ -11675,49 +11722,48 @@
11675 11722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc; /* Return code from execution */
11676 11723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 colNamesSet; /* TRUE after OP_ColumnName has been issued to pVdbe */
11677 11724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 checkSchema; /* Causes schema cookie check after an error */
11678 11725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 nested; /* Number of nested calls to the parser/code generator */
11679 11726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 nTempReg; /* Number of temporary registers in aTempReg[] */
11680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 nTempInUse; /* Number of aTempReg[] currently checked out */
11681 11727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 nColCache; /* Number of entries in aColCache[] */
11682 11728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 iColCache; /* Next entry in aColCache[] to replace */
11683 11729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 isMultiWrite; /* True if statement may modify/insert multiple rows */
11684 11730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 mayAbort; /* True if statement may throw an ABORT exception */
11685 11731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 hasCompound; /* Need to invoke convertCompoundSelectToSubquery() */
11732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 okConstFactor; /* OK to factor out constants */
11686 11733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int aTempReg[8]; /* Holding area for temporary registers */
11687 11734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nRangeReg; /* Size of the temporary register block */
11688 11735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRangeReg; /* First register in temporary register block */
11689 11736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nErr; /* Number of errors seen */
11690 11737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nTab; /* Number of previously allocated VDBE cursors */
11691 11738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nMem; /* Number of memory cells used so far */
11692 11739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSet; /* Number of sets used so far */
11693 11740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nOnce; /* Number of OP_Once instructions so far */
11694 11741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nOpAlloc; /* Number of slots allocated for Vdbe.aOp[] */
11695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nLabel; /* Number of labels used */
11696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *aLabel; /* Space to hold the labels */
11697 11742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iFixedOp; /* Never back out opcodes iFixedOp-1 or earlier */
11698 11743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ckBase; /* Base register of data during check constraints */
11699 11744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iPartIdxTab; /* Table corresponding to a partial index */
11700 11745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCacheLevel; /* ColCache valid when aColCache[].iLevel<=iCacheLevel */
11701 11746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCacheCnt; /* Counter used to generate aColCache[].lru values */
11747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nLabel; /* Number of labels used */
11748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *aLabel; /* Space to hold the labels */
11702 11749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct yColCache {
11703 11750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTable; /* Table cursor number */
11704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iColumn; /* Table column number */
11751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i16 iColumn; /* Table column number */
11705 11752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 tempReg; /* iReg is a temp register that needs to be freed */
11706 11753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLevel; /* Nesting level */
11707 11754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iReg; /* Reg with value of this column. 0 means none. */
11708 11755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int lru; /* Least recently used entry has the smallest value */
11709 11756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} aColCache[SQLITE_N_COLCACHE]; /* One for each column cache entry */
11710 11757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pConstExpr;/* Constant expressions */
11758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Token constraintName;/* Name of the constraint currently being parsed */
11711 11759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yDbMask writeMask; /* Start a write transaction on these databases */
11712 11760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yDbMask cookieMask; /* Bitmask of schema verified databases */
11713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int cookieGoto; /* Address of OP_Goto to cookie verifier subroutine */
11714 11761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int cookieValue[SQLITE_MAX_ATTACHED+2]; /* Values of cookies to verify */
11715 11762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRowid; /* Register holding rowid of CREATE TABLE entry */
11716 11763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRoot; /* Register holding root page number for new objects */
11717 11764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nMaxArg; /* Max args passed to user function by sub-program */
11718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Token constraintName;/* Name of the constraint currently being parsed */
11719 11765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SHARED_CACHE
11720 11766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nTableLock; /* Number of locks in aTableLock */
11721 11767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TableLock *aTableLock; /* Required table locks for shared-cache mode */
11722 11768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
11723 11769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AutoincInfo *pAinc; /* Information about AUTOINCREMENT counters */
@@ -11732,16 +11778,21 @@
11732 11778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 newmask; /* Mask of new.* columns referenced */
11733 11779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */
11734 11780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */
11735 11781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 disableTriggers; /* True to disable triggers */
11736 11782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Above is constant between recursions. Below is reset before and after
11738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** each recursion */
11783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /************************************************************************
11784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Above is constant between recursions. Below is reset before and after
11785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** each recursion. The boundary between these two regions is determined
11786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** using offsetof(Parse,nVar) so the nVar field must be the first field
11787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in the recursive region.
11788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ************************************************************************/
11739 11789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11740 11790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVar; /* Number of '?' variables seen in the SQL so far */
11741 11791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nzVar; /* Number of available slots in azVar[] */
11742 11792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 iPkSortOrder; /* ASC or DESC for INTEGER PRIMARY KEY */
11793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bFreeWith; /* True if pWith should be freed with parser */
11743 11794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 explain; /* True if the EXPLAIN flag is found on the query */
11744 11795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
11745 11796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 declareVtab; /* True if inside sqlite3_declare_vtab() */
11746 11797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVtabLock; /* Number of virtual tables to lock */
11747 11798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -11764,11 +11815,10 @@
11764 11815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table **apVtabLock; /* Pointer to virtual tables needing locking */
11765 11816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
11766 11817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pZombieTab; /* List of Table objects to delete after code gen */
11767 11818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TriggerPrg *pTriggerPrg; /* Linked list of coded triggers */
11768 11819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
With *pWith; /* Current WITH clause, or NULL */
11769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 bFreeWith; /* True if pWith should be freed with parser */
11770 11820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
11771 11821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11772 11822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
11773 11823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if currently inside an sqlite3_declare_vtab() call.
11774 11824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -11980,10 +12030,17 @@
11980 12030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bLocaltimeFault; /* True to fail localtime() calls */
11981 12031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_SQLLOG
11982 12032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void(*xSqllog)(void*,sqlite3*,const char*, int);
11983 12033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pSqllogArg;
11984 12034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
12035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_VDBE_COVERAGE
12036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The following callback (if not NULL) is invoked on every VDBE branch
12037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** operation. Set the callback using SQLITE_TESTCTRL_VDBE_COVERAGE.
12038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
12039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void (*xVdbeBranch)(void*,int iSrcLine,u8 eThis,u8 eMx); /* Callback */
12040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pVdbeBranchArg; /* 1st argument */
12041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
11985 12042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
11986 12043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11987 12044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
11988 12045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This macro is used inside of assert() statements to indicate that
11989 12046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the assert is only valid on a well-formed database. Instead of:
@@ -12313,11 +12370,10 @@
12313 12370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3AutoincrementEnd(Parse *pParse);
12314 12371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
12315 12372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define sqlite3AutoincrementBegin(X)
12316 12373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define sqlite3AutoincrementEnd(X)
12317 12374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
12318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3CodeCoroutine(Parse*, Select*, SelectDest*);
12319 12375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3Insert(Parse*, SrcList*, Select*, IdList*, int);
12320 12376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void *sqlite3ArrayAllocate(sqlite3*,void*,int,int*,int*);
12321 12377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE IdList *sqlite3IdListAppend(sqlite3*, IdList*, Token*);
12322 12378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3IdListIndex(IdList*,const char*);
12323 12379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE SrcList *sqlite3SrcListEnlarge(sqlite3*, SrcList*, int, int);
@@ -12361,15 +12417,16 @@
12361 12417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprCachePush(Parse*);
12362 12418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprCachePop(Parse*, int);
12363 12419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprCacheRemove(Parse*, int, int);
12364 12420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprCacheClear(Parse*);
12365 12421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprCacheAffinityChange(Parse*, int, int);
12366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3ExprCode(Parse*, Expr*, int);
12422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ExprCode(Parse*, Expr*, int);
12423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ExprCodeFactorable(Parse*, Expr*, int);
12367 12424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprCodeAtInit(Parse*, Expr*, int, u8);
12368 12425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprCodeTemp(Parse*, Expr*, int*);
12369 12426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse*, Expr*, int);
12370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3ExprCodeAndCache(Parse*, Expr*, int);
12427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ExprCodeAndCache(Parse*, Expr*, int);
12371 12428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprCodeExprList(Parse*, ExprList*, int, u8);
12372 12429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_ECEL_DUP 0x01 /* Deep, not shallow copies */
12373 12430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_ECEL_FACTOR 0x02 /* Factor out constant terms */
12374 12431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprIfTrue(Parse*, Expr*, int, int);
12375 12432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprIfFalse(Parse*, Expr*, int, int);
@@ -12403,11 +12460,10 @@
12403 12460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprIsConstant(Expr*);
12404 12461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprIsConstantNotJoin(Expr*);
12405 12462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprIsConstantOrFunction(Expr*);
12406 12463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprIsInteger(Expr*, int*);
12407 12464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr*);
12408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3ExprCodeIsNullJump(Vdbe*, const Expr*, int, int);
12409 12465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprNeedsNoAffinityChange(const Expr*, char);
12410 12466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3IsRowid(const char*);
12411 12467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3GenerateRowDelete(Parse*,Table*,Trigger*,int,int,int,i16,u8,u8,u8);
12412 12468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3GenerateRowIndexDelete(Parse*, Table*, int, int, int*);
12413 12469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3GenerateIndexKey(Parse*, Index*, int, int, int, int*,Index*,int);
@@ -12547,11 +12603,11 @@
12547 12603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define getVarint sqlite3GetVarint
12548 12604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define putVarint sqlite3PutVarint
12549 12605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
12550 12606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
12551 12607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE const char *sqlite3IndexAffinityStr(Vdbe *, Index *);
12552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3TableAffinityStr(Vdbe *, Table *);
12608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe*, Table*, int);
12553 12609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE char sqlite3CompareAffinity(Expr *pExpr, char aff2);
12554 12610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3IndexAffinityOk(Expr *pExpr, char idx_affinity);
12555 12611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE char sqlite3ExprAffinity(Expr *pExpr);
12556 12612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3Atoi64(const char*, i64*, int, u8);
12557 12613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3Error(sqlite3*, int, const char*,...);
@@ -13651,11 +13707,10 @@
13651 13707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 rowidIsValid; /* True if lastRowid is valid */
13652 13708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 deferredMoveto; /* A call to sqlite3BtreeMoveto() is needed */
13653 13709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bool useRandomRowid:1;/* Generate new record numbers semi-randomly */
13654 13710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bool isTable:1; /* True if a table requiring integer keys */
13655 13711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bool isOrdered:1; /* True if the underlying table is BTREE_UNORDERED */
13656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Bool multiPseudo:1; /* Multi-register pseudo-cursor */
13657 13712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab_cursor *pVtabCursor; /* The cursor for a virtual table */
13658 13713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 seqCount; /* Sequence counter */
13659 13714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 movetoTarget; /* Argument to the deferred sqlite3BtreeMoveto() */
13660 13715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 lastRowid; /* Rowid being deleted by OP_Delete */
13661 13716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeSorter *pSorter; /* Sorter object for OP_SorterOpen cursors */
@@ -13745,11 +13800,11 @@
13745 13800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RowSet *pRowSet; /* Used only when flags==MEM_RowSet */
13746 13801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeFrame *pFrame; /* Used when flags==MEM_Frame */
13747 13802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} u;
13748 13803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n; /* Number of characters in string value, excluding '\0' */
13749 13804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 flags; /* Some combination of MEM_Null, MEM_Str, MEM_Dyn, etc. */
13750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 type; /* One of SQLITE_NULL, SQLITE_TEXT, SQLITE_INTEGER, etc */
13805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 memType; /* Lower 5 bits of flags */
13751 13806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 enc; /* SQLITE_UTF8, SQLITE_UTF16BE, SQLITE_UTF16LE */
13752 13807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
13753 13808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pScopyFrom; /* This Mem is a shallow copy of pScopyFrom */
13754 13809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pFiller; /* So that sizeof(Mem) is a multiple of 8 */
13755 13810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -13774,11 +13829,11 @@
13774 13829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Int 0x0004 /* Value is an integer */
13775 13830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Real 0x0008 /* Value is a real number */
13776 13831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Blob 0x0010 /* Value is a BLOB */
13777 13832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_RowSet 0x0020 /* Value is a RowSet object */
13778 13833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Frame 0x0040 /* Value is a VdbeFrame object */
13779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define MEM_Invalid 0x0080 /* Value is undefined */
13834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define MEM_Undefined 0x0080 /* Value is undefined */
13780 13835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_Cleared 0x0100 /* NULL set by OP_Null, not from data */
13781 13836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MEM_TypeMask 0x01ff /* Mask of type bits */
13782 13837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13783 13838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13784 13839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Whenever Mem contains a valid string or blob representation, one of
@@ -13806,11 +13861,11 @@
13806 13861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
13807 13862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if a memory cell is not marked as invalid. This macro
13808 13863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is for use inside assert() statements only.
13809 13864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
13810 13865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
13811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define memIsValid(M) ((M)->flags & MEM_Invalid)==0
13866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define memIsValid(M) ((M)->flags & MEM_Undefined)==0
13812 13867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
13813 13868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13814 13869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
13815 13870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Each auxilliary data pointer stored by a user defined function
13816 13871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** implementation calling sqlite3_set_auxdata() is stored in an instance
@@ -14001,20 +14056,22 @@
14001 14056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeMemRealify(Mem*);
14002 14057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeMemNumerify(Mem*);
14003 14058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeMemFromBtree(BtCursor*,u32,u32,int,Mem*);
14004 14059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeMemRelease(Mem *p);
14005 14060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeMemReleaseExternal(Mem *p);
14061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define VdbeMemDynamic(X) \
14062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (((X)->flags&(MEM_Agg|MEM_Dyn|MEM_RowSet|MEM_Frame))!=0)
14006 14063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define VdbeMemRelease(X) \
14007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if((X)->flags&(MEM_Agg|MEM_Dyn|MEM_RowSet|MEM_Frame)) \
14008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeMemReleaseExternal(X);
14064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( VdbeMemDynamic(X) ) sqlite3VdbeMemReleaseExternal(X);
14009 14065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeMemFinalize(Mem*, FuncDef*);
14010 14066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE const char *sqlite3OpcodeName(int);
14011 14067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeMemGrow(Mem *pMem, int n, int preserve);
14012 14068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeCloseStatement(Vdbe *, int);
14013 14069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeFrameDelete(VdbeFrame*);
14014 14070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeFrameRestore(VdbeFrame *);
14015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3VdbeMemStoreType(Mem *pMem);
14071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define sqlite3VdbeMemStoreType(X) (X)->memType = (u8)((X)->flags&0x1f)
14072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* void sqlite3VdbeMemStoreType(Mem *pMem); */
14016 14073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeTransferError(Vdbe *p);
14017 14074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
14018 14075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeSorterInit(sqlite3 *, VdbeCursor *);
14019 14076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeSorterClose(sqlite3 *, VdbeCursor *);
14020 14077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeSorterRowkey(const VdbeCursor *, Mem *);
@@ -17778,10 +17835,16 @@
17778 17835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mem5.totalExcess += iFullSz - nByte;
17779 17836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mem5.currentCount++;
17780 17837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mem5.currentOut += iFullSz;
17781 17838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( mem5.maxCount<mem5.currentCount ) mem5.maxCount = mem5.currentCount;
17782 17839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( mem5.maxOut<mem5.currentOut ) mem5.maxOut = mem5.currentOut;
17840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
17841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
17842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Make sure the allocated memory does not assume that it is set to zero
17843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or retains a value from a previous allocation */
17844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&mem5.zPool[i*mem5.szAtom], 0xAA, iFullSz);
17845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
17783 17846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17784 17847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Return a pointer to the allocated memory. */
17785 17848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (void*)&mem5.zPool[i*mem5.szAtom];
17786 17849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17787 17850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -17836,10 +17899,17 @@
17836 17899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mem5.aCtrl[iBlock] = CTRL_FREE | iLogsize;
17837 17900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mem5.aCtrl[iBuddy] = 0;
17838 17901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17839 17902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
size *= 2;
17840 17903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
17905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
17906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Overwrite freed memory with the 0x55 bit pattern to verify that it is
17907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** not used after being freed */
17908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&mem5.zPool[iBlock*mem5.szAtom], 0x55, size);
17909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
17910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
17841 17911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memsys5Link(iBlock, iLogsize);
17842 17912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17843 17913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17844 17914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
17845 17915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allocate nBytes of memory.
@@ -22739,17 +22809,16 @@
22739 22809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iB==-1 ); testcase( iB==0 );
22740 22810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iB>=0 ){
22741 22811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iA>0 && LARGEST_INT64 - iA == iB );
22742 22812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iA>0 && LARGEST_INT64 - iA == iB - 1 );
22743 22813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iA>0 && LARGEST_INT64 - iA < iB ) return 1;
22744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pA += iB;
22745 22814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
22746 22815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iA<0 && -(iA + LARGEST_INT64) == iB + 1 );
22747 22816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iA<0 && -(iA + LARGEST_INT64) == iB + 2 );
22748 22817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iA<0 && -(iA + LARGEST_INT64) > iB + 1 ) return 1;
22749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pA += iB;
22750 22818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
22819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pA += iB;
22751 22820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
22752 22821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
22753 22822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3SubInt64(i64 *pA, i64 iB){
22754 22823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iB==SMALLEST_INT64+1 );
22755 22824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iB==SMALLEST_INT64 ){
@@ -22769,13 +22838,22 @@
22769 22838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22770 22839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iA1 = iA/TWOPOWER32;
22771 22840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iA0 = iA % TWOPOWER32;
22772 22841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iB1 = iB/TWOPOWER32;
22773 22842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iB0 = iB % TWOPOWER32;
22774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iA1*iB1 != 0 ) return 1;
22775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( iA1*iB0==0 || iA0*iB1==0 );
22776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r = iA1*iB0 + iA0*iB1;
22843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iA1==0 ){
22844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iB1==0 ){
22845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pA *= iB;
22846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
22847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
22848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r = iA0*iB1;
22849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( iB1==0 ){
22850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r = iA1*iB0;
22851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
22852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If both iA1 and iB1 are non-zero, overflow will result */
22853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
22854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
22777 22855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( r==(-TWOPOWER31)-1 );
22778 22856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( r==(-TWOPOWER31) );
22779 22857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( r==TWOPOWER31 );
22780 22858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( r==TWOPOWER31-1 );
22781 22859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( r<(-TWOPOWER31) || r>=TWOPOWER31 ) return 1;
@@ -23217,75 +23295,75 @@
23217 23295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 15 */ "VUpdate" OpHelp("data=r[P3@P2]"),
23218 23296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 16 */ "Goto" OpHelp(""),
23219 23297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 17 */ "Gosub" OpHelp(""),
23220 23298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 18 */ "Return" OpHelp(""),
23221 23299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 19 */ "Not" OpHelp("r[P2]= !r[P1]"),
23222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 20 */ "Yield" OpHelp(""),
23223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 21 */ "HaltIfNull" OpHelp("if r[P3] null then halt"),
23224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 22 */ "Halt" OpHelp(""),
23225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 23 */ "Integer" OpHelp("r[P2]=P1"),
23226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 24 */ "Int64" OpHelp("r[P2]=P4"),
23227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 25 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
23228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 26 */ "Null" OpHelp("r[P2..P3]=NULL"),
23229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 27 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
23230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 28 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
23231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 29 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
23232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 30 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
23233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 31 */ "SCopy" OpHelp("r[P2]=r[P1]"),
23234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 32 */ "ResultRow" OpHelp("output=r[P1@P2]"),
23235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 33 */ "CollSeq" OpHelp(""),
23236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 34 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
23237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 35 */ "MustBeInt" OpHelp(""),
23238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 36 */ "RealAffinity" OpHelp(""),
23239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 37 */ "Permutation" OpHelp(""),
23240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 38 */ "Compare" OpHelp(""),
23241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 39 */ "Jump" OpHelp(""),
23242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ "Once" OpHelp(""),
23243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 41 */ "If" OpHelp(""),
23244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 42 */ "IfNot" OpHelp(""),
23245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 43 */ "Column" OpHelp("r[P3]=PX"),
23246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 44 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
23247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 45 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
23248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 46 */ "Count" OpHelp("r[P2]=count()"),
23249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 47 */ "ReadCookie" OpHelp(""),
23250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ "SetCookie" OpHelp(""),
23251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 49 */ "VerifyCookie" OpHelp(""),
23252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 50 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
23253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 51 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
23254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 52 */ "OpenAutoindex" OpHelp("nColumn=P2"),
23255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 53 */ "OpenEphemeral" OpHelp("nColumn=P2"),
23256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 54 */ "SorterOpen" OpHelp(""),
23257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 55 */ "OpenPseudo" OpHelp("content in r[P2@P3]"),
23258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 56 */ "Close" OpHelp(""),
23259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 57 */ "SeekLt" OpHelp("key=r[P3@P4]"),
23260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 58 */ "SeekLe" OpHelp("key=r[P3@P4]"),
23261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 59 */ "SeekGe" OpHelp("key=r[P3@P4]"),
23262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 60 */ "SeekGt" OpHelp("key=r[P3@P4]"),
23263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 61 */ "Seek" OpHelp("intkey=r[P2]"),
23264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 62 */ "NoConflict" OpHelp("key=r[P3@P4]"),
23265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 63 */ "NotFound" OpHelp("key=r[P3@P4]"),
23266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 64 */ "Found" OpHelp("key=r[P3@P4]"),
23267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 65 */ "NotExists" OpHelp("intkey=r[P3]"),
23268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 66 */ "Sequence" OpHelp("r[P2]=rowid"),
23269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 67 */ "NewRowid" OpHelp("r[P2]=rowid"),
23270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 68 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
23271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 69 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"),
23272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 70 */ "Delete" OpHelp(""),
23300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 20 */ "InitCoroutine" OpHelp(""),
23301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 21 */ "EndCoroutine" OpHelp(""),
23302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 22 */ "Yield" OpHelp(""),
23303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 23 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
23304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 24 */ "Halt" OpHelp(""),
23305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 25 */ "Integer" OpHelp("r[P2]=P1"),
23306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 26 */ "Int64" OpHelp("r[P2]=P4"),
23307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 27 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
23308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 28 */ "Null" OpHelp("r[P2..P3]=NULL"),
23309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 29 */ "SoftNull" OpHelp("r[P1]=NULL"),
23310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 30 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
23311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 31 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
23312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 32 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
23313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 33 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
23314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 34 */ "SCopy" OpHelp("r[P2]=r[P1]"),
23315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 35 */ "ResultRow" OpHelp("output=r[P1@P2]"),
23316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 36 */ "CollSeq" OpHelp(""),
23317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 37 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
23318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 38 */ "MustBeInt" OpHelp(""),
23319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 39 */ "RealAffinity" OpHelp(""),
23320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 40 */ "Permutation" OpHelp(""),
23321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 41 */ "Compare" OpHelp(""),
23322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 42 */ "Jump" OpHelp(""),
23323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 43 */ "Once" OpHelp(""),
23324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 44 */ "If" OpHelp(""),
23325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 45 */ "IfNot" OpHelp(""),
23326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 46 */ "Column" OpHelp("r[P3]=PX"),
23327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 47 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
23328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 48 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
23329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 49 */ "Count" OpHelp("r[P2]=count()"),
23330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 50 */ "ReadCookie" OpHelp(""),
23331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 51 */ "SetCookie" OpHelp(""),
23332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 52 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
23333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 53 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
23334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 54 */ "OpenAutoindex" OpHelp("nColumn=P2"),
23335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 55 */ "OpenEphemeral" OpHelp("nColumn=P2"),
23336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 56 */ "SorterOpen" OpHelp(""),
23337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 57 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
23338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 58 */ "Close" OpHelp(""),
23339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 59 */ "SeekLT" OpHelp(""),
23340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 60 */ "SeekLE" OpHelp(""),
23341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 61 */ "SeekGE" OpHelp(""),
23342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 62 */ "SeekGT" OpHelp(""),
23343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 63 */ "Seek" OpHelp("intkey=r[P2]"),
23344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 64 */ "NoConflict" OpHelp("key=r[P3@P4]"),
23345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 65 */ "NotFound" OpHelp("key=r[P3@P4]"),
23346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 66 */ "Found" OpHelp("key=r[P3@P4]"),
23347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 67 */ "NotExists" OpHelp("intkey=r[P3]"),
23348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 68 */ "Sequence" OpHelp("r[P2]=rowid"),
23349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 69 */ "NewRowid" OpHelp("r[P2]=rowid"),
23350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 70 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
23273 23351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 71 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
23274 23352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 72 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
23275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 73 */ "ResetCount" OpHelp(""),
23276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 74 */ "SorterCompare" OpHelp("if key(P1)!=rtrim(r[P3],P4) goto P2"),
23277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 75 */ "SorterData" OpHelp("r[P2]=data"),
23353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 73 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"),
23354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 74 */ "Delete" OpHelp(""),
23355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 75 */ "ResetCount" OpHelp(""),
23278 23356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 76 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
23279 23357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 77 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
23280 23358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 78 */ "Ne" OpHelp("if r[P1]!=r[P3] goto P2"),
23281 23359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 79 */ "Eq" OpHelp("if r[P1]==r[P3] goto P2"),
23282 23360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 80 */ "Gt" OpHelp("if r[P1]>r[P3] goto P2"),
23283 23361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 81 */ "Le" OpHelp("if r[P1]<=r[P3] goto P2"),
23284 23362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 82 */ "Lt" OpHelp("if r[P1]<r[P3] goto P2"),
23285 23363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 83 */ "Ge" OpHelp("if r[P1]>=r[P3] goto P2"),
23286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 84 */ "RowKey" OpHelp("r[P2]=key"),
23364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 84 */ "SorterCompare" OpHelp("if key(P1)!=rtrim(r[P3],P4) goto P2"),
23287 23365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 85 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
23288 23366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 86 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
23289 23367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 87 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
23290 23368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 88 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
23291 23369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 89 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -23292,68 +23370,72 @@
23292 23370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 90 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
23293 23371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 91 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
23294 23372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 92 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
23295 23373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 93 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
23296 23374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 94 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
23297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 95 */ "RowData" OpHelp("r[P2]=data"),
23375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 95 */ "SorterData" OpHelp("r[P2]=data"),
23298 23376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 96 */ "BitNot" OpHelp("r[P1]= ~r[P1]"),
23299 23377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 97 */ "String8" OpHelp("r[P2]='P4'"),
23300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 98 */ "Rowid" OpHelp("r[P2]=rowid"),
23301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 99 */ "NullRow" OpHelp(""),
23302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 100 */ "Last" OpHelp(""),
23303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 101 */ "SorterSort" OpHelp(""),
23304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 102 */ "Sort" OpHelp(""),
23305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 103 */ "Rewind" OpHelp(""),
23306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 104 */ "SorterInsert" OpHelp(""),
23307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 105 */ "IdxInsert" OpHelp("key=r[P2]"),
23308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 106 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
23309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 107 */ "IdxRowid" OpHelp("r[P2]=rowid"),
23310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 108 */ "IdxLT" OpHelp("key=r[P3@P4]"),
23311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 109 */ "IdxGE" OpHelp("key=r[P3@P4]"),
23312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 110 */ "Destroy" OpHelp(""),
23313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 111 */ "Clear" OpHelp(""),
23314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 112 */ "CreateIndex" OpHelp("r[P2]=root iDb=P1"),
23315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 113 */ "CreateTable" OpHelp("r[P2]=root iDb=P1"),
23316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 114 */ "ParseSchema" OpHelp(""),
23317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 115 */ "LoadAnalysis" OpHelp(""),
23318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 116 */ "DropTable" OpHelp(""),
23319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 117 */ "DropIndex" OpHelp(""),
23320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 118 */ "DropTrigger" OpHelp(""),
23321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 119 */ "IntegrityCk" OpHelp(""),
23322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 120 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
23323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 121 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
23324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 122 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
23325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 123 */ "Program" OpHelp(""),
23326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 124 */ "Param" OpHelp(""),
23327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 125 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
23328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 126 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
23329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 127 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
23330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 128 */ "IfPos" OpHelp("if r[P1]>0 goto P2"),
23331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 129 */ "IfNeg" OpHelp("if r[P1]<0 goto P2"),
23332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 130 */ "IfZero" OpHelp("r[P1]+=P3, if r[P1]==0 goto P2"),
23333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 131 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
23334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 132 */ "IncrVacuum" OpHelp(""),
23378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 98 */ "RowKey" OpHelp("r[P2]=key"),
23379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 99 */ "RowData" OpHelp("r[P2]=data"),
23380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 100 */ "Rowid" OpHelp("r[P2]=rowid"),
23381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 101 */ "NullRow" OpHelp(""),
23382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 102 */ "Last" OpHelp(""),
23383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 103 */ "SorterSort" OpHelp(""),
23384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 104 */ "Sort" OpHelp(""),
23385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 105 */ "Rewind" OpHelp(""),
23386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 106 */ "SorterInsert" OpHelp(""),
23387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 107 */ "IdxInsert" OpHelp("key=r[P2]"),
23388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 108 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
23389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 109 */ "IdxRowid" OpHelp("r[P2]=rowid"),
23390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 110 */ "IdxLE" OpHelp("key=r[P3@P4]"),
23391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 111 */ "IdxGT" OpHelp("key=r[P3@P4]"),
23392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 112 */ "IdxLT" OpHelp("key=r[P3@P4]"),
23393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 113 */ "IdxGE" OpHelp("key=r[P3@P4]"),
23394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 114 */ "Destroy" OpHelp(""),
23395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 115 */ "Clear" OpHelp(""),
23396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 116 */ "CreateIndex" OpHelp("r[P2]=root iDb=P1"),
23397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 117 */ "CreateTable" OpHelp("r[P2]=root iDb=P1"),
23398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 118 */ "ParseSchema" OpHelp(""),
23399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 119 */ "LoadAnalysis" OpHelp(""),
23400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 120 */ "DropTable" OpHelp(""),
23401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 121 */ "DropIndex" OpHelp(""),
23402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 122 */ "DropTrigger" OpHelp(""),
23403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 123 */ "IntegrityCk" OpHelp(""),
23404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 124 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
23405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 125 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
23406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 126 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
23407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 127 */ "Program" OpHelp(""),
23408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 128 */ "Param" OpHelp(""),
23409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 129 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
23410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 130 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
23411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 131 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
23412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 132 */ "IfPos" OpHelp("if r[P1]>0 goto P2"),
23335 23413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 133 */ "Real" OpHelp("r[P2]=P4"),
23336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 134 */ "Expire" OpHelp(""),
23337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 135 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
23338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 136 */ "VBegin" OpHelp(""),
23339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 137 */ "VCreate" OpHelp(""),
23340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 138 */ "VDestroy" OpHelp(""),
23341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 139 */ "VOpen" OpHelp(""),
23342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 140 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
23343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 141 */ "VNext" OpHelp(""),
23344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 142 */ "VRename" OpHelp(""),
23414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 134 */ "IfNeg" OpHelp("if r[P1]<0 goto P2"),
23415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 135 */ "IfZero" OpHelp("r[P1]+=P3, if r[P1]==0 goto P2"),
23416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 136 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
23417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 137 */ "IncrVacuum" OpHelp(""),
23418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 138 */ "Expire" OpHelp(""),
23419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 139 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
23420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 140 */ "VBegin" OpHelp(""),
23421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 141 */ "VCreate" OpHelp(""),
23422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 142 */ "VDestroy" OpHelp(""),
23345 23423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 143 */ "ToText" OpHelp(""),
23346 23424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 144 */ "ToBlob" OpHelp(""),
23347 23425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 145 */ "ToNumeric" OpHelp(""),
23348 23426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 146 */ "ToInt" OpHelp(""),
23349 23427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 147 */ "ToReal" OpHelp(""),
23350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 148 */ "Pagecount" OpHelp(""),
23351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 149 */ "MaxPgcnt" OpHelp(""),
23352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 150 */ "Trace" OpHelp(""),
23353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 151 */ "Noop" OpHelp(""),
23354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 152 */ "Explain" OpHelp(""),
23428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 148 */ "VOpen" OpHelp(""),
23429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 149 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
23430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 150 */ "VNext" OpHelp(""),
23431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 151 */ "VRename" OpHelp(""),
23432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 152 */ "Pagecount" OpHelp(""),
23433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 153 */ "MaxPgcnt" OpHelp(""),
23434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 154 */ "Init" OpHelp("Start at P2"),
23435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 155 */ "Noop" OpHelp(""),
23436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 156 */ "Explain" OpHelp(""),
23355 23437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
23356 23438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return azName[i];
23357 23439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
23358 23440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
23359 23441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -34429,11 +34511,11 @@
34429 34511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Windows will only let you create file view mappings
34430 34512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on allocation size granularity boundaries.
34431 34513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** During sqlite3_os_init() we do a GetSystemInfo()
34432 34514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to get the granularity size.
34433 34515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
34434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SYSTEM_INFO winSysInfo;
34516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static SYSTEM_INFO winSysInfo;
34435 34517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
34436 34518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WAL
34437 34519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
34438 34520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
34439 34521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Helper functions to obtain and relinquish the global mutex. The
@@ -36363,19 +36445,16 @@
36363 36445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_LOAD_EXTENSION
36364 36446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
36365 36447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Interfaces for opening a shared library, finding entry points
36366 36448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** within the shared library, and closing the shared library.
36367 36449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
36368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
36369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Interfaces for opening a shared library, finding entry points
36370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** within the shared library, and closing the shared library.
36371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
36372 36450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
36373 36451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HANDLE h;
36374 36452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *zConverted = winConvertFromUtf8Filename(zFilename);
36375 36453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(pVfs);
36376 36454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zConverted==0 ){
36455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
36377 36456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
36378 36457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
36379 36458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( osIsNT() ){
36380 36459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_OS_WINRT
36381 36460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
h = osLoadPackagedLibrary((LPCWSTR)zConverted, 0);
@@ -36386,24 +36465,30 @@
36386 36465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_WIN32_HAS_ANSI
36387 36466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else{
36388 36467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
h = osLoadLibraryA((char*)zConverted);
36389 36468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
36390 36469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
36470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)h));
36391 36471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zConverted);
36392 36472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (void*)h;
36393 36473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
36394 36474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void winDlError(sqlite3_vfs *pVfs, int nBuf, char *zBufOut){
36395 36475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(pVfs);
36396 36476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
winGetLastErrorMsg(osGetLastError(), nBuf, zBufOut);
36397 36477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
36398 36478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void (*winDlSym(sqlite3_vfs *pVfs,void *pH,const char *zSym))(void){
36479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FARPROC proc;
36399 36480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(pVfs);
36400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return (void(*)(void))osGetProcAddressA((HANDLE)pH, zSym);
36481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc = osGetProcAddressA((HANDLE)pH, zSym);
36482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OSTRACE(("DLSYM handle=%p, symbol=%s, address=%p\n",
36483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void*)pH, zSym, (void*)proc));
36484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (void(*)(void))proc;
36401 36485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
36402 36486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void winDlClose(sqlite3_vfs *pVfs, void *pHandle){
36403 36487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(pVfs);
36404 36488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
osFreeLibrary((HANDLE)pHandle);
36489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OSTRACE(("DLCLOSE handle=%p\n", (void*)pHandle));
36405 36490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
36406 36491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else /* if SQLITE_OMIT_LOAD_EXTENSION is defined: */
36407 36492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define winDlOpen 0
36408 36493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define winDlError 0
36409 36494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define winDlSym 0
@@ -37095,11 +37180,12 @@
37095 37180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PgHdr *pSynced; /* Last synced page in dirty page list */
37096 37181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nRef; /* Number of referenced pages */
37097 37182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int szCache; /* Configured cache size */
37098 37183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int szPage; /* Size of every page in this cache */
37099 37184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int szExtra; /* Size of extra space for each page */
37100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bPurgeable; /* True if pages are on backing store */
37185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bPurgeable; /* True if pages are on backing store */
37186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 eCreate; /* eCreate value for for xFetch() */
37101 37187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xStress)(void*,PgHdr*); /* Call to try make a page clean */
37102 37188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pStress; /* Argument to xStress */
37103 37189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_pcache *pCache; /* Pluggable cache module */
37104 37190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PgHdr *pPage1; /* Reference to page 1 */
37105 37191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
@@ -37162,10 +37248,14 @@
37162 37248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPage->pDirtyPrev ){
37163 37249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->pDirtyPrev->pDirtyNext = pPage->pDirtyNext;
37164 37250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
37165 37251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage==p->pDirty );
37166 37252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pDirty = pPage->pDirtyNext;
37253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pDirty==0 && p->bPurgeable ){
37254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->eCreate==1 );
37255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->eCreate = 2;
37256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
37167 37257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37168 37258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->pDirtyNext = 0;
37169 37259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->pDirtyPrev = 0;
37170 37260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
37171 37261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
expensive_assert( pcacheCheckSynced(p) );
@@ -37182,10 +37272,13 @@
37182 37272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
37183 37273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->pDirtyNext = p->pDirty;
37184 37274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPage->pDirtyNext ){
37185 37275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->pDirtyNext->pDirtyPrev==0 );
37186 37276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->pDirtyNext->pDirtyPrev = pPage;
37277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( p->bPurgeable ){
37278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->eCreate==2 );
37279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->eCreate = 1;
37187 37280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37188 37281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pDirty = pPage;
37189 37282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !p->pDirtyTail ){
37190 37283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pDirtyTail = pPage;
37191 37284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -37251,10 +37344,11 @@
37251 37344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
37252 37345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(p, 0, sizeof(PCache));
37253 37346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->szPage = szPage;
37254 37347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->szExtra = szExtra;
37255 37348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->bPurgeable = bPurgeable;
37349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->eCreate = 2;
37256 37350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xStress = xStress;
37257 37351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pStress = pStress;
37258 37352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->szCache = 100;
37259 37353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37260 37354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -37290,11 +37384,11 @@
37290 37384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PCache *pCache, /* Obtain the page from this cache */
37291 37385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Pgno pgno, /* Page number to obtain */
37292 37386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int createFlag, /* If true, create page if it does not exist already */
37293 37387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PgHdr **ppPage /* Write the page here */
37294 37388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
37295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_pcache_page *pPage = 0;
37389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_pcache_page *pPage;
37296 37390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PgHdr *pPgHdr = 0;
37297 37391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eCreate;
37298 37392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
37299 37393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCache!=0 );
37300 37394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( createFlag==1 || createFlag==0 );
@@ -37301,12 +37395,16 @@
37301 37395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pgno>0 );
37302 37396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
37303 37397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the pluggable cache (sqlite3_pcache*) has not been allocated,
37304 37398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** allocate it now.
37305 37399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
37306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !pCache->pCache && createFlag ){
37400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !pCache->pCache ){
37307 37401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_pcache *p;
37402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !createFlag ){
37403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *ppPage = 0;
37404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_OK;
37405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
37308 37406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = sqlite3GlobalConfig.pcache2.xCreate(
37309 37407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->szPage, pCache->szExtra + sizeof(PgHdr), pCache->bPurgeable
37310 37408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
37311 37409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !p ){
37312 37410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM;
@@ -37313,15 +37411,20 @@
37313 37411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37314 37412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3GlobalConfig.pcache2.xCachesize(p, numberOfCachePages(pCache));
37315 37413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->pCache = p;
37316 37414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37317 37415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
37318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- eCreate = createFlag * (1 + (!pCache->bPurgeable || !pCache->pDirty));
37319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pCache->pCache ){
37320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPage = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, eCreate);
37321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
37322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
37416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* eCreate defines what to do if the page does not exist.
37417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0 Do not allocate a new page. (createFlag==0)
37418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 1 Allocate a new page if doing so is inexpensive.
37419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (createFlag==1 AND bPurgeable AND pDirty)
37420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2 Allocate a new page even it doing so is difficult.
37421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (createFlag==1 AND !(bPurgeable AND pDirty)
37422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
37423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eCreate = createFlag==0 ? 0 : pCache->eCreate;
37424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (createFlag*(1+(!pCache->bPurgeable||!pCache->pDirty)))==eCreate );
37425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPage = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, eCreate);
37323 37426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pPage && eCreate==1 ){
37324 37427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PgHdr *pPg;
37325 37428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
37326 37429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Find a dirty page to write-out and recycle. First try to find a
37327 37430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** page that does not require a journal-sync (one with PGHDR_NEED_SYNC
@@ -47905,11 +48008,11 @@
47905 48008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
47906 48009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
walIndexClose(pRet, 0);
47907 48010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OsClose(pRet->pWalFd);
47908 48011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(pRet);
47909 48012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
47910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iDC = sqlite3OsDeviceCharacteristics(pRet->pWalFd);
48013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iDC = sqlite3OsDeviceCharacteristics(pDbFd);
47911 48014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDC & SQLITE_IOCAP_SEQUENTIAL ){ pRet->syncHeader = 0; }
47912 48015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDC & SQLITE_IOCAP_POWERSAFE_OVERWRITE ){
47913 48016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->padToSectorBoundary = 0;
47914 48017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
47915 48018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppWal = pRet;
@@ -49276,11 +49379,11 @@
49276 49379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
49277 49380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOffset += iFirstAmt;
49278 49381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iAmt -= iFirstAmt;
49279 49382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pContent = (void*)(iFirstAmt + (char*)pContent);
49280 49383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->syncFlags & (SQLITE_SYNC_NORMAL|SQLITE_SYNC_FULL) );
49281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3OsSync(p->pFd, p->syncFlags);
49384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3OsSync(p->pFd, p->syncFlags & SQLITE_SYNC_MASK);
49282 49385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iAmt==0 || rc ) return rc;
49283 49386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
49284 49387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3OsWrite(p->pFd, pContent, iAmt, iOffset);
49285 49388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
49286 49389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -50214,11 +50317,10 @@
50214 50317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct KeyInfo *pKeyInfo; /* Argument passed to comparison function */
50215 50318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_INCRBLOB
50216 50319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Pgno *aOverflow; /* Cache of overflow page locations */
50217 50320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
50218 50321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Pgno pgnoRoot; /* The root page of this tree */
50219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_int64 cachedRowid; /* Next rowid cache. 0 means not valid */
50220 50322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CellInfo info; /* A parse of the cell we are pointing at */
50221 50323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 nKey; /* Size of pKey, or last integer key */
50222 50324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pKey; /* Saved key that was cursor's last known position */
50223 50325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int skipNext; /* Prev() is noop if negative. Next() is noop if positive */
50224 50326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 wrFlag; /* True if writable */
@@ -52198,17 +52300,16 @@
52198 52300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pBt->mutex) );
52199 52301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pBt->btsFlags & BTS_SECURE_DELETE ){
52200 52302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&data[hdr], 0, pBt->usableSize - hdr);
52201 52303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52202 52304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data[hdr] = (char)flags;
52203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- first = hdr + 8 + 4*((flags&PTF_LEAF)==0 ?1:0);
52305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ first = hdr + ((flags&PTF_LEAF)==0 ? 12 : 8);
52204 52306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&data[hdr+1], 0, 4);
52205 52307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data[hdr+7] = 0;
52206 52308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
put2byte(&data[hdr+5], pBt->usableSize);
52207 52309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->nFree = (u16)(pBt->usableSize - first);
52208 52310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
decodeFlags(pPage, flags);
52209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPage->hdrOffset = hdr;
52210 52311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->cellOffset = first;
52211 52312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->aDataEnd = &data[pBt->usableSize];
52212 52313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->aCellIdx = &data[first];
52213 52314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->nOverflow = 0;
52214 52315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pBt->pageSize>=512 && pBt->pageSize<=65536 );
@@ -54288,11 +54389,10 @@
54288 54389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->pNext ){
54289 54390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->pNext->pPrev = pCur;
54290 54391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
54291 54392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBt->pCursor = pCur;
54292 54393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->eState = CURSOR_INVALID;
54293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCur->cachedRowid = 0;
54294 54394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
54295 54395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
54296 54396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeCursor(
54297 54397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *p, /* The btree */
54298 54398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTable, /* Root page of table to open */
@@ -54329,40 +54429,10 @@
54329 54429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
54330 54430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3BtreeCursorZero(BtCursor *p){
54331 54431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(p, 0, offsetof(BtCursor, iPage));
54332 54432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
54333 54433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
54334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
54335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Set the cached rowid value of every cursor in the same database file
54336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** as pCur and having the same root page number as pCur. The value is
54337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** set to iRowid.
54338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
54339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Only positive rowid values are considered valid for this cache.
54340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The cache is initialized to zero, indicating an invalid cache.
54341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** A btree will work fine with zero or negative rowids. We just cannot
54342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** cache zero or negative rowids, which means tables that use zero or
54343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** negative rowids might run a little slower. But in practice, zero
54344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or negative rowids are very uncommon so this should not be a problem.
54345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
54346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3BtreeSetCachedRowid(BtCursor *pCur, sqlite3_int64 iRowid){
54347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- BtCursor *p;
54348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(p=pCur->pBt->pCursor; p; p=p->pNext){
54349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pgnoRoot==pCur->pgnoRoot ) p->cachedRowid = iRowid;
54350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
54351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pCur->cachedRowid==iRowid );
54352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
54353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
54354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
54355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Return the cached rowid for the given cursor. A negative or zero
54356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** return value indicates that the rowid cache is invalid and should be
54357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ignored. If the rowid cache has never before been set, then a
54358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** zero is returned.
54359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
54360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE sqlite3_int64 sqlite3BtreeGetCachedRowid(BtCursor *pCur){
54361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return pCur->cachedRowid;
54362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
54363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
54364 54434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
54365 54435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Close a cursor. The read lock on the database file is released
54366 54436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** when the last cursor is closed.
54367 54437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
54368 54438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeCloseCursor(BtCursor *pCur){
@@ -55433,18 +55503,28 @@
55433 55503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55434 55504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Advance the cursor to the next entry in the database. If
55435 55505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** successful then set *pRes=0. If the cursor
55436 55506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** was already pointing to the last entry in the database before
55437 55507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this routine was called, then set *pRes=1.
55508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
55509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The calling function will set *pRes to 0 or 1. The initial *pRes value
55510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** will be 1 if the cursor being stepped corresponds to an SQL index and
55511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if this routine could have been skipped if that SQL index had been
55512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a unique index. Otherwise the caller will have set *pRes to zero.
55513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Zero is the common case. The btree implementation is free to use the
55514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** initial *pRes value as a hint to improve performance, but the current
55515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLite btree implementation does not. (Note that the comdb2 btree
55516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** implementation does use this hint, however.)
55438 55517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55439 55518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor *pCur, int *pRes){
55440 55519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
55441 55520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idx;
55442 55521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemPage *pPage;
55443 55522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55444 55523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cursorHoldsMutex(pCur) );
55445 55524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRes!=0 );
55525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( *pRes==0 || *pRes==1 );
55446 55526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->skipNext==0 || pCur->eState!=CURSOR_VALID );
55447 55527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->eState!=CURSOR_VALID ){
55448 55528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = restoreCursorPosition(pCur);
55449 55529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
55450 55530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = 0;
@@ -55519,17 +55599,27 @@
55519 55599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55520 55600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Step the cursor to the back to the previous entry in the database. If
55521 55601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** successful then set *pRes=0. If the cursor
55522 55602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** was already pointing to the first entry in the database before
55523 55603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this routine was called, then set *pRes=1.
55604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
55605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The calling function will set *pRes to 0 or 1. The initial *pRes value
55606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** will be 1 if the cursor being stepped corresponds to an SQL index and
55607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if this routine could have been skipped if that SQL index had been
55608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a unique index. Otherwise the caller will have set *pRes to zero.
55609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Zero is the common case. The btree implementation is free to use the
55610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** initial *pRes value as a hint to improve performance, but the current
55611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLite btree implementation does not. (Note that the comdb2 btree
55612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** implementation does use this hint, however.)
55524 55613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55525 55614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){
55526 55615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
55527 55616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemPage *pPage;
55528 55617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55529 55618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cursorHoldsMutex(pCur) );
55530 55619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRes!=0 );
55620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( *pRes==0 || *pRes==1 );
55531 55621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->skipNext==0 || pCur->eState!=CURSOR_VALID );
55532 55622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->atLast = 0;
55533 55623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->eState!=CURSOR_VALID ){
55534 55624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pCur->eState>=CURSOR_REQUIRESEEK) ){
55535 55625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = btreeRestoreCursorPosition(pCur);
@@ -57622,15 +57712,21 @@
57622 57712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not to clear the cursor here.
57623 57713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
57624 57714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = saveAllCursors(pBt, pCur->pgnoRoot, pCur);
57625 57715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
57626 57716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
57627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If this is an insert into a table b-tree, invalidate any incrblob
57628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** cursors open on the row being replaced (assuming this is a replace
57629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** operation - if it is not, the following is a no-op). */
57630 57717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->pKeyInfo==0 ){
57718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If this is an insert into a table b-tree, invalidate any incrblob
57719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** cursors open on the row being replaced */
57631 57720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
invalidateIncrblobCursors(p, nKey, 0);
57721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
57722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If the cursor is currently on the last row and we are appending a
57723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** new row onto the end, set the "loc" to avoid an unnecessary btreeMoveto()
57724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** call */
57725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur->validNKey && nKey>0 && pCur->info.nKey==nKey-1 ){
57726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ loc = -1;
57727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
57632 57728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
57633 57729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
57634 57730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !loc ){
57635 57731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = btreeMoveto(pCur, pKey, nKey, appendBias, &loc);
57636 57732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
@@ -57696,12 +57792,12 @@
57696 57792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** entry in the table, and the next row inserted has an integer key
57697 57793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** larger than the largest existing key, it is possible to insert the
57698 57794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** row without seeking the cursor. This can be a big performance boost.
57699 57795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
57700 57796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->info.nSize = 0;
57701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCur->validNKey = 0;
57702 57797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && pPage->nOverflow ){
57798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCur->validNKey = 0;
57703 57799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = balance(pCur);
57704 57800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
57705 57801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Must make sure nOverflow is reset to zero even if the balance()
57706 57802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fails. Internal data structure corruption will result otherwise.
57707 57803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Also, set the cursor state to invalid. This stops saveCursorPosition()
@@ -57752,11 +57848,11 @@
57752 57848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from the internal node. The 'previous' entry is used for this instead
57753 57849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the 'next' entry, as the previous entry is always a part of the
57754 57850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sub-tree headed by the child page of the cell being deleted. This makes
57755 57851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** balancing the tree following the delete operation easier. */
57756 57852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pPage->leaf ){
57757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int notUsed;
57853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int notUsed = 0;
57758 57854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreePrevious(pCur, ¬Used);
57759 57855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
57760 57856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
57761 57857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
57762 57858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Save the positions of any other cursors open on this table before
@@ -60177,11 +60273,11 @@
60177 60273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60178 60274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60179 60275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
60180 60276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Release any memory held by the Mem. This may leave the Mem in an
60181 60277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** inconsistent state, for example with (Mem.z==0) and
60182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (Mem.type==SQLITE_TEXT).
60278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (Mem.memType==MEM_Str).
60183 60279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
60184 60280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeMemRelease(Mem *p){
60185 60281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeMemRelease(p);
60186 60282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->zMalloc ){
60187 60283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(p->db, p->zMalloc);
@@ -60368,11 +60464,11 @@
60368 60464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60369 60465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pMem->flags & MEM_RowSet ){
60370 60466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RowSetClear(pMem->u.pRowSet);
60371 60467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60372 60468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemSetTypeFlag(pMem, MEM_Null);
60373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_NULL;
60469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Null;
60374 60470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60375 60471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ValueSetNull(sqlite3_value *p){
60376 60472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetNull((Mem*)p);
60377 60473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60378 60474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -60381,11 +60477,11 @@
60381 60477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** n containing all zeros.
60382 60478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
60383 60479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeMemSetZeroBlob(Mem *pMem, int n){
60384 60480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(pMem);
60385 60481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Blob|MEM_Zero;
60386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_BLOB;
60482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Blob;
60387 60483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->n = 0;
60388 60484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( n<0 ) n = 0;
60389 60485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->u.nZero = n;
60390 60486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = SQLITE_UTF8;
60391 60487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -60404,11 +60500,11 @@
60404 60500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
60405 60501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeMemSetInt64(Mem *pMem, i64 val){
60406 60502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(pMem);
60407 60503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->u.i = val;
60408 60504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
60409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_INTEGER;
60505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Int;
60410 60506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60411 60507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60412 60508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_FLOATING_POINT
60413 60509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
60414 60510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Delete any previous value and set the value stored in *pMem to val,
@@ -60419,11 +60515,11 @@
60419 60515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetNull(pMem);
60420 60516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
60421 60517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(pMem);
60422 60518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->r = val;
60423 60519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Real;
60424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_FLOAT;
60520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Real;
60425 60521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60426 60522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60427 60523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
60428 60524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60429 60525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -60475,11 +60571,11 @@
60475 60571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeMemAboutToChange(Vdbe *pVdbe, Mem *pMem){
60476 60572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
60477 60573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pX;
60478 60574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1, pX=&pVdbe->aMem[1]; i<=pVdbe->nMem; i++, pX++){
60479 60575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pX->pScopyFrom==pMem ){
60480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pX->flags |= MEM_Invalid;
60576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pX->flags |= MEM_Undefined;
60481 60577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pX->pScopyFrom = 0;
60482 60578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60483 60579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60484 60580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->pScopyFrom = 0;
60485 60581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -60627,11 +60723,11 @@
60627 60723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60628 60724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60629 60725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->n = nByte;
60630 60726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = flags;
60631 60727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = (enc==0 ? SQLITE_UTF8 : enc);
60632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = (enc==0 ? SQLITE_BLOB : SQLITE_TEXT);
60728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = flags&0x1f;
60633 60729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
60634 60730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_UTF16
60635 60731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pMem->enc!=SQLITE_UTF8 && sqlite3VdbeMemHandleBom(pMem) ){
60636 60732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM;
60637 60733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -60798,11 +60894,11 @@
60798 60894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->z = &zData[offset];
60799 60895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Blob|MEM_Ephem;
60800 60896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( SQLITE_OK==(rc = sqlite3VdbeMemGrow(pMem, amt+2, 0)) ){
60801 60897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Blob|MEM_Dyn|MEM_Term;
60802 60898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = 0;
60803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_BLOB;
60899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Blob;
60804 60900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( key ){
60805 60901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeKey(pCur, offset, amt, pMem->z);
60806 60902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
60807 60903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeData(pCur, offset, amt, pMem->z);
60808 60904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -60868,11 +60964,11 @@
60868 60964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
60869 60965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE sqlite3_value *sqlite3ValueNew(sqlite3 *db){
60870 60966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *p = sqlite3DbMallocZero(db, sizeof(*p));
60871 60967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
60872 60968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags = MEM_Null;
60873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->type = SQLITE_NULL;
60969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->memType = MEM_Null;
60874 60970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->db = db;
60875 60971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60876 60972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p;
60877 60973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60878 60974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -60918,11 +61014,11 @@
60918 61014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRec->pKeyInfo->enc==ENC(db) );
60919 61015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec->flags = UNPACKED_PREFIX_MATCH;
60920 61016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec->aMem = (Mem *)((u8*)pRec + ROUND8(sizeof(UnpackedRecord)));
60921 61017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nCol; i++){
60922 61018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec->aMem[i].flags = MEM_Null;
60923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRec->aMem[i].type = SQLITE_NULL;
61019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRec->aMem[i].memType = MEM_Null;
60924 61020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec->aMem[i].db = db;
60925 61021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60926 61022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
60927 61023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pRec);
60928 61024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec = 0;
@@ -60991,11 +61087,11 @@
60991 61087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetInt64(pVal, (i64)pExpr->u.iValue*negInt);
60992 61088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
60993 61089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zVal = sqlite3MPrintf(db, "%s%s", zNeg, pExpr->u.zToken);
60994 61090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zVal==0 ) goto no_mem;
60995 61091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ValueSetStr(pVal, -1, zVal, SQLITE_UTF8, SQLITE_DYNAMIC);
60996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( op==TK_FLOAT ) pVal->type = SQLITE_FLOAT;
61092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==TK_FLOAT ) pVal->memType = MEM_Real;
60997 61093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
60998 61094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (op==TK_INTEGER || op==TK_FLOAT ) && affinity==SQLITE_AFF_NONE ){
60999 61095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ValueApplyAffinity(pVal, SQLITE_AFF_NUMERIC, SQLITE_UTF8);
61000 61096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
61001 61097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ValueApplyAffinity(pVal, affinity, SQLITE_UTF8);
@@ -61449,10 +61545,13 @@
61449 61545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
61450 61546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef VDBE_PROFILE
61451 61547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->cycles = 0;
61452 61548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->cnt = 0;
61453 61549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
61550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_VDBE_COVERAGE
61551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->iSrcLine = 0;
61552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
61454 61553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return i;
61455 61554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
61456 61555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeAddOp0(Vdbe *p, int op){
61457 61556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3VdbeAddOp3(p, op, 0, 0, 0);
61458 61557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -61810,11 +61909,11 @@
61810 61909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
61811 61910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
61812 61911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Add a whole list of operations to the operation stack. Return the
61813 61912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** address of the first operation added.
61814 61913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
61815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3VdbeAddOpList(Vdbe *p, int nOp, VdbeOpList const *aOp){
61914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3VdbeAddOpList(Vdbe *p, int nOp, VdbeOpList const *aOp, int iLineno){
61816 61915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addr;
61817 61916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->magic==VDBE_MAGIC_INIT );
61818 61917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nOp + nOp > p->pParse->nOpAlloc && growOpArray(p) ){
61819 61918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
61820 61919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -61837,10 +61936,15 @@
61837 61936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->p4type = P4_NOTUSED;
61838 61937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->p4.p = 0;
61839 61938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->p5 = 0;
61840 61939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
61841 61940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->zComment = 0;
61941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
61942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_VDBE_COVERAGE
61943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut->iSrcLine = iLineno+i;
61944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
61945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)iLineno;
61842 61946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
61843 61947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
61844 61948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->db->flags & SQLITE_VdbeAddopTrace ){
61845 61949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbePrintOp(0, i+addr, &p->aOp[i+addr]);
61846 61950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -62126,10 +62230,19 @@
62126 62230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
62127 62231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62128 62232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62129 62233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* NDEBUG */
62130 62234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_VDBE_COVERAGE
62236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
62237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Set the value if the iSrcLine field for the previously coded instruction.
62238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
62239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3VdbeSetLineNumber(Vdbe *v, int iLine){
62240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeGetOp(v,-1)->iSrcLine = iLine;
62241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
62242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* SQLITE_VDBE_COVERAGE */
62243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
62131 62244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
62132 62245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the opcode for a given address. If the address is -1, then
62133 62246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** return the most recently inserted opcode.
62134 62247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
62135 62248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If a memory allocation error has occurred prior to the calling of this
@@ -62138,28 +62251,17 @@
62138 62251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The return of a dummy opcode allows the call to continue functioning
62139 62252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** after a OOM fault without having to check to see if the return from
62140 62253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this routine is a valid pointer. But because the dummy.opcode is 0,
62141 62254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** dummy will never be written to. This is verified by code inspection and
62142 62255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by running with Valgrind.
62143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
62144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** About the #ifdef SQLITE_OMIT_TRACE: Normally, this routine is never called
62145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** unless p->nOp>0. This is because in the absense of SQLITE_OMIT_TRACE,
62146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** an OP_Trace instruction is always inserted by sqlite3VdbeGet() as soon as
62147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** a new VDBE is created. So we are free to set addr to p->nOp-1 without
62148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** having to double-check to make sure that the result is non-negative. But
62149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if SQLITE_OMIT_TRACE is defined, the OP_Trace is omitted and we do need to
62150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** check the value of p->nOp-1 before continuing.
62151 62256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
62152 62257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE VdbeOp *sqlite3VdbeGetOp(Vdbe *p, int addr){
62153 62258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* C89 specifies that the constant "dummy" will be initialized to all
62154 62259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** zeros, which is correct. MSVC generates a warning, nevertheless. */
62155 62260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static VdbeOp dummy; /* Ignore the MSVC warning about no initializer */
62156 62261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->magic==VDBE_MAGIC_INIT );
62157 62262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addr<0 ){
62158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_OMIT_TRACE
62159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->nOp==0 ) return (VdbeOp*)&dummy;
62160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
62161 62263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = p->nOp - 1;
62162 62264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62163 62265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (addr>=0 && addr<p->nOp) || p->db->mallocFailed );
62164 62266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->db->mallocFailed ){
62165 62267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (VdbeOp*)&dummy;
@@ -62460,11 +62562,11 @@
62460 62562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOut==0 ) pOut = stdout;
62461 62563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zP4 = displayP4(pOp, zPtr, sizeof(zPtr));
62462 62564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
62463 62565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
displayComment(pOp, zP4, zCom, sizeof(zCom));
62464 62566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
62465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zCom[0] = 0
62567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCom[0] = 0;
62466 62568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
62467 62569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* NB: The sqlite3OpcodeName() function is implemented by code created
62468 62570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by the mkopcodeh.awk and mkopcodec.awk scripts which extract the
62469 62571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** information from the vdbe.c source text */
62470 62572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(pOut, zFormat1, pc,
@@ -62509,11 +62611,11 @@
62509 62611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->zMalloc ){
62510 62612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, p->zMalloc);
62511 62613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zMalloc = 0;
62512 62614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62513 62615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->flags = MEM_Invalid;
62616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->flags = MEM_Undefined;
62515 62617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62516 62618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->mallocFailed = malloc_failed;
62517 62619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62518 62620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62519 62621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -62631,19 +62733,19 @@
62631 62733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62632 62734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp = &apSub[j]->aOp[i];
62633 62735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62634 62736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->explain==1 ){
62635 62737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
62636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_INTEGER;
62738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Int;
62637 62739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->u.i = i; /* Program counter */
62638 62740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem++;
62639 62741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62640 62742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Static|MEM_Str|MEM_Term;
62641 62743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->z = (char*)sqlite3OpcodeName(pOp->opcode); /* Opcode */
62642 62744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pMem->z!=0 );
62643 62745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->n = sqlite3Strlen30(pMem->z);
62644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_TEXT;
62746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Str;
62645 62747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = SQLITE_UTF8;
62646 62748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem++;
62647 62749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62648 62750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* When an OP_Program opcode is encounter (the only opcode that has
62649 62751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a P4_SUBPROGRAM argument), expand the size of the array of subprograms
@@ -62665,21 +62767,21 @@
62665 62767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62666 62768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62667 62769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62668 62770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
62669 62771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->u.i = pOp->p1; /* P1 */
62670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_INTEGER;
62772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Int;
62671 62773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem++;
62672 62774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62673 62775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
62674 62776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->u.i = pOp->p2; /* P2 */
62675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_INTEGER;
62777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Int;
62676 62778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem++;
62677 62779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62678 62780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Int;
62679 62781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->u.i = pOp->p3; /* P3 */
62680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_INTEGER;
62782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Int;
62681 62783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem++;
62682 62784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62683 62785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3VdbeMemGrow(pMem, 32, 0) ){ /* P4 */
62684 62786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->db->mallocFailed );
62685 62787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
@@ -62691,11 +62793,11 @@
62691 62793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
62692 62794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pMem->z!=0 );
62693 62795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->n = sqlite3Strlen30(pMem->z);
62694 62796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = SQLITE_UTF8;
62695 62797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_TEXT;
62798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Str;
62697 62799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem++;
62698 62800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62699 62801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->explain==1 ){
62700 62802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3VdbeMemGrow(pMem, 4, 0) ){
62701 62803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->db->mallocFailed );
@@ -62702,11 +62804,11 @@
62702 62804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
62703 62805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62704 62806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Dyn|MEM_Str|MEM_Term;
62705 62807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->n = 2;
62706 62808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(3, pMem->z, "%.2x", pOp->p5); /* P5 */
62707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_TEXT;
62809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Str;
62708 62810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = SQLITE_UTF8;
62709 62811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem++;
62710 62812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62711 62813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
62712 62814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3VdbeMemGrow(pMem, 500, 0) ){
@@ -62713,15 +62815,15 @@
62713 62815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->db->mallocFailed );
62714 62816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
62715 62817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62716 62818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Dyn|MEM_Str|MEM_Term;
62717 62819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->n = displayComment(pOp, zP4, pMem->z, 500);
62718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_TEXT;
62820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Str;
62719 62821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->enc = SQLITE_UTF8;
62720 62822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
62721 62823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->flags = MEM_Null; /* Comment */
62722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_NULL;
62824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->memType = MEM_Null;
62723 62825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
62724 62826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62725 62827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62726 62828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nResColumn = 8 - 4*(p->explain-1);
62727 62829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pResultSet = &p->aMem[1];
@@ -62740,11 +62842,11 @@
62740 62842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z = 0;
62741 62843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->zSql ){
62742 62844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = p->zSql;
62743 62845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->nOp>=1 ){
62744 62846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const VdbeOp *pOp = &p->aOp[0];
62745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->opcode==OP_Trace && pOp->p4.z!=0 ){
62847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_Init && pOp->p4.z!=0 ){
62746 62848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = pOp->p4.z;
62747 62849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( sqlite3Isspace(*z) ) z++;
62748 62850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62749 62851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62750 62852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z ) printf("SQL: [%s]\n", z);
@@ -62759,11 +62861,11 @@
62759 62861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nOp = p->nOp;
62760 62862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp;
62761 62863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3IoTrace==0 ) return;
62762 62864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nOp<1 ) return;
62763 62865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp = &p->aOp[0];
62764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->opcode==OP_Trace && pOp->p4.z!=0 ){
62866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_Init && pOp->p4.z!=0 ){
62765 62867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j;
62766 62868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char z[1000];
62767 62869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(z), z, "%s", pOp->p4.z);
62768 62870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; sqlite3Isspace(z[i]); i++){}
62769 62871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; z[i]; i++){
@@ -62977,11 +63079,11 @@
62977 63079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62978 63080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->aMem ){
62979 63081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aMem--; /* aMem[] goes from 1..nMem */
62980 63082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nMem = nMem; /* not from 0..nMem-1 */
62981 63083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(n=1; n<=nMem; n++){
62982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->aMem[n].flags = MEM_Invalid;
63084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->aMem[n].flags = MEM_Undefined;
62983 63085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aMem[n].db = db;
62984 63086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62985 63087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
62986 63088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->explain = pParse->explain;
62987 63089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeRewind(p);
@@ -63089,11 +63191,11 @@
63089 63191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Execute assert() statements to ensure that the Vdbe.apCsr[] and
63090 63192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Vdbe.aMem[] arrays have already been cleaned up. */
63091 63193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
63092 63194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->apCsr ) for(i=0; i<p->nCursor; i++) assert( p->apCsr[i]==0 );
63093 63195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->aMem ){
63094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=1; i<=p->nMem; i++) assert( p->aMem[i].flags==MEM_Invalid );
63196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=1; i<=p->nMem; i++) assert( p->aMem[i].flags==MEM_Undefined );
63095 63197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
63096 63198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
63097 63199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
63098 63200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, p->zErrMsg);
63099 63201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zErrMsg = 0;
@@ -63838,16 +63940,28 @@
63838 63940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(out, "---- ");
63839 63941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<p->nOp; i++){
63840 63942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(out, "%02x", p->aOp[i].opcode);
63841 63943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
63842 63944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(out, "\n");
63945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->zSql ){
63946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c, pc = 0;
63947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(out, "-- ");
63948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; (c = p->zSql[i])!=0; i++){
63949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pc=='\n' ) fprintf(out, "-- ");
63950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ putc(c, out);
63951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = c;
63952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
63953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pc!='\n' ) fprintf(out, "\n");
63954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
63843 63955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<p->nOp; i++){
63844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fprintf(out, "%6d %10lld %8lld ",
63956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zHdr[100];
63957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(zHdr), zHdr, "%6u %12llu %8llu ",
63845 63958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aOp[i].cnt,
63846 63959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aOp[i].cycles,
63847 63960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aOp[i].cnt>0 ? p->aOp[i].cycles/p->aOp[i].cnt : 0
63848 63961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
63962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(out, "%s", zHdr);
63849 63963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbePrintOp(out, i, &p->aOp[i]);
63850 63964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
63851 63965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fclose(out);
63852 63966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
63853 63967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -64880,11 +64994,45 @@
64880 64994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API const void *sqlite3_value_text16le(sqlite3_value *pVal){
64881 64995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ValueText(pVal, SQLITE_UTF16LE);
64882 64996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64883 64997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_UTF16 */
64884 64998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_value_type(sqlite3_value* pVal){
64885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return pVal->type;
64999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const u8 aType[] = {
65000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_BLOB, /* 0x00 */
65001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x01 */
65002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_TEXT, /* 0x02 */
65003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x03 */
65004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_INTEGER, /* 0x04 */
65005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x05 */
65006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_INTEGER, /* 0x06 */
65007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x07 */
65008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_FLOAT, /* 0x08 */
65009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x09 */
65010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_FLOAT, /* 0x0a */
65011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x0b */
65012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_INTEGER, /* 0x0c */
65013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x0d */
65014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_INTEGER, /* 0x0e */
65015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x0f */
65016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_BLOB, /* 0x10 */
65017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x11 */
65018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_TEXT, /* 0x12 */
65019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x13 */
65020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_INTEGER, /* 0x14 */
65021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x15 */
65022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_INTEGER, /* 0x16 */
65023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x17 */
65024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_FLOAT, /* 0x18 */
65025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x19 */
65026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_FLOAT, /* 0x1a */
65027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x1b */
65028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_INTEGER, /* 0x1c */
65029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x1d */
65030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_INTEGER, /* 0x1e */
65031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_NULL, /* 0x1f */
65032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
65033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return aType[pVal->memType&0x1f];
64886 65034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
64887 65035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64888 65036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**************************** sqlite3_result_ *******************************
64889 65037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The following routines are used by user-defined functions to specify
64890 65038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the function result.
@@ -65839,11 +65987,11 @@
65839 65987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF16NATIVE);
65840 65988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
65841 65989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_UTF16 */
65842 65990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){
65843 65991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
65844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- switch( pValue->type ){
65992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( sqlite3_value_type((sqlite3_value*)pValue) ){
65845 65993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_INTEGER: {
65846 65994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_bind_int64(pStmt, i, pValue->u.i);
65847 65995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
65848 65996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
65849 65997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_FLOAT: {
@@ -66340,37 +66488,12 @@
66340 66488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** May you do good and not evil.
66341 66489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** May you find forgiveness for yourself and forgive others.
66342 66490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** May you share freely, never taking more than you give.
66343 66491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
66344 66492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*************************************************************************
66345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The code in this file implements execution method of the
66346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Virtual Database Engine (VDBE). A separate file ("vdbeaux.c")
66347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** handles housekeeping details such as creating and deleting
66348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** VDBE instances. This file is solely interested in executing
66349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the VDBE program.
66350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** In the external interface, an "sqlite3_stmt*" is an opaque pointer
66352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to a VDBE.
66353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The SQL parser generates a program which is then executed by
66355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the VDBE to do the work of the SQL statement. VDBE programs are
66356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** similar in form to assembly language. The program consists of
66357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** a linear sequence of operations. Each operation has an opcode
66358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and 5 operands. Operands P1, P2, and P3 are integers. Operand P4
66359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is a null-terminated string. Operand P5 is an unsigned character.
66360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Few opcodes use all 5 operands.
66361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Computation results are stored on a set of registers numbered beginning
66363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** with 1 and going up to Vdbe.nMem. Each register can store
66364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** either an integer, a null-terminated string, a floating point
66365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** number, or the SQL "NULL" value. An implicit conversion from one
66366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** type to the other occurs as necessary.
66367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Most of the code in this file is taken up by the sqlite3VdbeExec()
66369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** function which does the work of interpreting a VDBE program.
66370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** But other routines are also provided to help in building up
66371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** a program instruction by instruction.
66493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The code in this file implements the function that runs the
66494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** bytecode of a prepared statement.
66372 66495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
66373 66496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Various scripts scan this source file in order to generate HTML
66374 66497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** documentation, headers files, or other derived files. The formatting
66375 66498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the code in this file is, therefore, important. See other comments
66376 66499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in this file for details. If in doubt, do not deviate from existing
@@ -66378,11 +66501,15 @@
66378 66501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
66379 66502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66380 66503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
66381 66504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Invoke this macro on memory cells just prior to changing the
66382 66505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value of the cell. This macro verifies that shallow copies are
66383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** not misused.
66506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** not misused. A shallow copy of a string or blob just copies a
66507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pointer to the string or blob, not the content. If the original
66508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is changed while the copy is still in use, the string or blob might
66509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be changed out from under the copy. This macro verifies that nothing
66510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** like that every happens.
66384 66511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
66385 66512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
66386 66513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define memAboutToChange(P,M) sqlite3VdbeMemAboutToChange(P,M)
66387 66514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
66388 66515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define memAboutToChange(P,M)
@@ -66437,11 +66564,11 @@
66437 66564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
66438 66565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
66439 66566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
66440 66567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66441 66568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
66442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The next global variable is incremented each type the OP_Found opcode
66569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The next global variable is incremented each time the OP_Found opcode
66443 66570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is executed. This is used to test whether or not the foreign key
66444 66571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** operation implemented using OP_FkIsZero is working. This variable
66445 66572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** has no function other than to help verify the correct operation of the
66446 66573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** library.
66447 66574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -66457,10 +66584,38 @@
66457 66584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define UPDATE_MAX_BLOBSIZE(P) updateMaxBlobsize(P)
66458 66585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
66459 66586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define UPDATE_MAX_BLOBSIZE(P)
66460 66587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
66461 66588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
66590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Invoke the VDBE coverage callback, if that callback is defined. This
66591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** feature is used for test suite validation only and does not appear an
66592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** production builds.
66593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
66594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** M is an integer, 2 or 3, that indices how many different ways the
66595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** branch can go. It is usually 2. "I" is the direction the branch
66596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** goes. 0 means falls through. 1 means branch is taken. 2 means the
66597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** second alternative branch is taken.
66598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
66599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !defined(SQLITE_VDBE_COVERAGE)
66600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeBranchTaken(I,M)
66601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
66602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VdbeBranchTaken(I,M) vdbeTakeBranch(pOp->iSrcLine,I,M)
66603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void vdbeTakeBranch(int iSrcLine, u8 I, u8 M){
66604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iSrcLine<=2 && ALWAYS(iSrcLine>0) ){
66605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ M = iSrcLine;
66606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Assert the truth of VdbeCoverageAlwaysTaken() and
66607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** VdbeCoverageNeverTaken() */
66608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (M & I)==I );
66609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
66610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3GlobalConfig.xVdbeBranch==0 ) return; /*NO_TEST*/
66611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3GlobalConfig.xVdbeBranch(sqlite3GlobalConfig.pVdbeBranchArg,
66612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iSrcLine,I,M);
66613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
66614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
66615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
66616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
66462 66617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
66463 66618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Convert the given register into a string if it isn't one
66464 66619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** already. Return non-zero if a malloc() fails.
66465 66620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
66466 66621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define Stringify(P, enc) \
@@ -66481,35 +66636,11 @@
66481 66636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define Deephemeralize(P) \
66482 66637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ((P)->flags&MEM_Ephem)!=0 \
66483 66638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3VdbeMemMakeWriteable(P) ){ goto no_mem;}
66484 66639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66485 66640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Return true if the cursor was opened using the OP_OpenSorter opcode. */
66486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define isSorter(x) ((x)->pSorter!=0)
66487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
66488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
66489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Argument pMem points at a register that will be passed to a
66490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** user-defined function or returned to the user as the result of a query.
66491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This routine sets the pMem->type variable used by the sqlite3_value_*()
66492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** routines.
66493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
66494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3VdbeMemStoreType(Mem *pMem){
66495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int flags = pMem->flags;
66496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( flags & MEM_Null ){
66497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_NULL;
66498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
66499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- else if( flags & MEM_Int ){
66500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_INTEGER;
66501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
66502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- else if( flags & MEM_Real ){
66503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_FLOAT;
66504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
66505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- else if( flags & MEM_Str ){
66506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_TEXT;
66507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
66508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->type = SQLITE_BLOB;
66509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
66510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
66641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define isSorter(x) ((x)->pSorter!=0)
66511 66642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66512 66643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
66513 66644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allocate VdbeCursor number iCur. Return a pointer to it. Return NULL
66514 66645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if we run out of memory.
66515 66646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -66635,16 +66766,18 @@
66635 66766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** into a numeric representation. Use either INTEGER or REAL whichever
66636 66767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is appropriate. But only do the conversion if it is possible without
66637 66768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** loss of information and return the revised type of the argument.
66638 66769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
66639 66770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_value_numeric_type(sqlite3_value *pVal){
66640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Mem *pMem = (Mem*)pVal;
66641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pMem->type==SQLITE_TEXT ){
66771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int eType = sqlite3_value_type(pVal);
66772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( eType==SQLITE_TEXT ){
66773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Mem *pMem = (Mem*)pVal;
66642 66774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
applyNumericAffinity(pMem);
66643 66775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemStoreType(pMem);
66776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eType = sqlite3_value_type(pVal);
66644 66777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
66645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return pMem->type;
66778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return eType;
66646 66779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
66647 66780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66648 66781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
66649 66782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Exported version of applyAffinity(). This one works on sqlite3_value*,
66650 66783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not the internal Mem* type.
@@ -66743,11 +66876,11 @@
66743 66876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
66744 66877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
66745 66878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Print the value of a register for tracing purposes:
66746 66879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
66747 66880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void memTracePrint(Mem *p){
66748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->flags & MEM_Invalid ){
66881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->flags & MEM_Undefined ){
66749 66882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf(" undefined");
66750 66883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->flags & MEM_Null ){
66751 66884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf(" NULL");
66752 66885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( (p->flags & (MEM_Int|MEM_Str))==(MEM_Int|MEM_Str) ){
66753 66886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf(" si:%lld", p->u.i);
@@ -66875,24 +67008,10 @@
66875 67008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66876 67009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of hwtime.h **********************************************/
66877 67010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in vdbe.c ***********************/
66878 67011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66879 67012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
66880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
66881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
66882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The CHECK_FOR_INTERRUPT macro defined here looks to see if the
66883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sqlite3_interrupt() routine has been called. If it has been, then
66884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** processing of the VDBE program is interrupted.
66885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This macro added to every instruction that does a jump in order to
66887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** implement a loop. This test used to be on every single instruction,
66888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** but that meant we more testing than we needed. By only testing the
66889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** flag on jump instructions, we get a (small) speed improvement.
66890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
66891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define CHECK_FOR_INTERRUPT \
66892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db->u1.isInterrupted ) goto abort_due_to_interrupt;
66893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
66894 67013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66895 67014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef NDEBUG
66896 67015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
66897 67016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function is only called from within an assert() expression. It
66898 67017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** checks that the sqlite3.nTransaction variable is correctly set to
@@ -66912,39 +67031,12 @@
66912 67031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
66913 67032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
66914 67033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66915 67034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66916 67035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
66917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Execute as much of a VDBE program as we can then return.
66918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sqlite3VdbeMakeReady() must be called before this routine in order to
66920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** close the program with a final OP_Halt and to set up the callbacks
66921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and the error message pointer.
66922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Whenever a row or result data is available, this routine will either
66924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** invoke the result callback (if there is one) or return with
66925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** SQLITE_ROW.
66926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If an attempt is made to open a locked database, then this routine
66928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** will either invoke the busy callback (if there is one) or it will
66929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** return SQLITE_BUSY.
66930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If an error occurs, an error message is written to memory obtained
66932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** from sqlite3_malloc() and p->zErrMsg is made to point to that memory.
66933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The error code is stored in p->rc and this routine returns SQLITE_ERROR.
66934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the callback ever returns non-zero, then the program exits
66936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** immediately. There will be no error message but the p->rc field is
66937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** set to SQLITE_ABORT and this routine will return SQLITE_ERROR.
66938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** A memory allocation error causes p->rc to be set to SQLITE_NOMEM and this
66940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** routine to return SQLITE_ERROR.
66941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Other fatal errors return SQLITE_ERROR.
66943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
66944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** After this routine has finished, sqlite3VdbeFinalize() should be
66945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** used to clean up the mess that was left behind.
67036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Execute as much of a VDBE program as we can.
67037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This is the core of sqlite3_step().
66946 67038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
66947 67039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeExec(
66948 67040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *p /* The VDBE */
66949 67041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
66950 67042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int pc=0; /* The program counter */
@@ -66966,11 +67058,10 @@
66966 67058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pOut = 0; /* Output operand */
66967 67059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *aPermute = 0; /* Permutation of columns for OP_Compare */
66968 67060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 lastRowid = db->lastRowid; /* Saved value of the last insert ROWID */
66969 67061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef VDBE_PROFILE
66970 67062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 start; /* CPU clock count at start of opcode */
66971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int origPc; /* Program counter at start of opcode */
66972 67063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
66973 67064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*** INSERT STACK UNION HERE ***/
66974 67065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
66975 67066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->magic==VDBE_MAGIC_RUN ); /* sqlite3_step() verifies this */
66976 67067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeEnter(p);
@@ -66984,11 +67075,11 @@
66984 67075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = SQLITE_OK;
66985 67076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iCurrentTime = 0;
66986 67077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->explain==0 );
66987 67078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pResultSet = 0;
66988 67079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->busyHandler.nBusy = 0;
66989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CHECK_FOR_INTERRUPT;
67080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->u1.isInterrupted ) goto abort_due_to_interrupt;
66990 67081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeIOTraceSql(p);
66991 67082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_PROGRESS_CALLBACK
66992 67083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->xProgress ){
66993 67084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( 0 < db->nProgressOps );
66994 67085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nProgressLimit = (unsigned)p->aCounter[SQLITE_STMTSTATUS_VM_STEP];
@@ -67028,11 +67119,10 @@
67028 67119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
67029 67120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pc=p->pc; rc==SQLITE_OK; pc++){
67030 67121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pc>=0 && pc<p->nOp );
67031 67122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ) goto no_mem;
67032 67123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef VDBE_PROFILE
67033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- origPc = pc;
67034 67124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
start = sqlite3Hwtime();
67035 67125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
67036 67126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nVmStep++;
67037 67127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp = &aOp[pc];
67038 67128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -67160,11 +67250,11 @@
67160 67250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** But that is not due to sloppy coding habits. The code is written this
67161 67251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** way for performance, to avoid having to run the interrupt and progress
67162 67252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** checks on every opcode. This helps sqlite3_step() to run about 1.5%
67163 67253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** faster according to "valgrind --tool=cachegrind" */
67164 67254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
check_for_interrupt:
67165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CHECK_FOR_INTERRUPT;
67255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->u1.isInterrupted ) goto abort_due_to_interrupt;
67166 67256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_PROGRESS_CALLBACK
67167 67257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Call the progress callback if it is configured and the required number
67168 67258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of VDBE ops have been executed (either since this invocation of
67169 67259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3VdbeExec() or since last time the progress callback was called).
67170 67260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the progress callback returns non-zero, exit the virtual machine with
@@ -67200,24 +67290,70 @@
67200 67290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
67201 67291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67202 67292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
67203 67293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: Return P1 * * * *
67204 67294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
67205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Jump to the next instruction after the address in register P1.
67295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Jump to the next instruction after the address in register P1. After
67296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the jump, register P1 becomes undefined.
67206 67297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
67207 67298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Return: { /* in1 */
67208 67299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
67209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pIn1->flags & MEM_Int );
67300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pIn1->flags==MEM_Int );
67210 67301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = (int)pIn1->u.i;
67302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn1->flags = MEM_Undefined;
67211 67303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
67212 67304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67213 67305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
67214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: Yield P1 * * * *
67306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: InitCoroutine P1 P2 P3 * *
67307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
67308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Set up register P1 so that it will OP_Yield to the co-routine
67309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** located at address P3.
67310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
67311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P2!=0 then the co-routine implementation immediately follows
67312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this opcode. So jump over the co-routine implementation to
67313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** address P2.
67314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
67315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_InitCoroutine: { /* jump */
67316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p1>0 && pOp->p1<=(p->nMem-p->nCursor) );
67317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p2>=0 && pOp->p2<p->nOp );
67318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p3>=0 && pOp->p3<p->nOp );
67319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut = &aMem[pOp->p1];
67320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !VdbeMemDynamic(pOut) );
67321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut->u.i = pOp->p3 - 1;
67322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut->flags = MEM_Int;
67323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p2 ) pc = pOp->p2 - 1;
67324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
67325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
67326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
67327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: EndCoroutine P1 * * * *
67328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
67329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The instruction at the address in register P1 is an OP_Yield.
67330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Jump to the P2 parameter of that OP_Yield.
67331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** After the jump, register P1 becomes undefined.
67332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
67333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_EndCoroutine: { /* in1 */
67334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeOp *pCaller;
67335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn1 = &aMem[pOp->p1];
67336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pIn1->flags==MEM_Int );
67337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pIn1->u.i>=0 && pIn1->u.i<p->nOp );
67338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCaller = &aOp[pIn1->u.i];
67339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pCaller->opcode==OP_Yield );
67340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pCaller->p2>=0 && pCaller->p2<p->nOp );
67341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = pCaller->p2 - 1;
67342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn1->flags = MEM_Undefined;
67343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
67344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
67345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
67346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: Yield P1 P2 * * *
67215 67347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
67216 67348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Swap the program counter with the value in register P1.
67349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
67350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the co-routine ends with OP_Yield or OP_Return then continue
67351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to the next instruction. But if the co-routine ends with
67352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** OP_EndCoroutine, jump immediately to P2.
67217 67353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
67218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case OP_Yield: { /* in1 */
67354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_Yield: { /* in1, jump */
67219 67355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int pcDest;
67220 67356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
67221 67357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pIn1->flags & MEM_Dyn)==0 );
67222 67358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1->flags = MEM_Int;
67223 67359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcDest = (int)pIn1->u.i;
@@ -67226,11 +67362,11 @@
67226 67362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pcDest;
67227 67363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
67228 67364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67229 67365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
67230 67366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: HaltIfNull P1 P2 P3 P4 P5
67231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Synopsis: if r[P3] null then halt
67367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Synopsis: if r[P3]=null halt
67232 67368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
67233 67369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Check the value in register P3. If it is NULL then Halt using
67234 67370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parameter P1, P2, and P4 as if this were a Halt instruction. If the
67235 67371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value in register P3 is not NULL, then this routine is a no-op.
67236 67372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The P5 parameter should be 1.
@@ -67374,11 +67510,13 @@
67374 67510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
67375 67511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: String8 * P2 * P4 *
67376 67512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: r[P2]='P4'
67377 67513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
67378 67514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P4 points to a nul terminated UTF-8 string. This opcode is transformed
67379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** into an OP_String before it is executed for the first time.
67515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** into an OP_String before it is executed for the first time. During
67516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this transformation, the length of string P4 is computed and stored
67517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** as the P1 parameter.
67380 67518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
67381 67519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_String8: { /* same as TK_STRING, out2-prerelease */
67382 67520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p4.z!=0 );
67383 67521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->opcode = OP_String;
67384 67522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p1 = sqlite3Strlen30(pOp->p4.z);
@@ -67448,12 +67586,26 @@
67448 67586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt--;
67449 67587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67450 67588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
67451 67589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67452 67590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
67591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: SoftNull P1 * * * *
67592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Synopsis: r[P1]=NULL
67593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
67594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Set register P1 to have the value NULL as seen by the OP_MakeRecord
67595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** instruction, but do not free any string or blob memory associated with
67596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the register, so that if the value was a string or blob that was
67597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** previously copied using OP_SCopy, the copies will continue to be valid.
67598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
67599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_SoftNull: {
67600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p1>0 && pOp->p1<=(p->nMem-p->nCursor) );
67601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut = &aMem[pOp->p1];
67602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut->flags = (pOut->flags|MEM_Null)&~MEM_Undefined;
67603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
67604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
67453 67605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
67454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: Blob P1 P2 * P4
67606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: Blob P1 P2 * P4 *
67455 67607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: r[P2]=P4 (len=P1)
67456 67608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
67457 67609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P4 points to a blob of data P1 bytes long. Store this
67458 67610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** blob in register P2.
67459 67611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -67468,11 +67620,11 @@
67468 67620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: Variable P1 P2 * P4 *
67469 67621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: r[P2]=parameter(P1,P4)
67470 67622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
67471 67623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Transfer the values of bound parameter P1 into register P2
67472 67624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
67473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the parameter is named, then its name appears in P4 and P3==1.
67625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the parameter is named, then its name appears in P4.
67474 67626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The P4 value is used by sqlite3_bind_parameter_name().
67475 67627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
67476 67628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Variable: { /* out2-prerelease */
67477 67629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pVar; /* Value being transferred */
67478 67630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -67587,12 +67739,12 @@
67587 67739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: output=r[P1@P2]
67588 67740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
67589 67741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The registers P1 through P1+P2-1 contain a single row of
67590 67742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** results. This opcode causes the sqlite3_step() call to terminate
67591 67743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with an SQLITE_ROW return code and it sets up the sqlite3_stmt
67592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** structure to provide access to the top P1 values as the result
67593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** row.
67744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** structure to provide access to the r(P1)..r(P1+P2-1) values as
67745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the result row.
67594 67746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
67595 67747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_ResultRow: {
67596 67748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pMem;
67597 67749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
67598 67750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->nResColumn==pOp->p2 );
@@ -68078,10 +68230,11 @@
68078 68230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68079 68231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_MustBeInt: { /* jump, in1 */
68080 68232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
68081 68233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pIn1->flags & MEM_Int)==0 ){
68082 68234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
applyAffinity(pIn1, SQLITE_AFF_NUMERIC, encoding);
68235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken((pIn1->flags&MEM_Int)==0, 2);
68083 68236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pIn1->flags & MEM_Int)==0 ){
68084 68237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p2==0 ){
68085 68238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_MISMATCH;
68086 68239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto abort_due_to_error;
68087 68240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -68116,11 +68269,11 @@
68116 68269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_CAST
68117 68270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: ToText P1 * * * *
68118 68271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
68119 68272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Force the value in register P1 to be text.
68120 68273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the value is numeric, convert it to a string using the
68121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** equivalent of printf(). Blob values are unchanged and
68274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** equivalent of sprintf(). Blob values are unchanged and
68122 68275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are afterwards simply interpreted as text.
68123 68276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
68124 68277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A NULL value is not changed by this routine. It remains NULL.
68125 68278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68126 68279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_ToText: { /* same as TK_TO_TEXT, in1 */
@@ -68318,10 +68471,11 @@
68318 68471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_Eq or OP_Ne) then take the jump or not depending on whether
68319 68472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or not both operands are null.
68320 68473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68321 68474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->opcode==OP_Eq || pOp->opcode==OP_Ne );
68322 68475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (flags1 & MEM_Cleared)==0 );
68476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pOp->p5 & SQLITE_JUMPIFNULL)==0 );
68323 68477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (flags1&MEM_Null)!=0
68324 68478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (flags3&MEM_Null)!=0
68325 68479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (flags3&MEM_Cleared)==0
68326 68480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
68327 68481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = 0; /* Results are equal */
@@ -68331,16 +68485,19 @@
68331 68485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
68332 68486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* SQLITE_NULLEQ is clear and at least one operand is NULL,
68333 68487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then the result is always NULL.
68334 68488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The jump is taken if the SQLITE_JUMPIFNULL bit is set.
68335 68489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->p5 & SQLITE_JUMPIFNULL ){
68337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pc = pOp->p2-1;
68338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( pOp->p5 & SQLITE_STOREP2 ){
68490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p5 & SQLITE_STOREP2 ){
68339 68491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut = &aMem[pOp->p2];
68340 68492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemSetTypeFlag(pOut, MEM_Null);
68341 68493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
REGISTER_TRACE(pOp->p2, pOut);
68494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
68495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(2,3);
68496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p5 & SQLITE_JUMPIFNULL ){
68497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = pOp->p2-1;
68498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
68342 68499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68343 68500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
68344 68501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68345 68502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
68346 68503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Neither operand is NULL. Do a comparison. */
@@ -68369,14 +68526,16 @@
68369 68526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut = &aMem[pOp->p2];
68370 68527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memAboutToChange(p, pOut);
68371 68528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemSetTypeFlag(pOut, MEM_Int);
68372 68529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->u.i = res;
68373 68530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
REGISTER_TRACE(pOp->p2, pOut);
68374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( res ){
68375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pc = pOp->p2-1;
68531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
68532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res!=0, (pOp->p5 & SQLITE_NULLEQ)?2:3);
68533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res ){
68534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = pOp->p2-1;
68535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
68376 68536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
68378 68537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Undo any changes made by applyAffinity() to the input registers. */
68379 68538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1->flags = (pIn1->flags&~MEM_TypeMask) | (flags1&MEM_TypeMask);
68380 68539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn3->flags = (pIn3->flags&~MEM_TypeMask) | (flags3&MEM_TypeMask);
68381 68540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
68382 68541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -68469,15 +68628,15 @@
68469 68628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the most recent OP_Compare instruction the P1 vector was less than
68470 68629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** equal to, or greater than the P2 vector, respectively.
68471 68630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68472 68631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Jump: { /* jump */
68473 68632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCompare<0 ){
68474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pc = pOp->p1 - 1;
68633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = pOp->p1 - 1; VdbeBranchTaken(0,3);
68475 68634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( iCompare==0 ){
68476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pc = pOp->p2 - 1;
68635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = pOp->p2 - 1; VdbeBranchTaken(1,3);
68477 68636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
68478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pc = pOp->p3 - 1;
68637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = pOp->p3 - 1; VdbeBranchTaken(2,3);
68479 68638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68480 68639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
68481 68640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68482 68641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
68483 68642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: And P1 P2 P3 * *
@@ -68571,14 +68730,17 @@
68571 68730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68572 68731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
68573 68732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: Once P1 P2 * * *
68574 68733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
68575 68734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Check if OP_Once flag P1 is set. If so, jump to instruction P2. Otherwise,
68576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** set the flag and fall through to the next instruction.
68735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** set the flag and fall through to the next instruction. In other words,
68736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this opcode causes all following up codes up through P2 (but not including
68737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** P2) to run just once and skipped on subsequent times through the loop.
68577 68738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68578 68739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Once: { /* jump */
68579 68740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1<p->nOnceFlag );
68741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(p->aOnceFlag[pOp->p1]!=0, 2);
68580 68742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->aOnceFlag[pOp->p1] ){
68581 68743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2-1;
68582 68744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
68583 68745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aOnceFlag[pOp->p1] = 1;
68584 68746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -68609,10 +68771,11 @@
68609 68771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
68610 68772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c = sqlite3VdbeRealValue(pIn1)!=0.0;
68611 68773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
68612 68774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->opcode==OP_IfNot ) c = !c;
68613 68775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(c!=0, 2);
68614 68777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c ){
68615 68778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2-1;
68616 68779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68617 68780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
68618 68781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -68622,10 +68785,11 @@
68622 68785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
68623 68786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Jump to P2 if the value in register P1 is NULL.
68624 68787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68625 68788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_IsNull: { /* same as TK_ISNULL, jump, in1 */
68626 68789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
68790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken( (pIn1->flags & MEM_Null)!=0, 2);
68627 68791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pIn1->flags & MEM_Null)!=0 ){
68628 68792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
68629 68793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68630 68794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
68631 68795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -68635,10 +68799,11 @@
68635 68799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
68636 68800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Jump to P2 if the value in register P1 is not NULL.
68637 68801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68638 68802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_NotNull: { /* same as TK_NOTNULL, jump, in1 */
68639 68803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
68804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken( (pIn1->flags & MEM_Null)==0, 2);
68640 68805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pIn1->flags & MEM_Null)==0 ){
68641 68806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
68642 68807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68643 68808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
68644 68809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -68711,15 +68876,10 @@
68711 68876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pC->cacheStatus!=p->cacheCtr || (pOp->p5&OPFLAG_CLEARCACHE)!=0 ){
68712 68877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pC->nullRow ){
68713 68878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCrsr==0 ){
68714 68879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->pseudoTableReg>0 );
68715 68880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pReg = &aMem[pC->pseudoTableReg];
68716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pC->multiPseudo ){
68717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeMemShallowCopy(pDest, pReg+p2, MEM_Ephem);
68718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Deephemeralize(pDest);
68719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto op_column_out;
68720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
68721 68881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pReg->flags & MEM_Blob );
68722 68882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( memIsValid(pReg) );
68723 68883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->payloadSize = pC->szRow = avail = pReg->n;
68724 68884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->aRow = (u8*)pReg->z;
68725 68885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -68941,11 +69101,10 @@
68941 69101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zAffinity[pOp->p2]==0 );
68942 69102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
68943 69103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( (cAff = *(zAffinity++))!=0 ){
68944 69104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIn1 <= &p->aMem[(p->nMem-p->nCursor)] );
68945 69105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( memIsValid(pIn1) );
68946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExpandBlob(pIn1);
68947 69106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
applyAffinity(pIn1, cAff, encoding);
68948 69107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1++;
68949 69108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68950 69109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
68951 69110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -69019,12 +69178,13 @@
69019 69178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
69020 69179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pData0<=pLast );
69021 69180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zAffinity ){
69022 69181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRec = pData0;
69023 69182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
69024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- applyAffinity(pRec, *(zAffinity++), encoding);
69025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }while( (++pRec)<=pLast );
69183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ applyAffinity(pRec++, *(zAffinity++), encoding);
69184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( zAffinity[0]==0 || pRec<=pLast );
69185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }while( zAffinity[0] );
69026 69186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69027 69187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69028 69188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Loop through the elements that will make up the record to figure
69029 69189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** out how much space is required for the new record.
69030 69190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -69364,29 +69524,23 @@
69364 69524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_ERROR;
69365 69525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69366 69526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
69367 69527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69368 69528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: Transaction P1 P2 * * *
69529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: Transaction P1 P2 P3 P4 P5
69370 69530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
69371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Begin a transaction. The transaction ends when a Commit or Rollback
69372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** opcode is encountered. Depending on the ON CONFLICT setting, the
69373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** transaction might also be rolled back if an error is encountered.
69531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Begin a transaction on database P1 if a transaction is not already
69532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** active.
69533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P2 is non-zero, then a write-transaction is started, or if a
69534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** read-transaction is already active, it is upgraded to a write-transaction.
69535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P2 is zero, then a read-transaction is started.
69374 69536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
69375 69537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P1 is the index of the database file on which the transaction is
69376 69538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** started. Index 0 is the main database file and index 1 is the
69377 69539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** file used for temporary tables. Indices of 2 or more are used for
69378 69540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** attached databases.
69379 69541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
69380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If P2 is non-zero, then a write-transaction is started. A RESERVED lock is
69381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** obtained on the database file when a write-transaction is started. No
69382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** other process can start another write transaction while this transaction is
69383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** underway. Starting a write transaction also creates a rollback journal. A
69384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** write transaction must be started before any changes can be made to the
69385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** database. If P2 is greater than or equal to 2 then an EXCLUSIVE lock is
69386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** also obtained on the file.
69387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
69388 69542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If a write-transaction is started and the Vdbe.usesStmtJournal flag is
69389 69543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** true (this flag is set if the Vdbe may modify more than one row and may
69390 69544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** throw an ABORT exception), a statement transaction may also be opened.
69391 69545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** More specifically, a statement transaction is opened iff the database
69392 69546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** connection is currently not in autocommit mode, or if there are other
@@ -69393,14 +69547,25 @@
69393 69547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** active statements. A statement transaction allows the changes made by this
69394 69548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** VDBE to be rolled back after an error without having to roll back the
69395 69549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** entire transaction. If no error is encountered, the statement transaction
69396 69550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will automatically commit when the VDBE halts.
69397 69551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
69398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If P2 is zero, then a read-lock is obtained on the database file.
69552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P5!=0 then this opcode also checks the schema cookie against P3
69553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and the schema generation counter against P4.
69554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The cookie changes its value whenever the database schema changes.
69555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This operation is used to detect when that the cookie has changed
69556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and that the current process needs to reread the schema. If the schema
69557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** cookie in P3 differs from the schema cookie in the database header or
69558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if the schema generation counter in P4 differs from the current
69559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** generation counter, then an SQLITE_SCHEMA error is raised and execution
69560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** halts. The sqlite3_step() wrapper function might then reprepare the
69561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** statement and rerun it from the beginning.
69399 69562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
69400 69563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Transaction: {
69401 69564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt;
69565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iMeta;
69566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iGen;
69402 69567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69403 69568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->bIsReader );
69404 69569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->readOnly==0 || pOp->p2==0 );
69405 69570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>=0 && pOp->p1<db->nDb );
69406 69571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (p->btreeMask & (((yDbMask)1)<<pOp->p1))!=0 );
@@ -69440,10 +69605,39 @@
69440 69605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** counter. If the statement transaction needs to be rolled back,
69441 69606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the value of this counter needs to be restored too. */
69442 69607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nStmtDefCons = db->nDeferredCons;
69443 69608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nStmtDefImmCons = db->nDeferredImmCons;
69444 69609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
69611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Gather the schema version number for checking */
69612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3BtreeGetMeta(pBt, BTREE_SCHEMA_VERSION, (u32 *)&iMeta);
69613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iGen = db->aDb[pOp->p1].pSchema->iGeneration;
69614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
69615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iGen = iMeta = 0;
69616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
69617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p5==0 || pOp->p4type==P4_INT32 );
69618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p5 && (iMeta!=pOp->p3 || iGen!=pOp->p4.i) ){
69619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbFree(db, p->zErrMsg);
69620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zErrMsg = sqlite3DbStrDup(db, "database schema has changed");
69621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If the schema-cookie from the database file matches the cookie
69622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** stored with the in-memory representation of the schema, do
69623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** not reload the schema from the database file.
69624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
69625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If virtual-tables are in use, this is not just an optimization.
69626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Often, v-tables store their data in other SQLite tables, which
69627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** are queried from within xNext() and other v-table methods using
69628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** prepared queries. If such a query is out-of-date, we do not want to
69629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** discard the database schema, as the user code implementing the
69630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** v-table would have to be ready for the sqlite3_vtab structure itself
69631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to be invalidated whenever sqlite3_step() is called from within
69632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a v-table method.
69633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
69634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->aDb[pOp->p1].pSchema->schema_cookie!=iMeta ){
69635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ResetOneSchema(db, pOp->p1);
69636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
69637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->expired = 1;
69638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_SCHEMA;
69445 69639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69446 69640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
69447 69641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69448 69642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69449 69643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: ReadCookie P1 P2 P3 * *
@@ -69511,70 +69705,10 @@
69511 69705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Invalidate all prepared statements whenever the TEMP database
69512 69706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** schema is changed. Ticket #1644 */
69513 69707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExpirePreparedStatements(db);
69514 69708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->expired = 0;
69515 69709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
69517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
69518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
69519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: VerifyCookie P1 P2 P3 * *
69520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
69521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Check the value of global database parameter number 0 (the
69522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** schema version) and make sure it is equal to P2 and that the
69523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** generation counter on the local schema parse equals P3.
69524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
69525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** P1 is the database number which is 0 for the main database file
69526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and 1 for the file holding temporary tables and some higher number
69527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** for auxiliary databases.
69528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
69529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The cookie changes its value whenever the database schema changes.
69530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This operation is used to detect when that the cookie has changed
69531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and that the current process needs to reread the schema.
69532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
69533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Either a transaction needs to have been started or an OP_Open needs
69534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to be executed (to establish a read lock) before this opcode is
69535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** invoked.
69536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
69537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case OP_VerifyCookie: {
69538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iMeta;
69539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iGen;
69540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Btree *pBt;
69541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
69542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOp->p1>=0 && pOp->p1<db->nDb );
69543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (p->btreeMask & (((yDbMask)1)<<pOp->p1))!=0 );
69544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3SchemaMutexHeld(db, pOp->p1, 0) );
69545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->bIsReader );
69546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pBt = db->aDb[pOp->p1].pBt;
69547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pBt ){
69548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3BtreeGetMeta(pBt, BTREE_SCHEMA_VERSION, (u32 *)&iMeta);
69549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iGen = db->aDb[pOp->p1].pSchema->iGeneration;
69550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
69551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iGen = iMeta = 0;
69552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
69553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iMeta!=pOp->p2 || iGen!=pOp->p3 ){
69554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, p->zErrMsg);
69555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zErrMsg = sqlite3DbStrDup(db, "database schema has changed");
69556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If the schema-cookie from the database file matches the cookie
69557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** stored with the in-memory representation of the schema, do
69558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** not reload the schema from the database file.
69559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
69560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If virtual-tables are in use, this is not just an optimization.
69561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Often, v-tables store their data in other SQLite tables, which
69562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** are queried from within xNext() and other v-table methods using
69563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** prepared queries. If such a query is out-of-date, we do not want to
69564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** discard the database schema, as the user code implementing the
69565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** v-table would have to be ready for the sqlite3_vtab structure itself
69566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to be invalidated whenever sqlite3_step() is called from within
69567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** a v-table method.
69568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
69569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db->aDb[pOp->p1].pSchema->schema_cookie!=iMeta ){
69570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ResetOneSchema(db, pOp->p1);
69571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
69572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
69573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->expired = 1;
69574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_SCHEMA;
69575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
69576 69710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
69577 69711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69578 69712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69579 69713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: OpenRead P1 P2 P3 P4 P5
69580 69714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: root=P2 iDb=P3
@@ -69787,11 +69921,11 @@
69787 69921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69788 69922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx->isOrdered = (pOp->p5!=BTREE_UNORDERED);
69789 69923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
69790 69924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69791 69925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: SorterOpen P1 * * P4 *
69926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: SorterOpen P1 P2 * P4 *
69793 69927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
69794 69928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This opcode works like OP_OpenEphemeral except that it opens
69795 69929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a transient index that is specifically designed to sort large
69796 69930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tables using an external merge-sort algorithm.
69797 69931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -69807,18 +69941,17 @@
69807 69941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCx->pKeyInfo->enc==ENC(db) );
69808 69942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeSorterInit(db, pCx);
69809 69943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
69810 69944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69811 69945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: OpenPseudo P1 P2 P3 * P5
69813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Synopsis: content in r[P2@P3]
69946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: OpenPseudo P1 P2 P3 * *
69947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Synopsis: P3 columns in r[P2]
69814 69948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
69815 69949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Open a new cursor that points to a fake table that contains a single
69816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** row of data. The content of that one row in the content of memory
69817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** register P2 when P5==0. In other words, cursor P1 becomes an alias for the
69818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** MEM_Blob content contained in register P2. When P5==1, then the
69819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** row is represented by P3 consecutive registers beginning with P2.
69950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** row of data. The content of that one row is the content of memory
69951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** register P2. In other words, cursor P1 becomes an alias for the
69952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** MEM_Blob content contained in register P2.
69820 69953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
69821 69954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A pseudo-table created by this opcode is used to hold a single
69822 69955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** row output from the sorter so that the row can be decomposed into
69823 69956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** individual columns using the OP_Column opcode. The OP_Column opcode
69824 69957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is the only cursor opcode that works with a pseudo-table.
@@ -69834,11 +69967,11 @@
69834 69967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx = allocateCursor(p, pOp->p1, pOp->p3, -1, 0);
69835 69968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCx==0 ) goto no_mem;
69836 69969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx->nullRow = 1;
69837 69970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx->pseudoTableReg = pOp->p2;
69838 69971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx->isTable = 1;
69839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCx->multiPseudo = pOp->p5;
69972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p5==0 );
69840 69973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
69841 69974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69842 69975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69843 69976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: Close P1 * * * *
69844 69977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -69906,14 +70039,14 @@
69906 70039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is less than or equal to the key value. If there are no records
69907 70040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** less than or equal to the key and P2 is not zero, then jump to P2.
69908 70041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
69909 70042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: Found, NotFound, Distinct, SeekGt, SeekGe, SeekLt
69910 70043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
69911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case OP_SeekLt: /* jump, in3 */
69912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case OP_SeekLe: /* jump, in3 */
69913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case OP_SeekGe: /* jump, in3 */
69914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case OP_SeekGt: { /* jump, in3 */
70044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_SeekLT: /* jump, in3 */
70045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_SeekLE: /* jump, in3 */
70046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_SeekGE: /* jump, in3 */
70047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_SeekGT: { /* jump, in3 */
69915 70048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int res;
69916 70049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int oc;
69917 70050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCursor *pC;
69918 70051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord r;
69919 70052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nField;
@@ -69922,13 +70055,13 @@
69922 70055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
69923 70056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p2!=0 );
69924 70057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC = p->apCsr[pOp->p1];
69925 70058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC!=0 );
69926 70059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->pseudoTableReg==0 );
69927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( OP_SeekLe == OP_SeekLt+1 );
69928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( OP_SeekGe == OP_SeekLt+2 );
69929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( OP_SeekGt == OP_SeekLt+3 );
70060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( OP_SeekLE == OP_SeekLT+1 );
70061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( OP_SeekGE == OP_SeekLT+2 );
70062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( OP_SeekGT == OP_SeekLT+3 );
69930 70063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->isOrdered );
69931 70064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->pCursor!=0 );
69932 70065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
oc = pOp->opcode;
69933 70066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->nullRow = 0;
69934 70067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pC->isTable ){
@@ -69944,11 +70077,11 @@
69944 70077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** loss of information, then special processing is required... */
69945 70078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pIn3->flags & MEM_Int)==0 ){
69946 70079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pIn3->flags & MEM_Real)==0 ){
69947 70080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the P3 value cannot be converted into any kind of a number,
69948 70081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then the seek is not possible, so jump to P2 */
69949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pc = pOp->p2 - 1;
70082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = pOp->p2 - 1; VdbeBranchTaken(1,2);
69950 70083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
69951 70084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69952 70085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69953 70086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the approximation iKey is larger than the actual real search
69954 70087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** term, substitute >= for > and < for <=. e.g. if the search term
@@ -69956,23 +70089,23 @@
69956 70089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
69957 70090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (x > 4.9) -> (x >= 5)
69958 70091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (x <= 4.9) -> (x < 5)
69959 70092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
69960 70093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIn3->r<(double)iKey ){
69961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( OP_SeekGe==(OP_SeekGt-1) );
69962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( OP_SeekLt==(OP_SeekLe-1) );
69963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (OP_SeekLe & 0x0001)==(OP_SeekGt & 0x0001) );
69964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (oc & 0x0001)==(OP_SeekGt & 0x0001) ) oc--;
70094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( OP_SeekGE==(OP_SeekGT-1) );
70095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( OP_SeekLT==(OP_SeekLE-1) );
70096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (OP_SeekLE & 0x0001)==(OP_SeekGT & 0x0001) );
70097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (oc & 0x0001)==(OP_SeekGT & 0x0001) ) oc--;
69965 70098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69966 70099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69967 70100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the approximation iKey is smaller than the actual real search
69968 70101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** term, substitute <= for < and > for >=. */
69969 70102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else if( pIn3->r>(double)iKey ){
69970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( OP_SeekLe==(OP_SeekLt+1) );
69971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( OP_SeekGt==(OP_SeekGe+1) );
69972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (OP_SeekLt & 0x0001)==(OP_SeekGe & 0x0001) );
69973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (oc & 0x0001)==(OP_SeekLt & 0x0001) ) oc++;
70103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( OP_SeekLE==(OP_SeekLT+1) );
70104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( OP_SeekGT==(OP_SeekGE+1) );
70105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (OP_SeekLT & 0x0001)==(OP_SeekGE & 0x0001) );
70106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (oc & 0x0001)==(OP_SeekLT & 0x0001) ) oc++;
69974 70107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69975 70108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69976 70109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeMovetoUnpacked(pC->pCursor, 0, (u64)iKey, 0, &res);
69977 70110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
69978 70111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto abort_due_to_error;
@@ -69987,21 +70120,21 @@
69987 70120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nField>0 );
69988 70121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.pKeyInfo = pC->pKeyInfo;
69989 70122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.nField = (u16)nField;
69990 70123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69991 70124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The next line of code computes as follows, only faster:
69992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if( oc==OP_SeekGt || oc==OP_SeekLe ){
70125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if( oc==OP_SeekGT || oc==OP_SeekLE ){
69993 70126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** r.flags = UNPACKED_INCRKEY;
69994 70127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** }else{
69995 70128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** r.flags = 0;
69996 70129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** }
69997 70130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
69998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r.flags = (u8)(UNPACKED_INCRKEY * (1 & (oc - OP_SeekLt)));
69999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( oc!=OP_SeekGt || r.flags==UNPACKED_INCRKEY );
70000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( oc!=OP_SeekLe || r.flags==UNPACKED_INCRKEY );
70001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( oc!=OP_SeekGe || r.flags==0 );
70002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( oc!=OP_SeekLt || r.flags==0 );
70131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r.flags = (u8)(UNPACKED_INCRKEY * (1 & (oc - OP_SeekLT)));
70132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( oc!=OP_SeekGT || r.flags==UNPACKED_INCRKEY );
70133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( oc!=OP_SeekLE || r.flags==UNPACKED_INCRKEY );
70134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( oc!=OP_SeekGE || r.flags==0 );
70135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( oc!=OP_SeekLT || r.flags==0 );
70003 70136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70004 70137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.aMem = &aMem[pOp->p3];
70005 70138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
70006 70139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
70007 70140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -70015,21 +70148,23 @@
70015 70148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->deferredMoveto = 0;
70016 70149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->cacheStatus = CACHE_STALE;
70017 70150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_TEST
70018 70151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_search_count++;
70019 70152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
70020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( oc>=OP_SeekGe ){ assert( oc==OP_SeekGe || oc==OP_SeekGt );
70021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( res<0 || (res==0 && oc==OP_SeekGt) ){
70153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( oc>=OP_SeekGE ){ assert( oc==OP_SeekGE || oc==OP_SeekGT );
70154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res<0 || (res==0 && oc==OP_SeekGT) ){
70155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = 0;
70022 70156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeNext(pC->pCursor, &res);
70023 70157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ) goto abort_due_to_error;
70024 70158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->rowidIsValid = 0;
70025 70159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
70026 70160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = 0;
70027 70161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70028 70162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
70029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( oc==OP_SeekLt || oc==OP_SeekLe );
70030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( res>0 || (res==0 && oc==OP_SeekLt) ){
70163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( oc==OP_SeekLT || oc==OP_SeekLE );
70164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res>0 || (res==0 && oc==OP_SeekLT) ){
70165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = 0;
70031 70166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreePrevious(pC->pCursor, &res);
70032 70167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ) goto abort_due_to_error;
70033 70168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->rowidIsValid = 0;
70034 70169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
70035 70170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* res might be negative because the table is empty. Check to
@@ -70037,10 +70172,11 @@
70037 70172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70038 70173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = sqlite3BtreeEof(pC->pCursor);
70039 70174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70040 70175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70041 70176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p2>0 );
70177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res!=0,2);
70042 70178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ){
70043 70179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
70044 70180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70045 70181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
70046 70182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -70145,19 +70281,17 @@
70145 70281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFree = 0; /* Not needed. Only used to suppress a compiler warning. */
70146 70282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p4.i>0 ){
70147 70283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.pKeyInfo = pC->pKeyInfo;
70148 70284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.nField = (u16)pOp->p4.i;
70149 70285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.aMem = pIn3;
70286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(ii=0; ii<r.nField; ii++){
70287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( memIsValid(&r.aMem[ii]) );
70288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExpandBlob(&r.aMem[ii]);
70150 70289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
70151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {
70152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
70153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<r.nField; i++){
70154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( memIsValid(&r.aMem[i]) );
70155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( i ) REGISTER_TRACE(pOp->p3+i, &r.aMem[i]);
70156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
70290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ii ) REGISTER_TRACE(pOp->p3+ii, &r.aMem[ii]);
70291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
70292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70159 70293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.flags = UNPACKED_PREFIX_MATCH;
70160 70294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey = &r;
70161 70295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
70162 70296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey = sqlite3VdbeAllocUnpackedRecord(
70163 70297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->pKeyInfo, aTempRec, sizeof(aTempRec), &pFree
@@ -70172,11 +70306,11 @@
70172 70306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* For the OP_NoConflict opcode, take the jump if any of the
70173 70307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** input fields are NULL, since any key with a NULL will not
70174 70308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** conflict */
70175 70309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<r.nField; ii++){
70176 70310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( r.aMem[ii].flags & MEM_Null ){
70177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pc = pOp->p2 - 1;
70311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = pOp->p2 - 1; VdbeBranchTaken(1,2);
70178 70312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
70179 70313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70180 70314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70181 70315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70182 70316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeMovetoUnpacked(pC->pCursor, pIdxKey, 0, 0, &res);
@@ -70190,12 +70324,14 @@
70190 70324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
alreadyExists = (res==0);
70191 70325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->nullRow = 1-alreadyExists;
70192 70326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->deferredMoveto = 0;
70193 70327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->cacheStatus = CACHE_STALE;
70194 70328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->opcode==OP_Found ){
70329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(alreadyExists!=0,2);
70195 70330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( alreadyExists ) pc = pOp->p2 - 1;
70196 70331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
70332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(alreadyExists==0,2);
70197 70333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !alreadyExists ) pc = pOp->p2 - 1;
70198 70334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70199 70335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
70200 70336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70201 70337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -70234,10 +70370,11 @@
70234 70370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->lastRowid = pIn3->u.i;
70235 70371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->rowidIsValid = res==0 ?1:0;
70236 70372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->nullRow = 0;
70237 70373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->cacheStatus = CACHE_STALE;
70238 70374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->deferredMoveto = 0;
70375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res!=0,2);
70239 70376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res!=0 ){
70240 70377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
70241 70378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->rowidIsValid==0 );
70242 70379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70243 70380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->seekResult = res;
@@ -70315,63 +70452,58 @@
70315 70452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70316 70453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define MAX_ROWID (i64)( (((u64)0x7fffffff)<<32) | (u64)0xffffffff )
70317 70454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
70318 70455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70319 70456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pC->useRandomRowid ){
70320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v = sqlite3BtreeGetCachedRowid(pC->pCursor);
70321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( v==0 ){
70322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3BtreeLast(pC->pCursor, &res);
70323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc!=SQLITE_OK ){
70324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto abort_due_to_error;
70325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( res ){
70327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v = 1; /* IMP: R-61914-48074 */
70328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
70329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3BtreeCursorIsValid(pC->pCursor) );
70330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3BtreeKeySize(pC->pCursor, &v);
70331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( rc==SQLITE_OK ); /* Cannot fail following BtreeLast() */
70332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( v>=MAX_ROWID ){
70333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pC->useRandomRowid = 1;
70334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
70335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v++; /* IMP: R-29538-34987 */
70336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
70340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef SQLITE_OMIT_AUTOINCREMENT
70341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->p3 ){
70342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Assert that P3 is a valid memory cell. */
70343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOp->p3>0 );
70344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pFrame ){
70345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(pFrame=p->pFrame; pFrame->pParent; pFrame=pFrame->pParent);
70346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Assert that P3 is a valid memory cell. */
70347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOp->p3<=pFrame->nMem );
70348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem = &pFrame->aMem[pOp->p3];
70349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
70350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Assert that P3 is a valid memory cell. */
70351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOp->p3<=(p->nMem-p->nCursor) );
70352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem = &aMem[pOp->p3];
70353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memAboutToChange(p, pMem);
70354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( memIsValid(pMem) );
70356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
70357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- REGISTER_TRACE(pOp->p3, pMem);
70358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeMemIntegerify(pMem);
70359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (pMem->flags & MEM_Int)!=0 ); /* mem(P3) holds an integer */
70360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pMem->u.i==MAX_ROWID || pC->useRandomRowid ){
70361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_FULL; /* IMP: R-12275-61338 */
70362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto abort_due_to_error;
70363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( v<pMem->u.i+1 ){
70365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v = pMem->u.i + 1;
70366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->u.i = v;
70368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
70370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
70371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3BtreeSetCachedRowid(pC->pCursor, v<MAX_ROWID ? v+1 : 0);
70372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
70457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3BtreeLast(pC->pCursor, &res);
70458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc!=SQLITE_OK ){
70459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto abort_due_to_error;
70460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res ){
70462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = 1; /* IMP: R-61914-48074 */
70463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
70464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3BtreeCursorIsValid(pC->pCursor) );
70465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3BtreeKeySize(pC->pCursor, &v);
70466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( rc==SQLITE_OK ); /* Cannot fail following BtreeLast() */
70467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( v>=MAX_ROWID ){
70468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pC->useRandomRowid = 1;
70469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
70470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v++; /* IMP: R-29538-34987 */
70471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
70475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_AUTOINCREMENT
70476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p3 ){
70477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Assert that P3 is a valid memory cell. */
70478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p3>0 );
70479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pFrame ){
70480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(pFrame=p->pFrame; pFrame->pParent; pFrame=pFrame->pParent);
70481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Assert that P3 is a valid memory cell. */
70482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p3<=pFrame->nMem );
70483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem = &pFrame->aMem[pOp->p3];
70484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
70485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Assert that P3 is a valid memory cell. */
70486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p3<=(p->nMem-p->nCursor) );
70487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem = &aMem[pOp->p3];
70488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memAboutToChange(p, pMem);
70489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( memIsValid(pMem) );
70491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
70492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ REGISTER_TRACE(pOp->p3, pMem);
70493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeMemIntegerify(pMem);
70494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pMem->flags & MEM_Int)!=0 ); /* mem(P3) holds an integer */
70495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pMem->u.i==MAX_ROWID || pC->useRandomRowid ){
70496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_FULL; /* IMP: R-12275-61338 */
70497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto abort_due_to_error;
70498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( v<pMem->u.i+1 ){
70500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = pMem->u.i + 1;
70501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->u.i = v;
70503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
70373 70505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pC->useRandomRowid ){
70374 70506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* IMPLEMENTATION-OF: R-07677-41881 If the largest ROWID is equal to the
70375 70507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** largest possible integer (9223372036854775807) then the database
70376 70508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** engine starts picking positive candidate ROWIDs at random until
70377 70509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it finds one that is not previously used. */
@@ -70501,11 +70633,10 @@
70501 70633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pData->flags & MEM_Zero ){
70502 70634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nZero = pData->u.nZero;
70503 70635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
70504 70636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nZero = 0;
70505 70637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3BtreeSetCachedRowid(pC->pCursor, 0);
70507 70638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeInsert(pC->pCursor, 0, iKey,
70508 70639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pData->z, pData->n, nZero,
70509 70640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(pOp->p5 & OPFLAG_APPEND)!=0, seekResult
70510 70641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
70511 70642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->rowidIsValid = 0;
@@ -70563,11 +70694,10 @@
70563 70694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**/
70564 70695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->deferredMoveto==0 );
70565 70696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeCursorMoveto(pC);
70566 70697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(rc!=SQLITE_OK) ) goto abort_due_to_error;
70567 70698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3BtreeSetCachedRowid(pC->pCursor, 0);
70569 70699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeDelete(pC->pCursor);
70570 70700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->cacheStatus = CACHE_STALE;
70571 70701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70572 70702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Invoke the update-hook if required. */
70573 70703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && db->xUpdateCallback && pOp->p4.z && pC->isTable ){
@@ -70615,10 +70745,11 @@
70615 70745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( isSorter(pC) );
70616 70746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p4type==P4_INT32 );
70617 70747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn3 = &aMem[pOp->p3];
70618 70748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nIgnore = pOp->p4.i;
70619 70749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeSorterCompare(pC, pIn3, nIgnore, &res);
70750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res!=0,2);
70620 70751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ){
70621 70752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2-1;
70622 70753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70623 70754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
70624 70755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
@@ -70652,11 +70783,11 @@
70652 70783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: RowKey P1 P2 * * *
70653 70784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: r[P2]=key
70654 70785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70655 70786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Write into register P2 the complete row key for cursor P1.
70656 70787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** There is no interpretation of the data.
70657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The key is copied onto the P3 register exactly as
70788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The key is copied onto the P2 register exactly as
70658 70789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it is found in the database file.
70659 70790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70660 70791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the P1 cursor must be pointing to a valid row (not a NULL row)
70661 70792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of a real table, not a pseudo-table.
70662 70793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -70814,12 +70945,13 @@
70814 70945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeLast(pCrsr, &res);
70815 70946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->nullRow = (u8)res;
70816 70947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->deferredMoveto = 0;
70817 70948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->rowidIsValid = 0;
70818 70949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->cacheStatus = CACHE_STALE;
70819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->p2>0 && res ){
70820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pc = pOp->p2 - 1;
70950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p2>0 ){
70951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res!=0,2);
70952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res ) pc = pOp->p2 - 1;
70821 70953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70822 70954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
70823 70955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70824 70956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70825 70957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -70872,56 +71004,67 @@
70872 71004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->cacheStatus = CACHE_STALE;
70873 71005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->rowidIsValid = 0;
70874 71006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70875 71007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->nullRow = (u8)res;
70876 71008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p2>0 && pOp->p2<p->nOp );
71009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res!=0,2);
70877 71010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ){
70878 71011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
70879 71012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70880 71013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
70881 71014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70882 71015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: Next P1 P2 * * P5
71016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: Next P1 P2 P3 P4 P5
70884 71017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70885 71018 { 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
70886 71019 { 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
70887 71020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the following instruction. But if the cursor advance was successful,
70888 71021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** jump immediately to P2.
70889 71022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70890 71023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The P1 cursor must be for a real table, not a pseudo-table. P1 must have
70891 71024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** been opened prior to this opcode or the program will segfault.
71025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
71026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The P3 value is a hint to the btree implementation. If P3==1, that
71027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** means P1 is an SQL index and that this instruction could have been
71028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** omitted if that index had been unique. P3 is usually 0. P3 is
71029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** always either 0 or 1.
70892 71030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70893 71031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P4 is always of type P4_ADVANCE. The function pointer points to
70894 71032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3BtreeNext().
70895 71033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70896 71034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If P5 is positive and the jump is taken, then event counter
70897 71035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** number P5-1 in the prepared statement is incremented.
70898 71036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70899 71037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: Prev, NextIfOpen
70900 71038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: NextIfOpen P1 P2 * * P5
71039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: NextIfOpen P1 P2 P3 P4 P5
70902 71040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70903 71041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This opcode works just like OP_Next except that if cursor P1 is not
70904 71042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** open it behaves a no-op.
70905 71043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: Prev P1 P2 * * P5
71044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: Prev P1 P2 P3 P4 P5
70907 71045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70908 71046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Back up cursor P1 so that it points to the previous key/data pair in its
70909 71047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table or index. If there is no previous key/value pairs then fall through
70910 71048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the following instruction. But if the cursor backup was successful,
70911 71049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** jump immediately to P2.
70912 71050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70913 71051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The P1 cursor must be for a real table, not a pseudo-table. If P1 is
70914 71052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not open then the behavior is undefined.
71053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
71054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The P3 value is a hint to the btree implementation. If P3==1, that
71055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** means P1 is an SQL index and that this instruction could have been
71056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** omitted if that index had been unique. P3 is usually 0. P3 is
71057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** always either 0 or 1.
70915 71058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70916 71059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P4 is always of type P4_ADVANCE. The function pointer points to
70917 71060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3BtreePrevious().
70918 71061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70919 71062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If P5 is positive and the jump is taken, then event counter
70920 71063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** number P5-1 in the prepared statement is incremented.
70921 71064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: PrevIfOpen P1 P2 * * P5
71065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: PrevIfOpen P1 P2 P3 P4 P5
70923 71066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70924 71067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This opcode works just like OP_Prev except that if cursor P1 is not
70925 71068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** open it behaves a no-op.
70926 71069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70927 71070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_SorterNext: { /* jump */
@@ -70939,20 +71082,24 @@
70939 71082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Prev: /* jump */
70940 71083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Next: /* jump */
70941 71084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
70942 71085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p5<ArraySize(p->aCounter) );
70943 71086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC = p->apCsr[pOp->p1];
71087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = pOp->p3;
70944 71088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC!=0 );
70945 71089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->deferredMoveto==0 );
70946 71090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->pCursor );
71091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( res==0 || (res==1 && pC->isTable==0) );
71092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( res==1 );
70947 71093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->opcode!=OP_Next || pOp->p4.xAdvance==sqlite3BtreeNext );
70948 71094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->opcode!=OP_Prev || pOp->p4.xAdvance==sqlite3BtreePrevious );
70949 71095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->opcode!=OP_NextIfOpen || pOp->p4.xAdvance==sqlite3BtreeNext );
70950 71096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->opcode!=OP_PrevIfOpen || pOp->p4.xAdvance==sqlite3BtreePrevious);
70951 71097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = pOp->p4.xAdvance(pC->pCursor, &res);
70952 71098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
next_tail:
70953 71099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->cacheStatus = CACHE_STALE;
71100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res==0,2);
70954 71101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res==0 ){
70955 71102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC->nullRow = 0;
70956 71103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
70957 71104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aCounter[pOp->p5]++;
70958 71105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_TEST
@@ -70972,10 +71119,18 @@
70972 71119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** MakeRecord instructions. This opcode writes that key
70973 71120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** into the index P1. Data for the entry is nil.
70974 71121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70975 71122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P3 is a flag that provides a hint to the b-tree layer that this
70976 71123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** insert is likely to be an append.
71124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
71125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P5 has the OPFLAG_NCHANGE bit set, then the change counter is
71126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** incremented by this instruction. If the OPFLAG_NCHANGE bit is clear,
71127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then the change counter is unchanged.
71128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
71129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P5 has the OPFLAG_USESEEKRESULT bit set, then the cursor must have
71130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** just done a seek to the spot where the new entry is to be inserted.
71131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This flag avoids doing an extra seek.
70977 71132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70978 71133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This instruction only works for indices. The equivalent instruction
70979 71134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for tables is OP_Insert.
70980 71135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70981 71136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_SorterInsert: /* in2 */
@@ -71087,36 +71242,54 @@
71087 71242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71088 71243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: IdxGE P1 P2 P3 P4 P5
71089 71244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: key=r[P3@P4]
71090 71245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71091 71246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The P4 register values beginning with P3 form an unpacked index
71092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** key that omits the ROWID. Compare this key value against the index
71093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** that P1 is currently pointing to, ignoring the ROWID on the P1 index.
71247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** key that omits the PRIMARY KEY. Compare this key value against the index
71248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that P1 is currently pointing to, ignoring the PRIMARY KEY or ROWID
71249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fields at the end.
71094 71250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71095 71251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the P1 index entry is greater than or equal to the key value
71096 71252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then jump to P2. Otherwise fall through to the next instruction.
71253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
71254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: IdxGT P1 P2 P3 P4 P5
71255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Synopsis: key=r[P3@P4]
71097 71256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If P5 is non-zero then the key value is increased by an epsilon
71099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** prior to the comparison. This make the opcode work like IdxGT except
71100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** that if the key from register P3 is a prefix of the key in the cursor,
71101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the result is false whereas it would be true with IdxGT.
71257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The P4 register values beginning with P3 form an unpacked index
71258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** key that omits the PRIMARY KEY. Compare this key value against the index
71259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that P1 is currently pointing to, ignoring the PRIMARY KEY or ROWID
71260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fields at the end.
71261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
71262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the P1 index entry is greater than the key value
71263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then jump to P2. Otherwise fall through to the next instruction.
71102 71264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
71103 71265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: IdxLT P1 P2 P3 P4 P5
71104 71266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: key=r[P3@P4]
71105 71267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71106 71268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The P4 register values beginning with P3 form an unpacked index
71107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** key that omits the ROWID. Compare this key value against the index
71108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** that P1 is currently pointing to, ignoring the ROWID on the P1 index.
71269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** key that omits the PRIMARY KEY or ROWID. Compare this key value against
71270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the index that P1 is currently pointing to, ignoring the PRIMARY KEY or
71271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ROWID on the P1 index.
71109 71272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71110 71273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the P1 index entry is less than the key value then jump to P2.
71111 71274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Otherwise fall through to the next instruction.
71275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
71276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: IdxLE P1 P2 P3 P4 P5
71277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Synopsis: key=r[P3@P4]
71112 71278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If P5 is non-zero then the key value is increased by an epsilon prior
71114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to the comparison. This makes the opcode work like IdxLE.
71279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The P4 register values beginning with P3 form an unpacked index
71280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** key that omits the PRIMARY KEY or ROWID. Compare this key value against
71281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the index that P1 is currently pointing to, ignoring the PRIMARY KEY or
71282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ROWID on the P1 index.
71283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
71284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the P1 index entry is less than or equal to the key value then jump
71285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to P2. Otherwise fall through to the next instruction.
71115 71286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
71287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_IdxLE: /* jump */
71288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_IdxGT: /* jump */
71116 71289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_IdxLT: /* jump */
71117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case OP_IdxGE: { /* jump */
71290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_IdxGE: { /* jump */
71118 71291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCursor *pC;
71119 71292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int res;
71120 71293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord r;
71121 71294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71122 71295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
@@ -71127,27 +71300,32 @@
71127 71300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->deferredMoveto==0 );
71128 71301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p5==0 || pOp->p5==1 );
71129 71302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p4type==P4_INT32 );
71130 71303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.pKeyInfo = pC->pKeyInfo;
71131 71304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.nField = (u16)pOp->p4.i;
71132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->p5 ){
71305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode<OP_IdxLT ){
71306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->opcode==OP_IdxLE || pOp->opcode==OP_IdxGT );
71133 71307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.flags = UNPACKED_INCRKEY | UNPACKED_PREFIX_MATCH;
71134 71308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
71309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->opcode==OP_IdxGE || pOp->opcode==OP_IdxLT );
71135 71310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.flags = UNPACKED_PREFIX_MATCH;
71136 71311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71137 71312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r.aMem = &aMem[pOp->p3];
71138 71313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
71139 71314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
71140 71315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
71141 71316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = 0; /* Not needed. Only used to silence a warning. */
71142 71317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeIdxKeyCompare(pC, &r, &res);
71143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->opcode==OP_IdxLT ){
71318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (OP_IdxLE&1)==(OP_IdxLT&1) && (OP_IdxGE&1)==(OP_IdxGT&1) );
71319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pOp->opcode&1)==(OP_IdxLT&1) ){
71320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->opcode==OP_IdxLE || pOp->opcode==OP_IdxLT );
71144 71321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = -res;
71145 71322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
71146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOp->opcode==OP_IdxGE );
71323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->opcode==OP_IdxGE || pOp->opcode==OP_IdxGT );
71147 71324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res++;
71148 71325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res>0,2);
71149 71327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res>0 ){
71150 71328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1 ;
71151 71329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71152 71330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
71153 71331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -71236,11 +71414,10 @@
71236 71414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Clear: {
71237 71415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nChange;
71238 71416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71239 71417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nChange = 0;
71240 71418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->readOnly==0 );
71241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOp->p1!=1 );
71242 71419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (p->btreeMask & (((yDbMask)1)<<pOp->p2))!=0 );
71243 71420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeClearTable(
71244 71421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->aDb[pOp->p2].pBt, pOp->p1, (pOp->p3 ? &nChange : 0)
71245 71422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
71246 71423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p3 ){
@@ -71505,13 +71682,15 @@
71505 71682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| sqlite3RowSetNext(pIn1->u.pRowSet, &val)==0
71506 71683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
71507 71684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The boolean index is empty */
71508 71685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetNull(pIn1);
71509 71686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
71687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(1,2);
71510 71688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
71511 71689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A value was pulled from the index */
71512 71690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetInt64(&aMem[pOp->p3], val);
71691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(0,2);
71513 71692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71514 71693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto check_for_interrupt;
71515 71694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71516 71695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71517 71696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: RowSetTest P1 P2 P3 P4
@@ -71559,10 +71738,11 @@
71559 71738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iSet==-1 || iSet>=0 );
71560 71739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iSet ){
71561 71740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exists = sqlite3RowSetTest(pIn1->u.pRowSet,
71562 71741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(u8)(iSet>=0 ? iSet & 0xf : 0xff),
71563 71742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn3->u.i);
71743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(exists!=0,2);
71564 71744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( exists ){
71565 71745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
71566 71746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
71567 71747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71568 71748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -71573,11 +71753,11 @@
71573 71753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71574 71754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71575 71755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71576 71756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_TRIGGER
71577 71757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: Program P1 P2 P3 P4 *
71758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: Program P1 P2 P3 P4 P5
71579 71759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71580 71760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Execute the trigger program passed as P4 (type P4_SUBPROGRAM).
71581 71761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71582 71762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P1 contains the address of the memory cell that contains the first memory
71583 71763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cell in an array of values used as arguments to the sub-program. P2
@@ -71585,10 +71765,12 @@
71585 71765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** exception using the RAISE() function. Register P3 contains the address
71586 71766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of a memory cell in this (the parent) VM that is used to allocate the
71587 71767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory required by the sub-vdbe at runtime.
71588 71768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71589 71769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P4 is a pointer to the VM containing the trigger program.
71770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
71771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P5 is non-zero, then recursive program invocation is enabled.
71590 71772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
71591 71773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Program: { /* jump */
71592 71774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nMem; /* Number of memory registers for sub-program */
71593 71775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte; /* Bytes of runtime space required for sub-program */
71594 71776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pRt; /* Register to allocate runtime space */
@@ -71662,11 +71844,11 @@
71662 71844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrame->aOnceFlag = p->aOnceFlag;
71663 71845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrame->nOnceFlag = p->nOnceFlag;
71664 71846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71665 71847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pEnd = &VdbeFrameMem(pFrame)[pFrame->nChildMem];
71666 71848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pMem=VdbeFrameMem(pFrame); pMem!=pEnd; pMem++){
71667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMem->flags = MEM_Invalid;
71849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMem->flags = MEM_Undefined;
71668 71850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->db = db;
71669 71851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71670 71852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
71671 71853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrame = pRt->u.pFrame;
71672 71854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pProgram->nMem+pProgram->nCsr==pFrame->nChildMem );
@@ -71749,12 +71931,14 @@
71749 71931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** zero, the jump is taken if the statement constraint-counter is zero
71750 71932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (immediate foreign key constraint violations).
71751 71933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
71752 71934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_FkIfZero: { /* jump */
71753 71935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p1 ){
71936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(db->nDeferredCons==0 && db->nDeferredImmCons==0, 2);
71754 71937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->nDeferredCons==0 && db->nDeferredImmCons==0 ) pc = pOp->p2-1;
71755 71938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
71939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(p->nFkConstraint==0 && db->nDeferredImmCons==0, 2);
71756 71940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nFkConstraint==0 && db->nDeferredImmCons==0 ) pc = pOp->p2-1;
71757 71941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71758 71942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
71759 71943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71760 71944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* #ifndef SQLITE_OMIT_FOREIGN_KEY */
@@ -71799,10 +71983,11 @@
71799 71983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not contain an integer. An assertion fault will result if you try.
71800 71984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
71801 71985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_IfPos: { /* jump, in1 */
71802 71986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
71803 71987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIn1->flags&MEM_Int );
71988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken( pIn1->u.i>0, 2);
71804 71989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIn1->u.i>0 ){
71805 71990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
71806 71991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71807 71992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
71808 71993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -71816,10 +72001,11 @@
71816 72001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not contain an integer. An assertion fault will result if you try.
71817 72002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
71818 72003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_IfNeg: { /* jump, in1 */
71819 72004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
71820 72005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIn1->flags&MEM_Int );
72006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(pIn1->u.i<0, 2);
71821 72007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIn1->u.i<0 ){
71822 72008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
71823 72009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71824 72010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
71825 72011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -71835,10 +72021,11 @@
71835 72021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
71836 72022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_IfZero: { /* jump, in1 */
71837 72023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
71838 72024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIn1->flags&MEM_Int );
71839 72025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1->u.i += pOp->p3;
72026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(pIn1->u.i==0, 2);
71840 72027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIn1->u.i==0 ){
71841 72028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
71842 72029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71843 72030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
71844 72031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -71972,11 +72159,11 @@
71972 72159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
71973 72160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
71974 72161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
71975 72162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71976 72163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_PRAGMA
71977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: JournalMode P1 P2 P3 * P5
72164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: JournalMode P1 P2 P3 * *
71978 72165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
71979 72166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Change the journal mode of database P1 to P3. P3 must be one of the
71980 72167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** PAGER_JOURNALMODE_XXX values. If changing between the various rollback
71981 72168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** modes (delete, truncate, persist, off and memory), this is a simple
71982 72169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** operation. No IO is required.
@@ -72106,10 +72293,11 @@
72106 72293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>=0 && pOp->p1<db->nDb );
72107 72294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (p->btreeMask & (((yDbMask)1)<<pOp->p1))!=0 );
72108 72295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->readOnly==0 );
72109 72296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBt = db->aDb[pOp->p1].pBt;
72110 72297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeIncrVacuum(pBt);
72298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(rc==SQLITE_DONE,2);
72111 72299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_DONE ){
72112 72300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
72113 72301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_OK;
72114 72302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72115 72303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -72312,11 +72500,11 @@
72312 72500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->inVtabMethod = 0;
72313 72501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VtabImportErrmsg(p, pVtab);
72314 72502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
72315 72503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = pModule->xEof(pVtabCursor);
72316 72504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
72505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res!=0,2);
72318 72506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ){
72319 72507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
72320 72508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72321 72509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72322 72510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->nullRow = 0;
@@ -72417,11 +72605,11 @@
72417 72605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->inVtabMethod = 0;
72418 72606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VtabImportErrmsg(p, pVtab);
72419 72607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
72420 72608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = pModule->xEof(pCur->pVtabCursor);
72421 72609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
72610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(!res,2);
72423 72611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !res ){
72424 72612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is data, jump to P2 */
72425 72613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = pOp->p2 - 1;
72426 72614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72427 72615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto check_for_interrupt;
@@ -72458,11 +72646,11 @@
72458 72646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
72459 72647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72460 72648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
72461 72649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
72462 72650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
72463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: VUpdate P1 P2 P3 P4 *
72651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: VUpdate P1 P2 P3 P4 P5
72464 72652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: data=r[P3@P2]
72465 72653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
72466 72654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P4 is a pointer to a virtual table object, an sqlite3_vtab structure.
72467 72655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This opcode invokes the corresponding xUpdate method. P2 values
72468 72656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are contiguous memory cells starting at P3 to pass to the xUpdate
@@ -72481,10 +72669,13 @@
72481 72669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a row to delete.
72482 72670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
72483 72671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** P1 is a boolean flag. If it is set to true and the xUpdate call
72484 72672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is successful, then the value returned by sqlite3_last_insert_rowid()
72485 72673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is set to the value of the rowid for the row just inserted.
72674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
72675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** P5 is the error actions (OE_Replace, OE_Fail, OE_Ignore, etc) to
72676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** apply in the case of a constraint failure on an insert or update.
72486 72677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
72487 72678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_VUpdate: {
72488 72679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab *pVtab;
72489 72680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_module *pModule;
72490 72681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg;
@@ -72569,20 +72760,30 @@
72569 72760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
72570 72761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72571 72762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
72572 72763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
72573 72764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
72574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef SQLITE_OMIT_TRACE
72575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: Trace * * * P4 *
72765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: Init * P2 * P4 *
72766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Synopsis: Start at P2
72767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
72768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Programs contain a single instance of this opcode as the very first
72769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** opcode.
72576 72770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
72577 72771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If tracing is enabled (by the sqlite3_trace()) interface, then
72578 72772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the UTF-8 string contained in P4 is emitted on the trace callback.
72773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Or if P4 is blank, use the string returned by sqlite3_sql().
72774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
72775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P2 is not zero, jump to instruction P2.
72579 72776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
72580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case OP_Trace: {
72777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_Init: { /* jump */
72581 72778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zTrace;
72582 72779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z;
72583 72780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
72781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p2 ){
72782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = pOp->p2 - 1;
72783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
72784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_TRACE
72584 72785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->xTrace
72585 72786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !p->doingRerun
72586 72787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (zTrace = (pOp->p4.z ? pOp->p4.z : p->zSql))!=0
72587 72788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
72588 72789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = sqlite3VdbeExpandSql(p, zTrace);
@@ -72604,13 +72805,13 @@
72604 72805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (zTrace = (pOp->p4.z ? pOp->p4.z : p->zSql))!=0
72605 72806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
72606 72807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf("SQL-trace: %s\n", zTrace);
72607 72808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72608 72809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_DEBUG */
72810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* SQLITE_OMIT_TRACE */
72609 72811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
72610 72812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
72612 72813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
72613 72814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
72614 72815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: Noop * * * * *
72615 72816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
72616 72817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Do nothing. This instruction is often useful as a jump
@@ -72638,14 +72839,10 @@
72638 72839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef VDBE_PROFILE
72639 72840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
72640 72841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 elapsed = sqlite3Hwtime() - start;
72641 72842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->cycles += elapsed;
72642 72843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->cnt++;
72643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0
72644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fprintf(stdout, "%10llu ", elapsed);
72645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbePrintOp(stdout, origPc, &aOp[origPc]);
72646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
72647 72844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72648 72845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
72649 72846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
72650 72847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The following code adds nothing to the actual functionality
72651 72848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the program. It is only here for testing and debugging.
@@ -72867,26 +73064,24 @@
72867 73064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
72868 73065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The sqlite3_blob_close() function finalizes the vdbe program,
72869 73066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** which closes the b-tree cursor and (possibly) commits the
72870 73067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** transaction.
72871 73068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
73069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const int iLn = __LINE__+4;
72872 73070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const VdbeOpList openBlob[] = {
72873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_Transaction, 0, 0, 0}, /* 0: Start a transaction */
72874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_VerifyCookie, 0, 0, 0}, /* 1: Check the schema cookie */
72875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_TableLock, 0, 0, 0}, /* 2: Acquire a read or write lock */
72876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
73071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* {OP_Transaction, 0, 0, 0}, // 0: Inserted separately */
73072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_TableLock, 0, 0, 0}, /* 1: Acquire a read or write lock */
72877 73073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* One of the following two instructions is replaced by an OP_Noop. */
72878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_OpenRead, 0, 0, 0}, /* 3: Open cursor 0 for reading */
72879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_OpenWrite, 0, 0, 0}, /* 4: Open cursor 0 for read/write */
72880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
72881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_Variable, 1, 1, 1}, /* 5: Push the rowid to the stack */
72882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_NotExists, 0, 10, 1}, /* 6: Seek the cursor */
72883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_Column, 0, 0, 1}, /* 7 */
72884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_ResultRow, 1, 0, 0}, /* 8 */
72885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_Goto, 0, 5, 0}, /* 9 */
72886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_Close, 0, 0, 0}, /* 10 */
72887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {OP_Halt, 0, 0, 0}, /* 11 */
73074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_OpenRead, 0, 0, 0}, /* 2: Open cursor 0 for reading */
73075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_OpenWrite, 0, 0, 0}, /* 3: Open cursor 0 for read/write */
73076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_Variable, 1, 1, 1}, /* 4: Push the rowid to the stack */
73077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_NotExists, 0, 10, 1}, /* 5: Seek the cursor */
73078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_Column, 0, 0, 1}, /* 6 */
73079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_ResultRow, 1, 0, 0}, /* 7 */
73080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_Goto, 0, 4, 0}, /* 8 */
73081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_Close, 0, 0, 0}, /* 9 */
73082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {OP_Halt, 0, 0, 0}, /* 10 */
72888 73083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
72889 73084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
72890 73085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
72891 73086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErr = 0;
72892 73087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
@@ -72995,50 +73190,45 @@
72995 73190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pBlob->pStmt || db->mallocFailed );
72996 73191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pBlob->pStmt ){
72997 73192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = (Vdbe *)pBlob->pStmt;
72998 73193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
72999 73194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOpList(v, sizeof(openBlob)/sizeof(VdbeOpList), openBlob);
73001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
73002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
73003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Configure the OP_Transaction */
73004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP1(v, 0, iDb);
73005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP2(v, 0, flags);
73006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
73007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Configure the OP_VerifyCookie */
73008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP1(v, 1, iDb);
73009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP2(v, 1, pTab->pSchema->schema_cookie);
73010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP3(v, 1, pTab->pSchema->iGeneration);
73195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
73196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4Int(v, OP_Transaction, iDb, flags,
73197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->pSchema->schema_cookie,
73198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->pSchema->iGeneration);
73199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP5(v, 1);
73200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOpList(v, ArraySize(openBlob), openBlob, iLn);
73011 73201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73012 73202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make sure a mutex is held on the table to be accessed */
73013 73203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeUsesBtree(v, iDb);
73014 73204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73015 73205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Configure the OP_TableLock instruction */
73016 73206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_OMIT_SHARED_CACHE
73017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeToNoop(v, 2);
73207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeToNoop(v, 1);
73018 73208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
73019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP1(v, 2, iDb);
73020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP2(v, 2, pTab->tnum);
73021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP3(v, 2, flags);
73022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP4(v, 2, pTab->zName, P4_TRANSIENT);
73209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP1(v, 1, iDb);
73210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP2(v, 1, pTab->tnum);
73211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP3(v, 1, flags);
73212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP4(v, 1, pTab->zName, P4_TRANSIENT);
73023 73213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
73024 73214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73025 73215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Remove either the OP_OpenWrite or OpenRead. Set the P2
73026 73216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parameter of the other to pTab->tnum. */
73027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeToNoop(v, 4 - flags);
73028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP2(v, 3 + flags, pTab->tnum);
73029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP3(v, 3 + flags, iDb);
73217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeToNoop(v, 3 - flags);
73218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP2(v, 2 + flags, pTab->tnum);
73219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP3(v, 2 + flags, iDb);
73030 73220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73031 73221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Configure the number of columns. Configure the cursor to
73032 73222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** think that the table has one more column than it really
73033 73223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** does. An OP_Column to retrieve this imaginary column will
73034 73224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** always return an SQL NULL. This is useful because it means
73035 73225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** we can invoke OP_Column to fill in the vdbe cursors type
73036 73226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and offset cache without causing any IO.
73037 73227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
73038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP4(v, 3+flags, SQLITE_INT_TO_PTR(pTab->nCol+1),P4_INT32);
73039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP2(v, 7, pTab->nCol);
73228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP4(v, 2+flags, SQLITE_INT_TO_PTR(pTab->nCol+1),P4_INT32);
73229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP2(v, 6, pTab->nCol);
73040 73230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db->mallocFailed ){
73041 73231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nVar = 1;
73042 73232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = 1;
73043 73233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nTab = 1;
73044 73234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMakeReady(v, pParse);
@@ -75302,12 +75492,12 @@
75302 75492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_TRIGGER) */
75303 75493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75304 75494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
75305 75495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Perhaps the name is a reference to the ROWID
75306 75496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
75307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pTab!=0 || cntTab==0 );
75308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cnt==0 && cntTab==1 && sqlite3IsRowid(zCol) && HasRowid(pTab) ){
75497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cnt==0 && cntTab==1 && pMatch && sqlite3IsRowid(zCol)
75498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && HasRowid(pMatch->pTab) ){
75309 75499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt = 1;
75310 75500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn = -1; /* IMP: R-44911-55124 */
75311 75501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->affinity = SQLITE_AFF_INTEGER;
75312 75502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75313 75503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -77434,11 +77624,10 @@
77434 77624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pLimit = sqlite3ExprDup(db, p->pLimit, flags);
77435 77625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pOffset = sqlite3ExprDup(db, p->pOffset, flags);
77436 77626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->iLimit = 0;
77437 77627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->iOffset = 0;
77438 77628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->selFlags = p->selFlags & ~SF_UsesEphemeral;
77439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->pRightmost = 0;
77440 77629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->addrOpenEphm[0] = -1;
77441 77630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->addrOpenEphm[1] = -1;
77442 77631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->addrOpenEphm[2] = -1;
77443 77632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nSelectRow = p->nSelectRow;
77444 77633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pWith = withDup(db, p->pWith);
@@ -77744,28 +77933,10 @@
77744 77933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default:
77745 77934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
77746 77935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77747 77936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77748 77937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
77750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Generate an OP_IsNull instruction that tests register iReg and jumps
77751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to location iDest if the value in iReg is NULL. The value in iReg
77752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** was computed by pExpr. If we can look at pExpr at compile-time and
77753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** determine that it can never generate a NULL, then the OP_IsNull operation
77754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** can be omitted.
77755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
77756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3ExprCodeIsNullJump(
77757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Vdbe *v, /* The VDBE under construction */
77758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const Expr *pExpr, /* Only generate OP_IsNull if this expr can be NULL */
77759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iReg, /* Test the value in this register for NULL */
77760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iDest /* Jump here if the value is null */
77761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
77762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3ExprCanBeNull(pExpr) ){
77763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IsNull, iReg, iDest);
77764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
77765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
77766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
77767 77938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
77768 77939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return TRUE if the given expression is a constant which would be
77769 77940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** unchanged by OP_Affinity with the affinity given in the second
77770 77941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument.
77771 77942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -77958,11 +78129,11 @@
77958 78129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pSrc!=0 ); /* Because of isCandidateForInOpt(p) */
77959 78130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = p->pSrc->a[0].pTab;
77960 78131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = p->pEList->a[0].pExpr;
77961 78132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCol = (i16)pExpr->iColumn;
77962 78133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Code an OP_VerifyCookie and OP_TableLock for <table>. */
78134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Code an OP_Transaction and OP_TableLock for <table>. */
77964 78135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
77965 78136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodeVerifySchema(pParse, iDb);
77966 78137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
77967 78138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77968 78139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This function is only called from two places. In both cases the vdbe
@@ -77969,13 +78140,12 @@
77969 78140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** has already been allocated. So assume sqlite3GetVdbe() is always
77970 78141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** successful here.
77971 78142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
77972 78143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(v);
77973 78144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCol<0 ){
77974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iAddr;
77975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
77976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iAddr = sqlite3CodeOnce(pParse);
78145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iAddr = sqlite3CodeOnce(pParse);
78146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
77977 78147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77978 78148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTable(pParse, iTab, iDb, pTab, OP_OpenRead);
77979 78149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eType = IN_INDEX_ROWID;
77980 78150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77981 78151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, iAddr);
@@ -77996,22 +78166,22 @@
77996 78166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pIdx=pTab->pIndex; pIdx && eType==0 && affinity_ok; pIdx=pIdx->pNext){
77997 78167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pIdx->aiColumn[0]==iCol)
77998 78168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3FindCollSeq(db, ENC(db), pIdx->azColl[0], 0)==pReq
77999 78169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (!mustBeUnique || (pIdx->nKeyCol==1 && pIdx->onError!=OE_None))
78000 78170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
78001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iAddr = sqlite3CodeOnce(pParse);
78171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iAddr = sqlite3CodeOnce(pParse); VdbeCoverage(v);
78002 78172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_OpenRead, iTab, pIdx->tnum, iDb);
78003 78173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
78004 78174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "%s", pIdx->zName));
78005 78175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( IN_INDEX_INDEX_DESC == IN_INDEX_INDEX_ASC+1 );
78006 78176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eType = IN_INDEX_INDEX_ASC + pIdx->aSortOrder[0];
78007 78177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, iAddr);
78009 78178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( prNotFound && !pTab->aCol[iCol].notNull ){
78010 78179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*prNotFound = ++pParse->nMem;
78011 78180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Null, 0, *prNotFound);
78012 78181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, iAddr);
78013 78183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78014 78184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78015 78185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78016 78186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78017 78187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -78096,11 +78266,11 @@
78096 78266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
78097 78267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If all of the above are false, then we can run this code just once
78098 78268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** save the results, and reuse the same result on subsequent invocations.
78099 78269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78100 78270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !ExprHasProperty(pExpr, EP_VarSelect) ){
78101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testAddr = sqlite3CodeOnce(pParse);
78271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testAddr = sqlite3CodeOnce(pParse); VdbeCoverage(v);
78102 78272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78103 78273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78104 78274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_EXPLAIN
78105 78275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->explain==2 ){
78106 78276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zMsg = sqlite3MPrintf(
@@ -78137,11 +78307,10 @@
78137 78307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 'x' nor the SELECT... statement are columns, then numeric affinity
78138 78308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is used.
78139 78309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78140 78310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pParse->nTab++;
78141 78311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pExpr->iTable, !isRowid);
78142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rMayHaveNull==0 ) sqlite3VdbeChangeP5(v, BTREE_UNORDERED);
78143 78312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKeyInfo = isRowid ? 0 : sqlite3KeyInfoAlloc(pParse->db, 1, 1);
78144 78313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78145 78314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_xIsSelect) ){
78146 78315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Case 1: expr IN (SELECT ...)
78147 78316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -78213,10 +78382,11 @@
78213 78382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
78214 78383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r3 = sqlite3ExprCodeTarget(pParse, pE2, r1);
78215 78384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isRowid ){
78216 78385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_MustBeInt, r3,
78217 78386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeCurrentAddr(v)+2);
78387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
78218 78388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Insert, pExpr->iTable, r2, r3);
78219 78389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
78220 78390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_MakeRecord, r3, 1, r2, &affinity, 1);
78221 78391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheAffinityChange(pParse, r3, 1);
78222 78392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxInsert, pExpr->iTable, r2);
@@ -78336,23 +78506,25 @@
78336 78506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on whether the RHS is empty or not, respectively.
78337 78507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78338 78508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( destIfNull==destIfFalse ){
78339 78509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Shortcut for the common case where the false and NULL outcomes are
78340 78510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the same. */
78341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IsNull, r1, destIfNull);
78511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, r1, destIfNull); VdbeCoverage(v);
78342 78512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
78343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addr1 = sqlite3VdbeAddOp1(v, OP_NotNull, r1);
78513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addr1 = sqlite3VdbeAddOp1(v, OP_NotNull, r1); VdbeCoverage(v);
78344 78514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Rewind, pExpr->iTable, destIfFalse);
78515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
78345 78516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfNull);
78346 78517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
78347 78518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78348 78519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78349 78520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eType==IN_INDEX_ROWID ){
78350 78521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* In this case, the RHS is the ROWID of table b-tree
78351 78522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_MustBeInt, r1, destIfFalse);
78523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_MustBeInt, r1, destIfFalse); VdbeCoverage(v);
78353 78524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_NotExists, pExpr->iTable, destIfFalse, r1);
78525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
78354 78526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
78355 78527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* In this case, the RHS is an index b-tree.
78356 78528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78357 78529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Affinity, r1, 1, 0, &affinity, 1);
78358 78530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -78369,42 +78541,40 @@
78369 78541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
78370 78542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Also run this branch if NULL is equivalent to FALSE
78371 78543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for this particular IN operator.
78372 78544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78373 78545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NotFound, pExpr->iTable, destIfFalse, r1, 1);
78374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
78546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
78375 78547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
78376 78548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* In this branch, the RHS of the IN might contain a NULL and
78377 78549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the presence of a NULL on the RHS makes a difference in the
78378 78550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** outcome.
78379 78551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int j1, j2, j3;
78552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int j1, j2;
78381 78553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78382 78554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* First check to see if the LHS is contained in the RHS. If so,
78383 78555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then the presence of NULLs in the RHS does not matter, so jump
78384 78556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** over all of the code that follows.
78385 78557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78386 78558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j1 = sqlite3VdbeAddOp4Int(v, OP_Found, pExpr->iTable, 0, r1, 1);
78559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
78387 78560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78388 78561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Here we begin generating code that runs if the LHS is not
78389 78562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contained within the RHS. Generate additional code that
78390 78563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tests the RHS for NULLs. If the RHS contains a NULL then
78391 78564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** jump to destIfNull. If there are no NULLs in the RHS then
78392 78565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** jump to destIfFalse.
78393 78566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j2 = sqlite3VdbeAddOp1(v, OP_NotNull, rRhsHasNull);
78395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j3 = sqlite3VdbeAddOp4Int(v, OP_Found, pExpr->iTable, 0, rRhsHasNull, 1);
78396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, -1, rRhsHasNull);
78397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, j3);
78398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_AddImm, rRhsHasNull, 1);
78567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_If, rRhsHasNull, destIfNull); VdbeCoverage(v);
78568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IfNot, rRhsHasNull, destIfFalse); VdbeCoverage(v);
78569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ j2 = sqlite3VdbeAddOp4Int(v, OP_Found, pExpr->iTable, 0, rRhsHasNull, 1);
78570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
78571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Integer, 0, rRhsHasNull);
78572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfFalse);
78399 78573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j2);
78400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
78401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Jump to the appropriate target depending on whether or not
78402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the RHS contains a NULL
78403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
78404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_If, rRhsHasNull, destIfNull);
78405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfFalse);
78574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Integer, 1, rRhsHasNull);
78575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfNull);
78406 78576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78407 78577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The OP_Found at the top of this branch jumps here when true,
78408 78578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** causing the overall IN expression evaluation to fall through.
78409 78579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78410 78580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j1);
@@ -78921,26 +79091,20 @@
78921 79091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LE:
78922 79092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GT:
78923 79093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GE:
78924 79094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NE:
78925 79095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_EQ: {
78926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_LT==OP_Lt );
78927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_LE==OP_Le );
78928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_GT==OP_Gt );
78929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_GE==OP_Ge );
78930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_EQ==OP_Eq );
78931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_NE==OP_Ne );
78932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_LT );
78933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_LE );
78934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_GT );
78935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_GE );
78936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_EQ );
78937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_NE );
78938 79096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
78939 79097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
78940 79098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
78941 79099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, inReg, SQLITE_STOREP2);
79100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_LT==OP_Lt); testcase(op==OP_Lt); VdbeCoverageIf(v,op==OP_Lt);
79101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_LE==OP_Le); testcase(op==OP_Le); VdbeCoverageIf(v,op==OP_Le);
79102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_GT==OP_Gt); testcase(op==OP_Gt); VdbeCoverageIf(v,op==OP_Gt);
79103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_GE==OP_Ge); testcase(op==OP_Ge); VdbeCoverageIf(v,op==OP_Ge);
79104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_EQ==OP_Eq); testcase(op==OP_Eq); VdbeCoverageIf(v,op==OP_Eq);
79105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_NE==OP_Ne); testcase(op==OP_Ne); VdbeCoverageIf(v,op==OP_Ne);
78942 79106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
78943 79107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
78944 79108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
78945 79109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78946 79110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IS:
@@ -78950,10 +79114,12 @@
78950 79114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
78951 79115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
78952 79116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = (op==TK_IS) ? TK_EQ : TK_NE;
78953 79117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
78954 79118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, inReg, SQLITE_STOREP2 | SQLITE_NULLEQ);
79119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_EQ);
79120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_NE);
78955 79121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
78956 79122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
78957 79123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
78958 79124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78959 79125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_AND:
@@ -78966,32 +79132,21 @@
78966 79132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BITOR:
78967 79133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SLASH:
78968 79134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LSHIFT:
78969 79135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_RSHIFT:
78970 79136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_CONCAT: {
78971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_AND==OP_And );
78972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_OR==OP_Or );
78973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_PLUS==OP_Add );
78974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_MINUS==OP_Subtract );
78975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_REM==OP_Remainder );
78976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_BITAND==OP_BitAnd );
78977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_BITOR==OP_BitOr );
78978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_SLASH==OP_Divide );
78979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_LSHIFT==OP_ShiftLeft );
78980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_RSHIFT==OP_ShiftRight );
78981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_CONCAT==OP_Concat );
78982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_AND );
78983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_OR );
78984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_PLUS );
78985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_MINUS );
78986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_REM );
78987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_BITAND );
78988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_BITOR );
78989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_SLASH );
78990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_LSHIFT );
78991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_RSHIFT );
78992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_CONCAT );
79137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_AND==OP_And ); testcase( op==TK_AND );
79138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_OR==OP_Or ); testcase( op==TK_OR );
79139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_PLUS==OP_Add ); testcase( op==TK_PLUS );
79140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_MINUS==OP_Subtract ); testcase( op==TK_MINUS );
79141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_REM==OP_Remainder ); testcase( op==TK_REM );
79142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_BITAND==OP_BitAnd ); testcase( op==TK_BITAND );
79143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_BITOR==OP_BitOr ); testcase( op==TK_BITOR );
79144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_SLASH==OP_Divide ); testcase( op==TK_SLASH );
79145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_LSHIFT==OP_ShiftLeft ); testcase( op==TK_LSHIFT );
79146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_RSHIFT==OP_ShiftRight ); testcase( op==TK_RSHIFT );
79147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_CONCAT==OP_Concat ); testcase( op==TK_CONCAT );
78993 79148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
78994 79149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
78995 79150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, op, r2, r1, target);
78996 79151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
78997 79152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
@@ -79019,31 +79174,29 @@
79019 79174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inReg = target;
79020 79175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
79021 79176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79022 79177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BITNOT:
79023 79178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOT: {
79024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_BITNOT==OP_BitNot );
79025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_NOT==OP_Not );
79026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_BITNOT );
79027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_NOT );
79179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_BITNOT==OP_BitNot ); testcase( op==TK_BITNOT );
79180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_NOT==OP_Not ); testcase( op==TK_NOT );
79028 79181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
79029 79182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
79030 79183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inReg = target;
79031 79184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, op, r1, inReg);
79032 79185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
79033 79186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79034 79187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ISNULL:
79035 79188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOTNULL: {
79036 79189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addr;
79037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_ISNULL==OP_IsNull );
79038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_NOTNULL==OP_NotNull );
79039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_ISNULL );
79040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_NOTNULL );
79190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_ISNULL==OP_IsNull ); testcase( op==TK_ISNULL );
79191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_NOTNULL==OP_NotNull ); testcase( op==TK_NOTNULL );
79041 79192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 1, target);
79042 79193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
79043 79194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
79044 79195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp1(v, op, r1);
79196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_ISNULL);
79197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_NOTNULL);
79045 79198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AddImm, target, -1);
79046 79199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr);
79047 79200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
79048 79201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79049 79202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_AGG_FUNCTION: {
@@ -79091,10 +79244,11 @@
79091 79244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int endCoalesce = sqlite3VdbeMakeLabel(v);
79092 79245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nFarg>=2 );
79093 79246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pFarg->a[0].pExpr, target);
79094 79247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1; i<nFarg; i++){
79095 79248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_NotNull, target, endCoalesce);
79249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
79096 79250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheRemove(pParse, target, 1);
79097 79251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCachePush(pParse);
79098 79252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pFarg->a[i].pExpr, target);
79099 79253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCachePop(pParse, 1);
79100 79254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -79228,17 +79382,18 @@
79228 79382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
79229 79383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
79230 79384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r3 = sqlite3GetTempReg(pParse);
79231 79385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r4 = sqlite3GetTempReg(pParse);
79232 79386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pLeft, pRight, OP_Ge,
79233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1, r2, r3, SQLITE_STOREP2);
79387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r1, r2, r3, SQLITE_STOREP2); VdbeCoverage(v);
79234 79388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLItem++;
79235 79389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRight = pLItem->pExpr;
79236 79390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regFree2);
79237 79391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pRight, ®Free2);
79238 79392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
79239 79393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pLeft, pRight, OP_Le, r1, r2, r4, SQLITE_STOREP2);
79394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
79240 79395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_And, r3, r4, target);
79241 79396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, r3);
79242 79397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, r4);
79243 79398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
79244 79399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -79401,10 +79556,11 @@
79401 79556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79402 79557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_IntValue) );
79403 79558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->affinity==OE_Ignore ){
79404 79559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(
79405 79560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v, OP_Halt, SQLITE_OK, OE_Ignore, 0, pExpr->u.zToken,0);
79561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
79406 79562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
79407 79563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3HaltConstraint(pParse, SQLITE_CONSTRAINT_TRIGGER,
79408 79564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->affinity, pExpr->u.zToken, 0, 0);
79409 79565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79410 79566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -79488,11 +79644,11 @@
79488 79644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
79489 79645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate code that will evaluate expression pExpr and store the
79490 79646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** results in register target. The results are guaranteed to appear
79491 79647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in register target.
79492 79648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
79493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3ExprCode(Parse *pParse, Expr *pExpr, int target){
79649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ExprCode(Parse *pParse, Expr *pExpr, int target){
79494 79650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int inReg;
79495 79651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79496 79652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( target>0 && target<=pParse->nMem );
79497 79653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr && pExpr->op==TK_REGISTER ){
79498 79654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(pParse->pVdbe, OP_Copy, pExpr->iTable, target);
@@ -79501,11 +79657,24 @@
79501 79657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->pVdbe || pParse->db->mallocFailed );
79502 79658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( inReg!=target && pParse->pVdbe ){
79503 79659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(pParse->pVdbe, OP_SCopy, inReg, target);
79504 79660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79505 79661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return target;
79662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
79663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
79664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
79665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Generate code that will evaluate expression pExpr and store the
79666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** results in register target. The results are guaranteed to appear
79667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in register target. If the expression is constant, then this routine
79668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** might choose to code the expression at initialization time.
79669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
79670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ExprCodeFactorable(Parse *pParse, Expr *pExpr, int target){
79671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->okConstFactor && sqlite3ExprIsConstant(pExpr) ){
79672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprCodeAtInit(pParse, pExpr, target, 0);
79673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
79674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprCode(pParse, pExpr, target);
79675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
79507 79676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79508 79677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79509 79678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
79510 79679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate code that evalutes the given expression and puts the result
79511 79680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in register target.
@@ -79516,29 +79685,20 @@
79516 79685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
79517 79686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is used for expressions that are used multiple
79518 79687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** times. They are evaluated once and the results of the expression
79519 79688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are reused.
79520 79689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
79521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3ExprCodeAndCache(Parse *pParse, Expr *pExpr, int target){
79690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ExprCodeAndCache(Parse *pParse, Expr *pExpr, int target){
79522 79691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = pParse->pVdbe;
79523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int inReg;
79524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- inReg = sqlite3ExprCode(pParse, pExpr, target);
79692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iMem;
79693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
79525 79694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( target>0 );
79526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The only place, other than this routine, where expressions can be
79527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** converted to TK_REGISTER is internal subexpressions in BETWEEN and
79528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** CASE operators. Neither ever calls this routine. And this routine
79529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is never called twice on the same expression. Hence it is impossible
79530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** for the input to this routine to already be a register. Nevertheless,
79531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** it seems prudent to keep the ALWAYS() in case the conditions above
79532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** change with future modifications or enhancements. */
79533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ALWAYS(pExpr->op!=TK_REGISTER) ){
79534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iMem;
79535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iMem = ++pParse->nMem;
79536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Copy, inReg, iMem);
79537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- exprToRegister(pExpr, iMem);
79538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
79539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return inReg;
79695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->op!=TK_REGISTER );
79696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprCode(pParse, pExpr, target);
79697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iMem = ++pParse->nMem;
79698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Copy, target, iMem);
79699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ exprToRegister(pExpr, iMem);
79540 79700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79541 79701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79542 79702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_TREE_EXPLAIN)
79543 79703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
79544 79704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate a human-readable explanation of an expression tree.
@@ -79969,27 +80129,21 @@
79969 80129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LE:
79970 80130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GT:
79971 80131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GE:
79972 80132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NE:
79973 80133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_EQ: {
79974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_LT==OP_Lt );
79975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_LE==OP_Le );
79976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_GT==OP_Gt );
79977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_GE==OP_Ge );
79978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_EQ==OP_Eq );
79979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_NE==OP_Ne );
79980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_LT );
79981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_LE );
79982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_GT );
79983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_GE );
79984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_EQ );
79985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_NE );
79986 80134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
79987 80135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
79988 80136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
79989 80137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
79990 80138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, dest, jumpIfNull);
80139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_LT==OP_Lt); testcase(op==OP_Lt); VdbeCoverageIf(v,op==OP_Lt);
80140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_LE==OP_Le); testcase(op==OP_Le); VdbeCoverageIf(v,op==OP_Le);
80141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_GT==OP_Gt); testcase(op==OP_Gt); VdbeCoverageIf(v,op==OP_Gt);
80142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_GE==OP_Ge); testcase(op==OP_Ge); VdbeCoverageIf(v,op==OP_Ge);
80143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_EQ==OP_Eq); testcase(op==OP_Eq); VdbeCoverageIf(v,op==OP_Eq);
80144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_NE==OP_Ne); testcase(op==OP_Ne); VdbeCoverageIf(v,op==OP_Ne);
79991 80145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
79992 80146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
79993 80147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
79994 80148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79995 80149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IS:
@@ -79999,22 +80153,24 @@
79999 80153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
80000 80154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
80001 80155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = (op==TK_IS) ? TK_EQ : TK_NE;
80002 80156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
80003 80157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, dest, SQLITE_NULLEQ);
80158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_EQ);
80159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_NE);
80004 80160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
80005 80161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
80006 80162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
80007 80163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80008 80164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ISNULL:
80009 80165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOTNULL: {
80010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_ISNULL==OP_IsNull );
80011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( TK_NOTNULL==OP_NotNull );
80012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_ISNULL );
80013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_NOTNULL );
80166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_ISNULL==OP_IsNull ); testcase( op==TK_ISNULL );
80167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( TK_NOTNULL==OP_NotNull ); testcase( op==TK_NOTNULL );
80014 80168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
80015 80169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, op, r1, dest);
80170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_ISNULL);
80171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_NOTNULL);
80016 80172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
80017 80173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
80018 80174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80019 80175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BETWEEN: {
80020 80176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
@@ -80037,10 +80193,11 @@
80037 80193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( exprAlwaysFalse(pExpr) ){
80038 80194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* No-op */
80039 80195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
80040 80196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr, ®Free1);
80041 80197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_If, r1, dest, jumpIfNull!=0);
80198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
80042 80199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
80043 80200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
80044 80201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80045 80202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
80046 80203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -80128,21 +80285,21 @@
80128 80285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LE:
80129 80286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GT:
80130 80287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GE:
80131 80288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NE:
80132 80289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_EQ: {
80133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_LT );
80134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_LE );
80135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_GT );
80136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_GE );
80137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_EQ );
80138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_NE );
80139 80290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
80140 80291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
80141 80292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
80142 80293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
80143 80294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, dest, jumpIfNull);
80295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_LT==OP_Lt); testcase(op==OP_Lt); VdbeCoverageIf(v,op==OP_Lt);
80296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_LE==OP_Le); testcase(op==OP_Le); VdbeCoverageIf(v,op==OP_Le);
80297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_GT==OP_Gt); testcase(op==OP_Gt); VdbeCoverageIf(v,op==OP_Gt);
80298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_GE==OP_Ge); testcase(op==OP_Ge); VdbeCoverageIf(v,op==OP_Ge);
80299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_EQ==OP_Eq); testcase(op==OP_Eq); VdbeCoverageIf(v,op==OP_Eq);
80300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(TK_NE==OP_Ne); testcase(op==OP_Ne); VdbeCoverageIf(v,op==OP_Ne);
80144 80301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
80145 80302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
80146 80303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
80147 80304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80148 80305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IS:
@@ -80152,20 +80309,22 @@
80152 80309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
80153 80310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
80154 80311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = (pExpr->op==TK_IS) ? TK_NE : TK_EQ;
80155 80312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
80156 80313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, dest, SQLITE_NULLEQ);
80314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_EQ);
80315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==TK_NE);
80157 80316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
80158 80317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
80159 80318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
80160 80319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80161 80320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ISNULL:
80162 80321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOTNULL: {
80163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_ISNULL );
80164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==TK_NOTNULL );
80165 80322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
80166 80323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, op, r1, dest);
80324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( op==TK_ISNULL ); VdbeCoverageIf(v, op==TK_ISNULL);
80325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( op==TK_NOTNULL ); VdbeCoverageIf(v, op==TK_NOTNULL);
80167 80326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
80168 80327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
80169 80328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80170 80329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BETWEEN: {
80171 80330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
@@ -80190,10 +80349,11 @@
80190 80349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( exprAlwaysTrue(pExpr) ){
80191 80350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* no-op */
80192 80351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
80193 80352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr, ®Free1);
80194 80353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_IfNot, r1, dest, jumpIfNull!=0);
80354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
80195 80355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
80196 80356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
80197 80357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80198 80358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
80199 80359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -80736,12 +80896,12 @@
80736 80896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
len = sqlite3GetToken(zCsr, &token);
80737 80897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} while( token==TK_SPACE );
80738 80898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( len>0 );
80739 80899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} while( token!=TK_LP && token!=TK_USING );
80740 80900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", ((u8*)tname.z) - zSql, zSql,
80742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zTableName, tname.z+tname.n);
80901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", (int)(((u8*)tname.z) - zSql),
80902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zSql, zTableName, tname.z+tname.n);
80743 80903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_text(context, zRet, -1, SQLITE_DYNAMIC);
80744 80904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80745 80905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80746 80906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80747 80907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -80789,11 +80949,11 @@
80789 80949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zParent = sqlite3DbStrNDup(db, (const char *)z, n);
80790 80950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zParent==0 ) break;
80791 80951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Dequote(zParent);
80792 80952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==sqlite3StrICmp((const char *)zOld, zParent) ){
80793 80953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zOut = sqlite3MPrintf(db, "%s%.*s\"%w\"",
80794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (zOutput?zOutput:""), z-zInput, zInput, (const char *)zNew
80954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (zOutput?zOutput:""), (int)(z-zInput), zInput, (const char *)zNew
80795 80955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
80796 80956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, zOutput);
80797 80957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOutput = zOut;
80798 80958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zInput = &z[n];
80799 80959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -80875,12 +81035,12 @@
80875 81035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} while( dist!=2 || (token!=TK_WHEN && token!=TK_FOR && token!=TK_BEGIN) );
80876 81036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80877 81037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Variable tname now contains the token that is the old table-name
80878 81038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the CREATE TRIGGER statement.
80879 81039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", ((u8*)tname.z) - zSql, zSql,
80881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zTableName, tname.z+tname.n);
81040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", (int)(((u8*)tname.z) - zSql),
81041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zSql, zTableName, tname.z+tname.n);
80882 81042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_text(context, zRet, -1, SQLITE_DYNAMIC);
80883 81043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80884 81044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80885 81045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !SQLITE_OMIT_TRIGGER */
80886 81046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -81128,11 +81288,11 @@
81128 81288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVTab = 0;
81129 81289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81130 81290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81131 81291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
81132 81292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
81133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Begin a transaction and code the VerifyCookie for database iDb.
81293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Begin a transaction for database iDb.
81134 81294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Then modify the schema cookie (since the ALTER TABLE modifies the
81135 81295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** schema). Open a statement transaction if the table is a virtual
81136 81296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table.
81137 81297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
81138 81298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = sqlite3GetVdbe(pParse);
@@ -81264,10 +81424,11 @@
81264 81424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j1;
81265 81425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_ReadCookie, iDb, r1, BTREE_FILE_FORMAT);
81266 81426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeUsesBtree(v, iDb);
81267 81427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, minFormat, r2);
81268 81428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j1 = sqlite3VdbeAddOp3(v, OP_Ge, r2, 0, r1);
81429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP5(v, SQLITE_NOTNULL); VdbeCoverage(v);
81269 81430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_FILE_FORMAT, r2);
81270 81431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j1);
81271 81432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, r1);
81272 81433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, r2);
81273 81434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -82564,10 +82725,11 @@
82564 82725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** regChng = 0
82565 82726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** goto next_push_0;
82566 82727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
82567 82728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
82568 82729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrRewind = sqlite3VdbeAddOp1(v, OP_Rewind, iIdxCur);
82730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
82569 82731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, regChng);
82570 82732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrGotoChng0 = sqlite3VdbeAddOp0(v, OP_Goto);
82571 82733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82572 82734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
82573 82735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** next_row:
@@ -82585,10 +82747,11 @@
82585 82747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, i, regChng);
82586 82748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, i, regTemp);
82587 82749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aGotoChng[i] =
82588 82750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Ne, regTemp, 0, regPrev+i, pColl, P4_COLLSEQ);
82589 82751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_NULLEQ);
82752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
82590 82753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82591 82754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, nCol, regChng);
82592 82755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aGotoChng[nCol] = sqlite3VdbeAddOp0(v, OP_Goto);
82593 82756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82594 82757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -82631,11 +82794,11 @@
82631 82794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
82632 82795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( regChng==(regStat4+1) );
82633 82796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Function, 1, regStat4, regTemp);
82634 82797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP4(v, -1, (char*)&statPushFuncdef, P4_FUNCDEF);
82635 82798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, 2+IsStat34);
82636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, iIdxCur, addrNextRow);
82799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, iIdxCur, addrNextRow); VdbeCoverage(v);
82637 82800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82638 82801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Add the entry to the stat1 table. */
82639 82802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callStatGet(v, regStat4, STAT_GET_STAT1, regStat1);
82640 82803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_MakeRecord, regTabname, 3, regTemp, "aaa", 0);
82641 82804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_NewRowid, iStatCur, regNewRowid);
@@ -82658,14 +82821,16 @@
82658 82821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = MAX(pParse->nMem, regCol+nCol+1);
82659 82822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82660 82823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrNext = sqlite3VdbeCurrentAddr(v);
82661 82824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callStatGet(v, regStat4, STAT_GET_ROWID, regSampleRowid);
82662 82825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrIsNull = sqlite3VdbeAddOp1(v, OP_IsNull, regSampleRowid);
82826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
82663 82827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callStatGet(v, regStat4, STAT_GET_NEQ, regEq);
82664 82828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callStatGet(v, regStat4, STAT_GET_NLT, regLt);
82665 82829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callStatGet(v, regStat4, STAT_GET_NDLT, regDLt);
82666 82830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, seekOp, iTabCur, addrNext, regSampleRowid, 0);
82831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
82667 82832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STAT3
82668 82833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeGetColumnOfTable(v, pTab, iTabCur,
82669 82834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx->aiColumn[0], regSample);
82670 82835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
82671 82836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nCol; i++){
@@ -82672,11 +82837,11 @@
82672 82837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i16 iCol = pIdx->aiColumn[i];
82673 82838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeGetColumnOfTable(v, pTab, iTabCur, iCol, regCol+i);
82674 82839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82675 82840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_MakeRecord, regCol, nCol+1, regSample);
82676 82841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
82677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4(v, OP_MakeRecord, regTabname, 6, regTemp, "bbbbbb", 0);
82842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_MakeRecord, regTabname, 6, regTemp);
82678 82843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_NewRowid, iStatCur+1, regNewRowid);
82679 82844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Insert, iStatCur+1, regTemp, regNewRowid);
82680 82845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrNext);
82681 82846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrIsNull);
82682 82847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -82692,11 +82857,11 @@
82692 82857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** name and the row count as the content.
82693 82858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
82694 82859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOnlyIdx==0 && needTableCnt ){
82695 82860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "%s", pTab->zName));
82696 82861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Count, iTabCur, regStat1);
82697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jZeroRows = sqlite3VdbeAddOp1(v, OP_IfNot, regStat1);
82862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jZeroRows = sqlite3VdbeAddOp1(v, OP_IfNot, regStat1); VdbeCoverage(v);
82698 82863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Null, 0, regIdxname);
82699 82864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_MakeRecord, regTabname, 3, regTemp, "aaa", 0);
82700 82865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_NewRowid, iStatCur, regNewRowid);
82701 82866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Insert, iStatCur, regTemp, regNewRowid);
82702 82867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_APPEND);
@@ -84230,24 +84395,26 @@
84230 84395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (Bit 0 is for main, bit 1 is for temp, and so forth.) Bits are
84231 84396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** set for each database that is used. Generate code to start a
84232 84397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** transaction on each used database and to verify the schema cookie
84233 84398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on each used database.
84234 84399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
84235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pParse->cookieGoto>0 ){
84400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->mallocFailed==0 && (pParse->cookieMask || pParse->pConstExpr) ){
84236 84401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yDbMask mask;
84237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iDb, i, addr;
84238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, pParse->cookieGoto-1);
84402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iDb, i;
84403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3VdbeGetOp(v, 0)->opcode==OP_Init );
84404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, 0);
84239 84405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iDb=0, mask=1; iDb<db->nDb; mask<<=1, iDb++){
84240 84406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (mask & pParse->cookieMask)==0 ) continue;
84241 84407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeUsesBtree(v, iDb);
84242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v,OP_Transaction, iDb, (mask & pParse->writeMask)!=0);
84243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db->init.busy==0 ){
84244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
84245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_VerifyCookie,
84246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iDb, pParse->cookieValue[iDb],
84247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db->aDb[iDb].pSchema->iGeneration);
84248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
84408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4Int(v,
84409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_Transaction, /* Opcode */
84410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iDb, /* P1 */
84411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (mask & pParse->writeMask)!=0, /* P2 */
84412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->cookieValue[iDb], /* P3 */
84413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->aDb[iDb].pSchema->iGeneration /* P4 */
84414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
84415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->init.busy==0 ) sqlite3VdbeChangeP5(v, 1);
84249 84416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84250 84417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
84251 84418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pParse->nVtabLock; i++){
84252 84419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *vtab = (char *)sqlite3GetVTable(db, pParse->apVtabLock[i]);
84253 84420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_VBegin, 0, 0, 0, vtab, P4_VTAB);
@@ -84264,21 +84431,20 @@
84264 84431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Initialize any AUTOINCREMENT data structures required.
84265 84432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
84266 84433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3AutoincrementBegin(pParse);
84267 84434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84268 84435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code constant expressions that where factored out of inner loops */
84269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = pParse->cookieGoto;
84270 84436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->pConstExpr ){
84271 84437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pEL = pParse->pConstExpr;
84272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->cookieGoto = 0;
84438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->okConstFactor = 0;
84273 84439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pEL->nExpr; i++){
84274 84440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pEL->a[i].pExpr, pEL->a[i].u.iConstExprReg);
84275 84441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84276 84442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84277 84443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84278 84444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Finally, jump back to the beginning of the executable code. */
84279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Goto, 0, addr);
84445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, 1);
84280 84446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84281 84447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84282 84448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84283 84449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84284 84450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Get the VDBE program ready for execution
@@ -84297,11 +84463,10 @@
84297 84463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nTab = 0;
84298 84464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = 0;
84299 84465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nSet = 0;
84300 84466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nVar = 0;
84301 84467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->cookieMask = 0;
84302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->cookieGoto = 0;
84303 84468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84304 84469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84305 84470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
84306 84471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Run the parser and code generator recursively in order to generate
84307 84472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** code for the SQL statement given onto the end of the pParse context
@@ -85029,11 +85194,11 @@
85029 85194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
reg1 = pParse->regRowid = ++pParse->nMem;
85030 85195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
reg2 = pParse->regRoot = ++pParse->nMem;
85031 85196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
reg3 = ++pParse->nMem;
85032 85197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_ReadCookie, iDb, reg3, BTREE_FILE_FORMAT);
85033 85198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeUsesBtree(v, iDb);
85034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j1 = sqlite3VdbeAddOp1(v, OP_If, reg3);
85199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ j1 = sqlite3VdbeAddOp1(v, OP_If, reg3); VdbeCoverage(v);
85035 85200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fileFormat = (db->flags & SQLITE_LegacyFileFmt)!=0 ?
85036 85201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1 : SQLITE_MAX_FILE_FORMAT;
85037 85202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, fileFormat, reg3);
85038 85203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_FILE_FORMAT, reg3);
85039 85204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, ENC(db), reg3);
@@ -86756,40 +86921,40 @@
86756 86921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3KeyInfoRef(pKey), P4_KEYINFO);
86757 86922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
86758 86923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Open the table. Loop through all rows of the table, inserting index
86759 86924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** records into the sorter. */
86760 86925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTable(pParse, iTab, iDb, pTab, OP_OpenRead);
86761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr1 = sqlite3VdbeAddOp2(v, OP_Rewind, iTab, 0);
86926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr1 = sqlite3VdbeAddOp2(v, OP_Rewind, iTab, 0); VdbeCoverage(v);
86762 86927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regRecord = sqlite3GetTempReg(pParse);
86763 86928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
86764 86929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3GenerateIndexKey(pParse,pIndex,iTab,regRecord,0,&iPartIdxLabel,0,0);
86765 86930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SorterInsert, iSorter, regRecord);
86766 86931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iPartIdxLabel);
86767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, iTab, addr1+1);
86932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, iTab, addr1+1); VdbeCoverage(v);
86768 86933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
86769 86934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( memRootPage<0 ) sqlite3VdbeAddOp2(v, OP_Clear, tnum, iDb);
86770 86935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_OpenWrite, iIdx, tnum, iDb,
86771 86936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(char *)pKey, P4_KEYINFO);
86772 86937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_BULKCSR|((memRootPage>=0)?OPFLAG_P2ISREG:0));
86773 86938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
86774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr1 = sqlite3VdbeAddOp2(v, OP_SorterSort, iSorter, 0);
86939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr1 = sqlite3VdbeAddOp2(v, OP_SorterSort, iSorter, 0); VdbeCoverage(v);
86775 86940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pKey!=0 || db->mallocFailed || pParse->nErr );
86776 86941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIndex->onError!=OE_None && pKey!=0 ){
86777 86942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j2 = sqlite3VdbeCurrentAddr(v) + 3;
86778 86943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, j2);
86779 86944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr2 = sqlite3VdbeCurrentAddr(v);
86780 86945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_SorterCompare, iSorter, j2, regRecord,
86781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pKey->nField - pIndex->nKeyCol);
86946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pKey->nField - pIndex->nKeyCol); VdbeCoverage(v);
86782 86947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3UniqueConstraint(pParse, OE_Abort, pIndex);
86783 86948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
86784 86949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr2 = sqlite3VdbeCurrentAddr(v);
86785 86950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86786 86951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SorterData, iSorter, regRecord);
86787 86952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_IdxInsert, iIdx, regRecord, 1);
86788 86953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
86789 86954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regRecord);
86790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_SorterNext, iSorter, addr2);
86955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_SorterNext, iSorter, addr2); VdbeCoverage(v);
86791 86956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
86792 86957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
86793 86958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Close, iTab);
86794 86959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Close, iIdx);
86795 86960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Close, iSorter);
@@ -87906,63 +88071,30 @@
87906 88071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87907 88072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
87908 88073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87909 88074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
87910 88075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
87911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Generate VDBE code that will verify the schema cookie and start
87912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** a read-transaction for all named database files.
87913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
87914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** It is important that all schema cookies be verified and all
87915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** read transactions be started before anything else happens in
87916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the VDBE program. But this routine can be called after much other
87917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** code has been generated. So here is what we do:
87918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
87919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The first time this routine is called, we code an OP_Goto that
87920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** will jump to a subroutine at the end of the program. Then we
87921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** record every database that needs its schema verified in the
87922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pParse->cookieMask field. Later, after all other code has been
87923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** generated, the subroutine that does the cookie verifications and
87924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** starts the transactions will be coded and the OP_Goto P2 value
87925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** will be made to point to that subroutine. The generation of the
87926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** cookie verification subroutine code happens in sqlite3FinishCoding().
87927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
87928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If iDb<0 then code the OP_Goto only - don't set flag to verify the
87929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** schema on any databases. This can be used to position the OP_Goto
87930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** early in the code, before we know if any database tables will be used.
88076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Record the fact that the schema cookie will need to be verified
88077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for database iDb. The code to actually verify the schema cookie
88078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** will occur at the end of the top-level VDBE and will be generated
88079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** later, by sqlite3FinishCoding().
87931 88080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
87932 88081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3CodeVerifySchema(Parse *pParse, int iDb){
87933 88082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pToplevel = sqlite3ParseToplevel(pParse);
87934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
87935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef SQLITE_OMIT_TRIGGER
87936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pToplevel!=pParse ){
87937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* This branch is taken if a trigger is currently being coded. In this
87938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** case, set cookieGoto to a non-zero value to show that this function
87939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** has been called. This is used by the sqlite3ExprCodeConstants()
87940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** function. */
87941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->cookieGoto = -1;
87942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
87943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
87944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pToplevel->cookieGoto==0 ){
87945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Vdbe *v = sqlite3GetVdbe(pToplevel);
87946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( v==0 ) return; /* This only happens if there was a prior error */
87947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pToplevel->cookieGoto = sqlite3VdbeAddOp2(v, OP_Goto, 0, 0)+1;
87948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
87949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iDb>=0 ){
87950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3 *db = pToplevel->db;
87951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yDbMask mask;
87952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
87953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( iDb<db->nDb );
87954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( db->aDb[iDb].pBt!=0 || iDb==1 );
87955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( iDb<SQLITE_MAX_ATTACHED+2 );
87956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
87957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mask = ((yDbMask)1)<<iDb;
87958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pToplevel->cookieMask & mask)==0 ){
87959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pToplevel->cookieMask |= mask;
87960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pToplevel->cookieValue[iDb] = db->aDb[iDb].pSchema->schema_cookie;
87961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !OMIT_TEMPDB && iDb==1 ){
87962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3OpenTempDatabase(pToplevel);
87963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
88083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db = pToplevel->db;
88084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yDbMask mask;
88085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
88086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( iDb>=0 && iDb<db->nDb );
88087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->aDb[iDb].pBt!=0 || iDb==1 );
88088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( iDb<SQLITE_MAX_ATTACHED+2 );
88089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
88090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mask = ((yDbMask)1)<<iDb;
88091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pToplevel->cookieMask & mask)==0 ){
88092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pToplevel->cookieMask |= mask;
88093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pToplevel->cookieValue[iDb] = db->aDb[iDb].pSchema->schema_cookie;
88094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !OMIT_TEMPDB && iDb==1 ){
88095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3OpenTempDatabase(pToplevel);
87964 88096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87965 88097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87966 88098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87967 88099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
87968 88100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -88929,25 +89061,20 @@
88929 89061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest dest;
88930 89062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pSel;
88931 89063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pFrom;
88932 89064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
88933 89065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDb = sqlite3SchemaToIndex(db, pView->pSchema);
88934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
88935 89066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWhere = sqlite3ExprDup(db, pWhere, 0);
88936 89067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom = sqlite3SrcListAppend(db, 0, 0, 0);
88937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
88938 89068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFrom ){
88939 89069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pFrom->nSrc==1 );
88940 89070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom->a[0].zName = sqlite3DbStrDup(db, pView->zName);
88941 89071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom->a[0].zDatabase = sqlite3DbStrDup(db, db->aDb[iDb].zName);
88942 89072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pFrom->a[0].pOn==0 );
88943 89073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pFrom->a[0].pUsing==0 );
88944 89074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
88945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
88946 89075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSel = sqlite3SelectNew(pParse, 0, pFrom, pWhere, 0, 0, 0, 0, 0, 0);
88947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pSel ) pSel->selFlags |= SF_Materialize;
88948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
88949 89076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDestInit(&dest, SRT_EphemTab, iCur);
88950 89077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Select(pParse, pSel, &dest);
88951 89078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(db, pSel);
88952 89079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
88953 89080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_VIEW) && !defined(SQLITE_OMIT_TRIGGER) */
@@ -89280,11 +89407,11 @@
89280 89407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pPk ){
89281 89408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Construct a composite key for the row to be deleted and remember it */
89282 89409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iKey = ++pParse->nMem;
89283 89410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKey = 0; /* Zero tells OP_Found to use a composite key */
89284 89411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_MakeRecord, iPk, nPk, iKey,
89285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3IndexAffinityStr(v, pPk), P4_TRANSIENT);
89412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3IndexAffinityStr(v, pPk), nPk);
89286 89413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxInsert, iEphCur, iKey);
89287 89414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
89288 89415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Get the rowid of the row to be deleted and remember it in the RowSet */
89289 89416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKey = 1; /* OP_Seek always uses a single rowid */
89290 89417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_RowSetAdd, iRowSet, iKey);
@@ -89318,17 +89445,19 @@
89318 89445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Just one row. Hence the top-of-loop is a no-op */
89319 89446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nKey==nPk ); /* OP_Found will use an unpacked key */
89320 89447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aToOpen[iDataCur-iTabCur] ){
89321 89448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPk!=0 );
89322 89449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, addrBypass, iKey, nKey);
89450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
89323 89451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
89324 89452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pPk ){
89325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrLoop = sqlite3VdbeAddOp1(v, OP_Rewind, iEphCur);
89453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrLoop = sqlite3VdbeAddOp1(v, OP_Rewind, iEphCur); VdbeCoverage(v);
89326 89454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_RowKey, iEphCur, iKey);
89327 89455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nKey==0 ); /* OP_Found will use a composite key */
89328 89456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
89329 89457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrLoop = sqlite3VdbeAddOp3(v, OP_RowSetRead, iRowSet, 0, iKey);
89458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
89330 89459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nKey==1 );
89331 89460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
89332 89461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
89333 89462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Delete the row */
89334 89463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
@@ -89348,11 +89477,11 @@
89348 89477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
89349 89478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* End of the loop over all rowids/primary-keys. */
89350 89479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( okOnePass ){
89351 89480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrBypass);
89352 89481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pPk ){
89353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, iEphCur, addrLoop+1);
89482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, iEphCur, addrLoop+1); VdbeCoverage(v);
89354 89483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrLoop);
89355 89484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
89356 89485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrLoop);
89357 89486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrLoop);
89358 89487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -89446,11 +89575,15 @@
89446 89575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Seek cursor iCur to the row to delete. If this row no longer exists
89447 89576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (this can happen if a trigger program has already deleted it), do
89448 89577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not attempt to delete it or fire any DELETE triggers. */
89449 89578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iLabel = sqlite3VdbeMakeLabel(v);
89450 89579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opSeek = HasRowid(pTab) ? OP_NotExists : OP_NotFound;
89451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !bNoSeek ) sqlite3VdbeAddOp4Int(v, opSeek, iDataCur, iLabel, iPk, nPk);
89580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !bNoSeek ){
89581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4Int(v, opSeek, iDataCur, iLabel, iPk, nPk);
89582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, opSeek==OP_NotExists);
89583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, opSeek==OP_NotFound);
89584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
89452 89585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
89453 89586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there are any triggers to fire, allocate a range of registers to
89454 89587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** use for the old.* references in the triggers. */
89455 89588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3FkRequired(pParse, pTab, 0, 0) || pTrigger ){
89456 89589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 mask; /* Mask of OLD.* columns in use */
@@ -89488,10 +89621,12 @@
89488 89621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the cursor or of already deleted the row that the cursor was
89489 89622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pointing to.
89490 89623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
89491 89624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrStart<sqlite3VdbeCurrentAddr(v) ){
89492 89625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, opSeek, iDataCur, iLabel, iPk, nPk);
89626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, opSeek==OP_NotExists);
89627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, opSeek==OP_NotFound);
89493 89628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
89494 89629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
89495 89630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do FK processing. This call checks that any FK constraints that
89496 89631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** refer to this table (i.e. constraints attached to other tables)
89497 89632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are not violated by deleting this row. */
@@ -91745,14 +91880,15 @@
91745 91880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Check if any of the key columns in the child table row are NULL. If
91746 91881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** any are, then the constraint is considered satisfied. No need to
91747 91882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** search for a matching row in the parent table. */
91748 91883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nIncr<0 ){
91749 91884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, iOk);
91885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
91750 91886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91751 91887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pFKey->nCol; i++){
91752 91888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iReg = aiCol[i] + regData + 1;
91753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IsNull, iReg, iOk);
91889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, iReg, iOk); VdbeCoverage(v);
91754 91890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91755 91891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91756 91892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isIgnore==0 ){
91757 91893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx==0 ){
91758 91894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If pIdx is NULL, then the parent key is the INTEGER PRIMARY KEY
@@ -91765,21 +91901,23 @@
91765 91901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is no matching parent key. Before using MustBeInt, make a copy of
91766 91902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the value. Otherwise, the value inserted into the child key column
91767 91903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will have INTEGER affinity applied to it, which may not be correct. */
91768 91904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SCopy, aiCol[0]+1+regData, regTemp);
91769 91905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iMustBeInt = sqlite3VdbeAddOp2(v, OP_MustBeInt, regTemp, 0);
91906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
91770 91907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91771 91908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the parent table is the same as the child table, and we are about
91772 91909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to increment the constraint-counter (i.e. this is an INSERT operation),
91773 91910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then check if the row being inserted matches itself. If so, do not
91774 91911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** increment the constraint-counter. */
91775 91912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab==pFKey->pFrom && nIncr==1 ){
91776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Eq, regData, iOk, regTemp);
91913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Eq, regData, iOk, regTemp); VdbeCoverage(v);
91914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP5(v, SQLITE_NOTNULL);
91777 91915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91778 91916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91779 91917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTable(pParse, iCur, iDb, pTab, OP_OpenRead);
91780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_NotExists, iCur, 0, regTemp);
91918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_NotExists, iCur, 0, regTemp); VdbeCoverage(v);
91781 91919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, iOk);
91782 91920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, sqlite3VdbeCurrentAddr(v)-2);
91783 91921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, iMustBeInt);
91784 91922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regTemp);
91785 91923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -91811,19 +91949,19 @@
91811 91949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( aiCol[i]!=pTab->iPKey );
91812 91950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx->aiColumn[i]==pTab->iPKey ){
91813 91951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The parent key is a composite key that includes the IPK column */
91814 91952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iParent = regData;
91815 91953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Ne, iChild, iJump, iParent);
91954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Ne, iChild, iJump, iParent); VdbeCoverage(v);
91817 91955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_JUMPIFNULL);
91818 91956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91819 91957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, iOk);
91820 91958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91821 91959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_MakeRecord, regTemp, nCol, regRec);
91823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v,pIdx), P4_TRANSIENT);
91824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4Int(v, OP_Found, iCur, iOk, regRec, 0);
91960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_MakeRecord, regTemp, nCol, regRec,
91961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3IndexAffinityStr(v,pIdx), nCol);
91962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4Int(v, OP_Found, iCur, iOk, regRec, 0); VdbeCoverage(v);
91825 91963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91826 91964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regRec);
91827 91965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempRange(pParse, regTemp, nCol);
91828 91966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91829 91967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -91957,10 +92095,11 @@
91957 92095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIdx!=0 || pFKey->nCol==1 );
91958 92096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIdx!=0 || HasRowid(pTab) );
91959 92097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91960 92098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nIncr<0 ){
91961 92099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iFkIfZero = sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, 0);
92100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
91962 92101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91963 92102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91964 92103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Create an Expr object representing an SQL expression like:
91965 92104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
91966 92105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <parent-key1> = <child-key1> AND <parent-key2> = <child-key2> ...
@@ -92119,11 +92258,11 @@
92119 92258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(p=pTab->pFKey; p; p=p->pNextFrom){
92120 92259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->isDeferred || (db->flags & SQLITE_DeferFKs) ) break;
92121 92260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92122 92261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !p ) return;
92123 92262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iSkip = sqlite3VdbeMakeLabel(v);
92124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_FkIfZero, 1, iSkip);
92263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_FkIfZero, 1, iSkip); VdbeCoverage(v);
92125 92264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92126 92265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
92127 92266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->disableTriggers = 1;
92128 92267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DeleteFrom(pParse, sqlite3SrcListDup(db, pName, 0), 0);
92129 92268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->disableTriggers = 0;
@@ -92137,10 +92276,11 @@
92137 92276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the statement transaction will not be rolled back even if FK
92138 92277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** constraints are violated.
92139 92278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
92140 92279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (db->flags & SQLITE_DeferFKs)==0 ){
92141 92280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_FkIfZero, 0, sqlite3VdbeCurrentAddr(v)+2);
92281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
92142 92282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3HaltConstraint(pParse, SQLITE_CONSTRAINT_FOREIGNKEY,
92143 92283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OE_Abort, 0, P4_STATIC, P5_ConstraintFK);
92144 92284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92145 92285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
92146 92286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iSkip ){
@@ -92296,11 +92436,11 @@
92296 92436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
92297 92437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = sqlite3GetVdbe(pParse);
92298 92438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iJump = sqlite3VdbeCurrentAddr(v) + pFKey->nCol + 1;
92299 92439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pFKey->nCol; i++){
92300 92440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iReg = pFKey->aCol[i].iFrom + regOld + 1;
92301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IsNull, iReg, iJump);
92441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, iReg, iJump); VdbeCoverage(v);
92302 92442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92303 92443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, -1);
92304 92444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92305 92445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
92306 92446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -92863,69 +93003,74 @@
92863 93003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
92864 93004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pIdx->zColAff;
92865 93005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92866 93006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
92867 93007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
92868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Set P4 of the most recently inserted opcode to a column affinity
92869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** string for table pTab. A column affinity string has one character
92870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** for each column indexed by the index, according to the affinity of the
92871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** column:
93008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Compute the affinity string for table pTab, if it has not already been
93009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** computed. As an optimization, omit trailing SQLITE_AFF_NONE affinities.
93010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
93011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the affinity exists (if it is no entirely SQLITE_AFF_NONE values and
93012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if iReg>0 then code an OP_Affinity opcode that will set the affinities
93013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for register iReg and following. Or if affinities exists and iReg==0,
93014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then just set the P4 operand of the previous opcode (which should be
93015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** an OP_MakeRecord) to the affinity string.
93016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
93017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** A column affinity string has one character column:
92872 93018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
92873 93019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Character Column affinity
92874 93020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ------------------------------
92875 93021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 'a' TEXT
92876 93022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 'b' NONE
92877 93023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 'c' NUMERIC
92878 93024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 'd' INTEGER
92879 93025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 'e' REAL
92880 93026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
92881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3TableAffinityStr(Vdbe *v, Table *pTab){
92882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The first time a column affinity string for a particular table
92883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is required, it is allocated and populated here. It is then
92884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** stored as a member of the Table structure for subsequent use.
92885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
92886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The column affinity string will eventually be deleted by
92887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sqlite3DeleteTable() when the Table structure itself is cleaned up.
92888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
92889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !pTab->zColAff ){
92890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zColAff;
92891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
93027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
93028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
93029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zColAff = pTab->zColAff;
93030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zColAff==0 ){
92892 93031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = sqlite3VdbeDb(v);
92893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
92894 93032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zColAff = (char *)sqlite3DbMallocRaw(0, pTab->nCol+1);
92895 93033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !zColAff ){
92896 93034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->mallocFailed = 1;
92897 93035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
92898 93036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92899 93037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
92900 93038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pTab->nCol; i++){
92901 93039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zColAff[i] = pTab->aCol[i].affinity;
92902 93040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zColAff[pTab->nCol] = '\0';
92904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
93041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ do{
93042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zColAff[i--] = 0;
93043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }while( i>=0 && zColAff[i]==SQLITE_AFF_NONE );
92905 93044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->zColAff = zColAff;
92906 93045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
92908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP4(v, -1, pTab->zColAff, P4_TRANSIENT);
93046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = sqlite3Strlen30(zColAff);
93047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i ){
93048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iReg ){
93049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_Affinity, iReg, i, 0, zColAff, i);
93050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
93051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP4(v, -1, zColAff, i);
93052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
92909 93054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92910 93055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
92911 93056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
92912 93057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return non-zero if the table pTab in database iDb or any of its indices
92913 93058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** have been opened at any point in the VDBE program beginning at location
92914 93059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** iStartAddr throught the end of the program. This is used to see if
92915 93060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a statement of the form "INSERT INTO <iDb, pTab> SELECT ..." can
92916 93061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** run without using temporary table for the results of the SELECT.
92917 93062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
92918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int readsTable(Parse *p, int iStartAddr, int iDb, Table *pTab){
93063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int readsTable(Parse *p, int iDb, Table *pTab){
92919 93064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = sqlite3GetVdbe(p);
92920 93065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
92921 93066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEnd = sqlite3VdbeCurrentAddr(v);
92922 93067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
92923 93068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VTable *pVTab = IsVirtual(pTab) ? sqlite3GetVTable(p->db, pTab) : 0;
92924 93069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
92925 93070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
92926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=iStartAddr; i<iEnd; i++){
93071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=1; i<iEnd; i++){
92927 93072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp = sqlite3VdbeGetOp(v, i);
92928 93073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp!=0 );
92929 93074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->opcode==OP_OpenRead && pOp->p3==iDb ){
92930 93075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIndex;
92931 93076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tnum = pOp->p2;
@@ -93022,18 +93167,18 @@
93022 93167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3SchemaMutexHeld(db, 0, pDb->pSchema) );
93023 93168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTable(pParse, 0, p->iDb, pDb->pSchema->pSeqTab, OP_OpenRead);
93024 93169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Null, 0, memId, memId+1);
93025 93170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeCurrentAddr(v);
93026 93171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, memId-1, 0, p->pTab->zName, 0);
93027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Rewind, 0, addr+9);
93172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Rewind, 0, addr+9); VdbeCoverage(v);
93028 93173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, 0, 0, memId);
93029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Ne, memId-1, addr+7, memId);
93174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Ne, memId-1, addr+7, memId); VdbeCoverage(v);
93030 93175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_JUMPIFNULL);
93031 93176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Rowid, 0, memId+1);
93032 93177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, 0, 1, memId);
93033 93178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, addr+9);
93034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, 0, addr+2);
93179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, 0, addr+2); VdbeCoverage(v);
93035 93180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, memId);
93036 93181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp0(v, OP_Close);
93037 93182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93038 93183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93039 93184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -93064,29 +93209,20 @@
93064 93209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
93065 93210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93066 93211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( v );
93067 93212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(p = pParse->pAinc; p; p = p->pNext){
93068 93213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Db *pDb = &db->aDb[p->iDb];
93069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int j1, j2, j3, j4, j5;
93214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int j1;
93070 93215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRec;
93071 93216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int memId = p->regCtr;
93072 93217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93073 93218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRec = sqlite3GetTempReg(pParse);
93074 93219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3SchemaMutexHeld(db, 0, pDb->pSchema) );
93075 93220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTable(pParse, 0, p->iDb, pDb->pSchema->pSeqTab, OP_OpenWrite);
93076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j1 = sqlite3VdbeAddOp1(v, OP_NotNull, memId+1);
93077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j2 = sqlite3VdbeAddOp0(v, OP_Rewind);
93078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j3 = sqlite3VdbeAddOp3(v, OP_Column, 0, 0, iRec);
93079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j4 = sqlite3VdbeAddOp3(v, OP_Eq, memId-1, 0, iRec);
93080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, 0, j3);
93081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, j2);
93221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ j1 = sqlite3VdbeAddOp1(v, OP_NotNull, memId+1); VdbeCoverage(v);
93082 93222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_NewRowid, 0, memId+1);
93083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j5 = sqlite3VdbeAddOp0(v, OP_Goto);
93084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, j4);
93085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Rowid, 0, memId+1);
93086 93223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j1);
93087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, j5);
93088 93224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_MakeRecord, memId-1, 2, iRec);
93089 93225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Insert, 0, iRec, memId+1);
93090 93226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_APPEND);
93091 93227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp0(v, OP_Close);
93092 93228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, iRec);
@@ -93098,101 +93234,10 @@
93098 93234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** above are all no-ops
93099 93235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93100 93236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define autoIncBegin(A,B,C) (0)
93101 93237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define autoIncStep(A,B,C)
93102 93238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_AUTOINCREMENT */
93103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
93104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
93105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
93106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Generate code for a co-routine that will evaluate a subquery one
93107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** row at a time.
93108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The pSelect parameter is the subquery that the co-routine will evaluation.
93110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Information about the location of co-routine and the registers it will use
93111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is returned by filling in the pDest object.
93112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Registers are allocated as follows:
93114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pDest->iSDParm The register holding the next entry-point of the
93116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** co-routine. Run the co-routine to its next breakpoint
93117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** by calling "OP_Yield $X" where $X is pDest->iSDParm.
93118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pDest->iSDParm+1 The register holding the "completed" flag for the
93120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** co-routine. This register is 0 if the previous Yield
93121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** generated a new result row, or 1 if the subquery
93122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** has completed. If the Yield is called again
93123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** after this register becomes 1, then the VDBE will
93124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** halt with an SQLITE_INTERNAL error.
93125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pDest->iSdst First result register.
93127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pDest->nSdst Number of result registers.
93129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This routine handles all of the register allocation and fills in the
93131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pDest structure appropriately.
93132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Here is a schematic of the generated code assuming that X is the
93134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** co-routine entry-point register reg[pDest->iSDParm], that EOF is the
93135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** completed flag reg[pDest->iSDParm+1], and R and S are the range of
93136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** registers that hold the result set, reg[pDest->iSdst] through
93137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** reg[pDest->iSdst+pDest->nSdst-1]:
93138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** X <- A
93140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EOF <- 0
93141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** goto B
93142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** A: setup for the SELECT
93143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** loop rows in the SELECT
93144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** load results into registers R..S
93145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** yield X
93146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** end loop
93147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** cleanup after the SELECT
93148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EOF <- 1
93149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** yield X
93150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** halt-error
93151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** B:
93152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** To use this subroutine, the caller generates code as follows:
93154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** [ Co-routine generated by this subroutine, shown above ]
93156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** S: yield X
93157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if EOF goto E
93158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if skip this row, goto C
93159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if terminate loop, goto E
93160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** deal with this row
93161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** C: goto S
93162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** E:
93163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
93164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3CodeCoroutine(Parse *pParse, Select *pSelect, SelectDest *pDest){
93165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int regYield; /* Register holding co-routine entry-point */
93166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int regEof; /* Register holding co-routine completion flag */
93167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrTop; /* Top of the co-routine */
93168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int j1; /* Jump instruction */
93169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc; /* Result code */
93170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Vdbe *v; /* VDBE under construction */
93171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
93172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regYield = ++pParse->nMem;
93173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regEof = ++pParse->nMem;
93174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v = sqlite3GetVdbe(pParse);
93175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrTop = sqlite3VdbeCurrentAddr(v);
93176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, addrTop+2, regYield); /* X <- A */
93177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "Co-routine entry point"));
93178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, 0, regEof); /* EOF <- 0 */
93179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "Co-routine completion flag"));
93180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3SelectDestInit(pDest, SRT_Coroutine, regYield);
93181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j1 = sqlite3VdbeAddOp2(v, OP_Goto, 0, 0);
93182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3Select(pParse, pSelect, pDest);
93183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pParse->nErr==0 || rc );
93184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pParse->db->mallocFailed && rc==SQLITE_OK ) rc = SQLITE_NOMEM;
93185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc ) return rc;
93186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, 1, regEof); /* EOF <- 1 */
93187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Yield, regYield); /* yield X */
93188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Halt, SQLITE_INTERNAL, OE_Abort);
93189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "End of coroutine"));
93190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, j1); /* label B: */
93191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rc;
93192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
93194 93239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93195 93240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93196 93241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Forward declaration */
93197 93242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int xferOptimization(
93198 93243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse, /* Parser context */
@@ -93253,25 +93298,21 @@
93253 93298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93254 93299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The 3rd template is for when the second template does not apply
93255 93300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and the SELECT clause does not read from <table> at any time.
93256 93301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The generated code follows this template:
93257 93302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EOF <- 0
93259 93303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** X <- A
93260 93304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** goto B
93261 93305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A: setup for the SELECT
93262 93306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** loop over the rows in the SELECT
93263 93307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** load values into registers R..R+n
93264 93308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** yield X
93265 93309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** end loop
93266 93310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cleanup after the SELECT
93267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EOF <- 1
93268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** yield X
93269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** goto A
93311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** end-coroutine X
93270 93312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** B: open write cursor to <table> and its indices
93271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** C: yield X
93272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if EOF goto D
93313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** C: yield X, at EOF goto D
93273 93314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** insert the select result into <table> from R..R+n
93274 93315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** goto C
93275 93316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** D: cleanup
93276 93317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93277 93318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The 4th template is used if the insert statement takes its
@@ -93278,25 +93319,21 @@
93278 93319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** values from a SELECT but the data is being inserted into a table
93279 93320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that is also read as part of the SELECT. In the third form,
93280 93321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** we have to use a intermediate table to store the results of
93281 93322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the select. The template is like this:
93282 93323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EOF <- 0
93284 93324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** X <- A
93285 93325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** goto B
93286 93326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A: setup for the SELECT
93287 93327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** loop over the tables in the SELECT
93288 93328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** load value into register R..R+n
93289 93329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** yield X
93290 93330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** end loop
93291 93331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cleanup after the SELECT
93292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EOF <- 1
93293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** yield X
93294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** halt-error
93332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** end co-routine R
93295 93333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** B: open temp table
93296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** L: yield X
93297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if EOF goto M
93334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** L: yield X, at EOF goto M
93298 93335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** insert row from R..R+n into temp table
93299 93336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** goto L
93300 93337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** M: open write cursor to <table> and its indices
93301 93338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** rewind temp table
93302 93339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** C: loop over rows of intermediate table
@@ -93322,30 +93359,29 @@
93322 93359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nHidden = 0; /* Number of hidden columns if TABLE is virtual */
93323 93360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDataCur = 0; /* VDBE cursor that is the main data repository */
93324 93361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iIdxCur = 0; /* First index cursor */
93325 93362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ipkColumn = -1; /* Column that is the INTEGER PRIMARY KEY */
93326 93363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int endOfLoop; /* Label for the end of the insertion loop */
93327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int useTempTable = 0; /* Store SELECT results in intermediate table */
93328 93364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int srcTab = 0; /* Data comes from this temporary cursor if >=0 */
93329 93365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrInsTop = 0; /* Jump to label "D" */
93330 93366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrCont = 0; /* Top of insert loop. Label "C" in templates 3 and 4 */
93331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrSelect = 0; /* Address of coroutine that implements the SELECT */
93332 93367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest dest; /* Destination for SELECT on rhs of INSERT */
93333 93368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDb; /* Index of database holding TABLE */
93334 93369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Db *pDb; /* The database containing table being inserted into */
93335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int appendFlag = 0; /* True if the insert is likely to be an append */
93336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int withoutRowid; /* 0 for normal table. 1 for WITHOUT ROWID table */
93370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 useTempTable = 0; /* Store SELECT results in intermediate table */
93371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 appendFlag = 0; /* True if the insert is likely to be an append */
93372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 withoutRowid; /* 0 for normal table. 1 for WITHOUT ROWID table */
93373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bIdListInOrder = 1; /* True if IDLIST is in table order */
93337 93374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pList = 0; /* List of VALUES() to be inserted */
93338 93375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93339 93376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Register allocations */
93340 93377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regFromSelect = 0;/* Base register for data coming from SELECT */
93341 93378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regAutoinc = 0; /* Register holding the AUTOINCREMENT counter */
93342 93379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRowCount = 0; /* Memory cell used for the row counter */
93343 93380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regIns; /* Block of regs holding rowid+data being inserted */
93344 93381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRowid; /* registers holding insert rowid */
93345 93382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regData; /* register holding first column to insert */
93346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int regEof = 0; /* Register recording end of SELECT data */
93347 93383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *aRegIdx = 0; /* One register allocated to each index */
93348 93384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93349 93385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_TRIGGER
93350 93386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isView; /* True if attempting to insert into a view */
93351 93387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Trigger *pTrigger; /* List of triggers on pTab, if required */
@@ -93443,26 +93479,86 @@
93443 93479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93444 93480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If this is an AUTOINCREMENT table, look up the sequence number in the
93445 93481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite_sequence table and store it in memory cell regAutoinc.
93446 93482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93447 93483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regAutoinc = autoIncBegin(pParse, iDb, pTab);
93484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
93485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Allocate registers for holding the rowid of the new row,
93486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the content of the new row, and the assemblied row record.
93487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
93488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regRowid = regIns = pParse->nMem+1;
93489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->nMem += pTab->nCol + 1;
93490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( IsVirtual(pTab) ){
93491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regRowid++;
93492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->nMem++;
93493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regData = regRowid+1;
93495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
93496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If the INSERT statement included an IDLIST term, then make sure
93497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** all elements of the IDLIST really are columns of the table and
93498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** remember the column indices.
93499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
93500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the table has an INTEGER PRIMARY KEY column and that column
93501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is named in the IDLIST, then record in the ipkColumn variable
93502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the index into IDLIST of the primary key column. ipkColumn is
93503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the index of the primary key as it appears in IDLIST, not as
93504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is appears in the original table. (The index of the INTEGER
93505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** PRIMARY KEY in the original table is pTab->iPKey.)
93506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
93507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pColumn ){
93508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<pColumn->nId; i++){
93509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pColumn->a[i].idx = -1;
93510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<pColumn->nId; i++){
93512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(j=0; j<pTab->nCol; j++){
93513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3StrICmp(pColumn->a[i].zName, pTab->aCol[j].zName)==0 ){
93514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pColumn->a[i].idx = j;
93515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i!=j ) bIdListInOrder = 0;
93516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( j==pTab->iPKey ){
93517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ipkColumn = i; assert( !withoutRowid );
93518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
93520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( j>=pTab->nCol ){
93523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3IsRowid(pColumn->a[i].zName) && !withoutRowid ){
93524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ipkColumn = i;
93525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
93526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ErrorMsg(pParse, "table %S has no column named %s",
93527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTabList, 0, pColumn->a[i].zName);
93528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->checkSchema = 1;
93529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto insert_cleanup;
93530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93448 93534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93449 93535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Figure out how many columns of data are supplied. If the data
93450 93536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is coming from a SELECT statement, then generate a co-routine that
93451 93537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** produces a single row of the SELECT on each invocation. The
93452 93538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** co-routine is the common header to the 3rd and 4th templates.
93453 93539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93454 93540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSelect ){
93455 93541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Data is coming from a SELECT. Generate a co-routine to run the SELECT */
93456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc = sqlite3CodeCoroutine(pParse, pSelect, &dest);
93457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc ) goto insert_cleanup;
93542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int regYield; /* Register holding co-routine entry-point */
93543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrTop; /* Top of the co-routine */
93544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc; /* Result code */
93458 93545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regEof = dest.iSDParm + 1;
93546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regYield = ++pParse->nMem;
93547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrTop = sqlite3VdbeCurrentAddr(v) + 1;
93548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_InitCoroutine, regYield, 0, addrTop);
93549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3SelectDestInit(&dest, SRT_Coroutine, regYield);
93550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dest.iSdst = bIdListInOrder ? regData : 0;
93551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dest.nSdst = pTab->nCol;
93552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3Select(pParse, pSelect, &dest);
93460 93553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regFromSelect = dest.iSdst;
93554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->nErr==0 || rc );
93555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc || db->mallocFailed ) goto insert_cleanup;
93556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_EndCoroutine, regYield);
93557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrTop - 1); /* label B: */
93461 93558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSelect->pEList );
93462 93559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nColumn = pSelect->pEList->nExpr;
93463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( dest.nSdst==nColumn );
93464 93560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93465 93561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Set useTempTable to TRUE if the result of the SELECT statement
93466 93562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** should be written into a temporary table (template 4). Set to
93467 93563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** FALSE if each output row of the SELECT can be written directly into
93468 93564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the destination table (template 3).
@@ -93469,42 +93565,39 @@
93469 93565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93470 93566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A temp table must be used if the table being updated is also one
93471 93567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the tables being read by the SELECT statement. Also use a
93472 93568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** temp table in the case of row triggers.
93473 93569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTrigger || readsTable(pParse, addrSelect, iDb, pTab) ){
93570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTrigger || readsTable(pParse, iDb, pTab) ){
93475 93571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
useTempTable = 1;
93476 93572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93477 93573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93478 93574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( useTempTable ){
93479 93575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Invoke the coroutine to extract information from the SELECT
93480 93576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and add it to a transient table srcTab. The code generated
93481 93577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** here is from the 4th template:
93482 93578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93483 93579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** B: open temp table
93484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** L: yield X
93485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if EOF goto M
93580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** L: yield X, goto M at EOF
93486 93581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** insert row from R..R+n into temp table
93487 93582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** goto L
93488 93583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** M: ...
93489 93584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93490 93585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRec; /* Register to hold packed record */
93491 93586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regTempRowid; /* Register to hold temp table ROWID */
93492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrTop; /* Label "L" */
93493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrIf; /* Address of jump to M */
93587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrL; /* Label "L" */
93494 93588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93495 93589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
srcTab = pParse->nTab++;
93496 93590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regRec = sqlite3GetTempReg(pParse);
93497 93591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regTempRowid = sqlite3GetTempReg(pParse);
93498 93592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_OpenEphemeral, srcTab, nColumn);
93499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrTop = sqlite3VdbeAddOp1(v, OP_Yield, dest.iSDParm);
93500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrIf = sqlite3VdbeAddOp1(v, OP_If, regEof);
93593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrL = sqlite3VdbeAddOp1(v, OP_Yield, dest.iSDParm); VdbeCoverage(v);
93501 93594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_MakeRecord, regFromSelect, nColumn, regRec);
93502 93595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_NewRowid, srcTab, regTempRowid);
93503 93596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Insert, srcTab, regRec, regTempRowid);
93504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Goto, 0, addrTop);
93505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, addrIf);
93597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, addrL);
93598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrL);
93506 93599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regRec);
93507 93600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regTempRowid);
93508 93601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93509 93602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93510 93603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This is the case if the data for the INSERT is coming from a VALUES
@@ -93520,10 +93613,18 @@
93520 93613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ResolveExprNames(&sNC, pList->a[i].pExpr) ){
93521 93614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto insert_cleanup;
93522 93615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93523 93616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93524 93617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
93619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If there is no IDLIST term but the table has an integer primary
93620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** key, the set the ipkColumn variable to the integer primary key
93621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** column index in the original table definition.
93622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
93623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pColumn==0 && nColumn>0 ){
93624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ipkColumn = pTab->iPKey;
93625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93525 93626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93526 93627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make sure the number of columns in the source data matches the number
93527 93628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of columns to be inserted into the table.
93528 93629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93529 93630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IsVirtual(pTab) ){
@@ -93539,56 +93640,10 @@
93539 93640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93540 93641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pColumn!=0 && nColumn!=pColumn->nId ){
93541 93642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "%d values for %d columns", nColumn, pColumn->nId);
93542 93643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto insert_cleanup;
93543 93644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
93545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If the INSERT statement included an IDLIST term, then make sure
93546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** all elements of the IDLIST really are columns of the table and
93547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** remember the column indices.
93548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
93549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the table has an INTEGER PRIMARY KEY column and that column
93550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is named in the IDLIST, then record in the ipkColumn variable
93551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the index into IDLIST of the primary key column. ipkColumn is
93552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the index of the primary key as it appears in IDLIST, not as
93553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is appears in the original table. (The index of the INTEGER
93554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** PRIMARY KEY in the original table is pTab->iPKey.)
93555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
93556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pColumn ){
93557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<pColumn->nId; i++){
93558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pColumn->a[i].idx = -1;
93559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<pColumn->nId; i++){
93561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(j=0; j<pTab->nCol; j++){
93562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3StrICmp(pColumn->a[i].zName, pTab->aCol[j].zName)==0 ){
93563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pColumn->a[i].idx = j;
93564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( j==pTab->iPKey ){
93565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ipkColumn = i; assert( !withoutRowid );
93566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
93568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( j>=pTab->nCol ){
93571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3IsRowid(pColumn->a[i].zName) && !withoutRowid ){
93572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ipkColumn = i;
93573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
93574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ErrorMsg(pParse, "table %S has no column named %s",
93575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTabList, 0, pColumn->a[i].zName);
93576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->checkSchema = 1;
93577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto insert_cleanup;
93578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
93583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If there is no IDLIST term but the table has an integer primary
93584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** key, the set the ipkColumn variable to the integer primary key
93585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** column index in the original table definition.
93586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
93587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pColumn==0 && nColumn>0 ){
93588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ipkColumn = pTab->iPKey;
93589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93590 93645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93591 93646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Initialize the count of rows to be inserted
93592 93647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93593 93648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->flags & SQLITE_CountRows ){
93594 93649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regRowCount = ++pParse->nMem;
@@ -93612,42 +93667,30 @@
93612 93667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This is the top of the main insertion loop */
93613 93668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( useTempTable ){
93614 93669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This block codes the top of loop only. The complete loop is the
93615 93670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** following pseudocode (template 4):
93616 93671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** rewind temp table
93672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** rewind temp table, if empty goto D
93618 93673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** C: loop over rows of intermediate table
93619 93674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** transfer values form intermediate table into <table>
93620 93675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** end loop
93621 93676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** D: ...
93622 93677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrInsTop = sqlite3VdbeAddOp1(v, OP_Rewind, srcTab);
93678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrInsTop = sqlite3VdbeAddOp1(v, OP_Rewind, srcTab); VdbeCoverage(v);
93624 93679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrCont = sqlite3VdbeCurrentAddr(v);
93625 93680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pSelect ){
93626 93681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This block codes the top of loop only. The complete loop is the
93627 93682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** following pseudocode (template 3):
93628 93683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** C: yield X
93630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if EOF goto D
93684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** C: yield X, at EOF goto D
93631 93685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** insert the select result into <table> from R..R+n
93632 93686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** goto C
93633 93687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** D: ...
93634 93688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrCont = sqlite3VdbeAddOp1(v, OP_Yield, dest.iSDParm);
93636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrInsTop = sqlite3VdbeAddOp1(v, OP_If, regEof);
93637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
93639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Allocate registers for holding the rowid of the new row,
93640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the content of the new row, and the assemblied row record.
93641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
93642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regRowid = regIns = pParse->nMem+1;
93643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->nMem += pTab->nCol + 1;
93644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( IsVirtual(pTab) ){
93645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regRowid++;
93646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->nMem++;
93647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
93648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regData = regRowid+1;
93689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrInsTop = addrCont = sqlite3VdbeAddOp1(v, OP_Yield, dest.iSDParm);
93690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
93691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93649 93692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93650 93693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Run the BEFORE and INSTEAD OF triggers, if there are any
93651 93694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93652 93695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
endOfLoop = sqlite3VdbeMakeLabel(v);
93653 93696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tmask & TRIGGER_BEFORE ){
@@ -93668,14 +93711,14 @@
93668 93711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, srcTab, ipkColumn, regCols);
93669 93712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93670 93713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSelect==0 ); /* Otherwise useTempTable is true */
93671 93714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pList->a[ipkColumn].pExpr, regCols);
93672 93715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j1 = sqlite3VdbeAddOp1(v, OP_NotNull, regCols);
93716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ j1 = sqlite3VdbeAddOp1(v, OP_NotNull, regCols); VdbeCoverage(v);
93674 93717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, -1, regCols);
93675 93718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j1);
93676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_MustBeInt, regCols);
93719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_MustBeInt, regCols); VdbeCoverage(v);
93677 93720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93678 93721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93679 93722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Cannot have triggers on a virtual table. If it were possible,
93680 93723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this block would have to account for hidden column.
93681 93724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -93705,12 +93748,11 @@
93705 93748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** do not attempt any conversions before assembling the record.
93706 93749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If this is a real table, attempt conversions as required by the
93707 93750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table column affinities.
93708 93751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93709 93752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !isView ){
93710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Affinity, regCols+1, pTab->nCol);
93711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3TableAffinityStr(v, pTab);
93753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3TableAffinity(v, pTab, regCols+1);
93712 93754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93713 93755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93714 93756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Fire BEFORE or INSTEAD OF triggers */
93715 93757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodeRowTrigger(pParse, pTrigger, TK_INSERT, 0, TRIGGER_BEFORE,
93716 93758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab, regCols-pTab->nCol-1, onError, endOfLoop);
@@ -93728,11 +93770,11 @@
93728 93770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93729 93771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ipkColumn>=0 ){
93730 93772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( useTempTable ){
93731 93773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, srcTab, ipkColumn, regRowid);
93732 93774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pSelect ){
93733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_SCopy, regFromSelect+ipkColumn, regRowid);
93775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Copy, regFromSelect+ipkColumn, regRowid);
93734 93776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93735 93777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp;
93736 93778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pList->a[ipkColumn].pExpr, regRowid);
93737 93779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp = sqlite3VdbeGetOp(v, -1);
93738 93780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pOp) && pOp->opcode==OP_Null && !IsVirtual(pTab) ){
@@ -93747,18 +93789,18 @@
93747 93789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to generate a unique primary key value.
93748 93790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93749 93791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !appendFlag ){
93750 93792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j1;
93751 93793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !IsVirtual(pTab) ){
93752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j1 = sqlite3VdbeAddOp1(v, OP_NotNull, regRowid);
93794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ j1 = sqlite3VdbeAddOp1(v, OP_NotNull, regRowid); VdbeCoverage(v);
93753 93795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_NewRowid, iDataCur, regRowid, regAutoinc);
93754 93796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j1);
93755 93797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93756 93798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j1 = sqlite3VdbeCurrentAddr(v);
93757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IsNull, regRowid, j1+2);
93799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, regRowid, j1+2); VdbeCoverage(v);
93758 93800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_MustBeInt, regRowid);
93801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_MustBeInt, regRowid); VdbeCoverage(v);
93760 93802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93761 93803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( IsVirtual(pTab) || withoutRowid ){
93762 93804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Null, 0, regRowid);
93763 93805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93764 93806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_NewRowid, iDataCur, regRowid, regAutoinc);
@@ -93774,12 +93816,13 @@
93774 93816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRegStore = regRowid+1+i;
93775 93817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i==pTab->iPKey ){
93776 93818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The value of the INTEGER PRIMARY KEY column is always a NULL.
93777 93819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Whenever this column is read, the rowid will be substituted
93778 93820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in its place. Hence, fill this column with a NULL to avoid
93779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** taking up data space with information that will never be used. */
93780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Null, 0, iRegStore);
93821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** taking up data space with information that will never be used.
93822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** As there may be shallow copies of this value, make it a soft-NULL */
93823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_SoftNull, iRegStore);
93781 93824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
93782 93825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93783 93826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pColumn==0 ){
93784 93827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IsHiddenColumn(&pTab->aCol[i]) ){
93785 93828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( IsVirtual(pTab) );
@@ -93792,15 +93835,17 @@
93792 93835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<pColumn->nId; j++){
93793 93836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pColumn->a[j].idx==i ) break;
93794 93837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93795 93838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93796 93839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j<0 || nColumn==0 || (pColumn && j>=pColumn->nId) ){
93797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprCode(pParse, pTab->aCol[i].pDflt, iRegStore);
93840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprCodeFactorable(pParse, pTab->aCol[i].pDflt, iRegStore);
93798 93841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( useTempTable ){
93799 93842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, srcTab, j, iRegStore);
93800 93843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pSelect ){
93801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_SCopy, regFromSelect+j, iRegStore);
93844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( regFromSelect!=regData ){
93845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_SCopy, regFromSelect+j, iRegStore);
93846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
93802 93847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93803 93848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pList->a[j].pExpr, iRegStore);
93804 93849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93805 93850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93806 93851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -93842,11 +93887,11 @@
93842 93887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The bottom of the main insertion loop, if the data source
93843 93888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is a SELECT statement.
93844 93889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93845 93890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, endOfLoop);
93846 93891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( useTempTable ){
93847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, srcTab, addrCont);
93892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, srcTab, addrCont); VdbeCoverage(v);
93848 93893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrInsTop);
93849 93894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Close, srcTab);
93850 93895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pSelect ){
93851 93896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrCont);
93852 93897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrInsTop);
@@ -94009,10 +94054,11 @@
94009 94054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int seenReplace = 0; /* True if REPLACE is used to resolve INT PK conflict */
94010 94055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nPkField; /* Number of fields in PRIMARY KEY. 1 for ROWID tables */
94011 94056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ipkTop = 0; /* Top of the rowid change constraint check */
94012 94057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ipkBottom = 0; /* Bottom of the rowid change constraint check */
94013 94058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 isUpdate; /* True if this is an UPDATE operation */
94059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bAffinityDone = 0; /* True if the OP_Affinity operation has been run */
94014 94060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRowid = -1; /* Register holding ROWID value */
94015 94061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94016 94062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isUpdate = regOldData!=0;
94017 94063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db = pParse->db;
94018 94064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = sqlite3GetVdbe(pParse);
@@ -94063,19 +94109,21 @@
94063 94109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zMsg = sqlite3MPrintf(db, "%s.%s", pTab->zName,
94064 94110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->aCol[i].zName);
94065 94111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_HaltIfNull, SQLITE_CONSTRAINT_NOTNULL, onError,
94066 94112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regNewData+1+i, zMsg, P4_DYNAMIC);
94067 94113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, P5_ConstraintNotNull);
94114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
94068 94115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
94069 94116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94070 94117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OE_Ignore: {
94071 94118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IsNull, regNewData+1+i, ignoreDest);
94119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
94072 94120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
94073 94121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94074 94122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: {
94075 94123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( onError==OE_Replace );
94076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j1 = sqlite3VdbeAddOp1(v, OP_NotNull, regNewData+1+i);
94124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ j1 = sqlite3VdbeAddOp1(v, OP_NotNull, regNewData+1+i); VdbeCoverage(v);
94077 94125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pTab->aCol[i].pDflt, regNewData+1+i);
94078 94126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j1);
94079 94127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
94080 94128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94081 94129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -94123,10 +94171,12 @@
94123 94171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isUpdate ){
94124 94172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pkChng!=0 does not mean that the rowid has change, only that
94125 94173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it might have changed. Skip the conflict logic below if the rowid
94126 94174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is unchanged. */
94127 94175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Eq, regNewData, addrRowidOk, regOldData);
94176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP5(v, SQLITE_NOTNULL);
94177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
94128 94178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94129 94179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94130 94180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the response to a rowid conflict is REPLACE but the response
94131 94181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to some other UNIQUE constraint is FAIL or IGNORE, then we need
94132 94182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to defer the running of the rowid conflict checking until after
@@ -94142,10 +94192,11 @@
94142 94192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94143 94193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94144 94194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check to see if the new rowid already exists in the table. Skip
94145 94195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the following conflict logic if it does not. */
94146 94196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_NotExists, iDataCur, addrRowidOk, regNewData);
94197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
94147 94198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94148 94199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code that deals with a rowid collision */
94149 94200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( onError ){
94150 94201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: {
94151 94202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onError = OE_Abort;
@@ -94220,10 +94271,14 @@
94220 94271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regR; /* Range of registers holding conflicting PK */
94221 94272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iThisCur; /* Cursor for this UNIQUE index */
94222 94273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrUniqueOk; /* Jump here if the UNIQUE constraint is satisfied */
94223 94274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94224 94275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aRegIdx[ix]==0 ) continue; /* Skip indices that do not change */
94276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bAffinityDone==0 ){
94277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3TableAffinity(v, pTab, regNewData+1);
94278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bAffinityDone = 1;
94279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
94225 94280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iThisCur = iIdxCur+ix;
94226 94281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrUniqueOk = sqlite3VdbeMakeLabel(v);
94227 94282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94228 94283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Skip partial indices for which the WHERE clause is not true */
94229 94284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx->pPartIdxWhere ){
@@ -94250,11 +94305,10 @@
94250 94305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94251 94306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SCopy, x, regIdx+i);
94252 94307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "%s", iField<0 ? "rowid" : pTab->aCol[iField].zName));
94253 94308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94254 94309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_MakeRecord, regIdx, pIdx->nColumn, aRegIdx[ix]);
94255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), P4_TRANSIENT);
94256 94310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "for %s", pIdx->zName));
94257 94311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheAffinityChange(pParse, regIdx, pIdx->nColumn);
94258 94312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94259 94313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* In an UPDATE operation, if this index is the PRIMARY KEY index
94260 94314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of a WITHOUT ROWID table and there has been no change the
@@ -94278,11 +94332,11 @@
94278 94332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onError = OE_Abort;
94279 94333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94280 94334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94281 94335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check to see if the new index entry will be unique */
94282 94336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NoConflict, iThisCur, addrUniqueOk,
94283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regIdx, pIdx->nKeyCol);
94337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regIdx, pIdx->nKeyCol); VdbeCoverage(v);
94284 94338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94285 94339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to handle collisions */
94286 94340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regR = (pIdx==pPk) ? regIdx : sqlite3GetTempRange(pParse, nPkField);
94287 94341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isUpdate || onError==OE_Replace ){
94288 94342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( HasRowid(pTab) ){
@@ -94289,10 +94343,12 @@
94289 94343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxRowid, iThisCur, regR);
94290 94344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Conflict only if the rowid of the existing index entry
94291 94345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is different from old-rowid */
94292 94346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isUpdate ){
94293 94347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Eq, regR, addrUniqueOk, regOldData);
94348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP5(v, SQLITE_NOTNULL);
94349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
94294 94350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94295 94351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
94296 94352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int x;
94297 94353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Extract the PRIMARY KEY from the end of the index entry and
94298 94354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** store it in registers regR..regR+nPk-1 */
@@ -94324,10 +94380,13 @@
94324 94380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = OP_Eq;
94325 94381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94326 94382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, op,
94327 94383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regOldData+1+x, addrJump, regCmp+i, p4, P4_COLLSEQ
94328 94384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
94385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP5(v, SQLITE_NOTNULL);
94386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==OP_Eq);
94387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==OP_Ne);
94329 94388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94330 94389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94331 94390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94332 94391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94333 94392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -94395,18 +94454,21 @@
94395 94454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx; /* An index being inserted or updated */
94396 94455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 pik_flags; /* flag values passed to the btree insert */
94397 94456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regData; /* Content registers (after the rowid) */
94398 94457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRec; /* Register holding assemblied record for the table */
94399 94458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; /* Loop counter */
94459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bAffinityDone = 0; /* True if OP_Affinity has been run already */
94400 94460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94401 94461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = sqlite3GetVdbe(pParse);
94402 94462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( v!=0 );
94403 94463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab->pSelect==0 ); /* This table is not a VIEW */
94404 94464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
94405 94465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aRegIdx[i]==0 ) continue;
94466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bAffinityDone = 1;
94406 94467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx->pPartIdxWhere ){
94407 94468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IsNull, aRegIdx[i], sqlite3VdbeCurrentAddr(v)+2);
94469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
94408 94470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94409 94471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxInsert, iIdxCur+i, aRegIdx[i]);
94410 94472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pik_flags = 0;
94411 94473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( useSeekResult ) pik_flags = OPFLAG_USESEEKRESULT;
94412 94474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx->autoIndex==2 && !HasRowid(pTab) ){
@@ -94417,11 +94479,11 @@
94417 94479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94418 94480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !HasRowid(pTab) ) return;
94419 94481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regData = regNewData + 1;
94420 94482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regRec = sqlite3GetTempReg(pParse);
94421 94483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_MakeRecord, regData, pTab->nCol, regRec);
94422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3TableAffinityStr(v, pTab);
94484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !bAffinityDone ) sqlite3TableAffinity(v, pTab, 0);
94423 94485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheAffinityChange(pParse, regData, pTab->nCol);
94424 94486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nested ){
94425 94487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pik_flags = 0;
94426 94488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
94427 94489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pik_flags = OPFLAG_NCHANGE;
@@ -94786,20 +94848,21 @@
94786 94848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (2) The destination has a unique index. (The xfer optimization
94787 94849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is unable to test uniqueness.)
94788 94850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
94789 94851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3) onError is something other than OE_Abort and OE_Rollback.
94790 94852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
94791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr1 = sqlite3VdbeAddOp2(v, OP_Rewind, iDest, 0);
94853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr1 = sqlite3VdbeAddOp2(v, OP_Rewind, iDest, 0); VdbeCoverage(v);
94792 94854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
emptyDestTest = sqlite3VdbeAddOp2(v, OP_Goto, 0, 0);
94793 94855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
94794 94856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94795 94857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( HasRowid(pSrc) ){
94796 94858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTable(pParse, iSrc, iDbSrc, pSrc, OP_OpenRead);
94797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- emptySrcTest = sqlite3VdbeAddOp2(v, OP_Rewind, iSrc, 0);
94859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ emptySrcTest = sqlite3VdbeAddOp2(v, OP_Rewind, iSrc, 0); VdbeCoverage(v);
94798 94860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pDest->iPKey>=0 ){
94799 94861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr1 = sqlite3VdbeAddOp2(v, OP_Rowid, iSrc, regRowid);
94800 94862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr2 = sqlite3VdbeAddOp3(v, OP_NotExists, iDest, 0, regRowid);
94863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
94801 94864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RowidConstraint(pParse, onError, pDest);
94802 94865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr2);
94803 94866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
autoIncStep(pParse, regAutoinc, regRowid);
94804 94867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pDest->pIndex==0 ){
94805 94868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr1 = sqlite3VdbeAddOp2(v, OP_NewRowid, iDest, regRowid);
@@ -94809,11 +94872,11 @@
94809 94872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94810 94873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_RowData, iSrc, regData);
94811 94874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Insert, iDest, regData, regRowid);
94812 94875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_NCHANGE|OPFLAG_LASTROWID|OPFLAG_APPEND);
94813 94876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP4(v, -1, pDest->zName, 0);
94814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, iSrc, addr1);
94877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, iSrc, addr1); VdbeCoverage(v);
94815 94878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, iSrc, 0);
94816 94879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, iDest, 0);
94817 94880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
94818 94881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableLock(pParse, iDbDest, pDest->tnum, 1, pDest->zName);
94819 94882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableLock(pParse, iDbSrc, pSrc->tnum, 0, pSrc->zName);
@@ -94828,19 +94891,19 @@
94828 94891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "%s", pSrcIdx->zName));
94829 94892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_OpenWrite, iDest, pDestIdx->tnum, iDbDest);
94830 94893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetP4KeyInfo(pParse, pDestIdx);
94831 94894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_BULKCSR);
94832 94895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "%s", pDestIdx->zName));
94833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr1 = sqlite3VdbeAddOp2(v, OP_Rewind, iSrc, 0);
94896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr1 = sqlite3VdbeAddOp2(v, OP_Rewind, iSrc, 0); VdbeCoverage(v);
94834 94897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_RowKey, iSrc, regData);
94835 94898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_IdxInsert, iDest, regData, 1);
94836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, iSrc, addr1+1);
94899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, iSrc, addr1+1); VdbeCoverage(v);
94837 94900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
94838 94901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, iSrc, 0);
94839 94902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, iDest, 0);
94840 94903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, emptySrcTest);
94904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( emptySrcTest ) sqlite3VdbeJumpHere(v, emptySrcTest);
94842 94905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regRowid);
94843 94906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regData);
94844 94907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( emptyDestTest ){
94845 94908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Halt, SQLITE_OK, 0);
94846 94909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, emptyDestTest);
@@ -97070,10 +97133,11 @@
97070 97133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is always on by default regardless of the sign of the default cache
97071 97134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** size. But continue to take the absolute value of the default cache
97072 97135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** size of historical compatibility.
97073 97136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
97074 97137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PragTyp_DEFAULT_CACHE_SIZE: {
97138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const int iLn = __LINE__+2;
97075 97139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const VdbeOpList getCacheSize[] = {
97076 97140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Transaction, 0, 0, 0}, /* 0 */
97077 97141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_ReadCookie, 0, 1, BTREE_DEFAULT_CACHE_SIZE}, /* 1 */
97078 97142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_IfPos, 1, 8, 0},
97079 97143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Integer, 0, 2, 0},
@@ -97087,11 +97151,11 @@
97087 97151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeUsesBtree(v, iDb);
97088 97152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !zRight ){
97089 97153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetNumCols(v, 1);
97090 97154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "cache_size", SQLITE_STATIC);
97091 97155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem += 2;
97092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = sqlite3VdbeAddOpList(v, ArraySize(getCacheSize), getCacheSize);
97156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr = sqlite3VdbeAddOpList(v, ArraySize(getCacheSize), getCacheSize,iLn);
97093 97157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, addr, iDb);
97094 97158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, addr+1, iDb);
97095 97159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, addr+6, SQLITE_DEFAULT_CACHE_SIZE);
97096 97160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
97097 97161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int size = sqlite3AbsInt32(sqlite3Atoi(zRight));
@@ -97332,20 +97396,21 @@
97332 97396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* When setting the auto_vacuum mode to either "full" or
97333 97397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "incremental", write the value of meta[6] in the database
97334 97398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** file. Before writing to meta[6], check that meta[3] indicates
97335 97399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that this really is an auto-vacuum capable database.
97336 97400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
97401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const int iLn = __LINE__+2;
97337 97402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const VdbeOpList setMeta6[] = {
97338 97403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Transaction, 0, 1, 0}, /* 0 */
97339 97404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_ReadCookie, 0, 1, BTREE_LARGEST_ROOT_PAGE},
97340 97405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_If, 1, 0, 0}, /* 2 */
97341 97406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Halt, SQLITE_OK, OE_Abort, 0}, /* 3 */
97342 97407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Integer, 0, 1, 0}, /* 4 */
97343 97408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_SetCookie, 0, BTREE_INCR_VACUUM, 1}, /* 5 */
97344 97409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
97345 97410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iAddr;
97346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iAddr = sqlite3VdbeAddOpList(v, ArraySize(setMeta6), setMeta6);
97411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iAddr = sqlite3VdbeAddOpList(v, ArraySize(setMeta6), setMeta6, iLn);
97347 97412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, iAddr, iDb);
97348 97413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, iAddr+1, iDb);
97349 97414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP2(v, iAddr+2, iAddr+4);
97350 97415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, iAddr+4, eAuto-1);
97351 97416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, iAddr+5, iDb);
@@ -97367,14 +97432,14 @@
97367 97432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRight==0 || !sqlite3GetInt32(zRight, &iLimit) || iLimit<=0 ){
97368 97433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iLimit = 0x7fffffff;
97369 97434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97370 97435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BeginWriteOperation(pParse, 0, iDb);
97371 97436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, iLimit, 1);
97372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = sqlite3VdbeAddOp1(v, OP_IncrVacuum, iDb);
97437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr = sqlite3VdbeAddOp1(v, OP_IncrVacuum, iDb); VdbeCoverage(v);
97373 97438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_ResultRow, 1);
97374 97439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AddImm, 1, -1);
97375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IfPos, 1, addr);
97440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IfPos, 1, addr); VdbeCoverage(v);
97376 97441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr);
97377 97442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
97378 97443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97379 97444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
97380 97445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -97941,11 +98006,11 @@
97941 98006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97942 98007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97943 98008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->nErr>0 || pFK==0 );
97944 98009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFK ) break;
97945 98010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nTab<i ) pParse->nTab = i;
97946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, 0);
98011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, 0); VdbeCoverage(v);
97947 98012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1, pFK=pTab->pFKey; pFK; i++, pFK=pFK->pNextFrom){
97948 98013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParent = sqlite3FindTable(db, pFK->zTo, zDb);
97949 98014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = 0;
97950 98015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aiCols = 0;
97951 98016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParent ){
@@ -97957,30 +98022,30 @@
97957 98022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iKey = pFK->aCol[0].iFrom;
97958 98023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iKey>=0 && iKey<pTab->nCol );
97959 98024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iKey!=pTab->iPKey ){
97960 98025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, 0, iKey, regRow);
97961 98026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ColumnDefault(v, pTab, iKey, regRow);
97962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IsNull, regRow, addrOk);
97963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_MustBeInt, regRow,
97964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeCurrentAddr(v)+3);
98027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, regRow, addrOk); VdbeCoverage(v);
98028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_MustBeInt, regRow,
98029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeCurrentAddr(v)+3); VdbeCoverage(v);
97965 98030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
97966 98031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Rowid, 0, regRow);
97967 98032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_NotExists, i, 0, regRow);
98033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_NotExists, i, 0, regRow); VdbeCoverage(v);
97969 98034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrOk);
97970 98035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, sqlite3VdbeCurrentAddr(v)-2);
97971 98036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
97972 98037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<pFK->nCol; j++){
97973 98038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeGetColumnOfTable(v, pTab, 0,
97974 98039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aiCols ? aiCols[j] : pFK->aCol[j].iFrom, regRow+j);
97975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IsNull, regRow+j, addrOk);
98040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, regRow+j, addrOk); VdbeCoverage(v);
97976 98041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97977 98042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParent ){
97978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_MakeRecord, regRow, pFK->nCol, regKey);
97979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP4(v, -1,
97980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3IndexAffinityStr(v,pIdx), P4_TRANSIENT);
98043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_MakeRecord, regRow, pFK->nCol, regKey,
98044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3IndexAffinityStr(v,pIdx), pFK->nCol);
97981 98045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_Found, i, addrOk, regKey, 0);
98046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
97982 98047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97983 98048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97984 98049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Rowid, 0, regResult+1);
97985 98050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, regResult+2, 0,
97986 98051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFK->zTo, P4_TRANSIENT);
@@ -97987,11 +98052,11 @@
97987 98052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, i-1, regResult+3);
97988 98053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_ResultRow, regResult, 4);
97989 98054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrOk);
97990 98055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, aiCols);
97991 98056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, 0, addrTop+1);
98057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, 0, addrTop+1); VdbeCoverage(v);
97993 98058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrTop);
97994 98059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97995 98060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97996 98061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
97997 98062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_TRIGGER) */
@@ -98034,10 +98099,11 @@
98034 98099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
98035 98100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code that appears at the end of the integrity check. If no error
98036 98101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** messages have been generated, output OK. Otherwise output the
98037 98102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** error message
98038 98103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
98104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const int iLn = __LINE__+2;
98039 98105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const VdbeOpList endCode[] = {
98040 98106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_AddImm, 1, 0, 0}, /* 0 */
98041 98107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_IfNeg, 1, 0, 0}, /* 1 */
98042 98108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_String8, 0, 3, 0}, /* 2 */
98043 98109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_ResultRow, 3, 1, 0},
@@ -98082,10 +98148,11 @@
98082 98148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( OMIT_TEMPDB && i==1 ) continue;
98083 98149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDb>=0 && i!=iDb ) continue;
98084 98150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
98085 98151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodeVerifySchema(pParse, i);
98086 98152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp1(v, OP_IfPos, 1); /* Halt if out of errors */
98153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
98087 98154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Halt, 0, 0);
98088 98155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr);
98089 98156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
98090 98157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do an integrity check of the B-Tree
98091 98158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -98113,11 +98180,11 @@
98113 98180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = MAX( pParse->nMem, cnt+8 );
98114 98181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
98115 98182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do the b-tree integrity checks */
98116 98183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_IntegrityCk, 2, cnt, 1);
98117 98184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, (u8)i);
98118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = sqlite3VdbeAddOp1(v, OP_IsNull, 2);
98185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr = sqlite3VdbeAddOp1(v, OP_IsNull, 2); VdbeCoverage(v);
98119 98186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0,
98120 98187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MPrintf(db, "*** in database %s ***\n", db->aDb[i].zName),
98121 98188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
P4_DYNAMIC);
98122 98189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Move, 2, 4);
98123 98190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Concat, 4, 3, 2);
@@ -98135,10 +98202,11 @@
98135 98202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r1 = -1;
98136 98203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
98137 98204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->pIndex==0 ) continue;
98138 98205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
98139 98206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp1(v, OP_IfPos, 1); /* Stop if out of errors */
98207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
98140 98208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Halt, 0, 0);
98141 98209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr);
98142 98210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheClear(pParse);
98143 98211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenRead,
98144 98212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1, 0, &iDataCur, &iIdxCur);
@@ -98145,57 +98213,58 @@
98145 98213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, 7);
98146 98214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){
98147 98215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, 8+j); /* index entries counter */
98148 98216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98149 98217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = MAX(pParse->nMem, 8+j);
98150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Rewind, iDataCur, 0);
98218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Rewind, iDataCur, 0); VdbeCoverage(v);
98151 98219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
loopTop = sqlite3VdbeAddOp2(v, OP_AddImm, 7, 1);
98152 98220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){
98153 98221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int jmp2, jmp3, jmp4;
98154 98222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPk==pIdx ) continue;
98155 98223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3GenerateIndexKey(pParse, pIdx, iDataCur, 0, 0, &jmp3,
98156 98224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrior, r1);
98157 98225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrior = pIdx;
98158 98226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AddImm, 8+j, 1); /* increment entry count */
98159 98227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jmp2 = sqlite3VdbeAddOp4Int(v, OP_Found, iIdxCur+j, 0, r1,
98160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIdx->nColumn);
98228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIdx->nColumn); VdbeCoverage(v);
98161 98229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AddImm, 1, -1); /* Decrement error limit */
98162 98230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, "row ", P4_STATIC);
98163 98231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Concat, 7, 3, 3);
98164 98232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, 4, 0, " missing from index ",
98165 98233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
P4_STATIC);
98166 98234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Concat, 4, 3, 3);
98167 98235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, 4, 0, pIdx->zName, P4_TRANSIENT);
98168 98236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Concat, 4, 3, 3);
98169 98237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_ResultRow, 3, 1);
98170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jmp4 = sqlite3VdbeAddOp1(v, OP_IfPos, 1);
98238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jmp4 = sqlite3VdbeAddOp1(v, OP_IfPos, 1); VdbeCoverage(v);
98171 98239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp0(v, OP_Halt);
98172 98240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, jmp4);
98173 98241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, jmp2);
98174 98242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, jmp3);
98175 98243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, iDataCur, loopTop);
98244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, iDataCur, loopTop); VdbeCoverage(v);
98177 98245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, loopTop-1);
98178 98246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_BTREECOUNT
98179 98247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, 2, 0,
98180 98248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"wrong # of entries in index ", P4_STATIC);
98181 98249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){
98182 98250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPk==pIdx ) continue;
98183 98251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeCurrentAddr(v);
98184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IfPos, 1, addr+2);
98252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IfPos, 1, addr+2); VdbeCoverage(v);
98185 98253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Halt, 0, 0);
98186 98254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Count, iIdxCur+j, 3);
98187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Eq, 8+j, addr+8, 3);
98255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Eq, 8+j, addr+8, 3); VdbeCoverage(v);
98256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP5(v, SQLITE_NOTNULL);
98188 98257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AddImm, 1, -1);
98189 98258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, pIdx->zName, P4_TRANSIENT);
98190 98259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Concat, 3, 2, 7);
98191 98260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_ResultRow, 7, 1);
98192 98261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98193 98262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_BTREECOUNT */
98194 98263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98195 98264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = sqlite3VdbeAddOpList(v, ArraySize(endCode), endCode);
98265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr = sqlite3VdbeAddOpList(v, ArraySize(endCode), endCode, iLn);
98197 98266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP2(v, addr, -mxErr);
98198 98267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr+1);
98199 98268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP4(v, addr+2, "ok", P4_STATIC);
98200 98269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98201 98270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -98329,11 +98398,11 @@
98329 98398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const VdbeOpList setCookie[] = {
98330 98399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Transaction, 0, 1, 0}, /* 0 */
98331 98400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Integer, 0, 1, 0}, /* 1 */
98332 98401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_SetCookie, 0, 0, 1}, /* 2 */
98333 98402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
98334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addr = sqlite3VdbeAddOpList(v, ArraySize(setCookie), setCookie);
98403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addr = sqlite3VdbeAddOpList(v, ArraySize(setCookie), setCookie, 0);
98335 98404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, addr, iDb);
98336 98405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, addr+1, sqlite3Atoi(zRight));
98337 98406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, addr+2, iDb);
98338 98407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP2(v, addr+2, iCookie);
98339 98408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -98341,11 +98410,11 @@
98341 98410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const VdbeOpList readCookie[] = {
98342 98411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Transaction, 0, 0, 0}, /* 0 */
98343 98412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_ReadCookie, 0, 1, 0}, /* 1 */
98344 98413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_ResultRow, 1, 1, 0}
98345 98414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
98346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addr = sqlite3VdbeAddOpList(v, ArraySize(readCookie), readCookie);
98415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addr = sqlite3VdbeAddOpList(v, ArraySize(readCookie), readCookie, 0);
98347 98416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, addr, iDb);
98348 98417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, addr+1, iDb);
98349 98418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP3(v, addr+1, iCookie);
98350 98419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetNumCols(v, 1);
98351 98420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, zLeft, SQLITE_TRANSIENT);
@@ -99547,10 +99616,18 @@
99547 99616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
99548 99617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
clearSelect(db, p);
99549 99618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, p);
99550 99619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99551 99620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
99622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
99623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return a pointer to the right-most SELECT statement in a compound.
99624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
99625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static Select *findRightmost(Select *p){
99626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( p->pNext ) p = p->pNext;
99627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return p;
99628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
99552 99629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
99553 99630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
99554 99631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Given 1 to 3 identifiers preceding the JOIN keyword, determine the
99555 99632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** type of join. Return an integer constant that expresses that type
99556 99633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in terms of the following bit values:
@@ -99886,11 +99963,11 @@
99886 99963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSelect->iOffset ){
99887 99964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iLimit = pSelect->iOffset+1;
99888 99965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
99889 99966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iLimit = pSelect->iLimit;
99890 99967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr1 = sqlite3VdbeAddOp1(v, OP_IfZero, iLimit);
99968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr1 = sqlite3VdbeAddOp1(v, OP_IfZero, iLimit); VdbeCoverage(v);
99892 99969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AddImm, iLimit, -1);
99893 99970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr2 = sqlite3VdbeAddOp0(v, OP_Goto);
99894 99971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
99895 99972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Last, pOrderBy->iECursor);
99896 99973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Delete, pOrderBy->iECursor);
@@ -99907,11 +99984,11 @@
99907 99984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iContinue /* Jump here to skip the current record */
99908 99985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
99909 99986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOffset>0 && iContinue!=0 ){
99910 99987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addr;
99911 99988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AddImm, iOffset, -1);
99912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = sqlite3VdbeAddOp1(v, OP_IfNeg, iOffset);
99989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr = sqlite3VdbeAddOp1(v, OP_IfNeg, iOffset); VdbeCoverage(v);
99913 99990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, iContinue);
99914 99991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "skip OFFSET records"));
99915 99992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr);
99916 99993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99917 99994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -99935,11 +100012,11 @@
99935 100012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v;
99936 100013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r1;
99937 100014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
99938 100015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = pParse->pVdbe;
99939 100016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3GetTempReg(pParse);
99940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4Int(v, OP_Found, iTab, addrRepeat, iMem, N);
100017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4Int(v, OP_Found, iTab, addrRepeat, iMem, N); VdbeCoverage(v);
99941 100018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_MakeRecord, iMem, N, r1);
99942 100019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxInsert, iTab, r1);
99943 100020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, r1);
99944 100021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99945 100022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -100016,17 +100093,23 @@
100016 100093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100017 100094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100018 100095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Pull the requested columns.
100019 100096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
100020 100097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nResultCol = pEList->nExpr;
100098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
100021 100099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pDest->iSdst==0 ){
100022 100100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDest->iSdst = pParse->nMem+1;
100023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pDest->nSdst = nResultCol;
100101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->nMem += nResultCol;
100102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pDest->iSdst+nResultCol > pParse->nMem ){
100103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This is an error condition that can result, for example, when a SELECT
100104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** on the right-hand side of an INSERT contains more result columns than
100105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** there are columns in the table on the left. The error will be caught
100106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and reported later. But we need to make sure enough memory is allocated
100107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to avoid other spurious errors in the meantime. */
100024 100108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem += nResultCol;
100025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
100026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pDest->nSdst==nResultCol );
100027 100109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pDest->nSdst = nResultCol;
100028 100111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regResult = pDest->iSdst;
100029 100112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( srcTab>=0 ){
100030 100113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nResultCol; i++){
100031 100114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, srcTab, i, regResult+i);
100032 100115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "%s", pEList->a[i].zName));
@@ -100069,13 +100152,15 @@
100069 100152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iJump = sqlite3VdbeCurrentAddr(v) + nResultCol;
100070 100153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nResultCol; i++){
100071 100154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CollSeq *pColl = sqlite3ExprCollSeq(pParse, pEList->a[i].pExpr);
100072 100155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i<nResultCol-1 ){
100073 100156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Ne, regResult+i, iJump, regPrev+i);
100157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
100074 100158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
100075 100159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Eq, regResult+i, iContinue, regPrev+i);
100076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
100160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
100161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
100077 100162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP4(v, -1, (const char *)pColl, P4_COLLSEQ);
100078 100163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_NULLEQ);
100079 100164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100080 100165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3VdbeCurrentAddr(v)==iJump );
100081 100166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Copy, regResult, regPrev, nResultCol-1);
@@ -100137,11 +100222,11 @@
100137 100222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on an ephemeral index. If the current row is already present
100138 100223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the index, do not write it to the output. If not, add the
100139 100224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** current row to the index and proceed with writing it to the
100140 100225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** output table as well. */
100141 100226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addr = sqlite3VdbeCurrentAddr(v) + 4;
100142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4Int(v, OP_Found, iParm+1, addr, r1, 0);
100227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4Int(v, OP_Found, iParm+1, addr, r1, 0); VdbeCoverage(v);
100143 100228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxInsert, iParm+1, r1);
100144 100229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrderBy==0 );
100145 100230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100146 100231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
100147 100232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrderBy ){
@@ -100204,16 +100289,12 @@
100204 100289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100205 100290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
100206 100291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100207 100292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* #ifndef SQLITE_OMIT_SUBQUERY */
100208 100293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Send the data to the callback function or to a subroutine. In the
100210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** case of a subroutine, the subroutine itself is responsible for
100211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** popping the data from the stack.
100212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
100213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case SRT_Coroutine:
100214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case SRT_Output: {
100294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SRT_Coroutine: /* Send data to a co-routine */
100295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SRT_Output: { /* Return the results */
100215 100296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( eDest==SRT_Coroutine );
100216 100297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( eDest==SRT_Output );
100217 100298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrderBy ){
100218 100299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r1 = sqlite3GetTempReg(pParse);
100219 100300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1);
@@ -100245,17 +100326,20 @@
100245 100326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSO );
100246 100327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKey = pSO->nExpr;
100247 100328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3GetTempReg(pParse);
100248 100329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = sqlite3GetTempRange(pParse, nKey+2);
100249 100330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r3 = r2+nKey+1;
100250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r3);
100251 100331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eDest==SRT_DistQueue ){
100252 100332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the destination is DistQueue, then cursor (iParm+1) is open
100253 100333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on a second ephemeral index that holds all values every previously
100254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** added to the queue. Only add this new value if it has never before
100255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** been added */
100256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrTest = sqlite3VdbeAddOp4Int(v, OP_Found, iParm+1, 0, r3, 0);
100334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** added to the queue. */
100335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrTest = sqlite3VdbeAddOp4Int(v, OP_Found, iParm+1, 0,
100336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regResult, nResultCol);
100337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
100338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
100339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r3);
100340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( eDest==SRT_DistQueue ){
100257 100341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxInsert, iParm+1, r3);
100258 100342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
100259 100343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100260 100344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nKey; i++){
100261 100345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SCopy,
@@ -100290,11 +100374,11 @@
100290 100374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump to the end of the loop if the LIMIT is reached. Except, if
100291 100375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** there is a sorter, in which case the sorter has already limited
100292 100376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the output for us.
100293 100377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
100294 100378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrderBy==0 && p->iLimit ){
100295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_IfZero, p->iLimit, iBreak, -1);
100379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_IfZero, p->iLimit, iBreak, -1); VdbeCoverage(v);
100296 100380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100297 100381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100298 100382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100299 100383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
100300 100384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allocate a KeyInfo object sufficient for an index of N key columns and
@@ -100509,16 +100593,17 @@
100509 100593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->selFlags & SF_UseSorter ){
100510 100594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regSortOut = ++pParse->nMem;
100511 100595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ptab2 = pParse->nTab++;
100512 100596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_OpenPseudo, ptab2, regSortOut, pOrderBy->nExpr+2);
100513 100597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = 1 + sqlite3VdbeAddOp2(v, OP_SorterSort, iTab, addrBreak);
100598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
100514 100599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeOffset(v, p->iOffset, addrContinue);
100515 100600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SorterData, iTab, regSortOut);
100516 100601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, ptab2, pOrderBy->nExpr+1, regRow);
100517 100602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_CLEARCACHE);
100518 100603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
100519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = 1 + sqlite3VdbeAddOp2(v, OP_Sort, iTab, addrBreak);
100604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr = 1 + sqlite3VdbeAddOp2(v, OP_Sort, iTab, addrBreak); VdbeCoverage(v);
100520 100605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeOffset(v, p->iOffset, addrContinue);
100521 100606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, iTab, pOrderBy->nExpr+1, regRow);
100522 100607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100523 100608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( eDest ){
100524 100609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SRT_Table:
@@ -100572,13 +100657,13 @@
100572 100657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100573 100658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The bottom of the loop
100574 100659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
100575 100660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrContinue);
100576 100661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->selFlags & SF_UseSorter ){
100577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_SorterNext, iTab, addr);
100662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_SorterNext, iTab, addr); VdbeCoverage(v);
100578 100663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
100579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, iTab, addr);
100664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, iTab, addr); VdbeCoverage(v);
100580 100665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100581 100666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrBreak);
100582 100667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eDest==SRT_Output || eDest==SRT_Coroutine ){
100583 100668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, pseudoTab, 0);
100584 100669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -101058,15 +101143,17 @@
101058 101143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
101059 101144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE Vdbe *sqlite3GetVdbe(Parse *pParse){
101060 101145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = pParse->pVdbe;
101061 101146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( v==0 ){
101062 101147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = pParse->pVdbe = sqlite3VdbeCreate(pParse);
101063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef SQLITE_OMIT_TRACE
101064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( v ){
101065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp0(v, OP_Trace);
101148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( v ) sqlite3VdbeAddOp0(v, OP_Init);
101149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->pToplevel==0
101150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && OptimizationEnabled(pParse->db,SQLITE_FactorOutConst)
101151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
101152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->okConstFactor = 1;
101066 101153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
101154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
101068 101155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101069 101156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return v;
101070 101157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101071 101158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101072 101159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -101120,26 +101207,26 @@
101120 101207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( n>=0 && p->nSelectRow>(u64)n ){
101121 101208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nSelectRow = n;
101122 101209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101123 101210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
101124 101211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, p->pLimit, iLimit);
101125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_MustBeInt, iLimit);
101212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_MustBeInt, iLimit); VdbeCoverage(v);
101126 101213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "LIMIT counter"));
101127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IfZero, iLimit, iBreak);
101214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IfZero, iLimit, iBreak); VdbeCoverage(v);
101128 101215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101129 101216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pOffset ){
101130 101217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iOffset = iOffset = ++pParse->nMem;
101131 101218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem++; /* Allocate an extra register for limit+offset */
101132 101219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, p->pOffset, iOffset);
101133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_MustBeInt, iOffset);
101220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_MustBeInt, iOffset); VdbeCoverage(v);
101134 101221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "OFFSET counter"));
101135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr1 = sqlite3VdbeAddOp1(v, OP_IfPos, iOffset);
101222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr1 = sqlite3VdbeAddOp1(v, OP_IfPos, iOffset); VdbeCoverage(v);
101136 101223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, iOffset);
101137 101224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
101138 101225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Add, iLimit, iOffset, iOffset+1);
101139 101226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "LIMIT+OFFSET"));
101140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr1 = sqlite3VdbeAddOp1(v, OP_IfPos, iLimit);
101227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr1 = sqlite3VdbeAddOp1(v, OP_IfPos, iLimit); VdbeCoverage(v);
101141 101228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, -1, iOffset+1);
101142 101229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
101143 101230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101144 101231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101145 101232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -101318,15 +101405,17 @@
101318 101405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101319 101406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Detach the ORDER BY clause from the compound SELECT */
101320 101407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pOrderBy = 0;
101321 101408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101322 101409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Store the results of the setup-query in Queue. */
101410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSetup->pNext = 0;
101323 101411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Select(pParse, pSetup, &destQueue);
101412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSetup->pNext = p;
101324 101413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) goto end_of_recursive_query;
101325 101414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101326 101415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Find the next row in the Queue and output that row */
101327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrTop = sqlite3VdbeAddOp2(v, OP_Rewind, iQueue, addrBreak);
101416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrTop = sqlite3VdbeAddOp2(v, OP_Rewind, iQueue, addrBreak); VdbeCoverage(v);
101328 101417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101329 101418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Transfer the next row in Queue over to Current */
101330 101419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_NullRow, iCurrent); /* To reset column cache */
101331 101420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrderBy ){
101332 101421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, iQueue, pOrderBy->nExpr+1, regCurrent);
@@ -101338,11 +101427,14 @@
101338 101427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Output the single row in Current */
101339 101428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrCont = sqlite3VdbeMakeLabel(v);
101340 101429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeOffset(v, regOffset, addrCont);
101341 101430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, p->pEList, iCurrent,
101342 101431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, 0, pDest, addrCont, addrBreak);
101343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( regLimit ) sqlite3VdbeAddOp3(v, OP_IfZero, regLimit, addrBreak, -1);
101432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( regLimit ){
101433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_IfZero, regLimit, addrBreak, -1);
101434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
101435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
101344 101436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrCont);
101345 101437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101346 101438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Execute the recursive SELECT taking the single row in Current as
101347 101439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the value for the recursive-table. Store the results in the Queue.
101348 101440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -101423,12 +101515,10 @@
101423 101515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
101424 101516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p && p->pPrior ); /* Calling function guarantees this much */
101425 101517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (p->selFlags & SF_Recursive)==0 || p->op==TK_ALL || p->op==TK_UNION );
101426 101518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db = pParse->db;
101427 101519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrior = p->pPrior;
101428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pPrior->pRightmost!=pPrior );
101429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pPrior->pRightmost==p->pRightmost );
101430 101520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dest = *pDest;
101431 101521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPrior->pOrderBy ){
101432 101522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse,"ORDER BY clause should come after %s not before",
101433 101523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectOpName(p->op));
101434 101524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
@@ -101500,11 +101590,11 @@
101500 101590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101501 101591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = 0;
101502 101592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iLimit = pPrior->iLimit;
101503 101593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iOffset = pPrior->iOffset;
101504 101594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->iLimit ){
101505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = sqlite3VdbeAddOp1(v, OP_IfZero, p->iLimit);
101595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr = sqlite3VdbeAddOp1(v, OP_IfZero, p->iLimit); VdbeCoverage(v);
101506 101596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "Jump ahead if LIMIT reached"));
101507 101597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101508 101598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
explainSetInteger(iSub2, pParse->iNextSelectId);
101509 101599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Select(pParse, p, &dest);
101510 101600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( rc!=SQLITE_OK );
@@ -101532,16 +101622,14 @@
101532 101622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest uniondest;
101533 101623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101534 101624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->op==TK_EXCEPT );
101535 101625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->op==TK_UNION );
101536 101626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
priorOp = SRT_Union;
101537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( dest.eDest==priorOp && ALWAYS(!p->pLimit &&!p->pOffset) ){
101627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( dest.eDest==priorOp ){
101538 101628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* We can reuse a temporary table generated by a SELECT to our
101539 101629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** right.
101540 101630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
101541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->pRightmost!=p ); /* Can only happen for leftward elements
101542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of a 3-way or more compound */
101543 101631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pLimit==0 ); /* Not allowed on leftward elements */
101544 101632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pOffset==0 ); /* Not allowed on leftward elements */
101545 101633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unionTab = dest.iSDParm;
101546 101634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
101547 101635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* We will need to create our own temporary table to hold the
@@ -101550,11 +101638,11 @@
101550 101638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unionTab = pParse->nTab++;
101551 101639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pOrderBy==0 );
101552 101640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, unionTab, 0);
101553 101641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->addrOpenEphm[0] == -1 );
101554 101642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->addrOpenEphm[0] = addr;
101555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pRightmost->selFlags |= SF_UsesEphemeral;
101643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ findRightmost(p)->selFlags |= SF_UsesEphemeral;
101556 101644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pEList );
101557 101645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101558 101646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101559 101647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code the SELECT statements to our left
101560 101648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -101609,16 +101697,16 @@
101609 101697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
generateColumnNames(pParse, 0, pFirst->pEList);
101610 101698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101611 101699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iBreak = sqlite3VdbeMakeLabel(v);
101612 101700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCont = sqlite3VdbeMakeLabel(v);
101613 101701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
computeLimitRegisters(pParse, p, iBreak);
101614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Rewind, unionTab, iBreak);
101702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Rewind, unionTab, iBreak); VdbeCoverage(v);
101615 101703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStart = sqlite3VdbeCurrentAddr(v);
101616 101704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, p->pEList, unionTab,
101617 101705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, 0, &dest, iCont, iBreak);
101618 101706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iCont);
101619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, unionTab, iStart);
101707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, unionTab, iStart); VdbeCoverage(v);
101620 101708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iBreak);
101621 101709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, unionTab, 0);
101622 101710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101623 101711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
101624 101712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -101639,11 +101727,11 @@
101639 101727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pOrderBy==0 );
101640 101728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101641 101729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab1, 0);
101642 101730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->addrOpenEphm[0] == -1 );
101643 101731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->addrOpenEphm[0] = addr;
101644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pRightmost->selFlags |= SF_UsesEphemeral;
101732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ findRightmost(p)->selFlags |= SF_UsesEphemeral;
101645 101733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pEList );
101646 101734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101647 101735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code the SELECTs to our left into temporary table "tab1".
101648 101736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
101649 101737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDestInit(&intersectdest, SRT_Union, tab1);
@@ -101684,19 +101772,19 @@
101684 101772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
generateColumnNames(pParse, 0, pFirst->pEList);
101685 101773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101686 101774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iBreak = sqlite3VdbeMakeLabel(v);
101687 101775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCont = sqlite3VdbeMakeLabel(v);
101688 101776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
computeLimitRegisters(pParse, p, iBreak);
101689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Rewind, tab1, iBreak);
101777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Rewind, tab1, iBreak); VdbeCoverage(v);
101690 101778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3GetTempReg(pParse);
101691 101779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStart = sqlite3VdbeAddOp2(v, OP_RowKey, tab1, r1);
101692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4Int(v, OP_NotFound, tab2, iCont, r1, 0);
101780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4Int(v, OP_NotFound, tab2, iCont, r1, 0); VdbeCoverage(v);
101693 101781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, r1);
101694 101782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, p->pEList, tab1,
101695 101783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, 0, &dest, iCont, iBreak);
101696 101784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iCont);
101697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, tab1, iStart);
101785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, tab1, iStart); VdbeCoverage(v);
101698 101786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iBreak);
101699 101787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, tab2, 0);
101700 101788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, tab1, 0);
101701 101789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
101702 101790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -101718,11 +101806,11 @@
101718 101806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
KeyInfo *pKeyInfo; /* Collating sequence for the result set */
101719 101807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pLoop; /* For looping through SELECT statements */
101720 101808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CollSeq **apColl; /* For looping through pKeyInfo->aColl[] */
101721 101809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCol; /* Number of columns in result set */
101722 101810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->pRightmost==p );
101811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->pNext==0 );
101724 101812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCol = p->pEList->nExpr;
101725 101813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKeyInfo = sqlite3KeyInfoAlloc(db, nCol, 1);
101726 101814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pKeyInfo ){
101727 101815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
101728 101816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto multi_select_end;
@@ -101799,14 +101887,14 @@
101799 101887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101800 101888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Suppress duplicates for UNION, EXCEPT, and INTERSECT
101801 101889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
101802 101890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( regPrev ){
101803 101891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j1, j2;
101804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j1 = sqlite3VdbeAddOp1(v, OP_IfNot, regPrev);
101892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ j1 = sqlite3VdbeAddOp1(v, OP_IfNot, regPrev); VdbeCoverage(v);
101805 101893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j2 = sqlite3VdbeAddOp4(v, OP_Compare, pIn->iSdst, regPrev+1, pIn->nSdst,
101806 101894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(char*)sqlite3KeyInfoRef(pKeyInfo), P4_KEYINFO);
101807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Jump, j2+2, iContinue, j2+2);
101895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Jump, j2+2, iContinue, j2+2); VdbeCoverage(v);
101808 101896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j1);
101809 101897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Copy, pIn->iSdst, regPrev+1, pIn->nSdst-1);
101810 101898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 1, regPrev);
101811 101899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101812 101900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->db->mallocFailed ) return 0;
@@ -101903,11 +101991,11 @@
101903 101991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101904 101992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101905 101993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump to the end of the loop if the LIMIT is reached.
101906 101994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
101907 101995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->iLimit ){
101908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_IfZero, p->iLimit, iBreak, -1);
101996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_IfZero, p->iLimit, iBreak, -1); VdbeCoverage(v);
101909 101997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101910 101998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101911 101999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate the subroutine return
101912 102000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
101913 102001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iContinue);
@@ -102011,20 +102099,19 @@
102011 102099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pPrior; /* Another SELECT immediately to our left */
102012 102100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v; /* Generate code to this VDBE */
102013 102101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest destA; /* Destination for coroutine A */
102014 102102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest destB; /* Destination for coroutine B */
102015 102103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regAddrA; /* Address register for select-A coroutine */
102016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int regEofA; /* Flag to indicate when select-A is complete */
102017 102104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regAddrB; /* Address register for select-B coroutine */
102018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int regEofB; /* Flag to indicate when select-B is complete */
102019 102105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrSelectA; /* Address of the select-A coroutine */
102020 102106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrSelectB; /* Address of the select-B coroutine */
102021 102107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regOutA; /* Address register for the output-A subroutine */
102022 102108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regOutB; /* Address register for the output-B subroutine */
102023 102109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrOutA; /* Address of the output-A subroutine */
102024 102110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrOutB = 0; /* Address of the output-B subroutine */
102025 102111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrEofA; /* Address of the select-A-exhausted subroutine */
102112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrEofA_noB; /* Alternate addrEofA if B is uninitialized */
102026 102113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrEofB; /* Address of the select-B-exhausted subroutine */
102027 102114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrAltB; /* Address of the A<B subroutine */
102028 102115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrAeqB; /* Address of the A==B subroutine */
102029 102116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrAgtB; /* Address of the A>B subroutine */
102030 102117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regLimitA; /* Limit register for select-A */
@@ -102135,10 +102222,11 @@
102135 102222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102136 102223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102137 102224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Separate the left and the right query from one another
102138 102225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102139 102226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = 0;
102227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPrior->pNext = 0;
102140 102228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ResolveOrderGroupBy(pParse, p, p->pOrderBy, "ORDER");
102141 102229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPrior->pPrior==0 ){
102142 102230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ResolveOrderGroupBy(pParse, pPrior, pPrior->pOrderBy, "ORDER");
102143 102231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102144 102232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -102157,52 +102245,43 @@
102157 102245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLimit = 0;
102158 102246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, p->pOffset);
102159 102247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pOffset = 0;
102160 102248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102161 102249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regAddrA = ++pParse->nMem;
102162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regEofA = ++pParse->nMem;
102163 102250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regAddrB = ++pParse->nMem;
102164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regEofB = ++pParse->nMem;
102165 102251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regOutA = ++pParse->nMem;
102166 102252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regOutB = ++pParse->nMem;
102167 102253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDestInit(&destA, SRT_Coroutine, regAddrA);
102168 102254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDestInit(&destB, SRT_Coroutine, regAddrB);
102169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
102170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Jump past the various subroutines and coroutines to the main
102171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** merge loop
102172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
102173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j1 = sqlite3VdbeAddOp0(v, OP_Goto);
102174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrSelectA = sqlite3VdbeCurrentAddr(v);
102175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
102176 102255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102177 102256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate a coroutine to evaluate the SELECT statement to the
102178 102257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** left of the compound operator - the "A" select.
102179 102258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeNoopComment((v, "Begin coroutine for left SELECT"));
102259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrSelectA = sqlite3VdbeCurrentAddr(v) + 1;
102260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ j1 = sqlite3VdbeAddOp3(v, OP_InitCoroutine, regAddrA, 0, addrSelectA);
102261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "left SELECT"));
102181 102262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrior->iLimit = regLimitA;
102182 102263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
explainSetInteger(iSub1, pParse->iNextSelectId);
102183 102264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Select(pParse, pPrior, &destA);
102184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, 1, regEofA);
102185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Yield, regAddrA);
102186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeNoopComment((v, "End coroutine for left SELECT"));
102265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_EndCoroutine, regAddrA);
102266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, j1);
102187 102267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102188 102268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate a coroutine to evaluate the SELECT statement on
102189 102269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the right - the "B" select
102190 102270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrSelectB = sqlite3VdbeCurrentAddr(v);
102192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeNoopComment((v, "Begin coroutine for right SELECT"));
102271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrSelectB = sqlite3VdbeCurrentAddr(v) + 1;
102272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ j1 = sqlite3VdbeAddOp3(v, OP_InitCoroutine, regAddrB, 0, addrSelectB);
102273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "right SELECT"));
102193 102274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
savedLimit = p->iLimit;
102194 102275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
savedOffset = p->iOffset;
102195 102276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iLimit = regLimitB;
102196 102277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iOffset = 0;
102197 102278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
explainSetInteger(iSub2, pParse->iNextSelectId);
102198 102279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Select(pParse, p, &destB);
102199 102280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iLimit = savedLimit;
102200 102281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iOffset = savedOffset;
102201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, 1, regEofB);
102202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Yield, regAddrB);
102203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeNoopComment((v, "End coroutine for right SELECT"));
102282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_EndCoroutine, regAddrB);
102204 102283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102205 102284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate a subroutine that outputs the current row of the A
102206 102285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** select as the next output row of the compound select.
102207 102286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102208 102287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeNoopComment((v, "Output routine for A"));
@@ -102222,17 +102301,17 @@
102222 102301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3KeyInfoUnref(pKeyDup);
102223 102302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102224 102303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate a subroutine to run when the results from select A
102225 102304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are exhausted and only data in select B remains.
102226 102305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeNoopComment((v, "eof-A subroutine"));
102228 102306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_EXCEPT || op==TK_INTERSECT ){
102229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrEofA = sqlite3VdbeAddOp2(v, OP_Goto, 0, labelEnd);
102307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrEofA_noB = addrEofA = labelEnd;
102230 102308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
102231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrEofA = sqlite3VdbeAddOp2(v, OP_If, regEofB, labelEnd);
102232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB);
102233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Yield, regAddrB);
102309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeNoopComment((v, "eof-A subroutine"));
102310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrEofA = sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB);
102311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrEofA_noB = sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, labelEnd);
102312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
102234 102313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrEofA);
102235 102314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nSelectRow += pPrior->nSelectRow;
102236 102315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102237 102316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102238 102317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate a subroutine to run when the results from select B
@@ -102241,22 +102320,20 @@
102241 102320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_INTERSECT ){
102242 102321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrEofB = addrEofA;
102243 102322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nSelectRow > pPrior->nSelectRow ) p->nSelectRow = pPrior->nSelectRow;
102244 102323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
102245 102324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeNoopComment((v, "eof-B subroutine"));
102246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrEofB = sqlite3VdbeAddOp2(v, OP_If, regEofA, labelEnd);
102247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA);
102248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Yield, regAddrA);
102325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrEofB = sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA);
102326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, labelEnd); VdbeCoverage(v);
102249 102327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrEofB);
102250 102328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102251 102329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102252 102330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to handle the case of A<B
102253 102331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102254 102332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeNoopComment((v, "A-lt-B subroutine"));
102255 102333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrAltB = sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA);
102256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Yield, regAddrA);
102257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_If, regEofA, addrEofA);
102334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA); VdbeCoverage(v);
102258 102335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, labelCmpr);
102259 102336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102260 102337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to handle the case of A==B
102261 102338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102262 102339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_ALL ){
@@ -102265,12 +102342,11 @@
102265 102342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrAeqB = addrAltB;
102266 102343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrAltB++;
102267 102344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
102268 102345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeNoopComment((v, "A-eq-B subroutine"));
102269 102346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrAeqB =
102270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Yield, regAddrA);
102271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_If, regEofA, addrEofA);
102347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA); VdbeCoverage(v);
102272 102348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, labelCmpr);
102273 102349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102274 102350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102275 102351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to handle the case of A>B
102276 102352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -102277,32 +102353,27 @@
102277 102353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeNoopComment((v, "A-gt-B subroutine"));
102278 102354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrAgtB = sqlite3VdbeCurrentAddr(v);
102279 102355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_ALL || op==TK_UNION ){
102280 102356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB);
102281 102357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Yield, regAddrB);
102283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_If, regEofB, addrEofB);
102358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v);
102284 102359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, labelCmpr);
102285 102360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102286 102361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This code runs once to initialize everything.
102287 102362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102288 102363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j1);
102289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, 0, regEofA);
102290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, 0, regEofB);
102291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Gosub, regAddrA, addrSelectA);
102292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Gosub, regAddrB, addrSelectB);
102293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_If, regEofA, addrEofA);
102294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_If, regEofB, addrEofB);
102364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA_noB); VdbeCoverage(v);
102365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v);
102295 102366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102296 102367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Implement the main merge loop
102297 102368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102298 102369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, labelCmpr);
102299 102370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Permutation, 0, 0, 0, (char*)aPermute, P4_INTARRAY);
102300 102371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Compare, destA.iSdst, destB.iSdst, nOrderBy,
102301 102372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(char*)pKeyMerge, P4_KEYINFO);
102302 102373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_PERMUTE);
102303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Jump, addrAltB, addrAeqB, addrAgtB);
102374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Jump, addrAltB, addrAeqB, addrAgtB); VdbeCoverage(v);
102304 102375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102305 102376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump to the this point in order to terminate the query.
102306 102377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102307 102378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, labelEnd);
102308 102379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -102318,10 +102389,11 @@
102318 102389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by the calling function */
102319 102390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pPrior ){
102320 102391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(db, p->pPrior);
102321 102392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102322 102393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = pPrior;
102394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPrior->pNext = p;
102323 102395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102324 102396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*** TBD: Insert subroutine calls to close cursors on incomplete
102325 102397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**** subqueries ****/
102326 102398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
explainComposite(pParse, p->op, iSub1, iSub2, 0);
102327 102399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
@@ -102583,11 +102655,11 @@
102583 102655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** because they could be computed at compile-time. But when LIMIT and OFFSET
102584 102656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** became arbitrary expressions, we were forced to add restrictions (13)
102585 102657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and (14). */
102586 102658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSub->pLimit && p->pLimit ) return 0; /* Restriction (13) */
102587 102659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSub->pOffset ) return 0; /* Restriction (14) */
102588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pRightmost && pSub->pLimit ){
102660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (p->selFlags & SF_Compound)!=0 && pSub->pLimit ){
102589 102661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0; /* Restriction (15) */
102590 102662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102591 102663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubSrc->nSrc==0 ) return 0; /* Restriction (7) */
102592 102664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSub->selFlags & SF_Distinct ) return 0; /* Restriction (5) */
102593 102665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSub->pLimit && (pSrc->nSrc>1 || isAgg) ){
@@ -102734,18 +102806,18 @@
102734 102806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pOffset = pOffset;
102735 102807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLimit = pLimit;
102736 102808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pOrderBy = pOrderBy;
102737 102809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pSrc = pSrc;
102738 102810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->op = TK_ALL;
102739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pRightmost = 0;
102740 102811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew==0 ){
102741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew = pPrior;
102812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pPrior = pPrior;
102742 102813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
102743 102814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pPrior = pPrior;
102744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->pRightmost = 0;
102815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pPrior ) pPrior->pNext = pNew;
102816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->pNext = p;
102817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pPrior = pNew;
102745 102818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pPrior = pNew;
102747 102819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ) return 1;
102748 102820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102749 102821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102750 102822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Begin flattening the iFrom-th entry of the FROM clause
102751 102823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the outer query.
@@ -103080,10 +103152,14 @@
103080 103152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pWhere = 0;
103081 103153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pGroupBy = 0;
103082 103154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pHaving = 0;
103083 103155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pOrderBy = 0;
103084 103156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = 0;
103157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pNext = 0;
103158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->selFlags &= ~SF_Compound;
103159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNew->pPrior!=0 );
103160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->pPrior->pNext = pNew;
103085 103161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pLimit = 0;
103086 103162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pOffset = 0;
103087 103163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
103088 103164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103089 103165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -103267,13 +103343,14 @@
103267 103343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3SelectExpand() when walking a SELECT tree to resolve table
103268 103344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** names and other FROM clause elements.
103269 103345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
103270 103346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void selectPopWith(Walker *pWalker, Select *p){
103271 103347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse = pWalker->pParse;
103272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pWith ){
103273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pParse->pWith==p->pWith );
103274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->pWith = p->pWith->pOuter;
103348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ With *pWith = findRightmost(p)->pWith;
103349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWith!=0 ){
103350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->pWith==pWith );
103351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->pWith = pWith->pOuter;
103275 103352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103276 103353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103277 103354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
103278 103355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define selectPopWith 0
103279 103356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -103319,11 +103396,11 @@
103319 103396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(p->pSrc==0) || (selFlags & SF_Expanded)!=0 ){
103320 103397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
103321 103398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103322 103399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTabList = p->pSrc;
103323 103400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pEList = p->pEList;
103324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3WithPush(pParse, p->pWith, 0);
103401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3WithPush(pParse, findRightmost(p)->pWith, 0);
103325 103402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
103326 103403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make sure cursor numbers have been assigned to all entries in
103327 103404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the FROM clause of the SELECT statement.
103328 103405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
103329 103406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcListAssignCursors(pParse, pTabList);
@@ -103832,11 +103909,11 @@
103832 103909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
103833 103910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Another solution would be to change the OP_SCopy used to copy cached
103834 103911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** values to an OP_Copy.
103835 103912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
103836 103913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( regHit ){
103837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrHitTest = sqlite3VdbeAddOp1(v, OP_If, regHit);
103914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrHitTest = sqlite3VdbeAddOp1(v, OP_If, regHit); VdbeCoverage(v);
103838 103915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103839 103916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheClear(pParse);
103840 103917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pC=pAggInfo->aCol; i<pAggInfo->nAccumulator; i++, pC++){
103841 103918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pC->pExpr, pC->iMem);
103842 103919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -103991,46 +104068,28 @@
103991 104068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isAggSub ){
103992 104069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isAgg = 1;
103993 104070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->selFlags |= SF_Aggregate;
103994 104071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103995 104072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i = -1;
103996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( pTabList->nSrc==1 && (p->selFlags & SF_Materialize)==0
103997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && OptimizationEnabled(db, SQLITE_SubqCoroutine)
104073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pTabList->nSrc==1
104074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && OptimizationEnabled(db, SQLITE_SubqCoroutine)
103998 104075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
103999 104076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Implement a co-routine that will return a single row of the result
104000 104077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** set on each invocation.
104001 104078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrTop;
104003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrEof;
104079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrTop = sqlite3VdbeCurrentAddr(v)+1;
104004 104080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->regReturn = ++pParse->nMem;
104005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrEof = ++pParse->nMem;
104006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Before coding the OP_Goto to jump to the start of the main routine,
104007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ensure that the jump to the verify-schema routine has already
104008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** been coded. Otherwise, the verify-schema would likely be coded as
104009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** part of the co-routine. If the main routine then accessed the
104010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** database before invoking the co-routine for the first time (for
104011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** example to initialize a LIMIT register from a sub-select), it would
104012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be doing so without having verified the schema version and obtained
104013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the required db locks. See ticket d6b36be38. */
104014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3CodeVerifySchema(pParse, -1);
104015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp0(v, OP_Goto);
104016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrTop = sqlite3VdbeAddOp1(v, OP_OpenPseudo, pItem->iCursor);
104017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP5(v, 1);
104018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "coroutine for %s", pItem->pTab->zName));
104081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_InitCoroutine, pItem->regReturn, 0, addrTop);
104082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "%s", pItem->pTab->zName));
104019 104083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->addrFillSub = addrTop;
104020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, 0, addrEof);
104021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP5(v, 1);
104022 104084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDestInit(&dest, SRT_Coroutine, pItem->regReturn);
104023 104085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
explainSetInteger(pItem->iSelectId, (u8)pParse->iNextSelectId);
104024 104086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Select(pParse, pSub, &dest);
104025 104087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->pTab->nRowEst = (unsigned)pSub->nSelectRow;
104026 104088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->viaCoroutine = 1;
104027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP2(v, addrTop, dest.iSdst);
104028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP3(v, addrTop, dest.nSdst);
104029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, 1, addrEof);
104030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Yield, pItem->regReturn);
104031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "end %s", pItem->pTab->zName));
104089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pItem->regResult = dest.iSdst;
104090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_EndCoroutine, pItem->regReturn);
104032 104091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrTop-1);
104033 104092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ClearTempRegCache(pParse);
104034 104093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
104035 104094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate a subroutine that will fill an ephemeral table with
104036 104095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the content of this subquery. pItem->addrFillSub will point
@@ -104042,16 +104101,18 @@
104042 104101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int retAddr;
104043 104102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pItem->addrFillSub==0 );
104044 104103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->regReturn = ++pParse->nMem;
104045 104104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
topAddr = sqlite3VdbeAddOp2(v, OP_Integer, 0, pItem->regReturn);
104046 104105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->addrFillSub = topAddr+1;
104047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeNoopComment((v, "materialize %s", pItem->pTab->zName));
104048 104106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->isCorrelated==0 ){
104049 104107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the subquery is not correlated and if we are not inside of
104050 104108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a trigger, then we only need to compute the value of the subquery
104051 104109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** once. */
104052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- onceAddr = sqlite3CodeOnce(pParse);
104110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ onceAddr = sqlite3CodeOnce(pParse); VdbeCoverage(v);
104111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "materialize \"%s\"", pItem->pTab->zName));
104112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
104113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeNoopComment((v, "materialize \"%s\"", pItem->pTab->zName));
104053 104114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104054 104115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDestInit(&dest, SRT_EphemTab, pItem->iCursor);
104055 104116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
explainSetInteger(pItem->iSelectId, (u8)pParse->iNextSelectId);
104056 104117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Select(pParse, pSub, &dest);
104057 104118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->pTab->nRowEst = (unsigned)pSub->nSelectRow;
@@ -104079,25 +104140,10 @@
104079 104140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104080 104141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_COMPOUND_SELECT
104081 104142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is are a sequence of queries, do the earlier ones first.
104082 104143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104083 104144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pPrior ){
104084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pRightmost==0 ){
104085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Select *pLoop, *pRight = 0;
104086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int cnt = 0;
104087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int mxSelect;
104088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(pLoop=p; pLoop; pLoop=pLoop->pPrior, cnt++){
104089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLoop->pRightmost = p;
104090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLoop->pNext = pRight;
104091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRight = pLoop;
104092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
104093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mxSelect = db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT];
104094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( mxSelect && cnt>mxSelect ){
104095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ErrorMsg(pParse, "too many terms in compound SELECT");
104096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto select_end;
104097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
104098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
104099 104145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = multiSelect(pParse, p, pDest);
104100 104146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
explainSetInteger(pParse->iSelectId, iRestoreSelectId);
104101 104147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
104102 104148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104103 104149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -104397,11 +104443,11 @@
104397 104443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereEnd(pWInfo);
104398 104444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sAggInfo.sortingIdxPTab = sortPTab = pParse->nTab++;
104399 104445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sortOut = sqlite3GetTempReg(pParse);
104400 104446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_OpenPseudo, sortPTab, sortOut, nCol);
104401 104447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SorterSort, sAggInfo.sortingIdx, addrEnd);
104402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "GROUP BY sort"));
104448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "GROUP BY sort")); VdbeCoverage(v);
104403 104449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sAggInfo.useSortingIdx = 1;
104404 104450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheClear(pParse);
104405 104451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104406 104452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104407 104453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Evaluate the current GROUP BY terms and store in b0, b1, b2...
@@ -104424,11 +104470,11 @@
104424 104470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104425 104471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104426 104472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Compare, iAMem, iBMem, pGroupBy->nExpr,
104427 104473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(char*)sqlite3KeyInfoRef(pKeyInfo), P4_KEYINFO);
104428 104474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j1 = sqlite3VdbeCurrentAddr(v);
104429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Jump, j1+1, 0, j1+1);
104475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Jump, j1+1, 0, j1+1); VdbeCoverage(v);
104430 104476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104431 104477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code that runs whenever the GROUP BY changes.
104432 104478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Changes in the GROUP BY are detected by the previous code
104433 104479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** block. If there were no changes, this block is skipped.
104434 104480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -104438,11 +104484,11 @@
104438 104484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for the next GROUP BY batch.
104439 104485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104440 104486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeMove(pParse, iBMem, iAMem, pGroupBy->nExpr);
104441 104487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regOutputRow, addrOutputRow);
104442 104488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "output one row"));
104443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IfPos, iAbortFlag, addrEnd);
104489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IfPos, iAbortFlag, addrEnd); VdbeCoverage(v);
104444 104490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "check abort flag"));
104445 104491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset);
104446 104492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "reset accumulator"));
104447 104493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104448 104494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Update the aggregate accumulators based on the content of
@@ -104455,10 +104501,11 @@
104455 104501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104456 104502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* End of the loop
104457 104503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104458 104504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( groupBySort ){
104459 104505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SorterNext, sAggInfo.sortingIdx, addrTopOfLoop);
104506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
104460 104507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
104461 104508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereEnd(pWInfo);
104462 104509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeToNoop(v, addrSortingIdx);
104463 104510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104464 104511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -104482,11 +104529,11 @@
104482 104529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 1, iAbortFlag);
104483 104530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "set abort flag"));
104484 104531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
104485 104532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrOutputRow);
104486 104533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOutputRow = sqlite3VdbeCurrentAddr(v);
104487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IfPos, iUseFlag, addrOutputRow+2);
104534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IfPos, iUseFlag, addrOutputRow+2); VdbeCoverage(v);
104488 104535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "Groupby result generator entry point"));
104489 104536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
104490 104537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
finalizeAggFunctions(pParse, &sAggInfo);
104491 104538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pHaving, addrOutputRow+1, SQLITE_JUMPIFNULL);
104492 104539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, p->pEList, -1, pOrderBy,
@@ -104755,14 +104802,10 @@
104755 104802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExplainSelect(Vdbe *pVdbe, Select *p){
104756 104803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p==0 ){
104757 104804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExplainPrintf(pVdbe, "(null-select)");
104758 104805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
104759 104806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( p->pPrior ){
104761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pPrior->pNext = p;
104762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p = p->pPrior;
104763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
104764 104807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExplainPush(pVdbe);
104765 104808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( p ){
104766 104809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
explainOneSelect(pVdbe, p);
104767 104810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->pNext;
104768 104811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p==0 ) break;
@@ -105543,10 +105586,11 @@
105543 105586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to destroy the database record of the trigger.
105544 105587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
105545 105588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTable!=0 );
105546 105589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (v = sqlite3GetVdbe(pParse))!=0 ){
105547 105590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int base;
105591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const int iLn = __LINE__+2;
105548 105592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const VdbeOpList dropTrigger[] = {
105549 105593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Rewind, 0, ADDR(9), 0},
105550 105594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_String8, 0, 1, 0}, /* 1 */
105551 105595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Column, 0, 1, 2},
105552 105596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Ne, 2, ADDR(8), 1},
@@ -105557,11 +105601,11 @@
105557 105601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Next, 0, ADDR(1), 0}, /* 8 */
105558 105602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
105559 105603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
105560 105604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BeginWriteOperation(pParse, 0, iDb);
105561 105605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenMasterTable(pParse, iDb);
105562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- base = sqlite3VdbeAddOpList(v, ArraySize(dropTrigger), dropTrigger);
105606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ base = sqlite3VdbeAddOpList(v, ArraySize(dropTrigger), dropTrigger, iLn);
105563 105607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP4(v, base+1, pTrigger->zName, P4_TRANSIENT);
105564 105608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP4(v, base+4, "trigger", P4_STATIC);
105565 105609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ChangeCookie(pParse, iDb);
105566 105610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, 0, 0);
105567 105611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_DropTrigger, iDb, 0, 0, pTrigger->zName, 0);
@@ -105703,19 +105747,11 @@
105703 105747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
105704 105748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** INSERT INTO t1 ... ; -- insert into t2 uses REPLACE policy
105705 105749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** INSERT OR IGNORE INTO t1 ... ; -- insert into t2 uses IGNORE policy
105706 105750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
105707 105751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->eOrconf = (orconf==OE_Default)?pStep->orconf:(u8)orconf;
105708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
105709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Clear the cookieGoto flag. When coding triggers, the cookieGoto
105710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** variable is used as a flag to indicate to sqlite3ExprCodeConstants()
105711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** that it is not safe to refactor constants (this happens after the
105712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** start of the first loop in the SQL statement is coded - at that
105713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** point code may be conditionally executed, so it is no longer safe to
105714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** initialize constant register values). */
105715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pParse->cookieGoto==0 || pParse->cookieGoto==-1 );
105716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->cookieGoto = 0;
105752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->okConstFactor==0 );
105717 105753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
105718 105754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( pStep->op ){
105719 105755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_UPDATE: {
105720 105756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Update(pParse,
105721 105757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
targetSrcList(pParse, pStep),
@@ -106500,11 +106536,11 @@
106500 106536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeToNoop(v, addrOpen);
106501 106537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKey = nPk;
106502 106538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regKey = iPk;
106503 106539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
106504 106540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_MakeRecord, iPk, nPk, regKey,
106505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3IndexAffinityStr(v, pPk), P4_TRANSIENT);
106541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3IndexAffinityStr(v, pPk), nPk);
106506 106542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxInsert, iEph, regKey);
106507 106543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106508 106544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereEnd(pWInfo);
106509 106545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106510 106546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -106544,32 +106580,37 @@
106544 106580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Top of the update loop */
106545 106581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( okOnePass ){
106546 106582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aToOpen[iDataCur-iBaseCur] ){
106547 106583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPk!=0 );
106548 106584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, labelBreak, regKey, nKey);
106585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageNeverTaken(v);
106549 106586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106550 106587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
labelContinue = labelBreak;
106551 106588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IsNull, pPk ? regKey : regOldRowid, labelBreak);
106589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
106552 106590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pPk ){
106553 106591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
labelContinue = sqlite3VdbeMakeLabel(v);
106554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Rewind, iEph, labelBreak);
106592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Rewind, iEph, labelBreak); VdbeCoverage(v);
106555 106593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrTop = sqlite3VdbeAddOp2(v, OP_RowKey, iEph, regKey);
106556 106594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, labelContinue, regKey, 0);
106595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
106557 106596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
106558 106597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
labelContinue = sqlite3VdbeAddOp3(v, OP_RowSetRead, regRowSet, labelBreak,
106559 106598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regOldRowid);
106599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
106560 106600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_NotExists, iDataCur, labelContinue, regOldRowid);
106601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
106561 106602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106562 106603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106563 106604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the record number will change, set register regNewRowid to
106564 106605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contain the new value. If the record number is not being modified,
106565 106606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then regNewRowid is the same register as regOldRowid, which is
106566 106607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** already populated. */
106567 106608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( chngKey || pTrigger || hasFK || regOldRowid==regNewRowid );
106568 106609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( chngRowid ){
106569 106610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pRowidExpr, regNewRowid);
106570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_MustBeInt, regNewRowid);
106611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_MustBeInt, regNewRowid); VdbeCoverage(v);
106571 106612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106572 106613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106573 106614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Compute the old pre-UPDATE content of the row being changed, if that
106574 106615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** information is needed */
106575 106616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( chngPk || hasFK || pTrigger ){
@@ -106634,12 +106675,11 @@
106634 106675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106635 106676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Fire any BEFORE UPDATE triggers. This happens before constraints are
106636 106677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** verified. One could argue that this is wrong.
106637 106678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
106638 106679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tmask&TRIGGER_BEFORE ){
106639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Affinity, regNew, pTab->nCol);
106640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3TableAffinityStr(v, pTab);
106680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3TableAffinity(v, pTab, regNew);
106641 106681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodeRowTrigger(pParse, pTrigger, TK_UPDATE, pChanges,
106642 106682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TRIGGER_BEFORE, pTab, regOldRowid, onError, labelContinue);
106643 106683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106644 106684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The row-trigger may have deleted the row being updated. In this
106645 106685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** case, jump to the next row. No updates or AFTER triggers are
@@ -106647,12 +106687,14 @@
106647 106687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is deleted or renamed by a BEFORE trigger - is left undefined in the
106648 106688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** documentation.
106649 106689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
106650 106690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPk ){
106651 106691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, labelContinue,regKey,nKey);
106692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
106652 106693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
106653 106694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_NotExists, iDataCur, labelContinue, regOldRowid);
106695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
106654 106696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106655 106697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106656 106698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If it did not delete it, the row-trigger may still have modified
106657 106699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** some of the columns of the row being updated. Load the values for
106658 106700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** all columns not modified by the update statement into their
@@ -106684,10 +106726,11 @@
106684 106726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPk ){
106685 106727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j1 = sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, 0, regKey, nKey);
106686 106728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
106687 106729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j1 = sqlite3VdbeAddOp3(v, OP_NotExists, iDataCur, 0, regOldRowid);
106688 106730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageNeverTaken(v);
106689 106732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106690 106733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3GenerateRowIndexDelete(pParse, pTab, iDataCur, iIdxCur, aRegIdx);
106691 106734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106692 106735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If changing the record number, delete the old record. */
106693 106736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( hasFK || chngKey || pPk!=0 ){
@@ -106727,11 +106770,11 @@
106727 106770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
106728 106771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( okOnePass ){
106729 106772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Nothing to do at end-of-loop for a single-pass */
106730 106773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pPk ){
106731 106774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, labelContinue);
106732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, iEph, addrTop);
106775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, iEph, addrTop); VdbeCoverage(v);
106733 106776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
106734 106777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, labelContinue);
106735 106778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106736 106779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, labelBreak);
106737 106780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -106856,21 +106899,21 @@
106856 106899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Select(pParse, pSelect, &dest);
106857 106900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106858 106901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to scan the ephemeral table and call VUpdate. */
106859 106902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iReg = ++pParse->nMem;
106860 106903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem += pTab->nCol+1;
106861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = sqlite3VdbeAddOp2(v, OP_Rewind, ephemTab, 0);
106904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr = sqlite3VdbeAddOp2(v, OP_Rewind, ephemTab, 0); VdbeCoverage(v);
106862 106905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, ephemTab, 0, iReg);
106863 106906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, ephemTab, (pRowid?1:0), iReg+1);
106864 106907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pTab->nCol; i++){
106865 106908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, ephemTab, i+1+(pRowid!=0), iReg+2+i);
106866 106909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106867 106910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VtabMakeWritable(pParse, pTab);
106868 106911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_VUpdate, 0, pTab->nCol+2, iReg, pVTab, P4_VTAB);
106869 106912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, onError==OE_Default ? OE_Abort : onError);
106870 106913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MayAbort(pParse);
106871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, ephemTab, addr+1);
106914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, ephemTab, addr+1); VdbeCoverage(v);
106872 106915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr);
106873 106916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, ephemTab, 0);
106874 106917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106875 106918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Cleanup */
106876 106919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(db, pSelect);
@@ -108438,11 +108481,11 @@
108438 108481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrSkip; /* Jump here for next iteration of skip-scan */
108439 108482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrCont; /* Jump here to continue with the next loop cycle */
108440 108483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrFirst; /* First instruction of interior of the loop */
108441 108484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrBody; /* Beginning of the body of this loop */
108442 108485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 iFrom; /* Which entry in the FROM clause */
108443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 op, p5; /* Opcode and P5 of the opcode that ends the loop */
108486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 op, p3, p5; /* Opcode, P3 & P5 of the opcode that ends the loop */
108444 108487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int p1, p2; /* Operands of the opcode used to ends the loop */
108445 108488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union { /* Information that depends on pWLoop->wsFlags */
108446 108489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct {
108447 108490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nIn; /* Number of entries in aInLoop[] */
108448 108491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct InLoop {
@@ -108825,10 +108868,11 @@
108825 108868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_IN_ABLE 0x00000800 /* Able to support an IN operator */
108826 108869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_ONEROW 0x00001000 /* Selects no more than one row */
108827 108870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_MULTI_OR 0x00002000 /* OR using multiple indices */
108828 108871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_AUTO_INDEX 0x00004000 /* Uses an ephemeral index */
108829 108872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_SKIPSCAN 0x00008000 /* Uses the skip-scan algorithm */
108873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define WHERE_UNQ_WANTED 0x00010000 /* WHERE_ONEROW would have been helpful*/
108830 108874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
108831 108875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of whereInt.h ********************************************/
108832 108876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in where.c **********************/
108833 108877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
108834 108878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -110411,11 +110455,11 @@
110411 110455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110412 110456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to skip over the creation and initialization of the
110413 110457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** transient index on 2nd and subsequent iterations of the loop. */
110414 110458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = pParse->pVdbe;
110415 110459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( v!=0 );
110416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrInit = sqlite3CodeOnce(pParse);
110460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrInit = sqlite3CodeOnce(pParse); VdbeCoverage(v);
110417 110461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110418 110462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Count the number of columns that will be added to the index
110419 110463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and used to match WHERE clause constraints */
110420 110464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKeyCol = 0;
110421 110465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTable = pSrc->pTab;
@@ -110518,16 +110562,16 @@
110518 110562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_OpenAutoindex, pLevel->iIdxCur, nKeyCol+1);
110519 110563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
110520 110564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "for %s", pTable->zName));
110521 110565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110522 110566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Fill the automatic index with content */
110523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, pLevel->iTabCur);
110567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, pLevel->iTabCur); VdbeCoverage(v);
110524 110568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regRecord = sqlite3GetTempReg(pParse);
110525 110569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3GenerateIndexKey(pParse, pIdx, pLevel->iTabCur, regRecord, 0, 0, 0, 0);
110526 110570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxInsert, pLevel->iIdxCur, regRecord);
110527 110571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
110528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1);
110572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1); VdbeCoverage(v);
110529 110573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_STMTSTATUS_AUTOINDEX);
110530 110574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrTop);
110531 110575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regRecord);
110532 110576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110533 110577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump here when skipping the initialization */
@@ -111199,10 +111243,12 @@
111199 111243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( bRev );
111200 111244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bRev = !bRev;
111201 111245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111202 111246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTab = pX->iTable;
111203 111247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, bRev ? OP_Last : OP_Rewind, iTab, 0);
111248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, bRev);
111249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, !bRev);
111204 111250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 );
111205 111251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop->wsFlags |= WHERE_IN_ABLE;
111206 111252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->u.in.nIn==0 ){
111207 111253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->addrNxt = sqlite3VdbeMakeLabel(v);
111208 111254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -111218,11 +111264,11 @@
111218 111264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn->addrInTop = sqlite3VdbeAddOp2(v, OP_Rowid, iTab, iReg);
111219 111265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
111220 111266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn->addrInTop = sqlite3VdbeAddOp3(v, OP_Column, iTab, 0, iReg);
111221 111267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111222 111268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn->eEndLoopOp = bRev ? OP_PrevIfOpen : OP_NextIfOpen;
111223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_IsNull, iReg);
111269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_IsNull, iReg); VdbeCoverage(v);
111224 111270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
111225 111271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->u.in.nIn = 0;
111226 111272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111227 111273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
111228 111274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -111313,14 +111359,18 @@
111313 111359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111314 111360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111315 111361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nSkip ){
111316 111362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iIdxCur = pLevel->iIdxCur;
111317 111363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, (bRev?OP_Last:OP_Rewind), iIdxCur);
111364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, bRev==0);
111365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, bRev!=0);
111318 111366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "begin skip-scan on %s", pIdx->zName));
111319 111367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = sqlite3VdbeAddOp0(v, OP_Goto);
111320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLevel->addrSkip = sqlite3VdbeAddOp4Int(v, (bRev?OP_SeekLt:OP_SeekGt),
111368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrSkip = sqlite3VdbeAddOp4Int(v, (bRev?OP_SeekLT:OP_SeekGT),
111321 111369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iIdxCur, 0, regBase, nSkip);
111370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, bRev==0);
111371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, bRev!=0);
111322 111372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, j);
111323 111373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<nSkip; j++){
111324 111374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, j, regBase+j);
111325 111375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIdx->aiColumn[j]>=0 );
111326 111376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "%s", pIdx->pTable->aCol[pIdx->aiColumn[j]].zName));
@@ -111349,11 +111399,14 @@
111349 111399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111350 111400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->eOperator & WO_ISNULL );
111351 111401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->eOperator & WO_IN );
111352 111402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTerm->eOperator & (WO_ISNULL|WO_IN))==0 ){
111353 111403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRight = pTerm->pExpr->pRight;
111354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprCodeIsNullJump(v, pRight, regBase+j, pLevel->addrBrk);
111404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3ExprCanBeNull(pRight) ){
111405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, regBase+j, pLevel->addrBrk);
111406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
111407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
111355 111408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zAff ){
111356 111409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3CompareAffinity(pRight, zAff[j])==SQLITE_AFF_NONE ){
111357 111410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zAff[j] = SQLITE_AFF_NONE;
111358 111411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111359 111412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprNeedsNoAffinityChange(pRight, zAff[j]) ){
@@ -111595,14 +111648,14 @@
111595 111648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111596 111649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111597 111650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Special case of a FROM clause subquery implemented as a co-routine */
111598 111651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTabItem->viaCoroutine ){
111599 111652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regYield = pTabItem->regReturn;
111600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, pTabItem->addrFillSub-1, regYield);
111601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLevel->p2 = sqlite3VdbeAddOp1(v, OP_Yield, regYield);
111602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "next row of co-routine %s", pTabItem->pTab->zName));
111603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_If, regYield+1, addrBrk);
111653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_InitCoroutine, regYield, 0, pTabItem->addrFillSub);
111654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->p2 = sqlite3VdbeAddOp2(v, OP_Yield, regYield, addrBrk);
111655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
111656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "next row of \"%s\"", pTabItem->pTab->zName));
111604 111657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = OP_Goto;
111605 111658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
111606 111659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111607 111660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
111608 111661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){
@@ -111630,10 +111683,11 @@
111630 111683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, pLoop->u.vtab.idxNum, iReg);
111631 111684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, nConstraint, iReg+1);
111632 111685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_VFilter, iCur, addrNotFound, iReg,
111633 111686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop->u.vtab.idxStr,
111634 111687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop->u.vtab.needFree ? P4_MPRINTF : P4_STATIC);
111688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
111635 111689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop->u.vtab.needFree = 0;
111636 111690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<nConstraint && j<16; j++){
111637 111691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pLoop->u.vtab.omitMask>>j)&1 ){
111638 111692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
disableTerm(pLevel, pLoop->aLTerm[j]);
111639 111693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -111653,20 +111707,22 @@
111653 111707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** equality comparison against the ROWID field. Or
111654 111708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** we reference multiple rows using a "rowid IN (...)"
111655 111709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** construct.
111656 111710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
111657 111711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLoop->u.btree.nEq==1 );
111658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iReleaseReg = sqlite3GetTempReg(pParse);
111659 111712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm = pLoop->aLTerm[0];
111660 111713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTerm!=0 );
111661 111714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTerm->pExpr!=0 );
111662 111715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( omitTable==0 );
111663 111716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->wtFlags & TERM_VIRTUAL );
111717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iReleaseReg = ++pParse->nMem;
111664 111718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRowidReg = codeEqualityTerm(pParse, pTerm, pLevel, 0, bRev, iReleaseReg);
111719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iRowidReg!=iReleaseReg ) sqlite3ReleaseTempReg(pParse, iReleaseReg);
111665 111720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrNxt = pLevel->addrNxt;
111666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_MustBeInt, iRowidReg, addrNxt);
111721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_MustBeInt, iRowidReg, addrNxt); VdbeCoverage(v);
111667 111722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_NotExists, iCur, addrNxt, iRowidReg);
111723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
111668 111724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheAffinityChange(pParse, iRowidReg, 1);
111669 111725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheStore(pParse, iCur, -1, iRowidReg);
111670 111726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "pk"));
111671 111727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = OP_Noop;
111672 111728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( (pLoop->wsFlags & WHERE_IPK)!=0
@@ -111696,14 +111752,14 @@
111696 111752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111697 111753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The following constant maps TK_xx codes into corresponding
111698 111754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** seek opcodes. It depends on a particular ordering of TK_xx
111699 111755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
111700 111756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const u8 aMoveOp[] = {
111701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* TK_GT */ OP_SeekGt,
111702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* TK_LE */ OP_SeekLe,
111703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* TK_LT */ OP_SeekLt,
111704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* TK_GE */ OP_SeekGe
111757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* TK_GT */ OP_SeekGT,
111758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* TK_LE */ OP_SeekLE,
111759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* TK_LT */ OP_SeekLT,
111760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* TK_GE */ OP_SeekGE
111705 111761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
111706 111762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_LE==TK_GT+1 ); /* Make sure the ordering.. */
111707 111763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_LT==TK_GT+2 ); /* ... of the TK_xx values... */
111708 111764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_GE==TK_GT+3 ); /* ... is correcct. */
111709 111765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -111713,15 +111769,21 @@
111713 111769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pX!=0 );
111714 111770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pStart->leftCursor!=iCur ); /* transitive constraints */
111715 111771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pX->pRight, &rTemp);
111716 111772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, aMoveOp[pX->op-TK_GT], iCur, addrBrk, r1);
111717 111773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "pk"));
111774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, pX->op==TK_GT);
111775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, pX->op==TK_LE);
111776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, pX->op==TK_LT);
111777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, pX->op==TK_GE);
111718 111778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheAffinityChange(pParse, r1, 1);
111719 111779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, rTemp);
111720 111780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
disableTerm(pLevel, pStart);
111721 111781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
111722 111782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, bRev ? OP_Last : OP_Rewind, iCur, addrBrk);
111783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, bRev==0);
111784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, bRev!=0);
111723 111785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111724 111786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pEnd ){
111725 111787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pX;
111726 111788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pX = pEnd->pExpr;
111727 111789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pX!=0 );
@@ -111741,14 +111803,18 @@
111741 111803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = bRev ? OP_Prev : OP_Next;
111742 111804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p1 = iCur;
111743 111805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p2 = start;
111744 111806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLevel->p5==0 );
111745 111807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( testOp!=OP_Noop ){
111746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iRowidReg = iReleaseReg = sqlite3GetTempReg(pParse);
111808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iRowidReg = ++pParse->nMem;
111747 111809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Rowid, iCur, iRowidReg);
111748 111810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheStore(pParse, iCur, -1, iRowidReg);
111749 111811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, testOp, memEndValue, addrBrk, iRowidReg);
111812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, testOp==OP_Le);
111813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, testOp==OP_Lt);
111814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, testOp==OP_Ge);
111815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, testOp==OP_Gt);
111750 111816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_AFF_NUMERIC | SQLITE_JUMPIFNULL);
111751 111817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111752 111818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pLoop->wsFlags & WHERE_INDEXED ){
111753 111819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Case 4: A scan using an index.
111754 111820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -111784,24 +111850,23 @@
111784 111850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const u8 aStartOp[] = {
111785 111851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0,
111786 111852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0,
111787 111853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OP_Rewind, /* 2: (!start_constraints && startEq && !bRev) */
111788 111854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OP_Last, /* 3: (!start_constraints && startEq && bRev) */
111789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OP_SeekGt, /* 4: (start_constraints && !startEq && !bRev) */
111790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OP_SeekLt, /* 5: (start_constraints && !startEq && bRev) */
111791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OP_SeekGe, /* 6: (start_constraints && startEq && !bRev) */
111792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OP_SeekLe /* 7: (start_constraints && startEq && bRev) */
111855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_SeekGT, /* 4: (start_constraints && !startEq && !bRev) */
111856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_SeekLT, /* 5: (start_constraints && !startEq && bRev) */
111857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_SeekGE, /* 6: (start_constraints && startEq && !bRev) */
111858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_SeekLE /* 7: (start_constraints && startEq && bRev) */
111793 111859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
111794 111860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const u8 aEndOp[] = {
111795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OP_Noop, /* 0: (!end_constraints) */
111796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OP_IdxGE, /* 1: (end_constraints && !bRev) */
111797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OP_IdxLT /* 2: (end_constraints && bRev) */
111861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_IdxGE, /* 0: (end_constraints && !bRev && !endEq) */
111862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_IdxGT, /* 1: (end_constraints && !bRev && endEq) */
111863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_IdxLE, /* 2: (end_constraints && bRev && !endEq) */
111864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_IdxLT, /* 3: (end_constraints && bRev && endEq) */
111798 111865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
111799 111866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 nEq = pLoop->u.btree.nEq; /* Number of == or IN terms */
111800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int isMinQuery = 0; /* If this is an optimized SELECT min(x).. */
111801 111867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regBase; /* Base register holding constraint values */
111802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int r1; /* Temp register */
111803 111868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pRangeStart = 0; /* Inequality constraint at range start */
111804 111869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pRangeEnd = 0; /* Inequality constraint at range end */
111805 111870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int startEq; /* True if range start uses ==, >= or <= */
111806 111871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int endEq; /* True if range end uses ==, >= or <= */
111807 111872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int start_constraints; /* Start of range is constrained */
@@ -111810,10 +111875,12 @@
111810 111875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iIdxCur; /* The VDBE cursor for the index */
111811 111876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nExtraReg = 0; /* Number of extra registers needed */
111812 111877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int op; /* Instruction opcode */
111813 111878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zStartAff; /* Affinity for start of range constraint */
111814 111879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char cEndAff = 0; /* Affinity for end of range constraint */
111880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bSeekPastNull = 0; /* True to seek past initial nulls */
111881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bStopAtNull = 0; /* Add condition to terminate at NULLs */
111815 111882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111816 111883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = pLoop->u.btree.pIndex;
111817 111884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iIdxCur = pLevel->iIdxCur;
111818 111885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nEq>=pLoop->u.btree.nSkip );
111819 111886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -111828,11 +111895,11 @@
111828 111895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pWInfo->wctrlFlags&WHERE_ORDERBY_MIN)!=0
111829 111896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pWInfo->bOBSat!=0)
111830 111897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pIdx->nKeyCol>nEq)
111831 111898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
111832 111899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLoop->u.btree.nSkip==0 );
111833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isMinQuery = 1;
111900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bSeekPastNull = 1;
111834 111901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtraReg = 1;
111835 111902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111836 111903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111837 111904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Find any inequality constraint terms for the start and end
111838 111905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the range.
@@ -111843,10 +111910,17 @@
111843 111910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtraReg = 1;
111844 111911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111845 111912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & WHERE_TOP_LIMIT ){
111846 111913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRangeEnd = pLoop->aLTerm[j++];
111847 111914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtraReg = 1;
111915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRangeStart==0
111916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pRangeEnd->wtFlags & TERM_VNULL)==0
111917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (j = pIdx->aiColumn[nEq])>=0
111918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pIdx->pTable->aCol[j].notNull==0
111919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
111920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bSeekPastNull = 1;
111921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
111848 111922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111849 111923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111850 111924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to evaluate all constraint terms using == or IN
111851 111925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and store the values of those terms in an array of registers
111852 111926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** starting at regBase.
@@ -111862,10 +111936,11 @@
111862 111936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
111863 111937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (nEq<pIdx->nKeyCol && bRev==(pIdx->aSortOrder[nEq]==SQLITE_SO_ASC))
111864 111938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (bRev && pIdx->nKeyCol==nEq)
111865 111939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
111866 111940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SWAP(WhereTerm *, pRangeEnd, pRangeStart);
111941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SWAP(u8, bSeekPastNull, bStopAtNull);
111867 111942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111868 111943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111869 111944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pRangeStart && (pRangeStart->eOperator & WO_LE)!=0 );
111870 111945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pRangeStart && (pRangeStart->eOperator & WO_GE)!=0 );
111871 111946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pRangeEnd && (pRangeEnd->eOperator & WO_LE)!=0 );
@@ -111877,12 +111952,15 @@
111877 111952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Seek the index cursor to the start of the range. */
111878 111953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nConstraint = nEq;
111879 111954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRangeStart ){
111880 111955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRight = pRangeStart->pExpr->pRight;
111881 111956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pRight, regBase+nEq);
111882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pRangeStart->wtFlags & TERM_VNULL)==0 ){
111883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprCodeIsNullJump(v, pRight, regBase+nEq, addrNxt);
111957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pRangeStart->wtFlags & TERM_VNULL)==0
111958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && sqlite3ExprCanBeNull(pRight)
111959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
111960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, regBase+nEq, addrNxt);
111961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
111884 111962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111885 111963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zStartAff ){
111886 111964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3CompareAffinity(pRight, zStartAff[nEq])==SQLITE_AFF_NONE){
111887 111965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Since the comparison is to be performed with no conversions
111888 111966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** applied to the operands, set the affinity to apply to pRight to
@@ -111893,86 +111971,76 @@
111893 111971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zStartAff[nEq] = SQLITE_AFF_NONE;
111894 111972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111895 111973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111896 111974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nConstraint++;
111897 111975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pRangeStart->wtFlags & TERM_VIRTUAL );
111898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( isMinQuery ){
111976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( bSeekPastNull ){
111899 111977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq);
111900 111978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nConstraint++;
111901 111979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
startEq = 0;
111902 111980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
start_constraints = 1;
111903 111981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- codeApplyAffinity(pParse, regBase, nConstraint, zStartAff);
111982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ codeApplyAffinity(pParse, regBase, nConstraint - bSeekPastNull, zStartAff);
111905 111983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = aStartOp[(start_constraints<<2) + (startEq<<1) + bRev];
111906 111984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( op!=0 );
111907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==OP_Rewind );
111908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==OP_Last );
111909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==OP_SeekGt );
111910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==OP_SeekGe );
111911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==OP_SeekLe );
111912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==OP_SeekLt );
111913 111985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint);
111986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
111987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==OP_Rewind); testcase( op==OP_Rewind );
111988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==OP_Last); testcase( op==OP_Last );
111989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==OP_SeekGT); testcase( op==OP_SeekGT );
111990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==OP_SeekGE); testcase( op==OP_SeekGE );
111991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==OP_SeekLE); testcase( op==OP_SeekLE );
111992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, op==OP_SeekLT); testcase( op==OP_SeekLT );
111914 111993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111915 111994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Load the value for the inequality constraint at the end of the
111916 111995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** range (if any).
111917 111996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
111918 111997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nConstraint = nEq;
111919 111998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRangeEnd ){
111920 111999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRight = pRangeEnd->pExpr->pRight;
111921 112000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheRemove(pParse, regBase+nEq, 1);
111922 112001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pRight, regBase+nEq);
111923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pRangeEnd->wtFlags & TERM_VNULL)==0 ){
111924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprCodeIsNullJump(v, pRight, regBase+nEq, addrNxt);
112002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pRangeEnd->wtFlags & TERM_VNULL)==0
112003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && sqlite3ExprCanBeNull(pRight)
112004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
112005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, regBase+nEq, addrNxt);
112006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
111925 112007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111926 112008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3CompareAffinity(pRight, cEndAff)!=SQLITE_AFF_NONE
111927 112009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !sqlite3ExprNeedsNoAffinityChange(pRight, cEndAff)
111928 112010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
111929 112011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeApplyAffinity(pParse, regBase+nEq, 1, &cEndAff);
111930 112012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111931 112013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nConstraint++;
111932 112014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pRangeEnd->wtFlags & TERM_VIRTUAL );
112015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( bStopAtNull ){
112016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq);
112017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ endEq = 0;
112018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nConstraint++;
111933 112019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111934 112020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, zStartAff);
111935 112021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111936 112022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Top of the loop body */
111937 112023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p2 = sqlite3VdbeCurrentAddr(v);
111938 112024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111939 112025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check if the index cursor is past the end of the range. */
111940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- op = aEndOp[(pRangeEnd || nEq) * (1 + bRev)];
111941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==OP_Noop );
111942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==OP_IdxGE );
111943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( op==OP_IdxLT );
111944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( op!=OP_Noop ){
112026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nConstraint ){
112027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ op = aEndOp[bRev*2 + endEq];
111945 112028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint);
111946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP5(v, endEq!=bRev ?1:0);
111947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
111948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
111949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If there are inequality constraints, check that the value
111950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of the table column that the inequality contrains is not NULL.
111951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If it is, jump to the next iteration of the loop.
111952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
111953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = sqlite3GetTempReg(pParse);
111954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( pLoop->wsFlags & WHERE_BTM_LIMIT );
111955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( pLoop->wsFlags & WHERE_TOP_LIMIT );
111956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pLoop->wsFlags & (WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))!=0
111957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (j = pIdx->aiColumn[nEq])>=0
111958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && pIdx->pTable->aCol[j].notNull==0
111959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (nEq || (pLoop->wsFlags & WHERE_BTM_LIMIT)==0)
111960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
111961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, nEq, r1);
111962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "%s", pIdx->pTable->aCol[j].zName));
111963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IsNull, r1, addrCont);
111964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
111965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ReleaseTempReg(pParse, r1);
112029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( op==OP_IdxGT ); VdbeCoverageIf(v, op==OP_IdxGT );
112030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( op==OP_IdxGE ); VdbeCoverageIf(v, op==OP_IdxGE );
112031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( op==OP_IdxLT ); VdbeCoverageIf(v, op==OP_IdxLT );
112032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( op==OP_IdxLE ); VdbeCoverageIf(v, op==OP_IdxLE );
112033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
111966 112034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111967 112035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Seek the table cursor, if required */
111968 112036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
disableTerm(pLevel, pRangeStart);
111969 112037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
disableTerm(pLevel, pRangeEnd);
111970 112038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( omitTable ){
111971 112039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pIdx is a covering index. No need to access the main table. */
111972 112040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( HasRowid(pIdx->pTable) ){
111973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iRowidReg = iReleaseReg = sqlite3GetTempReg(pParse);
112041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iRowidReg = ++pParse->nMem;
111974 112042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IdxRowid, iIdxCur, iRowidReg);
111975 112043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCacheStore(pParse, iCur, -1, iRowidReg);
111976 112044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Seek, iCur, iRowidReg); /* Deferred seek */
111977 112045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
111978 112046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pPk = sqlite3PrimaryKeyIndex(pIdx->pTable);
@@ -111980,11 +112048,11 @@
111980 112048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<pPk->nKeyCol; j++){
111981 112049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = sqlite3ColumnOfIndex(pIdx, pPk->aiColumn[j]);
111982 112050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, k, iRowidReg+j);
111983 112051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111984 112052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NotFound, iCur, addrCont,
111985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iRowidReg, pPk->nKeyCol);
112053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iRowidReg, pPk->nKeyCol); VdbeCoverage(v);
111986 112054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111987 112055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111988 112056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Record the instruction used to terminate the loop. Disable
111989 112057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WHERE clause terms made redundant by the index range scan.
111990 112058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -111994,10 +112062,12 @@
111994 112062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = OP_Prev;
111995 112063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
111996 112064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = OP_Next;
111997 112065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
111998 112066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p1 = iIdxCur;
112067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (WHERE_UNQ_WANTED>>16)==1 );
112068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->p3 = (pLoop->wsFlags>>16)&1;
111999 112069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pLoop->wsFlags & WHERE_CONSTRAINT)==0 ){
112000 112070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP;
112001 112071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
112002 112072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLevel->p5==0 );
112003 112073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -112162,10 +112232,11 @@
112162 112232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r;
112163 112233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r = sqlite3ExprCodeGetColumn(pParse, pTabItem->pTab, -1, iCur,
112164 112234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regRowid, 0);
112165 112235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_RowSetTest, regRowset,
112166 112236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeCurrentAddr(v)+2, r, iSet);
112237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
112167 112238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112168 112239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regReturn, iLoopBody);
112169 112240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112170 112241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The pSubWInfo->untestedTerms flag means that this OR term
112171 112242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contained one or more AND term from a notReady table. The
@@ -112230,10 +112301,12 @@
112230 112301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = OP_Noop;
112231 112302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
112232 112303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = aStep[bRev];
112233 112304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p1 = iCur;
112234 112305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p2 = 1 + sqlite3VdbeAddOp2(v, aStart[bRev], iCur, addrBrk);
112306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, bRev==0);
112307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, bRev!=0);
112235 112308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP;
112236 112309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112237 112310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112238 112311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112239 112312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Insert code to test every subexpression that can be completely
@@ -112311,11 +112384,10 @@
112311 112384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTerm->pExpr );
112312 112385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pTerm->pExpr, addrCont, SQLITE_JUMPIFNULL);
112313 112386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->wtFlags |= TERM_CODED;
112314 112387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112315 112388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ReleaseTempReg(pParse, iReleaseReg);
112317 112389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112318 112390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pLevel->notReady;
112319 112391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112320 112392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112321 112393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(WHERETRACE_ENABLED) && defined(SQLITE_ENABLE_TREE_EXPLAIN)
@@ -112798,16 +112870,17 @@
112798 112870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(
112799 112871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(pNew->wsFlags & (WHERE_COLUMN_NULL|WHERE_COLUMN_IN|WHERE_SKIPSCAN))!=0
112800 112872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| nInMul==0
112801 112873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
112802 112874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->wsFlags |= WHERE_COLUMN_EQ;
112803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iCol<0
112804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || (pProbe->onError!=OE_None && nInMul==0
112805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && pNew->u.btree.nEq==pProbe->nKeyCol-1)
112806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
112875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iCol<0 || (nInMul==0 && pNew->u.btree.nEq==pProbe->nKeyCol-1)){
112807 112876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pNew->wsFlags & WHERE_COLUMN_IN)==0 || iCol<0 );
112808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->wsFlags |= WHERE_ONEROW;
112877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iCol>=0 && pProbe->onError==OE_None ){
112878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->wsFlags |= WHERE_UNQ_WANTED;
112879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
112880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->wsFlags |= WHERE_ONEROW;
112881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112809 112882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112810 112883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.btree.nEq++;
112811 112884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nOut = nRowEst + nInMul;
112812 112885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pTerm->eOperator & (WO_ISNULL) ){
112813 112886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->wsFlags |= WHERE_COLUMN_NULL;
@@ -113682,13 +113755,16 @@
113682 113755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Mark off any other ORDER BY terms that reference pLoop */
113683 113756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isOrderDistinct ){
113684 113757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
orderDistinctMask |= pLoop->maskSelf;
113685 113758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nOrderBy; i++){
113686 113759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *p;
113760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Bitmask mTerm;
113687 113761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( MASKBIT(i) & obSat ) continue;
113688 113762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = pOrderBy->a[i].pExpr;
113689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (exprTableUsage(&pWInfo->sMaskSet, p)&~orderDistinctMask)==0 ){
113763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mTerm = exprTableUsage(&pWInfo->sMaskSet,p);
113764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( mTerm==0 && !sqlite3ExprIsConstant(p) ) continue;
113765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (mTerm&~orderDistinctMask)==0 ){
113690 113766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
obSat |= MASKBIT(i);
113691 113767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113692 113768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113693 113769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113694 113770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} /* End the loop over all WhereLoops from outer-most down to inner-most */
@@ -114246,11 +114322,10 @@
114246 114322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** subexpression is separated by an AND operator.
114247 114323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
114248 114324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
initMaskSet(pMaskSet);
114249 114325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereClauseInit(&pWInfo->sWC, pWInfo);
114250 114326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereSplit(&pWInfo->sWC, pWhere, TK_AND);
114251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3CodeVerifySchema(pParse, -1); /* Insert the cookie verifier Goto */
114252 114327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
114253 114328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Special case: a WHERE clause that is constant. Evaluate the
114254 114329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expression and either jump over all of the code or fall thru.
114255 114330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
114256 114331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<sWLB.pWC->nTerm; ii++){
@@ -114308,26 +114383,10 @@
114308 114383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprAnalyzeAll(pTabList, &pWInfo->sWC);
114309 114384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ){
114310 114385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto whereBeginError;
114311 114386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114312 114387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
114313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If the ORDER BY (or GROUP BY) clause contains references to general
114314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** expressions, then we won't be able to satisfy it using indices, so
114315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** go ahead and disable it now.
114316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
114317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOrderBy && (wctrlFlags & WHERE_WANT_DISTINCT)!=0 ){
114318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(ii=0; ii<pOrderBy->nExpr; ii++){
114319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *pExpr = sqlite3ExprSkipCollate(pOrderBy->a[ii].pExpr);
114320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->op!=TK_COLUMN ){
114321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pWInfo->pOrderBy = pOrderBy = 0;
114322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
114323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( pExpr->iColumn<0 ){
114324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
114325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
114326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
114327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
114328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
114329 114388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( wctrlFlags & WHERE_WANT_DISTINCT ){
114330 114389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isDistinctRedundant(pParse, pTabList, &pWInfo->sWC, pResultSet) ){
114331 114390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The DISTINCT marking is pointless. Ignore it. */
114332 114391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->eDistinct = WHERE_DISTINCT_UNIQUE;
114333 114392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pOrderBy==0 ){
@@ -114535,11 +114594,11 @@
114535 114594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iIndexCur>=0 );
114536 114595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, op, iIndexCur, pIx->tnum, iDb);
114537 114596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetP4KeyInfo(pParse, pIx);
114538 114597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "%s", pIx->zName));
114539 114598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3CodeVerifySchema(pParse, iDb);
114599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iDb>=0 ) sqlite3CodeVerifySchema(pParse, iDb);
114541 114600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
notReady &= ~getMask(&pWInfo->sMaskSet, pTabItem->iCursor);
114542 114601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114543 114602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->iTop = sqlite3VdbeCurrentAddr(v);
114544 114603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ) goto whereBeginError;
114545 114604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -114597,20 +114656,27 @@
114597 114656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addr;
114598 114657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel = &pWInfo->a[i];
114599 114658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop = pLevel->pWLoop;
114600 114659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, pLevel->addrCont);
114601 114660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->op!=OP_Noop ){
114602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, pLevel->op, pLevel->p1, pLevel->p2);
114661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, pLevel->op, pLevel->p1, pLevel->p2, pLevel->p3);
114603 114662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, pLevel->p5);
114663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
114664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, pLevel->op==OP_Next);
114665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, pLevel->op==OP_Prev);
114666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, pLevel->op==OP_VNext);
114604 114667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114605 114668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & WHERE_IN_ABLE && pLevel->u.in.nIn>0 ){
114606 114669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct InLoop *pIn;
114607 114670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j;
114608 114671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, pLevel->addrNxt);
114609 114672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=pLevel->u.in.nIn, pIn=&pLevel->u.in.aInLoop[j-1]; j>0; j--, pIn--){
114610 114673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, pIn->addrInTop+1);
114611 114674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, pIn->eEndLoopOp, pIn->iCur, pIn->addrInTop);
114675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
114676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, pIn->eEndLoopOp==OP_PrevIfOpen);
114677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverageIf(v, pIn->eEndLoopOp==OP_NextIfOpen);
114612 114678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, pIn->addrInTop-1);
114613 114679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114614 114680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pLevel->u.in.aInLoop);
114615 114681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114616 114682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, pLevel->addrBrk);
@@ -114619,11 +114685,11 @@
114619 114685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "next skip-scan on %s", pLoop->u.btree.pIndex->zName));
114620 114686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, pLevel->addrSkip);
114621 114687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, pLevel->addrSkip-2);
114622 114688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114623 114689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->iLeftJoin ){
114624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = sqlite3VdbeAddOp1(v, OP_IfPos, pLevel->iLeftJoin);
114690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addr = sqlite3VdbeAddOp1(v, OP_IfPos, pLevel->iLeftJoin); VdbeCoverage(v);
114625 114691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
114626 114692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (pLoop->wsFlags & WHERE_INDEXED)!=0 );
114627 114693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 ){
114628 114694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_NullRow, pTabList->a[i].iCursor);
114629 114695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -114646,15 +114712,41 @@
114646 114712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
114647 114713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, pWInfo->iBreak);
114648 114714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
114649 114715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWInfo->nLevel<=pTabList->nSrc );
114650 114716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pLevel=pWInfo->a; i<pWInfo->nLevel; i++, pLevel++){
114717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int k, last;
114718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeOp *pOp;
114651 114719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx = 0;
114652 114720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct SrcList_item *pTabItem = &pTabList->a[pLevel->iFrom];
114653 114721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = pTabItem->pTab;
114654 114722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab!=0 );
114655 114723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop = pLevel->pWLoop;
114724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
114725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* For a co-routine, change all OP_Column references to the table of
114726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the co-routine into OP_SCopy of result contained in a register.
114727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** OP_Rowid becomes OP_Null.
114728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
114729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTabItem->viaCoroutine ){
114730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ last = sqlite3VdbeCurrentAddr(v);
114731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ k = pLevel->addrBody;
114732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp = sqlite3VdbeGetOp(v, k);
114733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(; k<last; k++, pOp++){
114734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p1!=pLevel->iTabCur ) continue;
114735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_Column ){
114736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->opcode = OP_SCopy;
114737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->p1 = pOp->p2 + pTabItem->regResult;
114738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->p2 = pOp->p3;
114739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->p3 = 0;
114740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pOp->opcode==OP_Rowid ){
114741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->opcode = OP_Null;
114742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->p1 = 0;
114743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp->p3 = 0;
114744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
114745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
114746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
114747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
114656 114748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
114657 114749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Close all of the cursors that were opened by sqlite3WhereBegin.
114658 114750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Except, do not close cursors that will be reused by the OR optimization
114659 114751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (WHERE_OMIT_OPEN_CLOSE). And do not close the OP_OpenWrite cursors
114660 114752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** created for the ONEPASS optimization.
@@ -114690,13 +114782,10 @@
114690 114782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = pLoop->u.btree.pIndex;
114691 114783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pLoop->wsFlags & WHERE_MULTI_OR ){
114692 114784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = pLevel->u.pCovidx;
114693 114785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114694 114786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx && !db->mallocFailed ){
114695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int k, last;
114696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeOp *pOp;
114697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
114698 114787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
last = sqlite3VdbeCurrentAddr(v);
114699 114788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = pLevel->addrBody;
114700 114789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp = sqlite3VdbeGetOp(v, k);
114701 114790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(; k<last; k++, pOp++){
114702 114791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p1!=pLevel->iTabCur ) continue;
@@ -117106,33 +117195,54 @@
117106 117195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExplainFinish(pParse->pVdbe);
117107 117196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy3);
117108 117197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117109 117198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
117110 117199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 112: /* select ::= with selectnowith */
117111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {
117112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( yymsp[0].minor.yy3 ){
117113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yymsp[0].minor.yy3->pWith = yymsp[-1].minor.yy59;
117200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
117201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Select *p = yymsp[0].minor.yy3, *pNext, *pLoop;
117202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p ){
117203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int cnt = 0, mxSelect;
117204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pWith = yymsp[-1].minor.yy59;
117205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pPrior ){
117206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNext = 0;
117207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(pLoop=p; pLoop; pNext=pLoop, pLoop=pLoop->pPrior, cnt++){
117208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLoop->pNext = pNext;
117209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLoop->selFlags |= SF_Compound;
117210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
117211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mxSelect = pParse->db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT];
117212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( mxSelect && cnt>mxSelect ){
117213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ErrorMsg(pParse, "too many terms in compound SELECT");
117214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
117215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
117114 117216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
117115 117217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy59);
117116 117218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yygotominor.yy3 = yymsp[0].minor.yy3;
117219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yygotominor.yy3 = p;
117118 117220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117119 117221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
117120 117222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 113: /* selectnowith ::= oneselect */
117121 117223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 119: /* oneselect ::= values */ yytestcase(yyruleno==119);
117122 117224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{yygotominor.yy3 = yymsp[0].minor.yy3;}
117123 117225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
117124 117226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 114: /* selectnowith ::= selectnowith multiselect_op oneselect */
117125 117227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
117126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( yymsp[0].minor.yy3 ){
117127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yymsp[0].minor.yy3->op = (u8)yymsp[-1].minor.yy328;
117128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yymsp[0].minor.yy3->pPrior = yymsp[-2].minor.yy3;
117228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Select *pRhs = yymsp[0].minor.yy3;
117229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRhs && pRhs->pPrior ){
117230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SrcList *pFrom;
117231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Token x;
117232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x.n = 0;
117233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0,0);
117234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0,0);
117235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
117236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRhs ){
117237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRhs->op = (u8)yymsp[-1].minor.yy328;
117238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRhs->pPrior = yymsp[-2].minor.yy3;
117129 117239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yymsp[-1].minor.yy328!=TK_ALL ) pParse->hasCompound = 1;
117130 117240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
117131 117241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(pParse->db, yymsp[-2].minor.yy3);
117132 117242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yygotominor.yy3 = yymsp[0].minor.yy3;
117243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yygotominor.yy3 = pRhs;
117134 117244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117135 117245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
117136 117246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 116: /* multiselect_op ::= UNION ALL */
117137 117247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{yygotominor.yy328 = TK_ALL;}
117138 117248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -122696,10 +122806,25 @@
122696 122806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_TESTCTRL_NEVER_CORRUPT: {
122697 122807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3GlobalConfig.neverCorrupt = va_arg(ap, int);
122698 122808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
122699 122809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
122700 122810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
122811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
122812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* sqlite3_test_control(SQLITE_TESTCTRL_VDBE_COVERAGE, xCallback, ptr);
122813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
122814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Set the VDBE coverage callback function to xCallback with context
122815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pointer ptr.
122816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
122817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_TESTCTRL_VDBE_COVERAGE: {
122818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_VDBE_COVERAGE
122819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef void (*branch_callback)(void*,int,u8,u8);
122820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3GlobalConfig.xVdbeBranch = va_arg(ap,branch_callback);
122821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3GlobalConfig.pVdbeBranchArg = va_arg(ap,void*);
122822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
122823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
122824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
122825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
122701 122826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
122702 122827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
122703 122828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_BUILTIN_TEST */
122704 122829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
122705 122830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
122706 122831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!