@@ -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.33.0. By combining all the individual C code files into this
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** version 3.34.0. 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.
@@ -1169,13 +1169,13 @@
1169 1169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1170 1170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: [sqlite3_libversion()],
1171 1171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1172 1172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
1173 1173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION "3.33.0"
1175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION_NUMBER 3033000
1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2020-08-14 13:23:32 fca8dc8b578f215a969cd899336378966156154710873e68b3d9ac5881b0ff3f"
1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION "3.34.0"
1175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION_NUMBER 3034000
1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2020-08-26 10:50:48 6c716f4b556ea8f9c9f15cffd81cb970488eadf1d5da2ba6b366d3bdeb36e492"
1177 1177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1178 1178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1179 1179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
1180 1180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
1181 1181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -7232,10 +7232,61 @@
7232 7232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of connection D is read-only, 0 if it is read/write, or -1 if N is not
7233 7233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the name of a database on connection D.
7234 7234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
7235 7235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
7236 7236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
7237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
7238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CAPI3REF: Determine the transaction state of a database
7239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** METHOD: sqlite3
7240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
7241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^The sqlite3_txn_state(D,S) interface returns the current
7242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [transaction state] of schema S in database connection D. ^If S is NULL,
7243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then the highest transaction state of any schema on databse connection D
7244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is returned. Transaction states are (in order of lowest to highest):
7245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <ol>
7246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <li value="0"> SQLITE_TXN_NONE
7247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <li value="1"> SQLITE_TXN_READ
7248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <li value="2"> SQLITE_TXN_WRITE
7249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** </ol>
7250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^If the S argument to sqlite3_txn_state(D,S) is in the name of
7251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a valid schema, then -1 is returned.
7252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
7253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema);
7254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
7255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
7256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CAPI3REF: Allowed return values from [sqlite3_txn_state()]
7257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** KEYWORDS: {transaction state}
7258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
7259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** These constants define the current transaction state of a database file.
7260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^The [sqlite3_txn_state(D,S)] interface returns one of these
7261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** constants in order to describe the transaction state of schema S
7262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in [database connection] D.
7263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
7264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dl>
7265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [[SQLITE_TXN_NONE]] <dt>SQLITE_TXN_NONE</dt>
7266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>The SQLITE_TXN_NONE state means that no transaction is currently
7267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pending.</dd>
7268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
7269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [[SQLITE_TXN_READ]] <dt>SQLITE_TXN_READ</dt>
7270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>The SQLITE_TXN_READ state means that the database is currently
7271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in a read transaction. Content has been read from the database file
7272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** but nothing in the database file has changed. The transaction state
7273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** will advanced to SQLITE_TXN_WRITE if any changes occur and there are
7274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** no other conflicting concurrent write transactions. The transaction
7275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** state will revert to SQLITE_TXN_NONE following a [ROLLBACK] or
7276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [COMMIT].</dd>
7277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
7278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [[SQLITE_TXN_WRITE]] <dt>SQLITE_TXN_WRITE</dt>
7279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>The SQLITE_TXN_WRITE state means that the database is currently
7280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in a write transaction. Content has been written to the database file
7281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** but has not yet committed. The transaction state will change to
7282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd>
7283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
7284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_TXN_NONE 0
7285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_TXN_READ 1
7286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_TXN_WRITE 2
7287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
7237 7288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
7238 7289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Find the next prepared statement
7239 7290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3
7240 7291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7241 7292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^This interface returns a pointer to the next [prepared statement] after
@@ -10391,10 +10442,11 @@
10391 10442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
10392 10443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
10393 10444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10394 10445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10395 10446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Flush caches to disk mid-transaction
10447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** METHOD: sqlite3
10396 10448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10397 10449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If a write-transaction is open on [database connection] D when the
10398 10450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_db_cacheflush(D)] interface invoked, any dirty
10399 10451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pages in the pager-cache that are not currently in use are written out
10400 10452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to disk. A dirty page may be in use if a database cursor created by an
@@ -10423,10 +10475,11 @@
10423 10475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
10424 10476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
10425 10477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10426 10478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10427 10479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: The pre-update hook.
10480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** METHOD: sqlite3
10428 10481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10429 10482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^These interfaces are only available if SQLite is compiled using the
10430 10483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [SQLITE_ENABLE_PREUPDATE_HOOK] compile-time option.
10431 10484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10432 10485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The [sqlite3_preupdate_hook()] interface registers a callback function
@@ -10525,10 +10578,11 @@
10525 10578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_preupdate_new(sqlite3 *, int, sqlite3_value **);
10526 10579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
10527 10580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10528 10581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10529 10582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Low-level system error code
10583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** METHOD: sqlite3
10530 10584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10531 10585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^Attempt to return the underlying operating system error code or error
10532 10586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** number that caused the most recent I/O error or failure to open a file.
10533 10587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The return value is OS-dependent. For example, on unix systems, after
10534 10588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_open_v2()] returns [SQLITE_CANTOPEN], this interface could be
@@ -13295,15 +13349,11 @@
13295 13349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13296 13350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
13297 13351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The maximum depth of an expression tree. This is limited to
13298 13352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** some extent by SQLITE_MAX_SQL_LENGTH. But sometime you might
13299 13353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** want to place more severe limits on the complexity of an
13300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** expression.
13301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
13302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** A value of 0 used to mean that the limit was not enforced.
13303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** But that is no longer true. The limit is now strictly enforced
13304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** at all times.
13354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** expression. A value of 0 means that there is no limit.
13305 13355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
13306 13356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_MAX_EXPR_DEPTH
13307 13357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_MAX_EXPR_DEPTH 1000
13308 13358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
13309 13359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -15080,12 +15130,11 @@
15080 15130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree*, int);
15081 15131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeCommit(Btree*);
15082 15132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeRollback(Btree*,int,int);
15083 15133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeBeginStmt(Btree*,int);
15084 15134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeCreateTable(Btree*, Pgno*, int flags);
15085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3BtreeIsInTrans(Btree*);
15086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3BtreeIsInReadTrans(Btree*);
15135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3BtreeTxnState(Btree*);
15087 15136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeIsInBackup(Btree*);
15088 15137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void *sqlite3BtreeSchema(Btree *, int, void(*)(void *));
15089 15138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeSchemaLocked(Btree *pBtree);
15090 15139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SHARED_CACHE
15091 15140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeLockTable(Btree *pBtree, int iTab, u8 isWriteLock);
@@ -18076,11 +18125,11 @@
18076 18125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Skip 0x001000 /* Operator does not contribute to affinity */
18077 18126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Reduced 0x002000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
18078 18127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_TokenOnly 0x004000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
18079 18128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Win 0x008000 /* Contains window functions */
18080 18129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_MemToken 0x010000 /* Need to sqlite3DbFree() Expr.zToken */
18081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 0x020000 // available for reuse */
18130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define EP_IfNullRow 0x020000 /* The TK_IF_NULL_ROW opcode */
18082 18131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Unlikely 0x040000 /* unlikely() or likelihood() function */
18083 18132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_ConstFunc 0x080000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */
18084 18133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
18085 18134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Subquery 0x200000 /* Tree contains a TK_SELECT operator */
18086 18135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Alias 0x400000 /* Is an alias for a result set column */
@@ -18314,13 +18363,13 @@
18314 18363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the OR optimization */
18315 18364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_GROUPBY 0x0040 /* pOrderBy is really a GROUP BY */
18316 18365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_DISTINCTBY 0x0080 /* pOrderby is really a DISTINCT clause */
18317 18366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_WANT_DISTINCT 0x0100 /* All output needs to be distinct */
18318 18367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_SORTBYGROUP 0x0200 /* Support sqlite3WhereIsSorted() */
18319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define WHERE_SEEK_TABLE 0x0400 /* Do not defer seeks on main table */
18368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 0x0400 not currently used */
18320 18369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_ORDERBY_LIMIT 0x0800 /* ORDERBY+LIMIT on the inner loop */
18321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define WHERE_SEEK_UNIQ_TABLE 0x1000 /* Do not defer seeks if unique */
18370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 0x1000 not currently used */
18322 18371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 0x2000 not currently used */
18323 18372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_USE_LIMIT 0x4000 /* Use the LIMIT in cost estimates */
18324 18373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 0x8000 not currently used */
18325 18374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18326 18375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Allowed return values from sqlite3WhereIsDistinct()
@@ -33470,11 +33519,12 @@
33470 33519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef HAVE_GETHOSTUUID
33471 33520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define HAVE_GETHOSTUUID 0
33472 33521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# if defined(__APPLE__) && ((__MAC_OS_X_VERSION_MIN_REQUIRED > 1050) || \
33473 33522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(__IPHONE_OS_VERSION_MIN_REQUIRED > 2000))
33474 33523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# if (!defined(TARGET_OS_EMBEDDED) || (TARGET_OS_EMBEDDED==0)) \
33475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (!defined(TARGET_IPHONE_SIMULATOR) || (TARGET_IPHONE_SIMULATOR==0))
33524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (!defined(TARGET_IPHONE_SIMULATOR) || (TARGET_IPHONE_SIMULATOR==0))\
33525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (!defined(TARGET_OS_MACCATALYST) || (TARGET_OS_MACCATALYST==0))
33476 33526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# undef HAVE_GETHOSTUUID
33477 33527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define HAVE_GETHOSTUUID 1
33478 33528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# else
33479 33529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# warning "gethostuuid() is disabled."
33480 33530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# endif
@@ -63837,14 +63887,28 @@
63837 63887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Btree.inTrans may take one of the following values.
63838 63888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
63839 63889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the shared-data extension is enabled, there may be multiple users
63840 63890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the Btree structure. At most one of these may open a write transaction,
63841 63891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** but any number may have active read transactions.
63892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
63893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** These values must match SQLITE_TXN_NONE, SQLITE_TXN_READ, and
63894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLITE_TXN_WRITE
63842 63895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
63843 63896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TRANS_NONE 0
63844 63897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TRANS_READ 1
63845 63898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TRANS_WRITE 2
63899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
63900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if TRANS_NONE!=SQLITE_TXN_NONE
63901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # error wrong numeric code for no-transaction
63902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
63903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if TRANS_READ!=SQLITE_TXN_READ
63904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # error wrong numeric code for read-transaction
63905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
63906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if TRANS_WRITE!=SQLITE_TXN_WRITE
63907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # error wrong numeric code for write-transaction
63908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
63909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
63846 63910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
63847 63911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
63848 63912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** An instance of this object represents a single database file.
63849 63913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
63850 63914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A single database file can be in use at the same time by two
@@ -74791,15 +74855,16 @@
74791 74855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pBt->pPager!=0 );
74792 74856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3PagerJournalname(p->pBt->pPager);
74793 74857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74794 74858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
74795 74859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
74796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Return non-zero if a transaction is active.
74860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return one of SQLITE_TXN_NONE, SQLITE_TXN_READ, or SQLITE_TXN_WRITE
74861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to describe the current transaction state of Btree p.
74797 74862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
74798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3BtreeIsInTrans(Btree *p){
74863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3BtreeTxnState(Btree *p){
74799 74864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p==0 || sqlite3_mutex_held(p->db->mutex) );
74800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return (p && (p->inTrans==TRANS_WRITE));
74865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return p ? p->inTrans : 0;
74801 74866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74802 74867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
74803 74868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WAL
74804 74869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
74805 74870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Run a checkpoint on the Btree passed as the first argument.
@@ -74824,18 +74889,12 @@
74824 74889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
74825 74890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74826 74891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
74827 74892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
74828 74893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
74829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Return non-zero if a read (or write) transaction is active.
74894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return true if there is currently a backup running on Btree p.
74830 74895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
74831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3BtreeIsInReadTrans(Btree *p){
74832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p );
74833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3_mutex_held(p->db->mutex) );
74834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return p->inTrans!=TRANS_NONE;
74835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
74836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
74837 74896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeIsInBackup(Btree *p){
74838 74897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p );
74839 74898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(p->db->mutex) );
74840 74899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p->nBackup!=0;
74841 74900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -75177,11 +75236,11 @@
75177 75236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** second argument. If there is not, return SQLITE_OK. Otherwise, if there
75178 75237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is an open read-transaction, return SQLITE_ERROR and leave an error
75179 75238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** message in database handle db.
75180 75239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
75181 75240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int checkReadTransaction(sqlite3 *db, Btree *p){
75182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3BtreeIsInReadTrans(p) ){
75241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeTxnState(p)!=SQLITE_TXN_NONE ){
75183 75242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorWithMsg(db, SQLITE_ERROR, "destination database is in use");
75184 75243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
75185 75244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75186 75245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
75187 75246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -75408,11 +75467,11 @@
75408 75467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75409 75468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is no open read-transaction on the source database, open
75410 75469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** one now. If a transaction is opened here, then it will be closed
75411 75470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** before this function exits.
75412 75471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
75413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc==SQLITE_OK && 0==sqlite3BtreeIsInReadTrans(p->pSrc) ){
75472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_OK && SQLITE_TXN_NONE==sqlite3BtreeTxnState(p->pSrc) ){
75414 75473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeBeginTrans(p->pSrc, 0, 0);
75415 75474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bCloseTrans = 1;
75416 75475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75417 75476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75418 75477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the destination database has not yet been locked (i.e. if this
@@ -75780,11 +75839,11 @@
75780 75839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_file *pFd; /* File descriptor for database pTo */
75781 75840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_backup b;
75782 75841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(pTo);
75783 75842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(pFrom);
75784 75843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3BtreeIsInTrans(pTo) );
75844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3BtreeTxnState(pTo)==SQLITE_TXN_WRITE );
75786 75845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFd = sqlite3PagerFile(sqlite3BtreePager(pTo));
75787 75846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFd->pMethods ){
75788 75847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 nByte = sqlite3BtreeGetPageSize(pFrom)*(i64)sqlite3BtreeLastPage(pFrom);
75789 75848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3OsFileControl(pFd, SQLITE_FCNTL_OVERWRITE, &nByte);
75790 75849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_NOTFOUND ) rc = SQLITE_OK;
@@ -75816,11 +75875,11 @@
75816 75875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTo->pBt->btsFlags &= ~BTS_PAGESIZE_FIXED;
75817 75876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
75818 75877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3PagerClearCache(sqlite3BtreePager(b.pDest));
75819 75878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75820 75879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3BtreeIsInTrans(pTo)==0 );
75880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3BtreeTxnState(pTo)!=SQLITE_TXN_WRITE );
75822 75881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
copy_finished:
75823 75882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(pFrom);
75824 75883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(pTo);
75825 75884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
75826 75885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -80399,11 +80458,11 @@
80399 80458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** one database file has an open write transaction, a super-journal
80400 80459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** file is required for an atomic commit.
80401 80460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80402 80461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
80403 80462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt = db->aDb[i].pBt;
80404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3BtreeIsInTrans(pBt) ){
80463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeTxnState(pBt)==SQLITE_TXN_WRITE ){
80405 80464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Whether or not a database might need a super-journal depends upon
80406 80465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** its journal mode (among other things). This matrix determines which
80407 80466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** journal modes use a super-journal and which do not */
80408 80467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const u8 aMJNeeded[] = {
80409 80468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* DELETE */ 1,
@@ -80534,11 +80593,11 @@
80534 80593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** still have 'null' as the super-journal pointer, so they will roll
80535 80594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** back independently if a failure occurs.
80536 80595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80537 80596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<db->nDb; i++){
80538 80597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt = db->aDb[i].pBt;
80539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3BtreeIsInTrans(pBt) ){
80598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeTxnState(pBt)==SQLITE_TXN_WRITE ){
80540 80599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char const *zFile = sqlite3BtreeGetJournalname(pBt);
80541 80600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zFile==0 ){
80542 80601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue; /* Ignore TEMP and :memory: databases */
80543 80602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80544 80603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zFile[0]!=0 );
@@ -88871,11 +88930,11 @@
88871 88930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
88872 88931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->usesStmtJournal
88873 88932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pOp->p2
88874 88933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (db->autoCommit==0 || db->nVdbeRead>1)
88875 88934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
88876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3BtreeIsInTrans(pBt) );
88935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3BtreeTxnState(pBt)==SQLITE_TXN_WRITE );
88877 88936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->iStatement==0 ){
88878 88937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db->nStatement>=0 && db->nSavepoint>=0 );
88879 88938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->nStatement++;
88880 88939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStatement = db->nSavepoint + db->nStatement;
88881 88940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -92363,11 +92422,11 @@
92363 92422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92364 92423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
92365 92424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Open a transaction on the database file. Regardless of the journal
92366 92425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mode, this transaction always uses a rollback journal.
92367 92426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
92368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3BtreeIsInTrans(pBt)==0 );
92427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3BtreeTxnState(pBt)!=SQLITE_TXN_WRITE );
92369 92428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
92370 92429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeSetVersion(pBt, (eNew==PAGER_JOURNALMODE_WAL ? 2 : 1));
92371 92430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92372 92431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
92373 92432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -98828,11 +98887,11 @@
98828 98887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ISNOT: {
98829 98888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRight = sqlite3ExprSkipCollateAndLikely(pExpr->pRight);
98830 98889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_Reduced) );
98831 98890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Handle special cases of "x IS TRUE", "x IS FALSE", "x IS NOT TRUE",
98832 98891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and "x IS NOT FALSE". */
98833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pRight && pRight->op==TK_ID ){
98892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRight && (pRight->op==TK_ID || pRight->op==TK_TRUEFALSE) ){
98834 98893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = resolveExprStep(pWalker, pRight);
98835 98894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==WRC_Abort ) return WRC_Abort;
98836 98895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRight->op==TK_TRUEFALSE ){
98837 98896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op2 = pExpr->op;
98838 98897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_TRUTH;
@@ -99756,11 +99815,11 @@
99756 99815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SELECT a AS b FROM t1 WHERE b;
99757 99816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SELECT * FROM t1 WHERE (select a from t1);
99758 99817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
99759 99818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE char sqlite3ExprAffinity(const Expr *pExpr){
99760 99819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int op;
99761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( ExprHasProperty(pExpr, EP_Skip) ){
99820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( ExprHasProperty(pExpr, EP_Skip|EP_IfNullRow) ){
99762 99821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_COLLATE || pExpr->op==TK_IF_NULL_ROW );
99763 99822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->pLeft;
99764 99823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr!=0 );
99765 99824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99766 99825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = pExpr->op;
@@ -99827,11 +99886,11 @@
99827 99886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
99828 99887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Skip over any TK_COLLATE operators.
99829 99888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
99830 99889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE Expr *sqlite3ExprSkipCollate(Expr *pExpr){
99831 99890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( pExpr && ExprHasProperty(pExpr, EP_Skip) ){
99832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pExpr->op==TK_COLLATE || pExpr->op==TK_IF_NULL_ROW );
99891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->op==TK_COLLATE );
99833 99892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->pLeft;
99834 99893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99835 99894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr;
99836 99895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99837 99896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -99846,11 +99905,11 @@
99846 99905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
99847 99906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->x.pList->nExpr>0 );
99848 99907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_FUNCTION );
99849 99908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->x.pList->a[0].pExpr;
99850 99909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
99851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pExpr->op==TK_COLLATE || pExpr->op==TK_IF_NULL_ROW );
99910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->op==TK_COLLATE );
99852 99911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->pLeft;
99853 99912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99854 99913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99855 99914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr;
99856 99915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -100480,10 +100539,11 @@
100480 100539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
100481 100540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Propagate all EP_Propagate flags from the Expr.x.pList into
100482 100541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Expr.flags.
100483 100542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
100484 100543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p){
100544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->nErr ) return;
100485 100545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p && p->x.pList && !ExprHasProperty(p, EP_xIsSelect) ){
100486 100546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
100487 100547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100488 100548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100489 100549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define exprSetHeight(y)
@@ -109785,11 +109845,13 @@
109785 109845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109786 109846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i<2 ){
109787 109847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zErr),zErr, "cannot detach database %s", zName);
109788 109848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto detach_error;
109789 109849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3BtreeIsInReadTrans(pDb->pBt) || sqlite3BtreeIsInBackup(pDb->pBt) ){
109850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeTxnState(pDb->pBt)!=SQLITE_TXN_NONE
109851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || sqlite3BtreeIsInBackup(pDb->pBt)
109852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
109791 109853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zErr),zErr, "database %s is locked", zName);
109792 109854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto detach_error;
109793 109855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109794 109856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
109795 109857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If any TEMP triggers reference the schema being detached, move those
@@ -110445,18 +110507,19 @@
110445 110507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDb, /* Index of the database containing the table to lock */
110446 110508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Pgno iTab, /* Root page number of the table to be locked */
110447 110509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 isWriteLock, /* True for a write lock */
110448 110510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName /* Name of the table to be locked */
110449 110511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
110450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Parse *pToplevel = sqlite3ParseToplevel(pParse);
110512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Parse *pToplevel;
110451 110513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
110452 110514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nBytes;
110453 110515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TableLock *p;
110454 110516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iDb>=0 );
110455 110517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110456 110518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDb==1 ) return;
110457 110519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !sqlite3BtreeSharable(pParse->db->aDb[iDb].pBt) ) return;
110520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pToplevel = sqlite3ParseToplevel(pParse);
110458 110521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pToplevel->nTableLock; i++){
110459 110522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = &pToplevel->aTableLock[i];
110460 110523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->iDb==iDb && p->iTab==iTab ){
110461 110524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->isWriteLock = (p->isWriteLock || isWriteLock);
110462 110525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
@@ -110482,14 +110545,12 @@
110482 110545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Code an OP_TableLock instruction for each table locked by the
110483 110546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** statement (configured by calls to sqlite3TableLock()).
110484 110547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
110485 110548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void codeTableLocks(Parse *pParse){
110486 110549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
110487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Vdbe *pVdbe;
110488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
110489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pVdbe = sqlite3GetVdbe(pParse);
110490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pVdbe!=0 ); /* sqlite3GetVdbe cannot fail: VDBE already allocated */
110550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Vdbe *pVdbe = pParse->pVdbe;
110551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pVdbe!=0 );
110491 110552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110492 110553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pParse->nTableLock; i++){
110493 110554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TableLock *p = &pParse->aTableLock[i];
110494 110555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int p1 = p->iDb;
110495 110556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(pVdbe, OP_TableLock, p1, p->iTab, p->isWriteLock,
@@ -114858,19 +114919,19 @@
114858 114919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3SrcListDelete(sqlite3 *db, SrcList *pList){
114859 114920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
114860 114921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct SrcList_item *pItem;
114861 114922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pList==0 ) return;
114862 114923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pItem=pList->a, i=0; i<pList->nSrc; i++, pItem++){
114863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, pItem->zDatabase);
114924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->zDatabase ) sqlite3DbFreeNN(db, pItem->zDatabase);
114864 114925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pItem->zName);
114865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, pItem->zAlias);
114926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->zAlias ) sqlite3DbFreeNN(db, pItem->zAlias);
114866 114927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isIndexedBy ) sqlite3DbFree(db, pItem->u1.zIndexedBy);
114867 114928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isTabFunc ) sqlite3ExprListDelete(db, pItem->u1.pFuncArg);
114868 114929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DeleteTable(db, pItem->pTab);
114869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3SelectDelete(db, pItem->pSelect);
114870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDelete(db, pItem->pOn);
114871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3IdListDelete(db, pItem->pUsing);
114930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->pSelect ) sqlite3SelectDelete(db, pItem->pSelect);
114931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->pOn ) sqlite3ExprDelete(db, pItem->pOn);
114932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->pUsing ) sqlite3IdListDelete(db, pItem->pUsing);
114872 114933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114873 114934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFreeNN(db, pList);
114874 114935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114875 114936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
114876 114937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -115127,24 +115188,26 @@
115127 115188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Record the fact that the schema cookie will need to be verified
115128 115189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for database iDb. The code to actually verify the schema cookie
115129 115190 { 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
115130 115191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** later, by sqlite3FinishCoding().
115131 115192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
115132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3CodeVerifySchema(Parse *pParse, int iDb){
115133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Parse *pToplevel = sqlite3ParseToplevel(pParse);
115134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
115135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( iDb>=0 && iDb<pParse->db->nDb );
115136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pParse->db->aDb[iDb].pBt!=0 || iDb==1 );
115193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sqlite3CodeVerifySchemaAtToplevel(Parse *pToplevel, int iDb){
115194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( iDb>=0 && iDb<pToplevel->db->nDb );
115195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pToplevel->db->aDb[iDb].pBt!=0 || iDb==1 );
115137 115196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iDb<SQLITE_MAX_ATTACHED+2 );
115138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3SchemaMutexHeld(pParse->db, iDb, 0) );
115197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3SchemaMutexHeld(pToplevel->db, iDb, 0) );
115139 115198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( DbMaskTest(pToplevel->cookieMask, iDb)==0 ){
115140 115199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DbMaskSet(pToplevel->cookieMask, iDb);
115141 115200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !OMIT_TEMPDB && iDb==1 ){
115142 115201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTempDatabase(pToplevel);
115143 115202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115144 115203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115145 115204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3CodeVerifySchema(Parse *pParse, int iDb){
115206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3CodeVerifySchemaAtToplevel(sqlite3ParseToplevel(pParse), iDb);
115207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
115146 115209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115147 115210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
115148 115211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If argument zDb is NULL, then call sqlite3CodeVerifySchema() for each
115149 115212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** attached database. Otherwise, invoke it for the database named zDb only.
115150 115213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -115172,11 +115235,11 @@
115172 115235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** can be checked before any changes are made to the database, it is never
115173 115236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** necessary to undo a write and the checkpoint should not be set.
115174 115237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
115175 115238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3BeginWriteOperation(Parse *pParse, int setStatement, int iDb){
115176 115239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pToplevel = sqlite3ParseToplevel(pParse);
115177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3CodeVerifySchema(pParse, iDb);
115240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3CodeVerifySchemaAtToplevel(pToplevel, iDb);
115178 115241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DbMaskSet(pToplevel->writeMask, iDb);
115179 115242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pToplevel->isMultiWrite |= setStatement;
115180 115243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115181 115244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115182 115245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -115223,11 +115286,13 @@
115223 115286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int onError, /* Constraint type */
115224 115287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *p4, /* Error message */
115225 115288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i8 p4type, /* P4_STATIC or P4_TRANSIENT */
115226 115289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 p5Errmsg /* P5_ErrMsg type */
115227 115290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
115228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Vdbe *v = sqlite3GetVdbe(pParse);
115291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Vdbe *v;
115292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->pVdbe!=0 );
115293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = sqlite3GetVdbe(pParse);
115229 115294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (errCode&0xff)==SQLITE_CONSTRAINT || pParse->nested );
115230 115295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( onError==OE_Abort ){
115231 115296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MayAbort(pParse);
115232 115297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115233 115298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Halt, errCode, onError, 0, p4, p4type);
@@ -116504,11 +116569,11 @@
116504 116569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Clear, pIdx->tnum, iDb);
116505 116570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116506 116571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
116507 116572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_TRUNCATE_OPTIMIZATION */
116508 116573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
116509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u16 wcf = WHERE_ONEPASS_DESIRED|WHERE_DUPLICATES_OK|WHERE_SEEK_TABLE;
116574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u16 wcf = WHERE_ONEPASS_DESIRED|WHERE_DUPLICATES_OK;
116510 116575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sNC.ncFlags & NC_VarSelect ) bComplex = 1;
116511 116576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wcf |= (bComplex ? 0 : WHERE_ONEPASS_MULTIROW);
116512 116577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( HasRowid(pTab) ){
116513 116578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* For a rowid table, initialize the RowSet to an empty set */
116514 116579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPk = 0;
@@ -116540,10 +116605,13 @@
116540 116605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo==0 ) goto delete_from_cleanup;
116541 116606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eOnePass = sqlite3WhereOkOnePass(pWInfo, aiCurOnePass);
116542 116607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( IsVirtual(pTab)==0 || eOnePass!=ONEPASS_MULTI );
116543 116608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( IsVirtual(pTab) || bComplex || eOnePass!=ONEPASS_OFF );
116544 116609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eOnePass!=ONEPASS_SINGLE ) sqlite3MultiWrite(pParse);
116610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3WhereUsesDeferredSeek(pWInfo) ){
116611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_FinishSeek, iTabCur);
116612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116545 116613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
116546 116614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Keep track of the number of rows to be deleted */
116547 116615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( memCnt ){
116548 116616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AddImm, memCnt, 1);
116549 116617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -116574,10 +116642,11 @@
116574 116642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(aToOpen, 1, nIdx+1);
116575 116643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aToOpen[nIdx+1] = 0;
116576 116644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aiCurOnePass[0]>=0 ) aToOpen[aiCurOnePass[0]-iTabCur] = 0;
116577 116645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aiCurOnePass[1]>=0 ) aToOpen[aiCurOnePass[1]-iTabCur] = 0;
116578 116646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrEphOpen ) sqlite3VdbeChangeToNoop(v, addrEphOpen);
116647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrBypass = sqlite3VdbeMakeLabel(pParse);
116579 116648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
116580 116649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPk ){
116581 116650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Add the PK key for this row to the temporary table */
116582 116651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iKey = ++pParse->nMem;
116583 116652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKey = 0; /* Zero tells OP_Found to use a composite key */
@@ -116587,17 +116656,10 @@
116587 116656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
116588 116657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Add the rowid of the row to be deleted to the RowSet */
116589 116658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKey = 1; /* OP_DeferredSeek always uses a single rowid */
116590 116659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_RowSetAdd, iRowSet, iKey);
116591 116660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
116593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
116594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If this DELETE cannot use the ONEPASS strategy, this is the
116595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** end of the WHERE loop */
116596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( eOnePass!=ONEPASS_OFF ){
116597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrBypass = sqlite3VdbeMakeLabel(pParse);
116598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
116599 116661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereEnd(pWInfo);
116600 116662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116601 116663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
116602 116664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Unless this is a view, open cursors for the table we are
116603 116665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** deleting from and all its indices. If this is a view, then the
@@ -120583,11 +120645,12 @@
120583 120645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab, /* The table to be opened */
120584 120646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int opcode /* OP_OpenRead or OP_OpenWrite */
120585 120647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
120586 120648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v;
120587 120649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !IsVirtual(pTab) );
120588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v = sqlite3GetVdbe(pParse);
120650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->pVdbe!=0 );
120651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = pParse->pVdbe;
120589 120652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( opcode==OP_OpenWrite || opcode==OP_OpenRead );
120590 120653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableLock(pParse, iDb, pTab->tnum,
120591 120654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(opcode==OP_OpenWrite)?1:0, pTab->zName);
120592 120655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( HasRowid(pTab) ){
120593 120656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, opcode, iCur, pTab->tnum, iDb, pTab->nNVCol);
@@ -122082,11 +122145,11 @@
122082 122145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Trigger *pTrigger; /* List of DELETE triggers on the table pTab */
122083 122146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nReplaceTrig = 0; /* Number of replace triggers coded */
122084 122147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
122085 122148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isUpdate = regOldData!=0;
122086 122149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db = pParse->db;
122087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v = sqlite3GetVdbe(pParse);
122150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = pParse->pVdbe;
122088 122151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( v!=0 );
122089 122152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab->pSelect==0 ); /* This table is not a VIEW */
122090 122153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCol = pTab->nCol;
122091 122154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
122092 122155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pPk is the PRIMARY KEY index for WITHOUT ROWID tables and NULL for
@@ -122855,11 +122918,11 @@
122855 122918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( update_flags==0
122856 122919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| update_flags==OPFLAG_ISUPDATE
122857 122920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| update_flags==(OPFLAG_ISUPDATE|OPFLAG_SAVEPOSITION)
122858 122921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
122859 122922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
122860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v = sqlite3GetVdbe(pParse);
122923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = pParse->pVdbe;
122861 122924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( v!=0 );
122862 122925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab->pSelect==0 ); /* This table is not a VIEW */
122863 122926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
122864 122927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* All REPLACE indexes are at the end of the list */
122865 122928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIdx->onError!=OE_Replace
@@ -122956,11 +123019,11 @@
122956 123019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** variables *piDataCur and *piIdxCur uninitialized so that valgrind
122957 123020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** can detect if they are used by mistake in the caller. */
122958 123021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
122959 123022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
122960 123023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
122961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v = sqlite3GetVdbe(pParse);
123024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = pParse->pVdbe;
122962 123025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( v!=0 );
122963 123026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iBase<0 ) iBase = pParse->nTab;
122964 123027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDataCur = iBase++;
122965 123028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( piDataCur ) *piDataCur = iDataCur;
122966 123029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( HasRowid(pTab) && (aToOpen==0 || aToOpen[0]) ){
@@ -125874,11 +125937,13 @@
125874 125937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from default, or when 'file' and the temp_store_directory has changed
125875 125938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
125876 125939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int invalidateTempStorage(Parse *pParse){
125877 125940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
125878 125941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->aDb[1].pBt!=0 ){
125879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !db->autoCommit || sqlite3BtreeIsInReadTrans(db->aDb[1].pBt) ){
125942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !db->autoCommit
125943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || sqlite3BtreeTxnState(db->aDb[1].pBt)!=SQLITE_TXN_NONE
125944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
125880 125945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "temporary storage cannot be changed "
125881 125946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"from within a transaction");
125882 125947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
125883 125948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
125884 125949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeClose(db->aDb[1].pBt);
@@ -128577,11 +128642,11 @@
128577 128642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
128578 128643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is not already a read-only (or read-write) transaction opened
128579 128644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on the b-tree database, open one now. If a transaction is opened, it
128580 128645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will be closed before this function returns. */
128581 128646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(pDb->pBt);
128582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !sqlite3BtreeIsInReadTrans(pDb->pBt) ){
128647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeTxnState(pDb->pBt)==SQLITE_TXN_NONE ){
128583 128648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeBeginTrans(pDb->pBt, 0, 0);
128584 128649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
128585 128650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SetString(pzErrMsg, db, sqlite3ErrStr(rc));
128586 128651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto initone_error_out;
128587 128652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -128820,11 +128885,11 @@
128820 128885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pBt==0 ) continue;
128821 128886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
128822 128887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is not already a read-only (or read-write) transaction opened
128823 128888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on the b-tree database, open one now. If a transaction is opened, it
128824 128889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will be closed immediately after reading the meta-value. */
128825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !sqlite3BtreeIsInReadTrans(pBt) ){
128890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeTxnState(pBt)==SQLITE_TXN_NONE ){
128826 128891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeBeginTrans(pBt, 0, 0);
128827 128892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_NOMEM || rc==SQLITE_IOERR_NOMEM ){
128828 128893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OomFault(db);
128829 128894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128830 128895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ) return;
@@ -132803,11 +132868,11 @@
132803 132868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubst->isLeftJoin && pCopy->op!=TK_COLUMN ){
132804 132869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&ifNullRow, 0, sizeof(ifNullRow));
132805 132870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ifNullRow.op = TK_IF_NULL_ROW;
132806 132871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ifNullRow.pLeft = pCopy;
132807 132872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ifNullRow.iTable = pSubst->iNewTable;
132808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ifNullRow.flags = EP_Skip;
132873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ifNullRow.flags = EP_IfNullRow;
132809 132874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCopy = &ifNullRow;
132810 132875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132811 132876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( ExprHasProperty(pCopy, EP_Subquery) );
132812 132877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = sqlite3ExprDup(db, pCopy, 0);
132813 132878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew && pSubst->isLeftJoin ){
@@ -138304,11 +138369,11 @@
138304 138369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Do not consider a single-pass strategy for a multi-row update if
138305 138370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** there are any triggers or foreign keys to process, or rows may
138306 138371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be deleted as a result of REPLACE conflict handling. Any of these
138307 138372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** things might disturb a cursor being used to scan through the table
138308 138373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or index, causing a single-pass approach to malfunction. */
138309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags = WHERE_ONEPASS_DESIRED|WHERE_SEEK_UNIQ_TABLE;
138374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags = WHERE_ONEPASS_DESIRED;
138310 138375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pParse->nested && !pTrigger && !hasFK && !chngKey && !bReplace ){
138311 138376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags |= WHERE_ONEPASS_MULTIROW;
138312 138377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
138313 138378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, 0, 0, flags,iIdxCur);
138314 138379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo==0 ) goto update_cleanup;
@@ -139507,12 +139572,12 @@
139507 139572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BTREE_TEXT_ENCODING, 0, /* Preserve the text encoding */
139508 139573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BTREE_USER_VERSION, 0, /* Preserve the user version */
139509 139574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BTREE_APPLICATION_ID, 0, /* Preserve the application id */
139510 139575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
139511 139576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( 1==sqlite3BtreeIsInTrans(pTemp) );
139513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOut!=0 || 1==sqlite3BtreeIsInTrans(pMain) );
139577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( SQLITE_TXN_WRITE==sqlite3BtreeTxnState(pTemp) );
139578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOut!=0 || SQLITE_TXN_WRITE==sqlite3BtreeTxnState(pMain) );
139514 139579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139515 139580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Copy Btree meta values */
139516 139581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<ArraySize(aCopy); i+=2){
139517 139582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* GetMeta() and UpdateMeta() cannot fail in this context because
139518 139583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** we already have page 1 loaded into cache and marked dirty. */
@@ -141406,10 +141471,11 @@
141406 141471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned untestedTerms :1; /* Not all WHERE terms resolved by outer loop */
141407 141472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bOrderedInnerLoop:1;/* True if only the inner-most loop is ordered */
141408 141473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned sorted :1; /* True if really sorted (not just grouped) */
141409 141474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LogEst nRowOut; /* Estimated number of output rows */
141410 141475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTop; /* The very beginning of the WHERE loop */
141476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iEndWhere; /* End of the WHERE clause itself */
141411 141477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pLoops; /* List of all WhereLoop objects */
141412 141478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereExprMod *pExprMods; /* Expression modifications */
141413 141479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask revMask; /* Mask of ORDER BY terms that need reversing */
141414 141480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereClause sWC; /* Decomposition of the WHERE clause */
141415 141481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereMaskSet sMaskSet; /* Map cursor numbers to bitmasks */
@@ -143275,11 +143341,12 @@
143275 143341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nConstraint = nEq;
143276 143342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRangeStart ){
143277 143343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRight = pRangeStart->pExpr->pRight;
143278 143344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeExprOrVector(pParse, pRight, regBase+nEq, nBtm);
143279 143345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereLikeOptimizationStringFixup(v, pLevel, pRangeStart);
143280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pRangeStart->wtFlags & TERM_VNULL)==0
143346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !bRev
143347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pRangeStart->wtFlags & TERM_VNULL)==0
143281 143348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3ExprCanBeNull(pRight)
143282 143349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
143283 143350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IsNull, regBase+nEq, addrNxt);
143284 143351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
143285 143352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -143353,11 +143420,12 @@
143353 143420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nConstraint = nEq;
143354 143421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRangeEnd ){
143355 143422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRight = pRangeEnd->pExpr->pRight;
143356 143423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeExprOrVector(pParse, pRight, regBase+nEq, nTop);
143357 143424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereLikeOptimizationStringFixup(v, pLevel, pRangeEnd);
143358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pRangeEnd->wtFlags & TERM_VNULL)==0
143425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bRev
143426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pRangeEnd->wtFlags & TERM_VNULL)==0
143359 143427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3ExprCanBeNull(pRight)
143360 143428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
143361 143429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IsNull, regBase+nEq, addrNxt);
143362 143430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
143363 143431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -143429,21 +143497,11 @@
143429 143497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
omitTable = (pLoop->wsFlags & WHERE_IDX_ONLY)!=0
143430 143498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE)==0;
143431 143499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( omitTable ){
143432 143500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pIdx is a covering index. No need to access the main table. */
143433 143501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( HasRowid(pIdx->pTable) ){
143434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pWInfo->wctrlFlags & WHERE_SEEK_TABLE)
143435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || ( (pWInfo->wctrlFlags & WHERE_SEEK_UNIQ_TABLE)!=0
143436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (pWInfo->eOnePass==ONEPASS_SINGLE || pLoop->nLTerm==0) )
143437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
143438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iRowidReg = ++pParse->nMem;
143439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IdxRowid, iIdxCur, iRowidReg);
143440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_NotExists, iCur, 0, iRowidReg);
143441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeCoverage(v);
143442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
143443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- codeDeferredSeek(pWInfo, pIdx, iCur, iIdxCur);
143444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
143502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ codeDeferredSeek(pWInfo, pIdx, iCur, iIdxCur);
143445 143503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( iCur!=iIdxCur ){
143446 143504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pPk = sqlite3PrimaryKeyIndex(pIdx->pTable);
143447 143505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRowidReg = sqlite3GetTempRange(pParse, pPk->nKeyCol);
143448 143506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<pPk->nKeyCol; j++){
143449 143507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = sqlite3TableColumnToIndex(pIdx, pPk->aiColumn[j]);
@@ -143566,11 +143624,10 @@
143566 143624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRowid = 0; /* Register holding rowid */
143567 143625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLoopBody = sqlite3VdbeMakeLabel(pParse);/* Start of loop body */
143568 143626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRetInit; /* Address of regReturn init */
143569 143627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int untestedTerms = 0; /* Some terms not completely tested */
143570 143628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii; /* Loop counter */
143571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u16 wctrlFlags; /* Flags for sub-WHERE clause */
143572 143629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pAndExpr = 0; /* An ".. AND (...)" expression */
143573 143630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = pTabItem->pTab;
143574 143631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
143575 143632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm = pLoop->aLTerm[0];
143576 143633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTerm!=0 );
@@ -143667,11 +143724,10 @@
143667 143724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
143668 143725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Run a separate WHERE clause for each term of the OR clause. After
143669 143726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** eliminating duplicates from other WHERE clauses, the action for each
143670 143727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sub-WHERE clause is to to invoke the main loop body as a subroutine.
143671 143728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
143672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wctrlFlags = WHERE_OR_SUBCLAUSE | (pWInfo->wctrlFlags & WHERE_SEEK_TABLE);
143673 143729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExplainQueryPlan((pParse, 1, "MULTI-INDEX OR"));
143674 143730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pOrWc->nTerm; ii++){
143675 143731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pOrTerm = &pOrWc->a[ii];
143676 143732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrTerm->leftCursor==iCur || (pOrTerm->eOperator & WO_AND)!=0 ){
143677 143733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereInfo *pSubWInfo; /* Info for single OR-term scan */
@@ -143686,11 +143742,11 @@
143686 143742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
143687 143743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Loop through table entries that match term pOrTerm. */
143688 143744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExplainQueryPlan((pParse, 1, "INDEX %d", ii+1));
143689 143745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WHERETRACE(0xffff, ("Subplan for OR-clause:\n"));
143690 143746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSubWInfo = sqlite3WhereBegin(pParse, pOrTab, pOrExpr, 0, 0,
143691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wctrlFlags, iCovCur);
143747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE_OR_SUBCLAUSE, iCovCur);
143692 143748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSubWInfo || pParse->nErr || db->mallocFailed );
143693 143749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubWInfo ){
143694 143750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pSubLoop;
143695 143751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrExplain = sqlite3WhereExplainOneScan(
143696 143752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse, pOrTab, &pSubWInfo->a[0], 0
@@ -143783,10 +143839,13 @@
143783 143839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
143784 143840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSubWInfo->a[0].iIdxCur==iCovCur );
143785 143841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCov = pSubLoop->u.btree.pIndex;
143786 143842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
143787 143843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCov = 0;
143844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
143845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3WhereUsesDeferredSeek(pSubWInfo) ){
143846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWInfo->bDeferredSeek = 1;
143788 143847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
143789 143848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
143790 143849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Finish the loop through table entries that match term pOrTerm. */
143791 143850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereEnd(pSubWInfo);
143792 143851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExplainQueryPlanPop(pParse);
@@ -149662,20 +149721,28 @@
149662 149721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sorting cost to:
149663 149722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
149664 149723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cost = (3.0 * N * log(N)) * (Y/X)
149665 149724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
149666 149725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The (Y/X) term is implemented using stack variable rScale
149667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** below. */
149726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** below.
149727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
149668 149728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LogEst rScale, rSortCost;
149669 149729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nOrderBy>0 && 66==sqlite3LogEst(100) );
149670 149730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rScale = sqlite3LogEst((nOrderBy-nSorted)*100/nOrderBy) - 66;
149671 149731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rSortCost = nRow + rScale + 16;
149672 149732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149673 149733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Multiple by log(M) where M is the number of output rows.
149674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Use the LIMIT for M if it is smaller */
149734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Use the LIMIT for M if it is smaller. Or if this sort is for
149735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a DISTINT operator, M will be the number of distinct output
149736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** rows, so fudge it downwards a bit.
149737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
149675 149738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pWInfo->wctrlFlags & WHERE_USE_LIMIT)!=0 && pWInfo->iLimit<nRow ){
149676 149739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nRow = pWInfo->iLimit;
149740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (pWInfo->wctrlFlags & WHERE_WANT_DISTINCT) ){
149741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* TUNING: In the sort for a DISTINCT operator, assume that the DISTINCT
149742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** reduces the number of output rows by a factor of 2 */
149743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nRow>10 ) nRow -= 10; assert( 10==sqlite3LogEst(2) );
149677 149744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149678 149745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rSortCost += estLog(nRow);
149679 149746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rSortCost;
149680 149747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149681 149748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -150855,10 +150922,11 @@
150855 150922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
150856 150923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
150857 150924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
150858 150925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Done. */
150859 150926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeModuleComment((v, "Begin WHERE-core"));
150927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWInfo->iEndWhere = sqlite3VdbeCurrentAddr(v);
150860 150928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pWInfo;
150861 150929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
150862 150930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump here if malloc fails */
150863 150931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereBeginError:
150864 150932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo ){
@@ -150898,10 +150966,11 @@
150898 150966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
150899 150967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLevel *pLevel;
150900 150968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pLoop;
150901 150969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pTabList = pWInfo->pTabList;
150902 150970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
150971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iEnd = sqlite3VdbeCurrentAddr(v);
150903 150972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
150904 150973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate loop termination code.
150905 150974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
150906 150975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeModuleComment((v, "End WHERE-core"));
150907 150976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=pWInfo->nLevel-1; i>=0; i--){
@@ -151035,11 +151104,11 @@
151035 151104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, pWInfo->iBreak);
151036 151105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
151037 151106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWInfo->nLevel<=pTabList->nSrc );
151038 151107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pLevel=pWInfo->a; i<pWInfo->nLevel; i++, pLevel++){
151039 151108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int k, last;
151040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeOp *pOp;
151109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeOp *pOp, *pLastOp;
151041 151110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx = 0;
151042 151111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct SrcList_item *pTabItem = &pTabList->a[pLevel->iFrom];
151043 151112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = pTabItem->pTab;
151044 151113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab!=0 );
151045 151114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop = pLevel->pWLoop;
@@ -151093,24 +151162,35 @@
151093 151162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = pLoop->u.btree.pIndex;
151094 151163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pLoop->wsFlags & WHERE_MULTI_OR ){
151095 151164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = pLevel->u.pCovidx;
151096 151165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151097 151166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx
151098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (pWInfo->eOnePass==ONEPASS_OFF || !HasRowid(pIdx->pTable))
151099 151167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !db->mallocFailed
151100 151168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
151101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- last = sqlite3VdbeCurrentAddr(v);
151102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- k = pLevel->addrBody;
151169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWInfo->eOnePass==ONEPASS_OFF || !HasRowid(pIdx->pTable) ){
151170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ last = iEnd;
151171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
151172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ last = pWInfo->iEndWhere;
151173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
151174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ k = pLevel->addrBody + 1;
151103 151175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
151104 151176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->flags & SQLITE_VdbeAddopTrace ){
151105 151177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("TRANSLATE opcodes in range %d..%d\n", k, last-1);
151106 151178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Proof that the "+1" on the k value above is safe */
151180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp = sqlite3VdbeGetOp(v, k - 1);
151181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->opcode!=OP_Column || pOp->p1!=pLevel->iTabCur );
151182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->opcode!=OP_Rowid || pOp->p1!=pLevel->iTabCur );
151183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->opcode!=OP_IfNullRow || pOp->p1!=pLevel->iTabCur );
151107 151184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
151108 151185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp = sqlite3VdbeGetOp(v, k);
151109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(; k<last; k++, pOp++){
151110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->p1!=pLevel->iTabCur ) continue;
151111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->opcode==OP_Column
151186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLastOp = pOp + (last - k);
151187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp<pLastOp );
151188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ do{
151189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p1!=pLevel->iTabCur ){
151190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* no-op */
151191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pOp->opcode==OP_Column
151112 151192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
151113 151193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pOp->opcode==OP_Offset
151114 151194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
151115 151195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
151116 151196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int x = pOp->p2;
@@ -151137,11 +151217,14 @@
151137 151217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OpcodeRewriteTrace(db, k, pOp);
151138 151218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pOp->opcode==OP_IfNullRow ){
151139 151219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p1 = pLevel->iIdxCur;
151140 151220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OpcodeRewriteTrace(db, k, pOp);
151141 151221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
151222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
151223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ k++;
151224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
151225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }while( (++pOp)<pLastOp );
151143 151226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
151144 151227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->flags & SQLITE_VdbeAddopTrace ) printf("TRANSLATE complete\n");
151145 151228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
151146 151229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151147 151230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -161894,11 +161977,11 @@
161894 161977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
161895 161978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(db->mutex);
161896 161979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnterAll(db);
161897 161980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
161898 161981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt = db->aDb[i].pBt;
161899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pBt && sqlite3BtreeIsInTrans(pBt) ){
161982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pBt && sqlite3BtreeTxnState(pBt)==SQLITE_TXN_WRITE ){
161900 161983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Pager *pPager = sqlite3BtreePager(pBt);
161901 161984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3PagerFlush(pPager);
161902 161985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_BUSY ){
161903 161986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bSeenBusy = 1;
161904 161987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_OK;
@@ -162237,10 +162320,40 @@
162237 162320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
162238 162321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->magic = SQLITE_MAGIC_ZOMBIE;
162239 162322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3LeaveMutexAndCloseZombie(db);
162240 162323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
162241 162324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
162325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
162326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
162327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the transaction state for a single databse, or the maximum
162328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** transaction state over all attached databases if zSchema is null.
162329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
162330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_API int sqlite3_txn_state(sqlite3 *db, const char *zSchema){
162331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iDb, nDb;
162332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iTxn = -1;
162333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_API_ARMOR
162334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !sqlite3SafetyCheckOk(db) ){
162335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)SQLITE_MISUSE_BKPT;
162336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return -1;
162337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
162338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
162339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(db->mutex);
162340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zSchema ){
162341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nDb = iDb = sqlite3FindDbName(db, zSchema);
162342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iDb<0 ) nDb--;
162343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
162344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iDb = 0;
162345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nDb = db->nDb-1;
162346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
162347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(; iDb<=nDb; iDb++){
162348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Btree *pBt = db->aDb[iDb].pBt;
162349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int x = pBt!=0 ? sqlite3BtreeTxnState(pBt) : SQLITE_TXN_NONE;
162350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( x>iTxn ) iTxn = x;
162351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
162352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(db->mutex);
162353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return iTxn;
162354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
162242 162355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
162243 162356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
162244 162357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Two variations on the public interface for closing a database
162245 162358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** connection. The sqlite3_close() version returns SQLITE_BUSY and
162246 162359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** leaves the connection option if there are unfinalized prepared
@@ -162398,11 +162511,11 @@
162398 162511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
schemaChange = (db->mDbFlags & DBFLAG_SchemaChange)!=0 && db->init.busy==0;
162399 162512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
162400 162513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<db->nDb; i++){
162401 162514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *p = db->aDb[i].pBt;
162402 162515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
162403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3BtreeIsInTrans(p) ){
162516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeTxnState(p)==SQLITE_TXN_WRITE ){
162404 162517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inTrans = 1;
162405 162518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
162406 162519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeRollback(p, tripCode, !schemaChange);
162407 162520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
162408 162521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -165437,11 +165550,11 @@
165437 165550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
165438 165551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->autoCommit==0 ){
165439 165552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDb = sqlite3FindDbName(db, zDb);
165440 165553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDb==0 || iDb>1 ){
165441 165554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt = db->aDb[iDb].pBt;
165442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( 0==sqlite3BtreeIsInTrans(pBt) ){
165555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( SQLITE_TXN_WRITE!=sqlite3BtreeTxnState(pBt) ){
165443 165556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeBeginTrans(pBt, 0, 0);
165444 165557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
165445 165558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3PagerSnapshotGet(sqlite3BtreePager(pBt), ppSnapshot);
165446 165559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
165447 165560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -165473,14 +165586,14 @@
165473 165586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->autoCommit==0 ){
165474 165587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDb;
165475 165588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3FindDbName(db, zDb);
165476 165589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDb==0 || iDb>1 ){
165477 165590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt = db->aDb[iDb].pBt;
165478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3BtreeIsInTrans(pBt)==0 ){
165591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeTxnState(pBt)!=SQLITE_TXN_WRITE ){
165479 165592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Pager *pPager = sqlite3BtreePager(pBt);
165480 165593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bUnlock = 0;
165481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3BtreeIsInReadTrans(pBt) ){
165594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeTxnState(pBt)!=SQLITE_TXN_NONE ){
165482 165595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->nVdbeActive==0 ){
165483 165596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3PagerSnapshotCheck(pPager, pSnapshot);
165484 165597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
165485 165598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bUnlock = 1;
165486 165599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeCommit(pBt);
@@ -165525,11 +165638,11 @@
165525 165638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
165526 165639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(db->mutex);
165527 165640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3FindDbName(db, zDb);
165528 165641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDb==0 || iDb>1 ){
165529 165642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt = db->aDb[iDb].pBt;
165530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( 0==sqlite3BtreeIsInReadTrans(pBt) ){
165643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( SQLITE_TXN_NONE==sqlite3BtreeTxnState(pBt) ){
165531 165644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeBeginTrans(pBt, 0, 0);
165532 165645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
165533 165646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3PagerSnapshotRecover(sqlite3BtreePager(pBt));
165534 165647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeCommit(pBt);
165535 165648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -225723,11 +225836,11 @@
225723 225836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
225724 225837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
225725 225838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
225726 225839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
225727 225840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
225728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2020-08-14 13:23:32 fca8dc8b578f215a969cd899336378966156154710873e68b3d9ac5881b0ff3f", -1, SQLITE_TRANSIENT);
225841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2020-08-26 10:50:48 6c716f4b556ea8f9c9f15cffd81cb970488eadf1d5da2ba6b366d3bdeb36e492", -1, SQLITE_TRANSIENT);
225729 225842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
225730 225843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
225731 225844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
225732 225845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if zName is the extension on one of the shadow tables used
225733 225846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by this module.
@@ -230506,12 +230619,12 @@
230506 230619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
230507 230620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_CORE */
230508 230621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
230509 230622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
230510 230623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of stmt.c ************************************************/
230511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if __LINE__!=230511
230624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if __LINE__!=230624
230512 230625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#undef SQLITE_SOURCE_ID
230513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2020-08-14 13:23:32 fca8dc8b578f215a969cd899336378966156154710873e68b3d9ac5881b0alt2"
230626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2020-08-26 10:50:48 6c716f4b556ea8f9c9f15cffd81cb970488eadf1d5da2ba6b366d3bdeb36alt2"
230514 230627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
230515 230628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Return the source-id for this library */
230516 230629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
230517 230630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************************** End of sqlite3.c ******************************/
230518 230631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!