@@ -1,8 +1,8 @@
1 1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******************************************************************************
2 2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This file is an amalgamation of many separate C source files from SQLite
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** version 3.8.8.3. By combining all the individual C code files into this
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** version 3.8.8. 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.
@@ -276,13 +276,13 @@
276 276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
277 277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: [sqlite3_libversion()],
278 278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
279 279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
280 280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION "3.8.8.3"
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION "3.8.8"
282 282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION_NUMBER 3008008
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2015-02-25 13:29:11 9d6c1880fb75660bbabd693175579529785f8a6b"
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2015-02-25 14:25:31 6d132e7a224ee68b5cefe9222944aac5760ffc20"
284 284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
285 285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
286 286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
287 287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version, sqlite3_sourceid
288 288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -1118,13 +1118,13 @@
1118 1118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and only needs to be supported when SQLITE_TEST is defined.
1119 1119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1120 1120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </ul>
1121 1121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1122 1122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_LOCKSTATE 1
1123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_GET_LOCKPROXYFILE 2
1124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SET_LOCKPROXYFILE 3
1125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_LAST_ERRNO 4
1123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_FCNTL_GET_LOCKPROXYFILE 2
1124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_FCNTL_SET_LOCKPROXYFILE 3
1125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_FCNTL_LAST_ERRNO 4
1126 1126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_SIZE_HINT 5
1127 1127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_CHUNK_SIZE 6
1128 1128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_FILE_POINTER 7
1129 1129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_SYNC_OMITTED 8
1130 1130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_WIN32_AV_RETRY 9
@@ -1139,10 +1139,16 @@
1139 1139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_TRACE 19
1140 1140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_HAS_MOVED 20
1141 1141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_SYNC 21
1142 1142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_COMMIT_PHASETWO 22
1143 1143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FCNTL_WIN32_SET_HANDLE 23
1144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* deprecated names */
1146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
1147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SET_LOCKPROXYFILE SQLITE_FCNTL_SET_LOCKPROXYFILE
1148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_LAST_ERRNO SQLITE_FCNTL_LAST_ERRNO
1149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1144 1150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1145 1151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1146 1152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Mutex Handle
1147 1153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1148 1154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The mutex module within SQLite defines [sqlite3_mutex] to be an
@@ -2400,10 +2406,14 @@
2400 2406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2401 2407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Formatted String Printing Functions
2402 2408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2403 2409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These routines are work-alikes of the "printf()" family of functions
2404 2410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from the standard C library.
2411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** These routines understand most of the common K&R formatting options,
2412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** plus some additional non-standard formats, detailed below.
2413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Note that some of the more obscure formatting options from recent
2414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** C-library standards are omitted from this implementation.
2405 2415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2406 2416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
2407 2417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** results into memory obtained from [sqlite3_malloc()].
2408 2418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The strings returned by these two routines should be
2409 2419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** released by [sqlite3_free()]. ^Both routines return a
@@ -2432,11 +2442,11 @@
2432 2442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf().
2433 2443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2434 2444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These routines all implement some additional formatting
2435 2445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** options that are useful for constructing SQL statements.
2436 2446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** All of the usual printf() formatting options apply. In addition, there
2437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is are "%q", "%Q", and "%z" options.
2447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is are "%q", "%Q", "%w" and "%z" options.
2438 2448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2439 2449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(The %q option works like %s in that it substitutes a nul-terminated
2440 2450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** string from the argument list. But %q also doubles every '\'' character.
2441 2451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %q is designed for use inside a string literal.)^ By doubling each '\''
2442 2452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** character it escapes that character and allows it to be inserted into
@@ -2484,10 +2494,16 @@
2484 2494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_free(zSQL);
2485 2495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </pre></blockquote>
2486 2496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2487 2497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The code above will render a correct SQL statement in the zSQL
2488 2498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** variable even if the zText variable is a NULL pointer.
2499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
2500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^(The "%w" formatting option is like "%q" except that it expects to
2501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be contained within double-quotes instead of single quotes, and it
2502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** escapes the double-quote character instead of the single-quote
2503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** character.)^ The "%w" formatting option is intended for safely inserting
2504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** table and column names into a constructed SQL statement.
2489 2505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2490 2506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(The "%z" formatting option works like "%s" but with the
2491 2507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** addition that after the string has been read and copied into
2492 2508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the result, [sqlite3_free()] is called on the input string.)^
2493 2509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -5234,10 +5250,15 @@
5234 5250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** successfully. An [error code] is returned otherwise.)^
5235 5251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5236 5252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^Shared cache is disabled by default. But this might change in
5237 5253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** future releases of SQLite. Applications that care about shared
5238 5254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cache setting should set it explicitly.
5255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
5256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Note: This method is disabled on MacOS X 10.7 and iOS version 5.0
5257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and will always return SQLITE_MISUSE. On those systems,
5258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** shared cache mode should be enabled per-database connection via
5259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [sqlite3_open_v2()] with [SQLITE_OPEN_SHAREDCACHE].
5239 5260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5240 5261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This interface is threadsafe on processors where writing a
5241 5262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 32-bit integer is atomic.
5242 5263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5243 5264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See Also: [SQLite Shared-Cache Mode]
@@ -6434,11 +6455,12 @@
6434 6455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_NEVER_CORRUPT 20
6435 6456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_VDBE_COVERAGE 21
6436 6457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_BYTEORDER 22
6437 6458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_ISINIT 23
6438 6459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_SORTER_MMAP 24
6439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_TESTCTRL_LAST 24
6460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_TESTCTRL_IMPOSTER 25
6461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_TESTCTRL_LAST 25
6440 6462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
6441 6463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
6442 6464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: SQLite Runtime Status
6443 6465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6444 6466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^This interface is used to retrieve runtime status information
@@ -9219,14 +9241,12 @@
9219 9241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeSetPageSize(Btree *p, int nPagesize, int nReserve, int eFix);
9220 9242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeGetPageSize(Btree*);
9221 9243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeMaxPageCount(Btree*,int);
9222 9244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE u32 sqlite3BtreeLastPage(Btree*);
9223 9245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeSecureDelete(Btree*,int);
9224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3BtreeGetReserve(Btree*);
9225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if defined(SQLITE_HAS_CODEC) || defined(SQLITE_DEBUG)
9246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3BtreeGetOptimalReserve(Btree*);
9226 9247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeGetReserveNoMutex(Btree *p);
9227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
9228 9248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeSetAutoVacuum(Btree *, int);
9229 9249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeGetAutoVacuum(Btree *);
9230 9250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree*,int);
9231 9251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeCommitPhaseOne(Btree*, const char *zMaster);
9232 9252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree*, int);
@@ -10839,10 +10859,11 @@
10839 10859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct sqlite3InitInfo { /* Information used during initialization */
10840 10860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int newTnum; /* Rootpage of table being initialized */
10841 10861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 iDb; /* Which db file is being initialized */
10842 10862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 busy; /* TRUE if currently initializing */
10843 10863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 orphanTrigger; /* Last statement is orphaned TEMP trigger */
10864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 imposterTable; /* Building an imposter table */
10844 10865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} init;
10845 10866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVdbeActive; /* Number of VDBEs currently running */
10846 10867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVdbeRead; /* Number of active VDBEs that read or write */
10847 10868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVdbeWrite; /* Number of active VDBEs that read and write */
10848 10869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVdbeExec; /* Number of nested calls to VdbeExec() */
@@ -11795,12 +11816,18 @@
11795 11816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_TokenOnly 0x004000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
11796 11817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Static 0x008000 /* Held in memory not obtained from malloc() */
11797 11818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_MemToken 0x010000 /* Need to sqlite3DbFree() Expr.zToken */
11798 11819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_NoReduce 0x020000 /* Cannot EXPRDUP_REDUCE this Expr */
11799 11820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Unlikely 0x040000 /* unlikely() or likelihood() function */
11800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define EP_Constant 0x080000 /* Node is a constant */
11821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define EP_ConstFunc 0x080000 /* Node is a SQLITE_FUNC_CONSTANT function */
11801 11822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
11823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define EP_Subquery 0x200000 /* Tree contains a TK_SELECT operator */
11824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
11825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
11826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Combinations of two or more EP_* flags
11827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
11828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define EP_Propagate (EP_Collate|EP_Subquery) /* Propagate these bits up tree */
11802 11829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11803 11830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
11804 11831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These macros can be used to test, set, or clear bits in the
11805 11832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Expr.flags field.
11806 11833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -12904,10 +12931,11 @@
12904 12931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3*, Expr*);
12905 12932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*);
12906 12933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprListSetName(Parse*,ExprList*,Token*,int);
12907 12934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprListSetSpan(Parse*,ExprList*,ExprSpan*);
12908 12935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprListDelete(sqlite3*, ExprList*);
12936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE u32 sqlite3ExprListFlags(const ExprList*);
12909 12937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3Init(sqlite3*, char**);
12910 12938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3InitCallback(void*, int, char**, char**);
12911 12939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3Pragma(Parse*,Token*,Token*,Token*,int);
12912 12940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ResetAllSchemasOfConnection(sqlite3*);
12913 12941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ResetOneSchema(sqlite3*,int);
@@ -13487,16 +13515,15 @@
13487 13515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13488 13516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3MemJournalOpen(sqlite3_file *);
13489 13517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3MemJournalSize(void);
13490 13518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3IsMemJournal(sqlite3_file *);
13491 13519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p);
13492 13521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_MAX_EXPR_DEPTH>0
13493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3ExprSetHeight(Parse *pParse, Expr *p);
13494 13522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3SelectExprHeight(Select *);
13495 13523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprCheckHeight(Parse*, int);
13496 13524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
13497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define sqlite3ExprSetHeight(x,y)
13498 13525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3SelectExprHeight(x) 0
13499 13526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ExprCheckHeight(x,y)
13500 13527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
13501 13528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13502 13529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE u32 sqlite3Get4byte(const u8*);
@@ -13629,20 +13656,20 @@
13629 13656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, /* 1x */
13630 13657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, /* 2x */
13631 13658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, /* 3x */
13632 13659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, /* 4x */
13633 13660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, /* 5x */
13634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 96, 97, 66, 67, 68, 69, 70, 71, 72, 73,106,107,108,109,110,111, /* 6x */
13635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 112, 81, 82, 83, 84, 85, 86, 87, 88, 89,122,123,124,125,126,127, /* 7x */
13661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111, /* 6x */
13662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, /* 7x */
13636 13663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, /* 8x */
13637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 144,145,146,147,148,149,150,151,152,153,154,155,156,157,156,159, /* 9x */
13664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, /* 9x */
13638 13665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
160,161,162,163,164,165,166,167,168,169,170,171,140,141,142,175, /* Ax */
13639 13666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, /* Bx */
13640 13667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
192,129,130,131,132,133,134,135,136,137,202,203,204,205,206,207, /* Cx */
13641 13668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
208,145,146,147,148,149,150,151,152,153,218,219,220,221,222,223, /* Dx */
13642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 224,225,162,163,164,165,166,167,168,169,232,203,204,205,206,207, /* Ex */
13643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 239,240,241,242,243,244,245,246,247,248,249,219,220,221,222,255, /* Fx */
13669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 224,225,162,163,164,165,166,167,168,169,234,235,236,237,238,239, /* Ex */
13670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255, /* Fx */
13644 13671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
13645 13672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
13646 13673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13647 13674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
13648 13675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The following 256 byte lookup table is used to support SQLites built-in
@@ -14637,10 +14664,13 @@
14637 14664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ynVar nVar; /* Number of entries in aVar[] */
14638 14665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ynVar nzVar; /* Number of entries in azVar[] */
14639 14666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 cacheCtr; /* VdbeCursor row cache generation counter */
14640 14667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int pc; /* The program counter */
14641 14668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc; /* Value to return */
14669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
14670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rcApp; /* errcode set by sqlite3_result_error_code() */
14671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
14642 14672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 nResColumn; /* Number of columns in one row of the result set */
14643 14673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 errorAction; /* Recovery action to do in case of an error */
14644 14674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 minWriteFileFormat; /* Minimum file format for writable database files */
14645 14675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bft explain:2; /* True if EXPLAIN present on SQL command */
14646 14676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bft inVtabMethod:2; /* See comments above */
@@ -19111,12 +19141,16 @@
19111 19141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->cnt = 0;
19112 19142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19113 19143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
19114 19144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19115 19145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: {
19116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( id-2 >= 0 );
19117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( id-2 < (int)(sizeof(aStatic)/sizeof(aStatic[0])) );
19146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_API_ARMOR
19147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( id-2<0 || id-2>=ArraySize(aStatic) ){
19148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)SQLITE_MISUSE_BKPT;
19149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
19150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
19151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19118 19152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = &aStatic[id-2];
19119 19153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->id = id;
19120 19154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
19121 19155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19122 19156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -19127,12 +19161,17 @@
19127 19161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine deallocates a previously allocated mutex.
19128 19162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19129 19163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void debugMutexFree(sqlite3_mutex *pX){
19130 19164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_debug_mutex *p = (sqlite3_debug_mutex*)pX;
19131 19165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->cnt==0 );
19132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE );
19133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(p);
19166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->id==SQLITE_MUTEX_RECURSIVE || p->id==SQLITE_MUTEX_FAST ){
19167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(p);
19168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
19169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_API_ARMOR
19170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)SQLITE_MISUSE_BKPT;
19171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
19134 19173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19135 19174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19136 19175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19137 19176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
19138 19177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to enter a mutex. If another thread is already within the mutex,
@@ -19239,12 +19278,14 @@
19239 19278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19240 19279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Each recursive mutex is an instance of the following structure.
19241 19280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19242 19281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct sqlite3_mutex {
19243 19282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pthread_mutex_t mutex; /* Mutex controlling the lock */
19244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if SQLITE_MUTEX_NREF
19283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_MUTEX_NREF || defined(SQLITE_ENABLE_API_ARMOR)
19245 19284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int id; /* Mutex type */
19285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_MUTEX_NREF
19246 19287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
volatile int nRef; /* Number of entrances */
19247 19288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
volatile pthread_t owner; /* Thread that is within this mutex */
19248 19289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int trace; /* True to trace changes */
19249 19290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
19250 19291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
@@ -19357,22 +19398,16 @@
19357 19398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pthread_mutexattr_init(&recursiveAttr);
19358 19399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pthread_mutexattr_settype(&recursiveAttr, PTHREAD_MUTEX_RECURSIVE);
19359 19400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pthread_mutex_init(&p->mutex, &recursiveAttr);
19360 19401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pthread_mutexattr_destroy(&recursiveAttr);
19361 19402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
19362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if SQLITE_MUTEX_NREF
19363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->id = iType;
19364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
19365 19403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19366 19404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
19367 19405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19368 19406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_MUTEX_FAST: {
19369 19407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = sqlite3MallocZero( sizeof(*p) );
19370 19408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
19371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if SQLITE_MUTEX_NREF
19372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->id = iType;
19373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
19374 19409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pthread_mutex_init(&p->mutex, 0);
19375 19410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19376 19411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
19377 19412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19378 19413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: {
@@ -19381,16 +19416,16 @@
19381 19416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)SQLITE_MISUSE_BKPT;
19382 19417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
19383 19418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19384 19419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
19385 19420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = &staticMutexes[iType-2];
19386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if SQLITE_MUTEX_NREF
19387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->id = iType;
19388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
19389 19421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
19390 19422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19391 19423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_MUTEX_NREF || defined(SQLITE_ENABLE_API_ARMOR)
19425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p ) p->id = iType;
19426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19392 19427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p;
19393 19428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19394 19429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19395 19430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19396 19431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -19398,13 +19433,22 @@
19398 19433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** allocated mutex. SQLite is careful to deallocate every
19399 19434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mutex that it allocates.
19400 19435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19401 19436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void pthreadMutexFree(sqlite3_mutex *p){
19402 19437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->nRef==0 );
19403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE );
19404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pthread_mutex_destroy(&p->mutex);
19405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(p);
19438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_ENABLE_API_ARMOR
19439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE )
19440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
19442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pthread_mutex_destroy(&p->mutex);
19443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(p);
19444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
19445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_API_ARMOR
19446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else{
19447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)SQLITE_MISUSE_BKPT;
19448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
19449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19406 19450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19407 19451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19408 19452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19409 19453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
19410 19454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to enter a mutex. If another thread is already within the mutex,
@@ -19870,10 +19914,21 @@
19870 19914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_WIN32_VOLATILE
19871 19915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
19872 19916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_WIN32_VOLATILE volatile
19873 19917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
19874 19918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
19920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** For some Windows sub-platforms, the _beginthreadex() / _endthreadex()
19921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** functions are not available (e.g. those not using MSVC, Cygwin, etc).
19922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
19923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_OS_WIN && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && \
19924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_THREADSAFE>0 && !defined(__CYGWIN__)
19925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_OS_WIN_THREADS 1
19926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
19927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_OS_WIN_THREADS 0
19928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
19875 19930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* _OS_WIN_H_ */
19876 19931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19877 19932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of os_win.h **********************************************/
19878 19933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in mutex_w32.c ******************/
19879 19934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -20045,12 +20100,12 @@
20045 20100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( iType ){
20046 20101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_MUTEX_FAST:
20047 20102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_MUTEX_RECURSIVE: {
20048 20103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = sqlite3MallocZero( sizeof(*p) );
20049 20104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
20050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_DEBUG
20051 20105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->id = iType;
20106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
20052 20107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_WIN32_MUTEX_TRACE_DYNAMIC
20053 20108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->trace = 1;
20054 20109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
20055 20110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
20056 20111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_OS_WINRT
@@ -20066,16 +20121,13 @@
20066 20121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iType-2<0 || iType-2>=ArraySize(winMutex_staticMutexes) ){
20067 20122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)SQLITE_MISUSE_BKPT;
20068 20123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
20069 20124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
20070 20125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
20071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( iType-2 >= 0 );
20072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( iType-2 < ArraySize(winMutex_staticMutexes) );
20073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( winMutex_isInit==1 );
20074 20126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = &winMutex_staticMutexes[iType-2];
20075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_DEBUG
20076 20127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->id = iType;
20128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
20077 20129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_WIN32_MUTEX_TRACE_STATIC
20078 20130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->trace = 1;
20079 20131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
20080 20132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
20081 20133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -20090,17 +20142,19 @@
20090 20142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** allocated mutex. SQLite is careful to deallocate every
20091 20143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mutex that it allocates.
20092 20144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
20093 20145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void winMutexFree(sqlite3_mutex *p){
20094 20146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p );
20095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_DEBUG
20096 20147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->nRef==0 && p->owner==0 );
20097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE );
20148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE ){
20149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DeleteCriticalSection(&p->mutex);
20150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(p);
20151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
20152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_API_ARMOR
20153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)SQLITE_MISUSE_BKPT;
20098 20154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
20099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( winMutex_isInit==1 );
20100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- DeleteCriticalSection(&p->mutex);
20101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(p);
20155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
20102 20156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
20103 20157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
20104 20158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
20105 20159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
20106 20160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to enter a mutex. If another thread is already within the mutex,
@@ -21260,17 +21314,10 @@
21260 21314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
etByte flag_rtz; /* True if trailing zeros should be removed */
21261 21315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
21262 21316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PrintfArguments *pArgList = 0; /* Arguments for SQLITE_PRINTF_SQLFUNC */
21263 21317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char buf[etBUFSIZE]; /* Conversion buffer */
21264 21318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_ENABLE_API_ARMOR
21266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ap==0 ){
21267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (void)SQLITE_MISUSE_BKPT;
21268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3StrAccumReset(pAccum);
21269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
21270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
21271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
21272 21319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bufpt = 0;
21273 21320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bFlags ){
21274 21321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (bArgList = (bFlags & SQLITE_PRINTF_SQLFUNC))!=0 ){
21275 21322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pArgList = va_arg(ap, PrintfArguments*);
21276 21323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -22050,11 +22097,11 @@
22050 22097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
StrAccum acc;
22051 22098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( n<=0 ) return zBuf;
22052 22099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_API_ARMOR
22053 22100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBuf==0 || zFormat==0 ) {
22054 22101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)SQLITE_MISUSE_BKPT;
22055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zBuf && n>0 ) zBuf[0] = 0;
22102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zBuf ) zBuf[0] = 0;
22056 22103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zBuf;
22057 22104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
22058 22105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
22059 22106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StrAccumInit(&acc, zBuf, n, 0);
22060 22107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
acc.useMalloc = 0;
@@ -22433,11 +22480,11 @@
22433 22480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OS_UNIX && defined(SQLITE_MUTEX_PTHREADS) */
22434 22481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******************************** End Unix Pthreads *************************/
22435 22482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22436 22483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22437 22484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/********************************* Win32 Threads ****************************/
22438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if SQLITE_OS_WIN && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_THREADSAFE>0
22485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_OS_WIN_THREADS
22439 22486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22440 22487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_THREADS_IMPLEMENTED 1 /* Prevent the single-thread code below */
22441 22488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <process.h>
22442 22489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22443 22490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A running thread */
@@ -22526,11 +22573,11 @@
22526 22573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==WAIT_OBJECT_0 ) *ppOut = p->pResult;
22527 22574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(p);
22528 22575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (rc==WAIT_OBJECT_0) ? SQLITE_OK : SQLITE_ERROR;
22529 22576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
22530 22577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif /* SQLITE_OS_WIN && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT */
22578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* SQLITE_OS_WIN_THREADS */
22532 22579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******************************** End Win32 Threads *************************/
22533 22580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22534 22581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22535 22582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/********************************* Single-Threaded **************************/
22536 22583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_THREADS_IMPLEMENTED
@@ -25201,11 +25248,11 @@
25201 25248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
25202 25249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define UNIXFILE_PSOW 0x10 /* SQLITE_IOCAP_POWERSAFE_OVERWRITE */
25203 25250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define UNIXFILE_DELETE 0x20 /* Delete on close */
25204 25251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define UNIXFILE_URI 0x40 /* Filename might have query parameters */
25205 25252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define UNIXFILE_NOLOCK 0x80 /* Do no file locking */
25206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define UNIXFILE_WARNED 0x0100 /* verifyDbFile() warnings have been issued */
25253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define UNIXFILE_WARNED 0x0100 /* verifyDbFile() warnings issued */
25207 25254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
25208 25255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
25209 25256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Include code that is common to all os_*.c files
25210 25257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
25211 25258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Include os_common.h in the middle of os_unix.c ***************/
@@ -25872,13 +25919,13 @@
25872 25919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_LOCK_TRACE */
25873 25920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
25874 25921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
25875 25922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Retry ftruncate() calls that fail due to EINTR
25876 25923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
25877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** All calls to ftruncate() within this file should be made through this wrapper.
25878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** On the Android platform, bypassing the logic below could lead to a corrupt
25879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** database.
25924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** All calls to ftruncate() within this file should be made through
25925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this wrapper. On the Android platform, bypassing the logic below
25926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** could lead to a corrupt database.
25880 25927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
25881 25928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int robust_ftruncate(int h, sqlite3_int64 sz){
25882 25929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
25883 25930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef __ANDROID__
25884 25931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* On Android, ftruncate() always uses 32-bit offsets, even if
@@ -26332,10 +26379,18 @@
26332 26379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( osClose(h) ){
26333 26380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixLogErrorAtLine(SQLITE_IOERR_CLOSE, "close",
26334 26381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFile ? pFile->zPath : 0, lineno);
26335 26382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26336 26383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
26385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
26386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Set the pFile->lastErrno. Do this in a subroutine as that provides
26387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a convenient place to set a breakpoint.
26388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
26389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void storeLastErrno(unixFile *pFile, int error){
26390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pFile->lastErrno = error;
26391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
26337 26392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
26338 26393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
26339 26394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Close all file descriptors accumuated in the unixInodeInfo->pUnused list.
26340 26395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
26341 26396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void closePendingFds(unixFile *pFile){
@@ -26406,11 +26461,11 @@
26406 26461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** create a unique name for the file.
26407 26462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
26408 26463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fd = pFile->h;
26409 26464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = osFstat(fd, &statbuf);
26410 26465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=0 ){
26411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
26466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
26412 26467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef EOVERFLOW
26413 26468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFile->lastErrno==EOVERFLOW ) return SQLITE_NOLFS;
26414 26469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
26415 26470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR;
26416 26471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -26427,16 +26482,16 @@
26427 26482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the first page of the database, no damage is done.
26428 26483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
26429 26484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( statbuf.st_size==0 && (pFile->fsFlags & SQLITE_FSFLAGS_IS_MSDOS)!=0 ){
26430 26485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{ rc = osWrite(fd, "S", 1); }while( rc<0 && errno==EINTR );
26431 26486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=1 ){
26432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
26487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
26433 26488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR;
26434 26489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26435 26490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = osFstat(fd, &statbuf);
26436 26491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=0 ){
26437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
26492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
26438 26493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR;
26439 26494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26440 26495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26441 26496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
26442 26497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -26555,11 +26610,11 @@
26555 26610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_start = RESERVED_BYTE;
26556 26611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_len = 1;
26557 26612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_type = F_WRLCK;
26558 26613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( osFcntl(pFile->h, F_GETLK, &lock) ){
26559 26614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_CHECKRESERVEDLOCK;
26560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
26615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
26561 26616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else if( lock.l_type!=F_UNLCK ){
26562 26617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
reserved = 1;
26563 26618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26564 26619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26565 26620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -26755,11 +26810,11 @@
26755 26810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_start = PENDING_BYTE;
26756 26811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( unixFileLock(pFile, &lock) ){
26757 26812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tErrno = errno;
26758 26813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
26759 26814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_BUSY ){
26760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
26815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
26761 26816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26762 26817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_lock;
26763 26818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26764 26819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26765 26820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -26790,11 +26845,11 @@
26790 26845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_UNLOCK;
26791 26846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26792 26847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
26793 26848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
26794 26849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_BUSY ){
26795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
26850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
26796 26851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26797 26852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_lock;
26798 26853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
26799 26854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFile->eFileLock = SHARED_LOCK;
26800 26855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pInode->nLock++;
@@ -26823,11 +26878,11 @@
26823 26878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
26824 26879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( unixFileLock(pFile, &lock) ){
26825 26880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tErrno = errno;
26826 26881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
26827 26882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_BUSY ){
26828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
26883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
26829 26884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26830 26885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26831 26886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26832 26887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
26833 26888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -26930,11 +26985,10 @@
26930 26985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2: [....W]
26931 26986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 3: [RRRRW]
26932 26987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 4: [RRRR.]
26933 26988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
26934 26989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eFileLock==SHARED_LOCK ){
26935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
26936 26990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(__APPLE__) || !SQLITE_ENABLE_LOCKING_STYLE
26937 26991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)handleNFSUnlock;
26938 26992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( handleNFSUnlock==0 );
26939 26993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
26940 26994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE
@@ -26948,11 +27002,11 @@
26948 27002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_len = divSize;
26949 27003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( unixFileLock(pFile, &lock)==(-1) ){
26950 27004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tErrno = errno;
26951 27005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_UNLOCK;
26952 27006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(rc) ){
26953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
26954 27008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26955 27009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_unlock;
26956 27010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26957 27011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_type = F_RDLCK;
26958 27012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_whence = SEEK_SET;
@@ -26960,11 +27014,11 @@
26960 27014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_len = divSize;
26961 27015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( unixFileLock(pFile, &lock)==(-1) ){
26962 27016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tErrno = errno;
26963 27017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_RDLOCK);
26964 27018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(rc) ){
26965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
26966 27020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26967 27021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_unlock;
26968 27022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26969 27023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_type = F_UNLCK;
26970 27024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_whence = SEEK_SET;
@@ -26972,11 +27026,11 @@
26972 27026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_len = SHARED_SIZE-divSize;
26973 27027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( unixFileLock(pFile, &lock)==(-1) ){
26974 27028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tErrno = errno;
26975 27029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_UNLOCK;
26976 27030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(rc) ){
26977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
26978 27032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26979 27033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_unlock;
26980 27034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26981 27035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
26982 27036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE */
@@ -26991,11 +27045,11 @@
26991 27045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** indicates that the other process is not following the locking
26992 27046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** protocol. If this happens, return SQLITE_IOERR_RDLOCK. Returning
26993 27047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_BUSY would confuse the upper layer (in practice it causes
26994 27048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an assert to fail). */
26995 27049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_RDLOCK;
26996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
27050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
26997 27051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_unlock;
26998 27052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
26999 27053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27000 27054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27001 27055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_type = F_UNLCK;
@@ -27004,11 +27058,11 @@
27004 27058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_len = 2L; assert( PENDING_BYTE+1==RESERVED_BYTE );
27005 27059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( unixFileLock(pFile, &lock)==0 ){
27006 27060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pInode->eFileLock = SHARED_LOCK;
27007 27061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
27008 27062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_UNLOCK;
27009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
27063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
27010 27064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_unlock;
27011 27065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27012 27066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27013 27067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eFileLock==NO_LOCK ){
27014 27068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Decrement the shared lock counter. Release the lock using an
@@ -27022,11 +27076,11 @@
27022 27076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lock.l_start = lock.l_len = 0L;
27023 27077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( unixFileLock(pFile, &lock)==0 ){
27024 27078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pInode->eFileLock = NO_LOCK;
27025 27079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
27026 27080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_UNLOCK;
27027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
27081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
27028 27082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pInode->eFileLock = NO_LOCK;
27029 27083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFile->eFileLock = NO_LOCK;
27030 27084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27031 27085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27032 27086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -27297,11 +27351,11 @@
27297 27351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( EEXIST == tErrno ){
27298 27352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_BUSY;
27299 27353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
27300 27354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
27301 27355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(rc) ){
27302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
27303 27357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27304 27358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27305 27359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
27306 27360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27307 27361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -27351,11 +27405,11 @@
27351 27405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 0;
27352 27406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ENOENT != tErrno ){
27353 27407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_UNLOCK;
27354 27408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27355 27409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(rc) ){
27356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
27357 27411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27358 27412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
27359 27413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27360 27414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFile->eFileLock = NO_LOCK;
27361 27415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
@@ -27438,21 +27492,21 @@
27438 27492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if ( lrc ) {
27439 27493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tErrno = errno;
27440 27494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* unlock failed with an error */
27441 27495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lrc = SQLITE_IOERR_UNLOCK;
27442 27496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(lrc) ){
27443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
27444 27498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = lrc;
27445 27499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27446 27500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27447 27501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
27448 27502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tErrno = errno;
27449 27503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
reserved = 1;
27450 27504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* someone else might have it reserved */
27451 27505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lrc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
27452 27506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(lrc) ){
27453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
27454 27508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = lrc;
27455 27509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27456 27510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27457 27511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27458 27512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OSTRACE(("TEST WR-LOCK %d %d %d (flock)\n", pFile->h, rc, reserved));
@@ -27514,11 +27568,11 @@
27514 27568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if (robust_flock(pFile->h, LOCK_EX | LOCK_NB)) {
27515 27569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tErrno = errno;
27516 27570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* didn't get, must be busy */
27517 27571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
27518 27572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(rc) ){
27519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
27520 27574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27521 27575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
27522 27576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* got it, set the type and return ok */
27523 27577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFile->eFileLock = eFileLock;
27524 27578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -27626,11 +27680,11 @@
27626 27680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
27627 27681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sem_trywait(pSem)==-1 ){
27628 27682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tErrno = errno;
27629 27683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( EAGAIN != tErrno ){
27630 27684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_CHECKRESERVEDLOCK);
27631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
27632 27686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
27633 27687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* someone else has the lock when we are in NO_LOCK */
27634 27688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
reserved = (pFile->eFileLock < SHARED_LOCK);
27635 27689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27636 27690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -27730,11 +27784,11 @@
27730 27784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* no, really unlock. */
27731 27785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if ( sem_post(pSem)==-1 ) {
27732 27786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc, tErrno = errno;
27733 27787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK);
27734 27788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(rc) ){
27735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
27736 27790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27737 27791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
27738 27792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27739 27793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFile->eFileLock = NO_LOCK;
27740 27794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
@@ -27832,11 +27886,11 @@
27832 27886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
27833 27887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqliteErrorFromPosixError(tErrno,
27834 27888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
setLockFlag ? SQLITE_IOERR_LOCK : SQLITE_IOERR_UNLOCK);
27835 27889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_IGNORE_AFP_LOCK_ERRORS */
27836 27890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(rc) ){
27837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = tErrno;
27891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, tErrno);
27838 27892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
27839 27893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
27840 27894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
27841 27895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
27842 27896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -28015,11 +28069,11 @@
28015 28069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28016 28070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Drop the temporary PENDING lock */
28017 28071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lrc2 = afpSetLock(context->dbPath, pFile, PENDING_BYTE, 1, 0);
28018 28072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28019 28073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IS_LOCK_ERROR(lrc1) ) {
28020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = lrc1Errno;
28074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, lrc1Errno);
28021 28075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = lrc1;
28022 28076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto afp_end_lock;
28023 28077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else if( IS_LOCK_ERROR(lrc2) ){
28024 28078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = lrc2;
28025 28079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto afp_end_lock;
@@ -28302,23 +28356,23 @@
28302 28356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
28303 28357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
newOffset = lseek(id->h, offset, SEEK_SET);
28304 28358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SimulateIOError( newOffset-- );
28305 28359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( newOffset!=offset ){
28306 28360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( newOffset == -1 ){
28307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((unixFile*)id)->lastErrno = errno;
28361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno((unixFile*)id, errno);
28308 28362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
28309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((unixFile*)id)->lastErrno = 0;
28363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno((unixFile*)id, 0);
28310 28364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28311 28365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return -1;
28312 28366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28313 28367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
got = osRead(id->h, pBuf, cnt);
28314 28368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
28315 28369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( got==cnt ) break;
28316 28370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( got<0 ){
28317 28371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( errno==EINTR ){ got = 1; continue; }
28318 28372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
prior = 0;
28319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((unixFile*)id)->lastErrno = errno;
28373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno((unixFile*)id, errno);
28320 28374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
28321 28375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( got>0 ){
28322 28376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt -= got;
28323 28377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
offset += got;
28324 28378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
prior += got;
@@ -28379,11 +28433,11 @@
28379 28433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
28380 28434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( got<0 ){
28381 28435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* lastErrno set by seekAndRead */
28382 28436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR_READ;
28383 28437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
28384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = 0; /* not a system error */
28438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, 0); /* not a system error */
28385 28439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Unread parts of the buffer must be zero-filled */
28386 28440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&((char*)pBuf)[got], 0, amt-got);
28387 28441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR_SHORT_READ;
28388 28442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28389 28443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -28408,13 +28462,13 @@
28408 28462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( fd>2 );
28409 28463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nBuf &= 0x1ffff;
28410 28464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TIMER_START;
28411 28465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28412 28466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(USE_PREAD)
28413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- do{ rc = osPwrite(fd, pBuf, nBuf, iOff); }while( rc<0 && errno==EINTR );
28467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ do{ rc = (int)osPwrite(fd, pBuf, nBuf, iOff); }while( rc<0 && errno==EINTR );
28414 28468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#elif defined(USE_PREAD64)
28415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- do{ rc = osPwrite64(fd, pBuf, nBuf, iOff);}while( rc<0 && errno==EINTR);
28469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ do{ rc = (int)osPwrite64(fd, pBuf, nBuf, iOff);}while( rc<0 && errno==EINTR);
28416 28470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
28417 28471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
28418 28472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iSeek = lseek(fd, iOff, SEEK_SET);
28419 28473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SimulateIOError( iSeek-- );
28420 28474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -28520,11 +28574,11 @@
28520 28574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( amt>0 ){
28521 28575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( wrote<0 && pFile->lastErrno!=ENOSPC ){
28522 28576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* lastErrno set by seekAndWrite */
28523 28577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR_WRITE;
28524 28578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
28525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = 0; /* not a system error */
28579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, 0); /* not a system error */
28526 28580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_FULL;
28527 28581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28528 28582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28529 28583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28530 28584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
@@ -28729,11 +28783,11 @@
28729 28783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pFile );
28730 28784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OSTRACE(("SYNC %-3d\n", pFile->h));
28731 28785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = full_fsync(pFile->h, isFullsync, isDataOnly);
28732 28786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SimulateIOError( rc=1 );
28733 28787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
28734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
28788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
28735 28789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return unixLogError(SQLITE_IOERR_FSYNC, "full_fsync", pFile->zPath);
28736 28790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28737 28791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28738 28792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Also fsync the directory containing the file if the DIRSYNC flag
28739 28793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is set. This is a one-time occurrence. Many systems (examples: AIX)
@@ -28773,11 +28827,11 @@
28773 28827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte = ((nByte + pFile->szChunk - 1)/pFile->szChunk) * pFile->szChunk;
28774 28828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28775 28829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28776 28830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = robust_ftruncate(pFile->h, nByte);
28777 28831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
28778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
28832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
28779 28833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath);
28780 28834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
28781 28835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
28782 28836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If we are doing a normal write to a database file (as opposed to
28783 28837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** doing a hot-journal rollback or a write to some file other than a
@@ -28813,11 +28867,11 @@
28813 28867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct stat buf;
28814 28868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( id );
28815 28869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = osFstat(((unixFile*)id)->h, &buf);
28816 28870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SimulateIOError( rc=1 );
28817 28871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=0 ){
28818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((unixFile*)id)->lastErrno = errno;
28872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno((unixFile*)id, errno);
28819 28873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR_FSTAT;
28820 28874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28821 28875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pSize = buf.st_size;
28822 28876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28823 28877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* When opening a zero-size database, the findInodeInfo() procedure
@@ -28849,11 +28903,13 @@
28849 28903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int fcntlSizeHint(unixFile *pFile, i64 nByte){
28850 28904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFile->szChunk>0 ){
28851 28905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 nSize; /* Required file size */
28852 28906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct stat buf; /* Used to hold return values of fstat() */
28853 28907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( osFstat(pFile->h, &buf) ) return SQLITE_IOERR_FSTAT;
28908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( osFstat(pFile->h, &buf) ){
28909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_IOERR_FSTAT;
28910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
28855 28911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28856 28912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSize = ((nByte+pFile->szChunk-1) / pFile->szChunk) * pFile->szChunk;
28857 28913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nSize>(i64)buf.st_size ){
28858 28914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28859 28915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(HAVE_POSIX_FALLOCATE) && HAVE_POSIX_FALLOCATE
@@ -28896,11 +28952,11 @@
28896 28952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_MAX_MMAP_SIZE>0
28897 28953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFile->mmapSizeMax>0 && nByte>pFile->mmapSize ){
28898 28954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
28899 28955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFile->szChunk<=0 ){
28900 28956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( robust_ftruncate(pFile->h, nByte) ){
28901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
28957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
28902 28958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath);
28903 28959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28904 28960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28905 28961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28906 28962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = unixMapfile(pFile, nByte);
@@ -28938,11 +28994,11 @@
28938 28994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( op ){
28939 28995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_FCNTL_LOCKSTATE: {
28940 28996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*(int*)pArg = pFile->eFileLock;
28941 28997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
28942 28998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case SQLITE_LAST_ERRNO: {
28999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_FCNTL_LAST_ERRNO: {
28944 29000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*(int*)pArg = pFile->lastErrno;
28945 29001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
28946 29002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28947 29003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_FCNTL_CHUNK_SIZE: {
28948 29004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFile->szChunk = *(int *)pArg;
@@ -29007,12 +29063,12 @@
29007 29063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
((unixFile*)id)->dbUpdate = 0;
29008 29064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
29009 29065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29010 29066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
29011 29067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__)
29012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case SQLITE_SET_LOCKPROXYFILE:
29013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case SQLITE_GET_LOCKPROXYFILE: {
29068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_FCNTL_SET_LOCKPROXYFILE:
29069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_FCNTL_GET_LOCKPROXYFILE: {
29014 29070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return proxyFileControl(id,op,pArg);
29015 29071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29016 29072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__) */
29017 29073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29018 29074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOTFOUND;
@@ -29413,10 +29469,13 @@
29413 29469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixEnterMutex();
29414 29470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pInode = pDbFd->pInode;
29415 29471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pShmNode = pInode->pShmNode;
29416 29472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pShmNode==0 ){
29417 29473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct stat sStat; /* fstat() info for database file */
29474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_SHM_DIRECTORY
29475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zBasePath = pDbFd->zPath;
29476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
29418 29477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
29419 29478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Call fstat() to figure out the permissions on the database file. If
29420 29479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a new *-shm file is created, an attempt will be made to create it
29421 29480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with the same permissions.
29422 29481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -29426,11 +29485,11 @@
29426 29485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29427 29486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
29428 29487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_SHM_DIRECTORY
29429 29488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nShmFilename = sizeof(SQLITE_SHM_DIRECTORY) + 31;
29430 29489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
29431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nShmFilename = 6 + (int)strlen(pDbFd->zPath);
29490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nShmFilename = 6 + (int)strlen(zBasePath);
29432 29491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
29433 29492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pShmNode = sqlite3_malloc( sizeof(*pShmNode) + nShmFilename );
29434 29493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pShmNode==0 ){
29435 29494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
29436 29495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto shm_open_err;
@@ -29440,11 +29499,11 @@
29440 29499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_SHM_DIRECTORY
29441 29500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(nShmFilename, zShmFilename,
29442 29501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_SHM_DIRECTORY "/sqlite-shm-%x-%x",
29443 29502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(u32)sStat.st_ino, (u32)sStat.st_dev);
29444 29503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
29445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(nShmFilename, zShmFilename, "%s-shm", pDbFd->zPath);
29504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(nShmFilename, zShmFilename, "%s-shm", zBasePath);
29446 29505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3FileSuffix3(pDbFd->zPath, zShmFilename);
29447 29506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
29448 29507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pShmNode->h = -1;
29449 29508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDbFd->pInode->pShmNode = pShmNode;
29450 29509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pShmNode->pInode = pDbFd->pInode;
@@ -29833,11 +29892,13 @@
29833 29892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** shared-memory file, too */
29834 29893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixEnterMutex();
29835 29894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pShmNode->nRef>0 );
29836 29895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pShmNode->nRef--;
29837 29896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pShmNode->nRef==0 ){
29838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( deleteFlag && pShmNode->h>=0 ) osUnlink(pShmNode->zFilename);
29897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( deleteFlag && pShmNode->h>=0 ){
29898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ osUnlink(pShmNode->zFilename);
29899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
29839 29900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixShmPurge(pDbFd);
29840 29901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29841 29902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixLeaveMutex();
29842 29903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
29843 29904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
@@ -30110,11 +30171,11 @@
30110 30171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** methods CLOSE, LOCK, UNLOCK, CKRESLOCK.
30111 30172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
30112 30173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * An I/O method finder function called FINDER that returns a pointer
30113 30174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the METHOD object in the previous bullet.
30114 30175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
30115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define IOMETHODS(FINDER, METHOD, VERSION, CLOSE, LOCK, UNLOCK, CKLOCK, SHMMAP) \
30176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define IOMETHODS(FINDER,METHOD,VERSION,CLOSE,LOCK,UNLOCK,CKLOCK,SHMMAP) \
30116 30177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const sqlite3_io_methods METHOD = { \
30117 30178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VERSION, /* iVersion */ \
30118 30179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CLOSE, /* xClose */ \
30119 30180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixRead, /* xRead */ \
30120 30181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixWrite, /* xWrite */ \
@@ -30538,11 +30599,11 @@
30538 30599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30539 30600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixLeaveMutex();
30540 30601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30541 30602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
30542 30603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
30543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->lastErrno = 0;
30604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pNew, 0);
30544 30605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if OS_VXWORKS
30545 30606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
30546 30607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( h>=0 ) robust_close(pNew, h, __LINE__);
30547 30608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
h = -1;
30548 30609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
osUnlink(zFilename);
@@ -30986,17 +31047,20 @@
30986 31047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
noLock = eType!=SQLITE_OPEN_MAIN_DB;
30987 31048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
30988 31049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
30989 31050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE
30990 31051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fstatfs(fd, &fsInfo) == -1 ){
30991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((unixFile*)pFile)->lastErrno = errno;
31052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(p, errno);
30992 31053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
robust_close(p, fd, __LINE__);
30993 31054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR_ACCESS;
30994 31055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30995 31056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if (0 == strncmp("msdos", fsInfo.f_fstypename, 5)) {
30996 31057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
((unixFile*)pFile)->fsFlags |= SQLITE_FSFLAGS_IS_MSDOS;
30997 31058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if (0 == strncmp("exfat", fsInfo.f_fstypename, 5)) {
31060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((unixFile*)pFile)->fsFlags |= SQLITE_FSFLAGS_IS_MSDOS;
31061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
30998 31062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
30999 31063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31000 31064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Set up appropriate ctrlFlags */
31001 31065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isDelete ) ctrlFlags |= UNIXFILE_DELETE;
31002 31066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isReadonly ) ctrlFlags |= UNIXFILE_RDONLY;
@@ -31015,23 +31079,10 @@
31015 31079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* SQLITE_FORCE_PROXY_LOCKING==1 means force always use proxy, 0 means
31016 31080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** never use proxy, NULL means use proxy for non-local files only. */
31017 31081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( envforce!=NULL ){
31018 31082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
useProxy = atoi(envforce)>0;
31019 31083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
31020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( statfs(zPath, &fsInfo) == -1 ){
31021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* In theory, the close(fd) call is sub-optimal. If the file opened
31022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** with fd is a database file, and there are other connections open
31023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** on that file that are currently holding advisory locks on it,
31024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** then the call to close() will cancel those locks. In practice,
31025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** we're assuming that statfs() doesn't fail very often. At least
31026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** not while other file descriptors opened by the same process on
31027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the same file are working. */
31028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->lastErrno = errno;
31029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- robust_close(p, fd, __LINE__);
31030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_IOERR_ACCESS;
31031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto open_finished;
31032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
31033 31084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
useProxy = !(fsInfo.f_flags&MNT_LOCAL);
31034 31085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31035 31086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( useProxy ){
31036 31087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = fillInUnixFile(pVfs, fd, pFile, zPath, ctrlFlags);
31037 31088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
@@ -31453,13 +31504,14 @@
31453 31504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Using proxy locks
31454 31505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -----------------
31455 31506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
31456 31507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** C APIs
31457 31508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
31458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sqlite3_file_control(db, dbname, SQLITE_SET_LOCKPROXYFILE,
31509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3_file_control(db, dbname, SQLITE_FCNTL_SET_LOCKPROXYFILE,
31459 31510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <proxy_path> | ":auto:");
31460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sqlite3_file_control(db, dbname, SQLITE_GET_LOCKPROXYFILE, &<proxy_path>);
31511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3_file_control(db, dbname, SQLITE_FCNTL_GET_LOCKPROXYFILE,
31512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** &<proxy_path>);
31461 31513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
31462 31514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
31463 31515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQL pragmas
31464 31516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
31465 31517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** PRAGMA [database.]lock_proxy_file=<proxy_path> | :auto:
@@ -31548,11 +31600,11 @@
31548 31600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
31549 31601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** As mentioned above, when compiled with SQLITE_PREFER_PROXY_LOCKING,
31550 31602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** setting the environment variable SQLITE_FORCE_PROXY_LOCKING to 1 will
31551 31603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** force proxy locking to be used for every database file opened, and 0
31552 31604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will force automatic proxy locking to be disabled for all database
31553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** files (explicitly calling the SQLITE_SET_LOCKPROXYFILE pragma or
31605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** files (explicitly calling the SQLITE_FCNTL_SET_LOCKPROXYFILE pragma or
31554 31606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite_file_control API is not affected by SQLITE_FORCE_PROXY_LOCKING).
31555 31607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
31556 31608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31557 31609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
31558 31610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Proxy locking is only available on MacOSX
@@ -31569,10 +31621,11 @@
31569 31621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *conchFilePath; /* Name of the conch file */
31570 31622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixFile *lockProxy; /* Open proxy lock file */
31571 31623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *lockProxyPath; /* Name of the proxy lock file */
31572 31624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *dbPath; /* Name of the open file */
31573 31625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int conchHeld; /* 1 if the conch is held, -1 if lockless */
31626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nFails; /* Number of conch taking failures */
31574 31627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *oldLockingContext; /* Original lockingcontext to restore on close */
31575 31628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_io_methods const *pOldMethod; /* Original I/O methods for close */
31576 31629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
31577 31630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31578 31631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -31757,14 +31810,14 @@
31757 31810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** bytes of writable memory.
31758 31811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
31759 31812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int proxyGetHostID(unsigned char *pHostID, int *pError){
31760 31813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(PROXY_HOSTIDLEN == sizeof(uuid_t));
31761 31814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(pHostID, 0, PROXY_HOSTIDLEN);
31762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if defined(__MAX_OS_X_VERSION_MIN_REQUIRED)\
31763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && __MAC_OS_X_VERSION_MIN_REQUIRED<1050
31815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # if defined(__APPLE__) && ((__MAC_OS_X_VERSION_MIN_REQUIRED > 1050) || \
31816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (__IPHONE_OS_VERSION_MIN_REQUIRED > 2000))
31764 31817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
31765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static const struct timespec timeout = {1, 0}; /* 1 sec timeout */
31818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ struct timespec timeout = {1, 0}; /* 1 sec timeout */
31766 31819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( gethostuuid(pHostID, &timeout) ){
31767 31820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int err = errno;
31768 31821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pError ){
31769 31822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pError = err;
31770 31823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -31875,11 +31928,11 @@
31875 31928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
* 10 sec and try again
31876 31929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
* 3rd try: break the lock unless the mod time has changed.
31877 31930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
31878 31931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct stat buf;
31879 31932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( osFstat(conchFile->h, &buf) ){
31880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
31933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
31881 31934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR_LOCK;
31882 31935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31883 31936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31884 31937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nTries==1 ){
31885 31938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
conchModTime = buf.st_mtimespec;
@@ -31895,11 +31948,11 @@
31895 31948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31896 31949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nTries==2 ){
31897 31950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char tBuf[PROXY_MAXCONCHLEN];
31898 31951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int len = osPread(conchFile->h, tBuf, PROXY_MAXCONCHLEN, 0);
31899 31952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( len<0 ){
31900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = errno;
31953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, errno);
31901 31954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR_LOCK;
31902 31955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31903 31956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( len>PROXY_PATHINDEX && tBuf[0]==(char)PROXY_CONCHVERSION){
31904 31957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* don't break the lock if the host id doesn't match */
31905 31958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0!=memcmp(&tBuf[PROXY_HEADERLEN], myHostID, PROXY_HOSTIDLEN) ){
@@ -31915,11 +31968,11 @@
31915 31968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31916 31969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nTries==3 );
31917 31970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==proxyBreakConchLock(pFile, myHostID) ){
31918 31971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_OK;
31919 31972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( lockType==EXCLUSIVE_LOCK ){
31920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = conchFile->pMethod->xLock((sqlite3_file*)conchFile, SHARED_LOCK);
31973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = conchFile->pMethod->xLock((sqlite3_file*)conchFile, SHARED_LOCK);
31921 31974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31922 31975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !rc ){
31923 31976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = conchFile->pMethod->xLock((sqlite3_file*)conchFile, lockType);
31924 31977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31925 31978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -31957,11 +32010,11 @@
31957 32010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OSTRACE(("TAKECONCH %d for %s pid=%d\n", conchFile->h,
31958 32011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(pCtx->lockProxyPath ? pCtx->lockProxyPath : ":auto:"), getpid()));
31959 32012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31960 32013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = proxyGetHostID(myHostID, &pError);
31961 32014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (rc&0xff)==SQLITE_IOERR ){
31962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = pError;
32015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, pError);
31963 32016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_takeconch;
31964 32017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31965 32018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = proxyConchLock(pFile, myHostID, SHARED_LOCK);
31966 32019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
31967 32020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_takeconch;
@@ -31968,11 +32021,11 @@
31968 32021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31969 32022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* read the existing conch file */
31970 32023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
readLen = seekAndRead((unixFile*)conchFile, 0, readBuf, PROXY_MAXCONCHLEN);
31971 32024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( readLen<0 ){
31972 32025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* I/O error: lastErrno set by seekAndRead */
31973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pFile->lastErrno = conchFile->lastErrno;
32026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ storeLastErrno(pFile, conchFile->lastErrno);
31974 32027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_READ;
31975 32028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_takeconch;
31976 32029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( readLen<=(PROXY_HEADERLEN+PROXY_HOSTIDLEN) ||
31977 32030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
readBuf[0]!=(char)PROXY_CONCHVERSION ){
31978 32031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* a short read or version format mismatch means we need to create a new
@@ -32041,20 +32094,21 @@
32041 32094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_BUSY;
32042 32095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
32043 32096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = proxyConchLock(pFile, myHostID, EXCLUSIVE_LOCK);
32044 32097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32045 32098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
32046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = conchFile->pMethod->xLock((sqlite3_file*)conchFile, EXCLUSIVE_LOCK);
32099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = proxyConchLock(pFile, myHostID, EXCLUSIVE_LOCK);
32047 32100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32048 32101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
32049 32102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char writeBuffer[PROXY_MAXCONCHLEN];
32050 32103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int writeSize = 0;
32051 32104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32052 32105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
writeBuffer[0] = (char)PROXY_CONCHVERSION;
32053 32106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&writeBuffer[PROXY_HEADERLEN], myHostID, PROXY_HOSTIDLEN);
32054 32107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCtx->lockProxyPath!=NULL ){
32055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- strlcpy(&writeBuffer[PROXY_PATHINDEX], pCtx->lockProxyPath, MAXPATHLEN);
32108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ strlcpy(&writeBuffer[PROXY_PATHINDEX], pCtx->lockProxyPath,
32109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ MAXPATHLEN);
32056 32110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
32057 32111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
strlcpy(&writeBuffer[PROXY_PATHINDEX], tempLockPath, MAXPATHLEN);
32058 32112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32059 32113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
writeSize = PROXY_PATHINDEX + strlen(&writeBuffer[PROXY_PATHINDEX]);
32060 32114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
robust_ftruncate(conchFile->h, writeSize);
@@ -32262,11 +32316,12 @@
32262 32316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__APPLE__)
32263 32317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFile->pMethod == &afpIoMethods ){
32264 32318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* afp style keeps a reference to the db path in the filePath field
32265 32319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the struct */
32266 32320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (int)strlen((char*)pFile->lockingContext)<=MAXPATHLEN );
32267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- strlcpy(dbPath, ((afpLockingContext *)pFile->lockingContext)->dbPath, MAXPATHLEN);
32321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ strlcpy(dbPath, ((afpLockingContext *)pFile->lockingContext)->dbPath,
32322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ MAXPATHLEN);
32268 32323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else
32269 32324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
32270 32325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFile->pMethod == &dotlockIoMethods ){
32271 32326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* dot lock style uses the locking context to store the dot lock
32272 32327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** file path */
@@ -32375,11 +32430,11 @@
32375 32430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine handles sqlite3_file_control() calls that are specific
32376 32431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to proxy locking.
32377 32432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
32378 32433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int proxyFileControl(sqlite3_file *id, int op, void *pArg){
32379 32434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( op ){
32380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case SQLITE_GET_LOCKPROXYFILE: {
32435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_FCNTL_GET_LOCKPROXYFILE: {
32381 32436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixFile *pFile = (unixFile*)id;
32382 32437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFile->pMethod == &proxyIoMethods ){
32383 32438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proxyLockingContext *pCtx = (proxyLockingContext*)pFile->lockingContext;
32384 32439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proxyTakeConch(pFile);
32385 32440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCtx->lockProxyPath ){
@@ -32390,17 +32445,20 @@
32390 32445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
32391 32446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*(const char **)pArg = NULL;
32392 32447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32393 32448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
32394 32449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case SQLITE_SET_LOCKPROXYFILE: {
32450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_FCNTL_SET_LOCKPROXYFILE: {
32396 32451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixFile *pFile = (unixFile*)id;
32397 32452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
32398 32453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isProxyStyle = (pFile->pMethod == &proxyIoMethods);
32399 32454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pArg==NULL || (const char *)pArg==0 ){
32400 32455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isProxyStyle ){
32401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* turn off proxy locking - not supported */
32456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* turn off proxy locking - not supported. If support is added for
32457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** switching proxy locking mode off then it will need to fail if
32458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the journal mode is WAL mode.
32459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
32402 32460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_ERROR /*SQLITE_PROTOCOL? SQLITE_MISUSE?*/;
32403 32461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
32404 32462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* turn off proxy locking - already off - NOOP */
32405 32463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_OK;
32406 32464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -33965,10 +34023,27 @@
33965 34023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "InterlockedCompareExchange", (SYSCALL)InterlockedCompareExchange, 0 },
33966 34024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
33967 34025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define osInterlockedCompareExchange ((LONG(WINAPI*)(LONG \
33968 34026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_WIN32_VOLATILE*, LONG,LONG))aSyscall[76].pCurrent)
33969 34027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* defined(InterlockedCompareExchange) */
34028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
34029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
34030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "UuidCreate", (SYSCALL)UuidCreate, 0 },
34031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
34032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "UuidCreate", (SYSCALL)0, 0 },
34033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
34034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
34035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define osUuidCreate ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[77].pCurrent)
34036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
34037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
34038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "UuidCreateSequential", (SYSCALL)UuidCreateSequential, 0 },
34039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
34040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "UuidCreateSequential", (SYSCALL)0, 0 },
34041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
34042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
34043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define osUuidCreateSequential \
34044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[78].pCurrent)
33970 34045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
33971 34046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}; /* End of the overrideable system calls */
33972 34047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
33973 34048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
33974 34049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the xSetSystemCall() method of sqlite3_vfs for all of the
@@ -36714,20 +36789,20 @@
36714 36789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int szRegion, /* Size of regions */
36715 36790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isWrite, /* True to extend file if necessary */
36716 36791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void volatile **pp /* OUT: Mapped memory */
36717 36792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
36718 36793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
winFile *pDbFd = (winFile*)fd;
36719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- winShm *p = pDbFd->pShm;
36794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ winShm *pShm = pDbFd->pShm;
36720 36795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
winShmNode *pShmNode;
36721 36796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
36722 36797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
36723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !p ){
36798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !pShm ){
36724 36799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = winOpenSharedMemory(pDbFd);
36725 36800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ) return rc;
36726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p = pDbFd->pShm;
36801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pShm = pDbFd->pShm;
36727 36802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
36728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pShmNode = p->pShmNode;
36803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pShmNode = pShm->pShmNode;
36729 36804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
36730 36805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(pShmNode->mutex);
36731 36806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( szRegion==pShmNode->szRegion || pShmNode->nRegion==0 );
36732 36807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
36733 36808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pShmNode->nRegion<=iRegion ){
@@ -38244,10 +38319,26 @@
38244 38319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LARGE_INTEGER i;
38245 38320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
osQueryPerformanceCounter(&i);
38246 38321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&zBuf[n], &i, sizeof(i));
38247 38322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n += sizeof(i);
38248 38323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
38324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
38325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
38326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sizeof(UUID)<=nBuf-n ){
38327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UUID id;
38328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&id, 0, sizeof(UUID));
38329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ osUuidCreate(&id);
38330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(zBuf, &id, sizeof(UUID));
38331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n += sizeof(UUID);
38332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
38333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sizeof(UUID)<=nBuf-n ){
38334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UUID id;
38335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&id, 0, sizeof(UUID));
38336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ osUuidCreateSequential(&id);
38337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(zBuf, &id, sizeof(UUID));
38338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n += sizeof(UUID);
38339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
38249 38340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
38250 38341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return n;
38251 38342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
38252 38343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
38253 38344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -38422,11 +38513,11 @@
38422 38513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
38423 38514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
38424 38515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
38425 38516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Double-check that the aSyscall[] array has been constructed
38426 38517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** correctly. See ticket [bb3a86e890c8e96ab] */
38427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( ArraySize(aSyscall)==77 );
38518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ArraySize(aSyscall)==79 );
38428 38519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
38429 38520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* get memory map allocation granularity */
38430 38521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&winSysInfo, 0, sizeof(SYSTEM_INFO));
38431 38522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_OS_WINRT
38432 38523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
osGetNativeSystemInfo(&winSysInfo);
@@ -52089,10 +52180,13 @@
52089 52180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 incrVacuum; /* True if incr-vacuum is enabled */
52090 52181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bDoTruncate; /* True to truncate db on commit */
52091 52182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
52092 52183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 inTransaction; /* Transaction state */
52093 52184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 max1bytePayload; /* Maximum first byte of cell for a 1-byte payload */
52185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_HAS_CODEC
52186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 optimalReserve; /* Desired amount of reserved space per page */
52187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
52094 52188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 btsFlags; /* Boolean parameters. See BTS_* macros below */
52095 52189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 maxLocal; /* Maximum local payload in non-LEAFDATA tables */
52096 52190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 minLocal; /* Minimum local payload in non-LEAFDATA tables */
52097 52191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 maxLeaf; /* Maximum local payload in a LEAFDATA table */
52098 52192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 minLeaf; /* Minimum local payload in a LEAFDATA table */
@@ -52811,10 +52905,16 @@
52811 52905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isIndex ){
52812 52906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HashElem *p;
52813 52907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(p=sqliteHashFirst(&pSchema->idxHash); p; p=sqliteHashNext(p)){
52814 52908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx = (Index *)sqliteHashData(p);
52815 52909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx->tnum==(int)iRoot ){
52910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iTab ){
52911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Two or more indexes share the same root page. There must
52912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be imposter tables. So just return true. The assert is not
52913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** useful in that case. */
52914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
52915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
52816 52916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTab = pIdx->pTable->tnum;
52817 52917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52818 52918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52819 52919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
52820 52920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTab = iRoot;
@@ -55035,10 +55135,13 @@
55035 55135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeSetPageSize(Btree *p, int pageSize, int nReserve, int iFix){
55036 55136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
55037 55137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtShared *pBt = p->pBt;
55038 55138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nReserve>=-1 && nReserve<=255 );
55039 55139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(p);
55140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_HAS_CODEC
55141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nReserve>pBt->optimalReserve ) pBt->optimalReserve = (u8)nReserve;
55142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
55040 55143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pBt->btsFlags & BTS_PAGESIZE_FIXED ){
55041 55144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(p);
55042 55145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_READONLY;
55043 55146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55044 55147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nReserve<0 ){
@@ -55064,11 +55167,10 @@
55064 55167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55065 55168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeGetPageSize(Btree *p){
55066 55169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p->pBt->pageSize;
55067 55170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55068 55171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if defined(SQLITE_HAS_CODEC) || defined(SQLITE_DEBUG)
55070 55172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55071 55173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function is similar to sqlite3BtreeGetReserve(), except that it
55072 55174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** may only be called if it is guaranteed that the b-tree mutex is already
55073 55175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** held.
55074 55176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -55077,28 +55179,36 @@
55077 55179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database handle that owns *p is not. In this case if sqlite3BtreeEnter()
55078 55180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** were to be called, it might collide with some other operation on the
55079 55181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database handle that owns *p, causing undefined behavior.
55080 55182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55081 55183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeGetReserveNoMutex(Btree *p){
55184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int n;
55082 55185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(p->pBt->mutex) );
55083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return p->pBt->pageSize - p->pBt->usableSize;
55186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n = p->pBt->pageSize - p->pBt->usableSize;
55187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return n;
55084 55188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif /* SQLITE_HAS_CODEC || SQLITE_DEBUG */
55086 55189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if !defined(SQLITE_OMIT_PAGER_PRAGMAS) || !defined(SQLITE_OMIT_VACUUM)
55088 55190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55089 55191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the number of bytes of space at the end of every page that
55090 55192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are intentually left unused. This is the "reserved" space that is
55091 55193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sometimes used by extensions.
55194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
55195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If SQLITE_HAS_MUTEX is defined then the number returned is the
55196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** greater of the current reserved space and the maximum requested
55197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** reserve space.
55092 55198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3BtreeGetReserve(Btree *p){
55199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3BtreeGetOptimalReserve(Btree *p){
55094 55200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n;
55095 55201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(p);
55096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- n = p->pBt->pageSize - p->pBt->usableSize;
55202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n = sqlite3BtreeGetReserveNoMutex(p);
55203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_HAS_CODEC
55204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( n<p->pBt->optimalReserve ) n = p->pBt->optimalReserve;
55205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
55097 55206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(p);
55098 55207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return n;
55099 55208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
55100 55210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55101 55211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55102 55212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set the maximum page count for a database if mxPage is positive.
55103 55213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** No changes are made if mxPage is 0 or negative.
55104 55214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Regardless of the value of mxPage, return the maximum page count.
@@ -55126,11 +55236,10 @@
55126 55236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55127 55237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b = (p->pBt->btsFlags & BTS_SECURE_DELETE)!=0;
55128 55238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(p);
55129 55239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return b;
55130 55240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif /* !defined(SQLITE_OMIT_PAGER_PRAGMAS) || !defined(SQLITE_OMIT_VACUUM) */
55132 55241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55133 55242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55134 55243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Change the 'auto-vacuum' property of the database. If the 'autoVacuum'
55135 55244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parameter is non-zero, then auto-vacuum mode is enabled. If zero, it
55136 55245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is disabled. The default value for the auto-vacuum property is
@@ -62033,11 +62142,11 @@
62033 62142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_HAS_CODEC
62034 62143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Use BtreeGetReserveNoMutex() for the source b-tree, as although it is
62035 62144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** guaranteed that the shared-mutex is held by this thread, handle
62036 62145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** p->pSrc may not actually be the owner. */
62037 62146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSrcReserve = sqlite3BtreeGetReserveNoMutex(p->pSrc);
62038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nDestReserve = sqlite3BtreeGetReserve(p->pDest);
62147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nDestReserve = sqlite3BtreeGetOptimalReserve(p->pDest);
62039 62148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
62040 62149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
62041 62150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iOff;
62042 62151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62043 62152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3BtreeGetReserveNoMutex(p->pSrc)>=0 );
@@ -67523,11 +67632,12 @@
67523 67632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 notUsed;
67524 67633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned char *aKey = (const unsigned char*)pKey;
67525 67634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
67526 67635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( CORRUPT_DB ) return;
67527 67636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idx = getVarint32(aKey, szHdr);
67528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( szHdr<=nKey );
67637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nKey>=0 );
67638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( szHdr<=(u32)nKey );
67529 67639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( idx<szHdr ){
67530 67640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idx += getVarint32(aKey+idx, notUsed);
67531 67641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nField++;
67532 67642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
67533 67643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nField <= pKeyInfo->nField+pKeyInfo->nXField );
@@ -68700,10 +68810,13 @@
68700 68810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetZeroBlob(pCtx->pOut, n);
68701 68811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68702 68812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
68703 68813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCtx->isError = errCode;
68704 68814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCtx->fErrorOrAux = 1;
68815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
68816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCtx->pVdbe->rcApp = errCode;
68817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
68705 68818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCtx->pOut->flags & MEM_Null ){
68706 68819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetStr(pCtx->pOut, sqlite3ErrStr(errCode), -1,
68707 68820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_UTF8, SQLITE_STATIC);
68708 68821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68709 68822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -68780,11 +68893,11 @@
68780 68893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** legacy behavior of returning SQLITE_MISUSE for cases where the
68781 68894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** previous sqlite3_step() returned something other than a SQLITE_LOCKED
68782 68895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or SQLITE_BUSY error.
68783 68896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68784 68897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_OMIT_AUTORESET
68785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->rc==SQLITE_BUSY || p->rc==SQLITE_LOCKED ){
68898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (rc = p->rc&0xff)==SQLITE_BUSY || rc==SQLITE_LOCKED ){
68786 68899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_reset((sqlite3_stmt*)p);
68787 68900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
68788 68901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_MISUSE_BKPT;
68789 68902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68790 68903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
@@ -68826,10 +68939,13 @@
68826 68939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->nVdbeActive++;
68827 68940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->readOnly==0 ) db->nVdbeWrite++;
68828 68941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->bIsReader ) db->nVdbeRead++;
68829 68942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pc = 0;
68830 68943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
68945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->rcApp = SQLITE_OK;
68946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
68831 68947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_EXPLAIN
68832 68948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->explain ){
68833 68949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeList(p);
68834 68950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
68835 68951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_EXPLAIN */
@@ -68870,11 +68986,11 @@
68870 68986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** were called on statement p.
68871 68987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68872 68988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_ROW || rc==SQLITE_DONE || rc==SQLITE_ERROR
68873 68989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| rc==SQLITE_BUSY || rc==SQLITE_MISUSE
68874 68990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
68875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->rc!=SQLITE_ROW && p->rc!=SQLITE_DONE );
68991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (p->rc!=SQLITE_ROW && p->rc!=SQLITE_DONE) || p->rc==p->rcApp );
68876 68992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->isPrepareV2 && rc!=SQLITE_ROW && rc!=SQLITE_DONE ){
68877 68993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If this statement was prepared using sqlite3_prepare_v2(), and an
68878 68994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** error has occurred, then return the error code in p->rc to the
68879 68995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** caller. Set the error code in the database handle to the same value.
68880 68996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -76810,16 +76926,21 @@
76810 76926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
76811 76927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse = 0;
76812 76928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Incrblob *pBlob = 0;
76813 76929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76814 76930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_API_ARMOR
76815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !sqlite3SafetyCheckOk(db) || ppBlob==0 || zTable==0 ){
76931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ppBlob==0 ){
76816 76932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_MISUSE_BKPT;
76817 76933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
76818 76934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
76819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags = !!flags; /* flags = (flags ? 1 : 0); */
76820 76935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppBlob = 0;
76936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_API_ARMOR
76937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !sqlite3SafetyCheckOk(db) || zTable==0 ){
76938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_MISUSE_BKPT;
76939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
76940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
76941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags = !!flags; /* flags = (flags ? 1 : 0); */
76821 76942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76822 76943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(db->mutex);
76823 76944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76824 76945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBlob = (Incrblob *)sqlite3DbMallocZero(db, sizeof(Incrblob));
76825 76946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pBlob ) goto blob_open_out;
@@ -77029,11 +77150,11 @@
77029 77150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p==0 ) return SQLITE_MISUSE_BKPT;
77030 77151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db = p->db;
77031 77152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(db->mutex);
77032 77153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = (Vdbe*)p->pStmt;
77033 77154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n<0 || iOffset<0 || (iOffset+n)>p->nByte ){
77155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( n<0 || iOffset<0 || ((sqlite3_int64)iOffset+n)>p->nByte ){
77035 77156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Request is out of range. Return a transient error. */
77036 77157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_ERROR;
77037 77158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( v==0 ){
77038 77159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is no statement handle, then the blob-handle has
77039 77160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** already been invalidated. Return SQLITE_ABORT in this case.
@@ -80573,13 +80694,14 @@
80573 80694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80574 80695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDb ){
80575 80696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_PartIdx );
80576 80697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IsCheck );
80577 80698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pNC->ncFlags & (NC_PartIdx|NC_IsCheck))!=0 ){
80578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Silently ignore database qualifiers inside CHECK constraints and partial
80579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** indices. Do not raise errors because that might break legacy and
80580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** because it does not hurt anything to just ignore the database name. */
80699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Silently ignore database qualifiers inside CHECK constraints and
80700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** partial indices. Do not raise errors because that might break
80701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** legacy and because it does not hurt anything to just ignore the
80702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database name. */
80581 80703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDb = 0;
80582 80704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
80583 80705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<db->nDb; i++){
80584 80706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db->aDb[i].zName );
80585 80707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3StrICmp(db->aDb[i].zName,zDb)==0 ){
@@ -80646,11 +80768,12 @@
80646 80768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80647 80769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80648 80770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pMatch ){
80649 80771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pMatch->iCursor;
80650 80772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pTab = pMatch->pTab;
80651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (pMatch->jointype & JT_RIGHT)==0 ); /* RIGHT JOIN not (yet) supported */
80773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* RIGHT JOIN not (yet) supported */
80774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pMatch->jointype & JT_RIGHT)==0 );
80652 80775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pMatch->jointype & JT_LEFT)!=0 ){
80653 80776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pExpr, EP_CanBeNull);
80654 80777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80655 80778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSchema = pExpr->pTab->pSchema;
80656 80779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -80967,11 +81090,12 @@
80967 81090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pItem->iCursor;
80968 81091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn = -1;
80969 81092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->affinity = SQLITE_AFF_INTEGER;
80970 81093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
80971 81094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif /* defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT) && !defined(SQLITE_OMIT_SUBQUERY) */
81095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT)
81096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !defined(SQLITE_OMIT_SUBQUERY) */
80973 81097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80974 81098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A lone identifier is the name of a column.
80975 81099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80976 81100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ID: {
80977 81101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return lookupName(pParse, 0, 0, pExpr->u.zToken, pNC, pExpr);
@@ -81032,23 +81156,24 @@
81032 81156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pDef->funcFlags & SQLITE_FUNC_UNLIKELY ){
81033 81157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pExpr, EP_Unlikely|EP_Skip);
81034 81158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( n==2 ){
81035 81159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = exprProbability(pList->a[1].pExpr);
81036 81160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->iTable<0 ){
81037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ErrorMsg(pParse, "second argument to likelihood() must be a "
81038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "constant between 0.0 and 1.0");
81161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ErrorMsg(pParse,
81162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "second argument to likelihood() must be a "
81163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "constant between 0.0 and 1.0");
81039 81164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNC->nErr++;
81040 81165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81041 81166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
81042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* EVIDENCE-OF: R-61304-29449 The unlikely(X) function is equivalent to
81043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** likelihood(X, 0.0625).
81044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EVIDENCE-OF: R-01283-11636 The unlikely(X) function is short-hand for
81045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** likelihood(X,0.0625).
81046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EVIDENCE-OF: R-36850-34127 The likely(X) function is short-hand for
81047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** likelihood(X,0.9375).
81048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EVIDENCE-OF: R-53436-40973 The likely(X) function is equivalent to
81049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** likelihood(X,0.9375). */
81167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* EVIDENCE-OF: R-61304-29449 The unlikely(X) function is
81168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** equivalent to likelihood(X, 0.0625).
81169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** EVIDENCE-OF: R-01283-11636 The unlikely(X) function is
81170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** short-hand for likelihood(X,0.0625).
81171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** EVIDENCE-OF: R-36850-34127 The likely(X) function is short-hand
81172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for likelihood(X,0.9375).
81173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** EVIDENCE-OF: R-53436-40973 The likely(X) function is equivalent
81174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to likelihood(X,0.9375). */
81050 81175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* TUNING: unlikely() probability is 0.0625. likely() is 0.9375 */
81051 81176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pDef->zName[0]=='u' ? 8388608 : 125829120;
81052 81177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81053 81178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81054 81179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_AUTHORIZATION
@@ -81061,11 +81186,13 @@
81061 81186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81062 81187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_NULL;
81063 81188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
81064 81189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81065 81190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
81066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pDef->funcFlags & SQLITE_FUNC_CONSTANT ) ExprSetProperty(pExpr,EP_Constant);
81191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pDef->funcFlags & SQLITE_FUNC_CONSTANT ){
81192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(pExpr,EP_ConstFunc);
81193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
81067 81194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81068 81195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( is_agg && (pNC->ncFlags & NC_AllowAgg)==0 ){
81069 81196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "misuse of aggregate function %.*s()", nId,zId);
81070 81197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNC->nErr++;
81071 81198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
is_agg = 0;
@@ -81372,11 +81499,12 @@
81372 81499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->u.x.iOrderByCol ){
81373 81500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->u.x.iOrderByCol>pEList->nExpr ){
81374 81501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
resolveOutOfRangeError(pParse, zType, i+1, pEList->nExpr);
81375 81502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
81376 81503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- resolveAlias(pParse, pEList, pItem->u.x.iOrderByCol-1, pItem->pExpr, zType,0);
81504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ resolveAlias(pParse, pEList, pItem->u.x.iOrderByCol-1, pItem->pExpr,
81505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zType,0);
81378 81506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81379 81507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81380 81508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
81381 81509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81382 81510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -81925,13 +82053,13 @@
81925 82053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81926 82054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_COLLATE || (op==TK_REGISTER && p->op2==TK_COLLATE) ){
81927 82055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColl = sqlite3GetCollSeq(pParse, ENC(db), 0, p->u.zToken);
81928 82056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
81929 82057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pTab!=0
81931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (op==TK_AGG_COLUMN || op==TK_COLUMN
82058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (op==TK_AGG_COLUMN || op==TK_COLUMN
81932 82059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| op==TK_REGISTER || op==TK_TRIGGER)
82060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && p->pTab!=0
81933 82061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
81934 82062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* op==TK_REGISTER && p->pTab!=0 happens when pExpr was originally
81935 82063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a TK_COLUMN but was previously evaluated and cached in a register */
81936 82064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j = p->iColumn;
81937 82065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j>=0 ){
@@ -81939,14 +82067,29 @@
81939 82067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColl = sqlite3FindCollSeq(db, ENC(db), zColl, 0);
81940 82068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81941 82069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
81942 82070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81943 82071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->flags & EP_Collate ){
81944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ALWAYS(p->pLeft) && (p->pLeft->flags & EP_Collate)!=0 ){
82072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pLeft && (p->pLeft->flags & EP_Collate)!=0 ){
81945 82073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->pLeft;
81946 82074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
81947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p = p->pRight;
82075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pNext = p->pRight;
82076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The Expr.x union is never used at the same time as Expr.pRight */
82077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->x.pList==0 || p->pRight==0 );
82078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* p->flags holds EP_Collate and p->pLeft->flags does not. And
82079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** p->x.pSelect cannot. So if p->x.pLeft exists, it must hold at
82080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** least one EP_Collate. Thus the following two ALWAYS. */
82081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->x.pList!=0 && ALWAYS(!ExprHasProperty(p, EP_xIsSelect)) ){
82082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
82083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; ALWAYS(i<p->x.pList->nExpr); i++){
82084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(p->x.pList->a[i].pExpr, EP_Collate) ){
82085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNext = p->x.pList->a[i].pExpr;
82086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
82087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
82088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
82089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
82090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p = pNext;
81948 82091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81949 82092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
81950 82093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
81951 82094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81952 82095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -82148,29 +82291,36 @@
82148 82291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set the Expr.nHeight variable in the structure passed as an
82149 82292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument. An expression with no children, Expr.pList or
82150 82293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Expr.pSelect member has a height of 1. Any other expression
82151 82294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** has a height equal to the maximum height of any other
82152 82295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** referenced Expr plus one.
82296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
82297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Also propagate EP_Propagate flags up from Expr.x.pList to Expr.flags,
82298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if appropriate.
82153 82299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
82154 82300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void exprSetHeight(Expr *p){
82155 82301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nHeight = 0;
82156 82302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfExpr(p->pLeft, &nHeight);
82157 82303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfExpr(p->pRight, &nHeight);
82158 82304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(p, EP_xIsSelect) ){
82159 82305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfSelect(p->x.pSelect, &nHeight);
82160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
82306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( p->x.pList ){
82161 82307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfExprList(p->x.pList, &nHeight);
82308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
82162 82309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82163 82310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nHeight = nHeight + 1;
82164 82311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82165 82312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82166 82313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
82167 82314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set the Expr.nHeight variable using the exprSetHeight() function. If
82168 82315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the height is greater than the maximum allowed expression depth,
82169 82316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** leave an error in pParse.
82317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
82318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Also propagate all EP_Propagate flags from the Expr.x.pList into
82319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Expr.flags.
82170 82320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
82171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3ExprSetHeight(Parse *pParse, Expr *p){
82321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p){
82172 82322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprSetHeight(p);
82173 82323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCheckHeight(pParse, p->nHeight);
82174 82324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82175 82325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82176 82326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -82180,12 +82330,21 @@
82180 82330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3SelectExprHeight(Select *p){
82181 82331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nHeight = 0;
82182 82332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfSelect(p, &nHeight);
82183 82333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return nHeight;
82184 82334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
82186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define exprSetHeight(y)
82335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else /* ABOVE: Height enforcement enabled. BELOW: Height enforcement off */
82336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
82337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Propagate all EP_Propagate flags from the Expr.x.pList into
82338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Expr.flags.
82339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
82340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p){
82341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p && p->x.pList && !ExprHasProperty(p, EP_xIsSelect) ){
82342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
82343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
82344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
82345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define exprSetHeight(y)
82187 82346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_MAX_EXPR_DEPTH>0 */
82188 82347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82189 82348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
82190 82349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is the core allocator for Expr nodes.
82191 82350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -82283,15 +82442,15 @@
82283 82442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pLeft);
82284 82443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pRight);
82285 82444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
82286 82445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRight ){
82287 82446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->pRight = pRight;
82288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRoot->flags |= EP_Collate & pRight->flags;
82447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRoot->flags |= EP_Propagate & pRight->flags;
82289 82448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82290 82449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLeft ){
82291 82450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->pLeft = pLeft;
82292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRoot->flags |= EP_Collate & pLeft->flags;
82451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRoot->flags |= EP_Propagate & pLeft->flags;
82293 82452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82294 82453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprSetHeight(pRoot);
82295 82454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82296 82455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82297 82456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -82387,11 +82546,11 @@
82387 82546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pList); /* Avoid memory leak when malloc fails */
82388 82547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
82389 82548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82390 82549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->x.pList = pList;
82391 82550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pNew, EP_xIsSelect) );
82392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprSetHeight(pParse, pNew);
82551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprSetHeightAndFlags(pParse, pNew);
82393 82552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pNew;
82394 82553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82395 82554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82396 82555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
82397 82556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Assign a variable number to an expression that encodes a wildcard
@@ -83001,10 +83160,25 @@
83001 83160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pItem->zSpan);
83002 83161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83003 83162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pList->a);
83004 83163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pList);
83005 83164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
83166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
83167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the bitwise-OR of all Expr.flags fields in the given
83168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ExprList.
83169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
83170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE u32 sqlite3ExprListFlags(const ExprList *pList){
83171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
83172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 m = 0;
83173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pList ){
83174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<pList->nExpr; i++){
83175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ m |= pList->a[i].pExpr->flags;
83176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
83177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
83178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return m;
83179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
83006 83180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
83007 83181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
83008 83182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These routines are Walker callbacks used to check expressions to
83009 83183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** see if they are "constant" for some definition of constant. The
83010 83184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Walker.eCode value determines the type of "constant" we are looking
@@ -83042,11 +83216,11 @@
83042 83216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( pExpr->op ){
83043 83217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Consider functions to be constant if all their arguments are constant
83044 83218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and either pWalker->eCode==4 or 5 or the function has the
83045 83219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_FUNC_CONST flag. */
83046 83220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_FUNCTION:
83047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWalker->eCode>=4 || ExprHasProperty(pExpr,EP_Constant) ){
83221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWalker->eCode>=4 || ExprHasProperty(pExpr,EP_ConstFunc) ){
83048 83222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
83049 83223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
83050 83224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWalker->eCode = 0;
83051 83225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Abort;
83052 83226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -84049,11 +84223,12 @@
84049 84223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
84050 84224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int minLru;
84051 84225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idxLru;
84052 84226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct yColCache *p;
84053 84227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( iReg>0 ); /* Register numbers are always positive */
84228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Unless an error has occurred, register numbers are always positive. */
84229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( iReg>0 || pParse->nErr || pParse->db->mallocFailed );
84055 84230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iCol>=-1 && iCol<32768 ); /* Finite column numbers */
84056 84231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84057 84232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The SQLITE_ColumnCache flag disables the column cache. This is used
84058 84233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for testing only - to verify that SQLite always gets the same answer
84059 84234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with and without the column cache.
@@ -89078,11 +89253,11 @@
89078 89253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
89079 89254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
89080 89255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_NULL:
89081 89256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* No key specified. Use the key from the main database */
89082 89257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodecGetKey(db, 0, (void**)&zKey, &nKey);
89083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( nKey>0 || sqlite3BtreeGetReserve(db->aDb[0].pBt)>0 ){
89258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nKey>0 || sqlite3BtreeGetOptimalReserve(db->aDb[0].pBt)>0 ){
89084 89259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3CodecAttach(db, db->nDb-1, zKey, nKey);
89085 89260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
89086 89261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
89087 89262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
89088 89263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -90044,14 +90219,10 @@
90044 90219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
90045 90220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE Table *sqlite3FindTable(sqlite3 *db, const char *zName, const char *zDatabase){
90046 90221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *p = 0;
90047 90222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
90048 90223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
90049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_ENABLE_API_ARMOR
90050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !sqlite3SafetyCheckOk(db) || zName==0 ) return 0;
90051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
90052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
90053 90224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* All mutexes are required for schema access. Make sure we hold them. */
90054 90225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zDatabase!=0 || sqlite3BtreeHoldsAllMutexes(db) );
90055 90226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_USER_AUTHENTICATION
90056 90227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Only the admin user is allowed to know that the sqlite_user table
90057 90228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** exists */
@@ -91467,15 +91638,18 @@
91467 91638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91468 91639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPk->isCovering = 1;
91469 91640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPk!=0 );
91470 91641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nPk = pPk->nKeyCol;
91471 91642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Make sure every column of the PRIMARY KEY is NOT NULL */
91473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<nPk; i++){
91474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTab->aCol[pPk->aiColumn[i]].notNull = 1;
91643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Make sure every column of the PRIMARY KEY is NOT NULL. (Except,
91644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** do not enforce this for imposter tables.) */
91645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !db->init.imposterTable ){
91646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<nPk; i++){
91647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->aCol[pPk->aiColumn[i]].notNull = 1;
91648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
91649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPk->uniqNotNull = 1;
91475 91650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPk->uniqNotNull = 1;
91477 91651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91478 91652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The root page of the PRIMARY KEY is the table root page */
91479 91653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPk->tnum = pTab->tnum;
91480 91654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91481 91655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Update the in-memory representation of all UNIQUE indices by converting
@@ -94706,11 +94880,11 @@
94706 94880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pInClause = sqlite3PExpr(pParse, TK_IN, pWhereRowid, 0, 0);
94707 94881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pInClause == 0 ) goto limit_where_cleanup_1;
94708 94882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94709 94883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pInClause->x.pSelect = pSelect;
94710 94884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pInClause->flags |= EP_xIsSelect;
94711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprSetHeight(pParse, pInClause);
94885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprSetHeightAndFlags(pParse, pInClause);
94712 94886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pInClause;
94713 94887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94714 94888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* something went wrong. clean up anything allocated. */
94715 94889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
limit_where_cleanup_1:
94716 94890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(pParse->db, pSelect);
@@ -95648,10 +95822,18 @@
95648 95822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(z2=z; *z2; len++){
95649 95823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_SKIP_UTF8(z2);
95650 95824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95651 95825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95652 95826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_SUBSTR_COMPATIBILITY
95828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If SUBSTR_COMPATIBILITY is defined then substr(X,0,N) work the same as
95829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** as substr(X,1,N) - it returns the first N characters of X. This
95830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is essentially a back-out of the bug-fix in check-in [5fc125d362df4b8]
95831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** from 2009-02-02 for compatibility of applications that exploited the
95832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** old buggy behavior. */
95833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p1==0 ) p1 = 1; /* <rdar://problem/6778339> */
95834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
95653 95835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( argc==3 ){
95654 95836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p2 = sqlite3_value_int(argv[2]);
95655 95837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p2<0 ){
95656 95838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p2 = -p2;
95657 95839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
negP2 = 1;
@@ -102032,15 +102214,22 @@
102032 102214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_ENABLE_LOCKING_STYLE 0
102033 102215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# endif
102034 102216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
102035 102217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102036 102218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/***************************************************************************
102037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The next block of code, including the PragTyp_XXXX macro definitions and
102038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the aPragmaName[] object is composed of generated code. DO NOT EDIT.
102039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
102040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** To add new pragmas, edit the code in ../tool/mkpragmatab.tcl and rerun
102041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** that script. Then copy/paste the output in place of the following:
102219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The "pragma.h" include file is an automatically generated file that
102220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that includes the PragType_XXXX macro definitions and the aPragmaName[]
102221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** object. This ensures that the aPragmaName[] table is arranged in
102222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** lexicographical order to facility a binary search of the pragma name.
102223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Do not edit pragma.h directly. Edit and rerun the script in at
102224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ../tool/mkpragmatab.tcl. */
102225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /************** Include pragma.h in the middle of pragma.c *******************/
102226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /************** Begin file pragma.h ******************************************/
102227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* DO NOT EDIT!
102228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This file is automatically generated by the script at
102229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ../tool/mkpragmatab.tcl. To update the set of pragmas, edit
102230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that script and rerun it.
102042 102231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102043 102232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PragTyp_HEADER_VALUE 0
102044 102233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PragTyp_AUTO_VACUUM 1
102045 102234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PragTyp_FLAG 2
102046 102235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PragTyp_BUSY_TIMEOUT 3
@@ -102271,10 +102460,14 @@
102271 102460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* iArg: */ 0 },
102272 102461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ /* zName: */ "index_list",
102273 102462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ePragTyp: */ PragTyp_INDEX_LIST,
102274 102463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ePragFlag: */ PragFlag_NeedSchema,
102275 102464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* iArg: */ 0 },
102465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { /* zName: */ "index_xinfo",
102466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ePragTyp: */ PragTyp_INDEX_INFO,
102467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ePragFlag: */ PragFlag_NeedSchema,
102468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* iArg: */ 1 },
102276 102469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
102277 102470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_OMIT_INTEGRITY_CHECK)
102278 102471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ /* zName: */ "integrity_check",
102279 102472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ePragTyp: */ PragTyp_INTEGRITY_CHECK,
102280 102473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ePragFlag: */ PragFlag_NeedSchema,
@@ -102487,13 +102680,14 @@
102487 102680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ePragTyp: */ PragTyp_FLAG,
102488 102681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ePragFlag: */ 0,
102489 102682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* iArg: */ SQLITE_WriteSchema|SQLITE_RecoveryMode },
102490 102683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
102491 102684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
102492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Number of pragmas: 58 on by default, 71 total. */
102493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* End of the automatically generated pragma table.
102494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ***************************************************************************/
102685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Number of pragmas: 59 on by default, 72 total. */
102686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
102687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /************** End of pragma.h **********************************************/
102688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /************** Continuing where we left off in pragma.c *********************/
102495 102689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102496 102690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
102497 102691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Interpret the given string as a safety level. Return 0 for OFF,
102498 102692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 1 for ON or NORMAL and 2 for FULL. Return 1 for an empty or
102499 102693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** unrecognized string argument. The FULL option is disallowed
@@ -102742,10 +102936,11 @@
102742 102936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int lwr, upr, mid = 0; /* Binary search bounds */
102743 102937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc; /* return value form SQLITE_FCNTL_PRAGMA */
102744 102938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db; /* The database connection */
102745 102939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Db *pDb; /* The specific database being pragmaed */
102746 102940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = sqlite3GetVdbe(pParse); /* Prepared statement */
102941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const struct sPragmaNames *pPragma;
102747 102942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102748 102943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( v==0 ) return;
102749 102944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeRunOnlyOnce(v);
102750 102945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = 2;
102751 102946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -102819,18 +103014,19 @@
102819 103014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
102820 103015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lwr = mid + 1;
102821 103016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102822 103017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102823 103018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( lwr>upr ) goto pragma_out;
103019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPragma = &aPragmaNames[mid];
102824 103020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102825 103021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make sure the database schema is loaded if the pragma requires that */
102826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (aPragmaNames[mid].mPragFlag & PragFlag_NeedSchema)!=0 ){
103022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pPragma->mPragFlag & PragFlag_NeedSchema)!=0 ){
102827 103023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ReadSchema(pParse) ) goto pragma_out;
102828 103024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102829 103025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102830 103026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump to the appropriate pragma handler */
102831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- switch( aPragmaNames[mid].ePragTyp ){
103027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( pPragma->ePragTyp ){
102832 103028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102833 103029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_OMIT_PAGER_PRAGMAS) && !defined(SQLITE_OMIT_DEPRECATED)
102834 103030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
102835 103031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** PRAGMA [database.]default_cache_size
102836 103032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** PRAGMA [database.]default_cache_size=N
@@ -103405,14 +103601,13 @@
103405 103601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_PAGER_PRAGMAS */
103406 103602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
103407 103603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_FLAG_PRAGMAS
103408 103604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PragTyp_FLAG: {
103409 103605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRight==0 ){
103410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- returnSingleInt(pParse, aPragmaNames[mid].zName,
103411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (db->flags & aPragmaNames[mid].iArg)!=0 );
103606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ returnSingleInt(pParse, pPragma->zName, (db->flags & pPragma->iArg)!=0 );
103412 103607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
103413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int mask = aPragmaNames[mid].iArg; /* Mask of bits to set or clear. */
103608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mask = pPragma->iArg; /* Mask of bits to set or clear. */
103414 103609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->autoCommit==0 ){
103415 103610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Foreign key support may not be enabled or disabled while not
103416 103611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in auto-commit mode. */
103417 103612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mask &= ~(SQLITE_ForeignKeys);
103418 103613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -103537,24 +103732,34 @@
103537 103732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx;
103538 103733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
103539 103734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = sqlite3FindIndex(db, zRight, zDb);
103540 103735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx ){
103541 103736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
103737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mx = pPragma->iArg ? pIdx->nColumn : pIdx->nKeyCol;
103542 103738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pIdx->pTable;
103543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeSetNumCols(v, 3);
103544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->nMem = 3;
103739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeSetNumCols(v, 6);
103740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->nMem = 6;
103545 103741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodeVerifySchema(pParse, iDb);
103546 103742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "seqno", SQLITE_STATIC);
103547 103743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, 1, COLNAME_NAME, "cid", SQLITE_STATIC);
103548 103744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, 2, COLNAME_NAME, "name", SQLITE_STATIC);
103549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<pIdx->nKeyCol; i++){
103745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeSetColName(v, 3, COLNAME_NAME, "desc", SQLITE_STATIC);
103746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeSetColName(v, 4, COLNAME_NAME, "coll", SQLITE_STATIC);
103747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeSetColName(v, 5, COLNAME_NAME, "key", SQLITE_STATIC);
103748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<mx; i++){
103550 103749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i16 cnum = pIdx->aiColumn[i];
103551 103750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, i, 1);
103552 103751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, cnum, 2);
103553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pTab->nCol>cnum );
103554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, pTab->aCol[cnum].zName, 0);
103555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 3);
103752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cnum<0 ){
103753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Null, 0, 3);
103754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
103755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, pTab->aCol[cnum].zName, 0);
103756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
103757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Integer, pIdx->aSortOrder[i], 4);
103758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_String8, 0, 5, 0, pIdx->azColl[i], 0);
103759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Integer, i<pIdx->nKeyCol, 6);
103760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 6);
103556 103761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103557 103762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103558 103763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103559 103764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
103560 103765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -103563,21 +103768,26 @@
103563 103768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
103564 103769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
103565 103770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = sqlite3FindTable(db, zRight, zDb);
103566 103771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab ){
103567 103772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = sqlite3GetVdbe(pParse);
103568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeSetNumCols(v, 3);
103569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->nMem = 3;
103773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeSetNumCols(v, 5);
103774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->nMem = 5;
103570 103775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodeVerifySchema(pParse, iDb);
103571 103776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "seq", SQLITE_STATIC);
103572 103777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, 1, COLNAME_NAME, "name", SQLITE_STATIC);
103573 103778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, 2, COLNAME_NAME, "unique", SQLITE_STATIC);
103779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeSetColName(v, 3, COLNAME_NAME, "origin", SQLITE_STATIC);
103780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeSetColName(v, 4, COLNAME_NAME, "partial", SQLITE_STATIC);
103574 103781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pIdx=pTab->pIndex, i=0; pIdx; pIdx=pIdx->pNext, i++){
103782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *azOrigin[] = { "c", "u", "pk" };
103575 103783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, i, 1);
103576 103784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, 2, 0, pIdx->zName, 0);
103577 103785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, IsUniqueIndex(pIdx), 3);
103578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 3);
103786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_String8, 0, 4, 0, azOrigin[pIdx->idxType], 0);
103787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Integer, pIdx->pPartIdxWhere!=0, 5);
103788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 5);
103579 103789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103580 103790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103581 103791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103582 103792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
103583 103793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -104143,13 +104353,13 @@
104143 104353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
104144 104354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The user-version is not used internally by SQLite. It may be used by
104145 104355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** applications for any purpose.
104146 104356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104147 104357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PragTyp_HEADER_VALUE: {
104148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iCookie = aPragmaNames[mid].iArg; /* Which cookie to read or write */
104358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iCookie = pPragma->iArg; /* Which cookie to read or write */
104149 104359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeUsesBtree(v, iDb);
104150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zRight && (aPragmaNames[mid].mPragFlag & PragFlag_ReadOnly)==0 ){
104360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zRight && (pPragma->mPragFlag & PragFlag_ReadOnly)==0 ){
104151 104361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Write the specified cookie value */
104152 104362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const VdbeOpList setCookie[] = {
104153 104363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Transaction, 0, 1, 0}, /* 0 */
104154 104364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_Integer, 0, 1, 0}, /* 1 */
104155 104365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_SetCookie, 0, 0, 1}, /* 2 */
@@ -104265,11 +104475,11 @@
104265 104475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if one is set. If no busy handler or a different busy handler is set
104266 104476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then 0 is returned. Setting the busy_timeout to 0 or negative
104267 104477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** disables the timeout.
104268 104478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104269 104479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*case PragTyp_BUSY_TIMEOUT*/ default: {
104270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( aPragmaNames[mid].ePragTyp==PragTyp_BUSY_TIMEOUT );
104480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pPragma->ePragTyp==PragTyp_BUSY_TIMEOUT );
104271 104481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRight ){
104272 104482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_busy_timeout(db, sqlite3Atoi(zRight));
104273 104483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104274 104484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
returnSingleInt(pParse, "timeout", db->busyTimeout);
104275 104485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -108486,11 +108696,14 @@
108486 108696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
108487 108697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Flattening is only attempted if all of the following are true:
108488 108698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
108489 108699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (1) The subquery and the outer query do not both use aggregates.
108490 108700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
108491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (2) The subquery is not an aggregate or the outer query is not a join.
108701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (2) The subquery is not an aggregate or (2a) the outer query is not a join
108702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and (2b) the outer query does not use subqueries other than the one
108703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** FROM-clause subquery that is a candidate for flattening. (2b is
108704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** due to ticket [2f7170d73bf9abf80] from 2015-02-09.)
108492 108705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
108493 108706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3) The subquery is not the right operand of a left outer join
108494 108707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (Originally ticket #306. Strengthened by ticket #3300)
108495 108708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
108496 108709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (4) The subquery is not DISTINCT.
@@ -108623,12 +108836,21 @@
108623 108836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSrc && iFrom>=0 && iFrom<pSrc->nSrc );
108624 108837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSubitem = &pSrc->a[iFrom];
108625 108838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iParent = pSubitem->iCursor;
108626 108839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSub = pSubitem->pSelect;
108627 108840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSub!=0 );
108628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( isAgg && subqueryIsAgg ) return 0; /* Restriction (1) */
108629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( subqueryIsAgg && pSrc->nSrc>1 ) return 0; /* Restriction (2) */
108841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( subqueryIsAgg ){
108842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isAgg ) return 0; /* Restriction (1) */
108843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSrc->nSrc>1 ) return 0; /* Restriction (2a) */
108844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (p->pWhere && ExprHasProperty(p->pWhere,EP_Subquery))
108845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (sqlite3ExprListFlags(p->pEList) & EP_Subquery)!=0
108846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (sqlite3ExprListFlags(p->pOrderBy) & EP_Subquery)!=0
108847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
108848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0; /* Restriction (2b) */
108849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
108850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
108851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
108630 108852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSubSrc = pSub->pSrc;
108631 108853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSubSrc );
108632 108854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Prior to version 3.1.2, when LIMIT and OFFSET had to be simple constants,
108633 108855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not arbitrary expressions, we allowed some combining of LIMIT and OFFSET
108634 108856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** because they could be computed at compile-time. But when LIMIT and OFFSET
@@ -109445,11 +109667,11 @@
109445 109667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SUBQUERY
109446 109668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pSel = pFrom->pSelect;
109447 109669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A sub-query in the FROM clause of a SELECT */
109448 109670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSel!=0 );
109449 109671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pFrom->pTab==0 );
109450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3WalkSelect(pWalker, pSel);
109672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3WalkSelect(pWalker, pSel) ) return WRC_Abort;
109451 109673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table));
109452 109674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab==0 ) return WRC_Abort;
109453 109675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->nRef = 1;
109454 109676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->zName = sqlite3MPrintf(db, "sqlite_sq_%p", (void*)pTab);
109455 109677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( pSel->pPrior ){ pSel = pSel->pPrior; }
@@ -110044,10 +110266,17 @@
110044 110266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nErr || db->mallocFailed ){
110045 110267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto select_end;
110046 110268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110047 110269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isAgg = (p->selFlags & SF_Aggregate)!=0;
110048 110270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pEList!=0 );
110271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SELECTTRACE_ENABLED
110272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3SelectTrace & 0x100 ){
110273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECTTRACE(0x100,pParse,p, ("after name resolution:\n"));
110274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3TreeViewSelect(0, p, 0);
110275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
110276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
110277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
110049 110278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110050 110279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Begin generating code.
110051 110280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
110052 110281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = sqlite3GetVdbe(pParse);
110053 110282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( v==0 ) goto select_end;
@@ -110789,13 +111018,13 @@
110789 111018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate a human-readable description of a the Select object.
110790 111019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
110791 111020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView *pView, const Select *p, u8 moreToFollow){
110792 111021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n = 0;
110793 111022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pView = sqlite3TreeViewPush(pView, moreToFollow);
110794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3TreeViewLine(pView, "SELECT%s%s",
111023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3TreeViewLine(pView, "SELECT%s%s (0x%p)",
110795 111024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
((p->selFlags & SF_Distinct) ? " DISTINCT" : ""),
110796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((p->selFlags & SF_Aggregate) ? " agg_flag" : "")
111025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((p->selFlags & SF_Aggregate) ? " agg_flag" : ""), p
110797 111026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
110798 111027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pSrc && p->pSrc->nSrc ) n++;
110799 111028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pWhere ) n++;
110800 111029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pGroupBy ) n++;
110801 111030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pHaving ) n++;
@@ -113161,11 +113390,11 @@
113161 113390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** locked (as there was more than one active statement when the transaction
113162 113391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to read the schema was concluded. Unlock it here so that this doesn't
113163 113392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cause problems for the call to BtreeSetPageSize() below. */
113164 113393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeCommit(pTemp);
113165 113394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
113166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nRes = sqlite3BtreeGetReserve(pMain);
113395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nRes = sqlite3BtreeGetOptimalReserve(pMain);
113167 113396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
113168 113397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A VACUUM cannot change the pagesize of an encrypted database. */
113169 113398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_HAS_CODEC
113170 113399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->nextPagesize ){
113171 113400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
extern void sqlite3CodecGetKey(sqlite3*, int, void**, int*);
@@ -114058,11 +114287,13 @@
114058 114287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
114059 114288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
114060 114289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErr = 0;
114061 114290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
114062 114291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_API_ARMOR
114063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
114292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !sqlite3SafetyCheckOk(db) || zCreateTable==0 ){
114293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_MISUSE_BKPT;
114294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
114064 114295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
114065 114296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(db->mutex);
114066 114297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db->pVtabCtx || !(pTab = db->pVtabCtx->pTab) ){
114067 114298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Error(db, SQLITE_MISUSE);
114068 114299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(db->mutex);
@@ -116547,16 +116778,20 @@
116547 116778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTable = pSrc->pTab;
116548 116779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWCEnd = &pWC->a[pWC->nTerm];
116549 116780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop = pLevel->pWLoop;
116550 116781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idxCols = 0;
116551 116782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pTerm=pWC->a; pTerm<pWCEnd; pTerm++){
116783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pExpr = pTerm->pExpr;
116784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_FromJoin) /* prereq always non-zero */
116785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pExpr->iRightJoinTable!=pSrc->iCursor /* for the right-hand */
116786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pLoop->prereq!=0 ); /* table of a LEFT JOIN */
116552 116787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->prereq==0
116553 116788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pTerm->wtFlags & TERM_VIRTUAL)==0
116554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && !ExprHasProperty(pTerm->pExpr, EP_FromJoin)
116555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && sqlite3ExprIsTableConstant(pTerm->pExpr, pSrc->iCursor) ){
116789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !ExprHasProperty(pExpr, EP_FromJoin)
116790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && sqlite3ExprIsTableConstant(pExpr, pSrc->iCursor) ){
116556 116791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPartial = sqlite3ExprAnd(pParse->db, pPartial,
116557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDup(pParse->db, pTerm->pExpr, 0));
116792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprDup(pParse->db, pExpr, 0));
116558 116793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116559 116794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( termCanDriveIndex(pTerm, pSrc, notReady) ){
116560 116795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol = pTerm->u.leftColumn;
116561 116796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
116562 116797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iCol==BMS );
@@ -119630,12 +119865,13 @@
119630 119865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
119631 119866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int whereUsablePartialIndex(int iTab, WhereClause *pWC, Expr *pWhere){
119632 119867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
119633 119868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pTerm;
119634 119869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pTerm=pWC->a; i<pWC->nTerm; i++, pTerm++){
119635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3ExprImpliesExpr(pTerm->pExpr, pWhere, iTab)
119636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && !ExprHasProperty(pTerm->pExpr, EP_FromJoin)
119870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pExpr = pTerm->pExpr;
119871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3ExprImpliesExpr(pExpr, pWhere, iTab)
119872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (!ExprHasProperty(pExpr, EP_FromJoin) || pExpr->iRightJoinTable==iTab)
119637 119873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
119638 119874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
119639 119875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119640 119876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119641 119877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
@@ -124576,11 +124812,11 @@
124576 124812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr = sqlite3PExpr(pParse, yymsp[-3].minor.yy328 ? TK_NE : TK_EQ, yymsp[-4].minor.yy346.pExpr, pRHS, 0);
124577 124813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
124578 124814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy346.pExpr, 0, 0);
124579 124815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yygotominor.yy346.pExpr ){
124580 124816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr->x.pList = yymsp[-1].minor.yy14;
124581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
124817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprSetHeightAndFlags(pParse, yygotominor.yy346.pExpr);
124582 124818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
124583 124819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14);
124584 124820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
124585 124821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yymsp[-3].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy346.pExpr, 0, 0);
124586 124822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -124591,12 +124827,12 @@
124591 124827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 224: /* expr ::= LP select RP */
124592 124828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
124593 124829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_SELECT, 0, 0, 0);
124594 124830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yygotominor.yy346.pExpr ){
124595 124831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr->x.pSelect = yymsp[-1].minor.yy3;
124596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect);
124597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
124832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect|EP_Subquery);
124833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprSetHeightAndFlags(pParse, yygotominor.yy346.pExpr);
124598 124834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
124599 124835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy3);
124600 124836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
124601 124837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.zStart = yymsp[-2].minor.yy0.z;
124602 124838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
@@ -124605,12 +124841,12 @@
124605 124841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 225: /* expr ::= expr in_op LP select RP */
124606 124842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
124607 124843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy346.pExpr, 0, 0);
124608 124844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yygotominor.yy346.pExpr ){
124609 124845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr->x.pSelect = yymsp[-1].minor.yy3;
124610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect);
124611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
124846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect|EP_Subquery);
124847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprSetHeightAndFlags(pParse, yygotominor.yy346.pExpr);
124612 124848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
124613 124849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy3);
124614 124850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
124615 124851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yymsp[-3].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy346.pExpr, 0, 0);
124616 124852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.zStart = yymsp[-4].minor.yy346.zStart;
@@ -124621,12 +124857,12 @@
124621 124857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
124622 124858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);
124623 124859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-3].minor.yy346.pExpr, 0, 0);
124624 124860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yygotominor.yy346.pExpr ){
124625 124861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr->x.pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0,0);
124626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect);
124627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
124862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(yygotominor.yy346.pExpr, EP_xIsSelect|EP_Subquery);
124863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprSetHeightAndFlags(pParse, yygotominor.yy346.pExpr);
124628 124864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
124629 124865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcListDelete(pParse->db, pSrc);
124630 124866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
124631 124867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yymsp[-2].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy346.pExpr, 0, 0);
124632 124868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.zStart = yymsp[-3].minor.yy346.zStart;
@@ -124636,12 +124872,12 @@
124636 124872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 227: /* expr ::= EXISTS LP select RP */
124637 124873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
124638 124874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *p = yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_EXISTS, 0, 0, 0);
124639 124875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
124640 124876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->x.pSelect = yymsp[-1].minor.yy3;
124641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprSetProperty(p, EP_xIsSelect);
124642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprSetHeight(pParse, p);
124877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(p, EP_xIsSelect|EP_Subquery);
124878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprSetHeightAndFlags(pParse, p);
124643 124879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
124644 124880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy3);
124645 124881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
124646 124882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.zStart = yymsp[-3].minor.yy0.z;
124647 124883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
@@ -124650,11 +124886,11 @@
124650 124886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 228: /* expr ::= CASE case_operand case_exprlist case_else END */
124651 124887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
124652 124888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy132, 0, 0);
124653 124889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yygotominor.yy346.pExpr ){
124654 124890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.pExpr->x.pList = yymsp[-1].minor.yy132 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy14,yymsp[-1].minor.yy132) : yymsp[-2].minor.yy14;
124655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprSetHeight(pParse, yygotominor.yy346.pExpr);
124891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprSetHeightAndFlags(pParse, yygotominor.yy346.pExpr);
124656 124892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
124657 124893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy14);
124658 124894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy132);
124659 124895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
124660 124896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yygotominor.yy346.zStart = yymsp[-4].minor.yy0.z;
@@ -125892,14 +126128,11 @@
125892 126128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int lastTokenParsed = -1; /* type of the previous token */
125893 126129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 enableLookaside; /* Saved value of db->lookaside.bEnabled */
125894 126130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db; /* The database connection */
125895 126131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mxSqlLen; /* Max length of an SQL string */
125896 126132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
125897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
125898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_ENABLE_API_ARMOR
125899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zSql==0 || pzErrMsg==0 ) return SQLITE_MISUSE_BKPT;
125900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
126133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( zSql!=0 );
125901 126134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mxSqlLen = db->aLimit[SQLITE_LIMIT_SQL_LENGTH];
125902 126135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->nVdbeActive==0 ){
125903 126136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->u1.isInterrupted = 0;
125904 126137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
125905 126138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->rc = SQLITE_OK;
@@ -127823,11 +128056,11 @@
127823 128056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db,
127824 128057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xBusy)(void*,int),
127825 128058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pArg
127826 128059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
127827 128060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_API_ARMOR
127828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE;
128061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
127829 128062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
127830 128063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(db->mutex);
127831 128064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->busyHandler.xFunc = xBusy;
127832 128065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->busyHandler.pArg = pArg;
127833 128066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->busyHandler.nBusy = 0;
@@ -129116,10 +129349,13 @@
129116 129349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->nMaxSorterMmap = 0x7FFFFFFF;
129117 129350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->flags |= SQLITE_ShortColNames | SQLITE_EnableTrigger | SQLITE_CacheSpill
129118 129351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_DEFAULT_AUTOMATIC_INDEX) || SQLITE_DEFAULT_AUTOMATIC_INDEX
129119 129352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
| SQLITE_AutoIndex
129120 129353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
129354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_DEFAULT_CKPTFULLFSYNC
129355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ | SQLITE_CkptFullFSync
129356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
129121 129357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_DEFAULT_FILE_FORMAT<4
129122 129358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
| SQLITE_LegacyFileFmt
129123 129359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
129124 129360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_LOAD_EXTENSION
129125 129361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
| SQLITE_LoadExtension
@@ -129551,17 +129787,23 @@
129551 129787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
129552 129788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErrMsg = 0;
129553 129789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = 0;
129554 129790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Column *pCol = 0;
129555 129791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol = 0;
129556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
129557 129792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char const *zDataType = 0;
129558 129793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char const *zCollSeq = 0;
129559 129794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int notnull = 0;
129560 129795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int primarykey = 0;
129561 129796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int autoinc = 0;
129562 129797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
129798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
129799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_API_ARMOR
129800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !sqlite3SafetyCheckOk(db) || zTableName==0 ){
129801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_MISUSE_BKPT;
129802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
129803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
129804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
129563 129805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Ensure the database schema has been loaded */
129564 129806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(db->mutex);
129565 129807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnterAll(db);
129566 129808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Init(db, &zErrMsg);
129567 129809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( SQLITE_OK!=rc ){
@@ -129704,11 +129946,11 @@
129704 129946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOTFOUND;
129705 129947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
129706 129948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(pBtree);
129707 129949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
129708 129950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(db->mutex);
129709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rc;
129951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
129710 129952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
129711 129953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
129712 129954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
129713 129955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Interface to the testing logic.
129714 129956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -130007,10 +130249,39 @@
130007 130249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
130008 130250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_TESTCTRL_ISINIT: {
130009 130251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3GlobalConfig.isInit==0 ) rc = SQLITE_ERROR;
130010 130252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
130011 130253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
130255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER, db, dbName, onOff, tnum);
130256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
130257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This test control is used to create imposter tables. "db" is a pointer
130258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to the database connection. dbName is the database name (ex: "main" or
130259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "temp") which will receive the imposter. "onOff" turns imposter mode on
130260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or off. "tnum" is the root page of the b-tree to which the imposter
130261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** table should connect.
130262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
130263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Enable imposter mode only when the schema has already been parsed. Then
130264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** run a single CREATE TABLE statement to construct the imposter table in the
130265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** parsed schema. Then turn imposter mode back off again.
130266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
130267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If onOff==0 and tnum>0 then reset the schema for all databases, causing
130268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the schema to be reparsed the next time it is needed. This has the
130269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** effect of erasing all imposter tables.
130270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
130271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_TESTCTRL_IMPOSTER: {
130272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db = va_arg(ap, sqlite3*);
130273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(db->mutex);
130274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->init.iDb = sqlite3FindDbName(db, va_arg(ap,const char*));
130275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->init.busy = db->init.imposterTable = va_arg(ap,int);
130276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->init.newTnum = va_arg(ap,int);
130277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->init.busy==0 && db->init.newTnum>0 ){
130278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ResetAllSchemasOfConnection(db);
130279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
130280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(db->mutex);
130281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
130282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
130012 130283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130013 130284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
130014 130285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_BUILTIN_TEST */
130015 130286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
130016 130287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -134489,14 +134760,21 @@
134489 134760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** statement loops through all rows of the %_content table. For a
134490 134761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** full-text query or docid lookup, the statement retrieves a single
134491 134762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** row by docid.
134492 134763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
134493 134764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eSearch==FTS3_FULLSCAN_SEARCH ){
134494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zSql = sqlite3_mprintf(
134495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT %s ORDER BY rowid %s",
134496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zReadExprlist, (pCsr->bDesc ? "DESC" : "ASC")
134497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
134765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pDocidGe || pDocidLe ){
134766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zSql = sqlite3_mprintf(
134767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT %s WHERE rowid BETWEEN %lld AND %lld ORDER BY rowid %s",
134768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zReadExprlist, pCsr->iMinDocid, pCsr->iMaxDocid,
134769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (pCsr->bDesc ? "DESC" : "ASC")
134770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
134771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
134772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zSql = sqlite3_mprintf("SELECT %s ORDER BY rowid %s",
134773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zReadExprlist, (pCsr->bDesc ? "DESC" : "ASC")
134774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
134775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
134498 134776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zSql ){
134499 134777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_prepare_v2(p->db, zSql, -1, &pCsr->pStmt, 0);
134500 134778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zSql);
134501 134779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
134502 134780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
@@ -136981,11 +137259,10 @@
136981 137259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDocid = pExpr->iDocid;
136982 137260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter = pPhrase->doclist.pList;
136983 137261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDocid!=pCsr->iPrevId || pExpr->bEof ){
136984 137262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
136985 137263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bDescDoclist = pTab->bDescIdx; /* For DOCID_CMP macro */
136986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iMul; /* +1 if csr dir matches index dir, else -1 */
136987 137264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bOr = 0;
136988 137265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bEof = 0;
136989 137266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bTreeEof = 0;
136990 137267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts3Expr *p; /* Used to iterate from pExpr to root */
136991 137268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts3Expr *pNear; /* Most senior NEAR ancestor (or pExpr) */
@@ -147528,12 +147805,16 @@
147528 147805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
147529 147806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Now that the shift has been done, check if the initial "..." are
147530 147807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** required. They are required if (a) this is not the first fragment,
147531 147808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or (b) this fragment does not begin at position 0 of its column.
147532 147809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
147533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc==SQLITE_OK && (iPos>0 || iFragment>0) ){
147534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = fts3StringAppend(pOut, zEllipsis, -1);
147810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_OK ){
147811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iPos>0 || iFragment>0 ){
147812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = fts3StringAppend(pOut, zEllipsis, -1);
147813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( iBegin ){
147814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = fts3StringAppend(pOut, zDoc, iBegin);
147815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
147535 147816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
147536 147817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK || iCurrent<iPos ) continue;
147537 147818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
147538 147819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
147539 147820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCurrent>=(iPos+nSnippet) ){
147540 147821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!