@@ -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.50.0. By combining all the individual C code files into this
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** version 3.51.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.
@@ -16,11 +16,11 @@
16 16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if you want a wrapper to interface SQLite with your choice of programming
17 17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** language. The code for the "sqlite3" command-line shell is also in a
18 18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** separate file. This file contains only code for the core SQLite library.
19 19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
20 20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The content in this amalgamation comes from Fossil check-in
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** d22475b81c4e26ccc50f3b5626d43b32f7a2 with changes in files:
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 9f184f8dfa5ef6d57e10376adc30e0060ced with changes in files:
22 22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
23 23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
24 24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
25 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_AMALGAMATION
26 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CORE 1
@@ -463,13 +463,13 @@
463 463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
464 464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: [sqlite3_libversion()],
465 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
466 466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
467 467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION "3.50.0"
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION_NUMBER 3050000
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2025-04-15 21:59:38 d22475b81c4e26ccc50f3b5626d43b32f7a2de34e5a764539554665bdda735d5"
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION "3.51.0"
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION_NUMBER 3051000
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2025-07-15 19:00:01 9f184f8dfa5ef6d57e10376adc30e0060ceda07d283c23dfdfe3dbdd6608f839"
471 471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
472 472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
473 473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
474 474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
475 475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -485,13 +485,13 @@
485 485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** assert( sqlite3_libversion_number()==SQLITE_VERSION_NUMBER );
486 486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** assert( strncmp(sqlite3_sourceid(),SQLITE_SOURCE_ID,80)==0 );
487 487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** assert( strcmp(sqlite3_libversion(),SQLITE_VERSION)==0 );
488 488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </pre></blockquote>)^
489 489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ^The sqlite3_version[] string constant contains the text of [SQLITE_VERSION]
491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** macro. ^The sqlite3_libversion() function returns a pointer to the
492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to the sqlite3_version[] string constant. The sqlite3_libversion()
490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^The sqlite3_version[] string constant contains the text of the
491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [SQLITE_VERSION] macro. ^The sqlite3_libversion() function returns a
492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pointer to the sqlite3_version[] string constant. The sqlite3_libversion()
493 493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function is provided for use in DLLs since DLL users usually do not have
494 494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** direct access to string constants within the DLL. ^The
495 495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_libversion_number() function returns an integer equal to
496 496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [SQLITE_VERSION_NUMBER]. ^(The sqlite3_sourceid() function returns
497 497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a pointer to a string constant whose value is the same as the
@@ -687,11 +687,11 @@
687 687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()],
688 688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that allows an application to run multiple statements of SQL
689 689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** without having to use a lot of C code.
690 690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
691 691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_exec() interface runs zero or more UTF-8 encoded,
692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** semicolon-separate SQL statements passed into its 2nd argument,
692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** semicolon-separated SQL statements passed into its 2nd argument,
693 693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the context of the [database connection] passed in as its 1st
694 694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument. ^If the callback function of the 3rd argument to
695 695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_exec() is not NULL, then it is invoked for each result row
696 696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** coming out of the evaluated SQL statements. ^The 4th argument to
697 697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_exec() is relayed through to the 1st argument of each
@@ -720,11 +720,11 @@
720 720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** callback is an array of pointers to strings obtained as if from
721 721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_column_text()], one for each column. ^If an element of a
722 722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** result row is NULL then the corresponding string pointer for the
723 723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_exec() callback is a NULL pointer. ^The 4th argument to the
724 724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_exec() callback is an array of pointers to strings where each
725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** entry represents the name of corresponding result column as obtained
725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** entry represents the name of a corresponding result column as obtained
726 726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from [sqlite3_column_name()].
727 727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
728 728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the 2nd parameter to sqlite3_exec() is a NULL pointer, a pointer
729 729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to an empty string, or a pointer that contains only whitespace and/or
730 730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQL comments, then no SQL statements are evaluated and the database
@@ -906,11 +906,11 @@
906 906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Applications should not depend on the historical behavior.
907 907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
908 908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
909 909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_open_v2()] does *not* cause the underlying database file
910 910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to be opened using O_EXCL. Passing SQLITE_OPEN_EXCLUSIVE into
911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** [sqlite3_open_v2()] has historically be a no-op and might become an
911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [sqlite3_open_v2()] has historically been a no-op and might become an
912 912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** error in future versions of SQLite.
913 913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
914 914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */
915 915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */
916 916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OPEN_CREATE 0x00000004 /* Ok for sqlite3_open_v2() */
@@ -1000,11 +1000,11 @@
1000 1000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: File Locking Levels
1001 1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1002 1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLite uses one of these integer values as the second
1003 1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument to calls it makes to the xLock() and xUnlock() methods
1004 1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of an [sqlite3_io_methods] object. These values are ordered from
1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** lest restrictive to most restrictive.
1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** least restrictive to most restrictive.
1006 1006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1007 1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The argument to xLock() is always SHARED or higher. The argument to
1008 1008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** xUnlock is either SHARED or NONE.
1009 1009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1010 1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_LOCK_NONE 0 /* xUnlock() only */
@@ -1316,11 +1316,11 @@
1316 1316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** reason, the entire database file will be overwritten by the current
1317 1317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** transaction. This is used by VACUUM operations.
1318 1318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1319 1319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li>[[SQLITE_FCNTL_VFSNAME]]
1320 1320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The [SQLITE_FCNTL_VFSNAME] opcode can be used to obtain the names of
1321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** all [VFSes] in the VFS stack. The names are of all VFS shims and the
1321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** all [VFSes] in the VFS stack. The names of all VFS shims and the
1322 1322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** final bottom-level VFS are written into memory obtained from
1323 1323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_malloc()] and the result is stored in the char* variable
1324 1324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that the fourth parameter of [sqlite3_file_control()] points to.
1325 1325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The caller is responsible for freeing the memory when done. As with
1326 1326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** all file-control actions, there is no guarantee that this will actually
@@ -1330,11 +1330,11 @@
1330 1330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1331 1331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li>[[SQLITE_FCNTL_VFS_POINTER]]
1332 1332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The [SQLITE_FCNTL_VFS_POINTER] opcode finds a pointer to the top-level
1333 1333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [VFSes] currently in use. ^(The argument X in
1334 1334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_file_control(db,SQLITE_FCNTL_VFS_POINTER,X) must be
1335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of type "[sqlite3_vfs] **". This opcodes will set *X
1335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of type "[sqlite3_vfs] **". This opcode will set *X
1336 1336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to a pointer to the top-level VFS.)^
1337 1337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^When there are multiple VFS shims in the stack, this opcode finds the
1338 1338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** upper-most shim only.
1339 1339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1340 1340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li>[[SQLITE_FCNTL_PRAGMA]]
@@ -1520,11 +1520,11 @@
1520 1520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** record the fact that the pages have been checkpointed.
1521 1521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1522 1522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
1523 1523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
1524 1524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** whether or not there is a database client in another process with a wal-mode
1525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** transaction open on the database or not. It is only available on unix.The
1525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** transaction open on the database or not. It is only available on unix. The
1526 1526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (void*) argument passed with this file-control should be a pointer to a
1527 1527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value of type (int). The integer value is set to 1 if the database is a wal
1528 1528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mode database and there exists at least one client in another process that
1529 1529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** currently has an SQL transaction open on the database. It is set to 0 if
1530 1530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database is not a wal-mode db, or if there is no such connection in any
@@ -1945,11 +1945,11 @@
1945 1945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1946 1946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_initialize() routine is called internally by many other
1947 1947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLite interfaces so that an application usually does not need to
1948 1948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** invoke sqlite3_initialize() directly. For example, [sqlite3_open()]
1949 1949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** calls sqlite3_initialize() so the SQLite library will be automatically
1950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** initialized when [sqlite3_open()] is called if it has not be initialized
1950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** initialized when [sqlite3_open()] is called if it has not been initialized
1951 1951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** already. ^However, if SQLite is compiled with the [SQLITE_OMIT_AUTOINIT]
1952 1952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** compile-time option, then the automatic calls to sqlite3_initialize()
1953 1953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are omitted and the application must call sqlite3_initialize() directly
1954 1954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** prior to using any other SQLite interface. For maximum portability,
1955 1955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it is recommended that applications always invoke sqlite3_initialize()
@@ -2202,25 +2202,25 @@
2202 2202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd> ^(The SQLITE_CONFIG_GETMALLOC option takes a single argument which
2203 2203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is a pointer to an instance of the [sqlite3_mem_methods] structure.
2204 2204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The [sqlite3_mem_methods]
2205 2205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** structure is filled with the currently defined memory allocation routines.)^
2206 2206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This option can be used to overload the default memory allocation
2207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** routines with a wrapper that simulations memory allocation failure or
2207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** routines with a wrapper that simulates memory allocation failure or
2208 2208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tracks memory usage, for example. </dd>
2209 2209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2210 2210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_CONFIG_SMALL_MALLOC]] <dt>SQLITE_CONFIG_SMALL_MALLOC</dt>
2211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <dd> ^The SQLITE_CONFIG_SMALL_MALLOC option takes single argument of
2211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd> ^The SQLITE_CONFIG_SMALL_MALLOC option takes a single argument of
2212 2212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** type int, interpreted as a boolean, which if true provides a hint to
2213 2213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLite that it should avoid large memory allocations if possible.
2214 2214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLite will run faster if it is free to make large memory allocations,
2215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** but some application might prefer to run slower in exchange for
2215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** but some applications might prefer to run slower in exchange for
2216 2216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** guarantees about memory fragmentation that are possible if large
2217 2217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** allocations are avoided. This hint is normally off.
2218 2218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dd>
2219 2219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2220 2220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_CONFIG_MEMSTATUS]] <dt>SQLITE_CONFIG_MEMSTATUS</dt>
2221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <dd> ^The SQLITE_CONFIG_MEMSTATUS option takes single argument of type int,
2221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd> ^The SQLITE_CONFIG_MEMSTATUS option takes a single argument of type int,
2222 2222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** interpreted as a boolean, which enables or disables the collection of
2223 2223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory allocation statistics. ^(When memory allocation statistics are
2224 2224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** disabled, the following SQLite interfaces become non-operational:
2225 2225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <ul>
2226 2226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> [sqlite3_hard_heap_limit64()]
@@ -2261,11 +2261,11 @@
2261 2261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a page cache line is larger than sz bytes or if all of the pMem buffer
2262 2262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is exhausted.
2263 2263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If pMem is NULL and N is non-zero, then each database connection
2264 2264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** does an initial bulk allocation for page cache memory
2265 2265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from [sqlite3_malloc()] sufficient for N cache lines if N is positive or
2266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of -1024*N bytes if N is negative, . ^If additional
2266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of -1024*N bytes if N is negative. ^If additional
2267 2267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** page cache memory is needed beyond what is provided by the initial
2268 2268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** allocation, then SQLite goes to [sqlite3_malloc()] separately for each
2269 2269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** additional cache line. </dd>
2270 2270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2271 2271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_CONFIG_HEAP]] <dt>SQLITE_CONFIG_HEAP</dt>
@@ -2290,11 +2290,11 @@
2290 2290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2291 2291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_CONFIG_MUTEX]] <dt>SQLITE_CONFIG_MUTEX</dt>
2292 2292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd> ^(The SQLITE_CONFIG_MUTEX option takes a single argument which is a
2293 2293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pointer to an instance of the [sqlite3_mutex_methods] structure.
2294 2294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The argument specifies alternative low-level mutex routines to be used
2295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** in place the mutex routines built into SQLite.)^ ^SQLite makes a copy of
2295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in place of the mutex routines built into SQLite.)^ ^SQLite makes a copy of
2296 2296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the content of the [sqlite3_mutex_methods] structure before the call to
2297 2297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_config()] returns. ^If SQLite is compiled with
2298 2298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
2299 2299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the entire mutexing subsystem is omitted from the build and hence calls to
2300 2300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_config()] with the SQLITE_CONFIG_MUTEX configuration option will
@@ -2332,11 +2332,11 @@
2332 2332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the interface to a custom page cache implementation.)^
2333 2333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^SQLite makes a copy of the [sqlite3_pcache_methods2] object.</dd>
2334 2334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2335 2335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_CONFIG_GETPCACHE2]] <dt>SQLITE_CONFIG_GETPCACHE2</dt>
2336 2336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd> ^(The SQLITE_CONFIG_GETPCACHE2 option takes a single argument which
2337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is a pointer to an [sqlite3_pcache_methods2] object. SQLite copies of
2337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is a pointer to an [sqlite3_pcache_methods2] object. SQLite copies off
2338 2338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the current page cache implementation into that object.)^ </dd>
2339 2339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2340 2340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt>
2341 2341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd> The SQLITE_CONFIG_LOG option is used to configure the SQLite
2342 2342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** global [error log].
@@ -2349,11 +2349,11 @@
2349 2349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** passed through as the first parameter to the application-defined logger
2350 2350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function whenever that function is invoked. ^The second parameter to
2351 2351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the logger function is a copy of the first parameter to the corresponding
2352 2352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_log()] call and is intended to be a [result code] or an
2353 2353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [extended result code]. ^The third parameter passed to the logger is
2354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** log message after formatting via [sqlite3_snprintf()].
2354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a log message after formatting via [sqlite3_snprintf()].
2355 2355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The SQLite logging interface is not reentrant; the logger function
2356 2356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** supplied by the application must not invoke any SQLite interface.
2357 2357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** In a multi-threaded application, the application-defined logger
2358 2358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function must be threadsafe. </dd>
2359 2359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -2540,11 +2540,11 @@
2540 2540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Database Connection Configuration Options
2541 2541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2542 2542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These constants are the available integer configuration options that
2543 2543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** can be passed as the second parameter to the [sqlite3_db_config()] interface.
2544 2544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The [sqlite3_db_config()] interface is a var-args functions. It takes a
2545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The [sqlite3_db_config()] interface is a var-args function. It takes a
2546 2546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** variable number of parameters, though always at least two. The number of
2547 2547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parameters passed into sqlite3_db_config() depends on which of these
2548 2548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** constants is given as the second parameter. This documentation page
2549 2549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** refers to parameters beyond the second as "arguments". Thus, when this
2550 2550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** page says "the N-th argument" it means "the N-th parameter past the
@@ -2674,12 +2674,12 @@
2674 2674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** C-API [sqlite3_load_extension()] and the SQL function [load_extension()].
2675 2675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** There must be two additional arguments.
2676 2676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When the first argument to this interface is 1, then only the C-API is
2677 2677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** enabled and the SQL function remains disabled. If the first argument to
2678 2678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this interface is 0, then both the C-API and the SQL function are disabled.
2679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the first argument is -1, then no changes are made to state of either the
2680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** C-API or the SQL function.
2679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the first argument is -1, then no changes are made to the state of either
2680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the C-API or the SQL function.
2681 2681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The second parameter is a pointer to an integer into which
2682 2682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is written 0 or 1 to indicate whether [sqlite3_load_extension()] interface
2683 2683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is disabled or enabled following this call. The second parameter may
2684 2684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be a NULL pointer, in which case the new setting is not reported back.
2685 2685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dd>
@@ -2793,11 +2793,11 @@
2793 2793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dd>
2794 2794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2795 2795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBCONFIG_LEGACY_ALTER_TABLE]]
2796 2796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dt>SQLITE_DBCONFIG_LEGACY_ALTER_TABLE</dt>
2797 2797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The SQLITE_DBCONFIG_LEGACY_ALTER_TABLE option activates or deactivates
2798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the legacy behavior of the [ALTER TABLE RENAME] command such it
2798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the legacy behavior of the [ALTER TABLE RENAME] command such that it
2799 2799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** behaves as it did prior to [version 3.24.0] (2018-06-04). See the
2800 2800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "Compatibility Notice" on the [ALTER TABLE RENAME documentation] for
2801 2801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** additional information. This feature can also be turned on and off
2802 2802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** using the [PRAGMA legacy_alter_table] statement.
2803 2803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dd>
@@ -2842,11 +2842,11 @@
2842 2842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2843 2843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBCONFIG_LEGACY_FILE_FORMAT]]
2844 2844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dt>SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</dt>
2845 2845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The SQLITE_DBCONFIG_LEGACY_FILE_FORMAT option activates or deactivates
2846 2846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the legacy file format flag. When activated, this flag causes all newly
2847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** created database file to have a schema format version number (the 4-byte
2847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** created database files to have a schema format version number (the 4-byte
2848 2848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** integer found at offset 44 into the database header) of 1. This in turn
2849 2849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** means that the resulting database file will be readable and writable by
2850 2850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** any SQLite version back to 3.0.0 ([dateof:3.0.0]). Without this setting,
2851 2851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** newly created databases are generally not understandable by SQLite versions
2852 2852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** prior to 3.3.0 ([dateof:3.3.0]). As these words are written, there
@@ -2869,11 +2869,11 @@
2869 2869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a flag that enables collection of the sqlite3_stmt_scanstatus_v2()
2870 2870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** statistics. For statistics to be collected, the flag must be set on
2871 2871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database handle both when the SQL statement is prepared and when it
2872 2872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is stepped. The flag is set (collection of statistics is enabled)
2873 2873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by default. <p>This option takes two arguments: an integer and a pointer to
2874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** an integer.. The first argument is 1, 0, or -1 to enable, disable, or
2874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** an integer. The first argument is 1, 0, or -1 to enable, disable, or
2875 2875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** leave unchanged the statement scanstatus option. If the second argument
2876 2876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is not NULL, then the value of the statement scanstatus setting after
2877 2877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** processing the first argument is written into the integer that the second
2878 2878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument points to.
2879 2879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dd>
@@ -2912,12 +2912,12 @@
2912 2912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE]]
2913 2913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dt>SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE</dt>
2914 2914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE option enables or disables the
2915 2915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ability of the [ATTACH DATABASE] SQL command to open a database for writing.
2916 2916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This capability is enabled by default. Applications can disable or
2917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** reenable this capability using the current DBCONFIG option. If the
2918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the this capability is disabled, the [ATTACH] command will still work,
2917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** reenable this capability using the current DBCONFIG option. If
2918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this capability is disabled, the [ATTACH] command will still work,
2919 2919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** but the database will be opened read-only. If this option is disabled,
2920 2920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then the ability to create a new database using [ATTACH] is also disabled,
2921 2921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** regardless of the value of the [SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE]
2922 2922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** option.<p>
2923 2923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This option takes two arguments which are an integer and a pointer
@@ -2947,11 +2947,11 @@
2947 2947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2948 2948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[DBCONFIG arguments]] <h3>Arguments To SQLITE_DBCONFIG Options</h3>
2949 2949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2950 2950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <p>Most of the SQLITE_DBCONFIG options take two arguments, so that the
2951 2951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** overall call to [sqlite3_db_config()] has a total of four parameters.
2952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The first argument (the third parameter to sqlite3_db_config()) is a integer.
2952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The first argument (the third parameter to sqlite3_db_config()) is an integer.
2953 2953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The second argument is a pointer to an integer. If the first argument is 1,
2954 2954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then the option becomes enabled. If the first integer argument is 0, then the
2955 2955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** option is disabled. If the first argument is -1, then the option setting
2956 2956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is unchanged. The second argument, the pointer to an integer, may be NULL.
2957 2957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the second argument is not NULL, then a value of 0 or 1 is written into
@@ -3237,11 +3237,11 @@
3237 3237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and comments that follow the final semicolon are ignored.
3238 3238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3239 3239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^These routines return 0 if the statement is incomplete. ^If a
3240 3240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory allocation fails, then SQLITE_NOMEM is returned.
3241 3241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ^These routines do not parse the SQL statements thus
3242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^These routines do not parse the SQL statements and thus
3243 3243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will not detect syntactically incorrect SQL.
3244 3244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3245 3245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior
3246 3246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to invoking sqlite3_complete16() then sqlite3_initialize() is invoked
3247 3247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** automatically by sqlite3_complete16(). If that initialization fails,
@@ -3354,11 +3354,11 @@
3354 3354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Passing 0 to this function disables blocking locks altogether. Passing
3355 3355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -1 to this function requests that the VFS blocks for a long time -
3356 3356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** indefinitely if possible. The results of passing any other negative value
3357 3357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are undefined.
3358 3358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Internally, each SQLite database handle store two timeout values - the
3359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Internally, each SQLite database handle stores two timeout values - the
3360 3360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** busy-timeout (used for rollback mode databases, or if the VFS does not
3361 3361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** support blocking locks) and the setlk-timeout (used for blocking locks
3362 3362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on wal-mode databases). The sqlite3_busy_timeout() method sets both
3363 3363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** values, this function sets only the setlk-timeout value. Therefore,
3364 3364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to configure separate busy-timeout and setlk-timeout values for a single
@@ -3384,11 +3384,11 @@
3384 3384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3
3385 3385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3386 3386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is a legacy interface that is preserved for backwards compatibility.
3387 3387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Use of this interface is not recommended.
3388 3388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Definition: A <b>result table</b> is memory data structure created by the
3389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Definition: A <b>result table</b> is a memory data structure created by the
3390 3390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_get_table()] interface. A result table records the
3391 3391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** complete query results from one or more queries.
3392 3392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3393 3393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The table conceptually has a number of rows and columns. But
3394 3394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** these numbers are not part of the result table itself. These
@@ -3527,11 +3527,11 @@
3527 3527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of a signed 32-bit integer.
3528 3528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3529 3529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^Calling sqlite3_free() with a pointer previously returned
3530 3530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
3531 3531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that it might be reused. ^The sqlite3_free() routine is
3532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** a no-op if is called with a NULL pointer. Passing a NULL pointer
3532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a no-op if it is called with a NULL pointer. Passing a NULL pointer
3533 3533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to sqlite3_free() is harmless. After being freed, memory
3534 3534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** should neither be read nor written. Even reading previously freed
3535 3535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory might result in a segmentation fault or other severe error.
3536 3536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Memory corruption, a segmentation fault, or other severe error
3537 3537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** might result if sqlite3_free() is called with a non-NULL pointer that
@@ -3545,17 +3545,17 @@
3545 3545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the N parameter to sqlite3_realloc(X,N) is zero or
3546 3546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** negative then the behavior is exactly the same as calling
3547 3547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_free(X).
3548 3548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^sqlite3_realloc(X,N) returns a pointer to a memory allocation
3549 3549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of at least N bytes in size or NULL if insufficient memory is available.
3550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ^If M is the size of the prior allocation, then min(N,M) bytes
3551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of the prior allocation are copied into the beginning of buffer returned
3550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^If M is the size of the prior allocation, then min(N,M) bytes of the
3551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** prior allocation are copied into the beginning of the buffer returned
3552 3552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by sqlite3_realloc(X,N) and the prior allocation is freed.
3553 3553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If sqlite3_realloc(X,N) returns NULL and N is positive, then the
3554 3554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** prior allocation is not freed.
3555 3555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ^The sqlite3_realloc64(X,N) interfaces works the same as
3556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^The sqlite3_realloc64(X,N) interface works the same as
3557 3557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_realloc(X,N) except that N is a 64-bit unsigned integer instead
3558 3558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of a 32-bit signed integer.
3559 3559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3560 3560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If X is a memory allocation previously obtained from sqlite3_malloc(),
3561 3561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_malloc64(), sqlite3_realloc(), or sqlite3_realloc64(), then
@@ -3601,11 +3601,11 @@
3601 3601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The [sqlite3_memory_highwater()] routine returns the maximum
3602 3602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value of [sqlite3_memory_used()] since the high-water mark
3603 3603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** was last reset. ^The values returned by [sqlite3_memory_used()] and
3604 3604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_memory_highwater()] include any overhead
3605 3605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** added by SQLite in its implementation of [sqlite3_malloc()],
3606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** but not overhead added by the any underlying system library
3606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** but not overhead added by any underlying system library
3607 3607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** routines that [sqlite3_malloc()] may call.
3608 3608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3609 3609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The memory high-water mark is reset to the current value of
3610 3610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_memory_used()] if and only if the parameter to
3611 3611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_memory_highwater()] is true. ^The value returned
@@ -4053,19 +4053,19 @@
4053 4053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** attempt to use the same database connection at the same time.
4054 4054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (Mutexes will block any actual concurrency, but in this mode
4055 4055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** there is no harm in trying.)
4056 4056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4057 4057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(<dt>[SQLITE_OPEN_SHAREDCACHE]</dt>
4058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <dd>The database is opened [shared cache] enabled, overriding
4058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>The database is opened with [shared cache] enabled, overriding
4059 4059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the default shared cache setting provided by
4060 4060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_enable_shared_cache()].)^
4061 4061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The [use of shared cache mode is discouraged] and hence shared cache
4062 4062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** capabilities may be omitted from many builds of SQLite. In such cases,
4063 4063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this option is a no-op.
4064 4064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4065 4065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(<dt>[SQLITE_OPEN_PRIVATECACHE]</dt>
4066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <dd>The database is opened [shared cache] disabled, overriding
4066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>The database is opened with [shared cache] disabled, overriding
4067 4067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the default shared cache setting provided by
4068 4068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_enable_shared_cache()].)^
4069 4069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4070 4070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[OPEN_EXRESCODE]] ^(<dt>[SQLITE_OPEN_EXRESCODE]</dt>
4071 4071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The database connection comes up in "extended result code mode".
@@ -4396,11 +4396,11 @@
4396 4396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These interfaces are provided for use by [VFS shim] implementations and
4397 4397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are not useful outside of that context.
4398 4398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4399 4399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The sqlite3_create_filename(D,J,W,N,P) allocates memory to hold a version of
4400 4400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database filename D with corresponding journal file J and WAL file W and
4401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** with N URI parameters key/values pairs in the array P. The result from
4401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** an array P of N URI Key/Value pairs. The result from
4402 4402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_create_filename(D,J,W,N,P) is a pointer to a database filename that
4403 4403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is safe to pass to routines like:
4404 4404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <ul>
4405 4405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> [sqlite3_uri_parameter()],
4406 4406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> [sqlite3_uri_boolean()],
@@ -4479,19 +4479,19 @@
4479 4479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The application does not need to worry about freeing the result.
4480 4480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** However, the error string might be overwritten or deallocated by
4481 4481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** subsequent calls to other SQLite interface functions.)^
4482 4482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4483 4483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_errstr(E) interface returns the English-language text
4484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** that describes the [result code] E, as UTF-8, or NULL if E is not an
4484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that describes the [result code] E, as UTF-8, or NULL if E is not a
4485 4485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** result code for which a text error message is available.
4486 4486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(Memory to hold the error message string is managed internally
4487 4487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and must not be freed by the application)^.
4488 4488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4489 4489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the most recent error references a specific token in the input
4490 4490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQL, the sqlite3_error_offset() interface returns the byte offset
4491 4491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the start of that token. ^The byte offset returned by
4492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sqlite3_error_offset() assumes that the input SQL is UTF8.
4492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3_error_offset() assumes that the input SQL is UTF-8.
4493 4493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the most recent error does not reference a specific token in the input
4494 4494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQL, then the sqlite3_error_offset() function returns -1.
4495 4495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4496 4496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When the serialized [threading mode] is in use, it might be the
4497 4497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** case that a second error occurs on a separate thread in between
@@ -4586,12 +4586,12 @@
4586 4586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Limit Categories
4587 4587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: {limit category} {*limit categories}
4588 4588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4589 4589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These constants define various performance limits
4590 4590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that can be lowered at run-time using [sqlite3_limit()].
4591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The synopsis of the meanings of the various limits is shown below.
4592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Additional information is available at [limits | Limits in SQLite].
4591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** A concise description of these limits follows, and additional information
4592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is available at [limits | Limits in SQLite].
4593 4593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4594 4594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dl>
4595 4595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_LIMIT_LENGTH]] ^(<dt>SQLITE_LIMIT_LENGTH</dt>
4596 4596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The maximum size of any string or BLOB or table row, in bytes.<dd>)^
4597 4597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -4652,11 +4652,11 @@
4652 4652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_LIMIT_WORKER_THREADS 11
4653 4653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
4654 4654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
4655 4655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Prepare Flags
4656 4656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** These constants define various flags that can be passed into
4657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** These constants define various flags that can be passed into the
4658 4658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "prepFlags" parameter of the [sqlite3_prepare_v3()] and
4659 4659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_prepare16_v3()] interfaces.
4660 4660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4661 4661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** New flags may be added in future releases of SQLite.
4662 4662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -4739,11 +4739,11 @@
4739 4739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** statement is generated.
4740 4740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the caller knows that the supplied string is nul-terminated, then
4741 4741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** there is a small performance advantage to passing an nByte parameter that
4742 4742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is the number of bytes in the input string <i>including</i>
4743 4743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the nul-terminator.
4744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Note that nByte measure the length of the input in bytes, not
4744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Note that nByte measures the length of the input in bytes, not
4745 4745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** characters, even for the UTF-16 interfaces.
4746 4746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4747 4747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If pzTail is not NULL then *pzTail is made to point to the first byte
4748 4748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** past the end of the first SQL statement in zSql. These routines only
4749 4749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** compile the first statement in zSql, so *pzTail is left pointing to
@@ -4873,11 +4873,11 @@
4873 4873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the original string, "SELECT $abc,:xyz" but sqlite3_expanded_sql()
4874 4874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will return "SELECT 2345,NULL".)^
4875 4875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4876 4876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_expanded_sql() interface returns NULL if insufficient memory
4877 4877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is available to hold the result, or if the result would exceed the
4878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the maximum string length determined by the [SQLITE_LIMIT_LENGTH].
4878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** maximum string length determined by the [SQLITE_LIMIT_LENGTH].
4879 4879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
4880 4880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The [SQLITE_TRACE_SIZE_LIMIT] compile-time option limits the size of
4881 4881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** bound parameter expansions. ^The [SQLITE_OMIT_TRACE] compile-time
4882 4882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** option causes sqlite3_expanded_sql() to always return NULL.
4883 4883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -5061,11 +5061,11 @@
5061 5061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
5062 5062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: SQL Function Context Object
5063 5063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5064 5064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The context in which an SQL function executes is stored in an
5065 5065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_context object. ^A pointer to an sqlite3_context object
5066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is always first parameter to [application-defined SQL functions].
5066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is always the first parameter to [application-defined SQL functions].
5067 5067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The application-defined SQL function implementation will pass this
5068 5068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pointer through into calls to [sqlite3_result_int | sqlite3_result()],
5069 5069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_aggregate_context()], [sqlite3_user_data()],
5070 5070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_context_db_handle()], [sqlite3_get_auxdata()],
5071 5071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and/or [sqlite3_set_auxdata()].
@@ -5077,11 +5077,11 @@
5077 5077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: {host parameter} {host parameters} {host parameter name}
5078 5078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: {SQL parameter} {SQL parameters} {parameter binding}
5079 5079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3_stmt
5080 5080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5081 5081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(In the SQL statement text input to [sqlite3_prepare_v2()] and its variants,
5082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** literals may be replaced by a [parameter] that matches one of following
5082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** literals may be replaced by a [parameter] that matches one of the following
5083 5083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** templates:
5084 5084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5085 5085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <ul>
5086 5086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> ?
5087 5087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> ?NNN
@@ -5122,11 +5122,11 @@
5122 5122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** either UTF8 if the sixth parameter is SQLITE_UTF8, or UTF16
5123 5123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** otherwise.
5124 5124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5125 5125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[byte-order determination rules]] ^The byte-order of
5126 5126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF)
5127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** found in first character, which is removed, or in the absence of a BOM
5127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** found in the first character, which is removed, or in the absence of a BOM
5128 5128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the byte order is the native byte order of the host
5129 5129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** machine for sqlite3_bind_text16() or the byte order specified in
5130 5130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the 6th parameter for sqlite3_bind_text64().)^
5131 5131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If UTF16 input text contains invalid unicode
5132 5132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** characters, then SQLite might change those invalid characters
@@ -5142,11 +5142,11 @@
5142 5142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the behavior is undefined.
5143 5143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If a non-negative fourth parameter is provided to sqlite3_bind_text()
5144 5144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or sqlite3_bind_text16() or sqlite3_bind_text64() then
5145 5145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that parameter must be the byte offset
5146 5146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** where the NUL terminator would occur assuming the string were NUL
5147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** terminated. If any NUL characters occurs at byte offsets less than
5147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** terminated. If any NUL characters occur at byte offsets less than
5148 5148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the value of the fourth parameter then the resulting string value will
5149 5149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contain embedded NULs. The result of expressions involving strings
5150 5150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with embedded NULs is undefined.
5151 5151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5152 5152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The fifth argument to the BLOB and string binding interfaces controls
@@ -5354,11 +5354,11 @@
5354 5354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
5355 5355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Source Of Data In A Query Result
5356 5356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3_stmt
5357 5357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5358 5358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^These routines provide a means to determine the database, table, and
5359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** table column that is the origin of a particular result column in
5359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** table column that is the origin of a particular result column in a
5360 5360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [SELECT] statement.
5361 5361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The name of the database or table or column can be returned as
5362 5362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** either a UTF-8 or UTF-16 string. ^The _database_ routines return
5363 5363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database name, the _table_ routines return the table name, and
5364 5364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the origin_ routines return the column name.
@@ -5798,11 +5798,11 @@
5798 5798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Destroy A Prepared Statement Object
5799 5799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** DESTRUCTOR: sqlite3_stmt
5800 5800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5801 5801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_finalize() function is called to delete a [prepared statement].
5802 5802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the most recent evaluation of the statement encountered no errors
5803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or if the statement is never been evaluated, then sqlite3_finalize() returns
5803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or if the statement has never been evaluated, then sqlite3_finalize() returns
5804 5804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_OK. ^If the most recent evaluation of statement S failed, then
5805 5805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_finalize(S) returns the appropriate [error code] or
5806 5806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [extended error code].
5807 5807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5808 5808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_finalize(S) routine can be called at any point during
@@ -5923,12 +5923,12 @@
5923 5923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** within VIEWs, TRIGGERs, CHECK constraints, generated column expressions,
5924 5924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** index expressions, or the WHERE clause of partial indexes.
5925 5925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5926 5926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** For best security, the [SQLITE_DIRECTONLY] flag is recommended for
5927 5927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** all application-defined SQL functions that do not need to be
5928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** used inside of triggers, view, CHECK constraints, or other elements of
5929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the database schema. This flags is especially recommended for SQL
5928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** used inside of triggers, views, CHECK constraints, or other elements of
5929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the database schema. This flag is especially recommended for SQL
5930 5930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** functions that have side effects or reveal internal application state.
5931 5931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Without this flag, an attacker might be able to modify the schema of
5932 5932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a database file to include invocations of the function with parameters
5933 5933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** chosen by the attacker, which the application will then execute when
5934 5934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database file is opened and read.
@@ -5955,11 +5955,11 @@
5955 5955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or aggregate window function. More details regarding the implementation
5956 5956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of aggregate window functions are
5957 5957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [user-defined window functions|available here].
5958 5958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
5959 5959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(If the final parameter to sqlite3_create_function_v2() or
5960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sqlite3_create_window_function() is not NULL, then it is destructor for
5960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3_create_window_function() is not NULL, then it is the destructor for
5961 5961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the application data pointer. The destructor is invoked when the function
5962 5962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is deleted, either by being overloaded or when the database connection
5963 5963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** closes.)^ ^The destructor is also invoked if the call to
5964 5964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_create_function_v2() fails. ^When the destructor callback is
5965 5965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** invoked, it is passed a single argument which is a copy of the application
@@ -6030,11 +6030,11 @@
6030 6030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
6031 6031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
6032 6032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
6033 6033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Text Encodings
6034 6034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** These constant define integer codes that represent the various
6035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** These constants define integer codes that represent the various
6036 6036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** text encodings supported by SQLite.
6037 6037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
6038 6038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_UTF8 1 /* IMP: R-37514-35566 */
6039 6039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_UTF16LE 2 /* IMP: R-03371-37637 */
6040 6040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_UTF16BE 3 /* IMP: R-51971-34154 */
@@ -6122,11 +6122,11 @@
6122 6122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The SQLITE_RESULT_SUBTYPE flag indicates to SQLite that a function might call
6123 6123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_result_subtype()] to cause a sub-type to be associated with its
6124 6124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** result.
6125 6125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Every function that invokes [sqlite3_result_subtype()] should have this
6126 6126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** property. If it does not, then the call to [sqlite3_result_subtype()]
6127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** might become a no-op if the function is used as term in an
6127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** might become a no-op if the function is used as a term in an
6128 6128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [expression index]. On the other hand, SQL functions that never invoke
6129 6129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_result_subtype()] should avoid setting this property, as the
6130 6130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** purpose of this property is to disable certain optimizations that are
6131 6131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** incompatible with subtypes.
6132 6132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -6249,11 +6249,11 @@
6249 6249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6250 6250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^Within the [xUpdate] method of a [virtual table], the
6251 6251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_value_nochange(X) interface returns true if and only if
6252 6252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the column corresponding to X is unchanged by the UPDATE operation
6253 6253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that the xUpdate method call was invoked to implement and if
6254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and the prior [xColumn] method call that was invoked to extracted
6254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the prior [xColumn] method call that was invoked to extract
6255 6255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the value for that column returned without setting a result (probably
6256 6256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** because it queried [sqlite3_vtab_nochange()] and found that the column
6257 6257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** was unchanging). ^Within an [xUpdate] method, any value for which
6258 6258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_value_nochange(X) is true will in all other respects appear
6259 6259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to be a NULL value. If sqlite3_value_nochange(X) is invoked anywhere other
@@ -6355,11 +6355,11 @@
6355 6355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
6356 6356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Copy And Free SQL Values
6357 6357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3_value
6358 6358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6359 6359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_value_dup(V) interface makes a copy of the [sqlite3_value]
6360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** object D and returns a pointer to that copy. ^The [sqlite3_value] returned
6360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** object V and returns a pointer to that copy. ^The [sqlite3_value] returned
6361 6361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is a [protected sqlite3_value] object even if the input is not.
6362 6362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_value_dup(V) interface returns NULL if V is NULL or if a
6363 6363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory allocation fails. ^If V is a [pointer value], then the result
6364 6364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of sqlite3_value_dup(V) is a NULL value.
6365 6365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -6393,11 +6393,11 @@
6393 6393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer
6394 6394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** when first called if N is less than or equal to zero or if a memory
6395 6395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** allocation error occurs.
6396 6396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6397 6397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is
6398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** determined by the N parameter on first successful call. Changing the
6398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** determined by the N parameter on the first successful call. Changing the
6399 6399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value of N in any subsequent call to sqlite3_aggregate_context() within
6400 6400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the same aggregate function instance will not resize the memory
6401 6401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** allocation.)^ Within the xFinal callback, it is customary to set
6402 6402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** N=0 in calls to sqlite3_aggregate_context(C,N) so that no
6403 6403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pointless memory allocations occur.
@@ -6555,11 +6555,11 @@
6555 6555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of as a secret key such that only code that knows the secret key is able
6556 6556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to access the associated data.
6557 6557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6558 6558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Security Warning: These interfaces should not be exposed in scripting
6559 6559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** languages or in other circumstances where it might be possible for an
6560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** an attacker to invoke them. Any agent that can invoke these interfaces
6560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** attacker to invoke them. Any agent that can invoke these interfaces
6561 6561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** can probably also take control of the process.
6562 6562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6563 6563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Database connection client data is only available for SQLite
6564 6564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** version 3.44.0 ([dateof:3.44.0]) and later.
6565 6565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -6669,11 +6669,11 @@
6669 6669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the 3rd parameter to the sqlite3_result_text* interfaces
6670 6670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is non-negative, then as many bytes (not characters) of the text
6671 6671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pointed to by the 2nd parameter are taken as the application-defined
6672 6672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function result. If the 3rd parameter is non-negative, then it
6673 6673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** must be the byte offset into the string where the NUL terminator would
6674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** appear if the string where NUL terminated. If any NUL characters occur
6674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** appear if the string were NUL terminated. If any NUL characters occur
6675 6675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the string at a byte offset that is less than the value of the 3rd
6676 6676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parameter, then the resulting string will contain embedded NULs and the
6677 6677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** result of expressions operating on strings with embedded NULs is undefined.
6678 6678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the 4th parameter to the sqlite3_result_text* interfaces
6679 6679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that
@@ -6727,11 +6727,11 @@
6727 6727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for the P parameter. ^SQLite invokes D with P as its only argument
6728 6728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** when SQLite is finished with P. The T parameter should be a static
6729 6729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** string and preferably a string literal. The sqlite3_result_pointer()
6730 6730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** routine is part of the [pointer passing interface] added for SQLite 3.20.0.
6731 6731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If these routines are called from within the different thread
6732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If these routines are called from within a different thread
6733 6733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** than the one containing the application-defined function that received
6734 6734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the [sqlite3_context] pointer, the results are undefined.
6735 6735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
6736 6736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
6737 6737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API void sqlite3_result_blob64(sqlite3_context*,const void*,
@@ -7133,11 +7133,11 @@
7133 7133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
7134 7134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Return The Schema Name For A Database Connection
7135 7135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3
7136 7136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7137 7137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_db_name(D,N) interface returns a pointer to the schema name
7138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** for the N-th database on database connection D, or a NULL pointer of N is
7138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for the N-th database on database connection D, or a NULL pointer if N is
7139 7139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** out of range. An N value of 0 means the main database file. An N of 1 is
7140 7140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the "temp" schema. Larger values of N correspond to various ATTACH-ed
7141 7141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** databases.
7142 7142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7143 7143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Space to hold the string that is returned by sqlite3_db_name() is managed
@@ -7228,20 +7228,20 @@
7228 7228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7229 7229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_TXN_READ]] <dt>SQLITE_TXN_READ</dt>
7230 7230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The SQLITE_TXN_READ state means that the database is currently
7231 7231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in a read transaction. Content has been read from the database file
7232 7232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** but nothing in the database file has changed. The transaction state
7233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** will advanced to SQLITE_TXN_WRITE if any changes occur and there are
7233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** will be advanced to SQLITE_TXN_WRITE if any changes occur and there are
7234 7234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** no other conflicting concurrent write transactions. The transaction
7235 7235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** state will revert to SQLITE_TXN_NONE following a [ROLLBACK] or
7236 7236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [COMMIT].</dd>
7237 7237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7238 7238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_TXN_WRITE]] <dt>SQLITE_TXN_WRITE</dt>
7239 7239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The SQLITE_TXN_WRITE state means that the database is currently
7240 7240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in a write transaction. Content has been written to the database file
7241 7241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** but has not yet committed. The transaction state will change to
7242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd>
7242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd>
7243 7243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
7244 7244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TXN_NONE 0
7245 7245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TXN_READ 1
7246 7246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TXN_WRITE 2
7247 7247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -7518,11 +7518,11 @@
7518 7518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
7519 7519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
7520 7520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Impose A Limit On Heap Size
7521 7521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7522 7522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These interfaces impose limits on the amount of heap memory that will be
7523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** by all database connections within a single process.
7523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** used by all database connections within a single process.
7524 7524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7525 7525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_soft_heap_limit64() interface sets and/or queries the
7526 7526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** soft limit on the amount of heap memory that may be allocated by SQLite.
7527 7527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^SQLite strives to keep heap memory utilization below the soft heap
7528 7528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** limit by reducing the number of pages held in the page cache
@@ -7576,11 +7576,11 @@
7576 7576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],...) rather than
7577 7577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from the heap.
7578 7578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </ul>)^
7579 7579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7580 7580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The circumstances under which SQLite will enforce the heap limits may
7581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** changes in future releases of SQLite.
7581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** change in future releases of SQLite.
7582 7582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
7583 7583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N);
7584 7584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API sqlite3_int64 sqlite3_hard_heap_limit64(sqlite3_int64 N);
7585 7585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
7586 7586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -7691,12 +7691,12 @@
7691 7691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be tried also.
7692 7692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7693 7693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The entry point is zProc.
7694 7694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(zProc may be 0, in which case SQLite will try to come up with an
7695 7695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** entry point name on its own. It first tries "sqlite3_extension_init".
7696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If that does not work, it constructs a name "sqlite3_X_init" where the
7697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** X is consists of the lower-case equivalent of all ASCII alphabetic
7696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If that does not work, it constructs a name "sqlite3_X_init" where
7697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** X consists of the lower-case equivalent of all ASCII alphabetic
7698 7698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** characters in the filename from the last "/" to the first following
7699 7699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "." and omitting any initial "lib".)^
7700 7700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_load_extension() interface returns
7701 7701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
7702 7702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If an error occurs and pzErrMsg is not 0, then the
@@ -7763,11 +7763,11 @@
7763 7763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that is to be automatically loaded into all new database connections.
7764 7764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7765 7765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(Even though the function prototype shows that xEntryPoint() takes
7766 7766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** no arguments and returns void, SQLite invokes xEntryPoint() with three
7767 7767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** arguments and expects an integer result as if the signature of the
7768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** entry point where as follows:
7768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** entry point were as follows:
7769 7769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7770 7770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <blockquote><pre>
7771 7771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** int xEntryPoint(
7772 7772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3 *db,
7773 7773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** const char **pzErrMsg,
@@ -7927,11 +7927,11 @@
7927 7927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and becomes the argvIndex-th entry in argv. ^(If aConstraintUsage[].omit
7928 7928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is true, then the constraint is assumed to be fully handled by the
7929 7929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** virtual table and might not be checked again by the byte code.)^ ^(The
7930 7930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** aConstraintUsage[].omit flag is an optimization hint. When the omit flag
7931 7931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is left in its default setting of false, the constraint will always be
7932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** checked separately in byte code. If the omit flag is change to true, then
7932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** checked separately in byte code. If the omit flag is changed to true, then
7933 7933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the constraint may or may not be checked in byte code. In other words,
7934 7934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** when the omit flag is true there is no guarantee that the constraint will
7935 7935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not be checked again using byte code.)^
7936 7936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7937 7937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The idxNum and idxStr values are recorded and passed into the
@@ -7953,11 +7953,11 @@
7953 7953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will be returned by the strategy.
7954 7954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7955 7955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The xBestIndex method may optionally populate the idxFlags field with a
7956 7956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mask of SQLITE_INDEX_SCAN_* flags. One such flag is
7957 7957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [SQLITE_INDEX_SCAN_HEX], which if set causes the [EXPLAIN QUERY PLAN]
7958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** output to show the idxNum has hex instead of as decimal. Another flag is
7958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** output to show the idxNum as hex instead of as decimal. Another flag is
7959 7959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_INDEX_SCAN_UNIQUE, which if set indicates that the query plan will
7960 7960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** return at most one row.
7961 7961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7962 7962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Additionally, if xBestIndex sets the SQLITE_INDEX_SCAN_UNIQUE flag, then
7963 7963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLite also assumes that if a call to the xUpdate() method is made as
@@ -8094,11 +8094,11 @@
8094 8094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by the first parameter. ^The name of the module is given by the
8095 8095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** second parameter. ^The third parameter is a pointer to
8096 8096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the implementation of the [virtual table module]. ^The fourth
8097 8097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parameter is an arbitrary client data pointer that is passed through
8098 8098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** into the [xCreate] and [xConnect] methods of the virtual table module
8099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** when a new virtual table is be being created or reinitialized.
8099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** when a new virtual table is being created or reinitialized.
8100 8100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8101 8101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_create_module_v2() interface has a fifth parameter which
8102 8102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is a pointer to a destructor for the pClientData. ^SQLite will
8103 8103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** invoke the destructor function (if it is not NULL) when SQLite
8104 8104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** no longer needs the pClientData pointer. ^The destructor will also
@@ -8259,11 +8259,11 @@
8259 8259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8260 8260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(On success, [SQLITE_OK] is returned and the new [BLOB handle] is stored
8261 8261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in *ppBlob. Otherwise an [error code] is returned and, unless the error
8262 8262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** code is SQLITE_MISUSE, *ppBlob is set to NULL.)^ ^This means that, provided
8263 8263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the API is not misused, it is always safe to call [sqlite3_blob_close()]
8264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** on *ppBlob after this function it returns.
8264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** on *ppBlob after this function returns.
8265 8265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8266 8266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function fails with SQLITE_ERROR if any of the following are true:
8267 8267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <ul>
8268 8268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> ^(Database zDb does not exist)^,
8269 8269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> ^(Table zTable does not exist within database zDb)^,
@@ -8379,11 +8379,11 @@
8379 8379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Return The Size Of An Open BLOB
8380 8380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3_blob
8381 8381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8382 8382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^Returns the size in bytes of the BLOB accessible via the
8383 8383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** successfully opened [BLOB handle] in its only argument. ^The
8384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** incremental blob I/O routines can only read or overwriting existing
8384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** incremental blob I/O routines can only read or overwrite existing
8385 8385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** blob content; they cannot change the size of a blob.
8386 8386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8387 8387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine only works on a [BLOB handle] which has been created
8388 8388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by a prior successful call to [sqlite3_blob_open()] and which has not
8389 8389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** been closed by [sqlite3_blob_close()]. Passing any other pointer in
@@ -8529,11 +8529,11 @@
8529 8529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function that calls sqlite3_initialize().
8530 8530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8531 8531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_mutex_alloc() routine allocates a new
8532 8532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mutex and returns a pointer to it. ^The sqlite3_mutex_alloc()
8533 8533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** routine returns NULL if it is unable to allocate the requested
8534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** mutex. The argument to sqlite3_mutex_alloc() must one of these
8534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** mutex. The argument to sqlite3_mutex_alloc() must be one of these
8535 8535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** integer constants:
8536 8536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8537 8537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <ul>
8538 8538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> SQLITE_MUTEX_FAST
8539 8539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> SQLITE_MUTEX_RECURSIVE
@@ -8762,11 +8762,11 @@
8762 8762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8763 8763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
8764 8764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Retrieve the mutex for a database connection
8765 8765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3
8766 8766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ^This interface returns a pointer the [sqlite3_mutex] object that
8767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^This interface returns a pointer to the [sqlite3_mutex] object that
8768 8768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** serializes access to the [database connection] given in the argument
8769 8769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** when the [threading mode] is Serialized.
8770 8770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the [threading mode] is Single-thread or Multi-thread then this
8771 8771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** routine returns a NULL pointer.
8772 8772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -8885,11 +8885,11 @@
8885 8885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8886 8886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
8887 8887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: SQL Keyword Checking
8888 8888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8889 8889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These routines provide access to the set of SQL language keywords
8890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** recognized by SQLite. Applications can uses these routines to determine
8890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** recognized by SQLite. Applications can use these routines to determine
8891 8891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** whether or not a specific identifier needs to be escaped (for example,
8892 8892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by enclosing in double-quotes) so as not to confuse the parser.
8893 8893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8894 8894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The sqlite3_keyword_count() interface returns the number of distinct
8895 8895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** keywords understood by SQLite.
@@ -9053,11 +9053,11 @@
9053 9053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9054 9054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The [sqlite3_str_value(X)] method returns a pointer to the current
9055 9055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** content of the dynamic string under construction in X. The value
9056 9056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** returned by [sqlite3_str_value(X)] is managed by the sqlite3_str object X
9057 9057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and might be freed or altered by any subsequent method on the same
9058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** [sqlite3_str] object. Applications must not used the pointer returned
9058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [sqlite3_str] object. Applications must not use the pointer returned by
9059 9059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_str_value(X)] after any subsequent method call on the same
9060 9060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** object. ^Applications may change the content of the string returned
9061 9061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by [sqlite3_str_value(X)] as long as they do not write into any bytes
9062 9062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** outside the range of 0 to [sqlite3_str_length(X)] and do not read or
9063 9063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** write any byte after any subsequent sqlite3_str method call.
@@ -9139,11 +9139,11 @@
9139 9139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(<dt>SQLITE_STATUS_PAGECACHE_OVERFLOW</dt>
9140 9140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>This parameter returns the number of bytes of page cache
9141 9141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** allocation which could not be satisfied by the [SQLITE_CONFIG_PAGECACHE]
9142 9142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** buffer and where forced to overflow to [sqlite3_malloc()]. The
9143 9143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** returned value includes allocations that overflowed because they
9144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** where too large (they were larger than the "sz" parameter to
9144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** were too large (they were larger than the "sz" parameter to
9145 9145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because
9146 9146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** no space was left in the page cache.</dd>)^
9147 9147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9148 9148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_STATUS_PAGECACHE_SIZE]] ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
9149 9149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>This parameter records the largest memory allocation request
@@ -9223,53 +9223,55 @@
9223 9223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** checked out.</dd>)^
9224 9224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9225 9225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
9226 9226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>This parameter returns the number of malloc attempts that were
9227 9227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** satisfied using lookaside memory. Only the high-water value is meaningful;
9228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the current value is always zero.)^
9228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the current value is always zero.</dd>)^
9229 9229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9230 9230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE]]
9231 9231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
9232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <dd>This parameter returns the number malloc attempts that might have
9232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>This parameter returns the number of malloc attempts that might have
9233 9233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** been satisfied using lookaside memory but failed due to the amount of
9234 9234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory requested being larger than the lookaside slot size.
9235 9235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Only the high-water value is meaningful;
9236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the current value is always zero.)^
9236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the current value is always zero.</dd>)^
9237 9237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9238 9238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL]]
9239 9239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
9240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <dd>This parameter returns the number malloc attempts that might have
9240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dd>This parameter returns the number of malloc attempts that might have
9241 9241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** been satisfied using lookaside memory but failed due to all lookaside
9242 9242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory already being in use.
9243 9243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Only the high-water value is meaningful;
9244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the current value is always zero.)^
9244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the current value is always zero.</dd>)^
9245 9245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9246 9246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
9247 9247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>This parameter returns the approximate number of bytes of heap
9248 9248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory used by all pager caches associated with the database connection.)^
9249 9249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
9250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** </dd>
9250 9251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9251 9252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]]
9252 9253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(<dt>SQLITE_DBSTATUS_CACHE_USED_SHARED</dt>
9253 9254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>This parameter is similar to DBSTATUS_CACHE_USED, except that if a
9254 9255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pager cache is shared between two or more connections the bytes of heap
9255 9256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory used by that pager cache is divided evenly between the attached
9256 9257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** connections.)^ In other words, if none of the pager caches associated
9257 9258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with the database connection are shared, this request returns the same
9258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** value as DBSTATUS_CACHE_USED. Or, if one or more or the pager caches are
9259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** value as DBSTATUS_CACHE_USED. Or, if one or more of the pager caches are
9259 9260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** shared, the value returned by this call will be smaller than that returned
9260 9261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by DBSTATUS_CACHE_USED. ^The highwater mark associated with
9261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.
9262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.</dd>
9262 9263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9263 9264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
9264 9265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>This parameter returns the approximate number of bytes of heap
9265 9266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory used to store the schema for all databases associated
9266 9267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with the connection - main, temp, and any [ATTACH]-ed databases.)^
9267 9268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The full amount of memory used by the schemas is reported, even if the
9268 9269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** schema memory is shared with other database connections due to
9269 9270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [shared cache mode] being enabled.
9270 9271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0.
9272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** </dd>
9271 9273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9272 9274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
9273 9275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>This parameter returns the approximate number of bytes of heap
9274 9276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and lookaside memory used by all prepared statements associated with
9275 9277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database connection.)^
@@ -9302,11 +9304,11 @@
9302 9304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBSTATUS_CACHE_SPILL]] ^(<dt>SQLITE_DBSTATUS_CACHE_SPILL</dt>
9303 9305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>This parameter returns the number of dirty cache entries that have
9304 9306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** been written to disk in the middle of a transaction due to the page
9305 9307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cache overflowing. Transactions are more efficient if they are written
9306 9308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to disk all at once. When pages spill mid-transaction, that introduces
9307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** additional overhead. This parameter can be used help identify
9309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** additional overhead. This parameter can be used to help identify
9308 9310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** inefficiencies that can be resolved by increasing the cache size.
9309 9311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dd>
9310 9312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9311 9313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_DBSTATUS_DEFERRED_FKS]] ^(<dt>SQLITE_DBSTATUS_DEFERRED_FKS</dt>
9312 9314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>This parameter returns zero for the current value if and only if
@@ -9373,48 +9375,48 @@
9373 9375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** careful use of indices.</dd>
9374 9376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9375 9377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_STMTSTATUS_SORT]] <dt>SQLITE_STMTSTATUS_SORT</dt>
9376 9378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^This is the number of sort operations that have occurred.
9377 9379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A non-zero value in this counter may indicate an opportunity to
9378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** improvement performance through careful use of indices.</dd>
9380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** improve performance through careful use of indices.</dd>
9379 9381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9380 9382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_STMTSTATUS_AUTOINDEX]] <dt>SQLITE_STMTSTATUS_AUTOINDEX</dt>
9381 9383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^This is the number of rows inserted into transient indices that
9382 9384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** were created automatically in order to help joins run faster.
9383 9385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A non-zero value in this counter may indicate an opportunity to
9384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** improvement performance by adding permanent indices that do not
9386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** improve performance by adding permanent indices that do not
9385 9387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** need to be reinitialized each time the statement is run.</dd>
9386 9388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9387 9389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_STMTSTATUS_VM_STEP]] <dt>SQLITE_STMTSTATUS_VM_STEP</dt>
9388 9390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^This is the number of virtual machine operations executed
9389 9391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by the prepared statement if that number is less than or equal
9390 9392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to 2147483647. The number of virtual machine operations can be
9391 9393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** used as a proxy for the total work done by the prepared statement.
9392 9394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the number of virtual machine operations exceeds 2147483647
9393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** then the value returned by this statement status code is undefined.
9395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then the value returned by this statement status code is undefined.</dd>
9394 9396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9395 9397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_STMTSTATUS_REPREPARE]] <dt>SQLITE_STMTSTATUS_REPREPARE</dt>
9396 9398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^This is the number of times that the prepare statement has been
9397 9399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** automatically regenerated due to schema changes or changes to
9398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** [bound parameters] that might affect the query plan.
9400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [bound parameters] that might affect the query plan.</dd>
9399 9401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9400 9402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_STMTSTATUS_RUN]] <dt>SQLITE_STMTSTATUS_RUN</dt>
9401 9403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^This is the number of times that the prepared statement has
9402 9404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** been run. A single "run" for the purposes of this counter is one
9403 9405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or more calls to [sqlite3_step()] followed by a call to [sqlite3_reset()].
9404 9406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The counter is incremented on the first [sqlite3_step()] call of each
9405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** cycle.
9407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** cycle.</dd>
9406 9408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9407 9409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_STMTSTATUS_FILTER_MISS]]
9408 9410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_STMTSTATUS_FILTER HIT]]
9409 9411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dt>SQLITE_STMTSTATUS_FILTER_HIT<br>
9410 9412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_STMTSTATUS_FILTER_MISS</dt>
9411 9413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^SQLITE_STMTSTATUS_FILTER_HIT is the number of times that a join
9412 9414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** step was bypassed because a Bloom filter returned not-found. The
9413 9415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** corresponding SQLITE_STMTSTATUS_FILTER_MISS value is the number of
9414 9416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** times that the Bloom filter returned a find, and thus the join step
9415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** had to be processed as normal.
9417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** had to be processed as normal.</dd>
9416 9418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9417 9419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_STMTSTATUS_MEMUSED]] <dt>SQLITE_STMTSTATUS_MEMUSED</dt>
9418 9420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^This is the approximate number of bytes of heap memory
9419 9421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** used to store the prepared statement. ^This value is not actually
9420 9422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a counter, and so the resetFlg parameter to sqlite3_stmt_status()
@@ -9515,31 +9517,31 @@
9515 9517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[the xCreate() page cache methods]]
9516 9518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^SQLite invokes the xCreate() method to construct a new cache instance.
9517 9519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLite will typically create one cache instance for each open database file,
9518 9520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** though this is not guaranteed. ^The
9519 9521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** first parameter, szPage, is the size in bytes of the pages that must
9520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be allocated by the cache. ^szPage will always a power of two. ^The
9522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be allocated by the cache. ^szPage will always be a power of two. ^The
9521 9523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** second parameter szExtra is a number of bytes of extra storage
9522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** associated with each page cache entry. ^The szExtra parameter will
9524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** associated with each page cache entry. ^The szExtra parameter will be
9523 9525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a number less than 250. SQLite will use the
9524 9526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** extra szExtra bytes on each page to store metadata about the underlying
9525 9527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database page on disk. The value passed into szExtra depends
9526 9528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on the SQLite version, the target platform, and how SQLite was compiled.
9527 9529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The third argument to xCreate(), bPurgeable, is true if the cache being
9528 9530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** created will be used to cache database pages of a file stored on disk, or
9529 9531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** false if it is used for an in-memory database. The cache implementation
9530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** does not have to do anything special based with the value of bPurgeable;
9532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** does not have to do anything special based upon the value of bPurgeable;
9531 9533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it is purely advisory. ^On a cache where bPurgeable is false, SQLite will
9532 9534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** never invoke xUnpin() except to deliberately delete a page.
9533 9535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^In other words, calls to xUnpin() on a cache with bPurgeable set to
9534 9536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** false will always have the "discard" flag set to true.
9535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ^Hence, a cache created with bPurgeable false will
9537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ^Hence, a cache created with bPurgeable set to false will
9536 9538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** never contain any unpinned pages.
9537 9539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9538 9540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[the xCachesize() page cache method]]
9539 9541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(The xCachesize() method may be called at any time by SQLite to set the
9540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** suggested maximum cache-size (number of pages stored by) the cache
9542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** suggested maximum cache-size (number of pages stored) for the cache
9541 9543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** instance passed as the first argument. This is the value configured using
9542 9544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the SQLite "[PRAGMA cache_size]" command.)^ As with the bPurgeable
9543 9545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parameter, the implementation is not required to do anything with this
9544 9546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value; it is advisory only.
9545 9547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -9562,16 +9564,16 @@
9562 9564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9563 9565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the requested page is already in the page cache, then the page cache
9564 9566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** implementation must return a pointer to the page buffer with its content
9565 9567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** intact. If the requested page is not already in the cache, then the
9566 9568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cache implementation should use the value of the createFlag
9567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** parameter to help it determined what action to take:
9569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** parameter to help it determine what action to take:
9568 9570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9569 9571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <table border=1 width=85% align=center>
9570 9572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <tr><th> createFlag <th> Behavior when page is not already in cache
9571 9573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <tr><td> 0 <td> Do not allocate a new page. Return NULL.
9572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <tr><td> 1 <td> Allocate a new page if it easy and convenient to do so.
9574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <tr><td> 1 <td> Allocate a new page if it is easy and convenient to do so.
9573 9575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Otherwise return NULL.
9574 9576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <tr><td> 2 <td> Make every effort to allocate a new page. Only return
9575 9577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** NULL if allocating a new page is effectively impossible.
9576 9578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </table>
9577 9579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -9584,11 +9586,11 @@
9584 9586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[the xUnpin() page cache method]]
9585 9587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^xUnpin() is called by SQLite with a pointer to a currently pinned page
9586 9588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** as its second argument. If the third parameter, discard, is non-zero,
9587 9589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then the page must be evicted from the cache.
9588 9590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If the discard parameter is
9589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** zero, then the page may be discarded or retained at the discretion of
9591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** zero, then the page may be discarded or retained at the discretion of the
9590 9592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** page cache implementation. ^The page cache implementation
9591 9593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** may choose to evict unpinned pages at any time.
9592 9594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9593 9595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The cache must not perform any reference counting. A single
9594 9596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** call to xUnpin() unpins the page regardless of the number of prior calls
@@ -9602,11 +9604,11 @@
9602 9604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to be pinned.
9603 9605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9604 9606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When SQLite calls the xTruncate() method, the cache must discard all
9605 9607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** existing cache entries with page numbers (keys) greater than or equal
9606 9608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the value of the iLimit parameter passed to xTruncate(). If any
9607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of these pages are pinned, they are implicitly unpinned, meaning that
9609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of these pages are pinned, they become implicitly unpinned, meaning that
9608 9610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** they can be safely discarded.
9609 9611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9610 9612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[the xDestroy() page cache method]]
9611 9613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The xDestroy() method is used to delete a cache allocated by xCreate().
9612 9614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** All resources associated with the specified cache should be freed. ^After
@@ -9782,11 +9784,11 @@
9782 9784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_backup_step(), the source database may be modified mid-way
9783 9785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** through the backup process. ^If the source database is modified by an
9784 9786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** external process or via a database connection other than the one being
9785 9787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** used by the backup operation, then the backup will be automatically
9786 9788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** restarted by the next call to sqlite3_backup_step(). ^If the source
9787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** database is modified by the using the same database connection as is used
9789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database is modified by using the same database connection as is used
9788 9790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by the backup operation, then the backup database is automatically
9789 9791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** updated at the same time.
9790 9792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9791 9793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[sqlite3_backup_finish()]] <b>sqlite3_backup_finish()</b>
9792 9794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -9799,11 +9801,11 @@
9799 9801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** active write-transaction on the destination database is rolled back.
9800 9802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The [sqlite3_backup] object is invalid
9801 9803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and may not be used following a call to sqlite3_backup_finish().
9802 9804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9803 9805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The value returned by sqlite3_backup_finish is [SQLITE_OK] if no
9804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** sqlite3_backup_step() errors occurred, regardless or whether or not
9806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3_backup_step() errors occurred, regardless of whether or not
9805 9807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_backup_step() completed.
9806 9808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If an out-of-memory condition or IO error occurred during any prior
9807 9809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_backup_step() call on the same [sqlite3_backup] object, then
9808 9810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_backup_finish() returns the corresponding [error code].
9809 9811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -9901,11 +9903,11 @@
9901 9903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** identity of the database connection (the blocking connection) that
9902 9904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** has locked the required resource is stored internally. ^After an
9903 9905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** application receives an SQLITE_LOCKED error, it may call the
9904 9906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_unlock_notify() method with the blocked connection handle as
9905 9907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the first argument to register for a callback that will be invoked
9906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** when the blocking connections current transaction is concluded. ^The
9908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** when the blocking connection's current transaction is concluded. ^The
9907 9909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
9908 9910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** call that concludes the blocking connection's transaction.
9909 9911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9910 9912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(If sqlite3_unlock_notify() is called in a multi-threaded application,
9911 9913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** there is a chance that the blocking connection will have already
@@ -9921,11 +9923,11 @@
9921 9923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(There may be at most one unlock-notify callback registered by a
9922 9924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** blocked connection. If sqlite3_unlock_notify() is called when the
9923 9925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** blocked connection already has a registered unlock-notify callback,
9924 9926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is
9925 9927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** called with a NULL pointer as its second argument, then any existing
9926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** unlock-notify callback is canceled. ^The blocked connections
9928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** unlock-notify callback is canceled. ^The blocked connection's
9927 9929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** unlock-notify callback may also be canceled by closing the blocked
9928 9930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** connection using [sqlite3_close()].
9929 9931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
9930 9932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The unlock-notify callback is not reentrant. If an application invokes
9931 9933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** any sqlite3_xxx API functions from within an unlock-notify callback, a
@@ -10319,11 +10321,11 @@
10319 10321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** where X is an integer. If X is zero, then the [virtual table] whose
10320 10322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [xCreate] or [xConnect] method invoked [sqlite3_vtab_config()] does not
10321 10323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** support constraints. In this configuration (which is the default) if
10322 10324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a call to the [xUpdate] method returns [SQLITE_CONSTRAINT], then the entire
10323 10325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** statement is rolled back as if [ON CONFLICT | OR ABORT] had been
10324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** specified as part of the users SQL statement, regardless of the actual
10326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** specified as part of the user's SQL statement, regardless of the actual
10325 10327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ON CONFLICT mode specified.
10326 10328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10327 10329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If X is non-zero, then the virtual table implementation guarantees
10328 10330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that if [xUpdate] returns [SQLITE_CONSTRAINT], it will do so before
10329 10331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** any modifications to internal or persistent data structures have been made.
@@ -10353,11 +10355,11 @@
10353 10355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dd>
10354 10356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10355 10357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_VTAB_INNOCUOUS]]<dt>SQLITE_VTAB_INNOCUOUS</dt>
10356 10358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>Calls of the form
10357 10359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_vtab_config](db,SQLITE_VTAB_INNOCUOUS) from within the
10358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the [xConnect] or [xCreate] methods of a [virtual table] implementation
10360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [xConnect] or [xCreate] methods of a [virtual table] implementation
10359 10361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** identify that virtual table as being safe to use from within triggers
10360 10362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and views. Conceptually, the SQLITE_VTAB_INNOCUOUS tag means that the
10361 10363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** virtual table can do no serious harm even if it is controlled by a
10362 10364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** malicious hacker. Developers should avoid setting the SQLITE_VTAB_INNOCUOUS
10363 10365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** flag unless absolutely necessary.
@@ -10521,21 +10523,21 @@
10521 10523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <tr><td>2<td>no<td>yes<td>yes
10522 10524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <tr><td>3<td>yes<td>yes<td>yes
10523 10525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </table>
10524 10526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10525 10527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^For the purposes of comparing virtual table output values to see if the
10526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** values are same value for sorting purposes, two NULL values are considered
10528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** values are the same value for sorting purposes, two NULL values are considered
10527 10529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to be the same. In other words, the comparison operator is "IS"
10528 10530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (or "IS NOT DISTINCT FROM") and not "==".
10529 10531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10530 10532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If a virtual table implementation is unable to meet the requirements
10531 10533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** specified above, then it must not set the "orderByConsumed" flag in the
10532 10534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_index_info] object or an incorrect answer may result.
10533 10535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10534 10536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^A virtual table implementation is always free to return rows in any order
10535 10537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it wants, as long as the "orderByConsumed" flag is not set. ^When the
10536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the "orderByConsumed" flag is unset, the query planner will add extra
10538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "orderByConsumed" flag is unset, the query planner will add extra
10537 10539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [bytecode] to ensure that the final results returned by the SQL query are
10538 10540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ordered correctly. The use of the "orderByConsumed" flag and the
10539 10541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_vtab_distinct() interface is merely an optimization. ^Careful
10540 10542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** use of the sqlite3_vtab_distinct() interface and the "orderByConsumed"
10541 10543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** flag might help queries against a virtual table to run faster. Being
@@ -10628,11 +10630,11 @@
10628 10630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10629 10631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The X parameter in a call to sqlite3_vtab_in_first(X,P) or
10630 10632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_vtab_in_next(X,P) should be one of the parameters to the
10631 10633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** xFilter method which invokes these routines, and specifically
10632 10634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a parameter that was previously selected for all-at-once IN constraint
10633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** processing use the [sqlite3_vtab_in()] interface in the
10635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** processing using the [sqlite3_vtab_in()] interface in the
10634 10636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [xBestIndex|xBestIndex method]. ^(If the X parameter is not
10635 10637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an xFilter argument that was selected for all-at-once IN constraint
10636 10638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** processing, then these routines return [SQLITE_ERROR].)^
10637 10639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10638 10640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(Use these routines to access all values on the right-hand side
@@ -10683,11 +10685,11 @@
10683 10685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** right-hand operand is not known, then *V is set to a NULL pointer.
10684 10686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sqlite3_vtab_rhs_value(P,J,V) interface returns SQLITE_OK if
10685 10687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and only if *V is set to a value. ^The sqlite3_vtab_rhs_value(P,J,V)
10686 10688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** inteface returns SQLITE_NOTFOUND if the right-hand side of the J-th
10687 10689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** constraint is not available. ^The sqlite3_vtab_rhs_value() interface
10688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** can return an result code other than SQLITE_OK or SQLITE_NOTFOUND if
10690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** can return a result code other than SQLITE_OK or SQLITE_NOTFOUND if
10689 10691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** something goes wrong.
10690 10692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10691 10693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The sqlite3_vtab_rhs_value() interface is usually only successful if
10692 10694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the right-hand operand of a constraint is a literal value in the original
10693 10695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQL statement. If the right-hand operand is an expression or a reference
@@ -10711,12 +10713,12 @@
10711 10713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10712 10714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Conflict resolution modes
10713 10715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: {conflict resolution mode}
10714 10716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10715 10717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These constants are returned by [sqlite3_vtab_on_conflict()] to
10716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** inform a [virtual table] implementation what the [ON CONFLICT] mode
10717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is for the SQL statement being evaluated.
10718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** inform a [virtual table] implementation of the [ON CONFLICT] mode
10719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for the SQL statement being evaluated.
10718 10720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10719 10721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Note that the [SQLITE_IGNORE] constant is also used as a potential
10720 10722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** return value from the [sqlite3_set_authorizer()] callback and that
10721 10723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [SQLITE_ABORT] is also a [result code].
10722 10724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -10752,43 +10754,43 @@
10752 10754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the total number of rows examined by all iterations of the X-th loop.</dd>
10753 10755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10754 10756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_SCANSTAT_EST]] <dt>SQLITE_SCANSTAT_EST</dt>
10755 10757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^The "double" variable pointed to by the V parameter will be set to the
10756 10758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** query planner's estimate for the average number of rows output from each
10757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** iteration of the X-th loop. If the query planner's estimates was accurate,
10759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** iteration of the X-th loop. If the query planner's estimate was accurate,
10758 10760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then this value will approximate the quotient NVISIT/NLOOP and the
10759 10761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** product of this value for all prior loops with the same SELECTID will
10760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be the NLOOP value for the current loop.
10762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be the NLOOP value for the current loop.</dd>
10761 10763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10762 10764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_SCANSTAT_NAME]] <dt>SQLITE_SCANSTAT_NAME</dt>
10763 10765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^The "const char *" variable pointed to by the V parameter will be set
10764 10766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to a zero-terminated UTF-8 string containing the name of the index or table
10765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** used for the X-th loop.
10767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** used for the X-th loop.</dd>
10766 10768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10767 10769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_SCANSTAT_EXPLAIN]] <dt>SQLITE_SCANSTAT_EXPLAIN</dt>
10768 10770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^The "const char *" variable pointed to by the V parameter will be set
10769 10771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
10770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** description for the X-th loop.
10772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** description for the X-th loop.</dd>
10771 10773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10772 10774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
10773 10775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>^The "int" variable pointed to by the V parameter will be set to the
10774 10776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** id for the X-th query plan element. The id value is unique within the
10775 10777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** statement. The select-id is the same value as is output in the first
10776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** column of an [EXPLAIN QUERY PLAN] query.
10778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** column of an [EXPLAIN QUERY PLAN] query.</dd>
10777 10779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10778 10780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
10779 10781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The "int" variable pointed to by the V parameter will be set to the
10780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the id of the parent of the current query element, if applicable, or
10782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** id of the parent of the current query element, if applicable, or
10781 10783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to zero if the query element has no parent. This is the same value as
10782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** returned in the second column of an [EXPLAIN QUERY PLAN] query.
10784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** returned in the second column of an [EXPLAIN QUERY PLAN] query.</dd>
10783 10785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10784 10786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[SQLITE_SCANSTAT_NCYCLE]] <dt>SQLITE_SCANSTAT_NCYCLE</dt>
10785 10787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The sqlite3_int64 output value is set to the number of cycles,
10786 10788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** according to the processor time-stamp counter, that elapsed while the
10787 10789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** query element was being processed. This value is not available for
10788 10790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** all query elements - if it is unavailable the output variable is
10789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** set to -1.
10791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** set to -1.</dd>
10790 10792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dl>
10791 10793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
10792 10794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_SCANSTAT_NLOOP 0
10793 10795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_SCANSTAT_NVISIT 1
10794 10796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_SCANSTAT_EST 2
@@ -10825,12 +10827,12 @@
10825 10827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the EXPLAIN QUERY PLAN output) are available. Invoking API
10826 10828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_stmt_scanstatus() is equivalent to calling
10827 10829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_stmt_scanstatus_v2() with a zeroed flags parameter.
10828 10830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10829 10831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Parameter "idx" identifies the specific query element to retrieve statistics
10830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** for. Query elements are numbered starting from zero. A value of -1 may be
10831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to query for statistics regarding the entire query. ^If idx is out of range
10832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for. Query elements are numbered starting from zero. A value of -1 may
10833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** retrieve statistics for the entire query. ^If idx is out of range
10832 10834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - less than -1 or greater than or equal to the total number of query
10833 10835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** elements used to implement the statement - a non-zero value is returned and
10834 10836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the variable that pOut points to is unchanged.
10835 10837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10836 10838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: [sqlite3_stmt_scanstatus_reset()]
@@ -10869,11 +10871,11 @@
10869 10871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
10870 10872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Flush caches to disk mid-transaction
10871 10873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** METHOD: sqlite3
10872 10874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10873 10875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^If a write-transaction is open on [database connection] D when the
10874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** [sqlite3_db_cacheflush(D)] interface invoked, any dirty
10876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [sqlite3_db_cacheflush(D)] interface is invoked, any dirty
10875 10877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pages in the pager-cache that are not currently in use are written out
10876 10878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to disk. A dirty page may be in use if a database cursor created by an
10877 10879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** active SQL statement is reading from it, or if it is page 1 of a database
10878 10880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** file (page 1 is always "in use"). ^The [sqlite3_db_cacheflush(D)]
10879 10881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** interface flushes caches for all schemas - "main", "temp", and
@@ -10983,12 +10985,12 @@
10983 10985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** operation; or 1 for inserts, updates, or deletes invoked by top-level
10984 10986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** triggers; or 2 for changes resulting from triggers called by top-level
10985 10987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** triggers; and so forth.
10986 10988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
10987 10989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When the [sqlite3_blob_write()] API is used to update a blob column,
10988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the pre-update hook is invoked with SQLITE_DELETE. This is because the
10989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** in this case the new values are not available. In this case, when a
10990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the pre-update hook is invoked with SQLITE_DELETE, because
10991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the new values are not yet available. In this case, when a
10990 10992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** callback made with op==SQLITE_DELETE is actually a write using the
10991 10993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_blob_write() API, the [sqlite3_preupdate_blobwrite()] returns
10992 10994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the index of the column being written. In other cases, where the
10993 10995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pre-update hook is being invoked for some other reason, including a
10994 10996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** regular DELETE, sqlite3_preupdate_blobwrite() returns -1.
@@ -11237,20 +11239,20 @@
11237 11239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is written into *P.
11238 11240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
11239 11241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** For an ordinary on-disk database file, the serialization is just a
11240 11242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** copy of the disk file. For an in-memory database or a "TEMP" database,
11241 11243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the serialization is the same sequence of bytes which would be written
11242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to disk if that database where backed up to disk.
11244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to disk if that database were backed up to disk.
11243 11245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
11244 11246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The usual case is that sqlite3_serialize() copies the serialization of
11245 11247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database into memory obtained from [sqlite3_malloc64()] and returns
11246 11248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a pointer to that memory. The caller is responsible for freeing the
11247 11249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** returned value to avoid a memory leak. However, if the F argument
11248 11250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contains the SQLITE_SERIALIZE_NOCOPY bit, then no memory allocations
11249 11251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are made, and the sqlite3_serialize() function will return a pointer
11250 11252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the contiguous memory representation of the database that SQLite
11251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is currently using for that database, or NULL if the no such contiguous
11253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is currently using for that database, or NULL if no such contiguous
11252 11254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory representation of the database exists. A contiguous memory
11253 11255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** representation of the database will usually only exist if there has
11254 11256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** been a prior call to [sqlite3_deserialize(D,S,...)] with the same
11255 11257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** values of D and S.
11256 11258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The size of the database is written into *P even if the
@@ -11317,11 +11319,11 @@
11317 11319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
11318 11320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The sqlite3_deserialize() interface will fail with SQLITE_BUSY if the
11319 11321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database is currently in a read transaction or is involved in a backup
11320 11322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** operation.
11321 11323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
11322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** It is not possible to deserialized into the TEMP database. If the
11324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** It is not possible to deserialize into the TEMP database. If the
11323 11325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the
11324 11326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function returns SQLITE_ERROR.
11325 11327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
11326 11328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The deserialized database should not be in [WAL mode]. If the database
11327 11329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is in WAL mode, then any attempt to use the database file will result
@@ -11339,19 +11341,19 @@
11339 11341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
11340 11342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_deserialize(
11341 11343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db, /* The database connection */
11342 11344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSchema, /* Which DB to reopen with the deserialization */
11343 11345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned char *pData, /* The serialized database content */
11344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_int64 szDb, /* Number bytes in the deserialization */
11346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_int64 szDb, /* Number of bytes in the deserialization */
11345 11347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 szBuf, /* Total size of buffer pData[] */
11346 11348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned mFlags /* Zero or more SQLITE_DESERIALIZE_* flags */
11347 11349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
11348 11350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
11349 11351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
11350 11352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Flags for sqlite3_deserialize()
11351 11353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
11352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The following are allowed values for 6th argument (the F argument) to
11354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The following are allowed values for the 6th argument (the F argument) to
11353 11355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the [sqlite3_deserialize(D,S,P,N,M,F)] interface.
11354 11356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
11355 11357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The SQLITE_DESERIALIZE_FREEONCLOSE means that the database serialization
11356 11358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the P argument is held in memory obtained from [sqlite3_malloc64()]
11357 11359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and that SQLite should take ownership of this memory and automatically
@@ -11872,13 +11874,14 @@
11872 11874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This may appear to have some counter-intuitive effects if a single row
11873 11875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is written to more than once during a session. For example, if a row
11874 11876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is inserted while a session object is enabled, then later deleted while
11875 11877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the same session object is disabled, no INSERT record will appear in the
11876 11878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** changeset, even though the delete took place while the session was disabled.
11877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Or, if one field of a row is updated while a session is disabled, and
11878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** another field of the same row is updated while the session is enabled, the
11879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** resulting changeset will contain an UPDATE change that updates both fields.
11879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Or, if one field of a row is updated while a session is enabled, and
11880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then another field of the same row is updated while the session is disabled,
11881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the resulting changeset will contain an UPDATE change that updates both
11882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fields.
11880 11883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
11881 11884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3session_changeset(
11882 11885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_session *pSession, /* Session object */
11883 11886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *pnChangeset, /* OUT: Size of buffer at *ppChangeset */
11884 11887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void **ppChangeset /* OUT: Buffer containing changeset */
@@ -12083,11 +12086,11 @@
12083 12086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Flags for sqlite3changeset_start_v2
12084 12087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12085 12088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The following flags may passed via the 4th parameter to
12086 12089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3changeset_start_v2] and [sqlite3changeset_start_v2_strm]:
12087 12090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <dt>SQLITE_CHANGESETAPPLY_INVERT <dd>
12091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <dt>SQLITE_CHANGESETSTART_INVERT <dd>
12089 12092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Invert the changeset while iterating through it. This is equivalent to
12090 12093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** inverting a changeset using sqlite3changeset_invert() before applying it.
12091 12094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** It is an error to specify this flag with a patchset.
12092 12095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
12093 12096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CHANGESETSTART_INVERT 0x0002
@@ -12628,17 +12631,26 @@
12628 12631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply a changeset or patchset to a database. These functions attempt to
12629 12632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** update the "main" database attached to handle db with the changes found in
12630 12633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the changeset passed via the second and third arguments.
12631 12634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12632 12635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The fourth argument (xFilter) passed to these functions is the "filter
12633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** callback". If it is not NULL, then for each table affected by at least one
12634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** change in the changeset, the filter callback is invoked with
12635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the table name as the second argument, and a copy of the context pointer
12636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** passed as the sixth argument as the first. If the "filter callback"
12637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** returns zero, then no attempt is made to apply any changes to the table.
12638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Otherwise, if the return value is non-zero or the xFilter argument to
12639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is NULL, all changes related to the table are attempted.
12636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** callback". This may be passed NULL, in which case all changes in the
12637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** changeset are applied to the database. For sqlite3changeset_apply() and
12638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3_changeset_apply_v2(), if it is not NULL, then it is invoked once
12639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for each table affected by at least one change in the changeset. In this
12640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** case the table name is passed as the second argument, and a copy of
12641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the context pointer passed as the sixth argument to apply() or apply_v2()
12642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** as the first. If the "filter callback" returns zero, then no attempt is
12643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** made to apply any changes to the table. Otherwise, if the return value is
12644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** non-zero, all changes related to the table are attempted.
12645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
12646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** For sqlite3_changeset_apply_v3(), the xFilter callback is invoked once
12647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** per change. The second argument in this case is an sqlite3_changeset_iter
12648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that may be queried using the usual APIs for the details of the current
12649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** change. If the "filter callback" returns zero in this case, then no attempt
12650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is made to apply the current change. If it returns non-zero, the change
12651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is applied.
12640 12652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12641 12653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** For each table that is not excluded by the filter callback, this function
12642 12654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tests that the target database contains a compatible table. A table is
12643 12655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** considered compatible if all of the following are true:
12644 12656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -12655,15 +12667,15 @@
12655 12667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** changes associated with the table are applied. A warning message is issued
12656 12668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** via the sqlite3_log() mechanism with the error code SQLITE_SCHEMA. At most
12657 12669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** one such warning is issued for each table in the changeset.
12658 12670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12659 12671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** For each change for which there is a compatible table, an attempt is made
12660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to modify the table contents according to the UPDATE, INSERT or DELETE
12661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** change. If a change cannot be applied cleanly, the conflict handler
12662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** function passed as the fifth argument to sqlite3changeset_apply() may be
12663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** invoked. A description of exactly when the conflict handler is invoked for
12664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** each type of change is below.
12672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to modify the table contents according to each UPDATE, INSERT or DELETE
12673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** change that is not excluded by a filter callback. If a change cannot be
12674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** applied cleanly, the conflict handler function passed as the fifth argument
12675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to sqlite3changeset_apply() may be invoked. A description of exactly when
12676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the conflict handler is invoked for each type of change is below.
12665 12677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12666 12678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Unlike the xFilter argument, xConflict may not be passed NULL. The results
12667 12679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of passing anything other than a valid function pointer as the xConflict
12668 12680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument are undefined.
12669 12681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -12801,10 +12813,27 @@
12801 12813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pChangeset, /* Changeset blob */
12802 12814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xFilter)(
12803 12815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
12804 12816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTab /* Table name */
12805 12817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
12818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xConflict)(
12819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
12820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
12821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p /* Handle describing change and conflict */
12822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
12823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* First argument passed to xConflict */
12824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void **ppRebase, int *pnRebase, /* OUT: Rebase data */
12825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int flags /* SESSION_CHANGESETAPPLY_* flags */
12826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
12827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_API int sqlite3changeset_apply_v3(
12828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db, /* Apply change to "main" db of this handle */
12829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nChangeset, /* Size of changeset in bytes */
12830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pChangeset, /* Changeset blob */
12831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xFilter)(
12832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
12833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p /* Handle describing change */
12834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
12806 12835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xConflict)(
12807 12836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
12808 12837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
12809 12838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
12810 12839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
@@ -13220,10 +13249,27 @@
13220 13249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pIn, /* First arg for xInput */
13221 13250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xFilter)(
13222 13251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
13223 13252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTab /* Table name */
13224 13253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
13254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xConflict)(
13255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
13256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
13257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p /* Handle describing change and conflict */
13258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
13259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* First argument passed to xConflict */
13260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void **ppRebase, int *pnRebase,
13261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int flags
13262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
13263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_API int sqlite3changeset_apply_v3_strm(
13264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db, /* Apply change to "main" db of this handle */
13265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
13266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pIn, /* First arg for xInput */
13267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xFilter)(
13268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
13269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p
13270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
13225 13271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xConflict)(
13226 13272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
13227 13273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
13228 13274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
13229 13275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
@@ -15173,11 +15219,11 @@
15173 15219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15174 15220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** GCC does not define the offsetof() macro so we'll have to do it
15175 15221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ourselves.
15176 15222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15177 15223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef offsetof
15178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define offsetof(STRUCTURE,FIELD) ((size_t)((char*)&((STRUCTURE*)0)->FIELD))
15224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define offsetof(ST,M) ((size_t)((char*)&((ST*)0)->M - (char*)0))
15179 15225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
15180 15226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15181 15227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15182 15228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Work around C99 "flex-array" syntax for pre-C99 compilers, so as
15183 15229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to avoid complaints from -fsanitize=strict-bounds.
@@ -15439,12 +15485,12 @@
15439 15485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15440 15486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macro SMXV(n) return the maximum value that can be held in variable n,
15441 15487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** assuming n is a signed integer type. UMXV(n) is similar for unsigned
15442 15488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** integer types.
15443 15489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SMXV(n) ((((i64)1)<<(sizeof(n)-1))-1)
15445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define UMXV(n) ((((i64)1)<<(sizeof(n)))-1)
15490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SMXV(n) ((((i64)1)<<(sizeof(n)*8-1))-1)
15491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define UMXV(n) ((((i64)1)<<(sizeof(n)*8))-1)
15446 15492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15447 15493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15448 15494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Round up a number to the next larger multiple of 8. This is used
15449 15495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to force 8-byte alignment on 64-bit architectures.
15450 15496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -15561,10 +15607,12 @@
15561 15607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00008000 After all FROM-clause analysis
15562 15608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00010000 Beginning of DELETE/INSERT/UPDATE processing
15563 15609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00020000 Transform DISTINCT into GROUP BY
15564 15610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00040000 SELECT tree dump after all code has been generated
15565 15611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00080000 NOT NULL strength reduction
15612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x00100000 Pointers are all shown as zero
15613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x00200000 EXISTS-to-JOIN optimization
15566 15614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15567 15615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15568 15616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15569 15617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros for "wheretrace"
15570 15618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -15605,10 +15653,11 @@
15605 15653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
15606 15654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00010000 Show more detail when printing WHERE terms
15607 15655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00020000 Show WHERE terms returned from whereScanNext()
15608 15656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00040000 Solver overview messages
15609 15657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00080000 Star-query heuristic
15658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x00100000 Pointers are all shown as zero
15610 15659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15611 15660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15612 15661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15613 15662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15614 15663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** An instance of the following structure is used to store the busy-handler
@@ -15677,11 +15726,11 @@
15677 15726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** one parameter that destructors normally want. So we have to introduce
15678 15727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this magic value that the code knows to handle differently. Any
15679 15728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pointer will work here as long as it is distinct from SQLITE_STATIC
15680 15729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and SQLITE_TRANSIENT.
15681 15730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_DYNAMIC ((sqlite3_destructor_type)sqlite3OomClear)
15731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_DYNAMIC ((sqlite3_destructor_type)sqlite3RowSetClear)
15683 15732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15684 15733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15685 15734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When SQLITE_OMIT_WSD is defined, it means that the target platform does
15686 15735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not support Writable Static Data (WSD) such as global and static variables.
15687 15736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** All variables must either be on the stack or dynamically allocated from
@@ -16745,10 +16794,11 @@
16745 16794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
16746 16795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16747 16796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeInsert(BtCursor*, const BtreePayload *pPayload,
16748 16797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags, int seekResult);
16749 16798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeFirst(BtCursor*, int *pRes);
16799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3BtreeIsEmpty(BtCursor *pCur, int *pRes);
16750 16800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor*, int *pRes);
16751 16801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor*, int flags);
16752 16802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeEof(BtCursor*);
16753 16803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor*, int flags);
16754 16804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE i64 sqlite3BtreeIntegerKey(BtCursor*);
@@ -17078,76 +17128,76 @@
17078 17128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Last 32 /* jump0 */
17079 17129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_IfSizeBetween 33 /* jump */
17080 17130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_SorterSort 34 /* jump */
17081 17131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Sort 35 /* jump */
17082 17132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Rewind 36 /* jump0 */
17083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterNext 37 /* jump */
17084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Prev 38 /* jump */
17085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Next 39 /* jump */
17086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxLE 40 /* jump, synopsis: key=r[P3@P4] */
17087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxGT 41 /* jump, synopsis: key=r[P3@P4] */
17088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxLT 42 /* jump, synopsis: key=r[P3@P4] */
17133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfEmpty 37 /* jump, synopsis: if( empty(P1) ) goto P2 */
17134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterNext 38 /* jump */
17135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Prev 39 /* jump */
17136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Next 40 /* jump */
17137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxLE 41 /* jump, synopsis: key=r[P3@P4] */
17138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxGT 42 /* jump, synopsis: key=r[P3@P4] */
17089 17139 { 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]) */
17090 17140 { 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]) */
17091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxGE 45 /* jump, synopsis: key=r[P3@P4] */
17092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetRead 46 /* jump, synopsis: r[P3]=rowset(P1) */
17093 { 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 */
17094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Program 48 /* jump0 */
17095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkIfZero 49 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
17096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfPos 50 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
17141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxLT 45 /* jump, synopsis: key=r[P3@P4] */
17142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxGE 46 /* jump, synopsis: key=r[P3@P4] */
17143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetRead 47 /* jump, synopsis: r[P3]=rowset(P1) */
17144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetTest 48 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
17145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Program 49 /* jump0 */
17146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FkIfZero 50 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
17097 17147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_IsNull 51 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
17098 17148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_NotNull 52 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
17099 17149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Ne 53 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */
17100 17150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Eq 54 /* jump, same as TK_EQ, synopsis: IF r[P3]==r[P1] */
17101 17151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Gt 55 /* jump, same as TK_GT, synopsis: IF r[P3]>r[P1] */
17102 17152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Le 56 /* jump, same as TK_LE, synopsis: IF r[P3]<=r[P1] */
17103 17153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Lt 57 /* jump, same as TK_LT, synopsis: IF r[P3]<r[P1] */
17104 17154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Ge 58 /* jump, same as TK_GE, synopsis: IF r[P3]>=r[P1] */
17105 17155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ElseEq 59 /* jump, same as TK_ESCAPE */
17106 { 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 */
17107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DecrJumpZero 61 /* jump, synopsis: if (--r[P1])==0 goto P2 */
17108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IncrVacuum 62 /* jump */
17109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VNext 63 /* jump */
17110 { 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 */
17111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_PureFunc 65 /* synopsis: r[P3]=func(r[P2@NP]) */
17112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Function 66 /* synopsis: r[P3]=func(r[P2@NP]) */
17113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Return 67
17114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_EndCoroutine 68
17115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_HaltIfNull 69 /* synopsis: if r[P3]=null halt */
17116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Halt 70
17117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Integer 71 /* synopsis: r[P2]=P1 */
17118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Int64 72 /* synopsis: r[P2]=P4 */
17119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_String 73 /* synopsis: r[P2]='P4' (len=P1) */
17120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_BeginSubrtn 74 /* synopsis: r[P2]=NULL */
17121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Null 75 /* synopsis: r[P2..P3]=NULL */
17122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SoftNull 76 /* synopsis: r[P1]=NULL */
17123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Blob 77 /* synopsis: r[P2]=P4 (len=P1) */
17124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Variable 78 /* synopsis: r[P2]=parameter(P1) */
17125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Move 79 /* synopsis: r[P2@P3]=r[P1@P3] */
17126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Copy 80 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
17127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SCopy 81 /* synopsis: r[P2]=r[P1] */
17128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IntCopy 82 /* synopsis: r[P2]=r[P1] */
17129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkCheck 83
17130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResultRow 84 /* synopsis: output=r[P1@P2] */
17131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CollSeq 85
17132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AddImm 86 /* synopsis: r[P1]=r[P1]+P2 */
17133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RealAffinity 87
17134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Cast 88 /* synopsis: affinity(r[P1]) */
17135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Permutation 89
17136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Compare 90 /* synopsis: r[P1@P3] <-> r[P2@P3] */
17137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IsTrue 91 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
17138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ZeroOrNull 92 /* synopsis: r[P2] = 0 OR NULL */
17139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Offset 93 /* synopsis: r[P3] = sqlite_offset(P1) */
17140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Column 94 /* synopsis: r[P3]=PX cursor P1 column P2 */
17141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_TypeCheck 95 /* synopsis: typecheck(r[P1@P2]) */
17142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Affinity 96 /* synopsis: affinity(r[P1@P2]) */
17143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MakeRecord 97 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
17144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Count 98 /* synopsis: r[P2]=count() */
17145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReadCookie 99
17146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SetCookie 100
17147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReopenIdx 101 /* synopsis: root=P2 iDb=P3 */
17148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenRead 102 /* synopsis: root=P2 iDb=P3 */
17156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfPos 60 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
17157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfNotZero 61 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
17158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DecrJumpZero 62 /* jump, synopsis: if (--r[P1])==0 goto P2 */
17159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IncrVacuum 63 /* jump */
17160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VNext 64 /* jump */
17161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Filter 65 /* jump, synopsis: if key(P3@P4) not in filter(P1) goto P2 */
17162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_PureFunc 66 /* synopsis: r[P3]=func(r[P2@NP]) */
17163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Function 67 /* synopsis: r[P3]=func(r[P2@NP]) */
17164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Return 68
17165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_EndCoroutine 69
17166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_HaltIfNull 70 /* synopsis: if r[P3]=null halt */
17167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Halt 71
17168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Integer 72 /* synopsis: r[P2]=P1 */
17169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Int64 73 /* synopsis: r[P2]=P4 */
17170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_String 74 /* synopsis: r[P2]='P4' (len=P1) */
17171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_BeginSubrtn 75 /* synopsis: r[P2]=NULL */
17172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Null 76 /* synopsis: r[P2..P3]=NULL */
17173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SoftNull 77 /* synopsis: r[P1]=NULL */
17174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Blob 78 /* synopsis: r[P2]=P4 (len=P1) */
17175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Variable 79 /* synopsis: r[P2]=parameter(P1) */
17176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Move 80 /* synopsis: r[P2@P3]=r[P1@P3] */
17177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Copy 81 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
17178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SCopy 82 /* synopsis: r[P2]=r[P1] */
17179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IntCopy 83 /* synopsis: r[P2]=r[P1] */
17180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FkCheck 84
17181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ResultRow 85 /* synopsis: output=r[P1@P2] */
17182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CollSeq 86
17183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AddImm 87 /* synopsis: r[P1]=r[P1]+P2 */
17184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RealAffinity 88
17185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Cast 89 /* synopsis: affinity(r[P1]) */
17186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Permutation 90
17187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Compare 91 /* synopsis: r[P1@P3] <-> r[P2@P3] */
17188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IsTrue 92 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
17189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ZeroOrNull 93 /* synopsis: r[P2] = 0 OR NULL */
17190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Offset 94 /* synopsis: r[P3] = sqlite_offset(P1) */
17191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Column 95 /* synopsis: r[P3]=PX cursor P1 column P2 */
17192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_TypeCheck 96 /* synopsis: typecheck(r[P1@P2]) */
17193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Affinity 97 /* synopsis: affinity(r[P1@P2]) */
17194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MakeRecord 98 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
17195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Count 99 /* synopsis: r[P2]=count() */
17196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ReadCookie 100
17197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SetCookie 101
17198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ReopenIdx 102 /* synopsis: root=P2 iDb=P3 */
17149 17199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_BitAnd 103 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
17150 17200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_BitOr 104 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
17151 17201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ShiftLeft 105 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
17152 17202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ShiftRight 106 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
17153 17203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Add 107 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
@@ -17154,87 +17204,88 @@
17154 17204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Subtract 108 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
17155 17205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Multiply 109 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
17156 17206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Divide 110 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
17157 17207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Remainder 111 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
17158 17208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Concat 112 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
17159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenWrite 113 /* synopsis: root=P2 iDb=P3 */
17160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenDup 114
17209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenRead 113 /* synopsis: root=P2 iDb=P3 */
17210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenWrite 114 /* synopsis: root=P2 iDb=P3 */
17161 17211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_BitNot 115 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
17162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenAutoindex 116 /* synopsis: nColumn=P2 */
17163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenEphemeral 117 /* synopsis: nColumn=P2 */
17212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenDup 116
17213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenAutoindex 117 /* synopsis: nColumn=P2 */
17164 17214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_String8 118 /* same as TK_STRING, synopsis: r[P2]='P4' */
17165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterOpen 119
17166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SequenceTest 120 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
17167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenPseudo 121 /* synopsis: P3 columns in r[P2] */
17168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Close 122
17169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ColumnsUsed 123
17170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekScan 124 /* synopsis: Scan-ahead up to P1 rows */
17171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekHit 125 /* synopsis: set P2<=seekHit<=P3 */
17172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Sequence 126 /* synopsis: r[P2]=cursor[P1].ctr++ */
17173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NewRowid 127 /* synopsis: r[P2]=rowid */
17174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Insert 128 /* synopsis: intkey=r[P3] data=r[P2] */
17175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowCell 129
17176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Delete 130
17177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResetCount 131
17178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterCompare 132 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
17179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterData 133 /* synopsis: r[P2]=data */
17180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowData 134 /* synopsis: r[P2]=data */
17181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Rowid 135 /* synopsis: r[P2]=PX rowid of P1 */
17182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NullRow 136
17183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekEnd 137
17184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxInsert 138 /* synopsis: key=r[P2] */
17185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterInsert 139 /* synopsis: key=r[P2] */
17186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxDelete 140 /* synopsis: key=r[P2@P3] */
17187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DeferredSeek 141 /* synopsis: Move P3 to P1.rowid if needed */
17188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxRowid 142 /* synopsis: r[P2]=rowid */
17189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FinishSeek 143
17190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Destroy 144
17191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Clear 145
17192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResetSorter 146
17193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CreateBtree 147 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
17194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SqlExec 148
17195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ParseSchema 149
17196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_LoadAnalysis 150
17197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropTable 151
17198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropIndex 152
17199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropTrigger 153
17215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenEphemeral 119 /* synopsis: nColumn=P2 */
17216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterOpen 120
17217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SequenceTest 121 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
17218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OpenPseudo 122 /* synopsis: P3 columns in r[P2] */
17219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Close 123
17220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ColumnsUsed 124
17221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekScan 125 /* synopsis: Scan-ahead up to P1 rows */
17222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekHit 126 /* synopsis: set P2<=seekHit<=P3 */
17223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Sequence 127 /* synopsis: r[P2]=cursor[P1].ctr++ */
17224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NewRowid 128 /* synopsis: r[P2]=rowid */
17225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Insert 129 /* synopsis: intkey=r[P3] data=r[P2] */
17226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowCell 130
17227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Delete 131
17228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ResetCount 132
17229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterCompare 133 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
17230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterData 134 /* synopsis: r[P2]=data */
17231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowData 135 /* synopsis: r[P2]=data */
17232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Rowid 136 /* synopsis: r[P2]=PX rowid of P1 */
17233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_NullRow 137
17234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SeekEnd 138
17235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxInsert 139 /* synopsis: key=r[P2] */
17236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SorterInsert 140 /* synopsis: key=r[P2] */
17237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxDelete 141 /* synopsis: key=r[P2@P3] */
17238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DeferredSeek 142 /* synopsis: Move P3 to P1.rowid if needed */
17239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IdxRowid 143 /* synopsis: r[P2]=rowid */
17240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FinishSeek 144
17241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Destroy 145
17242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Clear 146
17243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ResetSorter 147
17244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CreateBtree 148 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
17245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SqlExec 149
17246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ParseSchema 150
17247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_LoadAnalysis 151
17248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DropTable 152
17249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DropIndex 153
17200 17250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Real 154 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
17201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IntegrityCk 155
17202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetAdd 156 /* synopsis: rowset(P1)=r[P2] */
17203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Param 157
17204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkCounter 158 /* synopsis: fkctr[P1]+=P2 */
17205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MemMax 159 /* synopsis: r[P1]=max(r[P1],r[P2]) */
17206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OffsetLimit 160 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
17207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggInverse 161 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
17208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggStep 162 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggStep1 163 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggValue 164 /* synopsis: r[P3]=value N=P2 */
17211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggFinal 165 /* synopsis: accum=r[P1] N=P2 */
17212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Expire 166
17213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CursorLock 167
17214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CursorUnlock 168
17215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_TableLock 169 /* synopsis: iDb=P1 root=P2 write=P3 */
17216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VBegin 170
17217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VCreate 171
17218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VDestroy 172
17219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VOpen 173
17220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VCheck 174
17221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VInitIn 175 /* synopsis: r[P2]=ValueList(P1,P3) */
17222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VColumn 176 /* synopsis: r[P3]=vcolumn(P2) */
17223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VRename 177
17224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Pagecount 178
17225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MaxPgcnt 179
17226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ClrSubtype 180 /* synopsis: r[P1].subtype = 0 */
17227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_GetSubtype 181 /* synopsis: r[P2] = r[P1].subtype */
17228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SetSubtype 182 /* synopsis: r[P2].subtype = r[P1] */
17229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FilterAdd 183 /* synopsis: filter(P1) += key(P3@P4) */
17230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Trace 184
17231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CursorHint 185
17232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReleaseReg 186 /* synopsis: release r[P1@P2] mask P3 */
17233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Noop 187
17234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Explain 188
17235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Abortable 189
17251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_DropTrigger 155
17252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IntegrityCk 156
17253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_RowSetAdd 157 /* synopsis: rowset(P1)=r[P2] */
17254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Param 158
17255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FkCounter 159 /* synopsis: fkctr[P1]+=P2 */
17256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MemMax 160 /* synopsis: r[P1]=max(r[P1],r[P2]) */
17257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_OffsetLimit 161 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
17258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggInverse 162 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
17259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggStep 163 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggStep1 164 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggValue 165 /* synopsis: r[P3]=value N=P2 */
17262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_AggFinal 166 /* synopsis: accum=r[P1] N=P2 */
17263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Expire 167
17264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CursorLock 168
17265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CursorUnlock 169
17266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_TableLock 170 /* synopsis: iDb=P1 root=P2 write=P3 */
17267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VBegin 171
17268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VCreate 172
17269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VDestroy 173
17270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VOpen 174
17271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VCheck 175
17272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VInitIn 176 /* synopsis: r[P2]=ValueList(P1,P3) */
17273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VColumn 177 /* synopsis: r[P3]=vcolumn(P2) */
17274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_VRename 178
17275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Pagecount 179
17276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_MaxPgcnt 180
17277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ClrSubtype 181 /* synopsis: r[P1].subtype = 0 */
17278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_GetSubtype 182 /* synopsis: r[P2] = r[P1].subtype */
17279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_SetSubtype 183 /* synopsis: r[P2].subtype = r[P1] */
17280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_FilterAdd 184 /* synopsis: filter(P1) += key(P3@P4) */
17281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Trace 185
17282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_CursorHint 186
17283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_ReleaseReg 187 /* synopsis: release r[P1@P2] mask P3 */
17284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Noop 188
17285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Explain 189
17286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_Abortable 190
17236 17287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17237 17288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Properties such as "out2" or "jump" that are specified in
17238 17289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** comments following the "case" for each opcode in the vdbe.c
17239 17290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are encoded into bitvectors as follows:
17240 17291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -17249,38 +17300,38 @@
17249 17300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_INITIALIZER {\
17250 17301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 0 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x41, 0x00,\
17251 17302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 8 */ 0x81, 0x01, 0x01, 0x81, 0x83, 0x83, 0x01, 0x01,\
17252 17303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 16 */ 0x03, 0x03, 0x01, 0x12, 0x01, 0xc9, 0xc9, 0xc9,\
17253 17304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 24 */ 0xc9, 0x01, 0x49, 0x49, 0x49, 0x49, 0xc9, 0x49,\
17254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 32 */ 0xc1, 0x01, 0x41, 0x41, 0xc1, 0x01, 0x41, 0x41,\
17255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ 0x41, 0x41, 0x41, 0x26, 0x26, 0x41, 0x23, 0x0b,\
17256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ 0x81, 0x01, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b,\
17257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 56 */ 0x0b, 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x01, 0x41,\
17258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 64 */ 0x01, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x10,\
17259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 72 */ 0x10, 0x10, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00,\
17260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 80 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02,\
17261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 88 */ 0x02, 0x00, 0x00, 0x12, 0x1e, 0x20, 0x40, 0x00,\
17262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 96 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x40, 0x40, 0x26,\
17305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 32 */ 0xc1, 0x01, 0x41, 0x41, 0xc1, 0x01, 0x01, 0x41,\
17306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 40 */ 0x41, 0x41, 0x41, 0x26, 0x26, 0x41, 0x41, 0x23,\
17307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 48 */ 0x0b, 0x81, 0x01, 0x03, 0x03, 0x0b, 0x0b, 0x0b,\
17308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 56 */ 0x0b, 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x03, 0x01,\
17309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 64 */ 0x41, 0x01, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00,\
17310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 72 */ 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, 0x10, 0x10,\
17311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 80 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x02,\
17312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 88 */ 0x02, 0x02, 0x00, 0x00, 0x12, 0x1e, 0x20, 0x40,\
17313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 96 */ 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x40, 0x26,\
17263 17314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
17264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 112 */ 0x26, 0x00, 0x40, 0x12, 0x40, 0x40, 0x10, 0x00,\
17265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 120 */ 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x10, 0x10,\
17266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x50,\
17267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 136 */ 0x00, 0x40, 0x04, 0x04, 0x00, 0x40, 0x50, 0x40,\
17268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 144 */ 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,\
17269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 152 */ 0x00, 0x00, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04,\
17270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 160 */ 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
17271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x50,\
17272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 176 */ 0x40, 0x00, 0x10, 0x10, 0x02, 0x12, 0x12, 0x00,\
17273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 184 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}
17315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 112 */ 0x26, 0x40, 0x00, 0x12, 0x40, 0x40, 0x10, 0x40,\
17316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 120 */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x10,\
17317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 128 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,\
17318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 136 */ 0x50, 0x00, 0x40, 0x04, 0x04, 0x00, 0x40, 0x50,\
17319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 144 */ 0x40, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\
17320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 152 */ 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x10, 0x00,\
17321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 160 */ 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
17322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10,\
17323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 176 */ 0x50, 0x40, 0x00, 0x10, 0x10, 0x02, 0x12, 0x12,\
17324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 184 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}
17274 17325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17275 17326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The resolve3P2Values() routine is able to run faster if it knows
17276 17327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the value of the largest JUMP opcode. The smaller the maximum
17277 17328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** JUMP opcode the better, so the mkopcodeh.tcl script that
17278 17329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** generated this include file strives to group all JUMP opcodes
17279 17330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** together near the beginning of the list.
17280 17331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
17281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_MX_JUMP_OPCODE 64 /* Maximum JUMP opcode */
17332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_MX_JUMP_OPCODE 65 /* Maximum JUMP opcode */
17282 17333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17283 17334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of opcodes.h *********************************************/
17284 17335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in vdbe.h ***********************/
17285 17336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17286 17337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -17400,11 +17451,11 @@
17400 17451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE char *sqlite3VdbeExpandSql(Vdbe*, const char*);
17401 17452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
17402 17453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3MemCompare(const Mem*, const Mem*, const CollSeq*);
17403 17454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BlobCompare(const Mem*, const Mem*);
17404 17455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(KeyInfo*,int,const void*,UnpackedRecord*);
17456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(int,const void*,UnpackedRecord*);
17406 17457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeRecordCompare(int,const void*,UnpackedRecord*);
17407 17458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeRecordCompareWithSkip(int, const void *, UnpackedRecord *, int);
17408 17459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeAllocUnpackedRecord(KeyInfo*);
17409 17460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17410 17461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef int (*RecordCompare)(int,const void*,UnpackedRecord*);
@@ -17413,11 +17464,13 @@
17413 17464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeLinkSubProgram(Vdbe *, SubProgram *);
17414 17465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeHasSubProgram(Vdbe*);
17415 17466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17416 17467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3MemSetArrayInt64(sqlite3_value *aMem, int iIdx, i64 val);
17417 17468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_DATETIME_FUNCS
17418 17470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3NotPureFunc(sqlite3_context*);
17471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
17419 17472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_BYTECODE_VTAB
17420 17473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeBytecodeVtabInit(sqlite3*);
17421 17474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
17422 17475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17423 17476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Use SQLITE_ENABLE_EXPLAIN_COMMENTS to enable generation of extra
@@ -18295,10 +18348,11 @@
18295 18348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_Coroutines 0x02000000 /* Co-routines for subqueries */
18296 18349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_NullUnusedCols 0x04000000 /* NULL unused columns in subqueries */
18297 18350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OnePass 0x08000000 /* Single-pass DELETE and UPDATE */
18298 18351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OrderBySubq 0x10000000 /* ORDER BY in subquery helps outer */
18299 18352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_StarQuery 0x20000000 /* Heurists for star queries */
18353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_ExistsToJoin 0x40000000 /* The EXISTS-to-JOIN optimization */
18300 18354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AllOpts 0xffffffff /* All optimizations */
18301 18355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18302 18356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
18303 18357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros for testing whether or not optimizations are enabled or disabled.
18304 18358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -18533,11 +18587,11 @@
18533 18587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\
18534 18588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
18535 18589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \
18536 18590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{nArg, SQLITE_FUNC_BUILTIN|\
18537 18591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
18538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pArg, 0, xFunc, 0, 0, 0, #zName, }
18592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pArg, 0, xFunc, 0, 0, 0, #zName, {0} }
18539 18593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define LIKEFUNC(zName, nArg, arg, flags) \
18540 18594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \
18541 18595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void *)arg, 0, likeFunc, 0, 0, 0, #zName, {0} }
18542 18596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WAGGREGATE(zName, nArg, arg, nc, xStep, xFinal, xValue, xInverse, f) \
18543 18597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|f, \
@@ -18700,10 +18754,11 @@
18700 18754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_TEXT 0x42 /* 'B' */
18701 18755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_NUMERIC 0x43 /* 'C' */
18702 18756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_INTEGER 0x44 /* 'D' */
18703 18757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_REAL 0x45 /* 'E' */
18704 18758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_FLEXNUM 0x46 /* 'F' */
18759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_AFF_DEFER 0x58 /* 'X' - defer computation until later */
18705 18760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18706 18761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3IsNumericAffinity(X) ((X)>=SQLITE_AFF_NUMERIC)
18707 18762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18708 18763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
18709 18764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The SQLITE_AFF_MASK values masks off the significant bits of an
@@ -19015,13 +19070,19 @@
19015 19070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19016 19071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** An instance of the following structure is passed as the first
19017 19072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument to sqlite3VdbeKeyCompare and is used to control the
19018 19073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** comparison of the two index keys.
19019 19074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Note that aSortOrder[] and aColl[] have nField+1 slots. There
19021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** are nField slots for the columns of an index then one extra slot
19022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** for the rowid at the end.
19075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The aSortOrder[] and aColl[] arrays have nAllField slots each. There
19076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** are nKeyField slots for the columns of an index then extra slots
19077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for the rowid or key at the end. The aSortOrder array is located after
19078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the aColl[] array.
19079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
19080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If SQLITE_ENABLE_PREUPDATE_HOOK is defined, then aSortFlags might be NULL
19081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to indicate that this object is for use by a preupdate hook. When aSortFlags
19082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is NULL, then nAllField is uninitialized and no space is allocated for
19083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** aColl[], so those fields may not be used.
19023 19084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19024 19085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct KeyInfo {
19025 19086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 nRef; /* Number of references to this KeyInfo object */
19026 19087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 enc; /* Text encoding - one of the SQLITE_UTF* values */
19027 19088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 nKeyField; /* Number of key columns in the index */
@@ -19029,12 +19090,21 @@
19029 19090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db; /* The database connection */
19030 19091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *aSortFlags; /* Sort order for each column. */
19031 19092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CollSeq *aColl[FLEXARRAY]; /* Collating sequence for each term of the key */
19032 19093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
19033 19094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The size (in bytes) of a KeyInfo object with up to N fields */
19095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The size (in bytes) of a KeyInfo object with up to N fields. This includes
19096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the main body of the KeyInfo object and the aColl[] array of N elements,
19097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** but does not count the memory used to hold aSortFlags[]. */
19035 19098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SZ_KEYINFO(N) (offsetof(KeyInfo,aColl) + (N)*sizeof(CollSeq*))
19099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
19100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The size of a bare KeyInfo with no aColl[] entries */
19101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if FLEXARRAY+1 > 1
19102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SZ_KEYINFO_0 offsetof(KeyInfo,aColl)
19103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
19104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SZ_KEYINFO_0 sizeof(KeyInfo)
19105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19036 19106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19037 19107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19038 19108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allowed bit values for entries in the KeyInfo.aSortFlags[] array.
19039 19109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19040 19110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define KEYINFO_ORDER_DESC 0x01 /* DESC sort order */
@@ -19050,23 +19120,22 @@
19050 19120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the OP_MakeRecord opcode of the VDBE and is disassembled by the
19051 19121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_Column opcode.
19052 19122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19053 19123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** An instance of this object serves as a "key" for doing a search on
19054 19124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an index b+tree. The goal of the search is to find the entry that
19055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is closed to the key described by this object. This object might hold
19056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** just a prefix of the key. The number of fields is given by
19057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pKeyInfo->nField.
19125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is closest to the key described by this object. This object might hold
19126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** just a prefix of the key. The number of fields is given by nField.
19058 19127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19059 19128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The r1 and r2 fields are the values to return if this key is less than
19060 19129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or greater than a key in the btree, respectively. These are normally
19061 19130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -1 and +1 respectively, but might be inverted to +1 and -1 if the b-tree
19062 19131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is in DESC order.
19063 19132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19064 19133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The key comparison functions actually return default_rc when they find
19065 19134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an equals comparison. default_rc can be -1, 0, or +1. If there are
19066 19135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** multiple entries in the b-tree with the same key (when only looking
19067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** at the first pKeyInfo->nFields,) then default_rc can be set to -1 to
19136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** at the first nField elements) then default_rc can be set to -1 to
19068 19137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cause the search to find the last match, or +1 to cause the search to
19069 19138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** find the first match.
19070 19139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19071 19140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The key comparison functions will set eqSeen to true if they ever
19072 19141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** get and equal results when comparing this structure to a b-tree record.
@@ -19074,12 +19143,12 @@
19074 19143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** before the first match or immediately after the last match. The
19075 19144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** eqSeen field will indicate whether or not an exact match exists in the
19076 19145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** b-tree.
19077 19146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19078 19147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct UnpackedRecord {
19079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- KeyInfo *pKeyInfo; /* Collation and sort-order information */
19080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Mem *aMem; /* Values */
19148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ KeyInfo *pKeyInfo; /* Comparison info for the index that is unpacked */
19149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Mem *aMem; /* Values for columns of the index */
19081 19150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
19082 19151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z; /* Cache of aMem[0].z for vdbeRecordCompareString() */
19083 19152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 i; /* Cache of aMem[0].u.i for vdbeRecordCompareInt() */
19084 19153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} u;
19085 19154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n; /* Cache of aMem[0].n used by vdbeRecordCompareString() */
@@ -19160,14 +19229,12 @@
19160 19229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned uniqNotNull:1; /* True if UNIQUE and NOT NULL for all columns */
19161 19230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isResized:1; /* True if resizeIndexObject() has been called */
19162 19231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isCovering:1; /* True if this is a covering index */
19163 19232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned noSkipScan:1; /* Do not try to use skip-scan if true */
19164 19233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned hasStat1:1; /* aiRowLogEst values come from sqlite_stat1 */
19165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned bLowQual:1; /* sqlite_stat1 says this is a low-quality index */
19166 19234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bNoQuery:1; /* Do not use this index to optimize queries */
19167 19235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bAscKeyBug:1; /* True if the bba7b69f9849b5bf bug applies */
19168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned bIdxRowid:1; /* One or more of the index keys is the ROWID */
19169 19236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bHasVCol:1; /* Index references one or more VIRTUAL columns */
19170 19237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bHasExpr:1; /* Index contains an expression, either a literal
19171 19238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expression, or a reference to a VIRTUAL column */
19172 19239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STAT4
19173 19240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSample; /* Number of elements in aSample[] */
@@ -19251,21 +19318,21 @@
19251 19318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo {
19252 19319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 directMode; /* Direct rendering mode means take data directly
19253 19320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from source tables rather than from accumulators */
19254 19321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 useSortingIdx; /* In direct mode, reference the sorting index rather
19255 19322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** than the source table */
19256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u16 nSortingColumn; /* Number of columns in the sorting index */
19323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 nSortingColumn; /* Number of columns in the sorting index */
19257 19324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int sortingIdx; /* Cursor number of the sorting index */
19258 19325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int sortingIdxPTab; /* Cursor number of pseudo-table */
19259 19326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iFirstReg; /* First register in range for aCol[] and aFunc[] */
19260 19327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pGroupBy; /* The group by clause */
19261 19328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_col { /* For each column used in source tables */
19262 19329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab; /* Source table */
19263 19330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pCExpr; /* The original expression */
19264 19331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTable; /* Cursor number of the source table */
19265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i16 iColumn; /* Column number within the source table */
19266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i16 iSorterColumn; /* Column number in the sorting index */
19332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iColumn; /* Column number within the source table */
19333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iSorterColumn; /* Column number in the sorting index */
19267 19334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} *aCol;
19268 19335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nColumn; /* Number of used entries in aCol[] */
19269 19336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nAccumulator; /* Number of columns that show through to the output.
19270 19337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Additional columns are used only as parameters to
19271 19338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** aggregate functions */
@@ -19725,10 +19792,11 @@
19725 19792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isSynthUsing :1; /* u3.pUsing is synthesized from NATURAL */
19726 19793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isNestedFrom :1; /* pSelect is a SF_NestedFrom subquery */
19727 19794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned rowidUsed :1; /* The ROWID of this table is referenced */
19728 19795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned fixedSchema :1; /* Uses u4.pSchema, not u4.zDatabase */
19729 19796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned hadSchema :1; /* Had u4.zDatabase before u4.pSchema */
19797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned fromExists :1; /* Comes from WHERE EXISTS(...) */
19730 19798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} fg;
19731 19799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCursor; /* The VDBE cursor number used to access this table */
19732 19800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask colUsed; /* Bit N set if column N used. Details above for N>62 */
19733 19801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
19734 19802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zIndexedBy; /* Identifier from "INDEXED BY <zIndex>" clause */
@@ -20255,10 +20323,11 @@
20255 20323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 mayAbort; /* True if statement may throw an ABORT exception */
20256 20324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 hasCompound; /* Need to invoke convertCompoundSelectToSubquery() */
20257 20325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 disableLookaside; /* Number of times lookaside has been disabled */
20258 20326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 prepFlags; /* SQLITE_PREPARE_* flags */
20259 20327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 withinRJSubrtn; /* Nesting level for RIGHT JOIN body subroutines */
20328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bHasExists; /* Has a correlated "EXISTS (SELECT ....)" expression */
20260 20329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 mSubrtnSig; /* mini Bloom filter on available SubrtnSig.selId */
20261 20330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */
20262 20331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bReturning; /* Coding a RETURNING trigger */
20263 20332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */
20264 20333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 disableTriggers; /* True to disable triggers */
@@ -21251,10 +21320,11 @@
21251 21320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
21252 21321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
21253 21322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ShowWindow(const Window*);
21254 21323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ShowWinFunc(const Window*);
21255 21324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
21325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ShowBitvec(Bitvec*);
21256 21326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
21257 21327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21258 21328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3SetString(char **, sqlite3*, const char*);
21259 21329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ProgressCheck(Parse*);
21260 21330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ErrorMsg(Parse*, const char*, ...);
@@ -22424,10 +22494,13 @@
22424 22494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_BITMASK_TYPE
22425 22495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"BITMASK_TYPE=" CTIMEOPT_VAL(SQLITE_BITMASK_TYPE),
22426 22496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
22427 22497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_BUG_COMPATIBLE_20160819
22428 22498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"BUG_COMPATIBLE_20160819",
22499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
22500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_BUG_COMPATIBLE_20250510
22501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "BUG_COMPATIBLE_20250510",
22429 22502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
22430 22503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_CASE_SENSITIVE_LIKE
22431 22504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"CASE_SENSITIVE_LIKE",
22432 22505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
22433 22506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_CHECK_PAGES
@@ -23860,11 +23933,11 @@
23860 23933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * MEM_Blob A blob, stored in Mem.z length Mem.n.
23861 23934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Incompatible with MEM_Str, MEM_Null,
23862 23935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** MEM_Int, MEM_Real, and MEM_IntReal.
23863 23936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
23864 23937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * MEM_Blob|MEM_Zero A blob in Mem.z of length Mem.n plus
23865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** MEM.u.i extra 0x00 bytes at the end.
23938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Mem.u.nZero extra 0x00 bytes at the end.
23866 23939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
23867 23940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * MEM_Int Integer stored in Mem.u.i.
23868 23941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
23869 23942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * MEM_Real Real stored in Mem.u.r.
23870 23943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -24129,11 +24202,11 @@
24129 24202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem oldipk; /* Memory cell holding "old" IPK value */
24130 24203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *aNew; /* Array of new.* values */
24131 24204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab; /* Schema object being updated */
24132 24205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pPk; /* PK index if pTab is WITHOUT ROWID */
24133 24206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apDflt; /* Array of default values, if required */
24134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 keyinfoSpace[SZ_KEYINFO(0)]; /* Space to hold pKeyinfo[0] content */
24207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 keyinfoSpace[SZ_KEYINFO_0]; /* Space to hold pKeyinfo[0] content */
24135 24208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
24136 24209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24137 24210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
24138 24211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** An instance of this object is used to pass an vector of values into
24139 24212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_VFilter, the xFilter method of a virtual table. The vector is the
@@ -32059,10 +32132,18 @@
32059 32132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
32060 32133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
longvalue = va_arg(ap,unsigned int);
32061 32134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32062 32135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
prefix = 0;
32063 32136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
32138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if WHERETRACE_ENABLED
32139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( xtype==etPOINTER && sqlite3WhereTrace & 0x100000 ) longvalue = 0;
32140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
32141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if TREETRACE_ENABLED
32142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( xtype==etPOINTER && sqlite3TreeTrace & 0x100000 ) longvalue = 0;
32143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
32144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
32064 32145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( longvalue==0 ) flag_alternateform = 0;
32065 32146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( flag_zeropad && precision<width-(prefix!=0) ){
32066 32147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
precision = width-(prefix!=0);
32067 32148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32068 32149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( precision<etBUFSIZE-10-etBUFSIZE/3 ){
@@ -32987,10 +33068,19 @@
32987 33068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
32988 33069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBuf[acc.nChar] = 0;
32989 33070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zBuf;
32990 33071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32991 33072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
33073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Maximum size of an sqlite3_log() message. */
33074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if defined(SQLITE_MAX_LOG_MESSAGE)
33075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Leave the definition as supplied */
33076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #elif SQLITE_PRINT_BUF_SIZE*10>10000
33077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_MAX_LOG_MESSAGE 10000
33078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
33079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_MAX_LOG_MESSAGE (SQLITE_PRINT_BUF_SIZE*10)
33080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
33081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
32992 33082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
32993 33083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the routine that actually formats the sqlite3_log() message.
32994 33084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** We house it in a separate routine from sqlite3_log() to avoid using
32995 33085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** stack space on small-stack systems when logging is disabled.
32996 33086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -33003,11 +33093,11 @@
33003 33093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Care must be taken that any sqlite3_log() calls that occur while the
33004 33094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory mutex is held do not use these mechanisms.
33005 33095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
33006 33096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void renderLogMsg(int iErrCode, const char *zFormat, va_list ap){
33007 33097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
StrAccum acc; /* String accumulator */
33008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char zMsg[SQLITE_PRINT_BUF_SIZE*3]; /* Complete log message */
33098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zMsg[SQLITE_MAX_LOG_MESSAGE]; /* Complete log message */
33009 33099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
33010 33100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StrAccumInit(&acc, 0, zMsg, sizeof(zMsg), 0);
33011 33101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_vappendf(&acc, zFormat, ap);
33012 33102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3GlobalConfig.xLog(sqlite3GlobalConfig.pLogArg, iErrCode,
33013 33103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StrAccumFinish(&acc));
@@ -35001,11 +35091,11 @@
35001 35091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35002 35092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
35003 35093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
35004 35094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Write a single UTF8 character whose value is v into the
35005 35095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** buffer starting at zOut. zOut must be sized to hold at
35006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** least for bytes. Return the number of bytes needed
35096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** least four bytes. Return the number of bytes needed
35007 35097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to encode the new character.
35008 35098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
35009 35099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3AppendOneUtf8Character(char *zOut, u32 v){
35010 35100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( v<0x00080 ){
35011 35101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOut[0] = (u8)(v & 0xff);
@@ -37681,76 +37771,76 @@
37681 37771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 32 */ "Last" OpHelp(""),
37682 37772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 33 */ "IfSizeBetween" OpHelp(""),
37683 37773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 34 */ "SorterSort" OpHelp(""),
37684 37774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 35 */ "Sort" OpHelp(""),
37685 37775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 36 */ "Rewind" OpHelp(""),
37686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 37 */ "SorterNext" OpHelp(""),
37687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 38 */ "Prev" OpHelp(""),
37688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 39 */ "Next" OpHelp(""),
37689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ "IdxLE" OpHelp("key=r[P3@P4]"),
37690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 41 */ "IdxGT" OpHelp("key=r[P3@P4]"),
37691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 42 */ "IdxLT" OpHelp("key=r[P3@P4]"),
37776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 37 */ "IfEmpty" OpHelp("if( empty(P1) ) goto P2"),
37777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 38 */ "SorterNext" OpHelp(""),
37778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 39 */ "Prev" OpHelp(""),
37779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 40 */ "Next" OpHelp(""),
37780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 41 */ "IdxLE" OpHelp("key=r[P3@P4]"),
37781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 42 */ "IdxGT" OpHelp("key=r[P3@P4]"),
37692 37782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 43 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
37693 37783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 44 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
37694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 45 */ "IdxGE" OpHelp("key=r[P3@P4]"),
37695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 46 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
37696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 47 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
37697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ "Program" OpHelp(""),
37698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 49 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
37699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 50 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
37784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 45 */ "IdxLT" OpHelp("key=r[P3@P4]"),
37785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 46 */ "IdxGE" OpHelp("key=r[P3@P4]"),
37786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 47 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
37787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 48 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
37788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 49 */ "Program" OpHelp(""),
37789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 50 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
37700 37790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 51 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
37701 37791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 52 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
37702 37792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 53 */ "Ne" OpHelp("IF r[P3]!=r[P1]"),
37703 37793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 54 */ "Eq" OpHelp("IF r[P3]==r[P1]"),
37704 37794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 55 */ "Gt" OpHelp("IF r[P3]>r[P1]"),
37705 37795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 56 */ "Le" OpHelp("IF r[P3]<=r[P1]"),
37706 37796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 57 */ "Lt" OpHelp("IF r[P3]<r[P1]"),
37707 37797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 58 */ "Ge" OpHelp("IF r[P3]>=r[P1]"),
37708 37798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 59 */ "ElseEq" OpHelp(""),
37709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 60 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
37710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 61 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
37711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 62 */ "IncrVacuum" OpHelp(""),
37712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 63 */ "VNext" OpHelp(""),
37713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 64 */ "Filter" OpHelp("if key(P3@P4) not in filter(P1) goto P2"),
37714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 65 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
37715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 66 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
37716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 67 */ "Return" OpHelp(""),
37717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 68 */ "EndCoroutine" OpHelp(""),
37718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 69 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
37719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 70 */ "Halt" OpHelp(""),
37720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 71 */ "Integer" OpHelp("r[P2]=P1"),
37721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 72 */ "Int64" OpHelp("r[P2]=P4"),
37722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 73 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
37723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 74 */ "BeginSubrtn" OpHelp("r[P2]=NULL"),
37724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 75 */ "Null" OpHelp("r[P2..P3]=NULL"),
37725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 76 */ "SoftNull" OpHelp("r[P1]=NULL"),
37726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 77 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
37727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 78 */ "Variable" OpHelp("r[P2]=parameter(P1)"),
37728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 79 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
37729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 80 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
37730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 81 */ "SCopy" OpHelp("r[P2]=r[P1]"),
37731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 82 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
37732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 83 */ "FkCheck" OpHelp(""),
37733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 84 */ "ResultRow" OpHelp("output=r[P1@P2]"),
37734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 85 */ "CollSeq" OpHelp(""),
37735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 86 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
37736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 87 */ "RealAffinity" OpHelp(""),
37737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 88 */ "Cast" OpHelp("affinity(r[P1])"),
37738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 89 */ "Permutation" OpHelp(""),
37739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 90 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
37740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 91 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
37741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 92 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
37742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 93 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
37743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 94 */ "Column" OpHelp("r[P3]=PX cursor P1 column P2"),
37744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 95 */ "TypeCheck" OpHelp("typecheck(r[P1@P2])"),
37745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 96 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
37746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 97 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
37747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 98 */ "Count" OpHelp("r[P2]=count()"),
37748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 99 */ "ReadCookie" OpHelp(""),
37749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 100 */ "SetCookie" OpHelp(""),
37750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 101 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
37751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 102 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
37799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 60 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
37800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 61 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
37801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 62 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
37802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 63 */ "IncrVacuum" OpHelp(""),
37803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 64 */ "VNext" OpHelp(""),
37804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 65 */ "Filter" OpHelp("if key(P3@P4) not in filter(P1) goto P2"),
37805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 66 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
37806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 67 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
37807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 68 */ "Return" OpHelp(""),
37808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 69 */ "EndCoroutine" OpHelp(""),
37809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 70 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
37810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 71 */ "Halt" OpHelp(""),
37811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 72 */ "Integer" OpHelp("r[P2]=P1"),
37812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 73 */ "Int64" OpHelp("r[P2]=P4"),
37813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 74 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
37814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 75 */ "BeginSubrtn" OpHelp("r[P2]=NULL"),
37815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 76 */ "Null" OpHelp("r[P2..P3]=NULL"),
37816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 77 */ "SoftNull" OpHelp("r[P1]=NULL"),
37817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 78 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
37818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 79 */ "Variable" OpHelp("r[P2]=parameter(P1)"),
37819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 80 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
37820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 81 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
37821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 82 */ "SCopy" OpHelp("r[P2]=r[P1]"),
37822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 83 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
37823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 84 */ "FkCheck" OpHelp(""),
37824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 85 */ "ResultRow" OpHelp("output=r[P1@P2]"),
37825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 86 */ "CollSeq" OpHelp(""),
37826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 87 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
37827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 88 */ "RealAffinity" OpHelp(""),
37828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 89 */ "Cast" OpHelp("affinity(r[P1])"),
37829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 90 */ "Permutation" OpHelp(""),
37830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 91 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
37831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 92 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
37832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 93 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
37833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 94 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
37834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 95 */ "Column" OpHelp("r[P3]=PX cursor P1 column P2"),
37835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 96 */ "TypeCheck" OpHelp("typecheck(r[P1@P2])"),
37836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 97 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
37837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 98 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
37838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 99 */ "Count" OpHelp("r[P2]=count()"),
37839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 100 */ "ReadCookie" OpHelp(""),
37840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 101 */ "SetCookie" OpHelp(""),
37841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 102 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
37752 37842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 103 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
37753 37843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 104 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
37754 37844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 105 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
37755 37845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 106 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
37756 37846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 107 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -37757,87 +37847,88 @@
37757 37847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 108 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
37758 37848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 109 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
37759 37849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 110 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
37760 37850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 111 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
37761 37851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 112 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
37762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 113 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
37763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 114 */ "OpenDup" OpHelp(""),
37852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 113 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
37853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 114 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
37764 37854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 115 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
37765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 116 */ "OpenAutoindex" OpHelp("nColumn=P2"),
37766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 117 */ "OpenEphemeral" OpHelp("nColumn=P2"),
37855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 116 */ "OpenDup" OpHelp(""),
37856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 117 */ "OpenAutoindex" OpHelp("nColumn=P2"),
37767 37857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 118 */ "String8" OpHelp("r[P2]='P4'"),
37768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 119 */ "SorterOpen" OpHelp(""),
37769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 120 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
37770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 121 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
37771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 122 */ "Close" OpHelp(""),
37772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 123 */ "ColumnsUsed" OpHelp(""),
37773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 124 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
37774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 125 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
37775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 126 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
37776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 127 */ "NewRowid" OpHelp("r[P2]=rowid"),
37777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 128 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
37778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 129 */ "RowCell" OpHelp(""),
37779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 130 */ "Delete" OpHelp(""),
37780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 131 */ "ResetCount" OpHelp(""),
37781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 132 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
37782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 133 */ "SorterData" OpHelp("r[P2]=data"),
37783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 134 */ "RowData" OpHelp("r[P2]=data"),
37784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 135 */ "Rowid" OpHelp("r[P2]=PX rowid of P1"),
37785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 136 */ "NullRow" OpHelp(""),
37786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 137 */ "SeekEnd" OpHelp(""),
37787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 138 */ "IdxInsert" OpHelp("key=r[P2]"),
37788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 139 */ "SorterInsert" OpHelp("key=r[P2]"),
37789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 140 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
37790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 141 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
37791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 142 */ "IdxRowid" OpHelp("r[P2]=rowid"),
37792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 143 */ "FinishSeek" OpHelp(""),
37793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 144 */ "Destroy" OpHelp(""),
37794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 145 */ "Clear" OpHelp(""),
37795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 146 */ "ResetSorter" OpHelp(""),
37796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 147 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
37797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 148 */ "SqlExec" OpHelp(""),
37798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 149 */ "ParseSchema" OpHelp(""),
37799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 150 */ "LoadAnalysis" OpHelp(""),
37800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 151 */ "DropTable" OpHelp(""),
37801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 152 */ "DropIndex" OpHelp(""),
37802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 153 */ "DropTrigger" OpHelp(""),
37858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 119 */ "OpenEphemeral" OpHelp("nColumn=P2"),
37859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 120 */ "SorterOpen" OpHelp(""),
37860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 121 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
37861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 122 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
37862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 123 */ "Close" OpHelp(""),
37863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 124 */ "ColumnsUsed" OpHelp(""),
37864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 125 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
37865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 126 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
37866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 127 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
37867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 128 */ "NewRowid" OpHelp("r[P2]=rowid"),
37868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 129 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
37869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 130 */ "RowCell" OpHelp(""),
37870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 131 */ "Delete" OpHelp(""),
37871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 132 */ "ResetCount" OpHelp(""),
37872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 133 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
37873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 134 */ "SorterData" OpHelp("r[P2]=data"),
37874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 135 */ "RowData" OpHelp("r[P2]=data"),
37875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 136 */ "Rowid" OpHelp("r[P2]=PX rowid of P1"),
37876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 137 */ "NullRow" OpHelp(""),
37877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 138 */ "SeekEnd" OpHelp(""),
37878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 139 */ "IdxInsert" OpHelp("key=r[P2]"),
37879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 140 */ "SorterInsert" OpHelp("key=r[P2]"),
37880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 141 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
37881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 142 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
37882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 143 */ "IdxRowid" OpHelp("r[P2]=rowid"),
37883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 144 */ "FinishSeek" OpHelp(""),
37884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 145 */ "Destroy" OpHelp(""),
37885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 146 */ "Clear" OpHelp(""),
37886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 147 */ "ResetSorter" OpHelp(""),
37887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 148 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
37888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 149 */ "SqlExec" OpHelp(""),
37889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 150 */ "ParseSchema" OpHelp(""),
37890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 151 */ "LoadAnalysis" OpHelp(""),
37891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 152 */ "DropTable" OpHelp(""),
37892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 153 */ "DropIndex" OpHelp(""),
37803 37893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 154 */ "Real" OpHelp("r[P2]=P4"),
37804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 155 */ "IntegrityCk" OpHelp(""),
37805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 156 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
37806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 157 */ "Param" OpHelp(""),
37807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 158 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
37808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 159 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
37809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 160 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
37810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 161 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
37811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 162 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
37812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 163 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
37813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 164 */ "AggValue" OpHelp("r[P3]=value N=P2"),
37814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 165 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
37815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 166 */ "Expire" OpHelp(""),
37816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 167 */ "CursorLock" OpHelp(""),
37817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 168 */ "CursorUnlock" OpHelp(""),
37818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 169 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
37819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 170 */ "VBegin" OpHelp(""),
37820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 171 */ "VCreate" OpHelp(""),
37821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 172 */ "VDestroy" OpHelp(""),
37822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 173 */ "VOpen" OpHelp(""),
37823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 174 */ "VCheck" OpHelp(""),
37824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 175 */ "VInitIn" OpHelp("r[P2]=ValueList(P1,P3)"),
37825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 176 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
37826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 177 */ "VRename" OpHelp(""),
37827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 178 */ "Pagecount" OpHelp(""),
37828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 179 */ "MaxPgcnt" OpHelp(""),
37829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 180 */ "ClrSubtype" OpHelp("r[P1].subtype = 0"),
37830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 181 */ "GetSubtype" OpHelp("r[P2] = r[P1].subtype"),
37831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 182 */ "SetSubtype" OpHelp("r[P2].subtype = r[P1]"),
37832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 183 */ "FilterAdd" OpHelp("filter(P1) += key(P3@P4)"),
37833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 184 */ "Trace" OpHelp(""),
37834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 185 */ "CursorHint" OpHelp(""),
37835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 186 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
37836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 187 */ "Noop" OpHelp(""),
37837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 188 */ "Explain" OpHelp(""),
37838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 189 */ "Abortable" OpHelp(""),
37894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 155 */ "DropTrigger" OpHelp(""),
37895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 156 */ "IntegrityCk" OpHelp(""),
37896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 157 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
37897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 158 */ "Param" OpHelp(""),
37898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 159 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
37899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 160 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
37900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 161 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
37901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 162 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
37902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 163 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
37903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 164 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
37904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 165 */ "AggValue" OpHelp("r[P3]=value N=P2"),
37905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 166 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
37906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 167 */ "Expire" OpHelp(""),
37907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 168 */ "CursorLock" OpHelp(""),
37908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 169 */ "CursorUnlock" OpHelp(""),
37909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 170 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
37910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 171 */ "VBegin" OpHelp(""),
37911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 172 */ "VCreate" OpHelp(""),
37912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 173 */ "VDestroy" OpHelp(""),
37913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 174 */ "VOpen" OpHelp(""),
37914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 175 */ "VCheck" OpHelp(""),
37915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 176 */ "VInitIn" OpHelp("r[P2]=ValueList(P1,P3)"),
37916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 177 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
37917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 178 */ "VRename" OpHelp(""),
37918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 179 */ "Pagecount" OpHelp(""),
37919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 180 */ "MaxPgcnt" OpHelp(""),
37920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 181 */ "ClrSubtype" OpHelp("r[P1].subtype = 0"),
37921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 182 */ "GetSubtype" OpHelp("r[P2] = r[P1].subtype"),
37922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 183 */ "SetSubtype" OpHelp("r[P2].subtype = r[P1]"),
37923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 184 */ "FilterAdd" OpHelp("filter(P1) += key(P3@P4)"),
37924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 185 */ "Trace" OpHelp(""),
37925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 186 */ "CursorHint" OpHelp(""),
37926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 187 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
37927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 188 */ "Noop" OpHelp(""),
37928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 189 */ "Explain" OpHelp(""),
37929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 190 */ "Abortable" OpHelp(""),
37839 37930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
37840 37931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return azName[i];
37841 37932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37842 37933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
37843 37934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -43860,25 +43951,24 @@
43860 43951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pShmNode->hShm<0 || pDbFd->pInode->bProcessLock==0 );
43861 43952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
43862 43953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check that, if this to be a blocking lock, no locks that occur later
43863 43954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the following list than the lock being obtained are already held:
43864 43955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
43865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 1. Checkpointer lock (ofst==1).
43866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 2. Write lock (ofst==0).
43867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 3. Read locks (ofst>=3 && ofst<SQLITE_SHM_NLOCK).
43956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 1. Recovery lock (ofst==2).
43957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2. Checkpointer lock (ofst==1).
43958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 3. Write lock (ofst==0).
43959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 4. Read locks (ofst>=3 && ofst<SQLITE_SHM_NLOCK).
43868 43960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
43869 43961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** In other words, if this is a blocking lock, none of the locks that
43870 43962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** occur later in the above list than the lock being obtained may be
43871 43963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** held.
43872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
43873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** It is not permitted to block on the RECOVER lock.
43874 43964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
43875 43965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_SETLK_TIMEOUT) && defined(SQLITE_DEBUG)
43876 43966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
43877 43967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 lockMask = (p->exclMask|p->sharedMask);
43878 43968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (flags & SQLITE_SHM_UNLOCK) || pDbFd->iBusyTimeout==0 || (
43879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (ofst!=2) /* not RECOVER */
43969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (ofst!=2 || lockMask==0)
43880 43970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst!=1 || lockMask==0 || lockMask==2)
43881 43971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst!=0 || lockMask<3)
43882 43972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst<3 || lockMask<(1<<ofst))
43883 43973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
));
43884 43974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -49835,11 +49925,15 @@
49835 49925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DWORD nDelay = (nMs==0 ? INFINITE : nMs);
49836 49926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DWORD res = osWaitForSingleObject(ovlp.hEvent, nDelay);
49837 49927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res==WAIT_OBJECT_0 ){
49838 49928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ret = TRUE;
49839 49929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( res==WAIT_TIMEOUT ){
49930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_ENABLE_SETLK_TIMEOUT==1
49840 49931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_BUSY_TIMEOUT;
49932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
49933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_BUSY;
49934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
49841 49935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
49842 49936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Some other error has occurred */
49843 49937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_LOCK;
49844 49938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
49845 49939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -51321,17 +51415,17 @@
51321 51415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nChar;
51322 51416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LPWSTR zWideFilename;
51323 51417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51324 51418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( osCygwin_conv_path && !(winIsDriveLetterAndColon(zFilename)
51325 51419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& winIsDirSep(zFilename[2])) ){
51326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nByte;
51420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 nByte;
51327 51421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int convertflag = CCP_POSIX_TO_WIN_W;
51328 51422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !strchr(zFilename, '/') ) convertflag |= CCP_RELATIVE;
51329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nByte = (int)osCygwin_conv_path(convertflag,
51423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nByte = (i64)osCygwin_conv_path(convertflag,
51330 51424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFilename, 0, 0);
51331 51425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nByte>0 ){
51332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted = sqlite3MallocZero(nByte+12);
51426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zConverted = sqlite3MallocZero(12+(u64)nByte);
51333 51427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if ( zConverted==0 ){
51334 51428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zConverted;
51335 51429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51336 51430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zWideFilename = zConverted;
51337 51431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Filenames should be prefixed, except when converted
@@ -51646,25 +51740,24 @@
51646 51740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( n==1 || (flags & SQLITE_SHM_EXCLUSIVE)!=0 );
51647 51741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51648 51742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check that, if this to be a blocking lock, no locks that occur later
51649 51743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the following list than the lock being obtained are already held:
51650 51744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
51651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 1. Checkpointer lock (ofst==1).
51652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 2. Write lock (ofst==0).
51653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 3. Read locks (ofst>=3 && ofst<SQLITE_SHM_NLOCK).
51745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 1. Recovery lock (ofst==2).
51746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2. Checkpointer lock (ofst==1).
51747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 3. Write lock (ofst==0).
51748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 4. Read locks (ofst>=3 && ofst<SQLITE_SHM_NLOCK).
51654 51749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
51655 51750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** In other words, if this is a blocking lock, none of the locks that
51656 51751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** occur later in the above list than the lock being obtained may be
51657 51752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** held.
51658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
51659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** It is not permitted to block on the RECOVER lock.
51660 51753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
51661 51754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_SETLK_TIMEOUT) && defined(SQLITE_DEBUG)
51662 51755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
51663 51756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 lockMask = (p->exclMask|p->sharedMask);
51664 51757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (flags & SQLITE_SHM_UNLOCK) || pDbFd->iBusyTimeout==0 || (
51665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (ofst!=2) /* not RECOVER */
51758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (ofst!=2 || lockMask==0)
51666 51759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst!=1 || lockMask==0 || lockMask==2)
51667 51760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst!=0 || lockMask<3)
51668 51761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst<3 || lockMask<(1<<ofst))
51669 51762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
));
51670 51763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -52210,31 +52303,10 @@
52210 52303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
52211 52304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This division contains the implementation of methods on the
52212 52305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_vfs object.
52213 52306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
52214 52307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
52215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0 /* No longer necessary */
52216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
52217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Convert a filename from whatever the underlying operating system
52218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** supports for filenames into UTF-8. Space to hold the result is
52219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** obtained from malloc and must be freed by the calling function.
52220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
52221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static char *winConvertToUtf8Filename(const void *zFilename){
52222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zConverted = 0;
52223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( osIsNT() ){
52224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted = winUnicodeToUtf8(zFilename);
52225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_WIN32_HAS_ANSI
52227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- else{
52228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted = winMbcsToUtf8(zFilename, osAreFileApisANSI());
52229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
52231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* caller will handle out of memory */
52232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return zConverted;
52233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
52235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
52236 52308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
52237 52309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function returns non-zero if the specified UTF-8 string buffer
52238 52310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ends with a directory separator character or one was successfully
52239 52311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** added to it.
52240 52312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -52370,46 +52442,10 @@
52370 52442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(nMax, zBuf, "%s", zDir);
52371 52443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zConverted);
52372 52444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
52373 52445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52374 52446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zConverted);
52375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0 /* No longer necessary */
52376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
52377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted = sqlite3MallocZero( nMax+1 );
52378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !zConverted ){
52379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zBuf);
52380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_NOMEM\n"));
52381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_IOERR_NOMEM_BKPT;
52382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( osCygwin_conv_path(
52384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CCP_POSIX_TO_WIN_W, zDir,
52385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted, nMax+1)<0 ){
52386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zConverted);
52387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zBuf);
52388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_CONVPATH\n"));
52389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return winLogError(SQLITE_IOERR_CONVPATH, (DWORD)errno,
52390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "winGetTempname2", zDir);
52391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( winIsDir(zConverted) ){
52393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* At this point, we know the candidate directory exists and should
52394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be used. However, we may need to convert the string containing
52395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** its name into UTF-8 (i.e. if it is UTF-16 right now).
52396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
52397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zUtf8 = winConvertToUtf8Filename(zConverted);
52398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !zUtf8 ){
52399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zConverted);
52400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zBuf);
52401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_NOMEM\n"));
52402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_IOERR_NOMEM_BKPT;
52403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(nMax, zBuf, "%s", zUtf8);
52405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zUtf8);
52406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zConverted);
52407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
52408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zConverted);
52410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif /* No longer necessary */
52411 52447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52412 52448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52413 52449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52414 52450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
52415 52451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -53304,38 +53340,10 @@
53304 53340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
winSimplifyName(zFull);
53305 53341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
53306 53342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
53307 53343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
53308 53344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* __CYGWIN__ */
53309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0 /* This doesn't work correctly at all! See:
53310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <https://marc.info/?l=sqlite-users&m=139299149416314&w=2>
53311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
53312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SimulateIOError( return SQLITE_ERROR );
53313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- UNUSED_PARAMETER(nFull);
53314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( nFull>=pVfs->mxPathname );
53315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zOut = sqlite3MallocZero( pVfs->mxPathname+1 );
53316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !zOut ){
53317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_IOERR_NOMEM_BKPT;
53318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( osCygwin_conv_path(
53320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CCP_POSIX_TO_WIN_W,
53321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zRelative, zOut, pVfs->mxPathname+1)<0 ){
53322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zOut);
53323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return winLogError(SQLITE_CANTOPEN_CONVPATH, (DWORD)errno,
53324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "winFullPathname2", zRelative);
53325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
53326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zUtf8 = winConvertToUtf8Filename(zOut);
53327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !zUtf8 ){
53328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zOut);
53329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_IOERR_NOMEM_BKPT;
53330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(MIN(nFull, pVfs->mxPathname), zFull, "%s", zUtf8);
53332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zUtf8);
53333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zOut);
53334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_OK;
53336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
53337 53345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
53338 53346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if (SQLITE_OS_WINCE || SQLITE_OS_WINRT) && defined(_WIN32)
53339 53347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SimulateIOError( return SQLITE_ERROR );
53340 53348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* WinCE has no concept of a relative pathname, or so I am told. */
53341 53349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* WinRT has no way to convert a relative path to an absolute one. */
@@ -53477,31 +53485,12 @@
53477 53485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Interfaces for opening a shared library, finding entry points
53478 53486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** within the shared library, and closing the shared library.
53479 53487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
53480 53488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
53481 53489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HANDLE h;
53482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0 /* This doesn't work correctly at all! See:
53483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <https://marc.info/?l=sqlite-users&m=139299149416314&w=2>
53484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
53485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nFull = pVfs->mxPathname+1;
53486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zFull = sqlite3MallocZero( nFull );
53487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void *zConverted = 0;
53488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zFull==0 ){
53489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
53490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
53491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( winFullPathname(pVfs, zFilename, nFull, zFull)!=SQLITE_OK ){
53493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zFull);
53494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
53495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
53496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted = winConvertFromUtf8Filename(zFull);
53498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zFull);
53499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
53500 53490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *zConverted = winConvertFromUtf8Filename(zFilename);
53501 53491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(pVfs);
53502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
53503 53492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zConverted==0 ){
53504 53493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
53505 53494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
53506 53495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
53507 53496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( osIsNT() ){
@@ -54943,10 +54932,11 @@
54943 54932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BITVEC_TELEM aBitmap[BITVEC_NELEM]; /* Bitmap representation */
54944 54933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 aHash[BITVEC_NINT]; /* Hash table representation */
54945 54934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitvec *apSub[BITVEC_NPTR]; /* Recursive representation */
54946 54935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} u;
54947 54936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
54937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
54948 54938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
54949 54939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
54950 54940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Create a new bitmap object able to handle bits between 0 and iSize,
54951 54941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** inclusive. Return a pointer to the new object. Return NULL if
54952 54942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** malloc fails.
@@ -55053,11 +55043,13 @@
55053 55043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aiValues==0 ){
55054 55044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM_BKPT;
55055 55045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
55056 55046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(aiValues, p->u.aHash, sizeof(p->u.aHash));
55057 55047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(p->u.apSub, 0, sizeof(p->u.apSub));
55058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->iDivisor = (p->iSize + BITVEC_NPTR - 1)/BITVEC_NPTR;
55048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->iDivisor = p->iSize/BITVEC_NPTR;
55049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (p->iSize%BITVEC_NPTR)!=0 ) p->iDivisor++;
55050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->iDivisor<BITVEC_NBIT ) p->iDivisor = BITVEC_NBIT;
55059 55051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BitvecSet(p, i);
55060 55052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<BITVEC_NINT; j++){
55061 55053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aiValues[j] ) rc |= sqlite3BitvecSet(p, aiValues[j]);
55062 55054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55063 55055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StackFree(0, aiValues);
@@ -55129,10 +55121,56 @@
55129 55121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** was created.
55130 55122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55131 55123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE u32 sqlite3BitvecSize(Bitvec *p){
55132 55124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p->iSize;
55133 55125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
55127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
55128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
55129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Show the content of a Bitvec option and its children. Indent
55130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** everything by n spaces. Add x to each bitvec value.
55131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
55132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** From a debugger such as gdb, one can type:
55133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
55134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** call sqlite3ShowBitvec(p)
55135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
55136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** For some Bitvec p and see a recursive view of the Bitvec's content.
55137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
55138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void showBitvec(Bitvec *p, int n, unsigned x){
55139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
55140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p==0 ){
55141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("NULL\n");
55142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
55143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("Bitvec 0x%p iSize=%u", p, p->iSize);
55145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->iSize<=BITVEC_NBIT ){
55146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf(" bitmap\n");
55147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("%*s bits:", n, "");
55148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=1; i<=BITVEC_NBIT; i++){
55149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BitvecTest(p,i) ) printf(" %u", x+(unsigned)i);
55150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("\n");
55152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( p->iDivisor==0 ){
55153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf(" hash with %u entries\n", p->nSet);
55154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("%*s bits:", n, "");
55155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<BITVEC_NINT; i++){
55156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->u.aHash[i] ) printf(" %u", x+(unsigned)p->u.aHash[i]);
55157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("\n");
55159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
55160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf(" sub-bitvec with iDivisor=%u\n", p->iDivisor);
55161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<BITVEC_NPTR; i++){
55162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->u.apSub[i]==0 ) continue;
55163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("%*s apSub[%d]=", n, "", i);
55164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ showBitvec(p->u.apSub[i], n+4, i*p->iDivisor);
55165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void sqlite3ShowBitvec(Bitvec *p){
55169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ showBitvec(p, 0, 0);
55170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
55134 55172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55135 55173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_UNTESTABLE
55136 55174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55137 55175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Let V[] be an array of unsigned characters sufficient to hold
55138 55176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** up to N bits. Let I be an integer between 0 and N. 0<=I<N.
@@ -55140,40 +55178,48 @@
55140 55178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** individual bits within V.
55141 55179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55142 55180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SETBIT(V,I) V[I>>3] |= (1<<(I&7))
55143 55181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define CLEARBIT(V,I) V[I>>3] &= ~(BITVEC_TELEM)(1<<(I&7))
55144 55182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TESTBIT(V,I) (V[I>>3]&(1<<(I&7)))!=0
55183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
55145 55184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55146 55185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55147 55186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine runs an extensive test of the Bitvec code.
55148 55187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55149 55188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The input is an array of integers that acts as a program
55150 55189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to test the Bitvec. The integers are opcodes followed
55151 55190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by 0, 1, or 3 operands, depending on the opcode. Another
55152 55191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** opcode follows immediately after the last operand.
55153 55192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** There are 6 opcodes numbered from 0 through 5. 0 is the
55193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** There are opcodes numbered starting with 0. 0 is the
55155 55194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "halt" opcode and causes the test to end.
55156 55195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55157 55196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0 Halt and return the number of errors
55158 55197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 1 N S X Set N bits beginning with S and incrementing by X
55159 55198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2 N S X Clear N bits beginning with S and incrementing by X
55160 55199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 3 N Set N randomly chosen bits
55161 55200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 4 N Clear N randomly chosen bits
55162 55201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 5 N S X Set N bits from S increment X in array only, not in bitvec
55202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 6 Invoice sqlite3ShowBitvec() on the Bitvec object so far
55203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 7 X Show compile-time parameters and the hash of X
55163 55204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55164 55205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The opcodes 1 through 4 perform set and clear operations are performed
55165 55206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on both a Bitvec object and on a linear array of bits obtained from malloc.
55166 55207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Opcode 5 works on the linear array only, not on the Bitvec.
55167 55208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Opcode 5 is used to deliberately induce a fault in order to
55168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** confirm that error detection works.
55209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** confirm that error detection works. Opcodes 6 and greater are
55210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** state output opcodes. Opcodes 6 and greater are no-ops unless
55211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLite has been compiled with SQLITE_DEBUG.
55169 55212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55170 55213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** At the conclusion of the test the linear array is compared
55171 55214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** against the Bitvec object. If there are any differences,
55172 55215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an error is returned. If they are the same, zero is returned.
55173 55216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55174 55217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If a memory allocation error occurs, return -1.
55218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
55219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sz is the size of the Bitvec. Or if sz is negative, make the size
55220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2*(unsigned)(-sz) and disabled the linear vector check.
55175 55221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55176 55222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BitvecBuiltinTest(int sz, int *aOp){
55177 55223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitvec *pBitvec = 0;
55178 55224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned char *pV = 0;
55179 55225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = -1;
@@ -55180,22 +55226,45 @@
55180 55226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, nx, pc, op;
55181 55227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pTmpSpace;
55182 55228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55183 55229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Allocate the Bitvec to be tested and a linear array of
55184 55230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** bits to act as the reference */
55185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pBitvec = sqlite3BitvecCreate( sz );
55186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pV = sqlite3MallocZero( (7+(i64)sz)/8 + 1 );
55231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sz<=0 ){
55232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBitvec = sqlite3BitvecCreate( 2*(unsigned)(-sz) );
55233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pV = 0;
55234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
55235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBitvec = sqlite3BitvecCreate( sz );
55236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pV = sqlite3MallocZero( (7+(i64)sz)/8 + 1 );
55237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55187 55238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTmpSpace = sqlite3_malloc64(BITVEC_SZ);
55188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pBitvec==0 || pV==0 || pTmpSpace==0 ) goto bitvec_end;
55239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pBitvec==0 || pTmpSpace==0 || (pV==0 && sz>0) ) goto bitvec_end;
55189 55240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55190 55241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* NULL pBitvec tests */
55191 55242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BitvecSet(0, 1);
55192 55243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BitvecClear(0, 1, pTmpSpace);
55193 55244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55194 55245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Run the program */
55195 55246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = i = 0;
55196 55247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( (op = aOp[pc])!=0 ){
55248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op>=6 ){
55249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
55250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==6 ){
55251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ShowBitvec(pBitvec);
55252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( op==7 ){
55253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("BITVEC_SZ = %d (%d by sizeof)\n",
55254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ BITVEC_SZ, (int)sizeof(Bitvec));
55255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("BITVEC_USIZE = %d\n", (int)BITVEC_USIZE);
55256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("BITVEC_NELEM = %d\n", (int)BITVEC_NELEM);
55257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("BITVEC_NBIT = %d\n", (int)BITVEC_NBIT);
55258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("BITVEC_NINT = %d\n", (int)BITVEC_NINT);
55259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("BITVEC_MXHASH = %d\n", (int)BITVEC_MXHASH);
55260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("BITVEC_NPTR = %d\n", (int)BITVEC_NPTR);
55261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
55263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc++;
55264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
55265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55197 55266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( op ){
55198 55267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 1:
55199 55268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 2:
55200 55269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 5: {
55201 55270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nx = 4;
@@ -55213,33 +55282,37 @@
55213 55282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55214 55283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (--aOp[pc+1]) > 0 ) nx = 0;
55215 55284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc += nx;
55216 55285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i = (i & 0x7fffffff)%sz;
55217 55286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (op & 1)!=0 ){
55218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SETBIT(pV, (i+1));
55287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pV ) SETBIT(pV, (i+1));
55219 55288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op!=5 ){
55220 55289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3BitvecSet(pBitvec, i+1) ) goto bitvec_end;
55221 55290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55222 55291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
55223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CLEARBIT(pV, (i+1));
55292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pV ) CLEARBIT(pV, (i+1));
55224 55293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BitvecClear(pBitvec, i+1, pTmpSpace);
55225 55294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55226 55295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55227 55296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55228 55297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Test to make sure the linear array exactly matches the
55229 55298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Bitvec object. Start with the assumption that they do
55230 55299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** match (rc==0). Change rc to non-zero if a discrepancy
55231 55300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is found.
55232 55301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3BitvecTest(0,0) + sqlite3BitvecTest(pBitvec, sz+1)
55234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- + sqlite3BitvecTest(pBitvec, 0)
55235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- + (sqlite3BitvecSize(pBitvec) - sz);
55236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=1; i<=sz; i++){
55237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (TESTBIT(pV,i))!=sqlite3BitvecTest(pBitvec,i) ){
55238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = i;
55239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
55240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
55302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pV ){
55303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3BitvecTest(0,0) + sqlite3BitvecTest(pBitvec, sz+1)
55304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ + sqlite3BitvecTest(pBitvec, 0)
55305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ + (sqlite3BitvecSize(pBitvec) - sz);
55306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=1; i<=sz; i++){
55307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (TESTBIT(pV,i))!=sqlite3BitvecTest(pBitvec,i) ){
55308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = i;
55309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
55310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
55312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
55313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 0;
55241 55314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55242 55315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55243 55316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Free allocated structure */
55244 55317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bitvec_end:
55245 55318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(pTmpSpace);
@@ -58839,10 +58912,13 @@
58839 58912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *pTmpSpace; /* Pager.pageSize bytes of space for tmp use */
58840 58913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PCache *pPCache; /* Pointer to page cache object */
58841 58914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WAL
58842 58915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Wal *pWal; /* Write-ahead log used by "journal_mode=wal" */
58843 58916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zWal; /* File name for write-ahead log */
58917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
58918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_SETLK_TIMEOUT
58919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *dbWal;
58844 58920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
58845 58921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
58846 58922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
58847 58923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
58848 58924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Indexes for use with Pager.aStat[]. The Pager.aStat[] array contains
@@ -65721,10 +65797,15 @@
65721 65797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
65722 65798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3WalOpen(pPager->pVfs,
65723 65799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPager->fd, pPager->zWal, pPager->exclusiveMode,
65724 65800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPager->journalSizeLimit, &pPager->pWal
65725 65801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
65802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ENABLE_SETLK_TIMEOUT
65803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_OK ){
65804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3WalDb(pPager->pWal, pPager->dbWal);
65805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
65806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
65726 65807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
65727 65808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pagerFixMaplimit(pPager);
65728 65809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
65729 65810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
65730 65811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -65840,10 +65921,11 @@
65840 65921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
65841 65922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set the database handle used by the wal layer to determine if
65842 65923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** blocking locks are required.
65843 65924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
65844 65925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3PagerWalDb(Pager *pPager, sqlite3 *db){
65926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPager->dbWal = db;
65845 65927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pagerUseWal(pPager) ){
65846 65928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalDb(pPager->pWal, db);
65847 65929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
65848 65930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
65849 65931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -69013,11 +69095,10 @@
69013 69095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK );
69014 69096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWal->bShmUnreliable==0 ){
69015 69097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = walIndexReadHdr(pWal, pChanged);
69016 69098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69017 69099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_SETLK_TIMEOUT
69018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- walDisableBlocking(pWal);
69019 69100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_BUSY_TIMEOUT ){
69020 69101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_BUSY;
69021 69102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pCnt |= WAL_RETRY_BLOCKED_MASK;
69022 69103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69023 69104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -69028,10 +69109,11 @@
69028 69109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** which might cause WAL_RETRY to be returned even if BUSY_RECOVERY
69029 69110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** would be technically correct. But the race is benign since with
69030 69111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WAL_RETRY this routine will be called again and will probably be
69031 69112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** right on the second iteration.
69032 69113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
69114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)walEnableBlocking(pWal);
69033 69115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWal->apWiData[0]==0 ){
69034 69116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This branch is taken when the xShmMap() method returns SQLITE_BUSY.
69035 69117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** We assume this is a transient condition, so return WAL_RETRY. The
69036 69118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** xShmMap() implementation used by the default unix and win32 VFS
69037 69119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** modules may return SQLITE_BUSY due to a race condition in the
@@ -69044,10 +69126,11 @@
69044 69126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = WAL_RETRY;
69045 69127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( rc==SQLITE_BUSY ){
69046 69128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_BUSY_RECOVERY;
69047 69129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69048 69130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ walDisableBlocking(pWal);
69049 69132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
69050 69133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
69051 69134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69052 69135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else if( pWal->bShmUnreliable ){
69053 69136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return walBeginShmUnreliable(pWal, pChanged);
@@ -69731,10 +69814,11 @@
69731 69814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = xUndo(pUndoCtx, walFramePgno(pWal, iFrame));
69732 69815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69733 69816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iMax!=pWal->hdr.mxFrame ) walCleanupHash(pWal);
69734 69817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69735 69818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SEH_EXCEPT( rc = SQLITE_IOERR_IN_PAGE; )
69819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWal->iReCksum = 0;
69736 69820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69737 69821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
69738 69822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69739 69823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69740 69824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -69778,10 +69862,13 @@
69778 69862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWal->hdr.aFrameCksum[1] = aWalData[2];
69779 69863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SEH_TRY {
69780 69864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
walCleanupHash(pWal);
69781 69865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69782 69866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SEH_EXCEPT( rc = SQLITE_IOERR_IN_PAGE; )
69867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWal->iReCksum>pWal->hdr.mxFrame ){
69868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWal->iReCksum = 0;
69869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
69783 69870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69784 69871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69785 69872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
69786 69873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69787 69874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -72493,11 +72580,11 @@
72493 72580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pKey ){
72494 72581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
KeyInfo *pKeyInfo = pCur->pKeyInfo;
72495 72582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nKey==(i64)(int)nKey );
72496 72583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey = sqlite3VdbeAllocUnpackedRecord(pKeyInfo);
72497 72584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdxKey==0 ) return SQLITE_NOMEM_BKPT;
72498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeRecordUnpack(pKeyInfo, (int)nKey, pKey, pIdxKey);
72585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeRecordUnpack((int)nKey, pKey, pIdxKey);
72499 72586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdxKey->nField==0 || pIdxKey->nField>pKeyInfo->nAllField ){
72500 72587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_CORRUPT_BKPT;
72501 72588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
72502 72589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeIndexMoveto(pCur, pIdxKey, pRes);
72503 72590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -73550,14 +73637,14 @@
73550 73637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *pTmp; /* Temporary ptr into data[] */
73551 73638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73552 73639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->pBt!=0 );
73553 73640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
73554 73641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( CORRUPT_DB || iStart>=pPage->hdrOffset+6+pPage->childPtrSize );
73555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( CORRUPT_DB || iEnd <= pPage->pBt->usableSize );
73642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB || iEnd <= (int)pPage->pBt->usableSize );
73556 73643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
73557 73644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iSize>=4 ); /* Minimum cell size is 4 */
73558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( CORRUPT_DB || iStart<=pPage->pBt->usableSize-4 );
73645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB || iStart<=(int)pPage->pBt->usableSize-4 );
73559 73646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73560 73647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The list of freeblocks must be in ascending order. Find the
73561 73648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** spot on the list where iStart should be inserted.
73562 73649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
73563 73650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hdr = pPage->hdrOffset;
@@ -74477,10 +74564,11 @@
74477 74564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
removed = 1;
74478 74565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74479 74566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(pMainMtx);
74480 74567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return removed;
74481 74568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
74569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER( pBt );
74482 74570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
74483 74571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
74484 74572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74485 74573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
74486 74574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -74694,10 +74782,14 @@
74694 74782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtShared *pBt = p->pBt;
74695 74783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nReserve>=0 && nReserve<=255 );
74696 74784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(p);
74697 74785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBt->nReserveWanted = (u8)nReserve;
74698 74786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x = pBt->pageSize - pBt->usableSize;
74787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( x==nReserve && (pageSize==0 || (u32)pageSize==pBt->pageSize) ){
74788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3BtreeLeave(p);
74789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_OK;
74790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
74699 74791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nReserve<x ) nReserve = x;
74700 74792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pBt->btsFlags & BTS_PAGESIZE_FIXED ){
74701 74793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(p);
74702 74794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_READONLY;
74703 74795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -75318,10 +75410,17 @@
75318 75410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75319 75411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
75320 75412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)sqlite3PagerWalWriteLock(pPager, 0);
75321 75413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unlockBtreeIfUnused(pBt);
75322 75414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if defined(SQLITE_ENABLE_SETLK_TIMEOUT)
75416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_BUSY_TIMEOUT ){
75417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If a blocking lock timed out, break out of the loop here so that
75418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the busy-handler is not invoked. */
75419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
75420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
75421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
75323 75422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}while( (rc&0xFF)==SQLITE_BUSY && pBt->inTransaction==TRANS_NONE &&
75324 75423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
btreeInvokeBusyHandler(pBt) );
75325 75424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3PagerWalDb(pPager, 0);
75326 75425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_SETLK_TIMEOUT
75327 75426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_BUSY_TIMEOUT ) rc = SQLITE_BUSY;
@@ -77275,10 +77374,34 @@
77275 77374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = 1;
77276 77375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_OK;
77277 77376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77278 77377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
77279 77378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
77380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Set *pRes to 1 (true) if the BTree pointed to by cursor pCur contains zero
77381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** rows of content. Set *pRes to 0 (false) if the table contains content.
77382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return SQLITE_OK on success or some error code (ex: SQLITE_NOMEM) if
77383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** something goes wrong.
77384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
77385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3BtreeIsEmpty(BtCursor *pCur, int *pRes){
77386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
77387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
77388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( cursorOwnsBtShared(pCur) );
77389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
77390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur->eState==CURSOR_VALID ){
77391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pRes = 0;
77392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_OK;
77393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
77394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = moveToRoot(pCur);
77395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_EMPTY ){
77396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pRes = 1;
77397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_OK;
77398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
77399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pRes = 0;
77400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
77401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
77402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
77280 77403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77281 77404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
77282 77405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The cursors is CURSOR_VALID and has BTCF_AtLast set. Verify that
77283 77406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this flags are true for a consistent database.
77284 77407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -77495,12 +77618,12 @@
77495 77618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pCur->curFlags & BTCF_ValidOvfl)==0 );
77496 77619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
77497 77620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77498 77621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77499 77622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
77500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Compare the "idx"-th cell on the page the cursor pCur is currently
77501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pointing to to pIdxKey using xRecordCompare. Return negative or
77623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Compare the "idx"-th cell on the page pPage against the key
77624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pointing to by pIdxKey using xRecordCompare. Return negative or
77502 77625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** zero if the cell is less than or equal pIdxKey. Return positive
77503 77626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if unknown.
77504 77627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
77505 77628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return value negative: Cell at pCur[idx] less than pIdxKey
77506 77629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -77511,16 +77634,15 @@
77511 77634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
77512 77635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is part of an optimization. It is always safe to return
77513 77636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a positive value as that will cause the optimization to be skipped.
77514 77637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
77515 77638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int indexCellCompare(
77516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- BtCursor *pCur,
77639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ MemPage *pPage,
77517 77640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idx,
77518 77641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *pIdxKey,
77519 77642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RecordCompare xRecordCompare
77520 77643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
77521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- MemPage *pPage = pCur->pPage;
77522 77644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int c;
77523 77645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCell; /* Size of the pCell cell in bytes */
77524 77646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *pCell = findCellPastPtr(pPage, idx);
77525 77647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77526 77648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCell = pCell[0];
@@ -77625,18 +77747,18 @@
77625 77747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pCur->pPage->leaf
77626 77748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& cursorOnLastPage(pCur)
77627 77749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
77628 77750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int c;
77629 77751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->ix==pCur->pPage->nCell-1
77630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (c = indexCellCompare(pCur, pCur->ix, pIdxKey, xRecordCompare))<=0
77752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (c = indexCellCompare(pCur->pPage,pCur->ix,pIdxKey,xRecordCompare))<=0
77631 77753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pIdxKey->errCode==SQLITE_OK
77632 77754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
77633 77755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = c;
77634 77756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK; /* Cursor already pointing at the correct spot */
77635 77757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77636 77758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->iPage>0
77637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && indexCellCompare(pCur, 0, pIdxKey, xRecordCompare)<=0
77759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && indexCellCompare(pCur->pPage, 0, pIdxKey, xRecordCompare)<=0
77638 77760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pIdxKey->errCode==SQLITE_OK
77639 77761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
77640 77762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->curFlags &= ~(BTCF_ValidOvfl|BTCF_AtLast);
77641 77763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pCur->pPage->isInit ){
77642 77764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
@@ -77849,11 +77971,11 @@
77849 77971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->eState!=CURSOR_VALID ) return 0;
77850 77972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pCur->pPage->leaf==0) ) return -1;
77851 77973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77852 77974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pCur->pPage->nCell;
77853 77975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pCur->iPage; i++){
77854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- n *= pCur->apPage[i]->nCell;
77976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n *= pCur->apPage[i]->nCell+1;
77855 77977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77856 77978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return n;
77857 77979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77858 77980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77859 77981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -80306,11 +80428,16 @@
80306 80428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80307 80429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the sibling pages are not leaves, ensure that the right-child pointer
80308 80430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the right-most new sibling page is set to the value that was
80309 80431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** originally in the same field of the right-most old sibling page. */
80310 80432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pageFlags & PTF_LEAF)==0 && nOld!=nNew ){
80311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- MemPage *pOld = (nNew>nOld ? apNew : apOld)[nOld-1];
80433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ MemPage *pOld;
80434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nNew>nOld ){
80435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOld = apNew[nOld-1];
80436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
80437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOld = apOld[nOld-1];
80438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
80312 80439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&apNew[nNew-1]->aData[8], &pOld->aData[8], 4);
80313 80440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80314 80441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80315 80442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make any required updates to pointer map entries associated with
80316 80443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cells stored on sibling pages following the balance operation. Pointer
@@ -82938,10 +83065,11 @@
82938 83065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** btree as the argument handle holds an exclusive lock on the
82939 83066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite_schema table. Otherwise SQLITE_OK.
82940 83067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
82941 83068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeSchemaLocked(Btree *p){
82942 83069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
83070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(p); /* only used in DEBUG builds */
82943 83071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(p->db->mutex) );
82944 83072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(p);
82945 83073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = querySharedCacheTableLock(p, SCHEMA_ROOT, READ_LOCK);
82946 83074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK || rc==SQLITE_LOCKED_SHAREDCACHE );
82947 83075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(p);
@@ -87262,10 +87390,13 @@
87262 87390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** into register iDest, then add the OPFLAG_TYPEOFARG flag to that
87263 87391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** opcode.
87264 87392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
87265 87393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeTypeofColumn(Vdbe *p, int iDest){
87266 87394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp = sqlite3VdbeGetLastOp(p);
87395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
87396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( pOp->opcode==OP_ReleaseReg ) pOp--;
87397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
87267 87398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p3==iDest && pOp->opcode==OP_Column ){
87268 87399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p5 |= OPFLAG_TYPEOFARG;
87269 87400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87270 87401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87271 87402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -90155,34 +90286,26 @@
90155 90286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90156 90287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90157 90288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
90158 90289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90159 90290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
90160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This routine is used to allocate sufficient space for an UnpackedRecord
90161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** structure large enough to be used with sqlite3VdbeRecordUnpack() if
90162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the first argument is a pointer to KeyInfo structure pKeyInfo.
90163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
90164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The space is either allocated using sqlite3DbMallocRaw() or from within
90165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the unaligned buffer passed via the second and third arguments (presumably
90166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** stack space). If the former, then *ppFree is set to a pointer that should
90167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be eventually freed by the caller using sqlite3DbFree(). Or, if the
90168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** allocation comes from the pSpace/szSpace buffer, *ppFree is set to NULL
90169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** before returning.
90170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
90171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If an OOM error occurs, NULL is returned.
90291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Allocate sufficient space for an UnpackedRecord structure large enough
90292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to hold a decoded index record for pKeyInfo.
90293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
90294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The space is allocated using sqlite3DbMallocRaw(). If an OOM error
90295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** occurs, NULL is returned.
90172 90296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
90173 90297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeAllocUnpackedRecord(
90174 90298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
KeyInfo *pKeyInfo /* Description of the record */
90175 90299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
90176 90300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *p; /* Unpacked record to return */
90177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nByte; /* Number of bytes required for *p */
90301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 nByte; /* Number of bytes required for *p */
90178 90302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sizeof(UnpackedRecord) + sizeof(Mem)*65536 < 0x7fffffff );
90179 90303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte = ROUND8P(sizeof(UnpackedRecord)) + sizeof(Mem)*(pKeyInfo->nKeyField+1);
90180 90304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = (UnpackedRecord *)sqlite3DbMallocRaw(pKeyInfo->db, nByte);
90181 90305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !p ) return 0;
90182 90306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aMem = (Mem*)&((char*)p)[ROUND8P(sizeof(UnpackedRecord))];
90183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pKeyInfo->aSortFlags!=0 );
90184 90307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pKeyInfo = pKeyInfo;
90185 90308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nField = pKeyInfo->nKeyField + 1;
90186 90309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p;
90187 90310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90188 90311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -90190,11 +90313,10 @@
90190 90313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Given the nKey-byte encoding of a record in pKey[], populate the
90191 90314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** UnpackedRecord structure indicated by the fourth argument with the
90192 90315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contents of the decoded record.
90193 90316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
90194 90317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(
90195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- KeyInfo *pKeyInfo, /* Information about the record format */
90196 90318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nKey, /* Size of the binary record */
90197 90319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey, /* The binary record */
90198 90320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *p /* Populate this structure before returning. */
90199 90321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
90200 90322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned char *aKey = (const unsigned char *)pKey;
@@ -90201,10 +90323,11 @@
90201 90323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 d;
90202 90324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 idx; /* Offset in aKey[] to read from */
90203 90325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 u; /* Unsigned loop counter */
90204 90326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 szHdr;
90205 90327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *pMem = p->aMem;
90328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ KeyInfo *pKeyInfo = p->pKeyInfo;
90206 90329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
90207 90330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->default_rc = 0;
90208 90331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
90209 90332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idx = getVarint32(aKey, szHdr);
90210 90333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
d = szHdr;
@@ -90228,10 +90351,12 @@
90228 90351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* In a corrupt record entry, the last pMem might have been set up using
90229 90352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** uninitialized memory. Overwrite its value with NULL, to prevent
90230 90353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** warnings from MSAN. */
90231 90354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetNull(pMem-1);
90232 90355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( u == pKeyInfo->nKeyField + 1 );
90357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( u < pKeyInfo->nKeyField + 1 );
90233 90358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( u<=pKeyInfo->nKeyField + 1 );
90234 90359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nField = u;
90235 90360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90236 90361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
90237 90362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
@@ -91087,10 +91212,11 @@
91087 91212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is an integer.
91088 91213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
91089 91214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The easiest way to enforce this limit is to consider only records with
91090 91215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 13 fields or less. If the first field is an integer, the maximum legal
91091 91216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** header size is (12*5 + 1 + 1) bytes. */
91217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->pKeyInfo->aSortFlags!=0 );
91092 91218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pKeyInfo->nAllField<=13 ){
91093 91219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags = p->aMem[0].flags;
91094 91220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pKeyInfo->aSortFlags[0] ){
91095 91221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pKeyInfo->aSortFlags[0] & KEYINFO_ORDER_BIGNULL ){
91096 91222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3VdbeRecordCompare;
@@ -91336,10 +91462,11 @@
91336 91462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
91337 91463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v->expmask |= ((u32)1 << (iVar-1));
91338 91464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91339 91465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91340 91466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_DATETIME_FUNCS
91341 91468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
91342 91469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Cause a function to throw an error if it was call from OP_PureFunc
91343 91470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** rather than OP_Function.
91344 91471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
91345 91472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_PureFunc means that the function must be deterministic, and should
@@ -91369,10 +91496,11 @@
91369 91496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zMsg);
91370 91497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
91371 91498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91372 91499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
91373 91500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* SQLITE_OMIT_DATETIME_FUNCS */
91374 91502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91375 91503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_CURSOR_HINTS) && defined(SQLITE_DEBUG)
91376 91504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
91377 91505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This Walker callback is used to help verify that calls to
91378 91506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3BtreeCursorHint() with opcode BTREE_HINT_RANGE have
@@ -91445,11 +91573,10 @@
91445 91573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
91446 91574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = v->db;
91447 91575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iKey2;
91448 91576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PreUpdate preupdate;
91449 91577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTbl = pTab->zName;
91450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static const u8 fakeSortOrder = 0;
91451 91578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
91452 91579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nRealCol;
91453 91580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->tabFlags & TF_WithoutRowid ){
91454 91581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nRealCol = sqlite3PrimaryKeyIndex(pTab)->nColumn;
91455 91582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pTab->tabFlags & TF_HasVirtual ){
@@ -91484,11 +91611,11 @@
91484 91611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.iNewReg = iReg;
91485 91612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pKeyinfo = (KeyInfo*)&preupdate.keyinfoSpace;
91486 91613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pKeyinfo->db = db;
91487 91614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pKeyinfo->enc = ENC(db);
91488 91615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pKeyinfo->nKeyField = pTab->nCol;
91489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- preupdate.pKeyinfo->aSortFlags = (u8*)&fakeSortOrder;
91616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ preupdate.pKeyinfo->aSortFlags = 0; /* Indicate .aColl, .nAllField uninit */
91490 91617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.iKey1 = iKey1;
91491 91618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.iKey2 = iKey2;
91492 91619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pTab = pTab;
91493 91620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.iBlobWrite = iBlobWrite;
91494 91621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -93681,11 +93808,11 @@
93681 93808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *pRet; /* Return value */
93682 93809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93683 93810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet = sqlite3VdbeAllocUnpackedRecord(pKeyInfo);
93684 93811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet ){
93685 93812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(pRet->aMem, 0, sizeof(Mem)*(pKeyInfo->nKeyField+1));
93686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeRecordUnpack(pKeyInfo, nKey, pKey, pRet);
93813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeRecordUnpack(nKey, pKey, pRet);
93687 93814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93688 93815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRet;
93689 93816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93690 93817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93691 93818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -93710,10 +93837,13 @@
93710 93837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_MISUSE_BKPT;
93711 93838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto preupdate_old_out;
93712 93839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93713 93840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pPk ){
93714 93841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStore = sqlite3TableColumnToIndex(p->pPk, iIdx);
93842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( iIdx >= p->pTab->nCol ){
93843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_MISUSE_BKPT;
93844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto preupdate_old_out;
93715 93845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93716 93846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStore = sqlite3TableColumnToStorage(p->pTab, iIdx);
93717 93847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93718 93848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iStore>=p->pCsr->nField || iStore<0 ){
93719 93849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_RANGE;
@@ -93865,10 +93995,12 @@
93865 93995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_MISUSE_BKPT;
93866 93996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto preupdate_new_out;
93867 93997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93868 93998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pPk && p->op!=SQLITE_UPDATE ){
93869 93999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStore = sqlite3TableColumnToIndex(p->pPk, iIdx);
94000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( iIdx >= p->pTab->nCol ){
94001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_MISUSE_BKPT;
93870 94002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93871 94003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStore = sqlite3TableColumnToStorage(p->pTab, iIdx);
93872 94004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93873 94005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93874 94006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iStore>=p->pCsr->nField || iStore<0 ){
@@ -95190,10 +95322,40 @@
95190 95322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95191 95323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDest->flags &= ~MEM_Ephem;
95192 95324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
95193 95325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95194 95326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
95327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
95328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Send a "statement aborts" message to the error log.
95329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
95330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static SQLITE_NOINLINE void sqlite3VdbeLogAbort(
95331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Vdbe *p, /* The statement that is running at the time of failure */
95332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc, /* Error code */
95333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Op *pOp, /* Opcode that filed */
95334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Op *aOp /* All opcodes */
95335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
95336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zSql = p->zSql; /* Original SQL text */
95337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPrefix = ""; /* Prefix added to SQL text */
95338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int pc; /* Opcode address */
95339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zXtra[100]; /* Buffer space to store zPrefix */
95340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
95341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pFrame ){
95342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aOp[0].opcode==OP_Init );
95343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( aOp[0].p4.z!=0 ){
95344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aOp[0].p4.z[0]=='-'
95345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && aOp[0].p4.z[1]=='-'
95346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && aOp[0].p4.z[2]==' ' );
95347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(zXtra), zXtra,"/* %s */ ",aOp[0].p4.z+3);
95348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrefix = zXtra;
95349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
95350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrefix = "/* unknown trigger */ ";
95351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
95352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
95353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc = (int)(pOp - aOp);
95354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_log(rc, "statement aborts at %d: %s; [%s%s]",
95355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pc, p->zErrMsg, zPrefix, zSql);
95356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
95195 95357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
95196 95358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
95197 95359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the symbolic name for the data type of a pMem
95198 95360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
95199 95361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char *vdbeMemTypeName(Mem *pMem){
@@ -95715,12 +95877,11 @@
95715 95877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zErrMsg = sqlite3MPrintf(db, "%z: %s", p->zErrMsg, pOp->p4.z);
95716 95878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95717 95879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
95718 95880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeError(p, "%s", pOp->p4.z);
95719 95881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pcx = (int)(pOp - aOp);
95721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_log(pOp->p1, "abort at %d in [%s]: %s", pcx, p->zSql, p->zErrMsg);
95882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeLogAbort(p, pOp->p1, pOp, aOp);
95722 95883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95723 95884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeHalt(p);
95724 95885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_BUSY || rc==SQLITE_OK || rc==SQLITE_ERROR );
95725 95886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_BUSY ){
95726 95887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = SQLITE_BUSY;
@@ -96874,10 +97035,11 @@
96874 97035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
96875 97036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pOp->p3;
96876 97037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKeyInfo = pOp->p4.pKeyInfo;
96877 97038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( n>0 );
96878 97039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pKeyInfo!=0 );
97040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pKeyInfo->aSortFlags!=0 );
96879 97041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1 = pOp->p1;
96880 97042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p2 = pOp->p2;
96881 97043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
96882 97044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aPermute ){
96883 97045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int k, mx = 0;
@@ -97042,11 +97204,11 @@
97042 97204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->u.i = ~sqlite3VdbeIntValue(pIn1);
97043 97205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97044 97206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
97045 97207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97046 97208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
97047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: Once P1 P2 * * *
97209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: Once P1 P2 P3 * *
97048 97210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97049 97211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Fall through to the next instruction the first time this opcode is
97050 97212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** encountered on each invocation of the byte-code program. Jump to P2
97051 97213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on the second and all subsequent encounters during the same invocation.
97052 97214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -97058,10 +97220,16 @@
97058 97220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97059 97221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** For subprograms, there is a bitmask in the VdbeFrame that determines
97060 97222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** whether or not the jump should be taken. The bitmask is necessary
97061 97223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** because the self-altering code trick does not work for recursive
97062 97224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** triggers.
97225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
97226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The P3 operand is not used directly by this opcode. However P3 is
97227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** used by the code generator as follows: If this opcode is the start
97228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of a subroutine and that subroutine uses a Bloom filter, then P3 will
97229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be the register that holds that Bloom filter. See tag-202407032019
97230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in the source code for implementation details.
97063 97231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
97064 97232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_Once: { /* jump */
97065 97233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 iAddr; /* Address of this instruction */
97066 97234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->aOp[0].opcode==OP_Init );
97067 97235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pFrame ){
@@ -97629,10 +97797,19 @@
97629 97797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: typecheck(r[P1@P2])
97630 97798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97631 97799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply affinities to the range of P2 registers beginning with P1.
97632 97800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Take the affinities from the Table object in P4. If any value
97633 97801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cannot be coerced into the correct type, then raise an error.
97802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
97803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P3==0, then omit checking of VIRTUAL columns.
97804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
97805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P3==1, then omit checking of all generated column, both VIRTUAL
97806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and STORED.
97807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
97808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If P3>=2, then only check column number P3-2 in the table (which will
97809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be a VIRTUAL column) against the value in reg[P1]. In this case,
97810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** P2 will be 1.
97634 97811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97635 97812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This opcode is similar to OP_Affinity except that this opcode
97636 97813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** forces the register type to the Table column type. This is used
97637 97814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to implement "strict affinity".
97638 97815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -97643,30 +97820,42 @@
97643 97820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97644 97821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Preconditions:
97645 97822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97646 97823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <ul>
97647 97824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> P2 should be the number of non-virtual columns in the
97648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** table of P4.
97649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <li> Table P4 should be a STRICT table.
97825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** table of P4 unless P3>1, in which case P2 will be 1.
97826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <li> Table P4 is a STRICT table.
97650 97827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </ul>
97651 97828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97652 97829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If any precondition is false, an assertion fault occurs.
97653 97830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
97654 97831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_TypeCheck: {
97655 97832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
97656 97833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Column *aCol;
97657 97834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
97835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCol;
97658 97836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
97659 97837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p4type==P4_TABLE );
97660 97838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pOp->p4.pTab;
97661 97839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab->tabFlags & TF_Strict );
97662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pTab->nNVCol==pOp->p2 );
97840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p3>=0 && pOp->p3<pTab->nCol+2 );
97663 97841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aCol = pTab->aCol;
97664 97842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
97665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<pTab->nCol; i++){
97666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( aCol[i].colFlags & COLFLAG_GENERATED ){
97667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( aCol[i].colFlags & COLFLAG_VIRTUAL ) continue;
97843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p3<2 ){
97844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTab->nNVCol==pOp->p2 );
97845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = 0;
97846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCol = pTab->nCol;
97847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
97848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = pOp->p3-2;
97849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCol = i+1;
97850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( i<pTab->nCol );
97851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aCol[i].colFlags & COLFLAG_VIRTUAL );
97852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p2==1 );
97853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
97854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(; i<nCol; i++){
97855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (aCol[i].colFlags & COLFLAG_GENERATED)!=0 && pOp->p3<2 ){
97856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (aCol[i].colFlags & COLFLAG_VIRTUAL)!=0 ) continue;
97668 97857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p3 ){ pIn1++; continue; }
97669 97858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97670 97859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIn1 < &aMem[pOp->p1+pOp->p2] );
97671 97860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
applyAffinity(pIn1, aCol[i].affinity, encoding);
97672 97861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pIn1->flags & MEM_Null)==0 ){
@@ -98103,10 +98292,11 @@
98103 98292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98104 98293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
98105 98294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zHdr += sqlite3PutVarint(zHdr, serial_type);
98106 98295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRec->n ){
98107 98296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRec->z!=0 );
98297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRec->z!=(const char*)sqlite3CtypeMap );
98108 98298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(zPayload, pRec->z, pRec->n);
98109 98299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPayload += pRec->n;
98110 98300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98111 98301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98112 98302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRec==pLast ) break;
@@ -99740,11 +99930,11 @@
99740 99930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = ExpandBlob(r.aMem);
99741 99931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK || rc==SQLITE_NOMEM );
99742 99932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) goto no_mem;
99743 99933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey = sqlite3VdbeAllocUnpackedRecord(pC->pKeyInfo);
99744 99934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdxKey==0 ) goto no_mem;
99745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeRecordUnpack(pC->pKeyInfo, r.aMem->n, r.aMem->z, pIdxKey);
99935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeRecordUnpack(r.aMem->n, r.aMem->z, pIdxKey);
99746 99936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey->default_rc = 0;
99747 99937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeIndexMoveto(pC->uc.pCursor, pIdxKey, &pC->seekResult);
99748 99938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFreeNN(db, pIdxKey);
99749 99939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99750 99940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
@@ -100737,10 +100927,36 @@
100737 100927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeBranchTaken(res!=0,2);
100738 100928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ) goto jump_to_p2;
100739 100929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100740 100930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
100741 100931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
100933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: IfEmpty P1 P2 * * *
100934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Synopsis: if( empty(P1) ) goto P2
100935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
100936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Check to see if the b-tree table that cursor P1 references is empty
100937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and jump to P2 if it is.
100938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
100939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_IfEmpty: { /* jump */
100940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCursor *pC;
100941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ BtCursor *pCrsr;
100942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int res;
100943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
100944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p1>=0 && pOp->p1<p->nCursor );
100945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p2>=0 && pOp->p2<p->nOp );
100946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
100947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pC = p->apCsr[pOp->p1];
100948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pC!=0 );
100949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pC->eCurType==CURTYPE_BTREE );
100950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCrsr = pC->uc.pCursor;
100951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pCrsr );
100952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3BtreeIsEmpty(pCrsr, &res);
100953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc ) goto abort_due_to_error;
100954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeBranchTaken(res!=0,2);
100955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res ) goto jump_to_p2;
100956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
100957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
100742 100958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100743 100959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: Next P1 P2 P3 * P5
100744 100960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
100745 100961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Advance cursor P1 so that it points to the next key/data pair in its
100746 100962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table or index. If there are no more key/value pairs then fall through
@@ -102609,11 +102825,18 @@
102609 102825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab_cursor *pVCur;
102610 102826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab *pVtab;
102611 102827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const sqlite3_module *pModule;
102612 102828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102613 102829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->bIsReader );
102614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCur = 0;
102830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCur = p->apCsr[pOp->p1];
102831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur!=0
102832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS( pCur->eCurType==CURTYPE_VTAB )
102833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS( pCur->uc.pVCur->pVtab==pOp->p4.pVtab->pVtab )
102834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
102835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This opcode is a no-op if the cursor is already open */
102836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
102837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
102615 102838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVCur = 0;
102616 102839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVtab = pOp->p4.pVtab->pVtab;
102617 102840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pVtab==0 || NEVER(pVtab->pModule==0) ){
102618 102841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_LOCKED;
102619 102842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto abort_due_to_error;
@@ -103551,12 +103774,11 @@
103551 103774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeError(p, "%s", sqlite3ErrStr(rc));
103552 103775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103553 103776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = rc;
103554 103777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SystemError(db, rc);
103555 103778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( sqlite3GlobalConfig.xLog!=0 );
103556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_log(rc, "statement aborts at %d: [%s] %s",
103557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (int)(pOp - aOp), p->zSql, p->zErrMsg);
103779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeLogAbort(p, rc, pOp, aOp);
103558 103780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->eVdbeState==VDBE_RUN_STATE ) sqlite3VdbeHalt(p);
103559 103781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_IOERR_NOMEM ) sqlite3OomFault(db);
103560 103782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_CORRUPT && db->autoCommit==0 ){
103561 103783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->flags |= SQLITE_CorruptRdOnly;
103562 103784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -104013,11 +104235,11 @@
104013 104235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *z,
104014 104236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n,
104015 104237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOffset,
104016 104238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xCall)(BtCursor*, u32, u32, void*)
104017 104239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
104018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc;
104240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = SQLITE_OK;
104019 104241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Incrblob *p = (Incrblob *)pBlob;
104020 104242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v;
104021 104243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db;
104022 104244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104023 104245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p==0 ) return SQLITE_MISUSE_BKPT;
@@ -104053,21 +104275,36 @@
104053 104275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** same way as an SQLITE_DELETE (the SQLITE_DELETE code is actually
104054 104276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** slightly more efficient). Since you cannot write to a PK column
104055 104277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** using the incremental-blob API, this works. For the sessions module
104056 104278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** anyhow.
104057 104279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_int64 iKey;
104059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iKey = sqlite3BtreeIntegerKey(p->pCsr);
104060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( v->apCsr[0]!=0 );
104061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( v->apCsr[0]->eCurType==CURTYPE_BTREE );
104062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbePreUpdateHook(
104063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- v, v->apCsr[0], SQLITE_DELETE, p->zDb, p->pTab, iKey, -1, p->iCol
104064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
104065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
104066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
104067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
104280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeCursorIsValidNN(p->pCsr)==0 ){
104281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If the cursor is not currently valid, try to reseek it. This
104282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** always either fails or finds the correct row - the cursor will
104283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** have been marked permanently CURSOR_INVALID if the open row has
104284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** been deleted. */
104285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bDiff = 0;
104286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3BtreeCursorRestore(p->pCsr, &bDiff);
104287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( bDiff==0 || sqlite3BtreeCursorIsValidNN(p->pCsr)==0 );
104288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
104289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3BtreeCursorIsValidNN(p->pCsr) ){
104290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_int64 iKey;
104291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iKey = sqlite3BtreeIntegerKey(p->pCsr);
104292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( v->apCsr[0]!=0 );
104293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( v->apCsr[0]->eCurType==CURTYPE_BTREE );
104294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbePreUpdateHook(
104295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v, v->apCsr[0], SQLITE_DELETE, p->zDb, p->pTab, iKey, -1, p->iCol
104296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
104297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
104298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
104299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_OK ){
104300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = xCall(p->pCsr, iOffset+p->iOffset, n, z);
104301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
104302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
104068 104303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = xCall(p->pCsr, iOffset+p->iOffset, n, z);
104304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
104305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
104069 104306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeaveCursor(p->pCsr);
104070 104307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_ABORT ){
104071 104308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeFinalize(v);
104072 104309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pStmt = 0;
104073 104310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -104916,11 +105153,11 @@
104916 105153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey1, int nKey1, /* Left side of comparison */
104917 105154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey2, int nKey2 /* Right side of comparison */
104918 105155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
104919 105156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *r2 = pTask->pUnpacked;
104920 105157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *pbKey2Cached==0 ){
104921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeRecordUnpack(pTask->pSorter->pKeyInfo, nKey2, pKey2, r2);
105158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeRecordUnpack(nKey2, pKey2, r2);
104922 105159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pbKey2Cached = 1;
104923 105160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104924 105161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3VdbeRecordCompareWithSkip(nKey1, pKey1, r2, 1);
104925 105162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104926 105163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -104943,11 +105180,11 @@
104943 105180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey1, int nKey1, /* Left side of comparison */
104944 105181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey2, int nKey2 /* Right side of comparison */
104945 105182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
104946 105183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *r2 = pTask->pUnpacked;
104947 105184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !*pbKey2Cached ){
104948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeRecordUnpack(pTask->pSorter->pKeyInfo, nKey2, pKey2, r2);
105185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeRecordUnpack(nKey2, pKey2, r2);
104949 105186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pbKey2Cached = 1;
104950 105187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104951 105188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3VdbeRecordCompare(nKey1, pKey1, r2);
104952 105189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104953 105190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -104983,10 +105220,11 @@
104983 105220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = vdbeSorterCompareTail(
104984 105221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTask, pbKey2Cached, pKey1, nKey1, pKey2, nKey2
104985 105222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
104986 105223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104987 105224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
105225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTask->pSorter->pKeyInfo->aSortFlags!=0 );
104988 105226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !(pTask->pSorter->pKeyInfo->aSortFlags[0]&KEYINFO_ORDER_BIGNULL) );
104989 105227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTask->pSorter->pKeyInfo->aSortFlags[0] ){
104990 105228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = res * -1;
104991 105229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104992 105230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -105046,10 +105284,11 @@
105046 105284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
105047 105285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *v2 & 0x80 ) res = +1;
105048 105286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105049 105287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105050 105288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
105289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTask->pSorter->pKeyInfo->aSortFlags!=0 );
105051 105290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res==0 ){
105052 105291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTask->pSorter->pKeyInfo->nKeyField>1 ){
105053 105292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = vdbeSorterCompareTail(
105054 105293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTask, pbKey2Cached, pKey1, nKey1, pKey2, nKey2
105055 105294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
@@ -105119,11 +105358,12 @@
105119 105358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCsr->pKeyInfo );
105120 105359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !pCsr->isEphemeral );
105121 105360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCsr->eCurType==CURTYPE_SORTER );
105122 105361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sizeof(KeyInfo) + UMXV(pCsr->pKeyInfo->nKeyField)*sizeof(CollSeq*)
105123 105362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
< 0x7fffffff );
105124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- szKeyInfo = SZ_KEYINFO(pCsr->pKeyInfo->nKeyField+1);
105363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pCsr->pKeyInfo->nKeyField<=pCsr->pKeyInfo->nAllField );
105364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ szKeyInfo = SZ_KEYINFO(pCsr->pKeyInfo->nAllField);
105125 105365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz = SZ_VDBESORTER(nWorker+1);
105126 105366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
105127 105367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter = (VdbeSorter*)sqlite3DbMallocZero(db, sz + szKeyInfo);
105128 105368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->uc.pSorter = pSorter;
105129 105369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSorter==0 ){
@@ -105133,11 +105373,16 @@
105133 105373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter->pKeyInfo = pKeyInfo = (KeyInfo*)((u8*)pSorter + sz);
105134 105374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(pKeyInfo, pCsr->pKeyInfo, szKeyInfo);
105135 105375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKeyInfo->db = 0;
105136 105376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nField && nWorker==0 ){
105137 105377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKeyInfo->nKeyField = nField;
105378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nField<=pCsr->pKeyInfo->nAllField );
105138 105379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* It is OK that pKeyInfo reuses the aSortFlags field from pCsr->pKeyInfo,
105381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** since the pCsr->pKeyInfo->aSortFlags[] array is invariant and lives
105382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** longer that pSorter. */
105383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pKeyInfo->aSortFlags==pCsr->pKeyInfo->aSortFlags );
105139 105384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(pBt);
105140 105385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter->pgsz = pgsz = sqlite3BtreeGetPageSize(pBt);
105141 105386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(pBt);
105142 105387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter->nTask = nWorker + 1;
105143 105388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter->iPrev = (u8)(nWorker - 1);
@@ -106913,11 +107158,11 @@
106913 107158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2->nField = nKeyCol;
106914 107159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106915 107160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( r2->nField==nKeyCol );
106916 107161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106917 107162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKey = vdbeSorterRowkey(pSorter, &nKey);
106918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeRecordUnpack(pKeyInfo, nKey, pKey, r2);
107163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeRecordUnpack(nKey, pKey, r2);
106919 107164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nKeyCol; i++){
106920 107165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( r2->aMem[i].flags & MEM_Null ){
106921 107166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = -1;
106922 107167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
106923 107168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -109287,17 +109532,16 @@
109287 109532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Clearly non-deterministic functions like random(), but also
109288 109533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** date/time functions that use 'now', and other functions like
109289 109534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite_version() that might change over time cannot be used
109290 109535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in an index or generated column. Curiously, they can be used
109291 109536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in a CHECK constraint. SQLServer, MySQL, and PostgreSQL all
109292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** all this. */
109537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** allow this. */
109293 109538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ResolveNotValid(pParse, pNC, "non-deterministic functions",
109294 109539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
NC_IdxExpr|NC_PartIdx|NC_GenCol, 0, pExpr);
109295 109540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
109296 109541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (NC_SelfRef & 0xff)==NC_SelfRef ); /* Must fit in 8 bits */
109297 109542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op2 = pNC->ncFlags & NC_SelfRef;
109298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pNC->ncFlags & NC_FromDDL ) ExprSetProperty(pExpr, EP_FromDDL);
109299 109543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109300 109544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pDef->funcFlags & SQLITE_FUNC_INTERNAL)!=0
109301 109545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pParse->nested==0
109302 109546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pParse->db->mDbFlags & DBFLAG_InternalFunc)==0
109303 109547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
@@ -109309,10 +109553,11 @@
109309 109553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDef = 0;
109310 109554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
109311 109555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pDef->funcFlags & (SQLITE_FUNC_DIRECT|SQLITE_FUNC_UNSAFE))!=0
109312 109556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !IN_RENAME_OBJECT
109313 109557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
109558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNC->ncFlags & NC_FromDDL ) ExprSetProperty(pExpr, EP_FromDDL);
109314 109559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprFunctionUsable(pParse, pExpr, pDef);
109315 109560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109316 109561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109317 109562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
109318 109563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==IN_RENAME_OBJECT ){
@@ -109443,22 +109688,25 @@
109443 109688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** type of the function
109444 109689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
109445 109690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
109446 109691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109447 109692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SUBQUERY
109693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case TK_EXISTS:
109448 109694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SELECT:
109449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case TK_EXISTS: testcase( pExpr->op==TK_EXISTS );
109450 109695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
109451 109696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IN: {
109452 109697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_IN );
109698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pExpr->op==TK_EXISTS );
109699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pExpr->op==TK_SELECT );
109453 109700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(pExpr) ){
109454 109701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nRef = pNC->nRef;
109455 109702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IsCheck );
109456 109703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_PartIdx );
109457 109704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IdxExpr );
109458 109705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_GenCol );
109459 109706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->x.pSelect );
109707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op==TK_EXISTS ) pParse->bHasExists = 1;
109460 109708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNC->ncFlags & NC_SelfRef ){
109461 109709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
notValidImpl(pParse, pNC, "subqueries", pExpr, pExpr);
109462 109710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
109463 109711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkSelect(pWalker, pExpr->x.pSelect);
109464 109712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -110469,11 +110717,13 @@
110469 110717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->iTable==pExpr->pLeft->x.pSelect->pEList->nExpr );
110470 110718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ExprAffinity(
110471 110719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pLeft->x.pSelect->pEList->a[pExpr->iColumn].pExpr
110472 110720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
110473 110721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( op==TK_VECTOR ){
110722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==TK_VECTOR
110723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (op==TK_FUNCTION && pExpr->affExpr==SQLITE_AFF_DEFER)
110724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
110475 110725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ExprUseXList(pExpr) );
110476 110726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ExprAffinity(pExpr->x.pList->a[0].pExpr);
110477 110727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110478 110728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_Skip|EP_IfNullRow) ){
110479 110729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_COLLATE
@@ -110662,11 +110912,13 @@
110662 110912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110663 110913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_CAST || op==TK_UPLUS ){
110664 110914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->pLeft;
110665 110915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
110666 110916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( op==TK_VECTOR ){
110917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==TK_VECTOR
110918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (op==TK_FUNCTION && p->affExpr==SQLITE_AFF_DEFER)
110919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
110668 110920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ExprUseXList(p) );
110669 110921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->x.pList->a[0].pExpr;
110670 110922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
110671 110923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110672 110924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_COLLATE ){
@@ -111536,11 +111788,11 @@
111536 111788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRight;
111537 111789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pRight==0 ){
111538 111790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pLeft;
111539 111791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
111540 111792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 f = pLeft->flags | pRight->flags;
111541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (f&(EP_OuterON|EP_InnerON|EP_IsFalse))==EP_IsFalse
111793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (f&(EP_OuterON|EP_InnerON|EP_IsFalse|EP_HasFunc))==EP_IsFalse
111542 111794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !IN_RENAME_OBJECT
111543 111795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
111544 111796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDeferredDelete(pParse, pLeft);
111545 111797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDeferredDelete(pParse, pRight);
111546 111798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3Expr(db, TK_INTEGER, "0");
@@ -112764,10 +113016,90 @@
112764 113016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->op==TK_AND ? pLeft : pRight;
112765 113017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112766 113018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112767 113019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr;
112768 113020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
113022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
113023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return true if it might be advantageous to compute the right operand
113024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of expression pExpr first, before the left operand.
113025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
113026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Normally the left operand is computed before the right operand. But if
113027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the left operand contains a subquery and the right does not, then it
113028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** might be more efficient to compute the right operand first.
113029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
113030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int exprEvalRhsFirst(Expr *pExpr){
113031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pExpr->pLeft, EP_Subquery)
113032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !ExprHasProperty(pExpr->pRight, EP_Subquery)
113033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
113034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
113035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
113036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
113037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
113038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
113039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
113040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
113041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Compute the two operands of a binary operator.
113042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
113043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If either operand contains a subquery, then the code strives to
113044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** compute the operand containing the subquery second. If the other
113045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** operand evalutes to NULL, then a jump is made. The address of the
113046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** IsNull operand that does this jump is returned. The caller can use
113047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this to optimize the computation so as to avoid doing the potentially
113048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** expensive subquery.
113049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
113050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If no optimization opportunities exist, return 0.
113051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
113052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int exprComputeOperands(
113053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Parse *pParse, /* Parsing context */
113054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pExpr, /* The comparison expression */
113055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pR1, /* OUT: Register holding the left operand */
113056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pR2, /* OUT: Register holding the right operand */
113057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pFree1, /* OUT: Temp register to free if not zero */
113058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pFree2 /* OUT: Another temp register to free if not zero */
113059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
113060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrIsNull;
113061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int r1, r2;
113062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Vdbe *v = pParse->pVdbe;
113063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
113064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( v!=0 );
113065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
113066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the left operand contains a (possibly expensive) subquery and the
113067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** right operand does not and the right operation might be NULL,
113068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then compute the right operand first and do an IsNull jump if the
113069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** right operand evalutes to NULL.
113070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
113071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( exprEvalRhsFirst(pExpr) && sqlite3ExprCanBeNull(pExpr->pRight) ){
113072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, pFree2);
113073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = sqlite3VdbeAddOp1(v, OP_IsNull, r2);
113074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "skip left operand"));
113075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
113076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
113077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = 0; /* Silence a false-positive uninit-var warning in MSVC */
113078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = 0;
113079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
113080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, pFree1);
113081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( addrIsNull==0 ){
113082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
113083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the right operand contains a subquery and the left operand does not
113084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and the left operand might be NULL, then check the left operand do
113085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** an IsNull check on the left operand before computing the right
113086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** operand.
113087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
113088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pExpr->pRight, EP_Subquery)
113089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && sqlite3ExprCanBeNull(pExpr->pLeft)
113090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
113091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = sqlite3VdbeAddOp1(v, OP_IsNull, r1);
113092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "skip right operand"));
113093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
113094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
113095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, pFree2);
113096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
113097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pR1 = r1;
113098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pR2 = r2;
113099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return addrIsNull;
113100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112769 113101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112770 113102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
112771 113103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pExpr is a TK_FUNCTION node. Try to determine whether or not the
112772 113104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function is a constant function. A function is constant if all of
112773 113105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the following are true:
@@ -114022,15 +114354,16 @@
114022 114354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCopy = sqlite3SelectDup(pParse->db, pSelect, 0);
114023 114355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = pParse->db->mallocFailed ? 1 :sqlite3Select(pParse, pCopy, &dest);
114024 114356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(pParse->db, pCopy);
114025 114357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(pParse->db, dest.zAffSdst);
114026 114358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrBloom ){
114359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Remember that location of the Bloom filter in the P3 operand
114360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the OP_Once that began this subroutine. tag-202407032019 */
114027 114361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGetOp(v, addrOnce)->p3 = dest.iSDParm2;
114028 114362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( dest.iSDParm2==0 ){
114029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeChangeToNoop(v, addrBloom);
114030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
114031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeGetOp(v, addrOnce)->p3 = dest.iSDParm2;
114363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If the Bloom filter won't actually be used, keep it small */
114364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeGetOp(v, addrBloom)->p1 = 10;
114032 114365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114033 114366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114034 114367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
114035 114368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3KeyInfoUnref(pKeyInfo);
114036 114369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
@@ -114208,21 +114541,27 @@
114208 114541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dest.eDest = SRT_Exists;
114209 114542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, dest.iSDParm);
114210 114543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "Init EXISTS result"));
114211 114544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114212 114545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSel->pLimit ){
114213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The subquery already has a limit. If the pre-existing limit is X
114214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** then make the new limit X<>0 so that the new limit is either 1 or 0 */
114215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3 *db = pParse->db;
114216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLimit = sqlite3Expr(db, TK_INTEGER, "0");
114217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pLimit ){
114218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLimit->affExpr = SQLITE_AFF_NUMERIC;
114219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLimit = sqlite3PExpr(pParse, TK_NE,
114220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDup(db, pSel->pLimit->pLeft, 0), pLimit);
114221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
114222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDeferredDelete(pParse, pSel->pLimit->pLeft);
114223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pSel->pLimit->pLeft = pLimit;
114546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The subquery already has a limit. If the pre-existing limit X is
114547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** not already integer value 1 or 0, then make the new limit X<>0 so that
114548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the new limit is either 1 or 0 */
114549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pLeft = pSel->pLimit->pLeft;
114550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pLeft, EP_IntValue)==0
114551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (pLeft->u.iValue!=1 && pLeft->u.iValue!=0)
114552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
114553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db = pParse->db;
114554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLimit = sqlite3Expr(db, TK_INTEGER, "0");
114555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pLimit ){
114556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLimit->affExpr = SQLITE_AFF_NUMERIC;
114557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLimit = sqlite3PExpr(pParse, TK_NE,
114558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprDup(db, pLeft, 0), pLimit);
114559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
114560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprDeferredDelete(pParse, pLeft);
114561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSel->pLimit->pLeft = pLimit;
114562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
114224 114563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
114225 114564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is no pre-existing limit add a limit of 1 */
114226 114565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLimit = sqlite3Expr(pParse->db, TK_INTEGER, "1");
114227 114566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSel->pLimit = sqlite3PExpr(pParse, TK_LIMIT, pLimit, 0);
114228 114567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -114473,11 +114812,11 @@
114473 114812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( destIfFalse==destIfNull ){
114474 114813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Combine Step 3 and Step 5 into a single opcode */
114475 114814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_Subrtn) ){
114476 114815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const VdbeOp *pOp = sqlite3VdbeGetOp(v, pExpr->y.sub.iAddr);
114477 114816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->opcode==OP_Once || pParse->nErr );
114478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->opcode==OP_Once && pOp->p3>0 ){
114817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->opcode==OP_Once && pOp->p3>0 ){ /* tag-202407032019 */
114479 114818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( OptimizationEnabled(pParse->db, SQLITE_BloomFilter) );
114480 114819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_Filter, pOp->p3, destIfFalse,
114481 114820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rLhs, nVector); VdbeCoverage(v);
114482 114821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114483 114822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -114660,11 +114999,16 @@
114660 114999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iAddr = sqlite3VdbeAddOp3(v, OP_IfNullRow, pParse->iSelfTab-1, 0, regOut);
114661 115000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
114662 115001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iAddr = 0;
114663 115002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114664 115003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeCopy(pParse, sqlite3ColumnExpr(pTab,pCol), regOut);
114665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pCol->affinity>=SQLITE_AFF_TEXT ){
115004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pCol->colFlags & COLFLAG_VIRTUAL)!=0
115005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pTab->tabFlags & TF_Strict)!=0
115006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
115007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int p3 = 2+(int)(pCol - pTab->aCol);
115008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_TypeCheck, regOut, 1, p3, (char*)pTab, P4_TABLE);
115009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pCol->affinity>=SQLITE_AFF_TEXT ){
114666 115010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Affinity, regOut, 1, 0, &pCol->affinity, 1);
114667 115011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114668 115012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iAddr ) sqlite3VdbeJumpHere(v, iAddr);
114669 115013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nErr>nErr ) pParse->db->errByteOffset = -1;
114670 115014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -115347,15 +115691,21 @@
115347 115691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GT:
115348 115692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GE:
115349 115693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NE:
115350 115694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_EQ: {
115351 115695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLeft = pExpr->pLeft;
115696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrIsNull = 0;
115352 115697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprIsVector(pLeft) ){
115353 115698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeVectorCompare(pParse, pExpr, target, op, p5);
115354 115699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
115355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = sqlite3ExprCodeTemp(pParse, pLeft, ®Free1);
115356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
115700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pExpr, EP_Subquery) && p5!=SQLITE_NULLEQ ){
115701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = exprComputeOperands(pParse, pExpr,
115702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &r1, &r2, ®Free1, ®Free2);
115703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
115704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
115705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
115706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115357 115707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 1, inReg);
115358 115708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pLeft, pExpr->pRight, op, r1, r2,
115359 115709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeCurrentAddr(v)+2, p5,
115360 115710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprHasProperty(pExpr,EP_Commuted));
115361 115711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_LT==OP_Lt); testcase(op==OP_Lt); VdbeCoverageIf(v,op==OP_Lt);
@@ -115366,13 +115716,19 @@
115366 115716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_NE==OP_Ne); testcase(op==OP_Ne); VdbeCoverageIf(v,op==OP_Ne);
115367 115717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p5==SQLITE_NULLEQ ){
115368 115718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, inReg);
115369 115719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
115370 115720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_ZeroOrNull, r1, inReg, r2);
115721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( addrIsNull ){
115722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
115723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrIsNull);
115724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Null, 0, inReg);
115725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115371 115726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115372 115727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
115373 115728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
115729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
115374 115730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115375 115731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
115376 115732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115377 115733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_AND:
115378 115734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_OR:
@@ -115384,10 +115740,11 @@
115384 115740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BITOR:
115385 115741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SLASH:
115386 115742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LSHIFT:
115387 115743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_RSHIFT:
115388 115744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_CONCAT: {
115745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrIsNull;
115389 115746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_AND==OP_And ); testcase( op==TK_AND );
115390 115747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_OR==OP_Or ); testcase( op==TK_OR );
115391 115748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_PLUS==OP_Add ); testcase( op==TK_PLUS );
115392 115749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_MINUS==OP_Subtract ); testcase( op==TK_MINUS );
115393 115750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_REM==OP_Remainder ); testcase( op==TK_REM );
@@ -115395,15 +115752,27 @@
115395 115752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_BITOR==OP_BitOr ); testcase( op==TK_BITOR );
115396 115753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_SLASH==OP_Divide ); testcase( op==TK_SLASH );
115397 115754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_LSHIFT==OP_ShiftLeft ); testcase( op==TK_LSHIFT );
115398 115755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_RSHIFT==OP_ShiftRight ); testcase( op==TK_RSHIFT );
115399 115756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_CONCAT==OP_Concat ); testcase( op==TK_CONCAT );
115400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
115401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
115757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pExpr, EP_Subquery) ){
115758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = exprComputeOperands(pParse, pExpr,
115759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &r1, &r2, ®Free1, ®Free2);
115760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
115761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
115762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
115763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = 0;
115764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115402 115765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, op, r2, r1, target);
115403 115766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
115404 115767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
115768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( addrIsNull ){
115769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
115770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrIsNull);
115771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Null, 0, target);
115772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "short-circut value"));
115773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
115405 115774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
115406 115775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115407 115776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_UMINUS: {
115408 115777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLeft = pExpr->pLeft;
115409 115778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLeft );
@@ -116248,21 +116617,31 @@
116248 116617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_AND:
116249 116618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_OR: {
116250 116619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pAlt = sqlite3ExprSimplifiedAndOr(pExpr);
116251 116620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAlt!=pExpr ){
116252 116621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfTrue(pParse, pAlt, dest, jumpIfNull);
116253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( op==TK_AND ){
116254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int d2 = sqlite3VdbeMakeLabel(pParse);
116255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfFalse(pParse, pExpr->pLeft, d2,
116257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jumpIfNull^SQLITE_JUMPIFNULL);
116258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfTrue(pParse, pExpr->pRight, dest, jumpIfNull);
116259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeResolveLabel(v, d2);
116260 116622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
116261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfTrue(pParse, pExpr->pLeft, dest, jumpIfNull);
116263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfTrue(pParse, pExpr->pRight, dest, jumpIfNull);
116623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pFirst, *pSecond;
116624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( exprEvalRhsFirst(pExpr) ){
116625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pFirst = pExpr->pRight;
116626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSecond = pExpr->pLeft;
116627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
116628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pFirst = pExpr->pLeft;
116629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSecond = pExpr->pRight;
116630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==TK_AND ){
116632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int d2 = sqlite3VdbeMakeLabel(pParse);
116633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( jumpIfNull==0 );
116634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprIfFalse(pParse, pFirst, d2,
116635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jumpIfNull^SQLITE_JUMPIFNULL);
116636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprIfTrue(pParse, pSecond, dest, jumpIfNull);
116637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeResolveLabel(v, d2);
116638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
116639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( jumpIfNull==0 );
116640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprIfTrue(pParse, pFirst, dest, jumpIfNull);
116641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprIfTrue(pParse, pSecond, dest, jumpIfNull);
116642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116264 116643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116265 116644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116266 116645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116267 116646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOT: {
116268 116647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
@@ -116297,14 +116676,20 @@
116297 116676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LE:
116298 116677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GT:
116299 116678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GE:
116300 116679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NE:
116301 116680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_EQ: {
116681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrIsNull;
116302 116682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprIsVector(pExpr->pLeft) ) goto default_expr;
116303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
116683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pExpr, EP_Subquery) && jumpIfNull!=SQLITE_NULLEQ ){
116684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = exprComputeOperands(pParse, pExpr,
116685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &r1, &r2, ®Free1, ®Free2);
116686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
116687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
116689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = 0;
116690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116306 116691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
116307 116692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, dest, jumpIfNull, ExprHasProperty(pExpr,EP_Commuted));
116308 116693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_LT==OP_Lt); testcase(op==OP_Lt); VdbeCoverageIf(v,op==OP_Lt);
116309 116694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_LE==OP_Le); testcase(op==OP_Le); VdbeCoverageIf(v,op==OP_Le);
116310 116695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_GT==OP_Gt); testcase(op==OP_Gt); VdbeCoverageIf(v,op==OP_Gt);
@@ -116315,22 +116700,29 @@
116315 116700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_NE==OP_Ne); testcase(op==OP_Ne);
116316 116701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_Ne && jumpIfNull==SQLITE_NULLEQ);
116317 116702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_Ne && jumpIfNull!=SQLITE_NULLEQ);
116318 116703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
116319 116704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
116705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( addrIsNull ){
116706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( jumpIfNull ){
116707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP2(v, addrIsNull, dest);
116708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
116709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrIsNull);
116710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116320 116712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116321 116713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116322 116714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ISNULL:
116323 116715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOTNULL: {
116324 116716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_ISNULL==OP_IsNull ); testcase( op==TK_ISNULL );
116325 116717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_NOTNULL==OP_NotNull ); testcase( op==TK_NOTNULL );
116326 116718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeTypeofColumn(v, r1);
116719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( regFree1==0 || regFree1==r1 );
116720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( regFree1 ) sqlite3VdbeTypeofColumn(v, r1);
116328 116721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, op, r1, dest);
116329 116722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==TK_ISNULL);
116330 116723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==TK_NOTNULL);
116331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( regFree1==0 );
116332 116724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116333 116725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116334 116726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BETWEEN: {
116335 116727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
116336 116728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfTrue, jumpIfNull);
@@ -116422,21 +116814,31 @@
116422 116814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_AND:
116423 116815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_OR: {
116424 116816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pAlt = sqlite3ExprSimplifiedAndOr(pExpr);
116425 116817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAlt!=pExpr ){
116426 116818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pAlt, dest, jumpIfNull);
116427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( pExpr->op==TK_AND ){
116428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfFalse(pParse, pExpr->pLeft, dest, jumpIfNull);
116430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull);
116431 116819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
116432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int d2 = sqlite3VdbeMakeLabel(pParse);
116433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfTrue(pParse, pExpr->pLeft, d2,
116435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jumpIfNull^SQLITE_JUMPIFNULL);
116436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull);
116437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeResolveLabel(v, d2);
116820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pFirst, *pSecond;
116821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( exprEvalRhsFirst(pExpr) ){
116822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pFirst = pExpr->pRight;
116823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSecond = pExpr->pLeft;
116824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
116825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pFirst = pExpr->pLeft;
116826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSecond = pExpr->pRight;
116827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op==TK_AND ){
116829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( jumpIfNull==0 );
116830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprIfFalse(pParse, pFirst, dest, jumpIfNull);
116831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprIfFalse(pParse, pSecond, dest, jumpIfNull);
116832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
116833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int d2 = sqlite3VdbeMakeLabel(pParse);
116834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( jumpIfNull==0 );
116835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprIfTrue(pParse, pFirst, d2,
116836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jumpIfNull^SQLITE_JUMPIFNULL);
116837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprIfFalse(pParse, pSecond, dest, jumpIfNull);
116838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeResolveLabel(v, d2);
116839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116438 116840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116439 116841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116440 116842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116441 116843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOT: {
116442 116844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
@@ -116474,14 +116876,20 @@
116474 116876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LE:
116475 116877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GT:
116476 116878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GE:
116477 116879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NE:
116478 116880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_EQ: {
116881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrIsNull;
116479 116882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprIsVector(pExpr->pLeft) ) goto default_expr;
116480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
116883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pExpr, EP_Subquery) && jumpIfNull!=SQLITE_NULLEQ ){
116884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = exprComputeOperands(pParse, pExpr,
116885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &r1, &r2, ®Free1, ®Free2);
116886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
116887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
116889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrIsNull = 0;
116890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116483 116891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
116484 116892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, dest, jumpIfNull,ExprHasProperty(pExpr,EP_Commuted));
116485 116893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_LT==OP_Lt); testcase(op==OP_Lt); VdbeCoverageIf(v,op==OP_Lt);
116486 116894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_LE==OP_Le); testcase(op==OP_Le); VdbeCoverageIf(v,op==OP_Le);
116487 116895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_GT==OP_Gt); testcase(op==OP_Gt); VdbeCoverageIf(v,op==OP_Gt);
@@ -116492,20 +116900,27 @@
116492 116900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_NE==OP_Ne); testcase(op==OP_Ne);
116493 116901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_Ne && jumpIfNull!=SQLITE_NULLEQ);
116494 116902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_Ne && jumpIfNull==SQLITE_NULLEQ);
116495 116903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
116496 116904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree2==0 );
116905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( addrIsNull ){
116906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( jumpIfNull ){
116907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeChangeP2(v, addrIsNull, dest);
116908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
116909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrIsNull);
116910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
116497 116912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116498 116913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116499 116914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ISNULL:
116500 116915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOTNULL: {
116501 116916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeTypeofColumn(v, r1);
116917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( regFree1==0 || regFree1==r1 );
116918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( regFree1 ) sqlite3VdbeTypeofColumn(v, r1);
116503 116919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, op, r1, dest);
116504 116920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( op==TK_ISNULL ); VdbeCoverageIf(v, op==TK_ISNULL);
116505 116921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( op==TK_NOTNULL ); VdbeCoverageIf(v, op==TK_NOTNULL);
116506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( regFree1==0 );
116507 116922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116508 116923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116509 116924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BETWEEN: {
116510 116925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
116511 116926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfFalse, jumpIfNull);
@@ -117401,11 +117816,13 @@
117401 117816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AggInfo *pAggInfo, /* The AggInfo object to search and/or modify */
117402 117817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr /* Expr describing the column to find or insert */
117403 117818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
117404 117819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_col *pCol;
117405 117820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int k;
117821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mxTerm = pParse->db->aLimit[SQLITE_LIMIT_COLUMN];
117406 117822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
117823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( mxTerm <= SMXV(i16) );
117407 117824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pAggInfo->iFirstReg==0 );
117408 117825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol = pAggInfo->aCol;
117409 117826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(k=0; k<pAggInfo->nColumn; k++, pCol++){
117410 117827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->pCExpr==pExpr ) return;
117411 117828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->iTable==pExpr->iTable
@@ -117418,10 +117835,14 @@
117418 117835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = addAggInfoColumn(pParse->db, pAggInfo);
117419 117836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( k<0 ){
117420 117837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* OOM on resize */
117421 117838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->db->mallocFailed );
117422 117839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
117840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
117841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( k>mxTerm ){
117842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ErrorMsg(pParse, "more than %d aggregate terms", mxTerm);
117843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ k = mxTerm;
117423 117844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117424 117845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol = &pAggInfo->aCol[k];
117425 117846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ExprUseYTab(pExpr) );
117426 117847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->pTab = pExpr->y.pTab;
117427 117848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iTable = pExpr->iTable;
@@ -117452,10 +117873,11 @@
117452 117873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->pAggInfo==0 || pExpr->pAggInfo==pAggInfo );
117453 117874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pAggInfo = pAggInfo;
117454 117875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_COLUMN ){
117455 117876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_AGG_COLUMN;
117456 117877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( k <= SMXV(pExpr->iAgg) );
117457 117879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iAgg = (i16)k;
117458 117880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117459 117881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
117460 117882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
117461 117883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the xExprCallback for a tree walker. It is used to
@@ -117536,17 +117958,23 @@
117536 117958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
117537 117959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check to see if pExpr is a duplicate of another aggregate
117538 117960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function that is already in the pAggInfo structure
117539 117961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
117540 117962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_func *pItem = pAggInfo->aFunc;
117963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mxTerm = pParse->db->aLimit[SQLITE_LIMIT_COLUMN];
117964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( mxTerm <= SMXV(i16) );
117541 117965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pAggInfo->nFunc; i++, pItem++){
117542 117966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pItem->pFExpr==pExpr) ) break;
117543 117967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprCompare(0, pItem->pFExpr, pExpr, -1)==0 ){
117544 117968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
117545 117969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117546 117970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( i>=pAggInfo->nFunc ){
117971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i>mxTerm ){
117972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ErrorMsg(pParse, "more than %d aggregate terms", mxTerm);
117973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = mxTerm;
117974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( i<pAggInfo->nFunc );
117975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( i>=pAggInfo->nFunc ){
117548 117976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pExpr is original. Make a new entry in pAggInfo->aFunc[]
117549 117977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
117550 117978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 enc = ENC(pParse->db);
117551 117979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i = addAggInfoFunc(pParse->db, pAggInfo);
117552 117980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i>=0 ){
@@ -117596,10 +118024,11 @@
117596 118024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117597 118025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make pExpr point to the appropriate pAggInfo->aFunc[] entry
117598 118026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
117599 118027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) );
117600 118028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetVVAProperty(pExpr, EP_NoReduce);
118029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( i <= SMXV(pExpr->iAgg) );
117601 118030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iAgg = (i16)i;
117602 118031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pAggInfo = pAggInfo;
117603 118032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
117604 118033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
117605 118034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
@@ -118998,14 +119427,14 @@
118998 119427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
118999 119428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nQuot = sqlite3Strlen30(zQuot)-1;
119000 119429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119001 119430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
119002 119431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nQuot>=nNew && nSql>=0 && nNew>=0 );
119003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zOut = sqlite3DbMallocZero(db, (u64)(nSql + pRename->nList*nQuot + 1));
119432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zOut = sqlite3DbMallocZero(db, (u64)nSql + pRename->nList*(u64)nQuot + 1);
119004 119433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
119005 119434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nSql>0 );
119006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zOut = (char*)sqlite3DbMallocZero(db, (u64)(nSql*2+1) * 3);
119435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zOut = (char*)sqlite3DbMallocZero(db, (2*(u64)nSql + 1) * 3);
119007 119436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zOut ){
119008 119437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBuf1 = &zOut[nSql*2+1];
119009 119438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBuf2 = &zOut[nSql*4+2];
119010 119439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119011 119440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -121683,20 +122112,10 @@
121683 122112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121684 122113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
121685 122114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( z[0]!=0 && z[0]!=' ' ) z++;
121686 122115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( z[0]==' ' ) z++;
121687 122116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
121689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Set the bLowQual flag if the peak number of rows obtained
121690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** from a full equality match is so large that a full table scan
121691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** seems likely to be faster than using the index.
121692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
121693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( aLog[0] > 66 /* Index has more than 100 rows */
121694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && aLog[0] <= aLog[nOut-1] /* And only a single value seen */
121695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
121696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIndex->bLowQual = 1;
121697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
121698 122117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121699 122118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121700 122119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
121701 122120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
121702 122121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This callback is invoked once for each index when reading the
@@ -124091,11 +124510,11 @@
124091 124510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
124092 124511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3TableColumnToIndex(Index *pIdx, int iCol){
124093 124512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
124094 124513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i16 iCol16;
124095 124514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iCol>=(-1) && iCol<=SQLITE_MAX_COLUMN );
124096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pIdx->nColumn<=SQLITE_MAX_COLUMN );
124515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pIdx->nColumn<=SQLITE_MAX_COLUMN+1 );
124097 124516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCol16 = iCol;
124098 124517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pIdx->nColumn; i++){
124099 124518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCol16==pIdx->aiColumn[i] ){
124100 124519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return i;
124101 124520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -127239,11 +127658,10 @@
127239 127658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
127240 127659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = pCExpr->iColumn;
127241 127660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( j<=0x7fff );
127242 127661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j<0 ){
127243 127662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = pTab->iPKey;
127244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIndex->bIdxRowid = 1;
127245 127663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
127246 127664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->aCol[j].notNull==0 ){
127247 127665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIndex->uniqNotNull = 0;
127248 127666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
127249 127667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->aCol[j].colFlags & COLFLAG_VIRTUAL ){
@@ -128158,20 +128576,26 @@
128158 128576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Append the contents of SrcList p2 to SrcList p1 and return the resulting
128159 128577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SrcList. Or, if an error occurs, return NULL. In all cases, p1 and p2
128160 128578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are deleted by this function.
128161 128579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
128162 128580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE SrcList *sqlite3SrcListAppendList(Parse *pParse, SrcList *p1, SrcList *p2){
128163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p1 && p1->nSrc==1 );
128581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p1 );
128582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p2 || pParse->nErr );
128583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p2==0 || p2->nSrc>=1 );
128584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( p1->nSrc==0 );
128164 128585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p2 ){
128165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SrcList *pNew = sqlite3SrcListEnlarge(pParse, p1, p2->nSrc, 1);
128586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nOld = p1->nSrc;
128587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SrcList *pNew = sqlite3SrcListEnlarge(pParse, p1, p2->nSrc, nOld);
128166 128588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew==0 ){
128167 128589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcListDelete(pParse->db, p2);
128168 128590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
128169 128591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1 = pNew;
128170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(&p1->a[1], p2->a, p2->nSrc*sizeof(SrcItem));
128592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(&p1->a[nOld], p2->a, p2->nSrc*sizeof(SrcItem));
128593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nOld==1 || (p2->a[0].fg.jointype & JT_LTORJ)==0 );
128594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p1->nSrc>=1 );
128595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p1->a[0].fg.jointype |= (JT_LTORJ & p2->a[0].fg.jointype);
128171 128596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(pParse->db, p2);
128172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p1->a[0].fg.jointype |= (JT_LTORJ & p1->a[1].fg.jointype);
128173 128597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128174 128598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128175 128599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p1;
128176 128600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128177 128601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -132064,11 +132488,11 @@
132064 132488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int argc,
132065 132489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **argv,
132066 132490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSep,
132067 132491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSep
132068 132492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
132069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i64 j, k, n = 0;
132493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 j, n = 0;
132070 132494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
132071 132495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z;
132072 132496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<argc; i++){
132073 132497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n += sqlite3_value_bytes(argv[i]);
132074 132498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -132078,12 +132502,12 @@
132078 132502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_error_nomem(context);
132079 132503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
132080 132504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132081 132505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = 0;
132082 132506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<argc; i++){
132083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- k = sqlite3_value_bytes(argv[i]);
132084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( k>0 ){
132507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_value_type(argv[i])!=SQLITE_NULL ){
132508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int k = sqlite3_value_bytes(argv[i]);
132085 132509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *v = (const char*)sqlite3_value_text(argv[i]);
132086 132510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( v!=0 ){
132087 132511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j>0 && nSep>0 ){
132088 132512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&z[j], zSep, nSep);
132089 132513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j += nSep;
@@ -135017,16 +135441,19 @@
135017 135441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iReg==0 ){
135018 135442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Move the previous opcode (which should be OP_MakeRecord) forward
135019 135443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by one slot and insert a new OP_TypeCheck where the current
135020 135444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_MakeRecord is found */
135021 135445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pPrev;
135446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int p3;
135022 135447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
135023 135448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrev = sqlite3VdbeGetLastOp(v);
135024 135449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPrev!=0 );
135025 135450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPrev->opcode==OP_MakeRecord || sqlite3VdbeDb(v)->mallocFailed );
135026 135451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrev->opcode = OP_TypeCheck;
135027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_MakeRecord, pPrev->p1, pPrev->p2, pPrev->p3);
135452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p3 = pPrev->p3;
135453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pPrev->p3 = 0;
135454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_MakeRecord, pPrev->p1, pPrev->p2, p3);
135028 135455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
135029 135456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Insert an isolated OP_Typecheck */
135030 135457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_TypeCheck, iReg, pTab->nNVCol);
135031 135458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
135032 135459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -138755,10 +139182,12 @@
138755 139182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.43.0 and later */
138756 139183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*stmt_explain)(sqlite3_stmt*,int);
138757 139184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.44.0 and later */
138758 139185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *(*get_clientdata)(sqlite3*,const char*);
138759 139186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*set_clientdata)(sqlite3*, const char*, void*, void(*)(void*));
139187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Version 3.50.0 and later */
139188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int (*setlk_timeout)(sqlite3*,int,int);
138760 139189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
138761 139190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
138762 139191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
138763 139192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the function signature used for all extension entry points. It
138764 139193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is also defined in the file "loadext.c".
@@ -139088,10 +139517,12 @@
139088 139517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.43.0 and later */
139089 139518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_stmt_explain sqlite3_api->stmt_explain
139090 139519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.44.0 and later */
139091 139520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_get_clientdata sqlite3_api->get_clientdata
139092 139521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_set_clientdata sqlite3_api->set_clientdata
139522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Version 3.50.0 and later */
139523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define sqlite3_setlk_timeout sqlite3_api->setlk_timeout
139093 139524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
139094 139525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139095 139526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
139096 139527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This case when the file really is being compiled as a loadable
139097 139528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** extension */
@@ -139609,11 +140040,13 @@
139609 140040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_is_interrupted,
139610 140041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.43.0 and later */
139611 140042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt_explain,
139612 140043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.44.0 and later */
139613 140044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_get_clientdata,
139614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_set_clientdata
140045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_set_clientdata,
140046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Version 3.50.0 and later */
140047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_setlk_timeout
139615 140048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
139616 140049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139617 140050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* True if x is the directory separator character
139618 140051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
139619 140052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_OS_WIN
@@ -145235,11 +145668,11 @@
145235 145668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc, /* Array of tables to search */
145236 145669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iStart, /* First member of pSrc->a[] to check */
145237 145670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEnd, /* Last member of pSrc->a[] to check */
145238 145671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zCol, /* Name of the column we are looking for */
145239 145672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *piTab, /* Write index of pSrc->a[] here */
145240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *piCol, /* Write index of pSrc->a[*piTab].pTab->aCol[] here */
145673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *piCol, /* Write index of pSrc->a[*piTab].pSTab->aCol[] here */
145241 145674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bIgnoreHidden /* Ignore hidden columns */
145242 145675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
145243 145676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; /* For looping over tables in pSrc */
145244 145677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol; /* Index of column matching zCol */
145245 145678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -145447,11 +145880,11 @@
145447 145880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"not present in both tables", zName);
145448 145881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
145449 145882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
145450 145883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pE1 = sqlite3CreateColumnExpr(db, pSrc, iLeft, iLeftCol);
145451 145884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcItemColumnUsed(&pSrc->a[iLeft], iLeftCol);
145452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pSrc->a[0].fg.jointype & JT_LTORJ)!=0 ){
145885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pSrc->a[0].fg.jointype & JT_LTORJ)!=0 && pParse->nErr==0 ){
145453 145886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This branch runs if the query contains one or more RIGHT or FULL
145454 145887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** JOINs. If only a single table on the left side of this join
145455 145888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contains the zName column, then this branch is a no-op.
145456 145889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** But if there are two or more tables on the left side
145457 145890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the join, construct a coalesce() function that gathers all
@@ -145463,10 +145896,12 @@
145463 145896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** JOIN. But older versions of SQLite do not do that, so we avoid
145464 145897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** adding a new error so as to not break legacy applications.
145465 145898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
145466 145899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pFuncArgs = 0; /* Arguments to the coalesce() */
145467 145900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const Token tkCoalesce = { "coalesce", 8 };
145901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pE1!=0 );
145902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(pE1, EP_CanBeNull);
145468 145903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( tableAndColumnIndex(pSrc, iLeft+1, i, zName, &iLeft, &iLeftCol,
145469 145904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRight->fg.isSynthUsing)!=0 ){
145470 145905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSrc->a[iLeft].fg.isUsing==0
145471 145906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| sqlite3IdListIndex(pSrc->a[iLeft].u3.pUsing, zName)<0
145472 145907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
@@ -145479,11 +145914,17 @@
145479 145914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcItemColumnUsed(&pSrc->a[iLeft], iLeftCol);
145480 145915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
145481 145916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFuncArgs ){
145482 145917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFuncArgs = sqlite3ExprListAppend(pParse, pFuncArgs, pE1);
145483 145918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pE1 = sqlite3ExprFunction(pParse, pFuncArgs, &tkCoalesce, 0);
145919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pE1 ){
145920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pE1->affExpr = SQLITE_AFF_DEFER;
145921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
145484 145922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
145923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (pSrc->a[i+1].fg.jointype & JT_LEFT)!=0 && pParse->nErr==0 ){
145924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pE1!=0 );
145925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(pE1, EP_CanBeNull);
145485 145926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
145486 145927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pE2 = sqlite3CreateColumnExpr(db, pSrc, i+1, iRightCol);
145487 145928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcItemColumnUsed(pRight, iRightCol);
145488 145929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pEq = sqlite3PExpr(pParse, TK_EQ, pE1, pE2);
145489 145930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pE2!=0 || pEq==0 );
@@ -146956,10 +147397,14 @@
146956 147397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
146957 147398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zType = columnType(&sNC, p, 0, 0, 0);
146958 147399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
146959 147400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, i, COLNAME_DECLTYPE, zType, SQLITE_TRANSIENT);
146960 147401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
147402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
147403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(pParse);
147404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(pTabList);
147405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(pEList);
146961 147406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_DECLTYPE) */
146962 147407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146963 147408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146964 147409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146965 147410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -147875,11 +148320,13 @@
147875 148320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int unionTab; /* Cursor number of the temp table holding result */
147876 148321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 op = 0; /* One of the SRT_ operations to apply to self */
147877 148322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int priorOp; /* The SRT_ operation to apply to prior selects */
147878 148323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLimit; /* Saved values of p->nLimit */
147879 148324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addr;
148325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int emptyBypass = 0; /* IfEmpty opcode to bypass RHS */
147880 148326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest uniondest;
148327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
147881 148328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
147882 148329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->op==TK_EXCEPT );
147883 148330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->op==TK_UNION );
147884 148331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
priorOp = SRT_Union;
147885 148332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( dest.eDest==priorOp ){
@@ -147914,10 +148361,12 @@
147914 148361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
147915 148362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code the current SELECT statement
147916 148363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
147917 148364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->op==TK_EXCEPT ){
147918 148365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = SRT_Except;
148366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ emptyBypass = sqlite3VdbeAddOp1(v, OP_IfEmpty, unionTab);
148367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
147919 148368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
147920 148369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->op==TK_UNION );
147921 148370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = SRT_Union;
147922 148371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
147923 148372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = 0;
@@ -147934,10 +148383,11 @@
147934 148383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = pPrior;
147935 148384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pOrderBy = 0;
147936 148385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->op==TK_UNION ){
147937 148386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
147938 148387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( emptyBypass ) sqlite3VdbeJumpHere(v, emptyBypass);
147939 148389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, p->pLimit);
147940 148390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLimit = pLimit;
147941 148391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iLimit = 0;
147942 148392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iOffset = 0;
147943 148393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -147964,13 +148414,14 @@
147964 148414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
147965 148415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: assert( p->op==TK_INTERSECT ); {
147966 148416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tab1, tab2;
147967 148417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCont, iBreak, iStart;
147968 148418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLimit;
147969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addr;
148419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addr, iLimit, iOffset;
147970 148420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest intersectdest;
147971 148421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r1;
148422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int emptyBypass;
147972 148423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
147973 148424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* INTERSECT is different from the others since it requires
147974 148425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** two temporary tables. Hence it has its own case. Begin
147975 148426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by allocating the tables we will need.
147976 148427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -147991,18 +148442,32 @@
147991 148442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Select(pParse, pPrior, &intersectdest);
147992 148443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
147993 148444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto multi_select_end;
147994 148445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
147995 148446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Initialize LIMIT counters before checking to see if the LHS
148448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is empty, in case the jump is taken */
148449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iBreak = sqlite3VdbeMakeLabel(pParse);
148450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ computeLimitRegisters(pParse, p, iBreak);
148451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ emptyBypass = sqlite3VdbeAddOp1(v, OP_IfEmpty, tab1); VdbeCoverage(v);
148452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
147996 148453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code the current SELECT into temporary table "tab2"
147997 148454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
147998 148455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab2, 0);
147999 148456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->addrOpenEphm[1] == -1 );
148000 148457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->addrOpenEphm[1] = addr;
148001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pPrior = 0;
148458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
148459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Disable prior SELECTs and the LIMIT counters during the computation
148460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the RHS select */
148002 148461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLimit = p->pLimit;
148462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iLimit = p->iLimit;
148463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iOffset = p->iOffset;
148464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pPrior = 0;
148003 148465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLimit = 0;
148466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->iLimit = 0;
148467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->iOffset = 0;
148468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
148004 148469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
intersectdest.iSDParm = tab2;
148005 148470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE",
148006 148471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectOpName(p->op)));
148007 148472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TREETRACE(0x400, pParse, p, ("multiSelect INTERSECT right...\n"));
148008 148473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Select(pParse, p, &intersectdest);
@@ -148011,32 +148476,35 @@
148011 148476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = pPrior;
148012 148477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nSelectRow>pPrior->nSelectRow ){
148013 148478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nSelectRow = pPrior->nSelectRow;
148014 148479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148015 148480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, p->pLimit);
148481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
148482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Reinstate the LIMIT counters prior to running the final intersect */
148016 148483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLimit = pLimit;
148484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->iLimit = iLimit;
148485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->iOffset = iOffset;
148017 148486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148018 148487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to take the intersection of the two temporary
148019 148488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tables.
148020 148489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
148021 148490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) break;
148022 148491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pEList );
148023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iBreak = sqlite3VdbeMakeLabel(pParse);
148024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iCont = sqlite3VdbeMakeLabel(pParse);
148025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- computeLimitRegisters(pParse, p, iBreak);
148026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Rewind, tab1, iBreak); VdbeCoverage(v);
148492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_Rewind, tab1);
148027 148493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3GetTempReg(pParse);
148028 148494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStart = sqlite3VdbeAddOp2(v, OP_RowData, tab1, r1);
148495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iCont = sqlite3VdbeMakeLabel(pParse);
148029 148496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NotFound, tab2, iCont, r1, 0);
148030 148497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
148031 148498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, r1);
148032 148499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, tab1,
148033 148500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, 0, &dest, iCont, iBreak);
148034 148501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iCont);
148035 148502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Next, tab1, iStart); VdbeCoverage(v);
148036 148503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iBreak);
148037 148504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, tab2, 0);
148505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, emptyBypass);
148038 148506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, tab1, 0);
148039 148507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
148040 148508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148041 148509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148042 148510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -148711,10 +149179,11 @@
148711 149179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct SubstContext {
148712 149180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse; /* The parsing context */
148713 149181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTable; /* Replace references to this table */
148714 149182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iNewTable; /* New table number */
148715 149183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isOuterJoin; /* Add TK_IF_NULL_ROW opcodes on each replacement */
149184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nSelDepth; /* Depth of sub-query recursion. Top==1 */
148716 149185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pEList; /* Replacement expressions */
148717 149186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pCList; /* Collation sequences for replacement expr */
148718 149187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} SubstContext;
148719 149188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148720 149189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Forward Declarations */
@@ -148817,10 +149286,13 @@
148817 149286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148818 149287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148819 149288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
148820 149289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_IF_NULL_ROW && pExpr->iTable==pSubst->iTable ){
148821 149290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pSubst->iNewTable;
149291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
149292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op==TK_AGG_FUNCTION && pExpr->op2>=pSubst->nSelDepth ){
149293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->op2--;
148822 149294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148823 149295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pLeft = substExpr(pSubst, pExpr->pLeft);
148824 149296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pRight = substExpr(pSubst, pExpr->pRight);
148825 149297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(pExpr) ){
148826 149298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substSelect(pSubst, pExpr->x.pSelect, 1);
@@ -148855,10 +149327,11 @@
148855 149327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
148856 149328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc;
148857 149329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem;
148858 149330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
148859 149331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !p ) return;
149332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSubst->nSelDepth++;
148860 149333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
148861 149334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, p->pEList);
148862 149335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, p->pGroupBy);
148863 149336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, p->pOrderBy);
148864 149337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pHaving = substExpr(pSubst, p->pHaving);
@@ -148872,10 +149345,11 @@
148872 149345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isTabFunc ){
148873 149346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, pItem->u1.pFuncArg);
148874 149347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148875 149348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148876 149349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}while( doPrior && (p = p->pPrior)!=0 );
149350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSubst->nSelDepth--;
148877 149351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148878 149352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW) */
148879 149353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148880 149354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW)
148881 149355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -149087,13 +149561,13 @@
149087 149561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** other than the one FROM-clause subquery that is a candidate
149088 149562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for flattening. (This is due to ticket [2f7170d73bf9abf80]
149089 149563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from 2015-02-09.)
149090 149564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
149091 149565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3) If the subquery is the right operand of a LEFT JOIN then
149092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (3a) the subquery may not be a join and
149093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (3b) the FROM clause of the subquery may not contain a virtual
149094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** table and
149566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (3a) the subquery may not be a join
149567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (**) Was (3b): "the FROM clause of the subquery may not contain
149568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a virtual table"
149095 149569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (**) Was: "The outer query may not have a GROUP BY." This case
149096 149570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is now managed correctly
149097 149571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3d) the outer query may not be DISTINCT.
149098 149572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also (26) for restrictions on RIGHT JOIN.
149099 149573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -149305,11 +149779,11 @@
149305 149779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
149306 149780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also tickets #306, #350, and #3300.
149307 149781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
149308 149782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pSubitem->fg.jointype & (JT_OUTER|JT_LTORJ))!=0 ){
149309 149783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubSrc->nSrc>1 /* (3a) */
149310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || IsVirtual(pSubSrc->a[0].pSTab) /* (3b) */
149784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /**** || IsVirtual(pSubSrc->a[0].pSTab) (3b)-omitted */
149311 149785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (p->selFlags & SF_Distinct)!=0 /* (3d) */
149312 149786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (pSubitem->fg.jointype & JT_RIGHT)!=0 /* (26) */
149313 149787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
149314 149788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
149315 149789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -149483,11 +149957,11 @@
149483 149957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Defer deleting the Table object associated with the
149484 149958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** subquery until code generation is
149485 149959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** complete, since there may still exist Expr.pTab entries that
149486 149960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** refer to the subquery even after flattening. Ticket #3346.
149487 149961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
149488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pSubitem->pTab is always non-NULL by test restrictions and tests above.
149962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pSubitem->pSTab is always non-NULL by test restrictions and tests above.
149489 149963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
149490 149964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pSubitem->pSTab!=0) ){
149491 149965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTabToDel = pSubitem->pSTab;
149492 149966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTabToDel->nTabRef==1 ){
149493 149967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pToplevel = sqlite3ParseToplevel(pParse);
@@ -149613,10 +150087,11 @@
149613 150087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SubstContext x;
149614 150088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pParse = pParse;
149615 150089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iTable = iParent;
149616 150090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iNewTable = iNewParent;
149617 150091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.isOuterJoin = isOuterJoin;
150092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x.nSelDepth = 0;
149618 150093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pEList = pSub->pEList;
149619 150094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pCList = findLeftmostExprlist(pSub);
149620 150095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substSelect(&x, pParent, 0);
149621 150096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149622 150097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -150198,10 +150673,11 @@
150198 150673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsetJoinExpr(pNew, -1, 1);
150199 150674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pParse = pParse;
150200 150675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iTable = pSrc->iCursor;
150201 150676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iNewTable = pSrc->iCursor;
150202 150677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.isOuterJoin = 0;
150678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x.nSelDepth = 0;
150203 150679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pEList = pSubq->pEList;
150204 150680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pCList = findLeftmostExprlist(pSubq);
150205 150681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = substExpr(&x, pNew);
150206 150682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
150207 150683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubq->pWin && 0==pushDownWindowCheck(pParse, pSubq, pNew) ){
@@ -150595,11 +151071,11 @@
150595 151071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a WITH clause on the stack currently maintained by the parser (on the
150596 151072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pParse->pWith linked list). And if currently processing a CTE
150597 151073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CTE expression, through routine checks to see if the reference is
150598 151074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a recursive reference to the CTE.
150599 151075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
150600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If pFrom matches a CTE according to either of these two above, pFrom->pTab
151076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If pFrom matches a CTE according to either of these two above, pFrom->pSTab
150601 151077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and other fields are populated accordingly.
150602 151078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
150603 151079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 0 if no match is found.
150604 151080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 1 if a match is found.
150605 151081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 2 if an error condition is detected.
@@ -152221,10 +152697,87 @@
152221 152697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem--;
152222 152698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isSubquery ) return 0; /* (1c-i) */
152223 152699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
152224 152700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
152225 152701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
152702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
152703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
152704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Argument pWhere is the WHERE clause belonging to SELECT statement p. This
152705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** function attempts to transform expressions of the form:
152706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** EXISTS (SELECT ...)
152708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** into joins. For example, given
152710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CREATE TABLE sailors(sid INTEGER PRIMARY KEY, name TEXT);
152712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CREATE TABLE reserves(sid INT, day DATE, PRIMARY KEY(sid, day));
152713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SELECT name FROM sailors AS S WHERE EXISTS (
152715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SELECT * FROM reserves AS R WHERE S.sid = R.sid AND R.day = '2022-10-25'
152716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** );
152717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the SELECT statement may be transformed as follows:
152719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SELECT name FROM sailors AS S, reserves AS R
152721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** WHERE S.sid = R.sid AND R.day = '2022-10-25';
152722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
152723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** **Approximately**. Really, we have to ensure that the FROM-clause term
152724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that was formerly inside the EXISTS is only executed once. This is handled
152725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** by setting the SrcItem.fg.fromExists flag, which then causes code in
152726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the where.c file to exit the corresponding loop after the first successful
152727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** match (if any).
152728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
152729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static SQLITE_NOINLINE void existsToJoin(
152730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Parse *pParse, /* Parsing context */
152731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Select *p, /* The SELECT statement being optimized */
152732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pWhere /* part of the WHERE clause currently being examined */
152733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
152734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->nErr==0
152735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pWhere!=0
152736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !ExprHasProperty(pWhere, EP_OuterON|EP_InnerON)
152737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS(p->pSrc!=0)
152738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && p->pSrc->nSrc<BMS
152739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
152740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWhere->op==TK_AND ){
152741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pRight = pWhere->pRight;
152742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ existsToJoin(pParse, p, pWhere->pLeft);
152743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ existsToJoin(pParse, p, pRight);
152744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else if( pWhere->op==TK_EXISTS ){
152746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Select *pSub = pWhere->x.pSelect;
152747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pSubWhere = pSub->pWhere;
152748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSub->pSrc->nSrc==1
152749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pSub->selFlags & SF_Aggregate)==0
152750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !pSub->pSrc->a[0].fg.isSubquery
152751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
152752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(pWhere, 0, sizeof(*pWhere));
152753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWhere->op = TK_INTEGER;
152754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pWhere->u.iValue = 1;
152755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprSetProperty(pWhere, EP_IntValue);
152756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
152757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->pWhere!=0 );
152758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSub->pSrc->a[0].fg.fromExists = 1;
152759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSub->pSrc->a[0].fg.jointype |= JT_CROSS;
152760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pSrc = sqlite3SrcListAppendList(pParse, p->pSrc, pSub->pSrc);
152761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSubWhere ){
152762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pWhere = sqlite3PExpr(pParse, TK_AND, p->pWhere, pSubWhere);
152763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSub->pWhere = 0;
152764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pSub->pSrc = 0;
152766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ParserAddCleanup(pParse, sqlite3SelectDeleteGeneric, pSub);
152767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if TREETRACE_ENABLED
152768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3TreeTrace & 0x100000 ){
152769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ TREETRACE(0x100000,pParse,p,
152770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ("After EXISTS-to-JOIN optimization:\n"));
152771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3TreeViewSelect(0, p, 0);
152772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
152774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ existsToJoin(pParse, p, pSubWhere);
152775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152226 152779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152227 152780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
152228 152781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate byte-code for the SELECT statement given in the p argument.
152229 152782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
152230 152783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The results are returned according to the SelectDest structure.
@@ -152589,10 +153142,17 @@
152589 153142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
152590 153143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pNext==0 ) ExplainQueryPlanPop(pParse);
152591 153144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
152592 153145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
152593 153146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
153147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
153148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If there may be an "EXISTS (SELECT ...)" in the WHERE clause, attempt
153149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to change it into a join. */
153150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->bHasExists && OptimizationEnabled(db,SQLITE_ExistsToJoin) ){
153151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ existsToJoin(pParse, p, p->pWhere);
153152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTabList = p->pSrc;
153153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
152594 153154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152595 153155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do the WHERE-clause constant propagation optimization if this is
152596 153156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a join. No need to spend time on this operation for non-join queries
152597 153157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** as the equivalent optimization will be handled by query planner in
152598 153158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3WhereBegin(). tag-select-0330
@@ -153349,10 +153909,14 @@
153349 153909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
153350 153910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153351 153911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOrderByCol ){
153352 153912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pX = p->pEList->a[iOrderByCol-1].pExpr;
153353 153913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pBase = sqlite3ExprSkipCollateAndLikely(pX);
153914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( ALWAYS(pBase!=0) && pBase->op==TK_IF_NULL_ROW ){
153915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pX = pBase->pLeft;
153916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBase = sqlite3ExprSkipCollateAndLikely(pX);
153917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
153354 153918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pBase!=0)
153355 153919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pBase->op!=TK_AGG_COLUMN
153356 153920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pBase->op!=TK_REGISTER
153357 153921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
153358 153922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprToRegister(pX, iAMem+j);
@@ -153372,24 +153936,24 @@
153372 153936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** over to a0,a1,a2. It then calls the output subroutine
153373 153937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and resets the aggregate accumulator registers in preparation
153374 153938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for the next GROUP BY batch.
153375 153939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153376 153940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regOutputRow, addrOutputRow);
153377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "output one row"));
153941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "output one row of %d", p->selId));
153378 153942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeMove(pParse, iBMem, iAMem, pGroupBy->nExpr);
153379 153943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IfPos, iAbortFlag, addrEnd); VdbeCoverage(v);
153380 153944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "check abort flag"));
153381 153945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset);
153382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "reset accumulator"));
153946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "reset accumulator %d", p->selId));
153383 153947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153384 153948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Update the aggregate accumulators based on the content of
153385 153949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the current row
153386 153950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153387 153951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
153388 153952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
updateAccumulator(pParse, iUseFlag, pAggInfo, eDist);
153389 153953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 1, iUseFlag);
153390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "indicate data in accumulator"));
153954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "indicate data in accumulator %d", p->selId));
153391 153955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153392 153956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* End of the loop
153393 153957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153394 153958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( groupBySort ){
153395 153959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SorterNext, pAggInfo->sortingIdx,addrTopOfLoop);
@@ -153402,11 +153966,11 @@
153402 153966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pDistinct);
153403 153967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153404 153968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Output the final row of result
153405 153969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153406 153970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regOutputRow, addrOutputRow);
153407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "output final row"));
153971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "output final row of %d", p->selId));
153408 153972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153409 153973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump over the subroutines
153410 153974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153411 153975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGoto(v, addrEnd);
153412 153976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -153423,26 +153987,26 @@
153423 153987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
153424 153988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrOutputRow);
153425 153989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOutputRow = sqlite3VdbeCurrentAddr(v);
153426 153990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IfPos, iUseFlag, addrOutputRow+2);
153427 153991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
153428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "Groupby result generator entry point"));
153992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "Groupby result generator entry point %d", p->selId));
153429 153993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
153430 153994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
finalizeAggFunctions(pParse, pAggInfo);
153431 153995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pHaving, addrOutputRow+1, SQLITE_JUMPIFNULL);
153432 153996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, -1, &sSort,
153433 153997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&sDistinct, pDest,
153434 153998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOutputRow+1, addrSetAbort);
153435 153999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
153436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "end groupby result generator"));
154000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "end groupby result generator %d", p->selId));
153437 154001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153438 154002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate a subroutine that will reset the group-by accumulator
153439 154003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153440 154004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrReset);
153441 154005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
resetAccumulator(pParse, pAggInfo);
153442 154006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, iUseFlag);
153443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeComment((v, "indicate accumulator empty"));
154007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeComment((v, "indicate accumulator %d empty", p->selId));
153444 154008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regReset);
153445 154009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153446 154010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( distFlag!=0 && eDist!=WHERE_DISTINCT_NOOP ){
153447 154011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_func *pF = &pAggInfo->aFunc[0];
153448 154012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr);
@@ -157326,11 +157890,12 @@
157326 157890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_flags = db->flags;
157327 157891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_mDbFlags = db->mDbFlags;
157328 157892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_nChange = db->nChange;
157329 157893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_nTotalChange = db->nTotalChange;
157330 157894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_mTrace = db->mTrace;
157331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db->flags |= SQLITE_WriteSchema | SQLITE_IgnoreChecks | SQLITE_Comments;
157895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->flags |= SQLITE_WriteSchema | SQLITE_IgnoreChecks | SQLITE_Comments
157896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ | SQLITE_AttachCreate | SQLITE_AttachWrite;
157332 157897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->mDbFlags |= DBFLAG_PreferBuiltin | DBFLAG_Vacuum;
157333 157898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->flags &= ~(u64)(SQLITE_ForeignKeys | SQLITE_ReverseOrder
157334 157899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
| SQLITE_Defensive | SQLITE_CountRows);
157335 157900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->mTrace = 0;
157336 157901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -159029,10 +159594,11 @@
159029 159594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct WhereLevel {
159030 159595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLeftJoin; /* Memory cell used to implement LEFT OUTER JOIN */
159031 159596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTabCur; /* The VDBE cursor used to access the table */
159032 159597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iIdxCur; /* The VDBE cursor used to access pIdx */
159033 159598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrBrk; /* Jump here to break out of the loop */
159599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrHalt; /* Abort the query due to empty table or similar */
159034 159600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNxt; /* Jump here to start the next IN combination */
159035 159601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrSkip; /* Jump here for next iteration of skip-scan */
159036 159602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrCont; /* Jump here to continue with the next loop cycle */
159037 159603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrFirst; /* First instruction of interior of the loop */
159038 159604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrBody; /* Beginning of the body of this loop */
@@ -159234,10 +159800,13 @@
159234 159800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 eOperator; /* A WO_xx value describing <op> */
159235 159801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 nChild; /* Number of children that must disable us */
159236 159802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eMatchOp; /* Op for vtab MATCH/LIKE/GLOB/REGEXP terms */
159237 159803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iParent; /* Disable pWC->a[iParent] when this term disabled */
159238 159804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int leftCursor; /* Cursor number of X in "X <op> <expr>" */
159805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
159806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iTerm; /* Which WhereTerm is this, for debug purposes */
159807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
159239 159808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
159240 159809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct {
159241 159810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int leftColumn; /* Column number of X in "X <op> <expr>" */
159242 159811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iField; /* Field in (?,?,?) IN (SELECT...) vector */
159243 159812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} x; /* Opcode other than OP_OR or OP_AND */
@@ -159726,11 +160295,10 @@
159726 160295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_DEBUG)
159727 160296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ParseToplevel(pParse)->explain==2 || IS_STMT_SCANSTATUS(pParse->db) )
159728 160297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
159729 160298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
159730 160299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp = sqlite3VdbeGetOp(pParse->pVdbe, addr);
159731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
159732 160300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem = &pTabList->a[pLevel->iFrom];
159733 160301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db; /* Database handle */
159734 160302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isSearch; /* True for a SEARCH. False for SCAN. */
159735 160303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pLoop; /* The controlling WhereLoop object */
159736 160304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 flags; /* Flags that describe this loop */
@@ -159749,11 +160317,14 @@
159749 160317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0))
159750 160318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (wctrlFlags&(WHERE_ORDERBY_MIN|WHERE_ORDERBY_MAX));
159751 160319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
159752 160320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StrAccumInit(&str, db, zBuf, sizeof(zBuf), SQLITE_MAX_LENGTH);
159753 160321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
str.printfFlags = SQLITE_PRINTF_INTERNAL;
159754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_str_appendf(&str, "%s %S", isSearch ? "SEARCH" : "SCAN", pItem);
160322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(&str, "%s %S%s",
160323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isSearch ? "SEARCH" : "SCAN",
160324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pItem,
160325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pItem->fg.fromExists ? " EXISTS" : "");
159755 160326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (flags & (WHERE_IPK|WHERE_VIRTUALTABLE))==0 ){
159756 160327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFmt = 0;
159757 160328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx;
159758 160329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
159759 160330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLoop->u.btree.pIndex!=0 );
@@ -160198,11 +160769,13 @@
160198 160769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=iEq; i<pLoop->nLTerm; i++){
160199 160770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i]->pExpr==pX ){
160200 160771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iField;
160201 160772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pLoop->aLTerm[i]->eOperator & (WO_OR|WO_AND))==0 );
160202 160773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iField = pLoop->aLTerm[i]->u.x.iField - 1;
160203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOrigRhs->a[iField].pExpr==0 ) continue; /* Duplicate PK column */
160774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(pOrigRhs->a[iField].pExpr==0) ){
160775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue; /* Duplicate PK column */
160776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
160204 160777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRhs = sqlite3ExprListAppend(pParse, pRhs, pOrigRhs->a[iField].pExpr);
160205 160778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrigRhs->a[iField].pExpr = 0;
160206 160779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRhs ) pRhs->a[pRhs->nExpr-1].u.x.iOrderByCol = iField+1;
160207 160780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrigLhs ){
160208 160781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrigLhs->a[iField].pExpr!=0 );
@@ -160295,35 +160868,26 @@
160295 160868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i] && pLoop->aLTerm[i]->pExpr==pX ){
160296 160869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
disableTerm(pLevel, pTerm);
160297 160870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
160298 160871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
160299 160872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
160300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=iEq;i<pLoop->nLTerm; i++){
160873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=iEq; i<pLoop->nLTerm; i++){
160301 160874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLoop->aLTerm[i]!=0 );
160302 160875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i]->pExpr==pX ) nEq++;
160303 160876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
160304 160877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
160305 160878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTab = 0;
160306 160879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !ExprUseXSelect(pX) || pX->x.pSelect->pEList->nExpr==1 ){
160307 160880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, 0, &iTab);
160308 160881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
160309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *pExpr = pTerm->pExpr;
160310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->iTable==0 || !ExprHasProperty(pExpr, EP_Subrtn) ){
160311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3 *db = pParse->db;
160312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pX = removeUnindexableInClauseTerms(pParse, iEq, pLoop, pX);
160313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !db->mallocFailed ){
160314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*nEq);
160315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap,&iTab);
160316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pExpr->iTable = iTab;
160317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
160318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDelete(db, pX);
160319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
160320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int n = sqlite3ExprVectorSize(pX->pLeft);
160321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*MAX(nEq,n));
160322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap, &iTab);
160323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
160324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pX = pExpr;
160882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db = pParse->db;
160883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pXMod = removeUnindexableInClauseTerms(pParse, iEq, pLoop, pX);
160884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !db->mallocFailed ){
160885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aiMap = (int*)sqlite3DbMallocZero(db, sizeof(int)*nEq);
160886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eType = sqlite3FindInIndex(pParse, pXMod, IN_INDEX_LOOP, 0, aiMap, &iTab);
160887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
160888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprDelete(db, pXMod);
160325 160889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
160326 160890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
160327 160891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eType==IN_INDEX_INDEX_DESC ){
160328 160892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( bRev );
160329 160893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bRev = !bRev;
@@ -160349,11 +160913,11 @@
160349 160913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sizeof(pLevel->u.in.aInLoop[0])*pLevel->u.in.nIn);
160350 160914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn = pLevel->u.in.aInLoop;
160351 160915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIn ){
160352 160916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iMap = 0; /* Index in aiMap[] */
160353 160917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn += i;
160354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=iEq;i<pLoop->nLTerm; i++){
160918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=iEq; i<pLoop->nLTerm; i++){
160355 160919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i]->pExpr==pX ){
160356 160920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOut = iTarget + i - iEq;
160357 160921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eType==IN_INDEX_ROWID ){
160358 160922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn->addrInTop = sqlite3VdbeAddOp2(v, OP_Rowid, iTab, iOut);
160359 160923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -161000,19 +161564,20 @@
161000 161564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereInfo *pWInfo, /* Complete information about the WHERE clause */
161001 161565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLevel, /* Which level of pWInfo->a[] should be coded */
161002 161566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNxt, /* Jump here to bypass inner loops */
161003 161567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask notReady /* Loops that are not ready */
161004 161568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
161569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int saved_addrBrk;
161005 161570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( ++iLevel < pWInfo->nLevel ){
161006 161571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLevel *pLevel = &pWInfo->a[iLevel];
161007 161572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pLoop = pLevel->pWLoop;
161008 161573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->regFilter==0 ) continue;
161009 161574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->pWLoop->nSkip ) continue;
161010 161575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ,--- Because sqlite3ConstructBloomFilter() has will not have set
161011 161576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** vvvvv--' pLevel->regFilter if this were true. */
161012 161577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pLoop->prereq & notReady) ) continue;
161013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pLevel->addrBrk==0 );
161578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ saved_addrBrk = pLevel->addrBrk;
161014 161579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->addrBrk = addrNxt;
161015 161580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & WHERE_IPK ){
161016 161581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pTerm = pLoop->aLTerm[0];
161017 161582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRowid;
161018 161583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTerm!=0 );
@@ -161038,11 +161603,11 @@
161038 161603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(pParse->pVdbe, OP_Filter, pLevel->regFilter,
161039 161604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrNxt, r1, nEq);
161040 161605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(pParse->pVdbe);
161041 161606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161042 161607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->regFilter = 0;
161043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLevel->addrBrk = 0;
161608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrBrk = saved_addrBrk;
161044 161609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161045 161610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161046 161611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161047 161612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
161048 161613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Loop pLoop is a WHERE_INDEXED level that uses at least one IN(...)
@@ -161085,11 +161650,10 @@
161085 161650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereClause *pWC; /* Decomposition of the entire WHERE clause */
161086 161651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pTerm; /* A WHERE clause term */
161087 161652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db; /* Database connection */
161088 161653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pTabItem; /* FROM clause term being coded */
161089 161654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrBrk; /* Jump here to break out of the loop */
161090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrHalt; /* addrBrk for the outermost loop */
161091 161655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrCont; /* Jump here to continue with next cycle */
161092 161656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRowidReg = 0; /* Rowid is stored in this register, if not zero */
161093 161657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iReleaseReg = 0; /* Temp register to free before returning */
161094 161658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx = 0; /* Index used by loop (if any) */
161095 161659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLoop; /* Iteration of constraint generator loop */
@@ -161129,11 +161693,11 @@
161129 161693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When there is an IN operator, we also have a "addrNxt" label that
161130 161694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** means to continue with the next IN value combination. When
161131 161695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** there are no IN operators in the constraints, the "addrNxt" label
161132 161696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is the same as "addrBrk".
161133 161697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
161134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrBrk = pLevel->addrBrk = pLevel->addrNxt = sqlite3VdbeMakeLabel(pParse);
161698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrBrk = pLevel->addrNxt = pLevel->addrBrk;
161135 161699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrCont = pLevel->addrCont = sqlite3VdbeMakeLabel(pParse);
161136 161700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161137 161701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If this is the right table of a LEFT OUTER JOIN, allocate and
161138 161702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** initialize a memory cell that records if this table matches any
161139 161703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** row of the left table of the join.
@@ -161145,18 +161709,10 @@
161145 161709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->iLeftJoin = ++pParse->nMem;
161146 161710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, pLevel->iLeftJoin);
161147 161711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "init LEFT JOIN match flag"));
161148 161712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161149 161713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Compute a safe address to jump to if we discover that the table for
161151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** this loop is empty and can never contribute content. */
161152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(j=iLevel; j>0; j--){
161153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWInfo->a[j].iLeftJoin ) break;
161154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWInfo->a[j].pRJ ) break;
161155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
161156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrHalt = pWInfo->a[j].addrBrk;
161157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
161158 161714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Special case of a FROM clause subquery implemented as a co-routine */
161159 161715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTabItem->fg.viaCoroutine ){
161160 161716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regYield;
161161 161717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Subquery *pSubq;
161162 161718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTabItem->fg.isSubquery && pTabItem->u4.pSubq!=0 );
@@ -161391,11 +161947,11 @@
161391 161947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, pX->op==TK_LE);
161392 161948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, pX->op==TK_LT);
161393 161949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, pX->op==TK_GE);
161394 161950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, rTemp);
161395 161951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
161396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, bRev ? OP_Last : OP_Rewind, iCur, addrHalt);
161952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, bRev ? OP_Last : OP_Rewind, iCur, pLevel->addrHalt);
161397 161953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev==0);
161398 161954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev!=0);
161399 161955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161400 161956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pEnd ){
161401 161957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pX;
@@ -161431,40 +161987,40 @@
161431 161987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, testOp==OP_Ge);
161432 161988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, testOp==OP_Gt);
161433 161989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_AFF_NUMERIC | SQLITE_JUMPIFNULL);
161434 161990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161435 161991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pLoop->wsFlags & WHERE_INDEXED ){
161436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Case 4: A scan using an index.
161437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The WHERE clause may contain zero or more equality
161439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** terms ("==" or "IN" operators) that refer to the N
161440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** left-most columns of the index. It may also contain
161441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** inequality constraints (>, <, >= or <=) on the indexed
161442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** column that immediately follows the N equalities. Only
161443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the right-most column can be an inequality - the rest must
161444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** use the "==" and "IN" operators. For example, if the
161445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** index is on (x,y,z), then the following clauses are all
161446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** optimized:
161447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5
161449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND y=10
161450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND y<10
161451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND y>5 AND y<10
161452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND y=5 AND z<=10
161453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The z<10 term of the following cannot be used, only
161455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the x=5 term:
161456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND z<10
161458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** N may be zero if there are inequality constraints.
161460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If there are no inequality constraints, then N is at
161461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** least one.
161462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This case is also used when there are no WHERE clause
161464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** constraints but an index is selected anyway, in order
161465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to force the output order to conform to an ORDER BY.
161992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Case 4: Search using an index.
161993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
161994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The WHERE clause may contain zero or more equality
161995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** terms ("==" or "IN" or "IS" operators) that refer to the N
161996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** left-most columns of the index. It may also contain
161997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** inequality constraints (>, <, >= or <=) on the indexed
161998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** column that immediately follows the N equalities. Only
161999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the right-most column can be an inequality - the rest must
162000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** use the "==", "IN", or "IS" operators. For example, if the
162001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** index is on (x,y,z), then the following clauses are all
162002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** optimized:
162003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
162004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x=5
162005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x=5 AND y=10
162006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x=5 AND y<10
162007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x=5 AND y>5 AND y<10
162008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x=5 AND y=5 AND z<=10
162009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
162010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The z<10 term of the following cannot be used, only
162011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the x=5 term:
162012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
162013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x=5 AND z<10
162014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
162015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** N may be zero if there are inequality constraints.
162016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If there are no inequality constraints, then N is at
162017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** least one.
162018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
162019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This case is also used when there are no WHERE clause
162020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** constraints but an index is selected anyway, in order
162021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to force the output order to conform to an ORDER BY.
161466 162022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
161467 162023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const u8 aStartOp[] = {
161468 162024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0,
161469 162025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0,
161470 162026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OP_Rewind, /* 2: (!start_constraints && startEq && !bRev) */
@@ -161801,16 +162357,17 @@
161801 162357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161802 162358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161803 162359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->iLeftJoin==0 ){
161804 162360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If a partial index is driving the loop, try to eliminate WHERE clause
161805 162361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** terms from the query that must be true due to the WHERE clause of
161806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the partial index.
162362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the partial index. This optimization does not work on an outer join,
162363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** as shown by:
161807 162364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
161808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 2019-11-02 ticket 623eff57e76d45f6: This optimization does not work
161809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** for a LEFT JOIN.
162365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2019-11-02 ticket 623eff57e76d45f6 (LEFT JOIN)
162366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2025-05-29 forum post 7dee41d32506c4ae (RIGHT JOIN)
161810 162367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
161811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pIdx->pPartIdxWhere ){
162368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pIdx->pPartIdxWhere && pLevel->pRJ==0 ){
161812 162369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereApplyPartialIndexConstraints(pIdx->pPartIdxWhere, iCur, pWC);
161813 162370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161814 162371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
161815 162372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pIdx->pPartIdxWhere );
161816 162373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The following assert() is not a requirement, merely an observation:
@@ -162185,11 +162742,11 @@
162185 162742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = OP_Noop;
162186 162743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
162187 162744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCursorHint(pTabItem, pWInfo, pLevel, 0);
162188 162745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = aStep[bRev];
162189 162746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p1 = iCur;
162190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLevel->p2 = 1 + sqlite3VdbeAddOp2(v, aStart[bRev], iCur, addrHalt);
162747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->p2 = 1 + sqlite3VdbeAddOp2(v, aStart[bRev],iCur,pLevel->addrHalt);
162191 162748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev==0);
162192 162749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev!=0);
162193 162750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP;
162194 162751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
162195 162752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -163479,34 +164036,46 @@
163479 164036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** column references. This routine checks to see if pExpr is an equivalence
163480 164037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** relation:
163481 164038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 1. The SQLITE_Transitive optimization must be enabled
163482 164039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2. Must be either an == or an IS operator
163483 164040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 3. Not originating in the ON clause of an OUTER JOIN
163484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 4. The affinities of A and B must be compatible
163485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 5a. Both operands use the same collating sequence OR
163486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 5b. The overall collating sequence is BINARY
164041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 4. The operator is not IS or else the query does not contain RIGHT JOIN
164042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 5. The affinities of A and B must be compatible
164043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 6a. Both operands use the same collating sequence OR
164044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 6b. The overall collating sequence is BINARY
163487 164045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If this routine returns TRUE, that means that the RHS can be substituted
163488 164046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for the LHS anyplace else in the WHERE clause where the LHS column occurs.
163489 164047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is an optimization. No harm comes from returning 0. But if 1 is
163490 164048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** returned when it should not be, then incorrect answers might result.
163491 164049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
163492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int termIsEquivalence(Parse *pParse, Expr *pExpr){
164050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int termIsEquivalence(Parse *pParse, Expr *pExpr, SrcList *pSrc){
163493 164051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char aff1, aff2;
163494 164052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CollSeq *pColl;
163495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !OptimizationEnabled(pParse->db, SQLITE_Transitive) ) return 0;
163496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0;
163497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_OuterON) ) return 0;
164053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !OptimizationEnabled(pParse->db, SQLITE_Transitive) ) return 0; /* (1) */
164054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0; /* (2) */
164055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pExpr, EP_OuterON) ) return 0; /* (3) */
164056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pSrc!=0 );
164057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op==TK_IS
164058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pSrc->nSrc>=2
164059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pSrc->a[0].fg.jointype & JT_LTORJ)!=0
164060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
164061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0; /* (4) */
164062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
163498 164063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff1 = sqlite3ExprAffinity(pExpr->pLeft);
163499 164064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff2 = sqlite3ExprAffinity(pExpr->pRight);
163500 164065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aff1!=aff2
163501 164066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (!sqlite3IsNumericAffinity(aff1) || !sqlite3IsNumericAffinity(aff2))
163502 164067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
163503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
164068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0; /* (5) */
163504 164069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
163505 164070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColl = sqlite3ExprCompareCollSeq(pParse, pExpr);
163506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3IsBinary(pColl) ) return 1;
163507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return sqlite3ExprCollSeqMatch(pParse, pExpr->pLeft, pExpr->pRight);
164071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !sqlite3IsBinary(pColl)
164072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !sqlite3ExprCollSeqMatch(pParse, pExpr->pLeft, pExpr->pRight)
164073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
164074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0; /* (6) */
164075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
164076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
163508 164077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
163509 164078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
163510 164079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
163511 164080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Recursively walk the expressions of a SELECT statement and generate
163512 164081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a bitmask indicating which tables are used in that expression
@@ -163660,10 +164229,13 @@
163660 164229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ){
163661 164230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
163662 164231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
163663 164232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWC->nTerm > idxTerm );
163664 164233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm = &pWC->a[idxTerm];
164234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
164235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTerm->iTerm = idxTerm;
164236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
163665 164237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMaskSet = &pWInfo->sMaskSet;
163666 164238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pTerm->pExpr;
163667 164239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr!=0 ); /* Because malloc() has not failed */
163668 164240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op!=TK_AS && pExpr->op!=TK_COLLATE );
163669 164241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMaskSet->bVarSelect = 0;
@@ -163767,12 +164339,12 @@
163767 164339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = &pWC->a[idxNew];
163768 164340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
markTermAsChild(pWC, idxNew, idxTerm);
163769 164341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_IS ) pNew->wtFlags |= TERM_IS;
163770 164342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm = &pWC->a[idxTerm];
163771 164343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->wtFlags |= TERM_COPIED;
163772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
163773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( termIsEquivalence(pParse, pDup) ){
164344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pWInfo->pTabList!=0 );
164345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( termIsEquivalence(pParse, pDup, pWInfo->pTabList) ){
163774 164346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->eOperator |= WO_EQUIV;
163775 164347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eExtraOp = WO_EQUIV;
163776 164348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
163777 164349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
163778 164350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDup = pExpr;
@@ -164074,11 +164646,11 @@
164074 164646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewExpr->w.iJoin = pExpr->w.iJoin;
164075 164647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164076 164648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC);
164077 164649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( idxNew==0 );
164078 164650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm = &pWC->a[idxNew];
164079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNewTerm->prereqRight = prereqExpr;
164651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNewTerm->prereqRight = prereqExpr | extraRight;
164080 164652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm->leftCursor = pLeft->iTable;
164081 164653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm->u.x.leftColumn = pLeft->iColumn;
164082 164654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm->eOperator = WO_AUX;
164083 164655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm->eMatchOp = eOp2;
164084 164656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
markTermAsChild(pWC, idxNew, idxTerm);
@@ -164185,11 +164757,11 @@
164185 164757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SELECT statement passed as the second argument. These terms are only
164186 164758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** added if:
164187 164759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
164188 164760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 1. The SELECT statement has a LIMIT clause, and
164189 164761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2. The SELECT statement is not an aggregate or DISTINCT query, and
164190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 3. The SELECT statement has exactly one object in its from clause, and
164762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 3. The SELECT statement has exactly one object in its FROM clause, and
164191 164763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that object is a virtual table, and
164192 164764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 4. There are no terms in the WHERE clause that will not be passed
164193 164765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the virtual table xBestIndex method.
164194 164766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 5. The ORDER BY clause, if any, will be made available to the xBestIndex
164195 164767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** method.
@@ -164222,12 +164794,26 @@
164222 164794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pWC->a[] array. So this term can be ignored, as a LIMIT clause
164223 164795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will only be added if each of the child terms passes the
164224 164796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (leftCursor==iCsr) test below. */
164225 164797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
164226 164798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWC->a[ii].leftCursor!=iCsr ) return;
164228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWC->a[ii].prereqRight!=0 ) return;
164799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWC->a[ii].leftCursor==iCsr && pWC->a[ii].prereqRight==0 ) continue;
164800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
164801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If this term has a parent with exactly one child, and the parent will
164802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be passed through to xBestIndex, then this term can be ignored. */
164803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pWC->a[ii].iParent>=0 ){
164804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WhereTerm *pParent = &pWC->a[ pWC->a[ii].iParent ];
164805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParent->leftCursor==iCsr
164806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pParent->prereqRight==0
164807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pParent->nChild==1
164808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
164809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
164810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
164811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
164812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
164813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This term will not be passed through. Do not add a LIMIT clause. */
164814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
164229 164815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164230 164816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
164231 164817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check condition (5). Return early if it is not met. */
164232 164818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrderBy ){
164233 164819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pOrderBy->nExpr; ii++){
@@ -164887,15 +165473,15 @@
164887 165473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
164888 165474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164889 165475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pScan->pWC = pWC;
164890 165476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pScan->k = k+1;
164891 165477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef WHERETRACE_ENABLED
164892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3WhereTrace & 0x20000 ){
165478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (sqlite3WhereTrace & 0x20000)!=0 && pScan->nEquiv>1 ){
164893 165479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii;
164894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DebugPrintf("SCAN-TERM %p: nEquiv=%d",
164895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTerm, pScan->nEquiv);
164896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(ii=0; ii<pScan->nEquiv; ii++){
165480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DebugPrintf("EQUIVALENT TO {%d:%d} (due to TERM-%d):",
165481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pScan->aiCur[0], pScan->aiColumn[0], pTerm->iTerm);
165482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(ii=1; ii<pScan->nEquiv; ii++){
164897 165483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf(" {%d:%d}",
164898 165484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pScan->aiCur[ii], pScan->aiColumn[ii]);
164899 165485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164900 165486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf("\n");
164901 165487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -165662,11 +166248,13 @@
165662 166248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_InitCoroutine, regYield, 0, pSubq->addrFillSub);
165663 166249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrTop = sqlite3VdbeAddOp1(v, OP_Yield, regYield);
165664 166250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
165665 166251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "next row of %s", pSrc->pSTab->zName));
165666 166252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
165667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, pLevel->iTabCur); VdbeCoverage(v);
166253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pLevel->addrHalt );
166254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrTop = sqlite3VdbeAddOp2(v, OP_Rewind,pLevel->iTabCur,pLevel->addrHalt);
166255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
165668 166256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
165669 166257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPartial ){
165670 166258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iContinue = sqlite3VdbeMakeLabel(pParse);
165671 166259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pPartial, iContinue, SQLITE_JUMPIFNULL);
165672 166260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop->wsFlags |= WHERE_PARTIALIDX;
@@ -165690,15 +166278,18 @@
165690 166278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLevel->iIdxCur>0 );
165691 166279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
translateColumnToCopy(pParse, addrTop, pLevel->iTabCur,
165692 166280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->u4.pSubq->regResult, pLevel->iIdxCur);
165693 166281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGoto(v, addrTop);
165694 166282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->fg.viaCoroutine = 0;
166283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrTop);
165695 166284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
165696 166285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1); VdbeCoverage(v);
165697 166286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_STMTSTATUS_AUTOINDEX);
166287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pSrc->fg.jointype & JT_LEFT)!=0 ){
166288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrTop);
166289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
165698 166290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
165699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, addrTop);
165700 166291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regRecord);
165701 166292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
165702 166293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump here when skipping the initialization */
165703 166294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrInit);
165704 166295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeScanStatusRange(v, addrExp, addrExp, -1);
@@ -166846,10 +167437,11 @@
166846 167437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zLeft),zLeft,"indexable=0x%llx",
166847 167438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->u.pOrInfo->indexable);
166848 167439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
166849 167440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zLeft),zLeft,"left=%d", pTerm->leftCursor);
166850 167441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iTerm = pTerm->iTerm = MAX(iTerm,pTerm->iTerm);
166851 167443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf(
166852 167444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"TERM-%-3d %p %s %-12s op=%03x wtFlags=%04x",
166853 167445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTerm, pTerm, zType, zLeft, pTerm->eOperator, pTerm->wtFlags);
166854 167446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The 0x10000 .wheretrace flag causes extra information to be
166855 167447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** shown about each Term */
@@ -167620,15 +168212,12 @@
167620 168212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opMask = WO_LT|WO_LE;
167621 168213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
167622 168214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNew->u.btree.nBtm==0 );
167623 168215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opMask = WO_EQ|WO_IN|WO_GT|WO_GE|WO_LT|WO_LE|WO_ISNULL|WO_IS;
167624 168216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pProbe->bUnordered || pProbe->bLowQual ){
167626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pProbe->bUnordered ) opMask &= ~(WO_GT|WO_GE|WO_LT|WO_LE);
167627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pProbe->bLowQual && pSrc->fg.isIndexedBy==0 ){
167628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- opMask &= ~(WO_EQ|WO_IN|WO_IS);
167629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
168217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pProbe->bUnordered ){
168218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ opMask &= ~(WO_GT|WO_GE|WO_LT|WO_LE);
167630 168219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167631 168220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
167632 168221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNew->u.btree.nEq<pProbe->nColumn );
167633 168222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNew->u.btree.nEq<pProbe->nKeyCol
167634 168223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pProbe->idxType!=SQLITE_IDXTYPE_PRIMARYKEY );
@@ -167697,19 +168286,33 @@
167697 168286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eOp & WO_IN ){
167698 168287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pTerm->pExpr;
167699 168288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(pExpr) ){
167700 168289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* "x IN (SELECT ...)": TUNING: the SELECT returns 25 rows */
167701 168290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
168291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bRedundant = 0;
167702 168292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nIn = 46; assert( 46==sqlite3LogEst(25) );
167703 168293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
167704 168294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The expression may actually be of the form (x, y) IN (SELECT...).
167705 168295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** In this case there is a separate term for each of (x) and (y).
167706 168296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** However, the nIn multiplier should only be applied once, not once
167707 168297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for each such term. The following loop checks that pTerm is the
167708 168298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** first such term in use, and sets nIn back to 0 if it is not. */
167709 168299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pNew->nLTerm-1; i++){
167710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pNew->aLTerm[i] && pNew->aLTerm[i]->pExpr==pExpr ) nIn = 0;
168300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNew->aLTerm[i] && pNew->aLTerm[i]->pExpr==pExpr ){
168301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nIn = 0;
168302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNew->aLTerm[i]->u.x.iField == pTerm->u.x.iField ){
168303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Detect when two or more columns of an index match the same
168304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** column of a vector IN operater, and avoid adding the column
168305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to the WhereLoop more than once. See tag-20250707-01
168306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in test/rowvalue.test */
168307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bRedundant = 1;
168308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
168309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
168310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
168311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bRedundant ){
168312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew->nLTerm--;
168313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
167711 168314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167712 168315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( ALWAYS(pExpr->x.pList && pExpr->x.pList->nExpr) ){
167713 168316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* "x IN (value, value, ...)" */
167714 168317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nIn = sqlite3LogEst(pExpr->x.pList->nExpr);
167715 168318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -167937,11 +168540,11 @@
167937 168540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167938 168541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
167939 168542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pNew->wsFlags & WHERE_TOP_LIMIT)==0
167940 168543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pNew->u.btree.nEq<pProbe->nColumn
167941 168544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pNew->u.btree.nEq<pProbe->nKeyCol ||
167942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (pProbe->idxType!=SQLITE_IDXTYPE_PRIMARYKEY && !pProbe->bIdxRowid))
168545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pProbe->idxType!=SQLITE_IDXTYPE_PRIMARYKEY)
167943 168546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
167944 168547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew->u.btree.nEq>3 ){
167945 168548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ProgressCheck(pParse);
167946 168549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167947 168550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nInMul+nIn);
@@ -167976,10 +168579,11 @@
167976 168579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& saved_nEq==pNew->nLTerm
167977 168580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pProbe->noSkipScan==0
167978 168581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pProbe->hasStat1!=0
167979 168582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& OptimizationEnabled(db, SQLITE_SkipScan)
167980 168583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pProbe->aiRowLogEst[saved_nEq+1]>=42 /* TUNING: Minimum for skip-scan */
168584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pSrc->fg.fromExists==0
167981 168585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (rc = whereLoopResize(db, pNew, pNew->nLTerm+1))==SQLITE_OK
167982 168586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
167983 168587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LogEst nIter;
167984 168588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.btree.nEq++;
167985 168589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nSkip++;
@@ -168066,10 +168670,11 @@
168066 168670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr;
168067 168671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pTerm->pExpr;
168068 168672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (!ExprHasProperty(pExpr, EP_OuterON) || pExpr->w.iJoin==iTab)
168069 168673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& ((jointype & JT_OUTER)==0 || ExprHasProperty(pExpr, EP_OuterON))
168070 168674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3ExprImpliesExpr(pParse, pExpr, pWhere, iTab)
168675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !sqlite3ExprImpliesExpr(pParse, pExpr, pWhere, -1)
168071 168676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pTerm->wtFlags & TERM_VNULL)==0
168072 168677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
168073 168678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
168074 168679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
168075 168680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -168561,11 +169166,11 @@
168561 169166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
168562 169167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( m==0
168563 169168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (HasRowid(pTab) || pWInfo->pSelect!=0 || sqlite3FaultSim(700))
168564 169169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
168565 169170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WHERETRACE(0x200,
168566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ("-> %s a covering index according to bitmasks\n",
169171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ("-> %s is a covering index according to bitmasks\n",
168567 169172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pProbe->zName, m==0 ? "is" : "is not"));
168568 169173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->wsFlags = WHERE_IDX_ONLY | WHERE_INDEXED;
168569 169174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
168570 169175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
168571 169176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -171532,10 +172137,18 @@
171532 172137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171533 172138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTabItem = &pTabList->a[pLevel->iFrom];
171534 172139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pTabItem->pSTab;
171535 172140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
171536 172141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop = pLevel->pWLoop;
172142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrBrk = sqlite3VdbeMakeLabel(pParse);
172143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ii==0 || (pTabItem[0].fg.jointype & JT_LEFT)!=0 ){
172144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrHalt = pLevel->addrBrk;
172145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pWInfo->a[ii-1].pRJ ){
172146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrHalt = pWInfo->a[ii-1].addrBrk;
172147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
172148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->addrHalt = pWInfo->a[ii-1].addrHalt;
172149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
171537 172150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTab->tabFlags & TF_Ephemeral)!=0 || IsView(pTab) ){
171538 172151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do nothing */
171539 172152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
171540 172153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
171541 172154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){
@@ -171583,10 +172196,17 @@
171583 172196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171584 172197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_COLUMN_USED_MASK
171585 172198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Dup8(v, OP_ColumnsUsed, pTabItem->iCursor, 0, 0,
171586 172199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(const u8*)&pTabItem->colUsed, P4_INT64);
171587 172200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
172201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ii>=2
172202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pTabItem[0].fg.jointype & (JT_LTORJ|JT_LEFT))==0
172203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pLevel->addrHalt==pWInfo->a[0].addrHalt
172204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
172205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_IfEmpty, pTabItem->iCursor, pWInfo->iBreak);
172206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
172207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
171588 172208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
171589 172209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
171590 172210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171591 172211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & WHERE_INDEXED ){
171592 172212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIx = pLoop->u.btree.pIndex;
@@ -171839,10 +172459,13 @@
171839 172459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_SeekLT);
171840 172460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_SeekGT);
171841 172461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 1, pLevel->p2);
171842 172462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171843 172463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_DISABLE_SKIPAHEAD_DISTINCT */
172464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTabList->a[pLevel->iFrom].fg.fromExists ){
172465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
172466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
171844 172467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The common case: Advance to the next row */
171845 172468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->addrCont ) sqlite3VdbeResolveLabel(v, pLevel->addrCont);
171846 172469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, pLevel->op, pLevel->p1, pLevel->p2, pLevel->p3);
171847 172470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, pLevel->p5);
171848 172471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
@@ -179911,16 +180534,25 @@
179911 180534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Expressions of the form
179912 180535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
179913 180536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expr1 IN ()
179914 180537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expr1 NOT IN ()
179915 180538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
179916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** simplify to constants 0 (false) and 1 (true), respectively,
179917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** regardless of the value of expr1.
180539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** simplify to constants 0 (false) and 1 (true), respectively.
180540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
180541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Except, do not apply this optimization if expr1 contains a function
180542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** because that function might be an aggregate (we don't know yet whether
180543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** it is or not) and if it is an aggregate, that could change the meaning
180544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the whole query.
179918 180545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
179919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy590);
179920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yymsp[-4].minor.yy590 = sqlite3Expr(pParse->db, TK_STRING, yymsp[-3].minor.yy502 ? "true" : "false");
179921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( yymsp[-4].minor.yy590 ) sqlite3ExprIdToTrueFalse(yymsp[-4].minor.yy590);
180546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pB = sqlite3Expr(pParse->db, TK_STRING, yymsp[-3].minor.yy502 ? "true" : "false");
180547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pB ) sqlite3ExprIdToTrueFalse(pB);
180548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !ExprHasProperty(yymsp[-4].minor.yy590, EP_HasFunc) ){
180549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy590);
180550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yymsp[-4].minor.yy590 = pB;
180551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
180552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, yymsp[-3].minor.yy502 ? TK_OR : TK_AND, pB, yymsp[-4].minor.yy590);
180553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
179922 180554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
179923 180555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRHS = yymsp[-1].minor.yy402->a[0].pExpr;
179924 180556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yymsp[-1].minor.yy402->nExpr==1 && sqlite3ExprIsConstant(pParse,pRHS) && yymsp[-4].minor.yy590->op!=TK_VECTOR ){
179925 180557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yymsp[-1].minor.yy402->a[0].pExpr = 0;
179926 180558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy402);
@@ -181522,11 +182154,11 @@
181522 182154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int getToken(const unsigned char **pz){
181523 182155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned char *z = *pz;
181524 182156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int t; /* Token type to return */
181525 182157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do {
181526 182158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z += sqlite3GetToken(z, &t);
181527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }while( t==TK_SPACE );
182159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }while( t==TK_SPACE || t==TK_COMMENT );
181528 182160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( t==TK_ID
181529 182161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| t==TK_STRING
181530 182162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| t==TK_JOIN_KW
181531 182163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| t==TK_WINDOW
181532 182164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| t==TK_OVER
@@ -184472,10 +185104,11 @@
184472 185104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_API_ARMOR
184473 185105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
184474 185106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
184475 185107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ms<-1 ) return SQLITE_RANGE;
184476 185108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_SETLK_TIMEOUT
185109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_enter(db->mutex);
184477 185110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->setlkTimeout = ms;
184478 185111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->setlkFlags = flags;
184479 185112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnterAll(db);
184480 185113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iDb=0; iDb<db->nDb; iDb++){
184481 185114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt = db->aDb[iDb].pBt;
@@ -184483,10 +185116,11 @@
184483 185116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_file *fd = sqlite3PagerFile(sqlite3BtreePager(pBt));
184484 185117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OsFileControlHint(fd, SQLITE_FCNTL_BLOCK_ON_CONNECT, (void*)&bBOC);
184485 185118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
184486 185119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
184487 185120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeaveAll(db);
185121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_mutex_leave(db->mutex);
184488 185122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
184489 185123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_ENABLE_API_ARMOR) && !defined(SQLITE_ENABLE_SETLK_TIMEOUT)
184490 185124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(db);
184491 185125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(flags);
184492 185126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -188869,11 +189503,11 @@
188869 189503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188870 189504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
188871 189505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros needed to provide flexible arrays in a portable way
188872 189506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
188873 189507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef offsetof
188874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define offsetof(STRUCTURE,FIELD) ((size_t)((char*)&((STRUCTURE*)0)->FIELD))
189508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define offsetof(ST,M) ((size_t)((char*)&((ST*)0)->M - (char*)0))
188875 189509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
188876 189510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
188877 189511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY
188878 189512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
188879 189513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY 1
@@ -207968,60 +208602,113 @@
207968 208602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Growing our own isspace() routine this way is twice as fast as
207969 208603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the library isspace() function, resulting in a 7% overall performance
207970 208604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** increase for the text-JSON parser. (Ubuntu14.10 gcc 4.8.4 x64 with -Os).
207971 208605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
207972 208606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char jsonIsSpace[] = {
207973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
207974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
207982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
208607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ASCII
208608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*0 1 2 3 4 5 6 7 8 9 a b c d e f */
208609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, /* 0 */
208610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1 */
208611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 2 */
208612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 3 */
208613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 4 */
208614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 5 */
208615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 6 */
208616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 7 */
208617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
208618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 8 */
208619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 9 */
208620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a */
208621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b */
208622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* c */
208623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* d */
208624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e */
208625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* f */
208626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
208627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_EBCDIC
208628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*0 1 2 3 4 5 6 7 8 9 a b c d e f */
208629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, /* 0 */
208630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1 */
208631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 2 */
208632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 3 */
208633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 4 */
208634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 5 */
208635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 6 */
208636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 7 */
208637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
208638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 8 */
208639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 9 */
208640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a */
208641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b */
208642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* c */
208643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* d */
208644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e */
208645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* f */
208646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
208647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
207990 208648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
207991 208649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define jsonIsspace(x) (jsonIsSpace[(unsigned char)x])
207992 208650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
207993 208651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
207994 208652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The set of all space characters recognized by jsonIsspace().
207995 208653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Useful as the second argument to strspn().
207996 208654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
208655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ASCII
207997 208656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char jsonSpaces[] = "\011\012\015\040";
208657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
208658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_EBCDIC
208659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char jsonSpaces[] = "\005\045\015\100";
208660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
208661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
207998 208662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
207999 208663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
208000 208664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Characters that are special to JSON. Control characters,
208001 208665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** '"' and '\\' and '\''. Actually, '\'' is not special to
208002 208666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** canonical JSON, but it is special in JSON-5, so we include
208003 208667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it in the set of special characters.
208004 208668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
208005 208669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char jsonIsOk[256] = {
208006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
208007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
208008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
208009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
208012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
208015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
208022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
208670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_ASCII
208671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*0 1 2 3 4 5 6 7 8 9 a b c d e f */
208672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 */
208673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1 */
208674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, /* 2 */
208675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 3 */
208676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4 */
208677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, /* 5 */
208678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6 */
208679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 7 */
208680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
208681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 8 */
208682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */
208683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */
208684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */
208685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */
208686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */
208687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */
208688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 /* f */
208689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
208690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_EBCDIC
208691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*0 1 2 3 4 5 6 7 8 9 a b c d e f */
208692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 */
208693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1 */
208694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 2 */
208695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 3 */
208696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4 */
208697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 5 */
208698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6 */
208699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, /* 7 */
208700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
208701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 8 */
208702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */
208703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */
208704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */
208705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */
208706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */
208707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */
208708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 /* f */
208709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
208023 208710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
208024 208711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
208025 208712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Objects */
208026 208713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct JsonCache JsonCache;
208027 208714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct JsonString JsonString;
@@ -208162,11 +208849,11 @@
208162 208849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
208163 208850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**************************************************************************
208164 208851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Forward references
208165 208852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**************************************************************************/
208166 208853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void jsonReturnStringAsBlob(JsonString*);
208167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int jsonFuncArgMightBeBinary(sqlite3_value *pJson);
208854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int jsonArgIsJsonb(sqlite3_value *pJson, JsonParse *p);
208168 208855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static u32 jsonTranslateBlobToText(const JsonParse*,u32,JsonString*);
208169 208856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void jsonReturnParse(sqlite3_context*,JsonParse*);
208170 208857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static JsonParse *jsonParseFuncArg(sqlite3_context*,sqlite3_value*,u32);
208171 208858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void jsonParseFree(JsonParse*);
208172 208859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static u32 jsonbPayloadSize(const JsonParse*, u32, u32*);
@@ -208580,15 +209267,13 @@
208580 209267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendString(p, z, n);
208581 209268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
208582 209269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
208583 209270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
208584 209271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: {
208585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( jsonFuncArgMightBeBinary(pValue) ){
208586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- JsonParse px;
208587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(&px, 0, sizeof(px));
208588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- px.aBlob = (u8*)sqlite3_value_blob(pValue);
208589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- px.nBlob = sqlite3_value_bytes(pValue);
209272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ JsonParse px;
209273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&px, 0, sizeof(px));
209274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( jsonArgIsJsonb(pValue, &px) ){
208590 209275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonTranslateBlobToText(&px, 0, p);
208591 209276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->eErr==0 ){
208592 209277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_error(p->pCtx, "JSON cannot hold BLOB values", -1);
208593 209278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->eErr = JSTRING_ERR;
208594 209279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonStringReset(p);
@@ -209051,12 +209736,14 @@
209051 209736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtra = 0;
209052 209737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( szType==12 ){
209053 209738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtra = 1;
209054 209739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( szType==13 ){
209055 209740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtra = 2;
209056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
209741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( szType==14 ){
209057 209742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtra = 4;
209743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
209744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nExtra = 8;
209058 209745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209059 209746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( szPayload<=11 ){
209060 209747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nNeeded = 0;
209061 209748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( szPayload<=0xff ){
209062 209749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nNeeded = 1;
@@ -209522,11 +210209,16 @@
209522 210209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c = z[++j];
209523 210210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='"' || c=='\\' || c=='/' || c=='b' || c=='f'
209524 210211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| c=='n' || c=='r' || c=='t'
209525 210212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (c=='u' && jsonIs4Hex(&z[j+1])) ){
209526 210213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( opcode==JSONB_TEXT ) opcode = JSONB_TEXTJ;
209527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( c=='\'' || c=='0' || c=='v' || c=='\n'
210214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c=='\'' || c=='v' || c=='\n'
210215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_BUG_COMPATIBLE_20250510
210216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (c=='0') /* Legacy bug compatible */
210217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
210218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (c=='0' && !sqlite3Isdigit(z[j+1])) /* Correct implementation */
210219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
209528 210220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (0xe2==(u8)c && 0x80==(u8)z[j+1]
209529 210221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (0xa8==(u8)z[j+2] || 0xa9==(u8)z[j+2]))
209530 210222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (c=='x' && jsonIs2Hex(&z[j+1])) ){
209531 210223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opcode = JSONB_TEXT5;
209532 210224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->hasNonstd = 1;
@@ -209909,11 +210601,11 @@
209909 210601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pParse->aBlob[i+4]!=0
209910 210602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
209911 210603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pSz = 0;
209912 210604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
209913 210605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sz = (pParse->aBlob[i+5]<<24) + (pParse->aBlob[i+6]<<16) +
210606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sz = ((u32)pParse->aBlob[i+5]<<24) + (pParse->aBlob[i+6]<<16) +
209915 210607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(pParse->aBlob[i+7]<<8) + pParse->aBlob[i+8];
209916 210608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = 9;
209917 210609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209918 210610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (i64)i+sz+n > pParse->nBlob
209919 210611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (i64)i+sz+n > pParse->nBlob-pParse->delta
@@ -210258,37 +210950,10 @@
210258 210950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
210259 210951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
210260 210952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return i;
210261 210953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
210262 210954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
210263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
210264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Return true if the input pJson
210265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
210266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** For performance reasons, this routine does not do a detailed check of the
210267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** input BLOB to ensure that it is well-formed. Hence, false positives are
210268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** possible. False negatives should never occur, however.
210269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
210270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int jsonFuncArgMightBeBinary(sqlite3_value *pJson){
210271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u32 sz, n;
210272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const u8 *aBlob;
210273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nBlob;
210274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- JsonParse s;
210275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3_value_type(pJson)!=SQLITE_BLOB ) return 0;
210276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aBlob = sqlite3_value_blob(pJson);
210277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nBlob = sqlite3_value_bytes(pJson);
210278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( nBlob<1 ) return 0;
210279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(aBlob==0) || (aBlob[0] & 0x0f)>JSONB_OBJECT ) return 0;
210280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(&s, 0, sizeof(s));
210281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.aBlob = (u8*)aBlob;
210282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.nBlob = nBlob;
210283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- n = jsonbPayloadSize(&s, 0, &sz);
210284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n==0 ) return 0;
210285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sz+n!=(u32)nBlob ) return 0;
210286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (aBlob[0] & 0x0f)<=JSONB_FALSE && sz>0 ) return 0;
210287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return sz+n==(u32)nBlob;
210288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
210289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
210290 210955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
210291 210956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Given that a JSONB_ARRAY object starts at offset i, return
210292 210957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the number of entries in that array.
210293 210958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
210294 210959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static u32 jsonbArrayCount(JsonParse *pParse, u32 iRoot){
@@ -210517,11 +211182,25 @@
210517 211182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'f': { *piOut = '\f'; return 2; }
210518 211183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'n': { *piOut = '\n'; return 2; }
210519 211184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'r': { *piOut = '\r'; return 2; }
210520 211185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 't': { *piOut = '\t'; return 2; }
210521 211186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'v': { *piOut = '\v'; return 2; }
210522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case '0': { *piOut = 0; return 2; }
211187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case '0': {
211188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* JSON5 requires that the \0 escape not be followed by a digit.
211189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** But SQLite did not enforce this restriction in versions 3.42.0
211190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** through 3.49.2. That was a bug. But some applications might have
211191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** come to depend on that bug. Use the SQLITE_BUG_COMPATIBLE_20250510
211192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** option to restore the old buggy behavior. */
211193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_BUG_COMPATIBLE_20250510
211194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Legacy bug-compatible behavior */
211195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *piOut = 0;
211196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
211197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Correct behavior */
211198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *piOut = (n>2 && sqlite3Isdigit(z[2])) ? JSON_INVALID_CHAR : 0;
211199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
211200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 2;
211201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
210523 211202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '\'':
210524 211203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '"':
210525 211204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '/':
210526 211205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '\\':{ *piOut = z[1]; return 2; }
210527 211206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'x': {
@@ -211112,14 +211791,11 @@
211112 211791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->aBlob = aNull;
211113 211792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nBlob = 1;
211114 211793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
211115 211794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
211116 211795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_BLOB: {
211117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( jsonFuncArgMightBeBinary(pArg) ){
211118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->aBlob = (u8*)sqlite3_value_blob(pArg);
211119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->nBlob = sqlite3_value_bytes(pArg);
211120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
211796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !jsonArgIsJsonb(pArg, pParse) ){
211121 211797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_error(ctx, "JSON cannot hold BLOB values", -1);
211122 211798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
211123 211799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
211124 211800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
211125 211801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -211266,31 +211942,50 @@
211266 211942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
211267 211943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
211268 211944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
211269 211945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If pArg is a blob that seems like a JSONB blob, then initialize
211270 211946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** p to point to that JSONB and return TRUE. If pArg does not seem like
211271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** a JSONB blob, then return FALSE;
211947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a JSONB blob, then return FALSE.
211272 211948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
211273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This routine is only called if it is already known that pArg is a
211274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** blob. The only open question is whether or not the blob appears
211275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to be a JSONB blob.
211949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** For small BLOBs (having no more than 7 bytes of payload) a full
211950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** validity check is done. So for small BLOBs this routine only returns
211951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** true if the value is guaranteed to be a valid JSONB. For larger BLOBs
211952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (8 byte or more of payload) only the size of the outermost element is
211953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** checked to verify that the BLOB is superficially valid JSONB.
211954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
211955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** A full JSONB validation is done on smaller BLOBs because those BLOBs might
211956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** also be text JSON that has been incorrectly cast into a BLOB.
211957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (See tag-20240123-a and https://sqlite.org/forum/forumpost/012136abd5)
211958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the BLOB is 9 bytes are larger, then it is not possible for the
211959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** superficial size check done here to pass if the input is really text
211960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** JSON so we do not need to look deeper in that case.
211961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
211962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Why we only need to do full JSONB validation for smaller BLOBs:
211963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
211964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The first byte of valid JSON text must be one of: '{', '[', '"', ' ', '\n',
211965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** '\r', '\t', '-', or a digit '0' through '9'. Of these, only a subset
211966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** can also be the first byte of JSONB: '{', '[', and digits '3'
211967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** through '9'. In every one of those cases, the payload size is 7 bytes
211968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or less. So if we do full JSONB validation for every BLOB where the
211969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** payload is less than 7 bytes, we will never get a false positive for
211970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** JSONB on an input that is really text JSON.
211276 211971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
211277 211972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int jsonArgIsJsonb(sqlite3_value *pArg, JsonParse *p){
211278 211973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 n, sz = 0;
211974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 c;
211975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_value_type(pArg)!=SQLITE_BLOB ) return 0;
211279 211976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aBlob = (u8*)sqlite3_value_blob(pArg);
211280 211977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nBlob = (u32)sqlite3_value_bytes(pArg);
211281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->nBlob==0 ){
211282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->aBlob = 0;
211283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
211284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
211285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(p->aBlob==0) ){
211286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
211287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
211288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (p->aBlob[0] & 0x0f)<=JSONB_OBJECT
211978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->nBlob>0
211979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS(p->aBlob!=0)
211980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ((c = p->aBlob[0]) & 0x0f)<=JSONB_OBJECT
211289 211981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (n = jsonbPayloadSize(p, 0, &sz))>0
211290 211982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sz+n==p->nBlob
211291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && ((p->aBlob[0] & 0x0f)>JSONB_FALSE || sz==0)
211983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ((c & 0x0f)>JSONB_FALSE || sz==0)
211984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (sz>7
211985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (c!=0x7b && c!=0x5b && !sqlite3Isdigit(c))
211986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || jsonbValidityCheck(p, 0, p->nBlob, 1)==0)
211292 211987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
211293 211988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
211294 211989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
211295 211990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aBlob = 0;
211296 211991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nBlob = 0;
@@ -212379,25 +213074,21 @@
212379 213074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_int(ctx, 0);
212380 213075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
212381 213076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
212382 213077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212383 213078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SQLITE_BLOB: {
212384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( jsonFuncArgMightBeBinary(argv[0]) ){
213079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ JsonParse py;
213080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&py, 0, sizeof(py));
213081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( jsonArgIsJsonb(argv[0], &py) ){
212385 213082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( flags & 0x04 ){
212386 213083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Superficial checking only - accomplished by the
212387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** jsonFuncArgMightBeBinary() call above. */
213084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** jsonArgIsJsonb() call above. */
212388 213085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = 1;
212389 213086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( flags & 0x08 ){
212390 213087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Strict checking. Check by translating BLOB->TEXT->BLOB. If
212391 213088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** no errors occur, call that a "strict check". */
212392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- JsonParse px;
212393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u32 iErr;
212394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(&px, 0, sizeof(px));
212395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- px.aBlob = (u8*)sqlite3_value_blob(argv[0]);
212396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- px.nBlob = sqlite3_value_bytes(argv[0]);
212397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iErr = jsonbValidityCheck(&px, 0, px.nBlob, 1);
212398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- res = iErr==0;
213089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = 0==jsonbValidityCheck(&py, 0, py.nBlob, 1);
212399 213090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212400 213091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
212401 213092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212402 213093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Fall through into interpreting the input as text. See note
212403 213094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** above at tag-20240123-a. */
@@ -212451,13 +213142,11 @@
212451 213142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
212452 213143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( argc==1 );
212453 213144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(argc);
212454 213145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&s, 0, sizeof(s));
212455 213146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.db = sqlite3_context_db_handle(ctx);
212456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( jsonFuncArgMightBeBinary(argv[0]) ){
212457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.aBlob = (u8*)sqlite3_value_blob(argv[0]);
212458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.nBlob = sqlite3_value_bytes(argv[0]);
213147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( jsonArgIsJsonb(argv[0], &s) ){
212459 213148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iErrPos = (i64)jsonbValidityCheck(&s, 0, s.nBlob, 1);
212460 213149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
212461 213150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.zJson = (char*)sqlite3_value_text(argv[0]);
212462 213151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( s.zJson==0 ) return; /* NULL input or OOM */
212463 213152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.nJson = sqlite3_value_bytes(argv[0]);
@@ -212614,22 +213303,24 @@
212614 213303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z;
212615 213304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 n;
212616 213305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(argc);
212617 213306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr));
212618 213307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pStr ){
213308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = (const char*)sqlite3_value_text(argv[0]);
213309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n = sqlite3Strlen30(z);
212619 213310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pStr->zBuf==0 ){
212620 213311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonStringInit(pStr, ctx);
212621 213312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendChar(pStr, '{');
212622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( pStr->nUsed>1 ){
213313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pStr->nUsed>1 && z!=0 ){
212623 213314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendChar(pStr, ',');
212624 213315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212625 213316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStr->pCtx = ctx;
212626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- z = (const char*)sqlite3_value_text(argv[0]);
212627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- n = sqlite3Strlen30(z);
212628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jsonAppendString(pStr, z, n);
212629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jsonAppendChar(pStr, ':');
212630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jsonAppendSqlValue(pStr, argv[1]);
213317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z!=0 ){
213318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jsonAppendString(pStr, z, n);
213319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jsonAppendChar(pStr, ':');
213320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jsonAppendSqlValue(pStr, argv[1]);
213321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
212631 213322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212632 213323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212633 213324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void jsonObjectCompute(sqlite3_context *ctx, int isFinal){
212634 213325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
JsonString *pStr;
212635 213326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
@@ -213138,13 +213829,12 @@
213138 213829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonEachCursorReset(p);
213139 213830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( idxNum==0 ) return SQLITE_OK;
213140 213831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&p->sParse, 0, sizeof(p->sParse));
213141 213832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->sParse.nJPRef = 1;
213142 213833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->sParse.db = p->db;
213143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( jsonFuncArgMightBeBinary(argv[0]) ){
213144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->sParse.nBlob = sqlite3_value_bytes(argv[0]);
213145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->sParse.aBlob = (u8*)sqlite3_value_blob(argv[0]);
213834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( jsonArgIsJsonb(argv[0], &p->sParse) ){
213835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* We have JSONB */
213146 213836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
213147 213837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->sParse.zJson = (char*)sqlite3_value_text(argv[0]);
213148 213838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->sParse.nJson = sqlite3_value_bytes(argv[0]);
213149 213839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->sParse.zJson==0 ){
213150 213840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->i = p->iEnd = 0;
@@ -213434,10 +214124,12 @@
213434 214124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
213435 214125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include "sqlite3.h" */
213436 214126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
213437 214127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3GetToken(const unsigned char*,int*); /* In the SQLite core */
213438 214128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
214129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* #include <stddef.h> */
214130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
213439 214131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
213440 214132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If building separately, we will need some setup that is normally
213441 214133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** found in sqliteInt.h
213442 214134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
213443 214135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_AMALGAMATION)
@@ -213465,11 +214157,11 @@
213465 214157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
213466 214158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define ALWAYS(X) (X)
213467 214159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define NEVER(X) (X)
213468 214160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
213469 214161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef offsetof
213470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define offsetof(STRUCTURE,FIELD) ((size_t)((char*)&((STRUCTURE*)0)->FIELD))
214162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define offsetof(ST,M) ((size_t)((char*)&((ST*)0)->M - (char*)0))
213471 214163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
213472 214164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
213473 214165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY
213474 214166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
213475 214167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY 1
@@ -214503,10 +215195,16 @@
214503 215195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStmt = pCsr->pReadAux;
214504 215196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(pCsr, 0, sizeof(RtreeCursor));
214505 215197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->base.pVtab = (sqlite3_vtab*)pRtree;
214506 215198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->pReadAux = pStmt;
214507 215199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
215200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The following will only fail if the previous sqlite3_step() call failed,
215201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in which case the error has already been caught. This statement never
215202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** encounters an error within an sqlite3_column_xxx() function, as it
215203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** calls sqlite3_column_value(), which does not use malloc(). So it is safe
215204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to ignore the error code here. */
215205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_reset(pStmt);
214508 215206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
214509 215207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
214510 215208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
214511 215209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Rtree virtual table module xClose method.
214512 215210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -227782,11 +228480,12 @@
227782 228480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DbpageTable *pTab = (DbpageTable *)pCursor->pVtab;
227783 228481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
227784 228482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pTab->db;
227785 228483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt;
227786 228484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
227787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (void)idxStr;
228485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(idxStr);
228486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(argc);
227788 228487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
227789 228488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Default setting is no rows of result */
227790 228489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->pgno = 1;
227791 228490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->mxPgno = 0;
227792 228491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -231444,18 +232143,19 @@
231444 232143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
231445 232144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the SessionInput object passed as the only argument is a streaming
231446 232145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** object and the buffer is full, discard some data to free up space.
231447 232146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
231448 232147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void sessionDiscardData(SessionInput *pIn){
231449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pIn->xInput && pIn->iNext>=sessions_strm_chunk_size ){
231450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nMove = pIn->buf.nBuf - pIn->iNext;
232148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pIn->xInput && pIn->iCurrent>=sessions_strm_chunk_size ){
232149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nMove = pIn->buf.nBuf - pIn->iCurrent;
231451 232150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nMove>=0 );
231452 232151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nMove>0 ){
231453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memmove(pIn->buf.aBuf, &pIn->buf.aBuf[pIn->iNext], nMove);
232152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memmove(pIn->buf.aBuf, &pIn->buf.aBuf[pIn->iCurrent], nMove);
231454 232153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIn->buf.nBuf -= pIn->iNext;
231456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIn->iNext = 0;
232154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn->buf.nBuf -= pIn->iCurrent;
232155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn->iNext -= pIn->iCurrent;
232156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn->iCurrent = 0;
231457 232157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn->nData = pIn->buf.nBuf;
231458 232158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231459 232159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231460 232160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231461 232161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -231805,12 +232505,12 @@
231805 232505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sufficient either for the 'T' or 'P' byte and the varint that follows
231806 232506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it, or for the two single byte values otherwise. */
231807 232507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = sessionInputBuffer(&p->in, 2);
231808 232508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc!=SQLITE_OK ) return p->rc;
231809 232509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sessionDiscardData(&p->in);
231811 232510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->in.iCurrent = p->in.iNext;
232511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sessionDiscardData(&p->in);
231812 232512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231813 232513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the iterator is already at the end of the changeset, return DONE. */
231814 232514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->in.iNext>=p->in.nData ){
231815 232515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_DONE;
231816 232516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -233229,10 +233929,14 @@
233229 233929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *pIter, /* Changeset to apply */
233230 233930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xFilter)(
233231 233931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
233232 233932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTab /* Table name */
233233 233933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
233934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xFilterIter)(
233935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
233936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p
233937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
233234 233938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xConflict)(
233235 233939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of fifth arg to _apply() */
233236 233940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
233237 233941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
233238 233942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
@@ -233368,10 +234072,13 @@
233368 234072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233369 234073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233370 234074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is a schema mismatch on the current table, proceed to the
233371 234075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** next change. A log message has already been issued. */
233372 234076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( schemaMismatch ) continue;
234077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
234078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If this is a call to apply_v3(), invoke xFilterIter here. */
234079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( xFilterIter && 0==xFilterIter(pCtx, pIter) ) continue;
233373 234080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233374 234081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sessionApplyOneWithRetry(db, pIter, &sApply, xConflict, pCtx);
233375 234082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233376 234083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233377 234084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bPatchset = pIter->bPatchset;
@@ -233435,10 +234142,91 @@
233435 234142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->aDb[0].pSchema->schema_cookie -= 32;
233436 234143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233437 234144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(sqlite3_db_mutex(db));
233438 234145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
233439 234146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
234147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
234148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
234149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function is called by all six sqlite3changeset_apply() variants:
234150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** + sqlite3changeset_apply()
234152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** + sqlite3changeset_apply_v2()
234153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** + sqlite3changeset_apply_v3()
234154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** + sqlite3changeset_apply_strm()
234155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** + sqlite3changeset_apply_strm_v2()
234156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** + sqlite3changeset_apply_strm_v3()
234157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Arguments passed to this function are as follows:
234159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** db:
234161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Database handle to apply changeset to main database of.
234162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** nChangeset/pChangeset:
234164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** These are both passed zero for the streaming variants. For the normal
234165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** apply() functions, these are passed the size of and the buffer containing
234166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the changeset, respectively.
234167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** xInput/pIn:
234169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** These are both passed zero for the normal variants. For the streaming
234170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** apply() functions, these are passed the input callback and context
234171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pointer, respectively.
234172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** xFilter:
234174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The filter function as passed to apply() or apply_v2() (to filter by
234175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** table name), if any. This is always NULL for apply_v3() calls.
234176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** xFilterIter:
234178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The filter function as passed to apply_v3(), if any.
234179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** xConflict:
234181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The conflict handler callback (must not be NULL).
234182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pCtx:
234184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The context pointer passed to the xFilter and xConflict handler callbacks.
234185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ppRebase, pnRebase:
234187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Zero for apply(). The rebase changeset output pointers, if any, for
234188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** apply_v2() and apply_v3().
234189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
234190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** flags:
234191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Zero for apply(). The flags parameter for apply_v2() and apply_v3().
234192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
234193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int sessionChangesetApplyV23(
234194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db, /* Apply change to "main" db of this handle */
234195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nChangeset, /* Size of changeset in bytes */
234196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pChangeset, /* Changeset blob */
234197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
234198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pIn, /* First arg for xInput */
234199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xFilter)(
234200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
234201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTab /* Table name */
234202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
234203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xFilterIter)(
234204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
234205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p /* Handle describing current change */
234206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
234207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xConflict)(
234208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
234209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
234210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p /* Handle describing change and conflict */
234211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
234212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* First argument passed to xConflict */
234213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void **ppRebase, int *pnRebase,
234214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int flags
234215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
234216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *pIter; /* Iterator to skip through changeset */
234217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bInverse = !!(flags & SQLITE_CHANGESETAPPLY_INVERT);
234218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = sessionChangesetStart(
234219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &pIter, xInput, pIn, nChangeset, pChangeset, bInverse, 1
234220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
234221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_OK ){
234222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sessionChangesetApply(db, pIter,
234223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xFilter, xFilterIter, xConflict, pCtx, ppRebase, pnRebase, flags
234224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
234225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
234226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
234227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
233440 234228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233441 234229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
233442 234230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply the changeset passed via pChangeset/nChangeset to the main
233443 234231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database attached to handle "db".
233444 234232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -233457,21 +234245,43 @@
233457 234245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
233458 234246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* First argument passed to xConflict */
233459 234247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void **ppRebase, int *pnRebase,
233460 234248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags
233461 234249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
233462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_changeset_iter *pIter; /* Iterator to skip through changeset */
233463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bInv = !!(flags & SQLITE_CHANGESETAPPLY_INVERT);
233464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc = sessionChangesetStart(&pIter, 0, 0, nChangeset, pChangeset, bInv, 1);
233465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
233466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc==SQLITE_OK ){
233467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sessionChangesetApply(
233468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db, pIter, xFilter, xConflict, pCtx, ppRebase, pnRebase, flags
233469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
233470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
233471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
233472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rc;
234250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sessionChangesetApplyV23(db,
234251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nChangeset, pChangeset, 0, 0,
234252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xFilter, 0, xConflict, pCtx,
234253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ppRebase, pnRebase, flags
234254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
234255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
234256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
234257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
234258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Apply the changeset passed via pChangeset/nChangeset to the main
234259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database attached to handle "db".
234260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
234261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_API int sqlite3changeset_apply_v3(
234262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db, /* Apply change to "main" db of this handle */
234263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nChangeset, /* Size of changeset in bytes */
234264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pChangeset, /* Changeset blob */
234265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xFilter)(
234266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
234267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p /* Handle describing current change */
234268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
234269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xConflict)(
234270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
234271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
234272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p /* Handle describing change and conflict */
234273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
234274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* First argument passed to xConflict */
234275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void **ppRebase, int *pnRebase,
234276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int flags
234277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
234278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sessionChangesetApplyV23(db,
234279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nChangeset, pChangeset, 0, 0,
234280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, xFilter, xConflict, pCtx,
234281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ppRebase, pnRebase, flags
234282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
233473 234283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233474 234284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233475 234285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
233476 234286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply the changeset passed via pChangeset/nChangeset to the main database
233477 234287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** attached to handle "db". Invoke the supplied conflict handler callback
@@ -233490,20 +234300,45 @@
233490 234300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
233491 234301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
233492 234302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
233493 234303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx /* First argument passed to xConflict */
233494 234304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
233495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return sqlite3changeset_apply_v2(
233496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db, nChangeset, pChangeset, xFilter, xConflict, pCtx, 0, 0, 0
234305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sessionChangesetApplyV23(db,
234306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nChangeset, pChangeset, 0, 0,
234307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xFilter, 0, xConflict, pCtx,
234308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0
233497 234309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
233498 234310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233499 234311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233500 234312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
233501 234313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply the changeset passed via xInput/pIn to the main database
233502 234314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** attached to handle "db". Invoke the supplied conflict handler callback
233503 234315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to resolve any conflicts encountered while applying the change.
233504 234316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
234317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_API int sqlite3changeset_apply_v3_strm(
234318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db, /* Apply change to "main" db of this handle */
234319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
234320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pIn, /* First arg for xInput */
234321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xFilter)(
234322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
234323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p
234324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
234325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int(*xConflict)(
234326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* Copy of sixth arg to _apply() */
234327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
234328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_changeset_iter *p /* Handle describing change and conflict */
234329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ),
234330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pCtx, /* First argument passed to xConflict */
234331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void **ppRebase, int *pnRebase,
234332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int flags
234333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
234334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sessionChangesetApplyV23(db,
234335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, xInput, pIn,
234336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, xFilter, xConflict, pCtx,
234337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ppRebase, pnRebase, flags
234338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
234339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
233505 234340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3changeset_apply_v2_strm(
233506 234341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db, /* Apply change to "main" db of this handle */
233507 234342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
233508 234343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pIn, /* First arg for xInput */
233509 234344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xFilter)(
@@ -233517,19 +234352,15 @@
233517 234352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
233518 234353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* First argument passed to xConflict */
233519 234354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void **ppRebase, int *pnRebase,
233520 234355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags
233521 234356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
233522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_changeset_iter *pIter; /* Iterator to skip through changeset */
233523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bInverse = !!(flags & SQLITE_CHANGESETAPPLY_INVERT);
233524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc = sessionChangesetStart(&pIter, xInput, pIn, 0, 0, bInverse, 1);
233525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc==SQLITE_OK ){
233526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sessionChangesetApply(
233527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db, pIter, xFilter, xConflict, pCtx, ppRebase, pnRebase, flags
233528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
233529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
233530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rc;
234357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sessionChangesetApplyV23(db,
234358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, xInput, pIn,
234359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xFilter, 0, xConflict, pCtx,
234360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ppRebase, pnRebase, flags
234361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
233531 234362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233532 234363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3changeset_apply_strm(
233533 234364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db, /* Apply change to "main" db of this handle */
233534 234365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
233535 234366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pIn, /* First arg for xInput */
@@ -233542,12 +234373,14 @@
233542 234373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
233543 234374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
233544 234375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
233545 234376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx /* First argument passed to xConflict */
233546 234377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
233547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return sqlite3changeset_apply_v2_strm(
233548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db, xInput, pIn, xFilter, xConflict, pCtx, 0, 0, 0
234378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sessionChangesetApplyV23(db,
234379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, xInput, pIn,
234380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xFilter, 0, xConflict, pCtx,
234381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0
233549 234382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
233550 234383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233551 234384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233552 234385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
233553 234386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_changegroup handle.
@@ -234165,18 +234998,23 @@
234165 234998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
234166 234999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3changegroup_add_change(
234167 235000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changegroup *pGrp,
234168 235001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *pIter
234169 235002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
235003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = SQLITE_OK;
235004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
234170 235005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIter->in.iCurrent==pIter->in.iNext
234171 235006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pIter->rc!=SQLITE_OK
234172 235007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pIter->bInvert
234173 235008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
234174 235009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Iterator does not point to any valid entry or is an INVERT iterator. */
234175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_ERROR;
235010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_ERROR;
235011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
235012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIter->in.bNoDiscard = 1;
235013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sessionOneChangeToHash(pGrp, pIter, 0);
234176 235014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
234177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return sessionOneChangeToHash(pGrp, pIter, 0);
235015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
234178 235016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
234179 235017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
234180 235018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
234181 235019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Obtain a buffer containing a changeset representing the concatenation
234182 235020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of all changesets added to the group so far.
@@ -235470,10 +236308,11 @@
235470 236308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include "sqlite3ext.h" */
235471 236309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_EXTENSION_INIT1
235472 236310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
235473 236311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include <string.h> */
235474 236312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include <assert.h> */
236313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* #include <stddef.h> */
235475 236314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
235476 236315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_AMALGAMATION
235477 236316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
235478 236317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef unsigned char u8;
235479 236318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef unsigned int u32;
@@ -235529,11 +236368,11 @@
235529 236368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
235530 236369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
235531 236370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros needed to provide flexible arrays in a portable way
235532 236371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
235533 236372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef offsetof
235534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define offsetof(STRUCTURE,FIELD) ((size_t)((char*)&((STRUCTURE*)0)->FIELD))
236373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define offsetof(ST,M) ((size_t)((char*)&((ST*)0)->M - (char*)0))
235535 236374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
235536 236375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
235537 236376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY
235538 236377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
235539 236378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY 1
@@ -244713,10 +245552,40 @@
244713 245552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer term; /* Current term */
244714 245553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iRowid; /* Current rowid */
244715 245554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nPos; /* Number of bytes in current position list */
244716 245555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bDel; /* True if the delete flag is set */
244717 245556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
245557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
245558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int fts5IndexCorruptRowid(Fts5Index *pIdx, i64 iRowid){
245559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIdx->rc = FTS5_CORRUPT;
245560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3Fts5ConfigErrmsg(pIdx->pConfig,
245561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "fts5: corruption found reading blob %lld from table \"%s\"",
245562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iRowid, pIdx->pConfig->zName
245563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
245564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_VTAB;
245565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
245566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define FTS5_CORRUPT_ROWID(pIdx, iRowid) fts5IndexCorruptRowid(pIdx, iRowid)
245567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
245568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int fts5IndexCorruptIter(Fts5Index *pIdx, Fts5SegIter *pIter){
245569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIdx->rc = FTS5_CORRUPT;
245570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3Fts5ConfigErrmsg(pIdx->pConfig,
245571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "fts5: corruption on page %d, segment %d, table \"%s\"",
245572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIter->iLeafPgno, pIter->pSeg->iSegid, pIdx->pConfig->zName
245573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
245574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_VTAB;
245575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
245576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define FTS5_CORRUPT_ITER(pIdx, pIter) fts5IndexCorruptIter(pIdx, pIter)
245577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
245578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int fts5IndexCorruptIdx(Fts5Index *pIdx){
245579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIdx->rc = FTS5_CORRUPT;
245580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3Fts5ConfigErrmsg(pIdx->pConfig,
245581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "fts5: corruption in table \"%s\"", pIdx->pConfig->zName
245582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
245583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_VTAB;
245584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
245585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define FTS5_CORRUPT_IDX(pIdx) fts5IndexCorruptIdx(pIdx)
245586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
244718 245587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
244719 245588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
244720 245589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Array of tombstone pages. Reference counted.
244721 245590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
244722 245591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct Fts5TombstoneArray {
@@ -245003,11 +245872,11 @@
245003 245872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If either of the sqlite3_blob_open() or sqlite3_blob_reopen() calls
245004 245873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** above returned SQLITE_ERROR, return SQLITE_CORRUPT_VTAB instead.
245005 245874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** All the reasons those functions might return SQLITE_ERROR - missing
245006 245875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table, missing row, non-blob/text in block column - indicate
245007 245876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** backing store corruption. */
245008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc==SQLITE_ERROR ) rc = FTS5_CORRUPT;
245877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_ERROR ) rc = FTS5_CORRUPT_ROWID(p, iRowid);
245009 245878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
245010 245879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
245011 245880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *aOut = 0; /* Read blob data into this buffer */
245012 245881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte = sqlite3_blob_bytes(p->pReader);
245013 245882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int szData = (sizeof(Fts5Data) + 7) & ~7;
@@ -245053,11 +245922,11 @@
245053 245922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
245054 245923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static Fts5Data *fts5LeafRead(Fts5Index *p, i64 iRowid){
245055 245924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Data *pRet = fts5DataRead(p, iRowid);
245056 245925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet ){
245057 245926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet->nn<4 || pRet->szLeaf>pRet->nn ){
245058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
245927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iRowid);
245059 245928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pRet);
245060 245929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet = 0;
245061 245930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245062 245931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245063 245932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRet;
@@ -245412,12 +246281,18 @@
245412 246281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pData = fts5DataRead(p, FTS5_STRUCTURE_ROWID);
245413 246282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc==SQLITE_OK ){
245414 246283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* TODO: Do we need this if the leaf-index is appended? Probably... */
245415 246284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&pData->p[pData->nn], 0, FTS5_DATA_PADDING);
245416 246285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = fts5StructureDecode(pData->p, pData->nn, &iCookie, &pRet);
245417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->rc==SQLITE_OK && (pConfig->pgsz==0 || pConfig->iCookie!=iCookie) ){
245418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = sqlite3Fts5ConfigLoad(pConfig, iCookie);
246286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->rc==SQLITE_OK ){
246287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pConfig->pgsz==0 || pConfig->iCookie!=iCookie) ){
246288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->rc = sqlite3Fts5ConfigLoad(pConfig, iCookie);
246289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
246290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( p->rc==SQLITE_CORRUPT_VTAB ){
246291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3Fts5ConfigErrmsg(p->pConfig,
246292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "fts5: corrupt structure record for table \"%s\"", p->pConfig->zName
246293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
245419 246294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245420 246295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pData);
245421 246296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc!=SQLITE_OK ){
245422 246297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5StructureRelease(pRet);
245423 246298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet = 0;
@@ -246036,11 +246911,11 @@
246036 246911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246037 246912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ASSERT_SZLEAF_OK(pIter->pLeaf);
246038 246913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( iOff>=pIter->pLeaf->szLeaf ){
246039 246914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5SegIterNextPage(p, pIter);
246040 246915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIter->pLeaf==0 ){
246041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->rc==SQLITE_OK ) p->rc = FTS5_CORRUPT;
246916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->rc==SQLITE_OK ) FTS5_CORRUPT_ITER(p, pIter);
246042 246917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246043 246918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246044 246919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = 4;
246045 246920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a = pIter->pLeaf->p;
246046 246921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -246068,11 +246943,11 @@
246068 246943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iOff = pIter->iLeafOffset; /* Offset to read at */
246069 246944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nNew; /* Bytes of new data */
246070 246945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246071 246946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&a[iOff], nNew);
246072 246947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff+nNew>pIter->pLeaf->szLeaf || nKeep>pIter->term.n || nNew==0 ){
246073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
246948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ITER(p, pIter);
246074 246949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246075 246950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246076 246951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->term.n = nKeep;
246077 246952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendBlob(&p->rc, &pIter->term, nNew, &a[iOff]);
246078 246953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIter->term.n<=pIter->term.nSpace );
@@ -246110,13 +246985,13 @@
246110 246985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allocate a tombstone hash page array object (pIter->pTombArray) for
246111 246986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the iterator passed as the second argument. If an OOM error occurs,
246112 246987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** leave an error in the Fts5Index object.
246113 246988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
246114 246989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void fts5SegIterAllocTombstone(Fts5Index *p, Fts5SegIter *pIter){
246115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const int nTomb = pIter->pSeg->nPgTombstone;
246990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const i64 nTomb = (i64)pIter->pSeg->nPgTombstone;
246116 246991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nTomb>0 ){
246117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nByte = SZ_FTS5TOMBSTONEARRAY(nTomb+1);
246992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 nByte = SZ_FTS5TOMBSTONEARRAY(nTomb+1);
246118 246993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5TombstoneArray *pNew;
246119 246994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = (Fts5TombstoneArray*)sqlite3Fts5MallocZero(&p->rc, nByte);
246120 246995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew ){
246121 246996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nTombstone = nTomb;
246122 246997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nRef = 1;
@@ -246263,11 +247138,11 @@
246263 247138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
246264 247139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRowidOff;
246265 247140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRowidOff = fts5LeafFirstRowidOff(pNew);
246266 247141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowidOff ){
246267 247142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowidOff>=pNew->szLeaf ){
246268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
247143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ITER(p, pIter);
246269 247144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
246270 247145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->pLeaf = pNew;
246271 247146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafOffset = iRowidOff;
246272 247147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246273 247148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -246497,11 +247372,11 @@
246497 247372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iEndofDoclist = iOff;
246498 247373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bNewTerm = 1;
246499 247374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246500 247375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert_nc( iOff<pLeaf->szLeaf );
246501 247376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>pLeaf->szLeaf ){
246502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
247377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ITER(p, pIter);
246503 247378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246504 247379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246505 247380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246506 247381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246507 247382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -246605,22 +247480,24 @@
246605 247480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLast ){
246606 247481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOff;
246607 247482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pIter->pLeaf);
246608 247483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->pLeaf = pLast;
246609 247484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafPgno = pgnoLast;
246610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iOff = fts5LeafFirstRowidOff(pLast);
246611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iOff>pLast->szLeaf ){
246612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
246613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
246614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
246615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iOff += fts5GetVarint(&pLast->p[iOff], (u64*)&pIter->iRowid);
246616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIter->iLeafOffset = iOff;
246617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
246618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fts5LeafIsTermless(pLast) ){
246619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIter->iEndofDoclist = pLast->nn+1;
246620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
246621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIter->iEndofDoclist = fts5LeafFirstTermOff(pLast);
247485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->rc==SQLITE_OK ){
247486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iOff = fts5LeafFirstRowidOff(pLast);
247487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iOff>pLast->szLeaf ){
247488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ITER(p, pIter);
247489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
247490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
247491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iOff += fts5GetVarint(&pLast->p[iOff], (u64*)&pIter->iRowid);
247492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIter->iLeafOffset = iOff;
247493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
247494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fts5LeafIsTermless(pLast) ){
247495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIter->iEndofDoclist = pLast->nn+1;
247496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
247497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIter->iEndofDoclist = fts5LeafFirstTermOff(pLast);
247498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
246622 247499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246623 247500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246624 247501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246625 247502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5SegIterReverseInitPage(p, pIter);
246626 247503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -246686,11 +247563,11 @@
246686 247563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246687 247564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx = (u32)pIter->pLeaf->szLeaf;
246688 247565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx += fts5GetVarint32(&a[iPgidx], iTermOff);
246689 247566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = iTermOff;
246690 247567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>n ){
246691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
247568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ITER(p, pIter);
246692 247569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246693 247570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246694 247571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246695 247572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( 1 ){
246696 247573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -246729,11 +247606,11 @@
246729 247606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx += fts5GetVarint32(&a[iPgidx], nKeep);
246730 247607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTermOff += nKeep;
246731 247608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = iTermOff;
246732 247609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246733 247610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>=n ){
246734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
247611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ITER(p, pIter);
246735 247612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246736 247613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246737 247614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246738 247615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Read the nKeep field of the next term. */
246739 247616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5FastGetVarint32(a, iOff, nKeep);
@@ -246751,11 +247628,11 @@
246751 247628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a = pIter->pLeaf->p;
246752 247629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fts5LeafIsTermless(pIter->pLeaf)==0 ){
246753 247630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx = (u32)pIter->pLeaf->szLeaf;
246754 247631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx += fts5GetVarint32(&pIter->pLeaf->p[iPgidx], iOff);
246755 247632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff<4 || (i64)iOff>=pIter->pLeaf->szLeaf ){
246756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
247633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ITER(p, pIter);
246757 247634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246758 247635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
246759 247636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKeep = 0;
246760 247637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTermOff = iOff;
246761 247638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = (u32)pIter->pLeaf->nn;
@@ -246766,11 +247643,11 @@
246766 247643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}while( 1 );
246767 247644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246768 247645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246769 247646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
search_success:
246770 247647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (i64)iOff+nNew>n || nNew<1 ){
246771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
247648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ITER(p, pIter);
246772 247649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246773 247650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246774 247651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafOffset = iOff + nNew;
246775 247652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iTermLeafOffset = pIter->iLeafOffset;
246776 247653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iTermLeafPgno = pIter->iLeafPgno;
@@ -247231,11 +248108,11 @@
247231 248108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLeafPgno
247232 248109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
247233 248110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iLeafPgno>pIter->iLeafPgno );
247234 248111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
247235 248112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iLeafPgno>pIter->pSeg->pgnoLast ){
247236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
248113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_IDX(p);
247237 248114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
247238 248115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pIter->pNextLeaf);
247239 248116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->pNextLeaf = 0;
247240 248117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafPgno = iLeafPgno-1;
247241 248118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -247246,11 +248123,11 @@
247246 248123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = fts5LeafFirstRowidOff(pIter->pLeaf);
247247 248124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>0 ){
247248 248125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *a = pIter->pLeaf->p;
247249 248126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n = pIter->pLeaf->szLeaf;
247250 248127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff<4 || iOff>=n ){
247251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
248128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_IDX(p);
247252 248129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
247253 248130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint(&a[iOff], (u64*)&pIter->iRowid);
247254 248131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafOffset = iOff;
247255 248132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5SegIterLoadNPos(p, pIter);
247256 248133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -247725,11 +248602,11 @@
247725 248602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nRem -= nChunk;
247726 248603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pData);
247727 248604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nRem<=0 ){
247728 248605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
247729 248606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pSeg->pSeg==0 ){
247730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
248607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_IDX(p);
247731 248608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
247732 248609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
247733 248610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pgno++;
247734 248611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pData = fts5LeafRead(p, FTS5_SEGMENT_ROWID(pSeg->pSeg->iSegid, pgno));
247735 248612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pData==0 ) break;
@@ -248828,11 +249705,11 @@
248828 249705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>pData->szLeaf ){
248829 249706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This can occur if the pages that the segments occupy overlap - if
248830 249707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a single page has been assigned to more than one segment. In
248831 249708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this case a prior iteration of this loop may have corrupted the
248832 249709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** segment currently being trimmed. */
248833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
249710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iLeafRowid);
248834 249711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
248835 249712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferZero(&buf);
248836 249713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferGrow(&p->rc, &buf, pData->nn);
248837 249714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendBlob(&p->rc, &buf, sizeof(aHdr), aHdr);
248838 249715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendVarint(&p->rc, &buf, pSeg->term.n);
@@ -249295,11 +250172,11 @@
249295 250172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
249296 250173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeaf = 0;
249297 250174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( bDetailNone ){
249298 250175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
249299 250176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( iNext>=pLeaf->szLeaf || pLeaf->nn<pLeaf->szLeaf || iNext<4 ){
249300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
250177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iRowid);
249301 250178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
249302 250179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
249303 250180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nShift = iNext - 4;
249304 250181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nPg;
249305 250182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -249315,11 +250192,11 @@
249315 250192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i1 = pLeaf->szLeaf;
249316 250193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i2 = 0;
249317 250194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
249318 250195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i1 += fts5GetVarint32(&aPg[i1], iFirst);
249319 250196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iFirst<iNext ){
249320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
250197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iRowid);
249321 250198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
249322 250199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
249323 250200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aIdx = sqlite3Fts5MallocZero(&p->rc, (pLeaf->nn-pLeaf->szLeaf)+2);
249324 250201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aIdx==0 ) break;
249325 250202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i2 = sqlite3Fts5PutVarint(aIdx, iFirst-nShift);
@@ -249538,18 +250415,18 @@
249538 250415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
249539 250416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nPrefix = MIN(nPrefix, nPrefix2);
249540 250417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSuffix = (nPrefix2 + nSuffix2) - nPrefix;
249541 250418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
249542 250419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (iKeyOff+nSuffix)>iPgIdx || (iNextOff+nSuffix2)>iPgIdx ){
249543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
250420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_IDX(p);
249544 250421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
249545 250422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iKey!=1 ){
249546 250423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += sqlite3Fts5PutVarint(&aPg[iOff], nPrefix);
249547 250424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
249548 250425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += sqlite3Fts5PutVarint(&aPg[iOff], nSuffix);
249549 250426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nPrefix2>pSeg->term.n ){
249550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
250427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_IDX(p);
249551 250428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( nPrefix2>nPrefix ){
249552 250429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&aPg[iOff], &pSeg->term.p[nPrefix], nPrefix2-nPrefix);
249553 250430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += (nPrefix2-nPrefix);
249554 250431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
249555 250432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memmove(&aPg[iOff], &aPg[iNextOff], nSuffix2);
@@ -249969,11 +250846,11 @@
249969 250846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
249970 250847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pStruct->aLevel[i].nMerge<=nThis );
249971 250848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
249972 250849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
249973 250850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte += (((i64)pStruct->nLevel)+1) * sizeof(Fts5StructureLevel);
249974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( nByte==SZ_FTS5STRUCTURE(pStruct->nLevel+2) );
250851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nByte==(i64)SZ_FTS5STRUCTURE(pStruct->nLevel+2) );
249975 250852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = (Fts5Structure*)sqlite3Fts5MallocZero(&p->rc, nByte);
249976 250853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
249977 250854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew ){
249978 250855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5StructureLevel *pLvl;
249979 250856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte = nSeg * sizeof(Fts5StructureSegment);
@@ -250338,11 +251215,11 @@
250338 251215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5PrefixMergerInsertByPosition(&pHead, pSave);
250339 251216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSave = pNext;
250340 251217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250341 251218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250342 251219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pHead==0 || pHead->pNext==0 ){
250343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
251220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_IDX(p);
250344 251221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
250345 251222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250346 251223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250347 251224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* See the earlier comment in this function for an explanation of why
250348 251225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** corrupt input position lists might cause the output to consume
@@ -250375,11 +251252,11 @@
250375 251252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250376 251253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* WRITEPOSLISTSIZE */
250377 251254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert_nc( tmp.n+nTail<=nTmp );
250378 251255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( tmp.n+nTail<=nTmp+nMerge*10 );
250379 251256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tmp.n+nTail>nTmp-FTS5_DATA_ZERO_PADDING ){
250380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->rc==SQLITE_OK ) p->rc = FTS5_CORRUPT;
251257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->rc==SQLITE_OK ) FTS5_CORRUPT_IDX(p);
250381 251258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
250382 251259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250383 251260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSafeAppendVarint(&out, (tmp.n+nTail) * 2);
250384 251261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSafeAppendBlob(&out, tmp.p, tmp.n);
250385 251262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nTail>0 ){
@@ -252408,23 +253285,31 @@
252408 253285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252409 253286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252410 253287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
252411 253288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function is also purely an internal test. It does not contribute to
252412 253289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** FTS functionality, or even the integrity-check, in any way.
253290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
253291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function sets output variable (*pbFail) to true if the test fails. Or
253292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** leaves it unchanged if the test succeeds.
252413 253293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
252414 253294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void fts5TestTerm(
252415 253295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Index *p,
252416 253296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer *pPrev, /* Previous term */
252417 253297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z, int n, /* Possibly new term to test */
252418 253298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 expected,
252419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u64 *pCksum
253299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 *pCksum,
253300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pbFail
252420 253301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
252421 253302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = p->rc;
252422 253303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPrev->n==0 ){
252423 253304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSet(&rc, pPrev, n, (const u8*)z);
252424 253305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
252425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc==SQLITE_OK && (pPrev->n!=n || memcmp(pPrev->p, z, n)) ){
253306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( *pbFail==0
253307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && rc==SQLITE_OK
253308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pPrev->n!=n || memcmp(pPrev->p, z, n))
253309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (p->pHash==0 || p->pHash->nEntry==0)
253310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
252426 253311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 cksum3 = *pCksum;
252427 253312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTerm = (const char*)&pPrev->p[1]; /* term sans prefix-byte */
252428 253313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nTerm = pPrev->n-1; /* Size of zTerm in bytes */
252429 253314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iIdx = (pPrev->p[0] - FTS5_MAIN_PREFIX);
252430 253315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags = (iIdx==0 ? 0 : FTS5INDEX_QUERY_PREFIX);
@@ -252470,20 +253355,20 @@
252470 253355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252471 253356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cksum3 ^= ck1;
252472 253357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSet(&rc, pPrev, n, (const u8*)z);
252473 253358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252474 253359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && cksum3!=expected ){
252475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = FTS5_CORRUPT;
253360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pbFail = 1;
252476 253361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252477 253362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pCksum = cksum3;
252478 253363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252479 253364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = rc;
252480 253365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252481 253366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252482 253367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
252483 253368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define fts5TestDlidxReverse(x,y,z)
252484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define fts5TestTerm(u,v,w,x,y,z)
253369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define fts5TestTerm(t,u,v,w,x,y,z)
252485 253370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
252486 253371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252487 253372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
252488 253373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Check that:
252489 253374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -252504,18 +253389,21 @@
252504 253389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Now check that the iter.nEmpty leaves following the current leaf
252505 253390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (a) exist and (b) contain no terms. */
252506 253391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=iFirst; p->rc==SQLITE_OK && i<=iLast; i++){
252507 253392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Data *pLeaf = fts5DataRead(p, FTS5_SEGMENT_ROWID(pSeg->iSegid, i));
252508 253393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLeaf ){
252509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !fts5LeafIsTermless(pLeaf) ) p->rc = FTS5_CORRUPT;
252510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( i>=iNoRowid && 0!=fts5LeafFirstRowidOff(pLeaf) ) p->rc = FTS5_CORRUPT;
253394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !fts5LeafIsTermless(pLeaf)
253395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (i>=iNoRowid && 0!=fts5LeafFirstRowidOff(pLeaf))
253396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
253397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, FTS5_SEGMENT_ROWID(pSeg->iSegid, i));
253398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
252511 253399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252512 253400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
252513 253401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252514 253402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252515 253403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void fts5IntegrityCheckPgidx(Fts5Index *p, Fts5Data *pLeaf){
253404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void fts5IntegrityCheckPgidx(Fts5Index *p, i64 iRowid, Fts5Data *pLeaf){
252517 253405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iTermOff = 0;
252518 253406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii;
252519 253407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252520 253408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer buf1 = {0,0,0};
252521 253409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer buf2 = {0,0,0};
@@ -252529,33 +253417,33 @@
252529 253417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ii += fts5GetVarint32(&pLeaf->p[ii], nIncr);
252530 253418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTermOff += nIncr;
252531 253419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = iTermOff;
252532 253420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252533 253421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>=pLeaf->szLeaf ){
252534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
253422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iRowid);
252535 253423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( iTermOff==nIncr ){
252536 253424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte;
252537 253425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&pLeaf->p[iOff], nByte);
252538 253426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (iOff+nByte)>pLeaf->szLeaf ){
252539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
253427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iRowid);
252540 253428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252541 253429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSet(&p->rc, &buf1, nByte, &pLeaf->p[iOff]);
252542 253430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252543 253431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252544 253432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nKeep, nByte;
252545 253433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&pLeaf->p[iOff], nKeep);
252546 253434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&pLeaf->p[iOff], nByte);
252547 253435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nKeep>buf1.n || (iOff+nByte)>pLeaf->szLeaf ){
252548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
253436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iRowid);
252549 253437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252550 253438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
buf1.n = nKeep;
252551 253439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendBlob(&p->rc, &buf1, nByte, &pLeaf->p[iOff]);
252552 253440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252553 253441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252554 253442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc==SQLITE_OK ){
252555 253443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = fts5BufferCompare(&buf1, &buf2);
252556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( res<=0 ) p->rc = FTS5_CORRUPT;
253444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res<=0 ) FTS5_CORRUPT_ROWID(p, iRowid);
252557 253445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252558 253446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252559 253447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSet(&p->rc, &buf2, buf1.n, buf1.p);
252560 253448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252561 253449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -252612,11 +253500,11 @@
252612 253500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
252613 253501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* special case - the very first page in a segment keeps its %_idx
252614 253502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** entry even if all the terms are removed from it by secure-delete
252615 253503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** operations. */
252616 253504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
253505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iRow);
252618 253506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252619 253507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252620 253508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252621 253509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOff; /* Offset of first term on leaf */
252622 253510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRowidOff; /* Offset of first rowid on leaf */
@@ -252624,19 +253512,19 @@
252624 253512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int res; /* Comparison of term and split-key */
252625 253513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252626 253514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = fts5LeafFirstTermOff(pLeaf);
252627 253515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRowidOff = fts5LeafFirstRowidOff(pLeaf);
252628 253516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowidOff>=iOff || iOff>=pLeaf->szLeaf ){
252629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
253517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iRow);
252630 253518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252631 253519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&pLeaf->p[iOff], nTerm);
252632 253520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = fts5Memcmp(&pLeaf->p[iOff], zIdxTerm, MIN(nTerm, nIdxTerm));
252633 253521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res==0 ) res = nTerm - nIdxTerm;
252634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( res<0 ) p->rc = FTS5_CORRUPT;
253522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res<0 ) FTS5_CORRUPT_ROWID(p, iRow);
252635 253523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252636 253524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5IntegrityCheckPgidx(p, pLeaf);
253525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5IntegrityCheckPgidx(p, iRow, pLeaf);
252638 253526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252639 253527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
252640 253528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc ) break;
252641 253529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252642 253530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Now check that the iter.nEmpty leaves following the current leaf
@@ -252662,11 +253550,11 @@
252662 253550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check any rowid-less pages that occur before the current leaf. */
252663 253551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iPg=iPrevLeaf+1; iPg<fts5DlidxIterPgno(pDlidx); iPg++){
252664 253552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iKey = FTS5_SEGMENT_ROWID(iSegid, iPg);
252665 253553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeaf = fts5DataRead(p, iKey);
252666 253554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLeaf ){
252667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fts5LeafFirstRowidOff(pLeaf)!=0 ) p->rc = FTS5_CORRUPT;
253555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fts5LeafFirstRowidOff(pLeaf)!=0 ) FTS5_CORRUPT_ROWID(p, iKey);
252668 253556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
252669 253557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252670 253558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252671 253559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPrevLeaf = fts5DlidxIterPgno(pDlidx);
252672 253560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -252677,16 +253565,16 @@
252677 253565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLeaf ){
252678 253566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iRowid;
252679 253567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRowidOff = fts5LeafFirstRowidOff(pLeaf);
252680 253568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ASSERT_SZLEAF_OK(pLeaf);
252681 253569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowidOff>=pLeaf->szLeaf ){
252682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
253570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iKey);
252683 253571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( bSecureDelete==0 || iRowidOff>0 ){
252684 253572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iDlRowid = fts5DlidxIterRowid(pDlidx);
252685 253573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5GetVarint(&pLeaf->p[iRowidOff], (u64*)&iRowid);
252686 253574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowid<iDlRowid || (bSecureDelete==0 && iRowid!=iDlRowid) ){
252687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
253575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FTS5_CORRUPT_ROWID(p, iKey);
252688 253576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252689 253577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252690 253578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
252691 253579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252692 253580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -252734,10 +253622,11 @@
252734 253622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252735 253623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
252736 253624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Used by extra internal tests only run if NDEBUG is not defined */
252737 253625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 cksum3 = 0; /* Checksum based on contents of indexes */
252738 253626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer term = {0,0,0}; /* Buffer used to hold most recent term */
253627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bTestFail = 0;
252739 253628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
252740 253629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const int flags = FTS5INDEX_QUERY_NOOUTPUT;
252741 253630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252742 253631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Load the FTS index structure */
252743 253632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStruct = fts5StructureRead(p);
@@ -252776,11 +253665,11 @@
252776 253665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOff = 0; /* Offset within poslist */
252777 253666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iRowid = fts5MultiIterRowid(pIter);
252778 253667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z = (char*)fts5MultiIterTerm(pIter, &n);
252779 253668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252780 253669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If this is a new term, query for it. Update cksum3 with the results. */
252781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5TestTerm(p, &term, z, n, cksum2, &cksum3);
253670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5TestTerm(p, &term, z, n, cksum2, &cksum3, &bTestFail);
252782 253671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc ) break;
252783 253672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252784 253673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eDetail==FTS5_DETAIL_NONE ){
252785 253674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==fts5MultiIterIsEmpty(p, pIter) ){
252786 253675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cksum2 ^= sqlite3Fts5IndexEntryCksum(iRowid, 0, 0, -1, z, n);
@@ -252794,19 +253683,30 @@
252794 253683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTokOff = FTS5_POS2OFFSET(iPos);
252795 253684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cksum2 ^= sqlite3Fts5IndexEntryCksum(iRowid, iCol, iTokOff, -1, z, n);
252796 253685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252797 253686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252798 253687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5TestTerm(p, &term, 0, 0, cksum2, &cksum3);
253688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5TestTerm(p, &term, 0, 0, cksum2, &cksum3, &bTestFail);
252800 253689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252801 253690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5MultiIterFree(pIter);
252802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->rc==SQLITE_OK && bUseCksum && cksum!=cksum2 ) p->rc = FTS5_CORRUPT;
252803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
252804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5StructureRelease(pStruct);
253691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->rc==SQLITE_OK && bUseCksum && cksum!=cksum2 ){
253692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->rc = FTS5_CORRUPT;
253693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3Fts5ConfigErrmsg(p->pConfig,
253694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "fts5: checksum mismatch for table \"%s\"", p->pConfig->zName
253695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
253696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
252805 253697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
253698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* In SQLITE_DEBUG builds, expensive extra checks were run as part of
253699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the integrity-check above. If no other errors were detected, but one
253700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of these tests failed, set the result to SQLITE_CORRUPT_VTAB here. */
253701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->rc==SQLITE_OK && bTestFail ){
253702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->rc = FTS5_CORRUPT;
253703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
252806 253704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferFree(&term);
252807 253705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
253706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
253707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5StructureRelease(pStruct);
252808 253708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferFree(&poslist);
252809 253709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return fts5IndexReturn(p);
252810 253710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252811 253711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252812 253712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*************************************************************************
@@ -257213,11 +258113,11 @@
257213 258113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
257214 258114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
257215 258115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
257216 258116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
257217 258117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
257218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2025-04-15 21:59:38 d22475b81c4e26ccc50f3b5626d43b32f7a2de34e5a764539554665bdda735d5", -1, SQLITE_TRANSIENT);
258118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2025-07-15 19:00:01 9f184f8dfa5ef6d57e10376adc30e0060ceda07d283c23dfdfe3dbdd6608f839", -1, SQLITE_TRANSIENT);
257219 258119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
257220 258120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
257221 258121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
257222 258122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Implementation of fts5_locale(LOCALE, TEXT) function.
257223 258123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -257336,12 +258236,13 @@
257336 258236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
257337 258237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pzErr = sqlite3_mprintf("unable to validate the inverted index for"
257338 258238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FTS5 table %s.%s: %s",
257339 258239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSchema, zTabname, sqlite3_errstr(rc));
257340 258240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (rc&0xff)==SQLITE_CORRUPT ){
258242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_OK;
257341 258243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
257342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
257343 258244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5IndexCloseReader(pTab->p.pIndex);
257344 258245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->p.pConfig->pzErrmsg = 0;
257345 258246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
257346 258247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
257347 258248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -258028,10 +258929,11 @@
258028 258929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ctx.pStorage = p;
258029 258930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ctx.iCol = -1;
258030 258931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iCol=1; rc==SQLITE_OK && iCol<=pConfig->nCol; iCol++){
258031 258932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pConfig->abUnindexed[iCol-1]==0 ){
258032 258933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value *pVal = 0;
258934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_value *pFree = 0;
258033 258935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *pText = 0;
258034 258936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nText = 0;
258035 258937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *pLoc = 0;
258036 258938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nLoc = 0;
258037 258939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -258044,15 +258946,26 @@
258044 258946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258045 258947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
258046 258948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pConfig->bLocale && sqlite3Fts5IsLocaleValue(pConfig, pVal) ){
258047 258949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Fts5DecodeLocaleValue(pVal, &pText, &nText, &pLoc, &nLoc);
258048 258950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
258049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pText = (const char*)sqlite3_value_text(pVal);
258050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nText = sqlite3_value_bytes(pVal);
258051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pConfig->bLocale && pSeek ){
258052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLoc = (const char*)sqlite3_column_text(pSeek, iCol + pConfig->nCol);
258053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nLoc = sqlite3_column_bytes(pSeek, iCol + pConfig->nCol);
258951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_value_type(pVal)!=SQLITE_TEXT ){
258952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Make a copy of the value to work with. This is because the call
258953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to sqlite3_value_text() below forces the type of the value to
258954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLITE_TEXT, and we may need to use it again later. */
258955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pFree = pVal = sqlite3_value_dup(pVal);
258956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pVal==0 ){
258957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_NOMEM;
258958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
258959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
258960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_OK ){
258961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pText = (const char*)sqlite3_value_text(pVal);
258962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nText = sqlite3_value_bytes(pVal);
258963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pConfig->bLocale && pSeek ){
258964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLoc = (const char*)sqlite3_column_text(pSeek, iCol+pConfig->nCol);
258965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nLoc = sqlite3_column_bytes(pSeek, iCol + pConfig->nCol);
258966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
258054 258967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258055 258968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258056 258969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
258057 258970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
258058 258971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5SetLocale(pConfig, pLoc, nLoc);
@@ -258064,10 +258977,11 @@
258064 258977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && p->aTotalSize[iCol-1]<0 ){
258065 258978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = FTS5_CORRUPT;
258066 258979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258067 258980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5ClearLocale(pConfig);
258068 258981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_value_free(pFree);
258069 258983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258070 258984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258071 258985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && p->nTotalRow<1 ){
258072 258986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = FTS5_CORRUPT;
258073 258987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
258074 258988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!