@@ -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.39.2. By combining all the individual C code files into this
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** version 3.40.0. By combining all the individual C code files into this
4 4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** single large file, the entire code can be compiled as a single translation
5 5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** unit. This allows many compilers to do optimizations that would not be
6 6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** possible if the files were compiled separately. Performance improvements
7 7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of 5% or more are commonly seen when SQLite is compiled as a single
8 8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** translation unit.
@@ -450,13 +450,13 @@
450 450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
451 451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: [sqlite3_libversion()],
452 452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453 453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
454 454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION "3.39.2"
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION_NUMBER 3039002
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2022-07-21 12:26:01 9141e873c575b049ce7aeaf313d05966f1966087caf33a6c80d2416a28571a21"
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION "3.40.0"
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION_NUMBER 3040000
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2022-09-02 21:19:24 da7af290960ab8a04a1f55cdc5eeac36b47fa194edf67f0a05daa4b7f2a4071c"
458 458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
459 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
460 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
461 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
462 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -3728,10 +3728,13 @@
3728 3728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3729 3729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(<dt>[SQLITE_OPEN_SHAREDCACHE]</dt>
3730 3730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The database is opened [shared cache] enabled, overriding
3731 3731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the default shared cache setting provided by
3732 3732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_enable_shared_cache()].)^
3733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The [use of shared cache mode is discouraged] and hence shared cache
3734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** capabilities may be omitted from many builds of SQLite. In such cases,
3735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this option is a no-op.
3733 3736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3734 3737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(<dt>[SQLITE_OPEN_PRIVATECACHE]</dt>
3735 3738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The database is opened [shared cache] disabled, overriding
3736 3739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the default shared cache setting provided by
3737 3740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_enable_shared_cache()].)^
@@ -3743,11 +3746,11 @@
3743 3746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** connection as soon as the connection is created. In addition to setting
3744 3747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the extended result code mode, this flag also causes [sqlite3_open_v2()]
3745 3748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to return an extended result code.</dd>
3746 3749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3747 3750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[OPEN_NOFOLLOW]] ^(<dt>[SQLITE_OPEN_NOFOLLOW]</dt>
3748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <dd>The database filename is not allowed to be a symbolic link</dd>
3751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>The database filename is not allowed to contain a symbolic link</dd>
3749 3752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dl>)^
3750 3753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3751 3754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the 3rd parameter to sqlite3_open_v2() is not one of the
3752 3755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** required combinations shown above optionally combined with other
3753 3756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [SQLITE_OPEN_READONLY | SQLITE_OPEN_* bits]
@@ -6769,11 +6772,11 @@
6769 6772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6770 6773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_autovacuum_pages(D,C,P,X) interface registers a callback
6771 6774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function C that is invoked prior to each autovacuum of the database
6772 6775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** file. ^The callback is passed a copy of the generic data pointer (P),
6773 6776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the schema-name of the attached database that is being autovacuumed,
6774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the the size of the database file in pages, the number of free pages,
6777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the size of the database file in pages, the number of free pages,
6775 6778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and the number of bytes per page, respectively. The callback should
6776 6779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** return the number of free pages that should be removed by the
6777 6780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** autovacuum. ^If the callback returns zero, then no autovacuum happens.
6778 6781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the value returned is greater than or equal to the number of
6779 6782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** free pages, then a complete autovacuum happens.
@@ -6889,10 +6892,15 @@
6889 6892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6890 6893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(This routine enables or disables the sharing of the database cache
6891 6894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and schema data structures between [database connection | connections]
6892 6895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the same database. Sharing is enabled if the argument is true
6893 6896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and disabled if the argument is false.)^
6897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
6898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This interface is omitted if SQLite is compiled with
6899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [-DSQLITE_OMIT_SHARED_CACHE]. The [-DSQLITE_OMIT_SHARED_CACHE]
6900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** compile-time option is recommended because the
6901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [use of shared cache mode is discouraged].
6894 6902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6895 6903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^Cache sharing is enabled and disabled for an entire process.
6896 6904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is a change as of SQLite [version 3.5.0] ([dateof:3.5.0]).
6897 6905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** In prior versions of SQLite,
6898 6906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sharing was enabled or disabled for each thread separately.
@@ -6988,11 +6996,11 @@
6988 6996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^Setting the heap limits to zero disables the heap limiter mechanism.
6989 6997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6990 6998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The soft heap limit may not be greater than the hard heap limit.
6991 6999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the hard heap limit is enabled and if sqlite3_soft_heap_limit(N)
6992 7000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is invoked with a value of N that is greater than the hard heap limit,
6993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the the soft heap limit is set to the value of the hard heap limit.
7001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the soft heap limit is set to the value of the hard heap limit.
6994 7002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The soft heap limit is automatically enabled whenever the hard heap
6995 7003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** limit is enabled. ^When sqlite3_hard_heap_limit64(N) is invoked and
6996 7004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the soft heap limit is outside the range of 1..N, then the soft heap
6997 7005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** limit is set to N. ^Invoking sqlite3_soft_heap_limit64(0) when the
6998 7006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** hard heap limit is enabled makes the soft heap limit equal to the
@@ -9283,11 +9291,11 @@
9283 9291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_backup_init() is called and before the corresponding call to
9284 9292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_backup_finish(). SQLite does not currently check to see
9285 9293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if the application incorrectly accesses the destination [database connection]
9286 9294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and so no error code is reported, but the operations may malfunction
9287 9295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** nevertheless. Use of the destination database connection while a
9288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** backup is in progress might also also cause a mutex deadlock.
9296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** backup is in progress might also cause a mutex deadlock.
9289 9297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9290 9298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If running in [shared cache mode], the application must
9291 9299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** guarantee that the shared cache used by the destination database
9292 9300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is not accessed while the backup is running. In practice this means
9293 9301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that the application must guarantee that the disk file being
@@ -9711,11 +9719,11 @@
9711 9719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See the [sqlite3_wal_checkpoint_v2()] documentation for details on the
9712 9720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** meaning of each of these checkpoint modes.
9713 9721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
9714 9722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CHECKPOINT_PASSIVE 0 /* Do as much as possible w/o blocking */
9715 9723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CHECKPOINT_FULL 1 /* Wait for writers, then checkpoint */
9716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_CHECKPOINT_RESTART 2 /* Like FULL but wait for for readers */
9724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_CHECKPOINT_RESTART 2 /* Like FULL but wait for readers */
9717 9725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CHECKPOINT_TRUNCATE 3 /* Like RESTART but also truncate WAL */
9718 9726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
9719 9727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
9720 9728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Virtual Table Interface Configuration
9721 9729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -13142,10 +13150,15 @@
13142 13150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******** End of fts5.h *********/
13143 13151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13144 13152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of sqlite3.h *********************************************/
13145 13153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in sqliteInt.h ******************/
13146 13154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
13156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Reuse the STATIC_LRU for mutex access to sqlite3_temp_directory.
13157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
13158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_MUTEX_STATIC_TEMPDIR SQLITE_MUTEX_STATIC_VFS1
13159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
13147 13160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
13148 13161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Include the configuration header output by 'configure' if we're using the
13149 13162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** autoconf-based build
13150 13163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
13151 13164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(_HAVE_SQLITE_CONFIG_H) && !defined(SQLITECONFIG_H)
@@ -15553,67 +15566,67 @@
15553 15566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Checkpoint 3
15554 15567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_JournalMode 4
15555 15568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Vacuum 5
15556 15569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_VFilter 6 /* jump, synopsis: iplan=r[P3] zplan='P4' */
15557 15570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_VUpdate 7 /* synopsis: data=r[P3@P2] */
15558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Goto 8 /* jump */
15559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Gosub 9 /* jump */
15560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_InitCoroutine 10 /* jump */
15561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Yield 11 /* jump */
15562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MustBeInt 12 /* jump */
15563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Jump 13 /* jump */
15564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Once 14 /* jump */
15565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_If 15 /* jump */
15566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfNot 16 /* jump */
15567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IsNullOrType 17 /* jump, synopsis: if typeof(r[P1]) IN (P3,5) goto P2 */
15568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfNullRow 18 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */
15571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Init 8 /* jump, synopsis: Start at P2 */
15572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Goto 9 /* jump */
15573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Gosub 10 /* jump */
15574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_InitCoroutine 11 /* jump */
15575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Yield 12 /* jump */
15576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MustBeInt 13 /* jump */
15577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Jump 14 /* jump */
15578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Once 15 /* jump */
15579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_If 16 /* jump */
15580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfNot 17 /* jump */
15581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IsNullOrType 18 /* jump, synopsis: if typeof(r[P1]) IN (P3,5) goto P2 */
15569 15582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Not 19 /* same as TK_NOT, synopsis: r[P2]= !r[P1] */
15570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekLT 20 /* jump, synopsis: key=r[P3@P4] */
15571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekLE 21 /* jump, synopsis: key=r[P3@P4] */
15572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekGE 22 /* jump, synopsis: key=r[P3@P4] */
15573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekGT 23 /* jump, synopsis: key=r[P3@P4] */
15574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfNotOpen 24 /* jump, synopsis: if( !csr[P1] ) goto P2 */
15575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfNoHope 25 /* jump, synopsis: key=r[P3@P4] */
15576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NoConflict 26 /* jump, synopsis: key=r[P3@P4] */
15577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NotFound 27 /* jump, synopsis: key=r[P3@P4] */
15578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Found 28 /* jump, synopsis: key=r[P3@P4] */
15579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekRowid 29 /* jump, synopsis: intkey=r[P3] */
15580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NotExists 30 /* jump, synopsis: intkey=r[P3] */
15581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Last 31 /* jump */
15582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfSmaller 32 /* jump */
15583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterSort 33 /* jump */
15584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Sort 34 /* jump */
15585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Rewind 35 /* jump */
15586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterNext 36 /* jump */
15587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Prev 37 /* jump */
15588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Next 38 /* jump */
15589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxLE 39 /* jump, synopsis: key=r[P3@P4] */
15590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxGT 40 /* jump, synopsis: key=r[P3@P4] */
15591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxLT 41 /* jump, synopsis: key=r[P3@P4] */
15592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxGE 42 /* jump, synopsis: key=r[P3@P4] */
15583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfNullRow 20 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */
15584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekLT 21 /* jump, synopsis: key=r[P3@P4] */
15585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekLE 22 /* jump, synopsis: key=r[P3@P4] */
15586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekGE 23 /* jump, synopsis: key=r[P3@P4] */
15587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekGT 24 /* jump, synopsis: key=r[P3@P4] */
15588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfNotOpen 25 /* jump, synopsis: if( !csr[P1] ) goto P2 */
15589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfNoHope 26 /* jump, synopsis: key=r[P3@P4] */
15590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NoConflict 27 /* jump, synopsis: key=r[P3@P4] */
15591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NotFound 28 /* jump, synopsis: key=r[P3@P4] */
15592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Found 29 /* jump, synopsis: key=r[P3@P4] */
15593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekRowid 30 /* jump, synopsis: intkey=r[P3] */
15594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NotExists 31 /* jump, synopsis: intkey=r[P3] */
15595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Last 32 /* jump */
15596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfSmaller 33 /* jump */
15597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterSort 34 /* jump */
15598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Sort 35 /* jump */
15599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Rewind 36 /* jump */
15600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterNext 37 /* jump */
15601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Prev 38 /* jump */
15602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Next 39 /* jump */
15603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxLE 40 /* jump, synopsis: key=r[P3@P4] */
15604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxGT 41 /* jump, synopsis: key=r[P3@P4] */
15605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxLT 42 /* jump, synopsis: key=r[P3@P4] */
15593 15606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Or 43 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */
15594 15607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_And 44 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */
15595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetRead 45 /* jump, synopsis: r[P3]=rowset(P1) */
15596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetTest 46 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
15597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Program 47 /* jump */
15598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkIfZero 48 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
15599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfPos 49 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
15608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxGE 45 /* jump, synopsis: key=r[P3@P4] */
15609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetRead 46 /* jump, synopsis: r[P3]=rowset(P1) */
15610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetTest 47 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
15611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Program 48 /* jump */
15612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FkIfZero 49 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
15600 15613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_IsNull 50 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
15601 15614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_NotNull 51 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
15602 15615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Ne 52 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */
15603 15616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Eq 53 /* jump, same as TK_EQ, synopsis: IF r[P3]==r[P1] */
15604 15617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Gt 54 /* jump, same as TK_GT, synopsis: IF r[P3]>r[P1] */
15605 15618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Le 55 /* jump, same as TK_LE, synopsis: IF r[P3]<=r[P1] */
15606 15619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Lt 56 /* jump, same as TK_LT, synopsis: IF r[P3]<r[P1] */
15607 15620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Ge 57 /* jump, same as TK_GE, synopsis: IF r[P3]>=r[P1] */
15608 15621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ElseEq 58 /* jump, same as TK_ESCAPE */
15609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfNotZero 59 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
15610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DecrJumpZero 60 /* jump, synopsis: if (--r[P1])==0 goto P2 */
15611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IncrVacuum 61 /* jump */
15612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VNext 62 /* jump */
15613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Filter 63 /* jump, synopsis: if key(P3@P4) not in filter(P1) goto P2 */
15614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Init 64 /* jump, synopsis: Start at P2 */
15622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfPos 59 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
15623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfNotZero 60 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
15624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DecrJumpZero 61 /* jump, synopsis: if (--r[P1])==0 goto P2 */
15625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IncrVacuum 62 /* jump */
15626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VNext 63 /* jump */
15627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Filter 64 /* jump, synopsis: if key(P3@P4) not in filter(P1) goto P2 */
15615 15628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_PureFunc 65 /* synopsis: r[P3]=func(r[P2@NP]) */
15616 15629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Function 66 /* synopsis: r[P3]=func(r[P2@NP]) */
15617 15630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Return 67
15618 15631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_EndCoroutine 68
15619 15632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_HaltIfNull 69 /* synopsis: if r[P3]=null halt */
@@ -15745,17 +15758,17 @@
15745 15758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_IN3 0x08 /* in3: P3 is an input */
15746 15759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_OUT2 0x10 /* out2: P2 is an output */
15747 15760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_OUT3 0x20 /* out3: P3 is an output */
15748 15761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_INITIALIZER {\
15749 15762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 0 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00,\
15750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 8 */ 0x01, 0x01, 0x01, 0x03, 0x03, 0x01, 0x01, 0x03,\
15751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 16 */ 0x03, 0x03, 0x01, 0x12, 0x09, 0x09, 0x09, 0x09,\
15752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 24 */ 0x01, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x01,\
15763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 8 */ 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x01, 0x01,\
15764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 16 */ 0x03, 0x03, 0x03, 0x12, 0x01, 0x09, 0x09, 0x09,\
15765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 24 */ 0x09, 0x01, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,\
15753 15766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 32 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\
15754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ 0x01, 0x01, 0x01, 0x26, 0x26, 0x23, 0x0b, 0x01,\
15755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ 0x01, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
15756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x01, 0x01, 0x01,\
15767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 40 */ 0x01, 0x01, 0x01, 0x26, 0x26, 0x01, 0x23, 0x0b,\
15768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 48 */ 0x01, 0x01, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
15769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01,\
15757 15770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 64 */ 0x01, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x10,\
15758 15771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 72 */ 0x10, 0x10, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00,\
15759 15772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 80 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02,\
15760 15773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 88 */ 0x02, 0x00, 0x00, 0x12, 0x1e, 0x20, 0x00, 0x00,\
15761 15774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 96 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x26, 0x26,\
@@ -15857,10 +15870,11 @@
15857 15870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeP4(Vdbe*, int addr, const char *zP4, int N);
15858 15871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeAppendP4(Vdbe*, void *pP4, int p4type);
15859 15872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeSetP4KeyInfo(Parse*, Index*);
15860 15873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeUsesBtree(Vdbe*, int);
15861 15874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE VdbeOp *sqlite3VdbeGetOp(Vdbe*, int);
15875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE VdbeOp *sqlite3VdbeGetLastOp(Vdbe*);
15862 15876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeMakeLabel(Parse*);
15863 15877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeRunOnlyOnce(Vdbe*);
15864 15878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeReusable(Vdbe*);
15865 15879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeDelete(Vdbe*);
15866 15880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeMakeReady(Vdbe*,Parse*);
@@ -16741,10 +16755,11 @@
16741 16755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pMiddle; /* First byte past end of full-size buffers and
16742 16756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the first byte of LOOKASIDE_SMALL buffers */
16743 16757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_TWOSIZE_LOOKASIDE */
16744 16758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pStart; /* First byte of available memory space */
16745 16759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pEnd; /* First byte past end of available space */
16760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pTrueEnd; /* True value of pEnd, when db->pnBytesFreed!=0 */
16746 16761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
16747 16762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct LookasideSlot {
16748 16763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LookasideSlot *pNext; /* Next buffer in the list of free buffers */
16749 16764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
16750 16765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -18189,11 +18204,11 @@
18189 18204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_xIsSelect 0x001000 /* x.pSelect is valid (otherwise x.pList is) */
18190 18205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Skip 0x002000 /* Operator does not contribute to affinity */
18191 18206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Reduced 0x004000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
18192 18207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Win 0x008000 /* Contains window functions */
18193 18208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_TokenOnly 0x010000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
18194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define EP_MemToken 0x020000 /* Need to sqlite3DbFree() Expr.zToken */
18209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 0x020000 // Available for reuse */
18195 18210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_IfNullRow 0x040000 /* The TK_IF_NULL_ROW opcode */
18196 18211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Unlikely 0x080000 /* unlikely() or likelihood() function */
18197 18212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_ConstFunc 0x100000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */
18198 18213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_CanBeNull 0x200000 /* Can be null despite NOT NULL constraint */
18199 18214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Subquery 0x400000 /* Tree contains a TK_SELECT operator */
@@ -19667,10 +19682,11 @@
19667 19682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void *sqlite3Realloc(void*, u64);
19668 19683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void *sqlite3DbReallocOrFree(sqlite3 *, void *, u64);
19669 19684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void *sqlite3DbRealloc(sqlite3 *, void *, u64);
19670 19685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3DbFree(sqlite3*, void*);
19671 19686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3DbFreeNN(sqlite3*, void*);
19687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3DbNNFreeNN(sqlite3*, void*);
19672 19688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3MallocSize(const void*);
19673 19689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3*, const void*);
19674 19690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void *sqlite3PageMalloc(int);
19675 19691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3PageFree(void*);
19676 19692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3MemSetDefault(void);
@@ -20191,10 +20207,11 @@
20191 20207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3FixSrcList(DbFixer*, SrcList*);
20192 20208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3FixSelect(DbFixer*, Select*);
20193 20209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3FixExpr(DbFixer*, Expr*);
20194 20210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3FixTriggerStep(DbFixer*, TriggerStep*);
20195 20211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3RealSameAsInt(double,sqlite3_int64);
20212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE i64 sqlite3RealToI64(double);
20196 20213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3Int64ToText(i64,char*);
20197 20214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3AtoF(const char *z, double*, int, u8);
20198 20215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3GetInt32(const char *, int*);
20199 20216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3GetUInt32(const char*, u32*);
20200 20217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3Atoi(const char*);
@@ -21637,13 +21654,10 @@
21637 21654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"OMIT_WSD",
21638 21655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
21639 21656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_OMIT_XFER_OPT
21640 21657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"OMIT_XFER_OPT",
21641 21658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
21642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_PCACHE_SEPARATE_HEADER
21643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "PCACHE_SEPARATE_HEADER",
21644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
21645 21659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_PERFORMANCE_TRACE
21646 21660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"PERFORMANCE_TRACE",
21647 21661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
21648 21662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_POWERSAFE_OVERWRITE
21649 21663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# if SQLITE_POWERSAFE_OVERWRITE != 1
@@ -22592,11 +22606,11 @@
22592 22606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The "sqlite3_stmt" structure pointer that is returned by sqlite3_prepare()
22593 22607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is really a pointer to an instance of this structure.
22594 22608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
22595 22609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct Vdbe {
22596 22610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db; /* The database connection that owns this statement */
22597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Vdbe *pPrev,*pNext; /* Linked list of VDBEs with the same Vdbe.db */
22611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Vdbe **ppVPrev,*pVNext; /* Linked list of VDBEs with the same Vdbe.db */
22598 22612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse; /* Parsing context used to create this Vdbe */
22599 22613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ynVar nVar; /* Number of entries in aVar[] */
22600 22614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nMem; /* Number of memory locations currently allocated */
22601 22615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCursor; /* Number of slots in apCsr[] */
22602 22616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 cacheCtr; /* VdbeCursor row cache generation counter */
@@ -23150,10 +23164,12 @@
23150 23164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; /* Used to iterate through schemas */
23151 23165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte = 0; /* Used to accumulate return value */
23152 23166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
23153 23167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnterAll(db);
23154 23168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pnBytesFreed = &nByte;
23169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->lookaside.pEnd==db->lookaside.pTrueEnd );
23170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pEnd = db->lookaside.pStart;
23155 23171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<db->nDb; i++){
23156 23172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Schema *pSchema = db->aDb[i].pSchema;
23157 23173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pSchema!=0) ){
23158 23174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HashElem *p;
23159 23175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -23175,10 +23191,11 @@
23175 23191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DeleteTable(db, (Table *)sqliteHashData(p));
23176 23192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
23177 23193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
23178 23194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
23179 23195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pnBytesFreed = 0;
23196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pEnd = db->lookaside.pTrueEnd;
23180 23197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeaveAll(db);
23181 23198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
23182 23199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pHighwater = 0;
23183 23200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pCurrent = nByte;
23184 23201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -23192,13 +23209,16 @@
23192 23209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_DBSTATUS_STMT_USED: {
23193 23210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct Vdbe *pVdbe; /* Used to iterate through VMs */
23194 23211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte = 0; /* Used to accumulate return value */
23195 23212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
23196 23213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pnBytesFreed = &nByte;
23197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(pVdbe=db->pVdbe; pVdbe; pVdbe=pVdbe->pNext){
23214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->lookaside.pEnd==db->lookaside.pTrueEnd );
23215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pEnd = db->lookaside.pStart;
23216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(pVdbe=db->pVdbe; pVdbe; pVdbe=pVdbe->pVNext){
23198 23217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeDelete(pVdbe);
23199 23218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
23219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pEnd = db->lookaside.pTrueEnd;
23200 23220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pnBytesFreed = 0;
23201 23221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
23202 23222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pHighwater = 0; /* IMP: R-64479-57858 */
23203 23223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pCurrent = nByte;
23204 23224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -23530,11 +23550,11 @@
23530 23550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
X1 = 36525*(Y+4716)/100;
23531 23551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
X2 = 306001*(M+1)/10000;
23532 23552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iJD = (sqlite3_int64)((X1 + X2 + D + B - 1524.5 ) * 86400000);
23533 23553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->validJD = 1;
23534 23554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->validHMS ){
23535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->iJD += p->h*3600000 + p->m*60000 + (sqlite3_int64)(p->s*1000);
23555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->iJD += p->h*3600000 + p->m*60000 + (sqlite3_int64)(p->s*1000 + 0.5);
23536 23556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->validTZ ){
23537 23557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iJD -= p->tz*60000;
23538 23558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->validYMD = 0;
23539 23559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->validHMS = 0;
23540 23560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->validTZ = 0;
@@ -24039,11 +24059,11 @@
24039 24059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** weekday N where 0==Sunday, 1==Monday, and so forth. If the
24040 24060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** date is already on the appropriate weekday, this is a no-op.
24041 24061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
24042 24062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3_strnicmp(z, "weekday ", 8)==0
24043 24063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3AtoF(&z[8], &r, sqlite3Strlen30(&z[8]), SQLITE_UTF8)>0
24044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (n=(int)r)==r && n>=0 && r<7 ){
24064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && r>=0.0 && r<7.0 && (n=(int)r)==r ){
24045 24065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 Z;
24046 24066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
computeYMD_HMS(p);
24047 24067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->validTZ = 0;
24048 24068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->validJD = 0;
24049 24069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
computeJD(p);
@@ -24837,10 +24857,11 @@
24837 24857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DO_OS_MALLOC_TEST(0);
24838 24858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 0x87f7f is a mask of SQLITE_OPEN_ flags that are valid to be passed
24839 24859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** down into the VFS layer. Some SQLITE_OPEN_ flags (for example,
24840 24860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_OPEN_FULLMUTEX or SQLITE_OPEN_SHAREDCACHE) are blocked before
24841 24861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** reaching the VFS. */
24862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( zPath || (flags & SQLITE_OPEN_EXCLUSIVE) );
24842 24863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = pVfs->xOpen(pVfs, zPath, pFile, flags & 0x1087f7f, pFlagsOut);
24843 24864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK || pFile->pMethods==0 );
24844 24865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
24845 24866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24846 24867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3OsDelete(sqlite3_vfs *pVfs, const char *zPath, int dirSync){
@@ -29102,11 +29123,11 @@
29102 29123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
29103 29124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** TRUE if p is a lookaside memory allocation from db
29104 29125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
29105 29126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_LOOKASIDE
29106 29127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int isLookaside(sqlite3 *db, const void *p){
29107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_WITHIN(p, db->lookaside.pStart, db->lookaside.pEnd);
29128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_WITHIN(p, db->lookaside.pStart, db->lookaside.pTrueEnd);
29108 29129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29109 29130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
29110 29131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define isLookaside(A,B) 0
29111 29132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
29112 29133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -29126,22 +29147,20 @@
29126 29147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
29127 29148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29128 29149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3 *db, const void *p){
29129 29150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p!=0 );
29130 29151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
29131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db==0 || !isLookaside(db,p) ){
29132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db==0 ){
29133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3MemdebugNoType(p, (u8)~MEMTYPE_HEAP) );
29134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
29135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
29136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3MemdebugHasType(p, (MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
29137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3MemdebugNoType(p, (u8)~(MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
29138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
29152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db==0 ){
29153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3MemdebugNoType(p, (u8)~MEMTYPE_HEAP) );
29154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
29155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( !isLookaside(db,p) ){
29156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3MemdebugHasType(p, (MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
29157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3MemdebugNoType(p, (u8)~(MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
29139 29158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29140 29159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
29141 29160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db ){
29142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ((uptr)p)<(uptr)(db->lookaside.pEnd) ){
29161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ((uptr)p)<(uptr)(db->lookaside.pTrueEnd) ){
29143 29162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_TWOSIZE_LOOKASIDE
29144 29163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ((uptr)p)>=(uptr)(db->lookaside.pMiddle) ){
29145 29164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(db->mutex) );
29146 29165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return LOOKASIDE_SMALL;
29147 29166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -29193,18 +29212,15 @@
29193 29212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
29194 29213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3DbFreeNN(sqlite3 *db, void *p){
29195 29214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db==0 || sqlite3_mutex_held(db->mutex) );
29196 29215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p!=0 );
29197 29216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db ){
29198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db->pnBytesFreed ){
29199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- measureAllocationSize(db, p);
29200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
29201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
29202 29217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ((uptr)p)<(uptr)(db->lookaside.pEnd) ){
29203 29218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_TWOSIZE_LOOKASIDE
29204 29219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ((uptr)p)>=(uptr)(db->lookaside.pMiddle) ){
29205 29220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LookasideSlot *pBuf = (LookasideSlot*)p;
29221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->pnBytesFreed==0 );
29206 29222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
29207 29223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(p, 0xaa, LOOKASIDE_SMALL); /* Trash freed content */
29208 29224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
29209 29225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBuf->pNext = db->lookaside.pSmallFree;
29210 29226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.pSmallFree = pBuf;
@@ -29211,24 +29227,66 @@
29211 29227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
29212 29228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29213 29229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_TWOSIZE_LOOKASIDE */
29214 29230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ((uptr)p)>=(uptr)(db->lookaside.pStart) ){
29215 29231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LookasideSlot *pBuf = (LookasideSlot*)p;
29232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->pnBytesFreed==0 );
29216 29233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
29217 29234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(p, 0xaa, db->lookaside.szTrue); /* Trash freed content */
29218 29235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
29219 29236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBuf->pNext = db->lookaside.pFree;
29220 29237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.pFree = pBuf;
29221 29238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
29222 29239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29223 29240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->pnBytesFreed ){
29242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ measureAllocationSize(db, p);
29243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
29244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
29224 29245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29225 29246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3MemdebugHasType(p, (MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
29226 29247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3MemdebugNoType(p, (u8)~(MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
29227 29248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db!=0 || sqlite3MemdebugNoType(p, MEMTYPE_LOOKASIDE) );
29228 29249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MemdebugSetType(p, MEMTYPE_HEAP);
29229 29250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(p);
29251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
29252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3DbNNFreeNN(sqlite3 *db, void *p){
29253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
29254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3_mutex_held(db->mutex) );
29255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p!=0 );
29256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ((uptr)p)<(uptr)(db->lookaside.pEnd) ){
29257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_TWOSIZE_LOOKASIDE
29258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ((uptr)p)>=(uptr)(db->lookaside.pMiddle) ){
29259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ LookasideSlot *pBuf = (LookasideSlot*)p;
29260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->pnBytesFreed==0 );
29261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
29262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(p, 0xaa, LOOKASIDE_SMALL); /* Trash freed content */
29263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
29264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBuf->pNext = db->lookaside.pSmallFree;
29265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pSmallFree = pBuf;
29266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
29267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
29268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* SQLITE_OMIT_TWOSIZE_LOOKASIDE */
29269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ((uptr)p)>=(uptr)(db->lookaside.pStart) ){
29270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ LookasideSlot *pBuf = (LookasideSlot*)p;
29271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->pnBytesFreed==0 );
29272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
29273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(p, 0xaa, db->lookaside.szTrue); /* Trash freed content */
29274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
29275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBuf->pNext = db->lookaside.pFree;
29276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pFree = pBuf;
29277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
29278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
29279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
29280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->pnBytesFreed ){
29281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ measureAllocationSize(db, p);
29282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
29283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
29284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3MemdebugHasType(p, (MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
29285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3MemdebugNoType(p, (u8)~(MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
29286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3MemdebugSetType(p, MEMTYPE_HEAP);
29287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(p);
29230 29288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29231 29289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3DbFree(sqlite3 *db, void *p){
29232 29290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db==0 || sqlite3_mutex_held(db->mutex) );
29233 29291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ) sqlite3DbFreeNN(db, p);
29234 29292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -29561,12 +29619,17 @@
29561 29619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->nVdbeExec>0 ){
29562 29620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AtomicStore(&db->u1.isInterrupted, 1);
29563 29621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29564 29622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DisableLookaside;
29565 29623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->pParse ){
29624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Parse *pParse;
29566 29625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(db->pParse, "out of memory");
29567 29626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pParse->rc = SQLITE_NOMEM_BKPT;
29627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(pParse=db->pParse->pOuterParse; pParse; pParse = pParse->pOuterParse){
29628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->nErr++;
29629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->rc = SQLITE_NOMEM;
29630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
29568 29631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29569 29632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29570 29633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
29571 29634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29572 29635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -32332,20 +32395,45 @@
32332 32395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32333 32396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* All threads share a single random number generator.
32334 32397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This structure is the current state of the generator.
32335 32398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
32336 32399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static SQLITE_WSD struct sqlite3PrngType {
32337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned char isInit; /* True if initialized */
32338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned char i, j; /* State variables */
32339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned char s[256]; /* State variables */
32400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 s[16]; /* 64 bytes of chacha20 state */
32401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 out[64]; /* Output bytes */
32402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 n; /* Output bytes remaining */
32340 32403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} sqlite3Prng;
32341 32404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
32406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The RFC-7539 ChaCha20 block function
32407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
32408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ROTL(a,b) (((a) << (b)) | ((a) >> (32 - (b))))
32409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define QR(a, b, c, d) ( \
32410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ a += b, d ^= a, d = ROTL(d,16), \
32411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ c += d, b ^= c, b = ROTL(b,12), \
32412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ a += b, d ^= a, d = ROTL(d, 8), \
32413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ c += d, b ^= c, b = ROTL(b, 7))
32414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void chacha_block(u32 *out, const u32 *in){
32415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
32416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 x[16];
32417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(x, in, 64);
32418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<10; i++){
32419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ QR(x[0], x[4], x[ 8], x[12]);
32420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ QR(x[1], x[5], x[ 9], x[13]);
32421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ QR(x[2], x[6], x[10], x[14]);
32422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ QR(x[3], x[7], x[11], x[15]);
32423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ QR(x[0], x[5], x[10], x[15]);
32424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ QR(x[1], x[6], x[11], x[12]);
32425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ QR(x[2], x[7], x[ 8], x[13]);
32426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ QR(x[3], x[4], x[ 9], x[14]);
32427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
32428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<16; i++) out[i] = x[i]+in[i];
32429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
32430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
32342 32431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
32343 32432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return N random bytes.
32344 32433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
32345 32434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API void sqlite3_randomness(int N, void *pBuf){
32346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned char t;
32347 32435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned char *zBuf = pBuf;
32348 32436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32349 32437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The "wsdPrng" macro will resolve to the pseudo-random number generator
32350 32438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** state vector. If writable static data is unsupported on the target,
32351 32439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** we have to locate the state vector at run-time. In the more common
@@ -32371,57 +32459,50 @@
32371 32459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_PRNG);
32372 32460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
32373 32461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32374 32462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(mutex);
32375 32463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( N<=0 || pBuf==0 ){
32376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.isInit = 0;
32464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wsdPrng.s[0] = 0;
32377 32465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(mutex);
32378 32466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
32379 32467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32380 32468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32381 32469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Initialize the state of the random number generator once,
32382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the first time this routine is called. The seed value does
32383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** not need to contain a lot of randomness since we are not
32384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** trying to do secure encryption or anything like that...
32385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
32386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Nothing in this file or anywhere else in SQLite does any kind of
32387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** encryption. The RC4 algorithm is being used as a PRNG (pseudo-random
32388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** number generator) not as an encryption device.
32470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the first time this routine is called.
32389 32471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
32390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !wsdPrng.isInit ){
32472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( wsdPrng.s[0]==0 ){
32391 32473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vfs *pVfs = sqlite3_vfs_find(0);
32392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
32393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char k[256];
32394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.j = 0;
32395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.i = 0;
32474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const u32 chacha20_init[] = {
32475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0x61707865, 0x3320646e, 0x79622d32, 0x6b206574
32476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
32477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(&wsdPrng.s[0], chacha20_init, 16);
32396 32478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pVfs==0) ){
32397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(k, 0, sizeof(k));
32479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&wsdPrng.s[4], 0, 44);
32398 32480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
32399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3OsRandomness(pVfs, 256, k);
32400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
32401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<256; i++){
32402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.s[i] = (u8)i;
32403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
32404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<256; i++){
32405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.j += wsdPrng.s[i] + k[i];
32406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- t = wsdPrng.s[wsdPrng.j];
32407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.s[wsdPrng.j] = wsdPrng.s[i];
32408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.s[i] = t;
32409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
32410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.isInit = 1;
32481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3OsRandomness(pVfs, 44, (char*)&wsdPrng.s[4]);
32482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
32483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wsdPrng.s[15] = wsdPrng.s[12];
32484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wsdPrng.s[12] = 0;
32485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wsdPrng.n = 0;
32411 32486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32412 32487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32413 32488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( N>0 );
32414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- do{
32415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.i++;
32416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- t = wsdPrng.s[wsdPrng.i];
32417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.j += t;
32418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.s[wsdPrng.i] = wsdPrng.s[wsdPrng.j];
32419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wsdPrng.s[wsdPrng.j] = t;
32420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- t += wsdPrng.s[wsdPrng.i];
32421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *(zBuf++) = wsdPrng.s[t];
32422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }while( --N );
32489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( 1 /* exit by break */ ){
32490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( N<=wsdPrng.n ){
32491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(zBuf, &wsdPrng.out[wsdPrng.n-N], N);
32492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wsdPrng.n -= N;
32493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
32494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
32495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( wsdPrng.n>0 ){
32496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(zBuf, wsdPrng.out, wsdPrng.n);
32497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ N -= wsdPrng.n;
32498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zBuf += wsdPrng.n;
32499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
32500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wsdPrng.s[12]++;
32501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ chacha_block((u32*)wsdPrng.out, wsdPrng.s);
32502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wsdPrng.n = 64;
32503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
32423 32504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(mutex);
32424 32505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32425 32506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32426 32507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_UNTESTABLE
32427 32508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -33457,11 +33538,11 @@
33457 33538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ErrorMsg(Parse *pParse, const char *zFormat, ...){
33458 33539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zMsg;
33459 33540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_list ap;
33460 33541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
33461 33542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db!=0 );
33462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( db->pParse==pParse );
33543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->pParse==pParse || db->pParse->pToplevel==pParse );
33463 33544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->errByteOffset = -2;
33464 33545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_start(ap, zFormat);
33465 33546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zMsg = sqlite3VMPrintf(db, zFormat, ap);
33466 33547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
33467 33548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->errByteOffset<-1 ) db->errByteOffset = -1;
@@ -35275,67 +35356,67 @@
35275 35356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 3 */ "Checkpoint" OpHelp(""),
35276 35357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 4 */ "JournalMode" OpHelp(""),
35277 35358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 5 */ "Vacuum" OpHelp(""),
35278 35359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 6 */ "VFilter" OpHelp("iplan=r[P3] zplan='P4'"),
35279 35360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 7 */ "VUpdate" OpHelp("data=r[P3@P2]"),
35280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 8 */ "Goto" OpHelp(""),
35281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 9 */ "Gosub" OpHelp(""),
35282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 10 */ "InitCoroutine" OpHelp(""),
35283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 11 */ "Yield" OpHelp(""),
35284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 12 */ "MustBeInt" OpHelp(""),
35285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 13 */ "Jump" OpHelp(""),
35286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 14 */ "Once" OpHelp(""),
35287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 15 */ "If" OpHelp(""),
35288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 16 */ "IfNot" OpHelp(""),
35289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 17 */ "IsNullOrType" OpHelp("if typeof(r[P1]) IN (P3,5) goto P2"),
35290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 18 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"),
35361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 8 */ "Init" OpHelp("Start at P2"),
35362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 9 */ "Goto" OpHelp(""),
35363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 10 */ "Gosub" OpHelp(""),
35364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 11 */ "InitCoroutine" OpHelp(""),
35365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 12 */ "Yield" OpHelp(""),
35366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 13 */ "MustBeInt" OpHelp(""),
35367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 14 */ "Jump" OpHelp(""),
35368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 15 */ "Once" OpHelp(""),
35369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 16 */ "If" OpHelp(""),
35370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 17 */ "IfNot" OpHelp(""),
35371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 18 */ "IsNullOrType" OpHelp("if typeof(r[P1]) IN (P3,5) goto P2"),
35291 35372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 19 */ "Not" OpHelp("r[P2]= !r[P1]"),
35292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 20 */ "SeekLT" OpHelp("key=r[P3@P4]"),
35293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 21 */ "SeekLE" OpHelp("key=r[P3@P4]"),
35294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 22 */ "SeekGE" OpHelp("key=r[P3@P4]"),
35295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 23 */ "SeekGT" OpHelp("key=r[P3@P4]"),
35296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 24 */ "IfNotOpen" OpHelp("if( !csr[P1] ) goto P2"),
35297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 25 */ "IfNoHope" OpHelp("key=r[P3@P4]"),
35298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 26 */ "NoConflict" OpHelp("key=r[P3@P4]"),
35299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 27 */ "NotFound" OpHelp("key=r[P3@P4]"),
35300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 28 */ "Found" OpHelp("key=r[P3@P4]"),
35301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 29 */ "SeekRowid" OpHelp("intkey=r[P3]"),
35302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 30 */ "NotExists" OpHelp("intkey=r[P3]"),
35303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 31 */ "Last" OpHelp(""),
35304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 32 */ "IfSmaller" OpHelp(""),
35305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 33 */ "SorterSort" OpHelp(""),
35306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 34 */ "Sort" OpHelp(""),
35307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 35 */ "Rewind" OpHelp(""),
35308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 36 */ "SorterNext" OpHelp(""),
35309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 37 */ "Prev" OpHelp(""),
35310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 38 */ "Next" OpHelp(""),
35311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 39 */ "IdxLE" OpHelp("key=r[P3@P4]"),
35312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ "IdxGT" OpHelp("key=r[P3@P4]"),
35313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 41 */ "IdxLT" OpHelp("key=r[P3@P4]"),
35314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 42 */ "IdxGE" OpHelp("key=r[P3@P4]"),
35373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 20 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"),
35374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 21 */ "SeekLT" OpHelp("key=r[P3@P4]"),
35375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 22 */ "SeekLE" OpHelp("key=r[P3@P4]"),
35376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 23 */ "SeekGE" OpHelp("key=r[P3@P4]"),
35377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 24 */ "SeekGT" OpHelp("key=r[P3@P4]"),
35378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 25 */ "IfNotOpen" OpHelp("if( !csr[P1] ) goto P2"),
35379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 26 */ "IfNoHope" OpHelp("key=r[P3@P4]"),
35380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 27 */ "NoConflict" OpHelp("key=r[P3@P4]"),
35381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 28 */ "NotFound" OpHelp("key=r[P3@P4]"),
35382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 29 */ "Found" OpHelp("key=r[P3@P4]"),
35383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 30 */ "SeekRowid" OpHelp("intkey=r[P3]"),
35384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 31 */ "NotExists" OpHelp("intkey=r[P3]"),
35385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 32 */ "Last" OpHelp(""),
35386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 33 */ "IfSmaller" OpHelp(""),
35387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 34 */ "SorterSort" OpHelp(""),
35388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 35 */ "Sort" OpHelp(""),
35389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 36 */ "Rewind" OpHelp(""),
35390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 37 */ "SorterNext" OpHelp(""),
35391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 38 */ "Prev" OpHelp(""),
35392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 39 */ "Next" OpHelp(""),
35393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 40 */ "IdxLE" OpHelp("key=r[P3@P4]"),
35394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 41 */ "IdxGT" OpHelp("key=r[P3@P4]"),
35395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 42 */ "IdxLT" OpHelp("key=r[P3@P4]"),
35315 35396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 43 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
35316 35397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 44 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
35317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 45 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
35318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 46 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
35319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 47 */ "Program" OpHelp(""),
35320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
35321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 49 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
35398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 45 */ "IdxGE" OpHelp("key=r[P3@P4]"),
35399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 46 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
35400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 47 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
35401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 48 */ "Program" OpHelp(""),
35402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 49 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
35322 35403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 50 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
35323 35404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 51 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
35324 35405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 52 */ "Ne" OpHelp("IF r[P3]!=r[P1]"),
35325 35406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 53 */ "Eq" OpHelp("IF r[P3]==r[P1]"),
35326 35407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 54 */ "Gt" OpHelp("IF r[P3]>r[P1]"),
35327 35408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 55 */ "Le" OpHelp("IF r[P3]<=r[P1]"),
35328 35409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 56 */ "Lt" OpHelp("IF r[P3]<r[P1]"),
35329 35410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 57 */ "Ge" OpHelp("IF r[P3]>=r[P1]"),
35330 35411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 58 */ "ElseEq" OpHelp(""),
35331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 59 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
35332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 60 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
35333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 61 */ "IncrVacuum" OpHelp(""),
35334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 62 */ "VNext" OpHelp(""),
35335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 63 */ "Filter" OpHelp("if key(P3@P4) not in filter(P1) goto P2"),
35336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 64 */ "Init" OpHelp("Start at P2"),
35412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 59 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
35413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 60 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
35414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 61 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
35415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 62 */ "IncrVacuum" OpHelp(""),
35416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 63 */ "VNext" OpHelp(""),
35417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 64 */ "Filter" OpHelp("if key(P3@P4) not in filter(P1) goto P2"),
35337 35418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 65 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
35338 35419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 66 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
35339 35420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 67 */ "Return" OpHelp(""),
35340 35421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 68 */ "EndCoroutine" OpHelp(""),
35341 35422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 69 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
@@ -41318,30 +41399,39 @@
41318 41399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pVfs->mxPathname bytes.
41319 41400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
41320 41401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int unixGetTempname(int nBuf, char *zBuf){
41321 41402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDir;
41322 41403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLimit = 0;
41404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = SQLITE_OK;
41323 41405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
41324 41406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* It's odd to simulate an io-error here, but really this is just
41325 41407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** using the io-error infrastructure to test that SQLite handles this
41326 41408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function failing.
41327 41409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
41328 41410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBuf[0] = 0;
41329 41411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SimulateIOError( return SQLITE_IOERR );
41330 41412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
41413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
41331 41414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDir = unixTempFileDir();
41332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zDir==0 ) return SQLITE_IOERR_GETTEMPPATH;
41333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- do{
41334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u64 r;
41335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_randomness(sizeof(r), &r);
41336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( nBuf>2 );
41337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zBuf[nBuf-2] = 0;
41338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(nBuf, zBuf, "%s/"SQLITE_TEMP_FILE_PREFIX"%llx%c",
41339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zDir, r, 0);
41340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zBuf[nBuf-2]!=0 || (iLimit++)>10 ) return SQLITE_ERROR;
41341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }while( osAccess(zBuf,0)==0 );
41342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_OK;
41415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zDir==0 ){
41416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_IOERR_GETTEMPPATH;
41417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
41418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ do{
41419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 r;
41420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_randomness(sizeof(r), &r);
41421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nBuf>2 );
41422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zBuf[nBuf-2] = 0;
41423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(nBuf, zBuf, "%s/"SQLITE_TEMP_FILE_PREFIX"%llx%c",
41424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDir, r, 0);
41425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zBuf[nBuf-2]!=0 || (iLimit++)>10 ){
41426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_ERROR;
41427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
41428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
41429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }while( osAccess(zBuf,0)==0 );
41430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
41431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
41432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
41343 41433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
41344 41434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
41345 41435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__)
41346 41436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
41347 41437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Routine to transform a unixFile into a proxy-locking unixFile.
@@ -43512,11 +43602,16 @@
43512 43602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** correctly. See ticket [bb3a86e890c8e96ab] */
43513 43603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ArraySize(aSyscall)==29 );
43514 43604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
43515 43605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Register all VFSes defined in the aVfs[] array */
43516 43606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<(sizeof(aVfs)/sizeof(sqlite3_vfs)); i++){
43607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEFAULT_UNIX_VFS
43608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_vfs_register(&aVfs[i],
43609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0==strcmp(aVfs[i].zName,SQLITE_DEFAULT_UNIX_VFS));
43610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
43517 43611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vfs_register(&aVfs[i], i==0);
43612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
43518 43613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
43519 43614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unixBigLock = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_VFS1);
43520 43615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
43521 43616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WAL
43522 43617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Validate lock assumptions */
@@ -45480,10 +45575,11 @@
45480 45575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **ppDirectory = 0;
45481 45576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_AUTOINIT
45482 45577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = sqlite3_initialize();
45483 45578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
45484 45579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
45580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
45485 45581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( type==SQLITE_WIN32_DATA_DIRECTORY_TYPE ){
45486 45582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ppDirectory = &sqlite3_data_directory;
45487 45583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( type==SQLITE_WIN32_TEMP_DIRECTORY_TYPE ){
45488 45584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ppDirectory = &sqlite3_temp_directory;
45489 45585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -45494,18 +45590,23 @@
45494 45590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ppDirectory ){
45495 45591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zCopy = 0;
45496 45592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zValue && zValue[0] ){
45497 45593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zCopy = sqlite3_mprintf("%s", zValue);
45498 45594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if ( zCopy==0 ){
45499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_NOMEM_BKPT;
45595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_NOMEM_BKPT;
45596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto set_directory8_done;
45500 45597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
45501 45598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
45502 45599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(*ppDirectory);
45503 45600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppDirectory = zCopy;
45504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_OK;
45601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_OK;
45602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
45603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_ERROR;
45505 45604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
45506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_ERROR;
45605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set_directory8_done:
45606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
45607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
45507 45608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
45508 45609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
45509 45610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
45510 45611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function is the same as sqlite3_win32_set_directory (below); however,
45511 45612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it accepts a UTF-16 string.
@@ -48274,10 +48375,22 @@
48274 48375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
48275 48376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
48276 48377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
48277 48378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
48278 48379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
48380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
48381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
48382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If sqlite3_temp_directory is not, take the mutex and return true.
48383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
48384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If sqlite3_temp_directory is NULL, omit the mutex and return false.
48385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
48386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int winTempDirDefined(void){
48387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
48388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_temp_directory!=0 ) return 1;
48389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
48390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
48391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
48279 48392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
48280 48393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
48281 48394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Create a temporary file name and store the resulting pointer into pzBuf.
48282 48395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The pointer returned in pzBuf must be freed via sqlite3_free().
48283 48396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -48311,24 +48424,27 @@
48311 48424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** has been explicitly set by the application; otherwise, use the one
48312 48425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** configured by the operating system.
48313 48426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
48314 48427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nDir = nMax - (nPre + 15);
48315 48428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nDir>0 );
48316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3_temp_directory ){
48429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( winTempDirDefined() ){
48317 48430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nDirLen = sqlite3Strlen30(sqlite3_temp_directory);
48318 48431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nDirLen>0 ){
48319 48432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !winIsDirSep(sqlite3_temp_directory[nDirLen-1]) ){
48320 48433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nDirLen++;
48321 48434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
48322 48435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nDirLen>nDir ){
48436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
48323 48437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zBuf);
48324 48438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OSTRACE(("TEMP-FILENAME rc=SQLITE_ERROR\n"));
48325 48439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return winLogError(SQLITE_ERROR, 0, "winGetTempname1", 0);
48326 48440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
48327 48441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(nMax, zBuf, "%s", sqlite3_temp_directory);
48328 48442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
48443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
48329 48444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
48445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
48330 48446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__CYGWIN__)
48331 48447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else{
48332 48448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char *azDirs[] = {
48333 48449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, /* getenv("SQLITE_TMPDIR") */
48334 48450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, /* getenv("TMPDIR") */
@@ -49113,11 +49229,11 @@
49113 49229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
49114 49230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Turn a relative pathname into a full pathname. Write the full
49115 49231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pathname into zOut[]. zOut[] will be at least pVfs->mxPathname
49116 49232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** bytes in size.
49117 49233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
49118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int winFullPathname(
49234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int winFullPathnameNoMutex(
49119 49235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vfs *pVfs, /* Pointer to vfs object */
49120 49236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zRelative, /* Possibly relative input path */
49121 49237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nFull, /* Size of output buffer in bytes */
49122 49238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zFull /* Output buffer */
49123 49239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
@@ -49291,10 +49407,23 @@
49291 49407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
49292 49408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
49293 49409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_IOERR_NOMEM_BKPT;
49294 49410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
49295 49411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
49412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
49413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int winFullPathname(
49414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_vfs *pVfs, /* Pointer to vfs object */
49415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zRelative, /* Possibly relative input path */
49416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nFull, /* Size of output buffer in bytes */
49417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zFull /* Output buffer */
49418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
49419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
49420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex *pMutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR);
49421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(pMutex);
49422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = winFullPathnameNoMutex(pVfs, zRelative, nFull, zFull);
49423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(pMutex);
49424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
49296 49425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
49297 49426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
49298 49427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_LOAD_EXTENSION
49299 49428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
49300 49429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Interfaces for opening a shared library, finding entry points
@@ -51080,39 +51209,58 @@
51080 51209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
51081 51210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_DEBUG) && 0
51082 51211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int sqlite3PcacheTrace = 2; /* 0: off 1: simple 2: cache dumps */
51083 51212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int sqlite3PcacheMxDump = 9999; /* Max cache entries for pcacheDump() */
51084 51213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define pcacheTrace(X) if(sqlite3PcacheTrace){sqlite3DebugPrintf X;}
51085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void pcacheDump(PCache *pCache){
51086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int N;
51087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i, j;
51088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_pcache_page *pLower;
51214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void pcachePageTrace(int i, sqlite3_pcache_page *pLower){
51089 51215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PgHdr *pPg;
51090 51216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned char *a;
51217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int j;
51218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPg = (PgHdr*)pLower->pExtra;
51219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("%3d: nRef %2d flgs %02x data ", i, pPg->nRef, pPg->flags);
51220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ a = (unsigned char *)pLower->pBuf;
51221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(j=0; j<12; j++) printf("%02x", a[j]);
51222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf(" ptr %p\n", pPg);
51223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
51224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void pcacheDump(PCache *pCache){
51225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int N;
51226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
51227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_pcache_page *pLower;
51091 51228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51092 51229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3PcacheTrace<2 ) return;
51093 51230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCache->pCache==0 ) return;
51094 51231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
N = sqlite3PcachePagecount(pCache);
51095 51232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( N>sqlite3PcacheMxDump ) N = sqlite3PcacheMxDump;
51096 51233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1; i<=N; i++){
51097 51234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLower = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, i, 0);
51098 51235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLower==0 ) continue;
51099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPg = (PgHdr*)pLower->pExtra;
51100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- printf("%3d: nRef %2d flgs %02x data ", i, pPg->nRef, pPg->flags);
51101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- a = (unsigned char *)pLower->pBuf;
51102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(j=0; j<12; j++) printf("%02x", a[j]);
51103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- printf("\n");
51104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pPg->pPage==0 ){
51236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pcachePageTrace(i, pLower);
51237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ((PgHdr*)pLower)->pPage==0 ){
51105 51238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3GlobalConfig.pcache2.xUnpin(pCache->pCache, pLower, 0);
51106 51239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51107 51240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51108 51241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
51242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
51110 51243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define pcacheTrace(X)
51244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define pcachePageTrace(PGNO, X)
51111 51245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define pcacheDump(X)
51112 51246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
51113 51247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
51249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return 1 if pPg is on the dirty list for pCache. Return 0 if not.
51250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This routine runs inside of assert() statements only.
51251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
51252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
51253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int pageOnDirtyList(PCache *pCache, PgHdr *pPg){
51254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ PgHdr *p;
51255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(p=pCache->pDirty; p; p=p->pDirtyNext){
51256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p==pPg ) return 1;
51257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
51258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
51259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
51260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
51261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
51114 51262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
51115 51263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Check invariants on a PgHdr entry. Return true if everything is OK.
51116 51264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return false if any invariant is violated.
51117 51265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
51118 51266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is for use inside of assert() statements only. For
@@ -51127,12 +51275,17 @@
51127 51275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPg->pgno>0 || pPg->pPager==0 ); /* Page number is 1 or more */
51128 51276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache = pPg->pCache;
51129 51277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCache!=0 ); /* Every page has an associated PCache */
51130 51278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPg->flags & PGHDR_CLEAN ){
51131 51279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pPg->flags & PGHDR_DIRTY)==0 );/* Cannot be both CLEAN and DIRTY */
51132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pCache->pDirty!=pPg ); /* CLEAN pages not on dirty list */
51133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pCache->pDirtyTail!=pPg );
51280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !pageOnDirtyList(pCache, pPg) );/* CLEAN pages not on dirty list */
51281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
51282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pPg->flags & PGHDR_DIRTY)!=0 );/* If not CLEAN must be DIRTY */
51283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pPg->pDirtyNext==0 || pPg->pDirtyNext->pDirtyPrev==pPg );
51284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pPg->pDirtyPrev==0 || pPg->pDirtyPrev->pDirtyNext==pPg );
51285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pPg->pDirtyPrev!=0 || pCache->pDirty==pPg );
51286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pageOnDirtyList(pCache, pPg) );
51134 51287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51135 51288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* WRITEABLE pages must also be DIRTY */
51136 51289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPg->flags & PGHDR_WRITEABLE ){
51137 51290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPg->flags & PGHDR_DIRTY ); /* WRITEABLE implies DIRTY */
51138 51291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -51402,12 +51555,13 @@
51402 51555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eCreate = createFlag & pCache->eCreate;
51403 51556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( eCreate==0 || eCreate==1 || eCreate==2 );
51404 51557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( createFlag==0 || pCache->eCreate==eCreate );
51405 51558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( createFlag==0 || eCreate==1+(!pCache->bPurgeable||!pCache->pDirty) );
51406 51559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRes = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, eCreate);
51407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pcacheTrace(("%p.FETCH %d%s (result: %p)\n",pCache,pgno,
51560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pcacheTrace(("%p.FETCH %d%s (result: %p) ",pCache,pgno,
51408 51561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
createFlag?" create":"",pRes));
51562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pcachePageTrace(pgno, pRes);
51409 51563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRes;
51410 51564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51411 51565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51412 51566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
51413 51567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the sqlite3PcacheFetch() routine is unable to allocate a new
@@ -51531,10 +51685,11 @@
51531 51685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (--p->nRef)==0 ){
51532 51686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->flags&PGHDR_CLEAN ){
51533 51687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcacheUnpin(p);
51534 51688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
51535 51689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcacheManageDirtyList(p, PCACHE_DIRTYLIST_FRONT);
51690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3PcachePageSanity(p) );
51536 51691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51537 51692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51538 51693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51539 51694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51540 51695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -51574,10 +51729,11 @@
51574 51729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->flags & PGHDR_CLEAN ){
51575 51730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags ^= (PGHDR_DIRTY|PGHDR_CLEAN);
51576 51731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcacheTrace(("%p.DIRTY %d\n",p->pCache,p->pgno));
51577 51732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (p->flags & (PGHDR_DIRTY|PGHDR_CLEAN))==PGHDR_DIRTY );
51578 51733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcacheManageDirtyList(p, PCACHE_DIRTYLIST_ADD);
51734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3PcachePageSanity(p) );
51579 51735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51580 51736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3PcachePageSanity(p) );
51581 51737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51582 51738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51583 51739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -51636,18 +51792,28 @@
51636 51792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
51637 51793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Change the page number of page p to newPgno.
51638 51794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
51639 51795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3PcacheMove(PgHdr *p, Pgno newPgno){
51640 51796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PCache *pCache = p->pCache;
51797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_pcache_page *pOther;
51641 51798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->nRef>0 );
51642 51799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( newPgno>0 );
51643 51800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3PcachePageSanity(p) );
51644 51801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcacheTrace(("%p.MOVE %d -> %d\n",pCache,p->pgno,newPgno));
51802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOther = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, newPgno, 0);
51645 51803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3GlobalConfig.pcache2.xRekey(pCache->pCache, p->pPage, p->pgno,newPgno);
51804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOther ){
51805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ PgHdr *pPg = (PgHdr*)pOther->pExtra;
51806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPg->pgno = p->pgno;
51807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pPg->pPage==0 ){
51808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3GlobalConfig.pcache2.xUnpin(pCache->pCache, pOther, 0);
51809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
51810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
51646 51811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pgno = newPgno;
51647 51812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (p->flags&PGHDR_DIRTY) && (p->flags&PGHDR_NEED_SYNC) ){
51648 51813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcacheManageDirtyList(p, PCACHE_DIRTYLIST_FRONT);
51814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3PcachePageSanity(p) );
51649 51815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51650 51816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51651 51817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51652 51818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
51653 51819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Drop every cache entry whose page number is greater than "pgno". The
@@ -51941,16 +52107,17 @@
51941 52107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** runtime using sqlite3_config(SQLITE_CONFIG_PCACHE_HDRSZ, &size). The
51942 52108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sizes of the extensions sum to 272 bytes on x64 for 3.8.10, but this
51943 52109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** size can vary according to architecture, compile-time options, and
51944 52110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLite library version number.
51945 52111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
51946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If SQLITE_PCACHE_SEPARATE_HEADER is defined, then the extension is obtained
51947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** using a separate memory allocation from the database page content. This
51948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** seeks to overcome the "clownshoe" problem (also called "internal
51949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** fragmentation" in academic literature) of allocating a few bytes more
51950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** than a power of two with the memory allocator rounding up to the next
51951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** power of two, and leaving the rounded-up space unused.
52112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Historical note: It used to be that if the SQLITE_PCACHE_SEPARATE_HEADER
52113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** was defined, then the page content would be held in a separate memory
52114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** allocation from the PgHdr1. This was intended to avoid clownshoe memory
52115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** allocations. However, the btree layer needs a small (16-byte) overrun
52116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** area after the page content buffer. The header serves as that overrun
52117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** area. Therefore SQLITE_PCACHE_SEPARATE_HEADER was discontinued to avoid
52118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** any possibility of a memory error.
51952 52119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
51953 52120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This module tracks pointers to PgHdr1 objects. Only pcache.c communicates
51954 52121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with this module. Information is passed back and forth as PgHdr1 pointers.
51955 52122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
51956 52123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The pcache.c and pager.c modules deal pointers to PgHdr objects.
@@ -51991,34 +52158,44 @@
51991 52158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct PgFreeslot PgFreeslot;
51992 52159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct PGroup PGroup;
51993 52160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51994 52161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
51995 52162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Each cache entry is represented by an instance of the following
51996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** structure. Unless SQLITE_PCACHE_SEPARATE_HEADER is defined, a buffer of
51997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** PgHdr1.pCache->szPage bytes is allocated directly before this structure
51998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** in memory.
52163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** structure. A buffer of PgHdr1.pCache->szPage bytes is allocated
52164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** directly before this structure and is used to cache the page content.
51999 52165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
52000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Note: Variables isBulkLocal and isAnchor were once type "u8". That works,
52166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** When reading a corrupt database file, it is possible that SQLite might
52167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** read a few bytes (no more than 16 bytes) past the end of the page buffer.
52168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** It will only read past the end of the page buffer, never write. This
52169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** object is positioned immediately after the page buffer to serve as an
52170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** overrun area, so that overreads are harmless.
52171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
52172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Variables isBulkLocal and isAnchor were once type "u8". That works,
52001 52173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** but causes a 2-byte gap in the structure for most architectures (since
52002 52174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pointers must be either 4 or 8-byte aligned). As this structure is located
52003 52175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in memory directly after the associated page data, if the database is
52004 52176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** corrupt, code at the b-tree layer may overread the page buffer and
52005 52177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** read part of this structure before the corruption is detected. This
52006 52178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** can cause a valgrind error if the unitialized gap is accessed. Using u16
52007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ensures there is no such gap, and therefore no bytes of unitialized memory
52008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** in the structure.
52179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ensures there is no such gap, and therefore no bytes of uninitialized
52180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** memory in the structure.
52181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
52182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The pLruNext and pLruPrev pointers form a double-linked circular list
52183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of all pages that are unpinned. The PGroup.lru element (which should be
52184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the only element on the list with PgHdr1.isAnchor set to 1) forms the
52185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** beginning and the end of the list.
52009 52186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
52010 52187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct PgHdr1 {
52011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_pcache_page page; /* Base class. Must be first. pBuf & pExtra */
52012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned int iKey; /* Key value (page number) */
52013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u16 isBulkLocal; /* This page from bulk local storage */
52014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u16 isAnchor; /* This is the PGroup.lru element */
52015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- PgHdr1 *pNext; /* Next in hash table chain */
52016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- PCache1 *pCache; /* Cache that currently owns this page */
52017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- PgHdr1 *pLruNext; /* Next in LRU list of unpinned pages */
52018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- PgHdr1 *pLruPrev; /* Previous in LRU list of unpinned pages */
52019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* NB: pLruPrev is only valid if pLruNext!=0 */
52188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_pcache_page page; /* Base class. Must be first. pBuf & pExtra */
52189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int iKey; /* Key value (page number) */
52190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u16 isBulkLocal; /* This page from bulk local storage */
52191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u16 isAnchor; /* This is the PGroup.lru element */
52192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ PgHdr1 *pNext; /* Next in hash table chain */
52193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ PCache1 *pCache; /* Cache that currently owns this page */
52194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ PgHdr1 *pLruNext; /* Next in circular LRU list of unpinned pages */
52195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ PgHdr1 *pLruPrev; /* Previous in LRU list of unpinned pages */
52196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* NB: pLruPrev is only valid if pLruNext!=0 */
52020 52197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
52021 52198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
52022 52199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
52023 52200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A page is pinned if it is not on the LRU list. To be "pinned" means
52024 52201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that the page is in active use and must not be deallocated.
@@ -52340,29 +52517,17 @@
52340 52517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pcache1.separateCache==0 );
52341 52518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCache->pGroup==&pcache1.grp );
52342 52519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1LeaveMutex(pCache->pGroup);
52343 52520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
52344 52521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( benignMalloc ){ sqlite3BeginBenignMalloc(); }
52345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_PCACHE_SEPARATE_HEADER
52346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPg = pcache1Alloc(pCache->szPage);
52347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p = sqlite3Malloc(sizeof(PgHdr1) + pCache->szExtra);
52348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !pPg || !p ){
52349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pcache1Free(pPg);
52350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(p);
52351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPg = 0;
52352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
52354 52522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPg = pcache1Alloc(pCache->szAlloc);
52355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
52356 52523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( benignMalloc ){ sqlite3EndBenignMalloc(); }
52357 52524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
52358 52525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1EnterMutex(pCache->pGroup);
52359 52526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
52360 52527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPg==0 ) return 0;
52361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef SQLITE_PCACHE_SEPARATE_HEADER
52362 52528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = (PgHdr1 *)&((u8 *)pPg)[pCache->szPage];
52363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
52364 52529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->page.pBuf = pPg;
52365 52530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->page.pExtra = &p[1];
52366 52531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->isBulkLocal = 0;
52367 52532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->isAnchor = 0;
52368 52533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLruPrev = 0; /* Initializing this saves a valgrind error */
@@ -52382,13 +52547,10 @@
52382 52547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->isBulkLocal ){
52383 52548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pNext = pCache->pFree;
52384 52549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->pFree = p;
52385 52550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
52386 52551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1Free(p->page.pBuf);
52387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_PCACHE_SEPARATE_HEADER
52388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(p);
52389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
52390 52552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52391 52553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(*pCache->pnPurgeable)--;
52392 52554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52393 52555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
52394 52556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -53025,27 +53187,45 @@
53025 53187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int iNew
53026 53188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
53027 53189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PCache1 *pCache = (PCache1 *)p;
53028 53190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PgHdr1 *pPage = (PgHdr1 *)pPg;
53029 53191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PgHdr1 **pp;
53030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned int h;
53192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int hOld, hNew;
53031 53193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->iKey==iOld );
53032 53194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->pCache==pCache );
53195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( iOld!=iNew ); /* The page number really is changing */
53033 53196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
53034 53197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1EnterMutex(pCache->pGroup);
53035 53198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
53036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- h = iOld%pCache->nHash;
53037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pp = &pCache->apHash[h];
53199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pcache1FetchNoMutex(p, iOld, 0)==pPage ); /* pPg really is iOld */
53200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ hOld = iOld%pCache->nHash;
53201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pp = &pCache->apHash[hOld];
53038 53202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( (*pp)!=pPage ){
53039 53203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pp = &(*pp)->pNext;
53040 53204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
53041 53205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pp = pPage->pNext;
53042 53206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
53043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- h = iNew%pCache->nHash;
53207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ hNew = iNew%pCache->nHash;
53208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pp = &pCache->apHash[hNew];
53209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( *pp ){
53210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (*pp)->iKey==iNew ){
53211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If there is already another pcache entry at iNew, change it to iOld,
53212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** thus swapping the positions of iNew and iOld */
53213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ PgHdr1 *pOld = *pp;
53214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pp = pOld->pNext;
53215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOld->pNext = pCache->apHash[hOld];
53216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCache->apHash[hOld] = pOld;
53217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOld->iKey = iOld;
53218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
53219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
53220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pp = &(*pp)->pNext;
53221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
53222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
53223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
53044 53224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage->iKey = iNew;
53045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPage->pNext = pCache->apHash[h];
53046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCache->apHash[h] = pPage;
53225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPage->pNext = pCache->apHash[hNew];
53226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCache->apHash[hNew] = pPage;
53047 53227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iNew>pCache->iMaxKey ){
53048 53228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCache->iMaxKey = iNew;
53049 53229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
53050 53230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
53051 53231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1LeaveMutex(pCache->pGroup);
@@ -53148,13 +53328,10 @@
53148 53328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( (nReq<0 || nFree<nReq)
53149 53329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (p=pcache1.grp.lru.pLruPrev)!=0
53150 53330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& p->isAnchor==0
53151 53331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
53152 53332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nFree += pcache1MemSize(p->page.pBuf);
53153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_PCACHE_SEPARATE_HEADER
53154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nFree += sqlite3MemSize(p);
53155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
53156 53333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( PAGE_IS_UNPINNED(p) );
53157 53334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1PinPage(p);
53158 53335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1RemoveFromHash(p, 1);
53159 53336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
53160 53337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pcache1LeaveMutex(&pcache1.grp);
@@ -59639,10 +59816,11 @@
59639 59816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags = SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE;
59640 59817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSpill;
59641 59818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
59642 59819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPager->tempFile ){
59643 59820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags |= (SQLITE_OPEN_DELETEONCLOSE|SQLITE_OPEN_TEMP_JOURNAL);
59821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags |= SQLITE_OPEN_EXCLUSIVE;
59644 59822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSpill = sqlite3Config.nStmtSpill;
59645 59823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
59646 59824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags |= SQLITE_OPEN_MAIN_JOURNAL;
59647 59825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSpill = jrnlBufferSize(pPager);
59648 59826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -59674,10 +59852,11 @@
59674 59852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
59675 59853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
59676 59854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
59677 59855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BitvecDestroy(pPager->pInJournal);
59678 59856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPager->pInJournal = 0;
59857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPager->journalOff = 0;
59679 59858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
59680 59859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPager->eState==PAGER_WRITER_LOCKED );
59681 59860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPager->eState = PAGER_WRITER_CACHEMOD;
59682 59861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
59683 59862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -66737,10 +66916,11 @@
66737 66916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** db using sqlite3SchemaToIndex().
66738 66917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
66739 66918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3SchemaMutexHeld(sqlite3 *db, int iDb, Schema *pSchema){
66740 66919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *p;
66741 66920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db!=0 );
66921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->pVfs==0 && db->nDb==0 ) return 1;
66742 66922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSchema ) iDb = sqlite3SchemaToIndex(db, pSchema);
66743 66923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iDb>=0 && iDb<db->nDb );
66744 66924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !sqlite3_mutex_held(db->mutex) ) return 0;
66745 66925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDb==1 ) return 1;
66746 66926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = db->aDb[iDb].pBt;
@@ -68309,12 +68489,11 @@
68309 68489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
68310 68490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->pBt!=0 );
68311 68491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->pBt->usableSize <= SQLITE_MAX_PAGE_SIZE );
68312 68492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->nOverflow==0 );
68313 68493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
68314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- temp = 0;
68315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- src = data = pPage->aData;
68494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ data = pPage->aData;
68316 68495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hdr = pPage->hdrOffset;
68317 68496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cellOffset = pPage->cellOffset;
68318 68497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCell = pPage->nCell;
68319 68498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nCell==get2byte(&data[hdr+3]) || CORRUPT_DB );
68320 68499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCellFirst = cellOffset + 2*nCell;
@@ -68364,43 +68543,42 @@
68364 68543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68365 68544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
68366 68545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cbrk = usableSize;
68367 68546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCellLast = usableSize - 4;
68368 68547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCellStart = get2byte(&data[hdr+5]);
68369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<nCell; i++){
68370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 *pAddr; /* The i-th cell pointer */
68371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pAddr = &data[cellOffset + i*2];
68372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pc = get2byte(pAddr);
68373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( pc==iCellFirst );
68374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( pc==iCellLast );
68375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* These conditions have already been verified in btreeInitPage()
68376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if PRAGMA cell_size_check=ON.
68377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
68378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pc<iCellStart || pc>iCellLast ){
68379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_PAGE(pPage);
68380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
68381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pc>=iCellStart && pc<=iCellLast );
68382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- size = pPage->xCellSize(pPage, &src[pc]);
68383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cbrk -= size;
68384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cbrk<iCellStart || pc+size>usableSize ){
68385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_PAGE(pPage);
68386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
68387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( cbrk+size<=usableSize && cbrk>=iCellStart );
68388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( cbrk+size==usableSize );
68389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( pc+size==usableSize );
68390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- put2byte(pAddr, cbrk);
68391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( temp==0 ){
68392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cbrk==pc ) continue;
68393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- temp = sqlite3PagerTempSpace(pPage->pBt->pPager);
68394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(&temp[iCellStart], &data[iCellStart], usableSize - iCellStart);
68395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- src = temp;
68396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
68397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(&data[cbrk], &src[pc], size);
68548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nCell>0 ){
68549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ temp = sqlite3PagerTempSpace(pPage->pBt->pPager);
68550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(&temp[iCellStart], &data[iCellStart], usableSize - iCellStart);
68551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ src = temp;
68552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<nCell; i++){
68553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 *pAddr; /* The i-th cell pointer */
68554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pAddr = &data[cellOffset + i*2];
68555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = get2byte(pAddr);
68556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pc==iCellFirst );
68557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pc==iCellLast );
68558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* These conditions have already been verified in btreeInitPage()
68559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if PRAGMA cell_size_check=ON.
68560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
68561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pc<iCellStart || pc>iCellLast ){
68562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
68563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
68564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pc>=iCellStart && pc<=iCellLast );
68565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size = pPage->xCellSize(pPage, &src[pc]);
68566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cbrk -= size;
68567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cbrk<iCellStart || pc+size>usableSize ){
68568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
68569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
68570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( cbrk+size<=usableSize && cbrk>=iCellStart );
68571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( cbrk+size==usableSize );
68572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pc+size==usableSize );
68573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ put2byte(pAddr, cbrk);
68574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(&data[cbrk], &src[pc], size);
68575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
68398 68576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68399 68577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data[hdr+7] = 0;
68400 68578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
68401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- defragment_out:
68579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ defragment_out:
68402 68580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->nFree>=0 );
68403 68581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( data[hdr+7]+cbrk-iCellFirst!=pPage->nFree ){
68404 68582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_PAGE(pPage);
68405 68583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68406 68584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cbrk>=iCellFirst );
@@ -68469,13 +68647,13 @@
68469 68647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return &aData[pc + x];
68470 68648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68471 68649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iAddr = pc;
68472 68650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTmp = &aData[pc];
68473 68651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = get2byte(pTmp);
68474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pc<=iAddr+size ){
68652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pc<=iAddr ){
68475 68653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pc ){
68476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The next slot in the chain is not past the end of the current slot */
68654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The next slot in the chain comes before the current slot */
68477 68655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRc = SQLITE_CORRUPT_PAGE(pPg);
68478 68656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68479 68657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
68480 68658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68481 68659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -68623,11 +68801,11 @@
68623 68801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPtr = hdr + 1;
68624 68802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( data[iPtr+1]==0 && data[iPtr]==0 ){
68625 68803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iFreeBlk = 0; /* Shortcut for the case when the freelist is empty */
68626 68804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
68627 68805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( (iFreeBlk = get2byte(&data[iPtr]))<iStart ){
68628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iFreeBlk<iPtr+4 ){
68806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iFreeBlk<=iPtr ){
68629 68807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iFreeBlk==0 ) break; /* TH3: corrupt082.100 */
68630 68808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_PAGE(pPage);
68631 68809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68632 68810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPtr = iFreeBlk;
68633 68811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -69105,13 +69283,11 @@
69105 69283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur ){
69106 69284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->iPage--;
69107 69285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->pPage = pCur->apPage[pCur->iPage];
69108 69286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69109 69287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pgno==0 );
69110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pgno!=0 || rc==SQLITE_CORRUPT
69111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || rc==SQLITE_IOERR_NOMEM
69112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || rc==SQLITE_NOMEM );
69288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pgno!=0 || rc!=SQLITE_OK );
69113 69289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
69114 69290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69115 69291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69116 69292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
69117 69293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Release a MemPage. This should be called once for each prior
@@ -72049,12 +72225,10 @@
72049 72225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the new child page does not match the flags field of the parent (i.e.
72050 72226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if an intkey page appears to be the parent of a non-intkey page, or
72051 72227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** vice-versa).
72052 72228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
72053 72229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int moveToChild(BtCursor *pCur, u32 newPgno){
72054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- BtShared *pBt = pCur->pBt;
72055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
72056 72230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cursorOwnsBtShared(pCur) );
72057 72231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->eState==CURSOR_VALID );
72058 72232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->iPage<BTCURSOR_MAX_DEPTH );
72059 72233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->iPage>=0 );
72060 72234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->iPage>=(BTCURSOR_MAX_DEPTH-1) ){
@@ -72064,11 +72238,12 @@
72064 72238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->curFlags &= ~(BTCF_ValidNKey|BTCF_ValidOvfl);
72065 72239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->aiIdx[pCur->iPage] = pCur->ix;
72066 72240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->apPage[pCur->iPage] = pCur->pPage;
72067 72241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->ix = 0;
72068 72242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->iPage++;
72069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return getAndInitPage(pBt, newPgno, &pCur->pPage, pCur, pCur->curPagerFlags);
72243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return getAndInitPage(pCur->pBt, newPgno, &pCur->pPage, pCur,
72244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCur->curPagerFlags);
72070 72245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72071 72246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
72072 72247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
72073 72248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
72074 72249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Page pParent is an internal (non-leaf) tree page. This function
@@ -72170,11 +72345,11 @@
72170 72345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->skipNext!=SQLITE_OK );
72171 72346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pCur->skipNext;
72172 72347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72173 72348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeClearCursor(pCur);
72174 72349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
72175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = getAndInitPage(pCur->pBtree->pBt, pCur->pgnoRoot, &pCur->pPage,
72350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = getAndInitPage(pCur->pBt, pCur->pgnoRoot, &pCur->pPage,
72176 72351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, pCur->curPagerFlags);
72177 72352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
72178 72353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->eState = CURSOR_INVALID;
72179 72354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
72180 72355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -73811,16 +73986,10 @@
73811 73986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data = pPage->aData;
73812 73987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ptr = &pPage->aCellIdx[2*idx];
73813 73988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->pBt->usableSize > (u32)(ptr-data) );
73814 73989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = get2byte(ptr);
73815 73990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hdr = pPage->hdrOffset;
73816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0 /* Not required. Omit for efficiency */
73817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pc<hdr+pPage->nCell*2 ){
73818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pRC = SQLITE_CORRUPT_BKPT;
73819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
73820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
73821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
73822 73991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pc==(u32)get2byte(&data[hdr+5]) );
73823 73992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pc+sz==pPage->pBt->usableSize );
73824 73993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pc+sz > pPage->pBt->usableSize ){
73825 73994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRC = SQLITE_CORRUPT_BKPT;
73826 73995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
@@ -74700,12 +74869,10 @@
74700 74869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int szNew[NB+2]; /* Combined size of cells placed on i-th page */
74701 74870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *aSpace1; /* Space for copies of dividers cells */
74702 74871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Pgno pgno; /* Temp var to store a page number in */
74703 74872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 abDone[NB+2]; /* True after i'th new page is populated */
74704 74873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Pgno aPgno[NB+2]; /* Page numbers of new pages before shuffling */
74705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Pgno aPgOrder[NB+2]; /* Copy of aPgno[] used for sorting pages */
74706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u16 aPgFlags[NB+2]; /* flags field of new pages before shuffling */
74707 74874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CellArray b; /* Parsed information on cells being balanced */
74708 74875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
74709 74876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(abDone, 0, sizeof(abDone));
74710 74877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&b, 0, sizeof(b));
74711 74878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBt = pParent->pBt;
@@ -75125,46 +75292,43 @@
75125 75292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Reassign page numbers so that the new pages are in ascending order.
75126 75293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This helps to keep entries in the disk file in order so that a scan
75127 75294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the table is closer to a linear scan through the file. That in turn
75128 75295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** helps the operating system to deliver pages from the disk more rapidly.
75129 75296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
75130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** An O(n^2) insertion sort algorithm is used, but since n is never more
75131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** than (NB+2) (a small constant), that should not be a problem.
75297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** An O(N*N) sort algorithm is used, but since N is never more than NB+2
75298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (5), that is not a performance concern.
75132 75299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
75133 75300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When NB==3, this one optimization makes the database about 25% faster
75134 75301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for large insertions and deletions.
75135 75302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
75136 75303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nNew; i++){
75137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aPgOrder[i] = aPgno[i] = apNew[i]->pgno;
75138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aPgFlags[i] = apNew[i]->pDbPage->flags;
75139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(j=0; j<i; j++){
75140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(aPgno[j]==aPgno[i]) ){
75141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* This branch is taken if the set of sibling pages somehow contains
75142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** duplicate entries. This can happen if the database is corrupt.
75143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** It would be simpler to detect this as part of the loop below, but
75144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** we do the detection here in order to avoid populating the pager
75145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** cache with two separate objects associated with the same
75146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** page number. */
75147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( CORRUPT_DB );
75148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_CORRUPT_BKPT;
75149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto balance_cleanup;
75150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
75151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
75152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
75153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<nNew; i++){
75154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iBest = 0; /* aPgno[] index of page number to use */
75155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(j=1; j<nNew; j++){
75156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( aPgOrder[j]<aPgOrder[iBest] ) iBest = j;
75157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
75158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pgno = aPgOrder[iBest];
75159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aPgOrder[iBest] = 0xffffffff;
75160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iBest!=i ){
75161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iBest>i ){
75162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3PagerRekey(apNew[iBest]->pDbPage, pBt->nPage+iBest+1, 0);
75163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
75164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3PagerRekey(apNew[i]->pDbPage, pgno, aPgFlags[iBest]);
75165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- apNew[i]->pgno = pgno;
75304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aPgno[i] = apNew[i]->pgno;
75305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( apNew[i]->pDbPage->flags & PGHDR_WRITEABLE );
75306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( apNew[i]->pDbPage->flags & PGHDR_DIRTY );
75307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
75308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<nNew-1; i++){
75309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iB = i;
75310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(j=i+1; j<nNew; j++){
75311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( apNew[j]->pgno < apNew[iB]->pgno ) iB = j;
75312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
75313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
75314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If apNew[i] has a page number that is bigger than any of the
75315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** subsequence apNew[i] entries, then swap apNew[i] with the subsequent
75316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** entry that has the smallest page number (which we know to be
75317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** entry apNew[iB]).
75318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
75319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iB!=i ){
75320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Pgno pgnoA = apNew[i]->pgno;
75321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Pgno pgnoB = apNew[iB]->pgno;
75322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Pgno pgnoTemp = (PENDING_BYTE/pBt->pageSize)+1;
75323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u16 fgA = apNew[i]->pDbPage->flags;
75324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u16 fgB = apNew[iB]->pDbPage->flags;
75325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3PagerRekey(apNew[i]->pDbPage, pgnoTemp, fgB);
75326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3PagerRekey(apNew[iB]->pDbPage, pgnoA, fgA);
75327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3PagerRekey(apNew[i]->pDbPage, pgnoB, fgB);
75328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ apNew[i]->pgno = pgnoB;
75329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ apNew[iB]->pgno = pgnoA;
75166 75330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75167 75331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75168 75332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75169 75333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TRACE(("BALANCE: new: %d(%d nc=%d) %d(%d nc=%d) %d(%d nc=%d) "
75170 75334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"%d(%d nc=%d) %d(%d nc=%d)\n",
@@ -79428,10 +79592,20 @@
79428 79592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double r2 = (double)i;
79429 79593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return r1==0.0
79430 79594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (memcmp(&r1, &r2, sizeof(r1))==0
79431 79595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& i >= -2251799813685248LL && i < 2251799813685248LL);
79432 79596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
79598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Convert a floating point value to its closest integer. Do so in
79599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a way that avoids 'outside the range of representable values' warnings
79600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** from UBSAN.
79601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
79602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE i64 sqlite3RealToI64(double r){
79603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( r<=(double)SMALLEST_INT64 ) return SMALLEST_INT64;
79604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( r>=(double)LARGEST_INT64) return LARGEST_INT64;
79605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (i64)r;
79606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
79433 79607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79434 79608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
79435 79609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Convert pMem so that it has type MEM_Real or MEM_Int.
79436 79610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Invalidate any prior representations.
79437 79611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -79450,11 +79624,11 @@
79450 79624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 ix;
79451 79625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pMem->flags & (MEM_Blob|MEM_Str))!=0 );
79452 79626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
79453 79627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3AtoF(pMem->z, &pMem->u.r, pMem->n, pMem->enc);
79454 79628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ((rc==0 || rc==1) && sqlite3Atoi64(pMem->z, &ix, pMem->n, pMem->enc)<=1)
79455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || sqlite3RealSameAsInt(pMem->u.r, (ix = (i64)pMem->u.r))
79629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || sqlite3RealSameAsInt(pMem->u.r, (ix = sqlite3RealToI64(pMem->u.r)))
79456 79630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
79457 79631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMem->u.i = ix;
79458 79632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemSetTypeFlag(pMem, MEM_Int);
79459 79633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
79460 79634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemSetTypeFlag(pMem, MEM_Real);
@@ -80682,14 +80856,14 @@
80682 80856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = sqlite3DbMallocRawNN(db, sizeof(Vdbe) );
80683 80857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p==0 ) return 0;
80684 80858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&p->aOp, 0, sizeof(Vdbe)-offsetof(Vdbe,aOp));
80685 80859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->db = db;
80686 80860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->pVdbe ){
80687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db->pVdbe->pPrev = p;
80861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->pVdbe->ppVPrev = &p->pVNext;
80688 80862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pNext = db->pVdbe;
80690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pPrev = 0;
80863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pVNext = db->pVdbe;
80864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->ppVPrev = &db->pVdbe;
80691 80865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pVdbe = p;
80692 80866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->eVdbeState==VDBE_INIT_STATE );
80693 80867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pParse = pParse;
80694 80868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->pVdbe = p;
80695 80869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->aLabel==0 );
@@ -80767,25 +80941,32 @@
80767 80941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
80768 80942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80769 80943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
80770 80944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80771 80945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
80772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Swap all content between two VDBE structures.
80946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Swap byte-code between two VDBE structures.
80947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
80948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This happens after pB was previously run and returned
80949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLITE_SCHEMA. The statement was then reprepared in pA.
80950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This routine transfers the new bytecode in pA over to pB
80951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** so that pB can be run again. The old pB byte code is
80952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** moved back to pA so that it will be cleaned up when pA is
80953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** finalized.
80773 80954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80774 80955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeSwap(Vdbe *pA, Vdbe *pB){
80775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Vdbe tmp, *pTmp;
80956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Vdbe tmp, *pTmp, **ppTmp;
80776 80957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zTmp;
80777 80958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pA->db==pB->db );
80778 80959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tmp = *pA;
80779 80960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pA = *pB;
80780 80961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pB = tmp;
80781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTmp = pA->pNext;
80782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pA->pNext = pB->pNext;
80783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pB->pNext = pTmp;
80784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTmp = pA->pPrev;
80785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pA->pPrev = pB->pPrev;
80786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pB->pPrev = pTmp;
80962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTmp = pA->pVNext;
80963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pA->pVNext = pB->pVNext;
80964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pB->pVNext = pTmp;
80965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ppTmp = pA->ppVPrev;
80966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pA->ppVPrev = pB->ppVPrev;
80967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pB->ppVPrev = ppTmp;
80787 80968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTmp = pA->zSql;
80788 80969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pA->zSql = pB->zSql;
80789 80970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pB->zSql = zTmp;
80790 80971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_NORMALIZE
80791 80972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTmp = pA->zNormSql;
@@ -81033,10 +81214,11 @@
81033 81214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCtx->argc = nArg;
81034 81215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCtx->iOp = sqlite3VdbeCurrentAddr(v);
81035 81216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp4(v, eCallCtx ? OP_PureFunc : OP_Function,
81036 81217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1, p2, p3, (char*)pCtx, P4_FUNCCTX);
81037 81218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, eCallCtx & NC_SelfRef);
81219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3MayAbort(pParse);
81038 81220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return addr;
81039 81221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81040 81222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
81041 81223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
81042 81224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Add an opcode that includes the p4 value with a P4_INT64 or
@@ -81101,11 +81283,11 @@
81101 81283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
81102 81284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = pParse->pVdbe;
81103 81285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iThis = v->nOp;
81104 81286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Explain, iThis, pParse->addrExplain, 0,
81105 81287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zMsg, P4_DYNAMIC);
81106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExplainBreakpoint(bPush?"PUSH":"", sqlite3VdbeGetOp(v,-1)->p4.z);
81288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExplainBreakpoint(bPush?"PUSH":"", sqlite3VdbeGetLastOp(v)->p4.z);
81107 81289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bPush){
81108 81290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->addrExplain = iThis;
81109 81291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81110 81292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81111 81293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -81368,10 +81550,11 @@
81368 81550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int opcode = pOp->opcode;
81369 81551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( opcode==OP_Destroy || opcode==OP_VUpdate || opcode==OP_VRename
81370 81552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| opcode==OP_VDestroy
81371 81553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| opcode==OP_VCreate
81372 81554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| opcode==OP_ParseSchema
81555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || opcode==OP_Function || opcode==OP_PureFunc
81373 81556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| ((opcode==OP_Halt || opcode==OP_HaltIfNull)
81374 81557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& ((pOp->p1)!=SQLITE_OK && pOp->p2==OE_Abort))
81375 81558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
81376 81559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hasAbort = 1;
81377 81560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -81458,12 +81641,12 @@
81458 81641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse = p->pParse;
81459 81642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *aLabel = pParse->aLabel;
81460 81643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->readOnly = 1;
81461 81644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->bIsReader = 0;
81462 81645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp = &p->aOp[p->nOp-1];
81463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while(1){
81464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
81646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->aOp[0].opcode==OP_Init );
81647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( 1 /* Loop termates when it reaches the OP_Init opcode */ ){
81465 81648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Only JUMP opcodes and the short list of special opcodes in the switch
81466 81649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** below need to be considered. The mkopcodeh.tcl generator script groups
81467 81650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** all these opcodes together near the front of the opcode list. Skip
81468 81651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** any opcode that does not need processing by virtual of the fact that
81469 81652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it is larger than SQLITE_MX_JUMP_OPCODE, as a performance optimization.
@@ -81488,10 +81671,14 @@
81488 81671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_JournalMode: {
81489 81672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->readOnly = 0;
81490 81673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->bIsReader = 1;
81491 81674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
81492 81675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_Init: {
81677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p2>=0 );
81678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto resolve_p2_values_loop_exit;
81679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
81493 81680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
81494 81681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_VUpdate: {
81495 81682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p2>nMaxArgs ) nMaxArgs = pOp->p2;
81496 81683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
81497 81684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -81520,15 +81707,16 @@
81520 81707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The mkopcodeh.tcl script has so arranged things that the only
81521 81708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** non-jump opcodes less than SQLITE_MX_JUMP_CODE are guaranteed to
81522 81709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** have non-negative values for P2. */
81523 81710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (sqlite3OpcodeProperty[pOp->opcode]&OPFLG_JUMP)==0 || pOp->p2>=0);
81524 81711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp==p->aOp ) break;
81712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp>p->aOp );
81526 81713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp--;
81527 81714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ resolve_p2_values_loop_exit:
81528 81716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aLabel ){
81529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(p->db, pParse->aLabel);
81717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(p->db, pParse->aLabel);
81530 81718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->aLabel = 0;
81531 81719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81532 81720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nLabel = 0;
81533 81721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pMaxFuncArgs = nMaxArgs;
81534 81722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->bIsReader!=0 || DbMaskAllZero(p->btreeMask) );
@@ -81773,19 +81961,23 @@
81773 81961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
81774 81962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Change the value of the opcode, or P1, P2, P3, or P5 operands
81775 81963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for a specific instruction.
81776 81964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
81777 81965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeOpcode(Vdbe *p, int addr, u8 iNewOpcode){
81966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( addr>=0 );
81778 81967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGetOp(p,addr)->opcode = iNewOpcode;
81779 81968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81780 81969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeP1(Vdbe *p, int addr, int val){
81970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( addr>=0 );
81781 81971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGetOp(p,addr)->p1 = val;
81782 81972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81783 81973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeP2(Vdbe *p, int addr, int val){
81974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( addr>=0 || p->db->mallocFailed );
81784 81975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGetOp(p,addr)->p2 = val;
81785 81976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81786 81977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeP3(Vdbe *p, int addr, int val){
81978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( addr>=0 );
81787 81979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGetOp(p,addr)->p3 = val;
81788 81980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81789 81981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeChangeP5(Vdbe *p, u16 p5){
81790 81982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->nOp>0 || p->db->mallocFailed );
81791 81983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nOp>0 ) p->aOp[p->nOp-1].p5 = p5;
@@ -81817,11 +82009,11 @@
81817 82009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->aOp[addr].opcode==OP_Once
81818 82010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| p->aOp[addr].opcode==OP_If
81819 82011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| p->aOp[addr].opcode==OP_FkIfZero );
81820 82012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->aOp[addr].p4type==0 );
81821 82013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_VDBE_COVERAGE
81822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeGetOp(p,-1)->iSrcLine = 0; /* Erase VdbeCoverage() macros */
82014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeGetLastOp(p)->iSrcLine = 0; /* Erase VdbeCoverage() macros */
81823 82015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
81824 82016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nOp--;
81825 82017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
81826 82018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP2(p, addr, p->nOp);
81827 82019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -81831,25 +82023,27 @@
81831 82023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
81832 82024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the input FuncDef structure is ephemeral, then free it. If
81833 82025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the FuncDef is not ephermal, then do nothing.
81834 82026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
81835 82027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void freeEphemeralFunction(sqlite3 *db, FuncDef *pDef){
82028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
81836 82029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pDef->funcFlags & SQLITE_FUNC_EPHEM)!=0 ){
81837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, pDef);
82030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, pDef);
81838 82031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81839 82032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81840 82033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
81841 82034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
81842 82035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Delete a P4 value if necessary.
81843 82036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
81844 82037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static SQLITE_NOINLINE void freeP4Mem(sqlite3 *db, Mem *p){
81845 82038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->szMalloc ) sqlite3DbFree(db, p->zMalloc);
81846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, p);
82039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, p);
81847 82040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81848 82041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static SQLITE_NOINLINE void freeP4FuncCtx(sqlite3 *db, sqlite3_context *p){
82042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
81849 82043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
freeEphemeralFunction(db, p->pFunc);
81850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, p);
82044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, p);
81851 82045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81852 82046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void freeP4(sqlite3 *db, int p4type, void *p4){
81853 82047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db );
81854 82048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( p4type ){
81855 82049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case P4_FUNCCTX: {
@@ -81858,11 +82052,11 @@
81858 82052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81859 82053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case P4_REAL:
81860 82054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case P4_INT64:
81861 82055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case P4_DYNAMIC:
81862 82056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case P4_INTARRAY: {
81863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, p4);
82057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p4 ) sqlite3DbNNFreeNN(db, p4);
81864 82058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
81865 82059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81866 82060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case P4_KEYINFO: {
81867 82061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->pnBytesFreed==0 ) sqlite3KeyInfoUnref((KeyInfo*)p4);
81868 82062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -81897,10 +82091,11 @@
81897 82091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** opcodes contained within. If aOp is not NULL it is assumed to contain
81898 82092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** nOp entries.
81899 82093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
81900 82094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void vdbeFreeOpArray(sqlite3 *db, Op *aOp, int nOp){
81901 82095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nOp>=0 );
82096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
81902 82097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aOp ){
81903 82098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Op *pOp = &aOp[nOp-1];
81904 82099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while(1){ /* Exit via break */
81905 82100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p4type <= P4_FREE_IF_LE ) freeP4(db, pOp->p4type, pOp->p4.p);
81906 82101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
@@ -81907,11 +82102,11 @@
81907 82102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pOp->zComment);
81908 82103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
81909 82104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp==aOp ) break;
81910 82105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp--;
81911 82106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, aOp);
82107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, aOp);
81913 82108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81914 82109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
81915 82110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
81916 82111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
81917 82112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Link the SubProgram object passed as the second argument into the linked
@@ -82138,17 +82333,17 @@
82138 82333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_VDBE_COVERAGE
82139 82334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
82140 82335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set the value if the iSrcLine field for the previously coded instruction.
82141 82336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
82142 82337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeSetLineNumber(Vdbe *v, int iLine){
82143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeGetOp(v,-1)->iSrcLine = iLine;
82338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeGetLastOp(v)->iSrcLine = iLine;
82144 82339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82145 82340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_VDBE_COVERAGE */
82146 82341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82147 82342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
82148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Return the opcode for a given address. If the address is -1, then
82149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** return the most recently inserted opcode.
82343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the opcode for a given address. The address must be non-negative.
82344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** See sqlite3VdbeGetLastOp() to get the most recently added opcode.
82150 82345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
82151 82346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If a memory allocation error has occurred prior to the calling of this
82152 82347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** routine, then a pointer to a dummy VdbeOp will be returned. That opcode
82153 82348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is readable but not writable, though it is cast to a writable value.
82154 82349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The return of a dummy opcode allows the call to continue functioning
@@ -82160,20 +82355,23 @@
82160 82355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE VdbeOp *sqlite3VdbeGetOp(Vdbe *p, int addr){
82161 82356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* C89 specifies that the constant "dummy" will be initialized to all
82162 82357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** zeros, which is correct. MSVC generates a warning, nevertheless. */
82163 82358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static VdbeOp dummy; /* Ignore the MSVC warning about no initializer */
82164 82359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->eVdbeState==VDBE_INIT_STATE );
82165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( addr<0 ){
82166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addr = p->nOp - 1;
82167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
82168 82360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (addr>=0 && addr<p->nOp) || p->db->mallocFailed );
82169 82361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->db->mallocFailed ){
82170 82362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (VdbeOp*)&dummy;
82171 82363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
82172 82364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return &p->aOp[addr];
82173 82365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82174 82366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
82368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Return the most recently added opcode
82369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
82370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeOp * sqlite3VdbeGetLastOp(Vdbe *p){
82371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sqlite3VdbeGetOp(p, p->nOp - 1);
82372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
82175 82373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82176 82374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_EXPLAIN_COMMENTS)
82177 82375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
82178 82376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return an integer value for one of the parameters to the opcode pOp
82179 82377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** determined by character c.
@@ -82658,11 +82856,11 @@
82658 82856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->flags&(MEM_Agg|MEM_Dyn) ){
82659 82857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( (p->flags & MEM_Dyn)!=0 && p->xDel==sqlite3VdbeFrameMemDel );
82660 82858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(p);
82661 82859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags = MEM_Undefined;
82662 82860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->szMalloc ){
82663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, p->zMalloc);
82861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, p->zMalloc);
82664 82862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->szMalloc = 0;
82665 82863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags = MEM_Undefined;
82666 82864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82667 82865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
82668 82866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else{
@@ -83650,11 +83848,11 @@
83650 83848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3_stmt_busy((sqlite3_stmt*)p) ){
83651 83849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt++;
83652 83850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->readOnly==0 ) nWrite++;
83653 83851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->bIsReader ) nRead++;
83654 83852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p = p->pNext;
83853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p = p->pVNext;
83656 83854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83657 83855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cnt==db->nVdbeActive );
83658 83856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nWrite==db->nVdbeWrite );
83659 83857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nRead==db->nVdbeRead );
83660 83858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -84179,27 +84377,28 @@
84179 84377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** VdbeDelete() also unlinks the Vdbe from the list of VMs associated with
84180 84378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database connection and frees the object itself.
84181 84379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
84182 84380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void sqlite3VdbeClearObject(sqlite3 *db, Vdbe *p){
84183 84381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SubProgram *pSub, *pNext;
84382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
84184 84383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->db==0 || p->db==db );
84185 84384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->aColName ){
84186 84385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
releaseMemArray(p->aColName, p->nResColumn*COLNAME_N);
84187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, p->aColName);
84386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, p->aColName);
84188 84387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84189 84388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pSub=p->pProgram; pSub; pSub=pNext){
84190 84389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNext = pSub->pNext;
84191 84390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vdbeFreeOpArray(db, pSub->aOp, pSub->nOp);
84192 84391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pSub);
84193 84392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84194 84393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->eVdbeState!=VDBE_INIT_STATE ){
84195 84394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
releaseMemArray(p->aVar, p->nVar);
84196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pVList ) sqlite3DbFreeNN(db, p->pVList);
84197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pFree ) sqlite3DbFreeNN(db, p->pFree);
84395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pVList ) sqlite3DbNNFreeNN(db, p->pVList);
84396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pFree ) sqlite3DbNNFreeNN(db, p->pFree);
84198 84397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84199 84398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vdbeFreeOpArray(db, p->aOp, p->nOp);
84200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, p->zSql);
84399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->zSql ) sqlite3DbNNFreeNN(db, p->zSql);
84201 84400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_NORMALIZE
84202 84401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, p->zNormSql);
84203 84402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
84204 84403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DblquoteStr *pThis, *pNext;
84205 84404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pThis=p->pDblStr; pThis; pThis=pNext){
@@ -84225,24 +84424,21 @@
84225 84424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeDelete(Vdbe *p){
84226 84425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db;
84227 84426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84228 84427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p!=0 );
84229 84428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db = p->db;
84429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
84230 84430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(db->mutex) );
84231 84431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeClearObject(db, p);
84232 84432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->pnBytesFreed==0 ){
84233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pPrev ){
84234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pPrev->pNext = p->pNext;
84235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
84236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( db->pVdbe==p );
84237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db->pVdbe = p->pNext;
84238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
84239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pNext ){
84240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pNext->pPrev = p->pPrev;
84433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->ppVPrev!=0 );
84434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *p->ppVPrev = p->pVNext;
84435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pVNext ){
84436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pVNext->ppVPrev = p->ppVPrev;
84241 84437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84242 84438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, p);
84439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, p);
84244 84440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84245 84441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84246 84442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
84247 84443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The cursor "p" has a pending seek operation that has not yet been
84248 84444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** carried out. Seek the cursor now. If an error occurs, return
@@ -85733,11 +85929,11 @@
85733 85929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** prepared statements. The flag is set to 1 for an immediate expiration
85734 85930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and set to 2 for an advisory expiration.
85735 85931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
85736 85932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3 *db, int iCode){
85737 85933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *p;
85738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(p = db->pVdbe; p; p=p->pNext){
85934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(p = db->pVdbe; p; p=p->pVNext){
85739 85935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->expired = iCode+1;
85740 85936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85741 85937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85742 85938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
85743 85939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -85854,17 +86050,18 @@
85854 86050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
85855 86051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function is used to free UnpackedRecord structures allocated by
85856 86052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the vdbeUnpackRecord() function found in vdbeapi.c.
85857 86053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
85858 86054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void vdbeFreeUnpacked(sqlite3 *db, int nField, UnpackedRecord *p){
86055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
85859 86056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
85860 86057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
85861 86058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nField; i++){
85862 86059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pMem = &p->aMem[i];
85863 86060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pMem->zMalloc ) sqlite3VdbeMemReleaseMalloc(pMem);
85864 86061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, p);
86062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, p);
85866 86063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85867 86064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85868 86065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */
85869 86066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
85870 86067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
@@ -85931,11 +86128,11 @@
85931 86128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( preupdate.aNew ){
85932 86129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
85933 86130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pCsr->nField; i++){
85934 86131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(&preupdate.aNew[i]);
85935 86132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, preupdate.aNew);
86133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, preupdate.aNew);
85937 86134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85938 86135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85939 86136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */
85940 86137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
85941 86138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of vdbeaux.c *********************************************/
@@ -86048,11 +86245,13 @@
86048 86245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = (Vdbe*)pStmt;
86049 86246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = v->db;
86050 86247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( vdbeSafety(v) ) return SQLITE_MISUSE_BKPT;
86051 86248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(db->mutex);
86052 86249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
checkProfileCallback(db, v);
86053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3VdbeFinalize(v);
86250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( v->eVdbeState>=VDBE_READY_STATE );
86251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3VdbeReset(v);
86252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeDelete(v);
86054 86253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3ApiExit(db, rc);
86055 86254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3LeaveMutexAndCloseZombie(db);
86056 86255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
86057 86256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
86058 86257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -87370,11 +87569,11 @@
87370 87569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the mutex is released if any kind of error occurs.
87371 87570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
87372 87571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The error code stored in database p->db is overwritten with the return
87373 87572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value in any case.
87374 87573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
87375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int vdbeUnbind(Vdbe *p, int i){
87574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int vdbeUnbind(Vdbe *p, unsigned int i){
87376 87575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pVar;
87377 87576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( vdbeSafetyNotNull(p) ){
87378 87577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_MISUSE_BKPT;
87379 87578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87380 87579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(p->db->mutex);
@@ -87383,16 +87582,15 @@
87383 87582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(p->db->mutex);
87384 87583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_log(SQLITE_MISUSE,
87385 87584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"bind on a busy prepared statement: [%s]", p->zSql);
87386 87585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_MISUSE_BKPT;
87387 87586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( i<1 || i>p->nVar ){
87587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i>=(unsigned int)p->nVar ){
87389 87588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Error(p->db, SQLITE_RANGE);
87390 87589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(p->db->mutex);
87391 87590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_RANGE;
87392 87591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i--;
87394 87592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVar = &p->aVar[i];
87395 87593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(pVar);
87396 87594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVar->flags = MEM_Null;
87397 87595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->db->errCode = SQLITE_OK;
87398 87596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -87425,11 +87623,11 @@
87425 87623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
87426 87624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *p = (Vdbe *)pStmt;
87427 87625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pVar;
87428 87626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
87429 87627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
87430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = vdbeUnbind(p, i);
87628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = vdbeUnbind(p, (u32)(i-1));
87431 87629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
87432 87630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zData!=0 ){
87433 87631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVar = &p->aVar[i-1];
87434 87632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel);
87435 87633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && encoding!=0 ){
@@ -87474,11 +87672,11 @@
87474 87672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return bindText(pStmt, i, zData, nData, xDel, 0);
87475 87673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87476 87674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
87477 87675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
87478 87676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *p = (Vdbe *)pStmt;
87479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = vdbeUnbind(p, i);
87677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = vdbeUnbind(p, (u32)(i-1));
87480 87678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
87481 87679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetDouble(&p->aVar[i-1], rValue);
87482 87680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(p->db->mutex);
87483 87681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87484 87682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
@@ -87487,21 +87685,21 @@
87487 87685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3_bind_int64(p, i, (i64)iValue);
87488 87686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87489 87687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){
87490 87688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
87491 87689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *p = (Vdbe *)pStmt;
87492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = vdbeUnbind(p, i);
87690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = vdbeUnbind(p, (u32)(i-1));
87493 87691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
87494 87692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetInt64(&p->aVar[i-1], iValue);
87495 87693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(p->db->mutex);
87496 87694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87497 87695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
87498 87696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87499 87697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_bind_null(sqlite3_stmt *pStmt, int i){
87500 87698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
87501 87699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *p = (Vdbe*)pStmt;
87502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = vdbeUnbind(p, i);
87700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = vdbeUnbind(p, (u32)(i-1));
87503 87701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
87504 87702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(p->db->mutex);
87505 87703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87506 87704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
87507 87705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -87512,11 +87710,11 @@
87512 87710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPTtype,
87513 87711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void (*xDestructor)(void*)
87514 87712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
87515 87713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
87516 87714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *p = (Vdbe*)pStmt;
87517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = vdbeUnbind(p, i);
87715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = vdbeUnbind(p, (u32)(i-1));
87518 87716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
87519 87717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetPointer(&p->aVar[i-1], pPtr, zPTtype, xDestructor);
87520 87718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(p->db->mutex);
87521 87719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( xDestructor ){
87522 87720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xDestructor(pPtr);
@@ -87590,11 +87788,11 @@
87590 87788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
87591 87789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87592 87790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){
87593 87791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
87594 87792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *p = (Vdbe *)pStmt;
87595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = vdbeUnbind(p, i);
87793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = vdbeUnbind(p, (u32)(i-1));
87596 87794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
87597 87795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_INCRBLOB
87598 87796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n);
87599 87797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
87600 87798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n);
@@ -87750,11 +87948,11 @@
87750 87948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
87751 87949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(pDb->mutex);
87752 87950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pStmt==0 ){
87753 87951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNext = (sqlite3_stmt*)pDb->pVdbe;
87754 87952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
87755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNext = (sqlite3_stmt*)((Vdbe*)pStmt)->pNext;
87953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNext = (sqlite3_stmt*)((Vdbe*)pStmt)->pVNext;
87756 87954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87757 87955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(pDb->mutex);
87758 87956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pNext;
87759 87957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87760 87958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -87775,12 +87973,15 @@
87775 87973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==SQLITE_STMTSTATUS_MEMUSED ){
87776 87974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pVdbe->db;
87777 87975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(db->mutex);
87778 87976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = 0;
87779 87977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pnBytesFreed = (int*)&v;
87978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->lookaside.pEnd==db->lookaside.pTrueEnd );
87979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pEnd = db->lookaside.pStart;
87780 87980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeDelete(pVdbe);
87781 87981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pnBytesFreed = 0;
87982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pEnd = db->lookaside.pTrueEnd;
87782 87983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(db->mutex);
87783 87984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
87784 87985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = pVdbe->aCounter[op];
87785 87986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( resetFlag ) pVdbe->aCounter[op] = 0;
87786 87987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -88616,11 +88817,12 @@
88616 88817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** floating point value of rValue. Return true and set *piValue to the
88617 88818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** integer value if the string is in range to be an integer. Otherwise,
88618 88819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** return false.
88619 88820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
88620 88821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int alsoAnInt(Mem *pRec, double rValue, i64 *piValue){
88621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i64 iValue = (double)rValue;
88822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 iValue;
88823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iValue = sqlite3RealToI64(rValue);
88622 88824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3RealSameAsInt(rValue,iValue) ){
88623 88825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*piValue = iValue;
88624 88826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
88625 88827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
88626 88828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0==sqlite3Atoi64(pRec->z, piValue, pRec->n, pRec->enc);
@@ -88778,21 +88980,22 @@
88778 88980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
88779 88981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Unlike applyNumericAffinity(), this routine does not modify pMem->flags.
88780 88982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** But it does set pMem->u.r and pMem->u.i appropriately.
88781 88983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
88782 88984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static u16 numericType(Mem *pMem){
88783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pMem->flags & (MEM_Int|MEM_Real|MEM_IntReal) ){
88985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pMem->flags & MEM_Null)==0
88986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pMem->db==0 || pMem->db->mallocFailed );
88987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pMem->flags & (MEM_Int|MEM_Real|MEM_IntReal|MEM_Null) ){
88784 88988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pMem->flags & MEM_Int );
88785 88989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pMem->flags & MEM_Real );
88786 88990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pMem->flags & MEM_IntReal );
88787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return pMem->flags & (MEM_Int|MEM_Real|MEM_IntReal);
88991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pMem->flags & (MEM_Int|MEM_Real|MEM_IntReal|MEM_Null);
88788 88992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
88789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pMem->flags & (MEM_Str|MEM_Blob) ){
88790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( pMem->flags & MEM_Str );
88791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( pMem->flags & MEM_Blob );
88792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return computeNumericType(pMem);
88793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
88993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pMem->flags & (MEM_Str|MEM_Blob) );
88994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pMem->flags & MEM_Str );
88995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pMem->flags & MEM_Blob );
88996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return computeNumericType(pMem);
88794 88997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
88795 88998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
88796 88999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
88797 89000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
88798 89001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -90033,25 +90236,24 @@
90033 90236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Add: /* same as TK_PLUS, in1, in2, out3 */
90034 90237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Subtract: /* same as TK_MINUS, in1, in2, out3 */
90035 90238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Multiply: /* same as TK_STAR, in1, in2, out3 */
90036 90239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Divide: /* same as TK_SLASH, in1, in2, out3 */
90037 90240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Remainder: { /* same as TK_REM, in1, in2, out3 */
90038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u16 flags; /* Combined MEM_* flags from both inputs */
90039 90241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 type1; /* Numeric type of left operand */
90040 90242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 type2; /* Numeric type of right operand */
90041 90243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iA; /* Integer value of left operand */
90042 90244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iB; /* Integer value of right operand */
90043 90245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double rA; /* Real value of left operand */
90044 90246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double rB; /* Real value of right operand */
90045 90247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
90046 90248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
90047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- type1 = numericType(pIn1);
90249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ type1 = pIn1->flags;
90048 90250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn2 = &aMem[pOp->p2];
90049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- type2 = numericType(pIn2);
90251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ type2 = pIn2->flags;
90050 90252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut = &aMem[pOp->p3];
90051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags = pIn1->flags | pIn2->flags;
90052 90253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (type1 & type2 & MEM_Int)!=0 ){
90254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int_math:
90053 90255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iA = pIn1->u.i;
90054 90256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iB = pIn2->u.i;
90055 90257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( pOp->opcode ){
90056 90258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Add: if( sqlite3AddInt64(&iB,iA) ) goto fp_math; break;
90057 90259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Subtract: if( sqlite3SubInt64(&iB,iA) ) goto fp_math; break;
@@ -90069,13 +90271,16 @@
90069 90271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
90070 90272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90071 90273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90072 90274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->u.i = iB;
90073 90275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemSetTypeFlag(pOut, MEM_Int);
90074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( (flags & MEM_Null)!=0 ){
90276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( ((type1 | type2) & MEM_Null)!=0 ){
90075 90277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto arithmetic_result_is_null;
90076 90278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
90279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ type1 = numericType(pIn1);
90280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ type2 = numericType(pIn2);
90281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (type1 & type2 & MEM_Int)!=0 ) goto int_math;
90077 90282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp_math:
90078 90283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rA = sqlite3VdbeRealValue(pIn1);
90079 90284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rB = sqlite3VdbeRealValue(pIn2);
90080 90285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( pOp->opcode ){
90081 90286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Add: rB += rA; break;
@@ -90941,15 +91146,18 @@
90941 91146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
90942 91147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Check the cursor P1 to see if it is currently pointing at a NULL row.
90943 91148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If it is, then set register P3 to NULL and jump immediately to P2.
90944 91149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If P1 is not on a NULL row, then fall through without making any
90945 91150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** changes.
91151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
91152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P1 is not an open cursor, then this opcode is a no-op.
90946 91153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
90947 91154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_IfNullRow: { /* jump */
91155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCursor *pC;
90948 91156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
90949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->apCsr[pOp->p1]!=0 );
90950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->apCsr[pOp->p1]->nullRow ){
91157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pC = p->apCsr[pOp->p1];
91158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ALWAYS(pC) && pC->nullRow ){
90951 91159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetNull(aMem + pOp->p3);
90952 91160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto jump_to_p2;
90953 91161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90954 91162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
90955 91163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -93052,11 +93260,11 @@
93052 93260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93053 93261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> If the cursor is successfully moved to the target row by 0 or more
93054 93262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3BtreeNext() calls, then jump to This.P2, which will land just
93055 93263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** past the OP_IdxGT or OP_IdxGE opcode that follows the OP_SeekGE.
93056 93264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
93057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <li> If the cursor ends up past the target row (indicating the the target
93265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <li> If the cursor ends up past the target row (indicating that the target
93058 93266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** row does not exist in the btree) then jump to SeekOP.P2.
93059 93267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </ol>
93060 93268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93061 93269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_SeekScan: {
93062 93270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCursor *pC;
@@ -94388,11 +94596,13 @@
94388 94596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeSorterNext(db, pC);
94389 94597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto next_tail;
94390 94598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94391 94599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Prev: /* jump */
94392 94600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
94393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOp->p5<ArraySize(p->aCounter) );
94601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p5==0
94602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pOp->p5==SQLITE_STMTSTATUS_FULLSCAN_STEP
94603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pOp->p5==SQLITE_STMTSTATUS_AUTOINDEX);
94394 94604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC = p->apCsr[pOp->p1];
94395 94605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC!=0 );
94396 94606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->deferredMoveto==0 );
94397 94607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->eCurType==CURTYPE_BTREE );
94398 94608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->seekOp==OP_SeekLT || pC->seekOp==OP_SeekLE
@@ -94401,11 +94611,13 @@
94401 94611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreePrevious(pC->uc.pCursor, pOp->p3);
94402 94612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto next_tail;
94403 94613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94404 94614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Next: /* jump */
94405 94615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
94406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pOp->p5<ArraySize(p->aCounter) );
94616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p5==0
94617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pOp->p5==SQLITE_STMTSTATUS_FULLSCAN_STEP
94618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pOp->p5==SQLITE_STMTSTATUS_AUTOINDEX);
94407 94619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC = p->apCsr[pOp->p1];
94408 94620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC!=0 );
94409 94621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->deferredMoveto==0 );
94410 94622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->eCurType==CURTYPE_BTREE );
94411 94623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC->seekOp==OP_SeekGT || pC->seekOp==OP_SeekGE
@@ -94608,14 +94820,14 @@
94608 94820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94609 94821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The IdxRowid and Seek opcodes are combined because of the commonality
94610 94822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of sqlite3VdbeCursorRestore() and sqlite3VdbeIdxRowid(). */
94611 94823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeCursorRestore(pC);
94612 94824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* sqlite3VbeCursorRestore() can only fail if the record has been deleted
94614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** out from under the cursor. That will never happens for an IdxRowid
94615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or Seek opcode */
94616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(rc!=SQLITE_OK) ) goto abort_due_to_error;
94825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* sqlite3VdbeCursorRestore() may fail if the cursor has been disturbed
94826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** since it was last positioned and an error (e.g. OOM or an IO error)
94827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** occurs while trying to reposition it. */
94828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc!=SQLITE_OK ) goto abort_due_to_error;
94617 94829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94618 94830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pC->nullRow ){
94619 94831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rowid = 0; /* Not needed. Only used to silence a warning. */
94620 94832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeIdxRowid(db, pC->uc.pCursor, &rowid);
94621 94833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
@@ -95513,11 +95725,11 @@
95513 95725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
95514 95726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: OffsetLimit P1 P2 P3 * *
95515 95727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)
95516 95728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
95517 95729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This opcode performs a commonly used computation associated with
95518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** LIMIT and OFFSET process. r[P1] holds the limit counter. r[P3]
95730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** LIMIT and OFFSET processing. r[P1] holds the limit counter. r[P3]
95519 95731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** holds the offset counter. The opcode computes the combined value
95520 95732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the LIMIT and OFFSET and stores that value in r[P2]. The r[P2]
95521 95733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value computed is the total number of rows that will need to be
95522 95734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** visited in order to complete the query.
95523 95735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -101110,10 +101322,12 @@
101110 101322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_file *pJfd, /* Preallocated, blank file handle */
101111 101323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags, /* Opening flags */
101112 101324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSpill /* Bytes buffered before opening the file */
101113 101325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
101114 101326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemJournal *p = (MemJournal*)pJfd;
101327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
101328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( zName || nSpill<0 || (flags & SQLITE_OPEN_EXCLUSIVE) );
101115 101329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101116 101330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Zero the file-handle object. If nSpill was passed zero, initialize
101117 101331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it using the sqlite3OsOpen() function of the underlying VFS. In this
101118 101332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** case none of the code in this module is executed as a result of calls
101119 101333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** made on the journal file-handle. */
@@ -101552,13 +101766,11 @@
101552 101766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_WinFunc) ){
101553 101767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pExpr->y.pWin!=0) ){
101554 101768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.pWin->pOwner = pExpr;
101555 101769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101556 101770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ParserAddCleanup(pParse,
101558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (void(*)(sqlite3*,void*))sqlite3ExprDelete,
101559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pDup);
101771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprDeferredDelete(pParse, pDup);
101560 101772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101561 101773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101562 101774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101563 101775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
101564 101776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Subqueries stores the original database, table and column names for their
@@ -104363,11 +104575,13 @@
104363 104575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Also propagate EP_Propagate flags up from Expr.x.pList to Expr.flags,
104364 104576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if appropriate.
104365 104577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104366 104578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void exprSetHeight(Expr *p){
104367 104579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nHeight = p->pLeft ? p->pLeft->nHeight : 0;
104368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->pRight && p->pRight->nHeight>nHeight ) nHeight = p->pRight->nHeight;
104580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(p->pRight) && p->pRight->nHeight>nHeight ){
104581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nHeight = p->pRight->nHeight;
104582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
104369 104583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(p) ){
104370 104584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfSelect(p->x.pSelect, &nHeight);
104371 104585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->x.pList ){
104372 104586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfExprList(p->x.pList, &nHeight);
104373 104587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
@@ -104506,19 +104720,30 @@
104506 104720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRoot==0 ){
104507 104721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db->mallocFailed );
104508 104722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pLeft);
104509 104723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pRight);
104510 104724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
104725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pRoot) );
104726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRoot->x.pSelect==0 );
104511 104727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRight ){
104512 104728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->pRight = pRight;
104513 104729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->flags |= EP_Propagate & pRight->flags;
104730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_MAX_EXPR_DEPTH>0
104731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRoot->nHeight = pRight->nHeight+1;
104732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
104733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRoot->nHeight = 1;
104734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
104514 104735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104515 104736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLeft ){
104516 104737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->pLeft = pLeft;
104517 104738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->flags |= EP_Propagate & pLeft->flags;
104739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_MAX_EXPR_DEPTH>0
104740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pLeft->nHeight>=pRoot->nHeight ){
104741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRoot->nHeight = pLeft->nHeight+1;
104742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
104743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
104518 104744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- exprSetHeight(pRoot);
104520 104745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104521 104746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104522 104747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104523 104748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
104524 104749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allocate an Expr node which joins as many as two subtrees.
@@ -104800,10 +105025,11 @@
104800 105025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
104801 105026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Recursively delete an expression tree.
104802 105027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104803 105028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static SQLITE_NOINLINE void sqlite3ExprDeleteNN(sqlite3 *db, Expr *p){
104804 105029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p!=0 );
105030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
104805 105031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprUseUValue(p) || p->u.iValue>=0 );
104806 105032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprUseYWin(p) || !ExprUseYSub(p) );
104807 105033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprUseYWin(p) || p->y.pWin!=0 || db->mallocFailed );
104808 105034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->op!=TK_FUNCTION || !ExprUseYSub(p) );
104809 105035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
@@ -104831,16 +105057,12 @@
104831 105057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WindowDelete(db, p->y.pWin);
104832 105058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104833 105059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
104834 105060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104835 105061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(p, EP_MemToken) ){
104837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(p, EP_IntValue) );
104838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, p->u.zToken);
104839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
104840 105062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !ExprHasProperty(p, EP_Static) ){
104841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, p);
105063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, p);
104842 105064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104843 105065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104844 105066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3 *db, Expr *p){
104845 105067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ) sqlite3ExprDeleteNN(db, p);
104846 105068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -104867,12 +105089,13 @@
104867 105089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
104868 105090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The deferred delete is (currently) implemented by adding the
104869 105091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pExpr to the pParse->pConstExpr list with a register number of 0.
104870 105092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104871 105093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprDeferredDelete(Parse *pParse, Expr *pExpr){
104872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->pConstExpr =
104873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprListAppend(pParse, pParse->pConstExpr, pExpr);
105094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ParserAddCleanup(pParse,
105095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void(*)(sqlite3*,void*))sqlite3ExprDelete,
105096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr);
104874 105097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104875 105098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104876 105099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Invoke sqlite3RenameExprUnmap() and sqlite3ExprDelete() on the
104877 105100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expression.
104878 105101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -104942,11 +105165,10 @@
104942 105165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
104943 105166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSize = EXPR_FULLSIZE;
104944 105167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
104945 105168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) );
104946 105169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(p, EP_OuterON) );
104947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(p, EP_MemToken) );
104948 105170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasVVAProperty(p, EP_NoReduce) );
104949 105171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pLeft || p->x.pList ){
104950 105172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSize = EXPR_REDUCEDSIZE | EP_Reduced;
104951 105173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
104952 105174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pRight==0 );
@@ -105046,11 +105268,11 @@
105046 105268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&zAlloc[nSize], 0, EXPR_FULLSIZE-nSize);
105047 105269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105048 105270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105049 105271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
105050 105272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Set the EP_Reduced, EP_TokenOnly, and EP_Static flags appropriately. */
105051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->flags &= ~(EP_Reduced|EP_TokenOnly|EP_Static|EP_MemToken);
105273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->flags &= ~(EP_Reduced|EP_TokenOnly|EP_Static);
105052 105274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->flags |= nStructSize & (EP_Reduced|EP_TokenOnly);
105053 105275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->flags |= staticFlag;
105054 105276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprClearVVAProperties(pNew);
105055 105277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( dupFlags ){
105056 105278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetVVAProperty(pNew, EP_Immutable);
@@ -105622,16 +105844,17 @@
105622 105844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
105623 105845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static SQLITE_NOINLINE void exprListDeleteNN(sqlite3 *db, ExprList *pList){
105624 105846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i = pList->nExpr;
105625 105847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct ExprList_item *pItem = pList->a;
105626 105848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pList->nExpr>0 );
105849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
105627 105850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
105628 105851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pItem->pExpr);
105629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, pItem->zEName);
105852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->zEName ) sqlite3DbNNFreeNN(db, pItem->zEName);
105630 105853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem++;
105631 105854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}while( --i>0 );
105632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, pList);
105855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, pList);
105633 105856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105634 105857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprListDelete(sqlite3 *db, ExprList *pList){
105635 105858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pList ) exprListDeleteNN(db, pList);
105636 105859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105637 105860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -106918,11 +107141,11 @@
106918 107141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLimit ){
106919 107142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLimit->affExpr = SQLITE_AFF_NUMERIC;
106920 107143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLimit = sqlite3PExpr(pParse, TK_NE,
106921 107144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDup(db, pSel->pLimit->pLeft, 0), pLimit);
106922 107145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDelete(db, pSel->pLimit->pLeft);
107146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprDeferredDelete(pParse, pSel->pLimit->pLeft);
106924 107147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSel->pLimit->pLeft = pLimit;
106925 107148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
106926 107149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is no pre-existing limit add a limit of 1 */
106927 107150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLimit = sqlite3Expr(pParse->db, TK_INTEGER, "1");
106928 107151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSel->pLimit = sqlite3PExpr(pParse, TK_LIMIT, pLimit, 0);
@@ -107432,11 +107655,11 @@
107432 107655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 p5 /* P5 value for OP_Column + FLAGS */
107433 107656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
107434 107657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->pVdbe!=0 );
107435 107658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeGetColumnOfTable(pParse->pVdbe, pTab, iTable, iColumn, iReg);
107436 107659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p5 ){
107437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeOp *pOp = sqlite3VdbeGetOp(pParse->pVdbe,-1);
107660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeOp *pOp = sqlite3VdbeGetLastOp(pParse->pVdbe);
107438 107661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->opcode==OP_Column ) pOp->p5 = p5;
107439 107662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107440 107663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return iReg;
107441 107664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107442 107665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -107501,11 +107724,11 @@
107501 107724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
107502 107725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the last opcode is a OP_Copy, then set the do-not-merge flag (p5)
107503 107726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** so that a subsequent copy will not be merged into this one.
107504 107727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
107505 107728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void setDoNotMergeFlagOnCopy(Vdbe *v){
107506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3VdbeGetOp(v, -1)->opcode==OP_Copy ){
107729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3VdbeGetLastOp(v)->opcode==OP_Copy ){
107507 107730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, 1); /* Tag trailing OP_Copy as not mergable */
107508 107731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107509 107732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107510 107733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
107511 107734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -107672,11 +107895,11 @@
107672 107895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = pCol->pTab;
107673 107896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, pAggInfo->sortingIdxPTab,
107674 107897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iSorterColumn, target);
107675 107898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->iColumn<0 ){
107676 107899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v,"%s.rowid",pTab->zName));
107677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
107900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( ALWAYS(pTab!=0) ){
107678 107901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v,"%s.%s",
107679 107902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->zName, pTab->aCol[pCol->iColumn].zCnName));
107680 107903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->aCol[pCol->iColumn].affinity==SQLITE_AFF_REAL ){
107681 107904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_RealAffinity, target);
107682 107905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -108267,10 +108490,25 @@
108267 108490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on a LEFT JOIN NULL row.
108268 108491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
108269 108492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IF_NULL_ROW: {
108270 108493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrINR;
108271 108494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 okConstFactor = pParse->okConstFactor;
108495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AggInfo *pAggInfo = pExpr->pAggInfo;
108496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pAggInfo ){
108497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->iAgg>=0 && pExpr->iAgg<pAggInfo->nColumn );
108498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !pAggInfo->directMode ){
108499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ inReg = pAggInfo->aCol[pExpr->iAgg].iMem;
108500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
108501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
108502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->pAggInfo->useSortingIdx ){
108503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Column, pAggInfo->sortingIdxPTab,
108504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pAggInfo->aCol[pExpr->iAgg].iSorterColumn,
108505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ target);
108506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ inReg = target;
108507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
108508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
108509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
108272 108510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrINR = sqlite3VdbeAddOp1(v, OP_IfNullRow, pExpr->iTable);
108273 108511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Temporarily disable factoring of constant expressions, since
108274 108512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** even though expressions may appear to be constant, they are not
108275 108513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** really constant because they originate from the right-hand side
108276 108514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of a LEFT JOIN. */
@@ -108608,11 +108846,11 @@
108608 108846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
108609 108847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int inReg = sqlite3ExprCodeTarget(pParse, pExpr, target+i);
108610 108848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( inReg!=target+i ){
108611 108849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp;
108612 108850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( copyOp==OP_Copy
108613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (pOp=sqlite3VdbeGetOp(v, -1))->opcode==OP_Copy
108851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pOp=sqlite3VdbeGetLastOp(v))->opcode==OP_Copy
108614 108852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pOp->p1+pOp->p3+1==inReg
108615 108853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pOp->p2+pOp->p3+1==target+i
108616 108854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pOp->p5==0 /* The do-not-merge flag must be clear */
108617 108855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
108618 108856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p3++;
@@ -109644,10 +109882,11 @@
109644 109882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fact is exploited for efficiency.
109645 109883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
109646 109884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ReferencesSrcList(Parse *pParse, Expr *pExpr, SrcList *pSrcList){
109647 109885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Walker w;
109648 109886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct RefSrcList x;
109887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->db!=0 );
109649 109888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&w, 0, sizeof(w));
109650 109889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&x, 0, sizeof(x));
109651 109890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
w.xExprCallback = exprRefToSrcList;
109652 109891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
w.xSelectCallback = selectRefEnter;
109653 109892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
w.xSelectCallback2 = selectRefLeave;
@@ -109660,11 +109899,11 @@
109660 109899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
109661 109900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_WinFunc) ){
109662 109901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkExpr(&w, pExpr->y.pWin->pFilter);
109663 109902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109664 109903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
109665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(pParse->db, x.aiExclude);
109904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( x.aiExclude ) sqlite3DbNNFreeNN(pParse->db, x.aiExclude);
109666 109905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( w.eCode & 0x01 ){
109667 109906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
109668 109907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( w.eCode ){
109669 109908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
109670 109909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -109691,21 +109930,22 @@
109691 109930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
109692 109931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AggInfo *pAggInfo = pExpr->pAggInfo;
109693 109932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iAgg = pExpr->iAgg;
109694 109933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse = pWalker->pParse;
109695 109934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
109696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pExpr->op==TK_AGG_COLUMN || pExpr->op==TK_AGG_FUNCTION );
109697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->op==TK_AGG_COLUMN ){
109935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op!=TK_AGG_FUNCTION ){
109936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->op==TK_AGG_COLUMN || pExpr->op==TK_IF_NULL_ROW );
109698 109937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iAgg>=0 && iAgg<pAggInfo->nColumn );
109699 109938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAggInfo->aCol[iAgg].pCExpr==pExpr ){
109700 109939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = sqlite3ExprDup(db, pExpr, 0);
109701 109940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr ){
109702 109941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pAggInfo->aCol[iAgg].pCExpr = pExpr;
109703 109942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDeferredDelete(pParse, pExpr);
109704 109943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109705 109944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109706 109945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
109946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->op==TK_AGG_FUNCTION );
109707 109947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iAgg>=0 && iAgg<pAggInfo->nFunc );
109708 109948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAggInfo->aFunc[iAgg].pFExpr==pExpr ){
109709 109949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = sqlite3ExprDup(db, pExpr, 0);
109710 109950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr ){
109711 109951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pAggInfo->aFunc[iAgg].pFExpr = pExpr;
@@ -109772,14 +110012,16 @@
109772 110012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrcList = pNC->pSrcList;
109773 110013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AggInfo *pAggInfo = pNC->uNC.pAggInfo;
109774 110014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
109775 110015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNC->ncFlags & NC_UAggInfo );
109776 110016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( pExpr->op ){
110017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case TK_IF_NULL_ROW:
109777 110018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_AGG_COLUMN:
109778 110019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_COLUMN: {
109779 110020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_AGG_COLUMN );
109780 110021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_COLUMN );
110022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pExpr->op==TK_IF_NULL_ROW );
109781 110023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check to see if the column is in one of the tables in the FROM
109782 110024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** clause of the aggregate query */
109783 110025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pSrcList!=0) ){
109784 110026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem = pSrcList->a;
109785 110027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pSrcList->nSrc; i++, pItem++){
@@ -109793,12 +110035,14 @@
109793 110035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is not an entry there already.
109794 110036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
109795 110037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int k;
109796 110038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol = pAggInfo->aCol;
109797 110039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(k=0; k<pAggInfo->nColumn; k++, pCol++){
109798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pCol->iTable==pExpr->iTable &&
109799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCol->iColumn==pExpr->iColumn ){
110040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCol->iTable==pExpr->iTable
110041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pCol->iColumn==pExpr->iColumn
110042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pExpr->op!=TK_IF_NULL_ROW
110043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
109800 110044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
109801 110045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109802 110046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109803 110047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (k>=pAggInfo->nColumn)
109804 110048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (k = addAggInfoColumn(pParse->db, pAggInfo))>=0
@@ -109809,19 +110053,21 @@
109809 110053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iTable = pExpr->iTable;
109810 110054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iColumn = pExpr->iColumn;
109811 110055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iMem = ++pParse->nMem;
109812 110056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iSorterColumn = -1;
109813 110057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->pCExpr = pExpr;
109814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pAggInfo->pGroupBy ){
110058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pAggInfo->pGroupBy && pExpr->op!=TK_IF_NULL_ROW ){
109815 110059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j, n;
109816 110060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pGB = pAggInfo->pGroupBy;
109817 110061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct ExprList_item *pTerm = pGB->a;
109818 110062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pGB->nExpr;
109819 110063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<n; j++, pTerm++){
109820 110064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pE = pTerm->pExpr;
109821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pE->op==TK_COLUMN && pE->iTable==pExpr->iTable &&
109822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pE->iColumn==pExpr->iColumn ){
110065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pE->op==TK_COLUMN
110066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pE->iTable==pExpr->iTable
110067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pE->iColumn==pExpr->iColumn
110068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
109823 110069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iSorterColumn = j;
109824 110070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
109825 110071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109826 110072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109827 110073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -109834,11 +110080,13 @@
109834 110080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Convert the pExpr to be a TK_AGG_COLUMN referring to that
109835 110081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pAggInfo->aCol[] entry.
109836 110082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
109837 110083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetVVAProperty(pExpr, EP_NoReduce);
109838 110084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pAggInfo = pAggInfo;
109839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pExpr->op = TK_AGG_COLUMN;
110085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op==TK_COLUMN ){
110086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->op = TK_AGG_COLUMN;
110087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
109840 110088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iAgg = (i16)k;
109841 110089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
109842 110090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} /* endif pExpr->iTable==pItem->iCursor */
109843 110091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} /* end loop over pSrcList */
109844 110092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -115256,10 +115504,11 @@
115256 115504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** no VDBE code was generated.
115257 115505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
115258 115506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
115259 115507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db;
115260 115508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v;
115509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iDb, i;
115261 115510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115262 115511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->pToplevel==0 );
115263 115512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db = pParse->db;
115264 115513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db->pParse==pParse );
115265 115514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nested ) return;
@@ -115285,11 +115534,10 @@
115285 115534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| sqlite3VdbeAssertMayAbort(v, pParse->mayAbort));
115286 115535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( v ){
115287 115536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->bReturning ){
115288 115537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Returning *pReturning = pParse->u1.pReturning;
115289 115538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrRewind;
115290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
115291 115539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int reg;
115292 115540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115293 115541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pReturning->nRetCol ){
115294 115542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp0(v, OP_FkCheck);
115295 115543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrRewind =
@@ -115322,80 +115570,73 @@
115322 115570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (Bit 0 is for main, bit 1 is for temp, and so forth.) Bits are
115323 115571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** set for each database that is used. Generate code to start a
115324 115572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** transaction on each used database and to verify the schema cookie
115325 115573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on each used database.
115326 115574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
115327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db->mallocFailed==0
115328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (DbMaskNonZero(pParse->cookieMask) || pParse->pConstExpr)
115329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
115330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iDb, i;
115331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3VdbeGetOp(v, 0)->opcode==OP_Init );
115332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, 0);
115333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( db->nDb>0 );
115334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iDb = 0;
115335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- do{
115336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Schema *pSchema;
115337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( DbMaskTest(pParse->cookieMask, iDb)==0 ) continue;
115338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeUsesBtree(v, iDb);
115339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pSchema = db->aDb[iDb].pSchema;
115340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4Int(v,
115341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OP_Transaction, /* Opcode */
115342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iDb, /* P1 */
115343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- DbMaskTest(pParse->writeMask,iDb), /* P2 */
115344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pSchema->schema_cookie, /* P3 */
115345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pSchema->iGeneration /* P4 */
115346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
115347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db->init.busy==0 ) sqlite3VdbeChangeP5(v, 1);
115348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v,
115349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "usesStmtJournal=%d", pParse->mayAbort && pParse->isMultiWrite));
115350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }while( ++iDb<db->nDb );
115575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->nErr>0 || sqlite3VdbeGetOp(v, 0)->opcode==OP_Init );
115576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, 0);
115577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db->nDb>0 );
115578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iDb = 0;
115579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ do{
115580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Schema *pSchema;
115581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( DbMaskTest(pParse->cookieMask, iDb)==0 ) continue;
115582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeUsesBtree(v, iDb);
115583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSchema = db->aDb[iDb].pSchema;
115584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4Int(v,
115585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OP_Transaction, /* Opcode */
115586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iDb, /* P1 */
115587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DbMaskTest(pParse->writeMask,iDb), /* P2 */
115588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSchema->schema_cookie, /* P3 */
115589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSchema->iGeneration /* P4 */
115590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
115591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->init.busy==0 ) sqlite3VdbeChangeP5(v, 1);
115592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v,
115593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "usesStmtJournal=%d", pParse->mayAbort && pParse->isMultiWrite));
115594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }while( ++iDb<db->nDb );
115351 115595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
115352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<pParse->nVtabLock; i++){
115353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *vtab = (char *)sqlite3GetVTable(db, pParse->apVtabLock[i]);
115354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4(v, OP_VBegin, 0, 0, 0, vtab, P4_VTAB);
115355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
115356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->nVtabLock = 0;
115596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<pParse->nVtabLock; i++){
115597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *vtab = (char *)sqlite3GetVTable(db, pParse->apVtabLock[i]);
115598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_VBegin, 0, 0, 0, vtab, P4_VTAB);
115599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->nVtabLock = 0;
115357 115601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
115358 115602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Once all the cookies have been verified and transactions opened,
115360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** obtain the required table-locks. This is a no-op unless the
115361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** shared-cache feature is enabled.
115362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
115363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- codeTableLocks(pParse);
115364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
115365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Initialize any AUTOINCREMENT data structures required.
115366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
115367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3AutoincrementBegin(pParse);
115368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
115369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Code constant expressions that where factored out of inner loops.
115370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
115371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The pConstExpr list might also contain expressions that we simply
115372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** want to keep around until the Parse object is deleted. Such
115373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** expressions have iConstExprReg==0. Do not generate code for
115374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** those expressions, of course.
115375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
115376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pParse->pConstExpr ){
115377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pEL = pParse->pConstExpr;
115378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->okConstFactor = 0;
115379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<pEL->nExpr; i++){
115380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iReg = pEL->a[i].u.iConstExprReg;
115381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iReg>0 ){
115382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprCode(pParse, pEL->a[i].pExpr, iReg);
115383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
115384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
115385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
115386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
115387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pParse->bReturning ){
115388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Returning *pRet = pParse->u1.pReturning;
115389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pRet->nRetCol ){
115390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol);
115391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
115392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
115393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
115394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Finally, jump back to the beginning of the executable code. */
115395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeGoto(v, 1);
115396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
115603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Once all the cookies have been verified and transactions opened,
115604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** obtain the required table-locks. This is a no-op unless the
115605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** shared-cache feature is enabled.
115606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
115607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ codeTableLocks(pParse);
115608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
115609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Initialize any AUTOINCREMENT data structures required.
115610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
115611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3AutoincrementBegin(pParse);
115612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
115613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Code constant expressions that where factored out of inner loops.
115614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
115615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The pConstExpr list might also contain expressions that we simply
115616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** want to keep around until the Parse object is deleted. Such
115617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** expressions have iConstExprReg==0. Do not generate code for
115618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** those expressions, of course.
115619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
115620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->pConstExpr ){
115621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pEL = pParse->pConstExpr;
115622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->okConstFactor = 0;
115623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<pEL->nExpr; i++){
115624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iReg = pEL->a[i].u.iConstExprReg;
115625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprCode(pParse, pEL->a[i].pExpr, iReg);
115626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
115629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->bReturning ){
115630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Returning *pRet = pParse->u1.pReturning;
115631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRet->nRetCol ){
115632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol);
115633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
115636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Finally, jump back to the beginning of the executable code. */
115637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeGoto(v, 1);
115397 115638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115398 115639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115399 115640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Get the VDBE program ready for execution
115400 115641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
115401 115642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( v!=0 || pParse->nErr );
@@ -115898,20 +116139,21 @@
115898 116139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
115899 116140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3DeleteColumnNames(sqlite3 *db, Table *pTable){
115900 116141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
115901 116142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Column *pCol;
115902 116143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTable!=0 );
116144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
115903 116145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pCol = pTable->aCol)!=0 ){
115904 116146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pTable->nCol; i++, pCol++){
115905 116147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCol->zCnName==0 || pCol->hName==sqlite3StrIHash(pCol->zCnName) );
115906 116148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pCol->zCnName);
115907 116149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, pTable->aCol);
116150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, pTable->aCol);
115909 116151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IsOrdinaryTable(pTable) ){
115910 116152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pTable->u.tab.pDfltList);
115911 116153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db==0 || db->pnBytesFreed==0 ){
116154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->pnBytesFreed==0 ){
115913 116155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTable->aCol = 0;
115914 116156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTable->nCol = 0;
115915 116157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IsOrdinaryTable(pTable) ){
115916 116158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTable->u.tab.pDfltList = 0;
115917 116159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -115944,21 +116186,22 @@
115944 116186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
115945 116187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If malloc has already failed, it may be that it failed while allocating
115946 116188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a Table object that was going to be marked ephemeral. So do not check
115947 116189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that no lookaside memory is used in this case either. */
115948 116190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nLookaside = 0;
115949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db && !db->mallocFailed && (pTable->tabFlags & TF_Ephemeral)==0 ){
116191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
116192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !db->mallocFailed && (pTable->tabFlags & TF_Ephemeral)==0 ){
115950 116193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nLookaside = sqlite3LookasideUsed(db, 0);
115951 116194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115952 116195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
115953 116196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115954 116197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Delete all indices associated with this table. */
115955 116198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pIndex = pTable->pIndex; pIndex; pIndex=pNext){
115956 116199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNext = pIndex->pNext;
115957 116200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIndex->pSchema==pTable->pSchema
115958 116201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (IsVirtual(pTable) && pIndex->idxType!=SQLITE_IDXTYPE_APPDEF) );
115959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (db==0 || db->pnBytesFreed==0) && !IsVirtual(pTable) ){
116202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->pnBytesFreed==0 && !IsVirtual(pTable) ){
115960 116203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zName = pIndex->zName;
115961 116204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TESTONLY ( Index *pOld = ) sqlite3HashInsert(
115962 116205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&pIndex->pSchema->idxHash, zName, 0
115963 116206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
115964 116207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) );
@@ -115991,12 +116234,13 @@
115991 116234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Verify that no lookaside memory was used by schema tables */
115992 116235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nLookaside==0 || nLookaside==sqlite3LookasideUsed(db,0) );
115993 116236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115994 116237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3DeleteTable(sqlite3 *db, Table *pTable){
115995 116238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do not delete the table until the reference count reaches zero. */
116239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
115996 116240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pTable ) return;
115997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ((!db || db->pnBytesFreed==0) && (--pTable->nTabRef)>0) ) return;
116241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->pnBytesFreed==0 && (--pTable->nTabRef)>0 ) return;
115998 116242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
deleteTable(db, pTable);
115999 116243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116000 116244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
116001 116245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
116002 116246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -118165,11 +118409,11 @@
118165 118409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
118166 118410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The Table structure pTable is really a VIEW. Fill in the names of
118167 118411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the columns of the view in the pTable structure. Return the number
118168 118412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of errors. If an error is seen leave an error message in pParse->zErrMsg.
118169 118413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
118170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
118414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static SQLITE_NOINLINE int viewGetColumnNames(Parse *pParse, Table *pTable){
118171 118415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pSelTab; /* A fake table from which we get the result set */
118172 118416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pSel; /* Copy of the SELECT that implements the view */
118173 118417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nErr = 0; /* Number of errors encountered */
118174 118418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db; /* Database connection for malloc errors */
118175 118419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
@@ -118190,13 +118434,14 @@
118190 118434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
118191 118435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
118192 118436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118193 118437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIEW
118194 118438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A positive nCol means the columns names for this view are
118195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** already known.
118439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** already known. This routine is not called unless either the
118440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** table is virtual or nCol is zero.
118196 118441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
118197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTable->nCol>0 ) return 0;
118442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTable->nCol<=0 );
118198 118443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118199 118444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A negative nCol is a special marker meaning that we are currently
118200 118445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** trying to compute the column names. If we enter this routine with
118201 118446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a negative nCol, it means two or more views form a loop, like this:
118202 118447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -118287,10 +118532,15 @@
118287 118532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ){
118288 118533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DeleteColumnNames(db, pTable);
118289 118534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
118290 118535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_VIEW */
118291 118536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return nErr;
118537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
118538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
118539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTable!=0 );
118540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !IsVirtual(pTable) && pTable->nCol>0 ) return 0;
118541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return viewGetColumnNames(pParse, pTable);
118292 118542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
118293 118543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE) */
118294 118544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118295 118545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIEW
118296 118546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -119153,11 +119403,11 @@
119153 119403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName,"index",pTab->zName) ){
119154 119404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto exit_create_index;
119155 119405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119156 119406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !IN_RENAME_OBJECT ){
119157 119407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db->init.busy ){
119158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3FindTable(db, zName, 0)!=0 ){
119408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3FindTable(db, zName, pDb->zDbSName)!=0 ){
119159 119409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "there is already a table named %s", zName);
119160 119410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto exit_create_index;
119161 119411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119162 119412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119163 119413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3FindIndex(db, zName, pDb->zDbSName)!=0 ){
@@ -119806,16 +120056,17 @@
119806 120056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
119807 120057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Delete an IdList.
119808 120058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
119809 120059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3IdListDelete(sqlite3 *db, IdList *pList){
119810 120060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
120061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
119811 120062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pList==0 ) return;
119812 120063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pList->eU4!=EU4_EXPR ); /* EU4_EXPR mode is not currently used */
119813 120064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pList->nId; i++){
119814 120065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pList->a[i].zName);
119815 120066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, pList);
120067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, pList);
119817 120068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119818 120069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
119819 120070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
119820 120071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the index in pList of the identifier named zId. Return -1
119821 120072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if not found.
@@ -120014,15 +120265,16 @@
120014 120265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Delete an entire SrcList including all its substructure.
120015 120266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
120016 120267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3SrcListDelete(sqlite3 *db, SrcList *pList){
120017 120268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
120018 120269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem;
120270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
120019 120271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pList==0 ) return;
120020 120272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pItem=pList->a, i=0; i<pList->nSrc; i++, pItem++){
120021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pItem->zDatabase ) sqlite3DbFreeNN(db, pItem->zDatabase);
120022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, pItem->zName);
120023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pItem->zAlias ) sqlite3DbFreeNN(db, pItem->zAlias);
120273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->zDatabase ) sqlite3DbNNFreeNN(db, pItem->zDatabase);
120274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->zName ) sqlite3DbNNFreeNN(db, pItem->zName);
120275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pItem->zAlias ) sqlite3DbNNFreeNN(db, pItem->zAlias);
120024 120276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isIndexedBy ) sqlite3DbFree(db, pItem->u1.zIndexedBy);
120025 120277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isTabFunc ) sqlite3ExprListDelete(db, pItem->u1.pFuncArg);
120026 120278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DeleteTable(db, pItem->pTab);
120027 120279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->pSelect ) sqlite3SelectDelete(db, pItem->pSelect);
120028 120280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isUsing ){
@@ -120029,11 +120281,11 @@
120029 120281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3IdListDelete(db, pItem->u3.pUsing);
120030 120282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pItem->u3.pOn ){
120031 120283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pItem->u3.pOn);
120032 120284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
120033 120285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
120034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, pList);
120286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, pList);
120035 120287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
120036 120288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
120037 120289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
120038 120290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is called by the parser to add a new term to the
120039 120291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** end of a growing FROM clause. The "p" parameter is the part of
@@ -121281,23 +121533,25 @@
121281 121533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3SchemaClear(void *p){
121282 121534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Hash temp1;
121283 121535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Hash temp2;
121284 121536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HashElem *pElem;
121285 121537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Schema *pSchema = (Schema *)p;
121538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 xdb;
121286 121539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
121540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&xdb, 0, sizeof(xdb));
121287 121541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
temp1 = pSchema->tblHash;
121288 121542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
temp2 = pSchema->trigHash;
121289 121543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3HashInit(&pSchema->trigHash);
121290 121544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3HashClear(&pSchema->idxHash);
121291 121545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pElem=sqliteHashFirst(&temp2); pElem; pElem=sqliteHashNext(pElem)){
121292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DeleteTrigger(0, (Trigger*)sqliteHashData(pElem));
121546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DeleteTrigger(&xdb, (Trigger*)sqliteHashData(pElem));
121293 121547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121294 121548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3HashClear(&temp2);
121295 121549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3HashInit(&pSchema->tblHash);
121296 121550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pElem=sqliteHashFirst(&temp1); pElem; pElem=sqliteHashNext(pElem)){
121297 121551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = sqliteHashData(pElem);
121298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DeleteTable(0, pTab);
121552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DeleteTable(&xdb, pTab);
121299 121553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121300 121554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3HashClear(&temp1);
121301 121555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3HashClear(&pSchema->fkeyHash);
121302 121556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSchema->pSeqTab = 0;
121303 121557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSchema->schemaFlags & DB_SchemaLoaded ){
@@ -121392,22 +121646,46 @@
121392 121646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A table is read-only if any of the following are true:
121393 121647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
121394 121648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 1) It is a virtual table and no implementation of the xUpdate method
121395 121649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** has been provided
121396 121650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
121397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 2) It is a system table (i.e. sqlite_schema), this call is not
121651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2) A trigger is currently being coded and the table is a virtual table
121652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that is SQLITE_VTAB_DIRECTONLY or if PRAGMA trusted_schema=OFF and
121653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the table is not SQLITE_VTAB_INNOCUOUS.
121654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
121655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 3) It is a system table (i.e. sqlite_schema), this call is not
121398 121656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** part of a nested parse and writable_schema pragma has not
121399 121657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** been specified
121400 121658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
121401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 3) The table is a shadow table, the database connection is in
121659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 4) The table is a shadow table, the database connection is in
121402 121660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** defensive mode, and the current sqlite3_prepare()
121403 121661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is for a top-level SQL statement.
121404 121662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
121663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int vtabIsReadOnly(Parse *pParse, Table *pTab){
121664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3GetVTable(pParse->db, pTab)->pMod->pModule->xUpdate==0 ){
121665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
121666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
121667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
121668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Within triggers:
121669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** * Do not allow DELETE, INSERT, or UPDATE of SQLITE_VTAB_DIRECTONLY
121670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** virtual tables
121671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** * Only allow DELETE, INSERT, or UPDATE of non-SQLITE_VTAB_INNOCUOUS
121672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** virtual tables if PRAGMA trusted_schema=ON.
121673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
121674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->pToplevel!=0
121675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pTab->u.vtab.p->eVtabRisk >
121676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((pParse->db->flags & SQLITE_TrustedSchema)!=0)
121677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
121678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ErrorMsg(pParse, "unsafe use of virtual table \"%s\"",
121679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->zName);
121680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
121681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
121682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
121405 121683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int tabIsReadOnly(Parse *pParse, Table *pTab){
121406 121684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db;
121407 121685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IsVirtual(pTab) ){
121408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return sqlite3GetVTable(pParse->db, pTab)->pMod->pModule->xUpdate==0;
121686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return vtabIsReadOnly(pParse, pTab);
121409 121687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121410 121688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTab->tabFlags & (TF_Readonly|TF_Shadow))==0 ) return 0;
121411 121689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db = pParse->db;
121412 121690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTab->tabFlags & TF_Readonly)!=0 ){
121413 121691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3WritableSchema(db)==0 && pParse->nested==0;
@@ -121415,13 +121693,15 @@
121415 121693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab->tabFlags & TF_Shadow );
121416 121694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ReadOnlyShadowTables(db);
121417 121695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121418 121696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
121419 121697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
121420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Check to make sure the given table is writable. If it is not
121421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** writable, generate an error message and return 1. If it is
121422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** writable return 0;
121698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Check to make sure the given table is writable.
121699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
121700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If pTab is not writable -> generate an error message and return 1.
121701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If pTab is writable but other errors have occurred -> return 1.
121702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If pTab is writable and no prior errors -> return 0;
121423 121703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
121424 121704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3IsReadOnly(Parse *pParse, Table *pTab, int viewOk){
121425 121705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tabIsReadOnly(pParse, pTab) ){
121426 121706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "table %s may not be modified", pTab->zName);
121427 121707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
@@ -121778,13 +122058,14 @@
121778 122058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Clear, pTab->tnum, iDb, memCnt ? memCnt : -1,
121779 122059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->zName, P4_STATIC);
121780 122060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121781 122061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
121782 122062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIdx->pSchema==pTab->pSchema );
121783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Clear, pIdx->tnum, iDb);
121784 122063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){
121785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP3(v, -1, memCnt ? memCnt : -1);
122064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Clear, pIdx->tnum, iDb, memCnt ? memCnt : -1);
122065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
122066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Clear, pIdx->tnum, iDb);
121786 122067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121787 122068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121788 122069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
121789 122070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_TRUNCATE_OPTIMIZATION */
121790 122071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
@@ -121980,11 +122261,11 @@
121980 122261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pWhere);
121981 122262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT)
121982 122263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pOrderBy);
121983 122264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pLimit);
121984 122265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
121985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, aToOpen);
122266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( aToOpen ) sqlite3DbNNFreeNN(db, aToOpen);
121986 122267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
121987 122268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121988 122269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make sure "isView" and other macros defined above are undefined. Otherwise
121989 122270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** they may interfere with compilation of other functions in this file
121990 122271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (or in another file, if this file becomes part of the amalgamation). */
@@ -126148,15 +126429,16 @@
126148 126429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3FkDelete(sqlite3 *db, Table *pTab){
126149 126430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *pFKey; /* Iterator variable */
126150 126431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *pNext; /* Copy of pFKey->pNextFrom */
126151 126432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
126152 126433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( IsOrdinaryTable(pTab) );
126434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
126153 126435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pNext){
126154 126436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
126155 126437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
126156 126438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Remove the FK from the fkeyHash hash table. */
126157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !db || db->pnBytesFreed==0 ){
126439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->pnBytesFreed==0 ){
126158 126440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFKey->pPrevTo ){
126159 126441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFKey->pPrevTo->pNextTo = pFKey->pNextTo;
126160 126442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
126161 126443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *p = (void *)pFKey->pNextTo;
126162 126444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z = (p ? pFKey->pNextTo->zTo : pFKey->zTo);
@@ -126345,11 +126627,11 @@
126345 126627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Move the previous opcode (which should be OP_MakeRecord) forward
126346 126628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by one slot and insert a new OP_TypeCheck where the current
126347 126629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_MakeRecord is found */
126348 126630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pPrev;
126349 126631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
126350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPrev = sqlite3VdbeGetOp(v, -1);
126632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPrev = sqlite3VdbeGetLastOp(v);
126351 126633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPrev!=0 );
126352 126634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPrev->opcode==OP_MakeRecord || sqlite3VdbeDb(v)->mallocFailed );
126353 126635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrev->opcode = OP_TypeCheck;
126354 126636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_MakeRecord, pPrev->p1, pPrev->p2, pPrev->p3);
126355 126637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -126383,11 +126665,11 @@
126383 126665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i = sqlite3Strlen30NN(zColAff);
126384 126666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i ){
126385 126667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iReg ){
126386 126668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Affinity, iReg, i, 0, zColAff, i);
126387 126669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
126388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3VdbeGetOp(v, -1)->opcode==OP_MakeRecord
126670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3VdbeGetLastOp(v)->opcode==OP_MakeRecord
126389 126671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| sqlite3VdbeDb(v)->mallocFailed );
126390 126672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP4(v, -1, zColAff, i);
126391 126673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
126392 126674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
126393 126675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -126469,11 +126751,11 @@
126469 126751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Before computing generated columns, first go through and make sure
126470 126752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that appropriate affinity has been applied to the regular columns
126471 126753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
126472 126754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableAffinity(pParse->pVdbe, pTab, iRegStore);
126473 126755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTab->tabFlags & TF_HasStored)!=0 ){
126474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pOp = sqlite3VdbeGetOp(pParse->pVdbe,-1);
126756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp = sqlite3VdbeGetLastOp(pParse->pVdbe);
126475 126757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->opcode==OP_Affinity ){
126476 126758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Change the OP_Affinity argument to '@' (NONE) for all stored
126477 126759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** columns. '@' is the no-op affinity and those columns have not
126478 126760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** yet been computed. */
126479 126761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii, jj;
@@ -127375,11 +127657,16 @@
127375 127657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pSelect ){
127376 127658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( regFromSelect!=regData ){
127377 127659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SCopy, regFromSelect+k, iRegStore);
127378 127660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
127379 127661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
127380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprCode(pParse, pList->a[k].pExpr, iRegStore);
127662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pX = pList->a[k].pExpr;
127663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int y = sqlite3ExprCodeTarget(pParse, pX, iRegStore);
127664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( y!=iRegStore ){
127665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v,
127666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprHasProperty(pX, EP_Subquery) ? OP_Copy : OP_SCopy, y, iRegStore);
127667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
127381 127668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
127382 127669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
127383 127670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
127384 127671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
127385 127672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Run the BEFORE and INSTEAD OF triggers, if there are any
@@ -127512,11 +127799,13 @@
127512 127799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isReplace = 0;/* Set to true if constraints may cause a replace */
127513 127800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bUseSeek; /* True to use OPFLAG_SEEKRESULT */
127514 127801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3GenerateConstraintChecks(pParse, pTab, aRegIdx, iDataCur, iIdxCur,
127515 127802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regIns, 0, ipkColumn>=0, onError, endOfLoop, &isReplace, 0, pUpsert
127516 127803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
127517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3FkCheck(pParse, pTab, 0, regIns, 0, 0);
127804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->flags & SQLITE_ForeignKeys ){
127805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3FkCheck(pParse, pTab, 0, regIns, 0, 0);
127806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
127518 127807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
127519 127808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Set the OPFLAG_USESEEKRESULT flag if either (a) there are no REPLACE
127520 127809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** constraints or (b) there are no triggers and this table is not a
127521 127810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parent table in a foreign key constraint. It is safe to set the
127522 127811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** flag in the second case as if any REPLACE constraint is hit, an
@@ -127596,11 +127885,11 @@
127596 127885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcListDelete(db, pTabList);
127597 127886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pList);
127598 127887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3UpsertDelete(db, pUpsert);
127599 127888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(db, pSelect);
127600 127889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3IdListDelete(db, pColumn);
127601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, aRegIdx);
127890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( aRegIdx ) sqlite3DbNNFreeNN(db, aRegIdx);
127602 127891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
127603 127892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
127604 127893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make sure "isView" and other macros defined above are undefined. Otherwise
127605 127894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** they may interfere with compilation of other functions in this file
127606 127895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (or in another file, if this file becomes part of the amalgamation). */
@@ -132702,19 +132991,21 @@
132702 132991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Setting to a null string reverts to the default temporary directory search.
132703 132992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If temporary directory is changed, then invalidateTempStorage.
132704 132993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
132705 132994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
132706 132995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PragTyp_TEMP_STORE_DIRECTORY: {
132996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
132707 132997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !zRight ){
132708 132998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
returnSingleText(v, sqlite3_temp_directory);
132709 132999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
132710 133000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WSD
132711 133001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRight[0] ){
132712 133002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int res;
132713 133003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3OsAccess(db->pVfs, zRight, SQLITE_ACCESS_READWRITE, &res);
132714 133004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK || res==0 ){
132715 133005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "not a writable directory");
133006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
132716 133007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto pragma_out;
132717 133008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132718 133009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132719 133010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( SQLITE_TEMP_STORE==0
132720 133011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (SQLITE_TEMP_STORE==1 && db->temp_store<=1)
@@ -132728,10 +133019,11 @@
132728 133019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
132729 133020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_temp_directory = 0;
132730 133021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132731 133022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_WSD */
132732 133023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
132733 133025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
132734 133026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132735 133027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
132736 133028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_OS_WIN
132737 133029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -132746,19 +133038,21 @@
132746 133038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** process. Database file specified with an absolute path are not impacted
132747 133039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by this setting, regardless of its value.
132748 133040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
132749 133041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
132750 133042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PragTyp_DATA_STORE_DIRECTORY: {
133043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
132751 133044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !zRight ){
132752 133045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
returnSingleText(v, sqlite3_data_directory);
132753 133046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
132754 133047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WSD
132755 133048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRight[0] ){
132756 133049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int res;
132757 133050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3OsAccess(db->pVfs, zRight, SQLITE_ACCESS_READWRITE, &res);
132758 133051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK || res==0 ){
132759 133052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "not a writable directory");
133053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
132760 133054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto pragma_out;
132761 133055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132762 133056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132763 133057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(sqlite3_data_directory);
132764 133058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRight[0] ){
@@ -132766,10 +133060,11 @@
132766 133060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
132767 133061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_data_directory = 0;
132768 133062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132769 133063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_WSD */
132770 133064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
132771 133066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
132772 133067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132773 133068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
132774 133069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
132775 133070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_ENABLE_LOCKING_STYLE
@@ -133479,19 +133774,27 @@
133479 133774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make sure all the indices are constructed correctly.
133480 133775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
133481 133776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(x=sqliteHashFirst(pTbls); x; x=sqliteHashNext(x)){
133482 133777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = sqliteHashData(x);
133483 133778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx, *pPk;
133484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Index *pPrior = 0;
133779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Index *pPrior = 0; /* Previous index */
133485 133780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int loopTop;
133486 133781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDataCur, iIdxCur;
133487 133782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r1 = -1;
133488 133783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bStrict;
133784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int r2; /* Previous key for WITHOUT ROWID tables */
133489 133785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
133490 133786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !IsOrdinaryTable(pTab) ) continue;
133491 133787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pObjTab && pObjTab!=pTab ) continue;
133492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
133788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isQuick || HasRowid(pTab) ){
133789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPk = 0;
133790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = 0;
133791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
133792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPk = sqlite3PrimaryKeyIndex(pTab);
133793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = sqlite3GetTempRange(pParse, pPk->nKeyCol);
133794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Null, 1, r2, r2+pPk->nKeyCol-1);
133795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
133493 133796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenRead, 0,
133494 133797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1, 0, &iDataCur, &iIdxCur);
133495 133798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* reg[7] counts the number of entries in the table.
133496 133799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** reg[8+i] counts the number of entries in the i-th index
133497 133800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -133506,10 +133809,28 @@
133506 133809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !isQuick ){
133507 133810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Sanity check on record header decoding */
133508 133811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, iDataCur, pTab->nNVCol-1,3);
133509 133812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
133510 133813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "(right-most column)"));
133814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pPk ){
133815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Verify WITHOUT ROWID keys are in ascending order */
133816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int a1;
133817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zErr;
133818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ a1 = sqlite3VdbeAddOp4Int(v, OP_IdxGT, iDataCur, 0,r2,pPk->nKeyCol);
133819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
133820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_IsNull, r2); VdbeCoverage(v);
133821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zErr = sqlite3MPrintf(db,
133822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "row not in PRIMARY KEY order for %s",
133823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->zName);
133824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
133825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ integrityCheckResultRow(v);
133826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, a1);
133827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, a1+1);
133828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(j=0; j<pPk->nKeyCol; j++){
133829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprCodeLoadIndexColumn(pParse, pPk, iDataCur, j, r2+j);
133830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
133831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
133511 133832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133512 133833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Verify that all NOT NULL columns really are NOT NULL. At the
133513 133834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** same time verify the type of the content of STRICT tables */
133514 133835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bStrict = (pTab->tabFlags & TF_Strict)!=0;
133515 133836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<pTab->nCol; j++){
@@ -133518,11 +133839,11 @@
133518 133839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int doError, jmp2;
133519 133840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j==pTab->iPKey ) continue;
133520 133841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->notNull==0 && !bStrict ) continue;
133521 133842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
doError = bStrict ? sqlite3VdbeMakeLabel(pParse) : 0;
133522 133843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, j, 3);
133523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3VdbeGetOp(v,-1)->opcode==OP_Column ){
133844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3VdbeGetLastOp(v)->opcode==OP_Column ){
133524 133845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
133525 133846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133526 133847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->notNull ){
133527 133848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jmp2 = sqlite3VdbeAddOp1(v, OP_NotNull, 3); VdbeCoverage(v);
133528 133849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName,
@@ -133533,13 +133854,11 @@
133533 133854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
133534 133855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
integrityCheckResultRow(v);
133535 133856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133536 133857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, jmp2);
133537 133858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pTab->tabFlags & TF_Strict)!=0
133539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && pCol->eCType!=COLTYPE_ANY
133540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
133859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bStrict && pCol->eCType!=COLTYPE_ANY ){
133541 133860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jmp2 = sqlite3VdbeAddOp3(v, OP_IsNullOrType, 3, 0,
133542 133861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StdTypeMap[pCol->eCType-1]);
133543 133862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
133544 133863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErr = sqlite3MPrintf(db, "non-%s value in %s.%s",
133545 133864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StdType[pCol->eCType-1],
@@ -133634,10 +133953,13 @@
133634 133953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeLoadString(v, 4, pIdx->zName);
133635 133954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Concat, 4, 2, 3);
133636 133955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
integrityCheckResultRow(v);
133637 133956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr);
133638 133957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pPk ){
133959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ReleaseTempRange(pParse, r2, pPk->nKeyCol);
133960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
133639 133961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133640 133962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133641 133963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133642 133964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
133643 133965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const int iLn = VDBE_OFFSET_LINENO(2);
@@ -135032,19 +135354,19 @@
135032 135354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
135033 135355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db!=0 );
135034 135356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db->pParse==pParse );
135035 135357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->nested==0 );
135036 135358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SHARED_CACHE
135037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, pParse->aTableLock);
135359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->aTableLock ) sqlite3DbNNFreeNN(db, pParse->aTableLock);
135038 135360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
135039 135361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( pParse->pCleanup ){
135040 135362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ParseCleanup *pCleanup = pParse->pCleanup;
135041 135363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->pCleanup = pCleanup->pNext;
135042 135364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCleanup->xCleanup(db, pCleanup->pPtr);
135043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, pCleanup);
135365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, pCleanup);
135044 135366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
135045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, pParse->aLabel);
135367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->aLabel ) sqlite3DbNNFreeNN(db, pParse->aLabel);
135046 135368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->pConstExpr ){
135047 135369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pParse->pConstExpr);
135048 135370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
135049 135371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db->lookaside.bDisable >= pParse->disableLookaside );
135050 135372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.bDisable -= pParse->disableLookaside;
@@ -135599,10 +135921,11 @@
135599 135921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
135600 135922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If bFree==1, call sqlite3DbFree() on the p object.
135601 135923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If bFree==0, Leave the first Select object unfreed
135602 135924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
135603 135925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void clearSelect(sqlite3 *db, Select *p, int bFree){
135926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
135604 135927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( p ){
135605 135928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pPrior = p->pPrior;
135606 135929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, p->pEList);
135607 135930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcListDelete(db, p->pSrc);
135608 135931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, p->pWhere);
@@ -135618,11 +135941,11 @@
135618 135941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( p->pWin ){
135619 135942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pWin->ppThis==&p->pWin );
135620 135943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WindowUnlinkFromSelect(p->pWin);
135621 135944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
135622 135945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
135623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( bFree ) sqlite3DbFreeNN(db, p);
135946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bFree ) sqlite3DbNNFreeNN(db, p);
135624 135947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = pPrior;
135625 135948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bFree = 1;
135626 135949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
135627 135950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
135628 135951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -137024,13 +137347,14 @@
137024 137347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
137025 137348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Deallocate a KeyInfo object
137026 137349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
137027 137350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3KeyInfoUnref(KeyInfo *p){
137028 137351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
137352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->db!=0 );
137029 137353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->nRef>0 );
137030 137354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nRef--;
137031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->nRef==0 ) sqlite3DbFreeNN(p->db, p);
137355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->nRef==0 ) sqlite3DbNNFreeNN(p->db, p);
137032 137356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
137033 137357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
137034 137358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
137035 137359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
137036 137360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Make a new pointer to a KeyInfo object
@@ -137211,18 +137535,21 @@
137211 137535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_OpenPseudo, iSortTab, regSortOut,
137212 137536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKey+1+nColumn+nRefKey);
137213 137537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce);
137214 137538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = 1 + sqlite3VdbeAddOp2(v, OP_SorterSort, iTab, addrBreak);
137215 137539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
137216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- codeOffset(v, p->iOffset, addrContinue);
137540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->iLimit==0 && p->iOffset==0 );
137217 137541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_SorterData, iTab, regSortOut, iSortTab);
137218 137542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bSeq = 0;
137219 137543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
137220 137544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = 1 + sqlite3VdbeAddOp2(v, OP_Sort, iTab, addrBreak); VdbeCoverage(v);
137221 137545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeOffset(v, p->iOffset, addrContinue);
137222 137546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iSortTab = iTab;
137223 137547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bSeq = 1;
137548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->iOffset>0 ){
137549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_AddImm, p->iLimit, -1);
137550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
137224 137551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
137225 137552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, iCol=nKey+bSeq-1; i<nColumn; i++){
137226 137553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_SORTER_REFERENCES
137227 137554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aOutEx[i].fg.bSorterRef ) continue;
137228 137555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -137343,13 +137670,10 @@
137343 137670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
137344 137671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
137345 137672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return a pointer to a string containing the 'declaration type' of the
137346 137673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expression pExpr. The string may be treated as static by the caller.
137347 137674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
137348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Also try to estimate the size of the returned value and return that
137349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** result in *pEstWidth.
137350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
137351 137675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The declaration type is the exact datatype definition extracted from the
137352 137676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** original CREATE TABLE statement if the expression is a column. The
137353 137677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** declaration type for a ROWID field is INTEGER. Exactly when an expression
137354 137678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is considered a column can be complex in the presence of subqueries. The
137355 137679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** result-set expression in all of the following SELECT statements is
@@ -139211,14 +139535,15 @@
139211 139535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139212 139536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump to the this point in order to terminate the query.
139213 139537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
139214 139538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, labelEnd);
139215 139539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Reassembly the compound query so that it will be freed correctly
139540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Reassemble the compound query so that it will be freed correctly
139217 139541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by the calling function */
139218 139542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSplit->pPrior ){
139219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3SelectDelete(db, pSplit->pPrior);
139543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ParserAddCleanup(pParse,
139544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void(*)(sqlite3*,void*))sqlite3SelectDelete, pSplit->pPrior);
139220 139545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
139221 139546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSplit->pPrior = pPrior;
139222 139547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrior->pNext = pSplit;
139223 139548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pPrior->pOrderBy);
139224 139549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrior->pOrderBy = 0;
@@ -139324,10 +139649,11 @@
139324 139649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubst->isOuterJoin && pCopy->op!=TK_COLUMN ){
139325 139650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&ifNullRow, 0, sizeof(ifNullRow));
139326 139651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ifNullRow.op = TK_IF_NULL_ROW;
139327 139652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ifNullRow.pLeft = pCopy;
139328 139653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ifNullRow.iTable = pSubst->iNewTable;
139654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ifNullRow.iColumn = -99;
139329 139655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ifNullRow.flags = EP_IfNullRow;
139330 139656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCopy = &ifNullRow;
139331 139657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
139332 139658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( ExprHasProperty(pCopy, EP_Subquery) );
139333 139659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = sqlite3ExprDup(db, pCopy, 0);
@@ -139591,11 +139917,12 @@
139591 139917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
139592 139918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3) If the subquery is the right operand of a LEFT JOIN then
139593 139919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3a) the subquery may not be a join and
139594 139920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3b) the FROM clause of the subquery may not contain a virtual
139595 139921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table and
139596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (3c) the outer query may not be an aggregate.
139922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (**) Was: "The outer query may not have a GROUP BY." This case
139923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is now managed correctly
139597 139924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3d) the outer query may not be DISTINCT.
139598 139925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also (26) for restrictions on RIGHT JOIN.
139599 139926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
139600 139927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (4) The subquery can not be DISTINCT.
139601 139928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -139803,20 +140130,14 @@
139803 140130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
139804 140131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (t1 LEFT OUTER JOIN t2) JOIN t3
139805 140132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
139806 140133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** which is not at all the same thing.
139807 140134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
139808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the subquery is the right operand of a LEFT JOIN, then the outer
139809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** query cannot be an aggregate. (3c) This is an artifact of the way
139810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** aggregates are processed - there is no mechanism to determine if
139811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the LEFT JOIN table should be all-NULL.
139812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
139813 140135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also tickets #306, #350, and #3300.
139814 140136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
139815 140137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pSubitem->fg.jointype & (JT_OUTER|JT_LTORJ))!=0 ){
139816 140138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubSrc->nSrc>1 /* (3a) */
139817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || isAgg /* (3c) */
139818 140139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| IsVirtual(pSubSrc->a[0].pTab) /* (3b) */
139819 140140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (p->selFlags & SF_Distinct)!=0 /* (3d) */
139820 140141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (pSubitem->fg.jointype & JT_RIGHT)!=0 /* (26) */
139821 140142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
139822 140143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
@@ -140733,10 +141054,11 @@
140733 141054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pWhere
140734 141055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| p->pEList->nExpr!=1
140735 141056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| p->pSrc->nSrc!=1
140736 141057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| p->pSrc->a[0].pSelect
140737 141058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pAggInfo->nFunc!=1
141059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || p->pHaving
140738 141060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
140739 141061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
140740 141062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140741 141063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = p->pSrc->a[0].pTab;
140742 141064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab!=0 );
@@ -142726,11 +143048,11 @@
142726 143048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
142727 143049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iEnd = sqlite3VdbeMakeLabel(pParse);
142728 143050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (p->selFlags & SF_FixedLimit)==0 ){
142729 143051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nSelectRow = 320; /* 4 billion rows */
142730 143052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
142731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- computeLimitRegisters(pParse, p, iEnd);
143053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pLimit ) computeLimitRegisters(pParse, p, iEnd);
142732 143054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->iLimit==0 && sSort.addrSortIndex>=0 ){
142733 143055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeOpcode(v, sSort.addrSortIndex, OP_SorterOpen);
142734 143056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sSort.sortFlags |= SORTFLAG_UseSorter;
142735 143057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
142736 143058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -142948,12 +143270,17 @@
142948 143270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( minMaxFlag ){
142949 143271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf("MIN/MAX Optimization (0x%02x) adds:\n", minMaxFlag);
142950 143272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExprList(0, pMinMaxOrderBy, 0, "ORDERBY");
142951 143273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
142952 143274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pAggInfo->nColumn; ii++){
142953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DebugPrintf("agg-column[%d] iMem=%d\n",
142954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ii, pAggInfo->aCol[ii].iMem);
143275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ struct AggInfo_col *pCol = &pAggInfo->aCol[ii];
143276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DebugPrintf(
143277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "agg-column[%d] pTab=%s iTable=%d iColumn=%d iMem=%d"
143278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " iSorterColumn=%d\n",
143279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ii, pCol->pTab ? pCol->pTab->zName : "NULL",
143280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCol->iTable, pCol->iColumn, pCol->iMem,
143281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCol->iSorterColumn);
142955 143282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(0, pAggInfo->aCol[ii].pCExpr, 0);
142956 143283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
142957 143284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pAggInfo->nFunc; ii++){
142958 143285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf("agg-func[%d]: iMem=%d\n",
142959 143286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ii, pAggInfo->aFunc[ii].iMem);
@@ -143070,19 +143397,19 @@
143070 143397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
143071 143398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
143072 143399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regBase = sqlite3GetTempRange(pParse, nCol);
143073 143400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeExprList(pParse, pGroupBy, regBase, 0, 0);
143074 143401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = nGroupBy;
143402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pAggInfo->directMode = 1;
143075 143403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pAggInfo->nColumn; i++){
143076 143404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_col *pCol = &pAggInfo->aCol[i];
143077 143405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->iSorterColumn>=j ){
143078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int r1 = j + regBase;
143079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprCodeGetColumnOfTable(v,
143080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCol->pTab, pCol->iTable, pCol->iColumn, r1);
143406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprCode(pParse, pCol->pCExpr, j + regBase);
143081 143407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j++;
143082 143408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
143083 143409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
143410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pAggInfo->directMode = 0;
143084 143411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regRecord = sqlite3GetTempReg(pParse);
143085 143412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase, nCol, regRecord);
143086 143413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SorterInsert, pAggInfo->sortingIdx, regRecord);
143087 143414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regRecord);
143088 143415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempRange(pParse, regBase, nCol);
@@ -147496,11 +147823,12 @@
147496 147823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the list are moved to the sqlite3.pDisconnect list of the associated
147497 147824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database connection.
147498 147825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
147499 147826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VtabClear(sqlite3 *db, Table *p){
147500 147827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( IsVirtual(p) );
147501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !db || db->pnBytesFreed==0 ) vtabDisconnectAll(0, p);
147828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
147829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->pnBytesFreed==0 ) vtabDisconnectAll(0, p);
147502 147830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->u.vtab.azArg ){
147503 147831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
147504 147832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<p->u.vtab.nArg; i++){
147505 147833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i!=1 ) sqlite3DbFree(db, p->u.vtab.azArg[i]);
147506 147834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -149173,10 +149501,11 @@
149173 149501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_IN_SEEKSCAN 0x00100000 /* Seek-scan optimization for IN */
149174 149502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_TRANSCONS 0x00200000 /* Uses a transitive constraint */
149175 149503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_BLOOMFILTER 0x00400000 /* Consider using a Bloom-filter */
149176 149504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_SELFCULL 0x00800000 /* nOut reduced by extra WHERE terms */
149177 149505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WHERE_OMIT_OFFSET 0x01000000 /* Set offset counter to zero */
149506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define WHERE_VIEWSCAN 0x02000000 /* A full-scan of a VIEW or subquery */
149178 149507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149179 149508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_WHEREINT_H) */
149180 149509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149181 149510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of whereInt.h ********************************************/
149182 149511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in wherecode.c ******************/
@@ -149781,11 +150110,12 @@
149781 150110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap,&iTab);
149782 150111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = iTab;
149783 150112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149784 150113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pX);
149785 150114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
149786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*nEq);
150115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int n = sqlite3ExprVectorSize(pX->pLeft);
150116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*MAX(nEq,n));
149787 150117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap, &iTab);
149788 150118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149789 150119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pX = pExpr;
149790 150120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149791 150121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -150051,11 +150381,11 @@
150051 150381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pTerm /* The upper or lower bound just coded */
150052 150382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
150053 150383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->wtFlags & TERM_LIKEOPT ){
150054 150384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp;
150055 150385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLevel->iLikeRepCntr>0 );
150056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pOp = sqlite3VdbeGetOp(v, -1);
150386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOp = sqlite3VdbeGetLastOp(v);
150057 150387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp!=0 );
150058 150388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->opcode==OP_String8
150059 150389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pTerm->pWC->pWInfo->pParse->db->mallocFailed );
150060 150390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p3 = (int)(pLevel->iLikeRepCntr>>1); /* Register holding counter */
150061 150391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p5 = (u8)(pLevel->iLikeRepCntr&1); /* ASC or DESC */
@@ -151267,12 +151597,12 @@
151267 151597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq);
151268 151598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
endEq = 0;
151269 151599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151270 151600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nConstraint++;
151271 151601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, zStartAff);
151273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFree(db, zEndAff);
151602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zStartAff ) sqlite3DbNNFreeNN(db, zStartAff);
151603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zEndAff ) sqlite3DbNNFreeNN(db, zEndAff);
151274 151604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
151275 151605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Top of the loop body */
151276 151606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->p2==0 ) pLevel->p2 = sqlite3VdbeCurrentAddr(v);
151277 151607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
151278 151608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check if the index cursor is past the end of the range. */
@@ -155499,11 +155829,11 @@
155499 155829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* At this point, the (iCol+1) field prefix of aSample[i] is the first
155500 155830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sample that is greater than pRec. Or, if i==pIdx->nSample then pRec
155501 155831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is larger than all samples in the array. */
155502 155832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tRowcnt iUpper, iGap;
155503 155833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i>=pIdx->nSample ){
155504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iUpper = sqlite3LogEstToInt(pIdx->aiRowLogEst[0]);
155834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iUpper = pIdx->nRowEst0;
155505 155835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
155506 155836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iUpper = aSample[i].anLt[iCol];
155507 155837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
155508 155838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
155509 155839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iLower>=iUpper ){
@@ -156128,16 +156458,22 @@
156128 156458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156129 156459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156130 156460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156131 156461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156132 156462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
156133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Deallocate internal memory used by a WhereLoop object
156463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Deallocate internal memory used by a WhereLoop object. Leave the
156464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** object in an initialized state, as if it had been newly allocated.
156134 156465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
156135 156466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void whereLoopClear(sqlite3 *db, WhereLoop *p){
156136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->aLTerm!=p->aLTermSpace ) sqlite3DbFreeNN(db, p->aLTerm);
156467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->aLTerm!=p->aLTermSpace ){
156468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbFreeNN(db, p->aLTerm);
156469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->aLTerm = p->aLTermSpace;
156470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->nLSlot = ArraySize(p->aLTermSpace);
156471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
156137 156472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereLoopClearUnion(db, p);
156138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- whereLoopInit(p);
156473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->nLTerm = 0;
156474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->wsFlags = 0;
156139 156475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156140 156476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156141 156477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
156142 156478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Increase the memory allocation for pLoop->aLTerm[] to be at least n.
156143 156479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -156157,11 +156493,13 @@
156157 156493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
156158 156494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Transfer content from the second pLoop into the first.
156159 156495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
156160 156496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int whereLoopXfer(sqlite3 *db, WhereLoop *pTo, WhereLoop *pFrom){
156161 156497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereLoopClearUnion(db, pTo);
156162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( whereLoopResize(db, pTo, pFrom->nLTerm) ){
156498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pFrom->nLTerm > pTo->nLSlot
156499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && whereLoopResize(db, pTo, pFrom->nLTerm)
156500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
156163 156501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(pTo, 0, WHERE_LOOP_XFER_SZ);
156164 156502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM_BKPT;
156165 156503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156166 156504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(pTo, pFrom, WHERE_LOOP_XFER_SZ);
156167 156505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(pTo->aLTerm, pFrom->aLTerm, pTo->nLTerm*sizeof(pTo->aLTerm[0]));
@@ -156175,32 +156513,34 @@
156175 156513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156176 156514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
156177 156515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Delete a WhereLoop object
156178 156516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
156179 156517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void whereLoopDelete(sqlite3 *db, WhereLoop *p){
156518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
156180 156519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereLoopClear(db, p);
156181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, p);
156520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, p);
156182 156521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156183 156522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156184 156523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
156185 156524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Free a WhereInfo structure
156186 156525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
156187 156526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){
156188 156527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWInfo!=0 );
156528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
156189 156529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereClauseClear(&pWInfo->sWC);
156190 156530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( pWInfo->pLoops ){
156191 156531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *p = pWInfo->pLoops;
156192 156532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->pLoops = p->pNextLoop;
156193 156533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereLoopDelete(db, p);
156194 156534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156195 156535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWInfo->pExprMods==0 );
156196 156536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( pWInfo->pMemToFree ){
156197 156537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereMemBlock *pNext = pWInfo->pMemToFree->pNext;
156198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, pWInfo->pMemToFree);
156538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, pWInfo->pMemToFree);
156199 156539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->pMemToFree = pNext;
156200 156540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, pWInfo);
156541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, pWInfo);
156202 156542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156203 156543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156204 156544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Undo all Expr node modifications
156205 156545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
156206 156546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void whereUndoExprMods(WhereInfo *pWInfo){
@@ -156810,11 +157150,15 @@
156810 157150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->wsFlags = saved_wsFlags;
156811 157151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.btree.nEq = saved_nEq;
156812 157152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.btree.nBtm = saved_nBtm;
156813 157153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.btree.nTop = saved_nTop;
156814 157154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nLTerm = saved_nLTerm;
156815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( whereLoopResize(db, pNew, pNew->nLTerm+1) ) break; /* OOM */
157155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNew->nLTerm>=pNew->nLSlot
157156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && whereLoopResize(db, pNew, pNew->nLTerm+1)
157157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
157158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break; /* OOM while trying to enlarge the pNew->aLTerm array */
157159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
156816 157160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->aLTerm[pNew->nLTerm++] = pTerm;
156817 157161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->prereq = (saved_prereq | pTerm->prereqRight) & ~pNew->maskSelf;
156818 157162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156819 157163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nInMul==0
156820 157164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (pNew->wsFlags & WHERE_COLUMN_NULL)!=0
@@ -156903,42 +157247,43 @@
156903 157247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156904 157248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156905 157249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( scan.iEquiv>1 ) pNew->wsFlags |= WHERE_TRANSCONS;
156906 157250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( eOp & WO_ISNULL ){
156907 157251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->wsFlags |= WHERE_COLUMN_NULL;
156908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( eOp & (WO_GT|WO_GE) ){
156909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( eOp & WO_GT );
156910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( eOp & WO_GE );
156911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->wsFlags |= WHERE_COLUMN_RANGE|WHERE_BTM_LIMIT;
156912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->u.btree.nBtm = whereRangeVectorLen(
156913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse, pSrc->iCursor, pProbe, saved_nEq, pTerm
156914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
156915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pBtm = pTerm;
156916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTop = 0;
156917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTerm->wtFlags & TERM_LIKEOPT ){
156918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Range constraints that come from the LIKE optimization are
156919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** always used in pairs. */
156920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTop = &pTerm[1];
156921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (pTop-(pTerm->pWC->a))<pTerm->pWC->nTerm );
156922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pTop->wtFlags & TERM_LIKEOPT );
156923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pTop->eOperator==WO_LT );
156924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( whereLoopResize(db, pNew, pNew->nLTerm+1) ) break; /* OOM */
156925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->aLTerm[pNew->nLTerm++] = pTop;
156926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->wsFlags |= WHERE_TOP_LIMIT;
156927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->u.btree.nTop = 1;
156928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
156929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
156930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( eOp & (WO_LT|WO_LE) );
156931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( eOp & WO_LT );
156932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( eOp & WO_LE );
156933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->wsFlags |= WHERE_COLUMN_RANGE|WHERE_TOP_LIMIT;
156934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->u.btree.nTop = whereRangeVectorLen(
156935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse, pSrc->iCursor, pProbe, saved_nEq, pTerm
156936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
156937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTop = pTerm;
156938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pBtm = (pNew->wsFlags & WHERE_BTM_LIMIT)!=0 ?
156939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew->aLTerm[pNew->nLTerm-2] : 0;
157252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
157253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nVecLen = whereRangeVectorLen(
157254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse, pSrc->iCursor, pProbe, saved_nEq, pTerm
157255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
157256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( eOp & (WO_GT|WO_GE) ){
157257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( eOp & WO_GT );
157258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( eOp & WO_GE );
157259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->wsFlags |= WHERE_COLUMN_RANGE|WHERE_BTM_LIMIT;
157260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->u.btree.nBtm = nVecLen;
157261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBtm = pTerm;
157262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTop = 0;
157263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTerm->wtFlags & TERM_LIKEOPT ){
157264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Range constraints that come from the LIKE optimization are
157265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** always used in pairs. */
157266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTop = &pTerm[1];
157267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTop-(pTerm->pWC->a))<pTerm->pWC->nTerm );
157268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTop->wtFlags & TERM_LIKEOPT );
157269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTop->eOperator==WO_LT );
157270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( whereLoopResize(db, pNew, pNew->nLTerm+1) ) break; /* OOM */
157271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->aLTerm[pNew->nLTerm++] = pTop;
157272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->wsFlags |= WHERE_TOP_LIMIT;
157273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->u.btree.nTop = 1;
157274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
157275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
157276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( eOp & (WO_LT|WO_LE) );
157277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( eOp & WO_LT );
157278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( eOp & WO_LE );
157279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->wsFlags |= WHERE_COLUMN_RANGE|WHERE_TOP_LIMIT;
157280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->u.btree.nTop = nVecLen;
157281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTop = pTerm;
157282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBtm = (pNew->wsFlags & WHERE_BTM_LIMIT)!=0 ?
157283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->aLTerm[pNew->nLTerm-2] : 0;
157284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
156940 157285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156941 157286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156942 157287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* At this point pNew->nOut is set to the number of rows expected to
156943 157288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be visited by the index scan before considering term pTerm, or the
156944 157289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** values of nIn and nInMul. In other words, assuming that all
@@ -157380,10 +157725,13 @@
157380 157725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STAT4
157381 157726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->rRun = rSize + 16 - 2*((pTab->tabFlags & TF_HasStat4)!=0);
157382 157727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
157383 157728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->rRun = rSize + 16;
157384 157729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
157730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( IsView(pTab) || (pTab->tabFlags & TF_Ephemeral)!=0 ){
157731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->wsFlags |= WHERE_VIEWSCAN;
157732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
157385 157733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ApplyCostMultiplier(pNew->rRun, pTab->costMult);
157386 157734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereLoopOutputAdjust(pWC, pNew, rSize);
157387 157735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = whereLoopInsert(pBuilder, pNew);
157388 157736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nOut = rSize;
157389 157737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) break;
@@ -158106,11 +158454,17 @@
158106 158454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pNew;
158107 158455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158108 158456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158109 158457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Loop over the tables in the join, from left to right */
158110 158458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = pBuilder->pNew;
158111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- whereLoopInit(pNew);
158459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
158460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Verify that pNew has already been initialized */
158461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNew->nLTerm==0 );
158462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNew->wsFlags==0 );
158463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNew->nLSlot>=ArraySize(pNew->aLTermSpace) );
158464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNew->aLTerm!=0 );
158465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
158112 158466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBuilder->iPlanLimit = SQLITE_QUERY_PLANNER_LIMIT;
158113 158467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iTab=0, pItem=pTabList->a; pItem<pEnd; iTab++, pItem++){
158114 158468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask mUnusable = 0;
158115 158469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->iTab = iTab;
158116 158470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBuilder->iPlanLimit += SQLITE_QUERY_PLANNER_LIMIT_INCR;
@@ -158703,13 +159057,13 @@
158703 159057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0, pFrom=aFrom; ii<nFrom; ii++, pFrom++){
158704 159058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pWLoop=pWInfo->pLoops; pWLoop; pWLoop=pWLoop->pNextLoop){
158705 159059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LogEst nOut; /* Rows visited by (pFrom+pWLoop) */
158706 159060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LogEst rCost; /* Cost of path (pFrom+pWLoop) */
158707 159061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LogEst rUnsorted; /* Unsorted cost of (pFrom+pWLoop) */
158708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i8 isOrdered = pFrom->isOrdered; /* isOrdered for (pFrom+pWLoop) */
159062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i8 isOrdered; /* isOrdered for (pFrom+pWLoop) */
158709 159063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask maskNew; /* Mask of src visited by (..) */
158710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Bitmask revMask = 0; /* Mask of rev-order loops for (..) */
159064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Bitmask revMask; /* Mask of rev-order loops for (..) */
158711 159065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158712 159066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pWLoop->prereq & ~pFrom->maskLoop)!=0 ) continue;
158713 159067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pWLoop->maskSelf & pFrom->maskLoop)!=0 ) continue;
158714 159068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pWLoop->wsFlags & WHERE_AUTO_INDEX)!=0 && pFrom->nRow<3 ){
158715 159069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do not use an automatic index if the this loop is expected
@@ -158724,11 +159078,13 @@
158724 159078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Compute its cost */
158725 159079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rUnsorted = sqlite3LogEstAdd(pWLoop->rSetup,pWLoop->rRun + pFrom->nRow);
158726 159080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rUnsorted = sqlite3LogEstAdd(rUnsorted, pFrom->rUnsorted);
158727 159081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nOut = pFrom->nRow + pWLoop->nOut;
158728 159082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
maskNew = pFrom->maskLoop | pWLoop->maskSelf;
159083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isOrdered = pFrom->isOrdered;
158729 159084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isOrdered<0 ){
159085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ revMask = 0;
158730 159086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isOrdered = wherePathSatisfiesOrderBy(pWInfo,
158731 159087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->pOrderBy, pFrom, pWInfo->wctrlFlags,
158732 159088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iLoop, pWLoop, &revMask);
158733 159089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
158734 159090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
revMask = pFrom->revLoop;
@@ -158751,10 +159107,17 @@
158751 159107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rUnsorted, rCost));
158752 159108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
158753 159109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rCost = rUnsorted;
158754 159110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rUnsorted -= 2; /* TUNING: Slight bias in favor of no-sort plans */
158755 159111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
159112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
159113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* TUNING: A full-scan of a VIEW or subquery in the outer loop
159114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is not so bad. */
159115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iLoop==0 && (pWLoop->wsFlags & WHERE_VIEWSCAN)!=0 ){
159116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rCost += -10;
159117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nOut += -30;
159118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
158756 159119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158757 159120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check to see if pWLoop should be added to the set of
158758 159121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mxChoice best-so-far paths.
158759 159122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
158760 159123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** First look for an existing path among best-so-far paths
@@ -158984,11 +159347,12 @@
158984 159347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158985 159348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158986 159349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->nRowOut = pFrom->nRow;
158987 159350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158988 159351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Free temporary memory and return success */
158989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DbFreeNN(db, pSpace);
159352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( db!=0 );
159353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbNNFreeNN(db, pSpace);
158990 159354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
158991 159355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
158992 159356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158993 159357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
158994 159358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Most queries use only a single table (they are not joins) and have
@@ -161217,11 +161581,10 @@
161217 161581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
161218 161582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nInit = pList ? pList->nExpr : 0;
161219 161583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pAppend->nExpr; i++){
161220 161584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
161221 161585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pDup = sqlite3ExprDup(db, pAppend->a[i].pExpr, 0);
161222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pDup==0 || !ExprHasProperty(pDup, EP_MemToken) );
161223 161586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ){
161224 161587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pDup);
161225 161588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
161226 161589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161227 161590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bIntToNull ){
@@ -162488,14 +162851,13 @@
162488 162851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
162489 162852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrDone);
162490 162853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
162491 162854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This block runs if reg1 is not NULL, but reg2 is. */
162492 162855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr);
162493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_IsNull, reg2, lbl); VdbeCoverage(v);
162494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( op==OP_Gt || op==OP_Ge ){
162495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeP2(v, -1, addrDone);
162496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
162856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IsNull, reg2,
162857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (op==OP_Gt || op==OP_Ge) ? addrDone : lbl);
162858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
162497 162859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
162498 162860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
162499 162861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Register reg1 currently contains csr1.peerVal (the peer-value from csr1).
162500 162862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This block adds (or subtracts for DESC) the numeric value in regVal
162501 162863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from it. Or, if reg1 is not numeric (it is a NULL, a text value or a blob),
@@ -170068,11 +170430,11 @@
170068 170430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DeleteTable(db, pParse->pNewTable);
170069 170431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
170070 170432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->pNewTrigger && !IN_RENAME_OBJECT ){
170071 170433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DeleteTrigger(db, pParse->pNewTrigger);
170072 170434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
170073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pParse->pVList ) sqlite3DbFreeNN(db, pParse->pVList);
170435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->pVList ) sqlite3DbNNFreeNN(db, pParse->pVList);
170074 170436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pParse = pParentParse;
170075 170437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nErr==0 || pParse->rc!=SQLITE_OK );
170076 170438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return nErr;
170077 170439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
170078 170440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -171424,22 +171786,23 @@
171424 171786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.pEnd = p;
171425 171787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.bDisable = 0;
171426 171788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.bMalloced = pBuf==0 ?1:0;
171427 171789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.nSlot = nBig+nSm;
171428 171790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
171429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db->lookaside.pStart = db;
171791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pStart = 0;
171430 171792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_TWOSIZE_LOOKASIDE
171431 171793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.pSmallInit = 0;
171432 171794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.pSmallFree = 0;
171433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db->lookaside.pMiddle = db;
171795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pMiddle = 0;
171434 171796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_TWOSIZE_LOOKASIDE */
171435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db->lookaside.pEnd = db;
171797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pEnd = 0;
171436 171798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.bDisable = 1;
171437 171799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.sz = 0;
171438 171800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.bMalloced = 0;
171439 171801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->lookaside.nSlot = 0;
171440 171802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->lookaside.pTrueEnd = db->lookaside.pEnd;
171441 171804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3LookasideUsed(db,0)==0 );
171442 171805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_LOOKASIDE */
171443 171806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
171444 171807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171445 171808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -171514,10 +171877,11 @@
171514 171877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Configuration settings for an individual database connection
171515 171878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
171516 171879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_db_config(sqlite3 *db, int op, ...){
171517 171880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_list ap;
171518 171881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
171882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(db->mutex);
171519 171883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_start(ap, op);
171520 171884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( op ){
171521 171885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_DBCONFIG_MAINDBNAME: {
171522 171886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* IMP: R-06824-28531 */
171523 171887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* IMP: R-36257-52125 */
@@ -171579,10 +171943,11 @@
171579 171943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171580 171944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
171581 171945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171582 171946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171583 171947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
171948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(db->mutex);
171584 171949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
171585 171950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171586 171951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171587 171952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
171588 171953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the default collating function named "BINARY" which is always
@@ -181118,11 +181483,11 @@
181118 181483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1 = pPhrase->doclist.pList;
181119 181484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p2 = aPoslist;
181120 181485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nDistance = iPrev - nMaxUndeferred;
181121 181486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
181122 181487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
181123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aOut = (char *)sqlite3_malloc(nPoslist+8);
181488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut = (char *)sqlite3Fts3MallocZero(nPoslist+FTS3_BUFFER_PADDING);
181124 181489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !aOut ){
181125 181490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(aPoslist);
181126 181491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM;
181127 181492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
181128 181493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -204144,11 +204509,11 @@
204144 204509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_bind_value(pUp, 2, aData[2]);
204145 204510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
204146 204511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(p);
204147 204512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nChange = 1;
204148 204513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
204149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(jj=1; jj<pRtree->nAux; jj++){
204514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(jj=1; jj<nData-2; jj++){
204150 204515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nChange++;
204151 204516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_bind_value(pUp, jj+2, aData[jj+2]);
204152 204517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
204153 204518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nChange ){
204154 204519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_step(pUp);
@@ -212503,15 +212868,16 @@
212503 212868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
212504 212869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int dbpageBegin(sqlite3_vtab *pVtab){
212505 212870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DbpageTable *pTab = (DbpageTable *)pVtab;
212506 212871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pTab->db;
212507 212872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
212508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<db->nDb; i++){
212873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = SQLITE_OK;
212874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
212509 212875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt = db->aDb[i].pBt;
212510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pBt ) sqlite3BtreeBeginTrans(pBt, 1, 0);
212876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pBt ) rc = sqlite3BtreeBeginTrans(pBt, 1, 0);
212511 212877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_OK;
212878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
212513 212879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212514 212880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
212515 212881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
212516 212882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
212517 212883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Invoke this routine to register the "dbpage" virtual table module
@@ -219231,11 +219597,11 @@
219231 219597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void sqlite3Fts5BufferAppendPrintf(int *, Fts5Buffer*, char *zFmt, ...);
219232 219598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
219233 219599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static char *sqlite3Fts5Mprintf(int *pRc, const char *zFmt, ...);
219234 219600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
219235 219601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5BufferZero(x) sqlite3Fts5BufferZero(x)
219236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define fts5BufferAppendVarint(a,b,c) sqlite3Fts5BufferAppendVarint(a,b,c)
219602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define fts5BufferAppendVarint(a,b,c) sqlite3Fts5BufferAppendVarint(a,b,(i64)c)
219237 219603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5BufferFree(a) sqlite3Fts5BufferFree(a)
219238 219604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5BufferAppendBlob(a,b,c,d) sqlite3Fts5BufferAppendBlob(a,b,c,d)
219239 219605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5BufferSet(a,b,c,d) sqlite3Fts5BufferSet(a,b,c,d)
219240 219606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
219241 219607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5BufferGrow(pRc,pBuf,nn) ( \
@@ -231108,11 +231474,13 @@
231108 231474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Write the rowid. */
231109 231475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWriter->bFirstRowidInDoclist || pWriter->bFirstRowidInPage ){
231110 231476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendVarint(&p->rc, &pPage->buf, iRowid);
231111 231477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
231112 231478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert_nc( p->rc || iRowid>pWriter->iPrevRowid );
231113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5BufferAppendVarint(&p->rc, &pPage->buf, iRowid - pWriter->iPrevRowid);
231479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5BufferAppendVarint(&p->rc, &pPage->buf,
231480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (u64)iRowid - (u64)pWriter->iPrevRowid
231481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
231114 231482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231115 231483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWriter->iPrevRowid = iRowid;
231116 231484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWriter->bFirstRowidInDoclist = 0;
231117 231485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWriter->bFirstRowidInPage = 0;
231118 231486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -231872,21 +232240,21 @@
231872 232240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return fts5IndexReturn(p);
231873 232241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231874 232242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231875 232243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void fts5AppendRowid(
231876 232244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Index *p,
231877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i64 iDelta,
232245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 iDelta,
231878 232246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Iter *pUnused,
231879 232247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer *pBuf
231880 232248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
231881 232249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM(pUnused);
231882 232250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendVarint(&p->rc, pBuf, iDelta);
231883 232251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231884 232252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231885 232253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void fts5AppendPoslist(
231886 232254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Index *p,
231887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i64 iDelta,
232255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 iDelta,
231888 232256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Iter *pMulti,
231889 232257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer *pBuf
231890 232258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
231891 232259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nData = pMulti->base.nData;
231892 232260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte = nData + 9 + 9 + FTS5_DATA_ZERO_PADDING;
@@ -231957,14 +232325,14 @@
231957 232325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSafeAppendVarint(pBuf, iRowid - *piLastRowid);
231958 232326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*piLastRowid = iRowid;
231959 232327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231960 232328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231961 232329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define fts5MergeAppendDocid(pBuf, iLastRowid, iRowid) { \
231963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (pBuf)->n!=0 || (iLastRowid)==0 ); \
231964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5BufferSafeAppendVarint((pBuf), (iRowid) - (iLastRowid)); \
231965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (iLastRowid) = (iRowid); \
232330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define fts5MergeAppendDocid(pBuf, iLastRowid, iRowid) { \
232331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pBuf)->n!=0 || (iLastRowid)==0 ); \
232332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5BufferSafeAppendVarint((pBuf), (u64)(iRowid) - (u64)(iLastRowid)); \
232333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (iLastRowid) = (iRowid); \
231966 232334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231967 232335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231968 232336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
231969 232337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Swap the contents of buffer *p1 with that of *p2.
231970 232338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -232231,11 +232599,11 @@
232231 232599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer *aBuf;
232232 232600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nBuf = 32;
232233 232601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nMerge = 1;
232234 232602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
232235 232603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void (*xMerge)(Fts5Index*, Fts5Buffer*, int, Fts5Buffer*);
232236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void (*xAppend)(Fts5Index*, i64, Fts5Iter*, Fts5Buffer*);
232604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void (*xAppend)(Fts5Index*, u64, Fts5Iter*, Fts5Buffer*);
232237 232605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pConfig->eDetail==FTS5_DETAIL_NONE ){
232238 232606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xMerge = fts5MergeRowidLists;
232239 232607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xAppend = fts5AppendRowid;
232240 232608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
232241 232609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nMerge = FTS5_MERGE_NLIST-1;
@@ -232270,11 +232638,11 @@
232270 232638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5MultiIterNext2(p, p1, &dummy)
232271 232639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
232272 232640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5SegIter *pSeg = &p1->aSeg[ p1->aFirst[1].iFirst ];
232273 232641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1->xSetOutputs(p1, pSeg);
232274 232642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p1->base.nData ){
232275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- xAppend(p, p1->base.iRowid-iLastRowid, p1, &doclist);
232643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xAppend(p, (u64)p1->base.iRowid-(u64)iLastRowid, p1, &doclist);
232276 232644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iLastRowid = p1->base.iRowid;
232277 232645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232278 232646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232279 232647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5MultiIterFree(p1);
232280 232648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -232318,11 +232686,11 @@
232318 232686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232319 232687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232320 232688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iLastRowid = 0;
232321 232689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232322 232690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
232323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- xAppend(p, p1->base.iRowid-iLastRowid, p1, &doclist);
232691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xAppend(p, (u64)p1->base.iRowid-(u64)iLastRowid, p1, &doclist);
232324 232692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iLastRowid = p1->base.iRowid;
232325 232693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232326 232694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
232327 232695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (nBuf%nMerge)==0 );
232328 232696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nBuf; i+=nMerge){
@@ -236634,11 +237002,11 @@
236634 237002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
236635 237003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
236636 237004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
236637 237005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
236638 237006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
236639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2022-07-21 12:26:01 9141e873c575b049ce7aeaf313d05966f1966087caf33a6c80d2416a28571a21", -1, SQLITE_TRANSIENT);
237007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2022-09-02 21:19:24 da7af290960ab8a04a1f55cdc5eeac36b47fa194edf67f0a05daa4b7f2a4071c", -1, SQLITE_TRANSIENT);
236640 237008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
236641 237009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
236642 237010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
236643 237011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if zName is the extension on one of the shadow tables used
236644 237012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by this module.
236645 237013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!