@@ -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!
- ** 20abf1ec107f942e4527901685d61283c9c2 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-30 14:37:00 20abf1ec107f942e4527901685d61283c9c2fe7bcefad63dbf5c6cbf050da849"
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
@@ -12084,11 +12086,11 @@
12084 12086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Flags for sqlite3changeset_start_v2
12085 12087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12086 12088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The following flags may passed via the 4th parameter to
12087 12089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3changeset_start_v2] and [sqlite3changeset_start_v2_strm]:
12088 12090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12089 { 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>
12090 12092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Invert the changeset while iterating through it. This is equivalent to
12091 12093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** inverting a changeset using sqlite3changeset_invert() before applying it.
12092 12094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** It is an error to specify this flag with a patchset.
12093 12095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
12094 12096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CHANGESETSTART_INVERT 0x0002
@@ -12629,17 +12631,26 @@
12629 12631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply a changeset or patchset to a database. These functions attempt to
12630 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
12631 12633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the changeset passed via the second and third arguments.
12632 12634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12633 12635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The fourth argument (xFilter) passed to these functions is the "filter
12634 { 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
12635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** change in the changeset, the filter callback is invoked with
12636 { 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
12637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** passed as the sixth argument as the first. If the "filter callback"
12638 { 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.
12639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Otherwise, if the return value is non-zero or the xFilter argument to
12640 { 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.
12641 12652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12642 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
12643 12654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tests that the target database contains a compatible table. A table is
12644 12655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** considered compatible if all of the following are true:
12645 12656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -12656,15 +12667,15 @@
12656 12667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** changes associated with the table are applied. A warning message is issued
12657 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
12658 12669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** one such warning is issued for each table in the changeset.
12659 12670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12660 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
12661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to modify the table contents according to the UPDATE, INSERT or DELETE
12662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** change. If a change cannot be applied cleanly, the conflict handler
12663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** function passed as the fifth argument to sqlite3changeset_apply() may be
12664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** invoked. A description of exactly when the conflict handler is invoked for
12665 { 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.
12666 12677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
12667 12678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Unlike the xFilter argument, xConflict may not be passed NULL. The results
12668 12679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of passing anything other than a valid function pointer as the xConflict
12669 12680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument are undefined.
12670 12681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -12802,10 +12813,27 @@
12802 12813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pChangeset, /* Changeset blob */
12803 12814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xFilter)(
12804 12815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
12805 12816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTab /* Table name */
12806 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!
+ ),
12807 12835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xConflict)(
12808 12836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
12809 12837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
12810 12838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
12811 12839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
@@ -13221,10 +13249,27 @@
13221 13249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pIn, /* First arg for xInput */
13222 13250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xFilter)(
13223 13251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
13224 13252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTab /* Table name */
13225 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!
+ ),
13226 13271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xConflict)(
13227 13272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
13228 13273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
13229 13274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
13230 13275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
@@ -15174,11 +15219,11 @@
15174 15219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15175 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
15176 15221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ourselves.
15177 15222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15178 15223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef offsetof
15179 { 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))
15180 15225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
15181 15226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15182 15227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15183 15228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Work around C99 "flex-array" syntax for pre-C99 compilers, so as
15184 15229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to avoid complaints from -fsanitize=strict-bounds.
@@ -15440,12 +15485,12 @@
15440 15485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15441 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,
15442 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
15443 15488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** integer types.
15444 15489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SMXV(n) ((((i64)1)<<(sizeof(n)-1))-1)
15446 { 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)
15447 15492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15448 15493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15449 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
15450 15495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to force 8-byte alignment on 64-bit architectures.
15451 15496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -15562,10 +15607,12 @@
15562 15607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00008000 After all FROM-clause analysis
15563 15608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00010000 Beginning of DELETE/INSERT/UPDATE processing
15564 15609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00020000 Transform DISTINCT into GROUP BY
15565 15610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00040000 SELECT tree dump after all code has been generated
15566 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
15567 15614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15568 15615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15569 15616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15570 15617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros for "wheretrace"
15571 15618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -15606,10 +15653,11 @@
15606 15653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
15607 15654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00010000 Show more detail when printing WHERE terms
15608 15655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00020000 Show WHERE terms returned from whereScanNext()
15609 15656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0x00040000 Solver overview messages
15610 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
15611 15659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15612 15660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15613 15661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15614 15662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15615 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
@@ -15678,11 +15726,11 @@
15678 15726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** one parameter that destructors normally want. So we have to introduce
15679 15727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this magic value that the code knows to handle differently. Any
15680 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
15681 15729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and SQLITE_TRANSIENT.
15682 15730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
15683 { 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)
15684 15732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15685 15733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15686 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
15687 15735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not support Writable Static Data (WSD) such as global and static variables.
15688 15736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** All variables must either be on the stack or dynamically allocated from
@@ -16746,10 +16794,11 @@
16746 16794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
16747 16795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16748 16796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeInsert(BtCursor*, const BtreePayload *pPayload,
16749 16797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags, int seekResult);
16750 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);
16751 16800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor*, int *pRes);
16752 16801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor*, int flags);
16753 16802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeEof(BtCursor*);
16754 16803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor*, int flags);
16755 16804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE i64 sqlite3BtreeIntegerKey(BtCursor*);
@@ -17079,76 +17128,76 @@
17079 17128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Last 32 /* jump0 */
17080 17129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_IfSizeBetween 33 /* jump */
17081 17130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_SorterSort 34 /* jump */
17082 17131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Sort 35 /* jump */
17083 17132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Rewind 36 /* jump0 */
17084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterNext 37 /* jump */
17085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Prev 38 /* jump */
17086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Next 39 /* jump */
17087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxLE 40 /* jump, synopsis: key=r[P3@P4] */
17088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxGT 41 /* jump, synopsis: key=r[P3@P4] */
17089 { 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] */
17090 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]) */
17091 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]) */
17092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxGE 45 /* jump, synopsis: key=r[P3@P4] */
17093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetRead 46 /* jump, synopsis: r[P3]=rowset(P1) */
17094 { 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 */
17095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Program 48 /* jump0 */
17096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkIfZero 49 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
17097 { 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 */
17098 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 */
17099 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 */
17100 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] */
17101 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] */
17102 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] */
17103 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] */
17104 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] */
17105 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] */
17106 17155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_ElseEq 59 /* jump, same as TK_ESCAPE */
17107 { 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 */
17108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DecrJumpZero 61 /* jump, synopsis: if (--r[P1])==0 goto P2 */
17109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IncrVacuum 62 /* jump */
17110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VNext 63 /* jump */
17111 { 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 */
17112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_PureFunc 65 /* synopsis: r[P3]=func(r[P2@NP]) */
17113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Function 66 /* synopsis: r[P3]=func(r[P2@NP]) */
17114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Return 67
17115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_EndCoroutine 68
17116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_HaltIfNull 69 /* synopsis: if r[P3]=null halt */
17117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Halt 70
17118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Integer 71 /* synopsis: r[P2]=P1 */
17119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Int64 72 /* synopsis: r[P2]=P4 */
17120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_String 73 /* synopsis: r[P2]='P4' (len=P1) */
17121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_BeginSubrtn 74 /* synopsis: r[P2]=NULL */
17122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Null 75 /* synopsis: r[P2..P3]=NULL */
17123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SoftNull 76 /* synopsis: r[P1]=NULL */
17124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Blob 77 /* synopsis: r[P2]=P4 (len=P1) */
17125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Variable 78 /* synopsis: r[P2]=parameter(P1) */
17126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Move 79 /* synopsis: r[P2@P3]=r[P1@P3] */
17127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Copy 80 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
17128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SCopy 81 /* synopsis: r[P2]=r[P1] */
17129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IntCopy 82 /* synopsis: r[P2]=r[P1] */
17130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkCheck 83
17131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResultRow 84 /* synopsis: output=r[P1@P2] */
17132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CollSeq 85
17133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AddImm 86 /* synopsis: r[P1]=r[P1]+P2 */
17134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RealAffinity 87
17135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Cast 88 /* synopsis: affinity(r[P1]) */
17136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Permutation 89
17137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Compare 90 /* synopsis: r[P1@P3] <-> r[P2@P3] */
17138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IsTrue 91 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
17139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ZeroOrNull 92 /* synopsis: r[P2] = 0 OR NULL */
17140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Offset 93 /* synopsis: r[P3] = sqlite_offset(P1) */
17141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Column 94 /* synopsis: r[P3]=PX cursor P1 column P2 */
17142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_TypeCheck 95 /* synopsis: typecheck(r[P1@P2]) */
17143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Affinity 96 /* synopsis: affinity(r[P1@P2]) */
17144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MakeRecord 97 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
17145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Count 98 /* synopsis: r[P2]=count() */
17146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReadCookie 99
17147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SetCookie 100
17148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReopenIdx 101 /* synopsis: root=P2 iDb=P3 */
17149 { 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 */
17150 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] */
17151 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] */
17152 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] */
17153 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] */
17154 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] */
@@ -17155,87 +17204,88 @@
17155 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] */
17156 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] */
17157 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] */
17158 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] */
17159 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] */
17160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenWrite 113 /* synopsis: root=P2 iDb=P3 */
17161 { 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 */
17162 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] */
17163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenAutoindex 116 /* synopsis: nColumn=P2 */
17164 { 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 */
17165 17214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_String8 118 /* same as TK_STRING, synopsis: r[P2]='P4' */
17166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterOpen 119
17167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SequenceTest 120 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
17168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_OpenPseudo 121 /* synopsis: P3 columns in r[P2] */
17169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Close 122
17170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ColumnsUsed 123
17171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekScan 124 /* synopsis: Scan-ahead up to P1 rows */
17172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekHit 125 /* synopsis: set P2<=seekHit<=P3 */
17173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Sequence 126 /* synopsis: r[P2]=cursor[P1].ctr++ */
17174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NewRowid 127 /* synopsis: r[P2]=rowid */
17175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Insert 128 /* synopsis: intkey=r[P3] data=r[P2] */
17176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowCell 129
17177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Delete 130
17178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResetCount 131
17179 { 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 */
17180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterData 133 /* synopsis: r[P2]=data */
17181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowData 134 /* synopsis: r[P2]=data */
17182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Rowid 135 /* synopsis: r[P2]=PX rowid of P1 */
17183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_NullRow 136
17184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SeekEnd 137
17185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxInsert 138 /* synopsis: key=r[P2] */
17186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SorterInsert 139 /* synopsis: key=r[P2] */
17187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxDelete 140 /* synopsis: key=r[P2@P3] */
17188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DeferredSeek 141 /* synopsis: Move P3 to P1.rowid if needed */
17189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IdxRowid 142 /* synopsis: r[P2]=rowid */
17190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FinishSeek 143
17191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Destroy 144
17192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Clear 145
17193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ResetSorter 146
17194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CreateBtree 147 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
17195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SqlExec 148
17196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ParseSchema 149
17197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_LoadAnalysis 150
17198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropTable 151
17199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_DropIndex 152
17200 { 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
17201 17250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Real 154 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
17202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IntegrityCk 155
17203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_RowSetAdd 156 /* synopsis: rowset(P1)=r[P2] */
17204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Param 157
17205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FkCounter 158 /* synopsis: fkctr[P1]+=P2 */
17206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MemMax 159 /* synopsis: r[P1]=max(r[P1],r[P2]) */
17207 { 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) */
17208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggInverse 161 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
17209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggStep 162 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggStep1 163 /* synopsis: accum=r[P3] step(r[P2@P5]) */
17211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggValue 164 /* synopsis: r[P3]=value N=P2 */
17212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_AggFinal 165 /* synopsis: accum=r[P1] N=P2 */
17213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Expire 166
17214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CursorLock 167
17215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CursorUnlock 168
17216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_TableLock 169 /* synopsis: iDb=P1 root=P2 write=P3 */
17217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VBegin 170
17218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VCreate 171
17219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VDestroy 172
17220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VOpen 173
17221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VCheck 174
17222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VInitIn 175 /* synopsis: r[P2]=ValueList(P1,P3) */
17223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VColumn 176 /* synopsis: r[P3]=vcolumn(P2) */
17224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_VRename 177
17225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Pagecount 178
17226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_MaxPgcnt 179
17227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ClrSubtype 180 /* synopsis: r[P1].subtype = 0 */
17228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_GetSubtype 181 /* synopsis: r[P2] = r[P1].subtype */
17229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_SetSubtype 182 /* synopsis: r[P2].subtype = r[P1] */
17230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_FilterAdd 183 /* synopsis: filter(P1) += key(P3@P4) */
17231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Trace 184
17232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_CursorHint 185
17233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_ReleaseReg 186 /* synopsis: release r[P1@P2] mask P3 */
17234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Noop 187
17235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_Explain 188
17236 { 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
17237 17287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17238 17288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Properties such as "out2" or "jump" that are specified in
17239 17289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** comments following the "case" for each opcode in the vdbe.c
17240 17290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are encoded into bitvectors as follows:
17241 17291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -17250,38 +17300,38 @@
17250 17300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OPFLG_INITIALIZER {\
17251 17301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 0 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x41, 0x00,\
17252 17302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 8 */ 0x81, 0x01, 0x01, 0x81, 0x83, 0x83, 0x01, 0x01,\
17253 17303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 16 */ 0x03, 0x03, 0x01, 0x12, 0x01, 0xc9, 0xc9, 0xc9,\
17254 17304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 24 */ 0xc9, 0x01, 0x49, 0x49, 0x49, 0x49, 0xc9, 0x49,\
17255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 32 */ 0xc1, 0x01, 0x41, 0x41, 0xc1, 0x01, 0x41, 0x41,\
17256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ 0x41, 0x41, 0x41, 0x26, 0x26, 0x41, 0x23, 0x0b,\
17257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ 0x81, 0x01, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b,\
17258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 56 */ 0x0b, 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x01, 0x41,\
17259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 64 */ 0x01, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x10,\
17260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 72 */ 0x10, 0x10, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00,\
17261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 80 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02,\
17262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 88 */ 0x02, 0x00, 0x00, 0x12, 0x1e, 0x20, 0x40, 0x00,\
17263 { 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,\
17264 17314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
17265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 112 */ 0x26, 0x00, 0x40, 0x12, 0x40, 0x40, 0x10, 0x00,\
17266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 120 */ 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x10, 0x10,\
17267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x50,\
17268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 136 */ 0x00, 0x40, 0x04, 0x04, 0x00, 0x40, 0x50, 0x40,\
17269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 144 */ 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,\
17270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 152 */ 0x00, 0x00, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04,\
17271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 160 */ 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
17272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x50,\
17273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 176 */ 0x40, 0x00, 0x10, 0x10, 0x02, 0x12, 0x12, 0x00,\
17274 { 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,}
17275 17325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17276 17326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The resolve3P2Values() routine is able to run faster if it knows
17277 17327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the value of the largest JUMP opcode. The smaller the maximum
17278 17328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** JUMP opcode the better, so the mkopcodeh.tcl script that
17279 17329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** generated this include file strives to group all JUMP opcodes
17280 17330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** together near the beginning of the list.
17281 17331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
17282 { 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 */
17283 17333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17284 17334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of opcodes.h *********************************************/
17285 17335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in vdbe.h ***********************/
17286 17336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17287 17337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -17401,11 +17451,11 @@
17401 17451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE char *sqlite3VdbeExpandSql(Vdbe*, const char*);
17402 17452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
17403 17453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3MemCompare(const Mem*, const Mem*, const CollSeq*);
17404 17454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BlobCompare(const Mem*, const Mem*);
17405 17455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17406 { 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*);
17407 17457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeRecordCompare(int,const void*,UnpackedRecord*);
17408 17458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeRecordCompareWithSkip(int, const void *, UnpackedRecord *, int);
17409 17459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeAllocUnpackedRecord(KeyInfo*);
17410 17460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17411 17461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef int (*RecordCompare)(int,const void*,UnpackedRecord*);
@@ -17414,11 +17464,13 @@
17414 17464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeLinkSubProgram(Vdbe *, SubProgram *);
17415 17465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeHasSubProgram(Vdbe*);
17416 17466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17417 17467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3MemSetArrayInt64(sqlite3_value *aMem, int iIdx, i64 val);
17418 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
17419 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
17420 17472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_BYTECODE_VTAB
17421 17473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VdbeBytecodeVtabInit(sqlite3*);
17422 17474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
17423 17475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17424 17476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Use SQLITE_ENABLE_EXPLAIN_COMMENTS to enable generation of extra
@@ -18296,10 +18348,11 @@
18296 18348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_Coroutines 0x02000000 /* Co-routines for subqueries */
18297 18349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_NullUnusedCols 0x04000000 /* NULL unused columns in subqueries */
18298 18350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OnePass 0x08000000 /* Single-pass DELETE and UPDATE */
18299 18351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OrderBySubq 0x10000000 /* ORDER BY in subquery helps outer */
18300 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 */
18301 18354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AllOpts 0xffffffff /* All optimizations */
18302 18355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18303 18356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
18304 18357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros for testing whether or not optimizations are enabled or disabled.
18305 18358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -18534,11 +18587,11 @@
18534 18587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\
18535 18588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
18536 18589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \
18537 18590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{nArg, SQLITE_FUNC_BUILTIN|\
18538 18591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
18539 { 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} }
18540 18593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define LIKEFUNC(zName, nArg, arg, flags) \
18541 18594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \
18542 18595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void *)arg, 0, likeFunc, 0, 0, 0, #zName, {0} }
18543 18596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WAGGREGATE(zName, nArg, arg, nc, xStep, xFinal, xValue, xInverse, f) \
18544 18597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|f, \
@@ -18701,10 +18754,11 @@
18701 18754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_TEXT 0x42 /* 'B' */
18702 18755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_NUMERIC 0x43 /* 'C' */
18703 18756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_INTEGER 0x44 /* 'D' */
18704 18757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AFF_REAL 0x45 /* 'E' */
18705 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 */
18706 18760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18707 18761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3IsNumericAffinity(X) ((X)>=SQLITE_AFF_NUMERIC)
18708 18762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18709 18763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
18710 18764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The SQLITE_AFF_MASK values masks off the significant bits of an
@@ -19016,13 +19070,19 @@
19016 19070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19017 19071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** An instance of the following structure is passed as the first
19018 19072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument to sqlite3VdbeKeyCompare and is used to control the
19019 19073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** comparison of the two index keys.
19020 19074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Note that aSortOrder[] and aColl[] have nField+1 slots. There
19022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** are nField slots for the columns of an index then one extra slot
19023 { 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.
19024 19084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19025 19085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct KeyInfo {
19026 19086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 nRef; /* Number of references to this KeyInfo object */
19027 19087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 enc; /* Text encoding - one of the SQLITE_UTF* values */
19028 19088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 nKeyField; /* Number of key columns in the index */
@@ -19030,12 +19090,21 @@
19030 19090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db; /* The database connection */
19031 19091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *aSortFlags; /* Sort order for each column. */
19032 19092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CollSeq *aColl[FLEXARRAY]; /* Collating sequence for each term of the key */
19033 19093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
19034 19094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19035 { 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[]. */
19036 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
19037 19106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19038 19107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19039 19108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allowed bit values for entries in the KeyInfo.aSortFlags[] array.
19040 19109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19041 19110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define KEYINFO_ORDER_DESC 0x01 /* DESC sort order */
@@ -19051,23 +19120,22 @@
19051 19120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the OP_MakeRecord opcode of the VDBE and is disassembled by the
19052 19121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_Column opcode.
19053 19122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19054 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
19055 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
19056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is closed to the key described by this object. This object might hold
19057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** just a prefix of the key. The number of fields is given by
19058 { 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.
19059 19127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19060 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
19061 19129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or greater than a key in the btree, respectively. These are normally
19062 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
19063 19131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is in DESC order.
19064 19132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19065 19133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The key comparison functions actually return default_rc when they find
19066 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
19067 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
19068 { 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
19069 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
19070 19138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** find the first match.
19071 19139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19072 19140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The key comparison functions will set eqSeen to true if they ever
19073 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.
@@ -19075,12 +19143,12 @@
19075 19143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** before the first match or immediately after the last match. The
19076 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
19077 19145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** b-tree.
19078 19146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19079 19147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct UnpackedRecord {
19080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- KeyInfo *pKeyInfo; /* Collation and sort-order information */
19081 { 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 */
19082 19150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
19083 19151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z; /* Cache of aMem[0].z for vdbeRecordCompareString() */
19084 19152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 i; /* Cache of aMem[0].u.i for vdbeRecordCompareInt() */
19085 19153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} u;
19086 19154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n; /* Cache of aMem[0].n used by vdbeRecordCompareString() */
@@ -19161,14 +19229,12 @@
19161 19229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned uniqNotNull:1; /* True if UNIQUE and NOT NULL for all columns */
19162 19230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isResized:1; /* True if resizeIndexObject() has been called */
19163 19231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isCovering:1; /* True if this is a covering index */
19164 19232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned noSkipScan:1; /* Do not try to use skip-scan if true */
19165 19233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned hasStat1:1; /* aiRowLogEst values come from sqlite_stat1 */
19166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned bLowQual:1; /* sqlite_stat1 says this is a low-quality index */
19167 19234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bNoQuery:1; /* Do not use this index to optimize queries */
19168 19235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bAscKeyBug:1; /* True if the bba7b69f9849b5bf bug applies */
19169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned bIdxRowid:1; /* One or more of the index keys is the ROWID */
19170 19236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bHasVCol:1; /* Index references one or more VIRTUAL columns */
19171 19237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bHasExpr:1; /* Index contains an expression, either a literal
19172 19238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expression, or a reference to a VIRTUAL column */
19173 19239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STAT4
19174 19240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSample; /* Number of elements in aSample[] */
@@ -19252,21 +19318,21 @@
19252 19318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo {
19253 19319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 directMode; /* Direct rendering mode means take data directly
19254 19320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from source tables rather than from accumulators */
19255 19321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 useSortingIdx; /* In direct mode, reference the sorting index rather
19256 19322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** than the source table */
19257 { 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 */
19258 19324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int sortingIdx; /* Cursor number of the sorting index */
19259 19325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int sortingIdxPTab; /* Cursor number of pseudo-table */
19260 19326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iFirstReg; /* First register in range for aCol[] and aFunc[] */
19261 19327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pGroupBy; /* The group by clause */
19262 19328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_col { /* For each column used in source tables */
19263 19329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab; /* Source table */
19264 19330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pCExpr; /* The original expression */
19265 19331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTable; /* Cursor number of the source table */
19266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- i16 iColumn; /* Column number within the source table */
19267 { 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 */
19268 19334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} *aCol;
19269 19335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nColumn; /* Number of used entries in aCol[] */
19270 19336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nAccumulator; /* Number of columns that show through to the output.
19271 19337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Additional columns are used only as parameters to
19272 19338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** aggregate functions */
@@ -19726,10 +19792,11 @@
19726 19792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isSynthUsing :1; /* u3.pUsing is synthesized from NATURAL */
19727 19793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned isNestedFrom :1; /* pSelect is a SF_NestedFrom subquery */
19728 19794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned rowidUsed :1; /* The ROWID of this table is referenced */
19729 19795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned fixedSchema :1; /* Uses u4.pSchema, not u4.zDatabase */
19730 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(...) */
19731 19798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} fg;
19732 19799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCursor; /* The VDBE cursor number used to access this table */
19733 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 */
19734 19801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
19735 19802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zIndexedBy; /* Identifier from "INDEXED BY <zIndex>" clause */
@@ -20256,10 +20323,11 @@
20256 20323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 mayAbort; /* True if statement may throw an ABORT exception */
20257 20324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 hasCompound; /* Need to invoke convertCompoundSelectToSubquery() */
20258 20325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 disableLookaside; /* Number of times lookaside has been disabled */
20259 20326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 prepFlags; /* SQLITE_PREPARE_* flags */
20260 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 */
20261 20329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 mSubrtnSig; /* mini Bloom filter on available SubrtnSig.selId */
20262 20330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */
20263 20331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bReturning; /* Coding a RETURNING trigger */
20264 20332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */
20265 20333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 disableTriggers; /* True to disable triggers */
@@ -21252,10 +21320,11 @@
21252 21320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
21253 21321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
21254 21322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ShowWindow(const Window*);
21255 21323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ShowWinFunc(const Window*);
21256 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*);
21257 21326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
21258 21327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21259 21328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3SetString(char **, sqlite3*, const char*);
21260 21329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ProgressCheck(Parse*);
21261 21330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ErrorMsg(Parse*, const char*, ...);
@@ -22425,10 +22494,13 @@
22425 22494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_BITMASK_TYPE
22426 22495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"BITMASK_TYPE=" CTIMEOPT_VAL(SQLITE_BITMASK_TYPE),
22427 22496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
22428 22497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_BUG_COMPATIBLE_20160819
22429 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",
22430 22502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
22431 22503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_CASE_SENSITIVE_LIKE
22432 22504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"CASE_SENSITIVE_LIKE",
22433 22505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
22434 22506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_CHECK_PAGES
@@ -23861,11 +23933,11 @@
23861 23933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * MEM_Blob A blob, stored in Mem.z length Mem.n.
23862 23934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Incompatible with MEM_Str, MEM_Null,
23863 23935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** MEM_Int, MEM_Real, and MEM_IntReal.
23864 23936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
23865 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
23866 { 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.
23867 23939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
23868 23940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * MEM_Int Integer stored in Mem.u.i.
23869 23941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
23870 23942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * MEM_Real Real stored in Mem.u.r.
23871 23943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -24130,11 +24202,11 @@
24130 24202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem oldipk; /* Memory cell holding "old" IPK value */
24131 24203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mem *aNew; /* Array of new.* values */
24132 24204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab; /* Schema object being updated */
24133 24205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pPk; /* PK index if pTab is WITHOUT ROWID */
24134 24206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apDflt; /* Array of default values, if required */
24135 { 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 */
24136 24208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
24137 24209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24138 24210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
24139 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
24140 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
@@ -32060,10 +32132,18 @@
32060 32132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
32061 32133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
longvalue = va_arg(ap,unsigned int);
32062 32134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32063 32135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
prefix = 0;
32064 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!
+
32065 32145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( longvalue==0 ) flag_alternateform = 0;
32066 32146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( flag_zeropad && precision<width-(prefix!=0) ){
32067 32147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
precision = width-(prefix!=0);
32068 32148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32069 32149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( precision<etBUFSIZE-10-etBUFSIZE/3 ){
@@ -35011,11 +35091,11 @@
35011 35091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35012 35092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
35013 35093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
35014 35094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Write a single UTF8 character whose value is v into the
35015 35095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** buffer starting at zOut. zOut must be sized to hold at
35016 { 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
35017 35097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to encode the new character.
35018 35098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
35019 35099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3AppendOneUtf8Character(char *zOut, u32 v){
35020 35100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( v<0x00080 ){
35021 35101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOut[0] = (u8)(v & 0xff);
@@ -37691,76 +37771,76 @@
37691 37771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 32 */ "Last" OpHelp(""),
37692 37772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 33 */ "IfSizeBetween" OpHelp(""),
37693 37773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 34 */ "SorterSort" OpHelp(""),
37694 37774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 35 */ "Sort" OpHelp(""),
37695 37775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 36 */ "Rewind" OpHelp(""),
37696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 37 */ "SorterNext" OpHelp(""),
37697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 38 */ "Prev" OpHelp(""),
37698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 39 */ "Next" OpHelp(""),
37699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 40 */ "IdxLE" OpHelp("key=r[P3@P4]"),
37700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 41 */ "IdxGT" OpHelp("key=r[P3@P4]"),
37701 { 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]"),
37702 37782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 43 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
37703 37783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 44 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
37704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 45 */ "IdxGE" OpHelp("key=r[P3@P4]"),
37705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 46 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
37706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 47 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
37707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 48 */ "Program" OpHelp(""),
37708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 49 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
37709 { 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"),
37710 37790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 51 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
37711 37791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 52 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
37712 37792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 53 */ "Ne" OpHelp("IF r[P3]!=r[P1]"),
37713 37793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 54 */ "Eq" OpHelp("IF r[P3]==r[P1]"),
37714 37794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 55 */ "Gt" OpHelp("IF r[P3]>r[P1]"),
37715 37795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 56 */ "Le" OpHelp("IF r[P3]<=r[P1]"),
37716 37796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 57 */ "Lt" OpHelp("IF r[P3]<r[P1]"),
37717 37797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 58 */ "Ge" OpHelp("IF r[P3]>=r[P1]"),
37718 37798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 59 */ "ElseEq" OpHelp(""),
37719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 60 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
37720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 61 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
37721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 62 */ "IncrVacuum" OpHelp(""),
37722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 63 */ "VNext" OpHelp(""),
37723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 64 */ "Filter" OpHelp("if key(P3@P4) not in filter(P1) goto P2"),
37724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 65 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
37725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 66 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
37726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 67 */ "Return" OpHelp(""),
37727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 68 */ "EndCoroutine" OpHelp(""),
37728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 69 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
37729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 70 */ "Halt" OpHelp(""),
37730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 71 */ "Integer" OpHelp("r[P2]=P1"),
37731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 72 */ "Int64" OpHelp("r[P2]=P4"),
37732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 73 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
37733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 74 */ "BeginSubrtn" OpHelp("r[P2]=NULL"),
37734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 75 */ "Null" OpHelp("r[P2..P3]=NULL"),
37735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 76 */ "SoftNull" OpHelp("r[P1]=NULL"),
37736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 77 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
37737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 78 */ "Variable" OpHelp("r[P2]=parameter(P1)"),
37738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 79 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
37739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 80 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
37740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 81 */ "SCopy" OpHelp("r[P2]=r[P1]"),
37741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 82 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
37742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 83 */ "FkCheck" OpHelp(""),
37743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 84 */ "ResultRow" OpHelp("output=r[P1@P2]"),
37744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 85 */ "CollSeq" OpHelp(""),
37745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 86 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
37746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 87 */ "RealAffinity" OpHelp(""),
37747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 88 */ "Cast" OpHelp("affinity(r[P1])"),
37748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 89 */ "Permutation" OpHelp(""),
37749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 90 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
37750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 91 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
37751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 92 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
37752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 93 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
37753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 94 */ "Column" OpHelp("r[P3]=PX cursor P1 column P2"),
37754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 95 */ "TypeCheck" OpHelp("typecheck(r[P1@P2])"),
37755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 96 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
37756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 97 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
37757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 98 */ "Count" OpHelp("r[P2]=count()"),
37758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 99 */ "ReadCookie" OpHelp(""),
37759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 100 */ "SetCookie" OpHelp(""),
37760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 101 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
37761 { 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"),
37762 37842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 103 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
37763 37843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 104 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
37764 37844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 105 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
37765 37845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 106 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
37766 37846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 107 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
@@ -37767,87 +37847,88 @@
37767 37847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 108 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
37768 37848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 109 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
37769 37849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 110 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
37770 37850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 111 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
37771 37851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 112 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
37772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 113 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
37773 { 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"),
37774 37854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 115 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
37775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 116 */ "OpenAutoindex" OpHelp("nColumn=P2"),
37776 { 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"),
37777 37857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 118 */ "String8" OpHelp("r[P2]='P4'"),
37778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 119 */ "SorterOpen" OpHelp(""),
37779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 120 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
37780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 121 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
37781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 122 */ "Close" OpHelp(""),
37782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 123 */ "ColumnsUsed" OpHelp(""),
37783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 124 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
37784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 125 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
37785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 126 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
37786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 127 */ "NewRowid" OpHelp("r[P2]=rowid"),
37787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 128 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
37788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 129 */ "RowCell" OpHelp(""),
37789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 130 */ "Delete" OpHelp(""),
37790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 131 */ "ResetCount" OpHelp(""),
37791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 132 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
37792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 133 */ "SorterData" OpHelp("r[P2]=data"),
37793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 134 */ "RowData" OpHelp("r[P2]=data"),
37794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 135 */ "Rowid" OpHelp("r[P2]=PX rowid of P1"),
37795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 136 */ "NullRow" OpHelp(""),
37796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 137 */ "SeekEnd" OpHelp(""),
37797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 138 */ "IdxInsert" OpHelp("key=r[P2]"),
37798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 139 */ "SorterInsert" OpHelp("key=r[P2]"),
37799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 140 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
37800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 141 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
37801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 142 */ "IdxRowid" OpHelp("r[P2]=rowid"),
37802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 143 */ "FinishSeek" OpHelp(""),
37803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 144 */ "Destroy" OpHelp(""),
37804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 145 */ "Clear" OpHelp(""),
37805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 146 */ "ResetSorter" OpHelp(""),
37806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 147 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
37807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 148 */ "SqlExec" OpHelp(""),
37808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 149 */ "ParseSchema" OpHelp(""),
37809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 150 */ "LoadAnalysis" OpHelp(""),
37810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 151 */ "DropTable" OpHelp(""),
37811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 152 */ "DropIndex" OpHelp(""),
37812 { 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(""),
37813 37893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 154 */ "Real" OpHelp("r[P2]=P4"),
37814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 155 */ "IntegrityCk" OpHelp(""),
37815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 156 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
37816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 157 */ "Param" OpHelp(""),
37817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 158 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
37818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 159 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
37819 { 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)"),
37820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 161 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
37821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 162 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
37822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 163 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
37823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 164 */ "AggValue" OpHelp("r[P3]=value N=P2"),
37824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 165 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
37825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 166 */ "Expire" OpHelp(""),
37826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 167 */ "CursorLock" OpHelp(""),
37827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 168 */ "CursorUnlock" OpHelp(""),
37828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 169 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
37829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 170 */ "VBegin" OpHelp(""),
37830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 171 */ "VCreate" OpHelp(""),
37831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 172 */ "VDestroy" OpHelp(""),
37832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 173 */ "VOpen" OpHelp(""),
37833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 174 */ "VCheck" OpHelp(""),
37834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 175 */ "VInitIn" OpHelp("r[P2]=ValueList(P1,P3)"),
37835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 176 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
37836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 177 */ "VRename" OpHelp(""),
37837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 178 */ "Pagecount" OpHelp(""),
37838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 179 */ "MaxPgcnt" OpHelp(""),
37839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 180 */ "ClrSubtype" OpHelp("r[P1].subtype = 0"),
37840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 181 */ "GetSubtype" OpHelp("r[P2] = r[P1].subtype"),
37841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 182 */ "SetSubtype" OpHelp("r[P2].subtype = r[P1]"),
37842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 183 */ "FilterAdd" OpHelp("filter(P1) += key(P3@P4)"),
37843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 184 */ "Trace" OpHelp(""),
37844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 185 */ "CursorHint" OpHelp(""),
37845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 186 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
37846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 187 */ "Noop" OpHelp(""),
37847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 188 */ "Explain" OpHelp(""),
37848 { 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(""),
37849 37930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
37850 37931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return azName[i];
37851 37932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37852 37933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
37853 37934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -43870,25 +43951,24 @@
43870 43951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pShmNode->hShm<0 || pDbFd->pInode->bProcessLock==0 );
43871 43952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
43872 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
43873 43954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the following list than the lock being obtained are already held:
43874 43955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
43875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 1. Checkpointer lock (ofst==1).
43876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 2. Write lock (ofst==0).
43877 { 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).
43878 43960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
43879 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
43880 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
43881 43963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** held.
43882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
43883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** It is not permitted to block on the RECOVER lock.
43884 43964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
43885 43965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_SETLK_TIMEOUT) && defined(SQLITE_DEBUG)
43886 43966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
43887 43967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 lockMask = (p->exclMask|p->sharedMask);
43888 43968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (flags & SQLITE_SHM_UNLOCK) || pDbFd->iBusyTimeout==0 || (
43889 { 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)
43890 43970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst!=1 || lockMask==0 || lockMask==2)
43891 43971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst!=0 || lockMask<3)
43892 43972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst<3 || lockMask<(1<<ofst))
43893 43973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
));
43894 43974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -49845,11 +49925,15 @@
49845 49925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DWORD nDelay = (nMs==0 ? INFINITE : nMs);
49846 49926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DWORD res = osWaitForSingleObject(ovlp.hEvent, nDelay);
49847 49927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res==WAIT_OBJECT_0 ){
49848 49928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ret = TRUE;
49849 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
49850 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
49851 49935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
49852 49936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Some other error has occurred */
49853 49937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_IOERR_LOCK;
49854 49938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
49855 49939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -51331,17 +51415,17 @@
51331 51415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nChar;
51332 51416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LPWSTR zWideFilename;
51333 51417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51334 51418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( osCygwin_conv_path && !(winIsDriveLetterAndColon(zFilename)
51335 51419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& winIsDirSep(zFilename[2])) ){
51336 { 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;
51337 51421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int convertflag = CCP_POSIX_TO_WIN_W;
51338 51422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !strchr(zFilename, '/') ) convertflag |= CCP_RELATIVE;
51339 { 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,
51340 51424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFilename, 0, 0);
51341 51425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nByte>0 ){
51342 { 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);
51343 51427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if ( zConverted==0 ){
51344 51428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zConverted;
51345 51429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
51346 51430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zWideFilename = zConverted;
51347 51431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Filenames should be prefixed, except when converted
@@ -51656,25 +51740,24 @@
51656 51740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( n==1 || (flags & SQLITE_SHM_EXCLUSIVE)!=0 );
51657 51741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51658 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
51659 51743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the following list than the lock being obtained are already held:
51660 51744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
51661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 1. Checkpointer lock (ofst==1).
51662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 2. Write lock (ofst==0).
51663 { 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).
51664 51749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
51665 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
51666 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
51667 51752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** held.
51668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
51669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** It is not permitted to block on the RECOVER lock.
51670 51753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
51671 51754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_SETLK_TIMEOUT) && defined(SQLITE_DEBUG)
51672 51755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
51673 51756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 lockMask = (p->exclMask|p->sharedMask);
51674 51757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (flags & SQLITE_SHM_UNLOCK) || pDbFd->iBusyTimeout==0 || (
51675 { 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)
51676 51759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst!=1 || lockMask==0 || lockMask==2)
51677 51760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst!=0 || lockMask<3)
51678 51761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (ofst<3 || lockMask<(1<<ofst))
51679 51762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
));
51680 51763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -52220,31 +52303,10 @@
52220 52303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
52221 52304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This division contains the implementation of methods on the
52222 52305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_vfs object.
52223 52306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
52224 52307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
52225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0 /* No longer necessary */
52226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
52227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Convert a filename from whatever the underlying operating system
52228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** supports for filenames into UTF-8. Space to hold the result is
52229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** obtained from malloc and must be freed by the calling function.
52230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
52231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static char *winConvertToUtf8Filename(const void *zFilename){
52232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zConverted = 0;
52233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( osIsNT() ){
52234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted = winUnicodeToUtf8(zFilename);
52235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_WIN32_HAS_ANSI
52237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- else{
52238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted = winMbcsToUtf8(zFilename, osAreFileApisANSI());
52239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
52241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* caller will handle out of memory */
52242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return zConverted;
52243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
52245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
52246 52308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
52247 52309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function returns non-zero if the specified UTF-8 string buffer
52248 52310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ends with a directory separator character or one was successfully
52249 52311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** added to it.
52250 52312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -52380,46 +52442,10 @@
52380 52442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(nMax, zBuf, "%s", zDir);
52381 52443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zConverted);
52382 52444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
52383 52445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52384 52446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zConverted);
52385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0 /* No longer necessary */
52386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
52387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted = sqlite3MallocZero( nMax+1 );
52388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !zConverted ){
52389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zBuf);
52390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_NOMEM\n"));
52391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_IOERR_NOMEM_BKPT;
52392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( osCygwin_conv_path(
52394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CCP_POSIX_TO_WIN_W, zDir,
52395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted, nMax+1)<0 ){
52396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zConverted);
52397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zBuf);
52398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_CONVPATH\n"));
52399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return winLogError(SQLITE_IOERR_CONVPATH, (DWORD)errno,
52400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "winGetTempname2", zDir);
52401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( winIsDir(zConverted) ){
52403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* At this point, we know the candidate directory exists and should
52404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be used. However, we may need to convert the string containing
52405 { 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).
52406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
52407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zUtf8 = winConvertToUtf8Filename(zConverted);
52408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !zUtf8 ){
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!
- sqlite3_free(zBuf);
52411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_NOMEM\n"));
52412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_IOERR_NOMEM_BKPT;
52413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(nMax, zBuf, "%s", zUtf8);
52415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zUtf8);
52416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zConverted);
52417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
52418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
52419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zConverted);
52420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif /* No longer necessary */
52421 52447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52422 52448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52423 52449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
52424 52450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
52425 52451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -53314,38 +53340,10 @@
53314 53340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
winSimplifyName(zFull);
53315 53341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
53316 53342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
53317 53343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
53318 53344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* __CYGWIN__ */
53319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0 /* This doesn't work correctly at all! See:
53320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <https://marc.info/?l=sqlite-users&m=139299149416314&w=2>
53321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
53322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SimulateIOError( return SQLITE_ERROR );
53323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- UNUSED_PARAMETER(nFull);
53324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( nFull>=pVfs->mxPathname );
53325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zOut = sqlite3MallocZero( pVfs->mxPathname+1 );
53326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !zOut ){
53327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_IOERR_NOMEM_BKPT;
53328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( osCygwin_conv_path(
53330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CCP_POSIX_TO_WIN_W,
53331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zRelative, zOut, pVfs->mxPathname+1)<0 ){
53332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zOut);
53333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return winLogError(SQLITE_CANTOPEN_CONVPATH, (DWORD)errno,
53334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "winFullPathname2", zRelative);
53335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
53336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zUtf8 = winConvertToUtf8Filename(zOut);
53337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !zUtf8 ){
53338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zOut);
53339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_IOERR_NOMEM_BKPT;
53340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(MIN(nFull, pVfs->mxPathname), zFull, "%s", zUtf8);
53342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zUtf8);
53343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zOut);
53344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_OK;
53346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
53347 53345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
53348 53346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if (SQLITE_OS_WINCE || SQLITE_OS_WINRT) && defined(_WIN32)
53349 53347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SimulateIOError( return SQLITE_ERROR );
53350 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. */
53351 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. */
@@ -53487,31 +53485,12 @@
53487 53485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Interfaces for opening a shared library, finding entry points
53488 53486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** within the shared library, and closing the shared library.
53489 53487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
53490 53488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
53491 53489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HANDLE h;
53492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0 /* This doesn't work correctly at all! See:
53493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <https://marc.info/?l=sqlite-users&m=139299149416314&w=2>
53494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
53495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nFull = pVfs->mxPathname+1;
53496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zFull = sqlite3MallocZero( nFull );
53497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void *zConverted = 0;
53498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zFull==0 ){
53499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
53500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
53501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( winFullPathname(pVfs, zFilename, nFull, zFull)!=SQLITE_OK ){
53503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zFull);
53504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
53505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
53506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
53507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zConverted = winConvertFromUtf8Filename(zFull);
53508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(zFull);
53509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
53510 53490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *zConverted = winConvertFromUtf8Filename(zFilename);
53511 53491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(pVfs);
53512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
53513 53492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zConverted==0 ){
53514 53493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
53515 53494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
53516 53495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
53517 53496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( osIsNT() ){
@@ -54953,10 +54932,11 @@
54953 54932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BITVEC_TELEM aBitmap[BITVEC_NELEM]; /* Bitmap representation */
54954 54933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 aHash[BITVEC_NINT]; /* Hash table representation */
54955 54934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitvec *apSub[BITVEC_NPTR]; /* Recursive representation */
54956 54935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} u;
54957 54936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
54937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
54958 54938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
54959 54939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
54960 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,
54961 54941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** inclusive. Return a pointer to the new object. Return NULL if
54962 54942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** malloc fails.
@@ -55063,11 +55043,13 @@
55063 55043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aiValues==0 ){
55064 55044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM_BKPT;
55065 55045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
55066 55046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(aiValues, p->u.aHash, sizeof(p->u.aHash));
55067 55047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(p->u.apSub, 0, sizeof(p->u.apSub));
55068 { 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;
55069 55051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BitvecSet(p, i);
55070 55052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<BITVEC_NINT; j++){
55071 55053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aiValues[j] ) rc |= sqlite3BitvecSet(p, aiValues[j]);
55072 55054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55073 55055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StackFree(0, aiValues);
@@ -55139,10 +55121,56 @@
55139 55121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** was created.
55140 55122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55141 55123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE u32 sqlite3BitvecSize(Bitvec *p){
55142 55124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p->iSize;
55143 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
55144 55172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55145 55173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_UNTESTABLE
55146 55174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55147 55175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Let V[] be an array of unsigned characters sufficient to hold
55148 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.
@@ -55150,40 +55178,48 @@
55150 55178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** individual bits within V.
55151 55179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55152 55180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SETBIT(V,I) V[I>>3] |= (1<<(I&7))
55153 55181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define CLEARBIT(V,I) V[I>>3] &= ~(BITVEC_TELEM)(1<<(I&7))
55154 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!
+
55155 55184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55156 55185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
55157 55186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine runs an extensive test of the Bitvec code.
55158 55187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55159 55188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The input is an array of integers that acts as a program
55160 55189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to test the Bitvec. The integers are opcodes followed
55161 55190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by 0, 1, or 3 operands, depending on the opcode. Another
55162 55191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** opcode follows immediately after the last operand.
55163 55192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55164 { 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
55165 55194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "halt" opcode and causes the test to end.
55166 55195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55167 55196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0 Halt and return the number of errors
55168 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
55169 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
55170 55199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 3 N Set N randomly chosen bits
55171 55200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 4 N Clear N randomly chosen bits
55172 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
55173 55204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55174 55205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The opcodes 1 through 4 perform set and clear operations are performed
55175 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.
55176 55207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Opcode 5 works on the linear array only, not on the Bitvec.
55177 55208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Opcode 5 is used to deliberately induce a fault in order to
55178 { 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.
55179 55212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55180 55213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** At the conclusion of the test the linear array is compared
55181 55214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** against the Bitvec object. If there are any differences,
55182 55215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an error is returned. If they are the same, zero is returned.
55183 55216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
55184 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.
55185 55221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55186 55222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BitvecBuiltinTest(int sz, int *aOp){
55187 55223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitvec *pBitvec = 0;
55188 55224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned char *pV = 0;
55189 55225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = -1;
@@ -55190,22 +55226,45 @@
55190 55226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, nx, pc, op;
55191 55227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pTmpSpace;
55192 55228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55193 55229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Allocate the Bitvec to be tested and a linear array of
55194 55230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** bits to act as the reference */
55195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pBitvec = sqlite3BitvecCreate( sz );
55196 { 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!
+ }
55197 55238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTmpSpace = sqlite3_malloc64(BITVEC_SZ);
55198 { 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;
55199 55240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55200 55241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* NULL pBitvec tests */
55201 55242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BitvecSet(0, 1);
55202 55243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BitvecClear(0, 1, pTmpSpace);
55203 55244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55204 55245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Run the program */
55205 55246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc = i = 0;
55206 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!
+ }
55207 55266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( op ){
55208 55267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 1:
55209 55268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 2:
55210 55269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 5: {
55211 55270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nx = 4;
@@ -55223,33 +55282,37 @@
55223 55282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55224 55283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (--aOp[pc+1]) > 0 ) nx = 0;
55225 55284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pc += nx;
55226 55285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i = (i & 0x7fffffff)%sz;
55227 55286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (op & 1)!=0 ){
55228 { 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));
55229 55288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op!=5 ){
55230 55289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3BitvecSet(pBitvec, i+1) ) goto bitvec_end;
55231 55290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55232 55291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
55233 { 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));
55234 55293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BitvecClear(pBitvec, i+1, pTmpSpace);
55235 55294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55236 55295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55237 55296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55238 55297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Test to make sure the linear array exactly matches the
55239 55298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Bitvec object. Start with the assumption that they do
55240 55299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** match (rc==0). Change rc to non-zero if a discrepancy
55241 55300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is found.
55242 55301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
55243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3BitvecTest(0,0) + sqlite3BitvecTest(pBitvec, sz+1)
55244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- + sqlite3BitvecTest(pBitvec, 0)
55245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- + (sqlite3BitvecSize(pBitvec) - sz);
55246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=1; i<=sz; i++){
55247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (TESTBIT(pV,i))!=sqlite3BitvecTest(pBitvec,i) ){
55248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = i;
55249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
55250 { 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;
55251 55314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
55252 55315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55253 55316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Free allocated structure */
55254 55317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bitvec_end:
55255 55318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(pTmpSpace);
@@ -58849,10 +58912,13 @@
58849 58912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *pTmpSpace; /* Pager.pageSize bytes of space for tmp use */
58850 58913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PCache *pPCache; /* Pointer to page cache object */
58851 58914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WAL
58852 58915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Wal *pWal; /* Write-ahead log used by "journal_mode=wal" */
58853 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;
58854 58920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
58855 58921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
58856 58922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
58857 58923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
58858 58924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Indexes for use with Pager.aStat[]. The Pager.aStat[] array contains
@@ -65731,10 +65797,15 @@
65731 65797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
65732 65798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3WalOpen(pPager->pVfs,
65733 65799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPager->fd, pPager->zWal, pPager->exclusiveMode,
65734 65800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPager->journalSizeLimit, &pPager->pWal
65735 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
65736 65807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
65737 65808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pagerFixMaplimit(pPager);
65738 65809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
65739 65810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
65740 65811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -65850,10 +65921,11 @@
65850 65921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
65851 65922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set the database handle used by the wal layer to determine if
65852 65923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** blocking locks are required.
65853 65924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
65854 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;
65855 65927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pagerUseWal(pPager) ){
65856 65928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalDb(pPager->pWal, db);
65857 65929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
65858 65930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
65859 65931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -69023,11 +69095,10 @@
69023 69095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK );
69024 69096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWal->bShmUnreliable==0 ){
69025 69097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = walIndexReadHdr(pWal, pChanged);
69026 69098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69027 69099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_SETLK_TIMEOUT
69028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- walDisableBlocking(pWal);
69029 69100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_BUSY_TIMEOUT ){
69030 69101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_BUSY;
69031 69102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pCnt |= WAL_RETRY_BLOCKED_MASK;
69032 69103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69033 69104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -69038,10 +69109,11 @@
69038 69109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** which might cause WAL_RETRY to be returned even if BUSY_RECOVERY
69039 69110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** would be technically correct. But the race is benign since with
69040 69111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WAL_RETRY this routine will be called again and will probably be
69041 69112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** right on the second iteration.
69042 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);
69043 69115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWal->apWiData[0]==0 ){
69044 69116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This branch is taken when the xShmMap() method returns SQLITE_BUSY.
69045 69117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** We assume this is a transient condition, so return WAL_RETRY. The
69046 69118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** xShmMap() implementation used by the default unix and win32 VFS
69047 69119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** modules may return SQLITE_BUSY due to a race condition in the
@@ -69054,10 +69126,11 @@
69054 69126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = WAL_RETRY;
69055 69127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( rc==SQLITE_BUSY ){
69056 69128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_BUSY_RECOVERY;
69057 69129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69058 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);
69059 69132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
69060 69133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
69061 69134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69062 69135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else if( pWal->bShmUnreliable ){
69063 69136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return walBeginShmUnreliable(pWal, pChanged);
@@ -69741,10 +69814,11 @@
69741 69814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = xUndo(pUndoCtx, walFramePgno(pWal, iFrame));
69742 69815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69743 69816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iMax!=pWal->hdr.mxFrame ) walCleanupHash(pWal);
69744 69817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69745 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;
69746 69820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69747 69821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
69748 69822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69749 69823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69750 69824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -69788,10 +69862,13 @@
69788 69862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWal->hdr.aFrameCksum[1] = aWalData[2];
69789 69863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SEH_TRY {
69790 69864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
walCleanupHash(pWal);
69791 69865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69792 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!
+ }
69793 69870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69794 69871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69795 69872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
69796 69873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
69797 69874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -72503,11 +72580,11 @@
72503 72580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pKey ){
72504 72581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
KeyInfo *pKeyInfo = pCur->pKeyInfo;
72505 72582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nKey==(i64)(int)nKey );
72506 72583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey = sqlite3VdbeAllocUnpackedRecord(pKeyInfo);
72507 72584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdxKey==0 ) return SQLITE_NOMEM_BKPT;
72508 { 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);
72509 72586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdxKey->nField==0 || pIdxKey->nField>pKeyInfo->nAllField ){
72510 72587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_CORRUPT_BKPT;
72511 72588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
72512 72589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeIndexMoveto(pCur, pIdxKey, pRes);
72513 72590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -73560,14 +73637,14 @@
73560 73637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *pTmp; /* Temporary ptr into data[] */
73561 73638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73562 73639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->pBt!=0 );
73563 73640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
73564 73641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( CORRUPT_DB || iStart>=pPage->hdrOffset+6+pPage->childPtrSize );
73565 { 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 );
73566 73643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
73567 73644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iSize>=4 ); /* Minimum cell size is 4 */
73568 { 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 );
73569 73646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
73570 73647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The list of freeblocks must be in ascending order. Find the
73571 73648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** spot on the list where iStart should be inserted.
73572 73649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
73573 73650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hdr = pPage->hdrOffset;
@@ -74487,10 +74564,11 @@
74487 74564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
removed = 1;
74488 74565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74489 74566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(pMainMtx);
74490 74567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return removed;
74491 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 );
74492 74570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
74493 74571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
74494 74572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74495 74573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
74496 74574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -74704,10 +74782,14 @@
74704 74782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtShared *pBt = p->pBt;
74705 74783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nReserve>=0 && nReserve<=255 );
74706 74784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(p);
74707 74785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBt->nReserveWanted = (u8)nReserve;
74708 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!
+ }
74709 74791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nReserve<x ) nReserve = x;
74710 74792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pBt->btsFlags & BTS_PAGESIZE_FIXED ){
74711 74793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(p);
74712 74794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_READONLY;
74713 74795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -75328,10 +75410,17 @@
75328 75410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75329 75411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
75330 75412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)sqlite3PagerWalWriteLock(pPager, 0);
75331 75413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unlockBtreeIfUnused(pBt);
75332 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
75333 75422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}while( (rc&0xFF)==SQLITE_BUSY && pBt->inTransaction==TRANS_NONE &&
75334 75423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
btreeInvokeBusyHandler(pBt) );
75335 75424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3PagerWalDb(pPager, 0);
75336 75425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_SETLK_TIMEOUT
75337 75426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_BUSY_TIMEOUT ) rc = SQLITE_BUSY;
@@ -77285,10 +77374,34 @@
77285 77374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = 1;
77286 77375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_OK;
77287 77376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77288 77377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
77289 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!
+ }
77290 77403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77291 77404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
77292 77405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The cursors is CURSOR_VALID and has BTCF_AtLast set. Verify that
77293 77406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this flags are true for a consistent database.
77294 77407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -77505,12 +77618,12 @@
77505 77618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pCur->curFlags & BTCF_ValidOvfl)==0 );
77506 77619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
77507 77620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77508 77621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77509 77622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
77510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Compare the "idx"-th cell on the page the cursor pCur is currently
77511 { 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
77512 77625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** zero if the cell is less than or equal pIdxKey. Return positive
77513 77626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if unknown.
77514 77627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
77515 77628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return value negative: Cell at pCur[idx] less than pIdxKey
77516 77629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -77521,16 +77634,15 @@
77521 77634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
77522 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
77523 77636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a positive value as that will cause the optimization to be skipped.
77524 77637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
77525 77638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int indexCellCompare(
77526 { 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,
77527 77640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idx,
77528 77641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *pIdxKey,
77529 77642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RecordCompare xRecordCompare
77530 77643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
77531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- MemPage *pPage = pCur->pPage;
77532 77644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int c;
77533 77645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCell; /* Size of the pCell cell in bytes */
77534 77646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *pCell = findCellPastPtr(pPage, idx);
77535 77647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77536 77648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCell = pCell[0];
@@ -77635,18 +77747,18 @@
77635 77747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pCur->pPage->leaf
77636 77748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& cursorOnLastPage(pCur)
77637 77749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
77638 77750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int c;
77639 77751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->ix==pCur->pPage->nCell-1
77640 { 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
77641 77753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pIdxKey->errCode==SQLITE_OK
77642 77754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
77643 77755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = c;
77644 77756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK; /* Cursor already pointing at the correct spot */
77645 77757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77646 77758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->iPage>0
77647 { 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
77648 77760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pIdxKey->errCode==SQLITE_OK
77649 77761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
77650 77762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->curFlags &= ~(BTCF_ValidOvfl|BTCF_AtLast);
77651 77763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pCur->pPage->isInit ){
77652 77764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
@@ -77859,11 +77971,11 @@
77859 77971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->eState!=CURSOR_VALID ) return 0;
77860 77972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pCur->pPage->leaf==0) ) return -1;
77861 77973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77862 77974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pCur->pPage->nCell;
77863 77975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pCur->iPage; i++){
77864 { 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;
77865 77977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77866 77978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return n;
77867 77979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
77868 77980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
77869 77981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -80316,11 +80428,16 @@
80316 80428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80317 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
80318 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
80319 80431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** originally in the same field of the right-most old sibling page. */
80320 80432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pageFlags & PTF_LEAF)==0 && nOld!=nNew ){
80321 { 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!
+ }
80322 80439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&apNew[nNew-1]->aData[8], &pOld->aData[8], 4);
80323 80440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80324 80441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80325 80442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make any required updates to pointer map entries associated with
80326 80443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cells stored on sibling pages following the balance operation. Pointer
@@ -82948,10 +83065,11 @@
82948 83065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** btree as the argument handle holds an exclusive lock on the
82949 83066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite_schema table. Otherwise SQLITE_OK.
82950 83067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
82951 83068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreeSchemaLocked(Btree *p){
82952 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 */
82953 83071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(p->db->mutex) );
82954 83072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(p);
82955 83073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = querySharedCacheTableLock(p, SCHEMA_ROOT, READ_LOCK);
82956 83074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK || rc==SQLITE_LOCKED_SHAREDCACHE );
82957 83075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(p);
@@ -87272,10 +87390,13 @@
87272 87390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** into register iDest, then add the OPFLAG_TYPEOFARG flag to that
87273 87391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** opcode.
87274 87392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
87275 87393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeTypeofColumn(Vdbe *p, int iDest){
87276 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
87277 87398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p3==iDest && pOp->opcode==OP_Column ){
87278 87399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOp->p5 |= OPFLAG_TYPEOFARG;
87279 87400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87280 87401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
87281 87402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -90165,34 +90286,26 @@
90165 90286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90166 90287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90167 90288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
90168 90289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90169 90290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
90170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This routine is used to allocate sufficient space for an UnpackedRecord
90171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** structure large enough to be used with sqlite3VdbeRecordUnpack() if
90172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the first argument is a pointer to KeyInfo structure pKeyInfo.
90173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
90174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The space is either allocated using sqlite3DbMallocRaw() or from within
90175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the unaligned buffer passed via the second and third arguments (presumably
90176 { 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
90177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be eventually freed by the caller using sqlite3DbFree(). Or, if the
90178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** allocation comes from the pSpace/szSpace buffer, *ppFree is set to NULL
90179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** before returning.
90180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
90181 { 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.
90182 90296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
90183 90297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeAllocUnpackedRecord(
90184 90298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
KeyInfo *pKeyInfo /* Description of the record */
90185 90299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
90186 90300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *p; /* Unpacked record to return */
90187 { 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 */
90188 90302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sizeof(UnpackedRecord) + sizeof(Mem)*65536 < 0x7fffffff );
90189 90303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte = ROUND8P(sizeof(UnpackedRecord)) + sizeof(Mem)*(pKeyInfo->nKeyField+1);
90190 90304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = (UnpackedRecord *)sqlite3DbMallocRaw(pKeyInfo->db, nByte);
90191 90305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !p ) return 0;
90192 90306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->aMem = (Mem*)&((char*)p)[ROUND8P(sizeof(UnpackedRecord))];
90193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pKeyInfo->aSortFlags!=0 );
90194 90307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pKeyInfo = pKeyInfo;
90195 90308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nField = pKeyInfo->nKeyField + 1;
90196 90309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p;
90197 90310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90198 90311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -90200,11 +90313,10 @@
90200 90313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Given the nKey-byte encoding of a record in pKey[], populate the
90201 90314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** UnpackedRecord structure indicated by the fourth argument with the
90202 90315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contents of the decoded record.
90203 90316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
90204 90317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(
90205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- KeyInfo *pKeyInfo, /* Information about the record format */
90206 90318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nKey, /* Size of the binary record */
90207 90319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey, /* The binary record */
90208 90320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *p /* Populate this structure before returning. */
90209 90321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
90210 90322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned char *aKey = (const unsigned char *)pKey;
@@ -90211,10 +90323,11 @@
90211 90323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 d;
90212 90324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 idx; /* Offset in aKey[] to read from */
90213 90325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 u; /* Unsigned loop counter */
90214 90326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 szHdr;
90215 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;
90216 90329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
90217 90330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->default_rc = 0;
90218 90331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
90219 90332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idx = getVarint32(aKey, szHdr);
90220 90333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
d = szHdr;
@@ -90238,10 +90351,12 @@
90238 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
90239 90352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** uninitialized memory. Overwrite its value with NULL, to prevent
90240 90353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** warnings from MSAN. */
90241 90354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetNull(pMem-1);
90242 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 );
90243 90358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( u<=pKeyInfo->nKeyField + 1 );
90244 90359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nField = u;
90245 90360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90246 90361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
90247 90362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
@@ -91097,10 +91212,11 @@
91097 91212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is an integer.
91098 91213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
91099 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
91100 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
91101 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 );
91102 91218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pKeyInfo->nAllField<=13 ){
91103 91219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags = p->aMem[0].flags;
91104 91220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pKeyInfo->aSortFlags[0] ){
91105 91221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pKeyInfo->aSortFlags[0] & KEYINFO_ORDER_BIGNULL ){
91106 91222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3VdbeRecordCompare;
@@ -91346,10 +91462,11 @@
91346 91462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
91347 91463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v->expmask |= ((u32)1 << (iVar-1));
91348 91464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91349 91465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91350 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
91351 91468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
91352 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
91353 91470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** rather than OP_Function.
91354 91471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
91355 91472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_PureFunc means that the function must be deterministic, and should
@@ -91379,10 +91496,11 @@
91379 91496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zMsg);
91380 91497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
91381 91498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
91382 91499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
91383 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 */
91384 91502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91385 91503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_CURSOR_HINTS) && defined(SQLITE_DEBUG)
91386 91504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
91387 91505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This Walker callback is used to help verify that calls to
91388 91506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3BtreeCursorHint() with opcode BTREE_HINT_RANGE have
@@ -91455,11 +91573,10 @@
91455 91573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
91456 91574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = v->db;
91457 91575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iKey2;
91458 91576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PreUpdate preupdate;
91459 91577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTbl = pTab->zName;
91460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static const u8 fakeSortOrder = 0;
91461 91578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
91462 91579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nRealCol;
91463 91580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->tabFlags & TF_WithoutRowid ){
91464 91581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nRealCol = sqlite3PrimaryKeyIndex(pTab)->nColumn;
91465 91582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pTab->tabFlags & TF_HasVirtual ){
@@ -91494,11 +91611,11 @@
91494 91611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.iNewReg = iReg;
91495 91612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pKeyinfo = (KeyInfo*)&preupdate.keyinfoSpace;
91496 91613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pKeyinfo->db = db;
91497 91614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pKeyinfo->enc = ENC(db);
91498 91615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pKeyinfo->nKeyField = pTab->nCol;
91499 { 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 */
91500 91617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.iKey1 = iKey1;
91501 91618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.iKey2 = iKey2;
91502 91619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.pTab = pTab;
91503 91620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preupdate.iBlobWrite = iBlobWrite;
91504 91621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -93691,11 +93808,11 @@
93691 93808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *pRet; /* Return value */
93692 93809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93693 93810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet = sqlite3VdbeAllocUnpackedRecord(pKeyInfo);
93694 93811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet ){
93695 93812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(pRet->aMem, 0, sizeof(Mem)*(pKeyInfo->nKeyField+1));
93696 { 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);
93697 93814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93698 93815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRet;
93699 93816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93700 93817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93701 93818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -93720,10 +93837,13 @@
93720 93837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_MISUSE_BKPT;
93721 93838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto preupdate_old_out;
93722 93839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93723 93840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pPk ){
93724 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;
93725 93845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93726 93846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStore = sqlite3TableColumnToStorage(p->pTab, iIdx);
93727 93847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93728 93848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iStore>=p->pCsr->nField || iStore<0 ){
93729 93849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_RANGE;
@@ -93875,10 +93995,12 @@
93875 93995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_MISUSE_BKPT;
93876 93996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto preupdate_new_out;
93877 93997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93878 93998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pPk && p->op!=SQLITE_UPDATE ){
93879 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;
93880 94002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
93881 94003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStore = sqlite3TableColumnToStorage(p->pTab, iIdx);
93882 94004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
93883 94005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
93884 94006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iStore>=p->pCsr->nField || iStore<0 ){
@@ -95200,10 +95322,40 @@
95200 95322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95201 95323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDest->flags &= ~MEM_Ephem;
95202 95324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
95203 95325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95204 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!
+ }
95205 95357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
95206 95358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
95207 95359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the symbolic name for the data type of a pMem
95208 95360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
95209 95361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char *vdbeMemTypeName(Mem *pMem){
@@ -95725,12 +95877,11 @@
95725 95877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zErrMsg = sqlite3MPrintf(db, "%z: %s", p->zErrMsg, pOp->p4.z);
95726 95878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95727 95879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
95728 95880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeError(p, "%s", pOp->p4.z);
95729 95881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pcx = (int)(pOp - aOp);
95731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_log(pOp->p1, "abort at %d: %s; [%s]", pcx, p->zErrMsg, p->zSql);
95882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeLogAbort(p, pOp->p1, pOp, aOp);
95732 95883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
95733 95884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3VdbeHalt(p);
95734 95885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_BUSY || rc==SQLITE_OK || rc==SQLITE_ERROR );
95735 95886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_BUSY ){
95736 95887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = SQLITE_BUSY;
@@ -96884,10 +97035,11 @@
96884 97035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
96885 97036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pOp->p3;
96886 97037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKeyInfo = pOp->p4.pKeyInfo;
96887 97038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( n>0 );
96888 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 );
96889 97041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1 = pOp->p1;
96890 97042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p2 = pOp->p2;
96891 97043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
96892 97044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aPermute ){
96893 97045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int k, mx = 0;
@@ -97645,10 +97797,19 @@
97645 97797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: typecheck(r[P1@P2])
97646 97798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97647 97799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply affinities to the range of P2 registers beginning with P1.
97648 97800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Take the affinities from the Table object in P4. If any value
97649 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.
97650 97811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97651 97812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This opcode is similar to OP_Affinity except that this opcode
97652 97813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** forces the register type to the Table column type. This is used
97653 97814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to implement "strict affinity".
97654 97815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -97659,30 +97820,42 @@
97659 97820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97660 97821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Preconditions:
97661 97822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97662 97823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <ul>
97663 97824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> P2 should be the number of non-virtual columns in the
97664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** table of P4.
97665 { 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.
97666 97827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </ul>
97667 97828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97668 97829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If any precondition is false, an assertion fault occurs.
97669 97830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
97670 97831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_TypeCheck: {
97671 97832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
97672 97833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Column *aCol;
97673 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;
97674 97836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
97675 97837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p4type==P4_TABLE );
97676 97838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pOp->p4.pTab;
97677 97839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab->tabFlags & TF_Strict );
97678 { 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 );
97679 97841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aCol = pTab->aCol;
97680 97842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn1 = &aMem[pOp->p1];
97681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<pTab->nCol; i++){
97682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( aCol[i].colFlags & COLFLAG_GENERATED ){
97683 { 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;
97684 97857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOp->p3 ){ pIn1++; continue; }
97685 97858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97686 97859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIn1 < &aMem[pOp->p1+pOp->p2] );
97687 97860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
applyAffinity(pIn1, aCol[i].affinity, encoding);
97688 97861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pIn1->flags & MEM_Null)==0 ){
@@ -98119,10 +98292,11 @@
98119 98292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98120 98293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
98121 98294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zHdr += sqlite3PutVarint(zHdr, serial_type);
98122 98295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRec->n ){
98123 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 );
98124 98298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(zPayload, pRec->z, pRec->n);
98125 98299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPayload += pRec->n;
98126 98300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98127 98301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98128 98302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRec==pLast ) break;
@@ -99756,11 +99930,11 @@
99756 99930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = ExpandBlob(r.aMem);
99757 99931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK || rc==SQLITE_NOMEM );
99758 99932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) goto no_mem;
99759 99933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey = sqlite3VdbeAllocUnpackedRecord(pC->pKeyInfo);
99760 99934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdxKey==0 ) goto no_mem;
99761 { 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);
99762 99936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxKey->default_rc = 0;
99763 99937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeIndexMoveto(pC->uc.pCursor, pIdxKey, &pC->seekResult);
99764 99938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFreeNN(db, pIdxKey);
99765 99939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99766 99940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
@@ -100753,10 +100927,36 @@
100753 100927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeBranchTaken(res!=0,2);
100754 100928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ) goto jump_to_p2;
100755 100929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100756 100930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
100757 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!
+ }
100758 100958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100759 100959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: Next P1 P2 P3 * P5
100760 100960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
100761 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
100762 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
@@ -102625,11 +102825,18 @@
102625 102825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab_cursor *pVCur;
102626 102826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab *pVtab;
102627 102827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const sqlite3_module *pModule;
102628 102828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102629 102829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->bIsReader );
102630 { 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!
+ }
102631 102838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVCur = 0;
102632 102839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVtab = pOp->p4.pVtab->pVtab;
102633 102840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pVtab==0 || NEVER(pVtab->pModule==0) ){
102634 102841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_LOCKED;
102635 102842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto abort_due_to_error;
@@ -103567,12 +103774,11 @@
103567 103774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeError(p, "%s", sqlite3ErrStr(rc));
103568 103775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103569 103776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = rc;
103570 103777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SystemError(db, rc);
103571 103778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( sqlite3GlobalConfig.xLog!=0 );
103572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_log(rc, "statement aborts at %d: %s; [%s]",
103573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (int)(pOp - aOp), p->zErrMsg, p->zSql);
103779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeLogAbort(p, rc, pOp, aOp);
103574 103780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->eVdbeState==VDBE_RUN_STATE ) sqlite3VdbeHalt(p);
103575 103781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_IOERR_NOMEM ) sqlite3OomFault(db);
103576 103782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_CORRUPT && db->autoCommit==0 ){
103577 103783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->flags |= SQLITE_CorruptRdOnly;
103578 103784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -104029,11 +104235,11 @@
104029 104235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *z,
104030 104236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n,
104031 104237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOffset,
104032 104238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xCall)(BtCursor*, u32, u32, void*)
104033 104239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
104034 { 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;
104035 104241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Incrblob *p = (Incrblob *)pBlob;
104036 104242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v;
104037 104243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db;
104038 104244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104039 104245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p==0 ) return SQLITE_MISUSE_BKPT;
@@ -104069,21 +104275,36 @@
104069 104275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** same way as an SQLITE_DELETE (the SQLITE_DELETE code is actually
104070 104276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** slightly more efficient). Since you cannot write to a PK column
104071 104277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** using the incremental-blob API, this works. For the sessions module
104072 104278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** anyhow.
104073 104279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_int64 iKey;
104075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iKey = sqlite3BtreeIntegerKey(p->pCsr);
104076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( v->apCsr[0]!=0 );
104077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( v->apCsr[0]->eCurType==CURTYPE_BTREE );
104078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbePreUpdateHook(
104079 { 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
104080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
104081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
104082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
104083 { 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
104084 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!
+
104085 104306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeaveCursor(p->pCsr);
104086 104307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_ABORT ){
104087 104308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeFinalize(v);
104088 104309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pStmt = 0;
104089 104310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -104932,11 +105153,11 @@
104932 105153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey1, int nKey1, /* Left side of comparison */
104933 105154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey2, int nKey2 /* Right side of comparison */
104934 105155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
104935 105156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *r2 = pTask->pUnpacked;
104936 105157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *pbKey2Cached==0 ){
104937 { 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);
104938 105159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pbKey2Cached = 1;
104939 105160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104940 105161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3VdbeRecordCompareWithSkip(nKey1, pKey1, r2, 1);
104941 105162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104942 105163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -104959,11 +105180,11 @@
104959 105180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey1, int nKey1, /* Left side of comparison */
104960 105181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pKey2, int nKey2 /* Right side of comparison */
104961 105182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
104962 105183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UnpackedRecord *r2 = pTask->pUnpacked;
104963 105184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !*pbKey2Cached ){
104964 { 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);
104965 105186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pbKey2Cached = 1;
104966 105187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104967 105188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3VdbeRecordCompare(nKey1, pKey1, r2);
104968 105189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104969 105190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -104999,10 +105220,11 @@
104999 105220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = vdbeSorterCompareTail(
105000 105221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTask, pbKey2Cached, pKey1, nKey1, pKey2, nKey2
105001 105222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
105002 105223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105003 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 );
105004 105226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !(pTask->pSorter->pKeyInfo->aSortFlags[0]&KEYINFO_ORDER_BIGNULL) );
105005 105227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTask->pSorter->pKeyInfo->aSortFlags[0] ){
105006 105228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = res * -1;
105007 105229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105008 105230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -105062,10 +105284,11 @@
105062 105284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
105063 105285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *v2 & 0x80 ) res = +1;
105064 105286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105065 105287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105066 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 );
105067 105290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res==0 ){
105068 105291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTask->pSorter->pKeyInfo->nKeyField>1 ){
105069 105292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = vdbeSorterCompareTail(
105070 105293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTask, pbKey2Cached, pKey1, nKey1, pKey2, nKey2
105071 105294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
@@ -105135,11 +105358,12 @@
105135 105358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCsr->pKeyInfo );
105136 105359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !pCsr->isEphemeral );
105137 105360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCsr->eCurType==CURTYPE_SORTER );
105138 105361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sizeof(KeyInfo) + UMXV(pCsr->pKeyInfo->nKeyField)*sizeof(CollSeq*)
105139 105362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
< 0x7fffffff );
105140 { 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);
105141 105365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz = SZ_VDBESORTER(nWorker+1);
105142 105366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
105143 105367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter = (VdbeSorter*)sqlite3DbMallocZero(db, sz + szKeyInfo);
105144 105368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->uc.pSorter = pSorter;
105145 105369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSorter==0 ){
@@ -105149,11 +105373,16 @@
105149 105373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter->pKeyInfo = pKeyInfo = (KeyInfo*)((u8*)pSorter + sz);
105150 105374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(pKeyInfo, pCsr->pKeyInfo, szKeyInfo);
105151 105375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKeyInfo->db = 0;
105152 105376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nField && nWorker==0 ){
105153 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 );
105154 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 );
105155 105384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnter(pBt);
105156 105385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter->pgsz = pgsz = sqlite3BtreeGetPageSize(pBt);
105157 105386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeLeave(pBt);
105158 105387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter->nTask = nWorker + 1;
105159 105388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSorter->iPrev = (u8)(nWorker - 1);
@@ -106929,11 +107158,11 @@
106929 107158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2->nField = nKeyCol;
106930 107159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106931 107160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( r2->nField==nKeyCol );
106932 107161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106933 107162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKey = vdbeSorterRowkey(pSorter, &nKey);
106934 { 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);
106935 107164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nKeyCol; i++){
106936 107165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( r2->aMem[i].flags & MEM_Null ){
106937 107166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRes = -1;
106938 107167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
106939 107168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -109303,17 +109532,16 @@
109303 109532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Clearly non-deterministic functions like random(), but also
109304 109533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** date/time functions that use 'now', and other functions like
109305 109534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite_version() that might change over time cannot be used
109306 109535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in an index or generated column. Curiously, they can be used
109307 109536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in a CHECK constraint. SQLServer, MySQL, and PostgreSQL all
109308 { 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. */
109309 109538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ResolveNotValid(pParse, pNC, "non-deterministic functions",
109310 109539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
NC_IdxExpr|NC_PartIdx|NC_GenCol, 0, pExpr);
109311 109540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
109312 109541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (NC_SelfRef & 0xff)==NC_SelfRef ); /* Must fit in 8 bits */
109313 109542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op2 = pNC->ncFlags & NC_SelfRef;
109314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pNC->ncFlags & NC_FromDDL ) ExprSetProperty(pExpr, EP_FromDDL);
109315 109543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109316 109544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pDef->funcFlags & SQLITE_FUNC_INTERNAL)!=0
109317 109545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pParse->nested==0
109318 109546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pParse->db->mDbFlags & DBFLAG_InternalFunc)==0
109319 109547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
@@ -109325,10 +109553,11 @@
109325 109553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDef = 0;
109326 109554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
109327 109555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pDef->funcFlags & (SQLITE_FUNC_DIRECT|SQLITE_FUNC_UNSAFE))!=0
109328 109556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !IN_RENAME_OBJECT
109329 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);
109330 109559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprFunctionUsable(pParse, pExpr, pDef);
109331 109560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109332 109561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109333 109562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
109334 109563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==IN_RENAME_OBJECT ){
@@ -109459,22 +109688,25 @@
109459 109688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** type of the function
109460 109689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
109461 109690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
109462 109691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109463 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:
109464 109694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SELECT:
109465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case TK_EXISTS: testcase( pExpr->op==TK_EXISTS );
109466 109695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
109467 109696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IN: {
109468 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 );
109469 109700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(pExpr) ){
109470 109701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nRef = pNC->nRef;
109471 109702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IsCheck );
109472 109703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_PartIdx );
109473 109704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IdxExpr );
109474 109705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_GenCol );
109475 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;
109476 109708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNC->ncFlags & NC_SelfRef ){
109477 109709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
notValidImpl(pParse, pNC, "subqueries", pExpr, pExpr);
109478 109710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
109479 109711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkSelect(pWalker, pExpr->x.pSelect);
109480 109712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -110485,11 +110717,13 @@
110485 110717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->iTable==pExpr->pLeft->x.pSelect->pEList->nExpr );
110486 110718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ExprAffinity(
110487 110719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pLeft->x.pSelect->pEList->a[pExpr->iColumn].pExpr
110488 110720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
110489 110721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110490 { 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!
+ ){
110491 110725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ExprUseXList(pExpr) );
110492 110726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ExprAffinity(pExpr->x.pList->a[0].pExpr);
110493 110727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110494 110728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_Skip|EP_IfNullRow) ){
110495 110729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_COLLATE
@@ -110678,11 +110912,13 @@
110678 110912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110679 110913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_CAST || op==TK_UPLUS ){
110680 110914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->pLeft;
110681 110915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
110682 110916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110683 { 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!
+ ){
110684 110920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ExprUseXList(p) );
110685 110921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->x.pList->a[0].pExpr;
110686 110922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
110687 110923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110688 110924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_COLLATE ){
@@ -111552,11 +111788,11 @@
111552 111788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRight;
111553 111789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pRight==0 ){
111554 111790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pLeft;
111555 111791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
111556 111792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 f = pLeft->flags | pRight->flags;
111557 { 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
111558 111794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !IN_RENAME_OBJECT
111559 111795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
111560 111796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDeferredDelete(pParse, pLeft);
111561 111797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDeferredDelete(pParse, pRight);
111562 111798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3Expr(db, TK_INTEGER, "0");
@@ -112780,10 +113016,90 @@
112780 113016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->op==TK_AND ? pLeft : pRight;
112781 113017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112782 113018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112783 113019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr;
112784 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!
+ }
112785 113101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112786 113102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
112787 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
112788 113104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function is a constant function. A function is constant if all of
112789 113105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the following are true:
@@ -114225,21 +114541,27 @@
114225 114541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dest.eDest = SRT_Exists;
114226 114542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, dest.iSDParm);
114227 114543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "Init EXISTS result"));
114228 114544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114229 114545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSel->pLimit ){
114230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The subquery already has a limit. If the pre-existing limit is X
114231 { 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 */
114232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3 *db = pParse->db;
114233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLimit = sqlite3Expr(db, TK_INTEGER, "0");
114234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pLimit ){
114235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLimit->affExpr = SQLITE_AFF_NUMERIC;
114236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLimit = sqlite3PExpr(pParse, TK_NE,
114237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDup(db, pSel->pLimit->pLeft, 0), pLimit);
114238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
114239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDeferredDelete(pParse, pSel->pLimit->pLeft);
114240 { 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!
+ }
114241 114563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
114242 114564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If there is no pre-existing limit add a limit of 1 */
114243 114565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLimit = sqlite3Expr(pParse->db, TK_INTEGER, "1");
114244 114566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSel->pLimit = sqlite3PExpr(pParse, TK_LIMIT, pLimit, 0);
114245 114567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -114677,11 +114999,16 @@
114677 114999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iAddr = sqlite3VdbeAddOp3(v, OP_IfNullRow, pParse->iSelfTab-1, 0, regOut);
114678 115000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
114679 115001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iAddr = 0;
114680 115002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114681 115003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeCopy(pParse, sqlite3ColumnExpr(pTab,pCol), regOut);
114682 { 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 ){
114683 115010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_Affinity, regOut, 1, 0, &pCol->affinity, 1);
114684 115011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114685 115012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iAddr ) sqlite3VdbeJumpHere(v, iAddr);
114686 115013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nErr>nErr ) pParse->db->errByteOffset = -1;
114687 115014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -115364,15 +115691,21 @@
115364 115691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GT:
115365 115692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GE:
115366 115693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NE:
115367 115694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_EQ: {
115368 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;
115369 115697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprIsVector(pLeft) ){
115370 115698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeVectorCompare(pParse, pExpr, target, op, p5);
115371 115699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
115372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = sqlite3ExprCodeTemp(pParse, pLeft, ®Free1);
115373 { 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!
+ }
115374 115707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 1, inReg);
115375 115708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pLeft, pExpr->pRight, op, r1, r2,
115376 115709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeCurrentAddr(v)+2, p5,
115377 115710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprHasProperty(pExpr,EP_Commuted));
115378 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);
@@ -115383,13 +115716,19 @@
115383 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);
115384 115717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p5==SQLITE_NULLEQ ){
115385 115718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, inReg);
115386 115719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
115387 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!
+ }
115388 115726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115389 115727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
115390 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!
+
115391 115730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115392 115731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
115393 115732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115394 115733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_AND:
115395 115734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_OR:
@@ -115401,10 +115740,11 @@
115401 115740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BITOR:
115402 115741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SLASH:
115403 115742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LSHIFT:
115404 115743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_RSHIFT:
115405 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;
115406 115746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_AND==OP_And ); testcase( op==TK_AND );
115407 115747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_OR==OP_Or ); testcase( op==TK_OR );
115408 115748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_PLUS==OP_Add ); testcase( op==TK_PLUS );
115409 115749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_MINUS==OP_Subtract ); testcase( op==TK_MINUS );
115410 115750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_REM==OP_Remainder ); testcase( op==TK_REM );
@@ -115412,15 +115752,27 @@
115412 115752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_BITOR==OP_BitOr ); testcase( op==TK_BITOR );
115413 115753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_SLASH==OP_Divide ); testcase( op==TK_SLASH );
115414 115754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_LSHIFT==OP_ShiftLeft ); testcase( op==TK_LSHIFT );
115415 115755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_RSHIFT==OP_ShiftRight ); testcase( op==TK_RSHIFT );
115416 115756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_CONCAT==OP_Concat ); testcase( op==TK_CONCAT );
115417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
115418 { 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!
+ }
115419 115765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, op, r2, r1, target);
115420 115766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
115421 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!
+ }
115422 115774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
115423 115775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115424 115776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_UMINUS: {
115425 115777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLeft = pExpr->pLeft;
115426 115778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLeft );
@@ -116265,21 +116617,31 @@
116265 116617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_AND:
116266 116618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_OR: {
116267 116619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pAlt = sqlite3ExprSimplifiedAndOr(pExpr);
116268 116620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAlt!=pExpr ){
116269 116621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfTrue(pParse, pAlt, dest, jumpIfNull);
116270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( op==TK_AND ){
116271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int d2 = sqlite3VdbeMakeLabel(pParse);
116272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfFalse(pParse, pExpr->pLeft, d2,
116274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jumpIfNull^SQLITE_JUMPIFNULL);
116275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfTrue(pParse, pExpr->pRight, dest, jumpIfNull);
116276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeResolveLabel(v, d2);
116277 116622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
116278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfTrue(pParse, pExpr->pLeft, dest, jumpIfNull);
116280 { 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!
+ }
116281 116643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116282 116644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116283 116645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116284 116646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOT: {
116285 116647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
@@ -116314,14 +116676,20 @@
116314 116676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LE:
116315 116677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GT:
116316 116678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GE:
116317 116679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NE:
116318 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;
116319 116682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprIsVector(pExpr->pLeft) ) goto default_expr;
116320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116322 { 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!
+ }
116323 116691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
116324 116692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, dest, jumpIfNull, ExprHasProperty(pExpr,EP_Commuted));
116325 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);
116326 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);
116327 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);
@@ -116332,22 +116700,29 @@
116332 116700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_NE==OP_Ne); testcase(op==OP_Ne);
116333 116701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_Ne && jumpIfNull==SQLITE_NULLEQ);
116334 116702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_Ne && jumpIfNull!=SQLITE_NULLEQ);
116335 116703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
116336 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!
+ }
116337 116712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116338 116713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116339 116714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ISNULL:
116340 116715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOTNULL: {
116341 116716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_ISNULL==OP_IsNull ); testcase( op==TK_ISNULL );
116342 116717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_NOTNULL==OP_NotNull ); testcase( op==TK_NOTNULL );
116343 116718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116344 { 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);
116345 116721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, op, r1, dest);
116346 116722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==TK_ISNULL);
116347 116723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==TK_NOTNULL);
116348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( regFree1==0 );
116349 116724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116350 116725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116351 116726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BETWEEN: {
116352 116727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
116353 116728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfTrue, jumpIfNull);
@@ -116439,21 +116814,31 @@
116439 116814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_AND:
116440 116815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_OR: {
116441 116816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pAlt = sqlite3ExprSimplifiedAndOr(pExpr);
116442 116817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAlt!=pExpr ){
116443 116818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pAlt, dest, jumpIfNull);
116444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( pExpr->op==TK_AND ){
116445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfFalse(pParse, pExpr->pLeft, dest, jumpIfNull);
116447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull);
116448 116819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
116449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int d2 = sqlite3VdbeMakeLabel(pParse);
116450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfTrue(pParse, pExpr->pLeft, d2,
116452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jumpIfNull^SQLITE_JUMPIFNULL);
116453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull);
116454 { 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!
+ }
116455 116840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116456 116841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116457 116842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116458 116843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOT: {
116459 116844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
@@ -116491,14 +116876,20 @@
116491 116876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_LE:
116492 116877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GT:
116493 116878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_GE:
116494 116879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NE:
116495 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;
116496 116882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprIsVector(pExpr->pLeft) ) goto default_expr;
116497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( jumpIfNull==0 );
116498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116499 { 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!
+ }
116500 116891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op,
116501 116892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1, r2, dest, jumpIfNull,ExprHasProperty(pExpr,EP_Commuted));
116502 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);
116503 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);
116504 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);
@@ -116509,20 +116900,27 @@
116509 116900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(TK_NE==OP_Ne); testcase(op==OP_Ne);
116510 116901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_Ne && jumpIfNull!=SQLITE_NULLEQ);
116511 116902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_Ne && jumpIfNull==SQLITE_NULLEQ);
116512 116903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( regFree1==0 );
116513 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!
+ }
116514 116912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116515 116913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116516 116914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ISNULL:
116517 116915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NOTNULL: {
116518 116916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1);
116519 { 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);
116520 116919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, op, r1, dest);
116521 116920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( op==TK_ISNULL ); VdbeCoverageIf(v, op==TK_ISNULL);
116522 116921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( op==TK_NOTNULL ); VdbeCoverageIf(v, op==TK_NOTNULL);
116523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( regFree1==0 );
116524 116922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
116525 116923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116526 116924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BETWEEN: {
116527 116925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( jumpIfNull==0 );
116528 116926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfFalse, jumpIfNull);
@@ -117418,11 +117816,13 @@
117418 117816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AggInfo *pAggInfo, /* The AggInfo object to search and/or modify */
117419 117817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr /* Expr describing the column to find or insert */
117420 117818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
117421 117819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_col *pCol;
117422 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];
117423 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) );
117424 117824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pAggInfo->iFirstReg==0 );
117425 117825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol = pAggInfo->aCol;
117426 117826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(k=0; k<pAggInfo->nColumn; k++, pCol++){
117427 117827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->pCExpr==pExpr ) return;
117428 117828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->iTable==pExpr->iTable
@@ -117435,10 +117835,14 @@
117435 117835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = addAggInfoColumn(pParse->db, pAggInfo);
117436 117836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( k<0 ){
117437 117837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* OOM on resize */
117438 117838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->db->mallocFailed );
117439 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;
117440 117844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117441 117845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol = &pAggInfo->aCol[k];
117442 117846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ExprUseYTab(pExpr) );
117443 117847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->pTab = pExpr->y.pTab;
117444 117848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iTable = pExpr->iTable;
@@ -117469,10 +117873,11 @@
117469 117873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->pAggInfo==0 || pExpr->pAggInfo==pAggInfo );
117470 117874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pAggInfo = pAggInfo;
117471 117875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_COLUMN ){
117472 117876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_AGG_COLUMN;
117473 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) );
117474 117879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iAgg = (i16)k;
117475 117880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117476 117881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
117477 117882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
117478 117883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the xExprCallback for a tree walker. It is used to
@@ -117553,17 +117958,23 @@
117553 117958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
117554 117959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check to see if pExpr is a duplicate of another aggregate
117555 117960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function that is already in the pAggInfo structure
117556 117961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
117557 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) );
117558 117965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pAggInfo->nFunc; i++, pItem++){
117559 117966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pItem->pFExpr==pExpr) ) break;
117560 117967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprCompare(0, pItem->pFExpr, pExpr, -1)==0 ){
117561 117968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
117562 117969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117563 117970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117564 { 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 ){
117565 117976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pExpr is original. Make a new entry in pAggInfo->aFunc[]
117566 117977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
117567 117978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 enc = ENC(pParse->db);
117568 117979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i = addAggInfoFunc(pParse->db, pAggInfo);
117569 117980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i>=0 ){
@@ -117613,10 +118024,11 @@
117613 118024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117614 118025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make pExpr point to the appropriate pAggInfo->aFunc[] entry
117615 118026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
117616 118027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) );
117617 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) );
117618 118030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iAgg = (i16)i;
117619 118031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pAggInfo = pAggInfo;
117620 118032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
117621 118033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
117622 118034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
@@ -119015,14 +119427,14 @@
119015 119427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
119016 119428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nQuot = sqlite3Strlen30(zQuot)-1;
119017 119429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119018 119430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
119019 119431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nQuot>=nNew && nSql>=0 && nNew>=0 );
119020 { 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);
119021 119433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
119022 119434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nSql>0 );
119023 { 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);
119024 119436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zOut ){
119025 119437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBuf1 = &zOut[nSql*2+1];
119026 119438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBuf2 = &zOut[nSql*4+2];
119027 119439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119028 119440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -121700,20 +122112,10 @@
121700 122112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121701 122113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
121702 122114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( z[0]!=0 && z[0]!=' ' ) z++;
121703 122115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( z[0]==' ' ) z++;
121704 122116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
121706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Set the bLowQual flag if the peak number of rows obtained
121707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** from a full equality match is so large that a full table scan
121708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** seems likely to be faster than using the index.
121709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
121710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( aLog[0] > 66 /* Index has more than 100 rows */
121711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && aLog[0] <= aLog[nOut-1] /* And only a single value seen */
121712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
121713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIndex->bLowQual = 1;
121714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
121715 122117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121716 122118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121717 122119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
121718 122120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
121719 122121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This callback is invoked once for each index when reading the
@@ -127256,11 +127658,10 @@
127256 127658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
127257 127659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = pCExpr->iColumn;
127258 127660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( j<=0x7fff );
127259 127661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j<0 ){
127260 127662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = pTab->iPKey;
127261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIndex->bIdxRowid = 1;
127262 127663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
127263 127664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->aCol[j].notNull==0 ){
127264 127665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIndex->uniqNotNull = 0;
127265 127666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
127266 127667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->aCol[j].colFlags & COLFLAG_VIRTUAL ){
@@ -128175,20 +128576,26 @@
128175 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
128176 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
128177 128578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are deleted by this function.
128178 128579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
128179 128580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE SrcList *sqlite3SrcListAppendList(Parse *pParse, SrcList *p1, SrcList *p2){
128180 { 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 );
128181 128585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p2 ){
128182 { 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);
128183 128588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew==0 ){
128184 128589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcListDelete(pParse->db, p2);
128185 128590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
128186 128591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1 = pNew;
128187 { 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);
128188 128596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(pParse->db, p2);
128189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p1->a[0].fg.jointype |= (JT_LTORJ & p1->a[1].fg.jointype);
128190 128597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128191 128598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128192 128599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p1;
128193 128600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128194 128601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -132081,11 +132488,11 @@
132081 132488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int argc,
132082 132489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **argv,
132083 132490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSep,
132084 132491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSep
132085 132492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
132086 { 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;
132087 132494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
132088 132495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z;
132089 132496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<argc; i++){
132090 132497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n += sqlite3_value_bytes(argv[i]);
132091 132498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -132095,12 +132502,12 @@
132095 132502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_error_nomem(context);
132096 132503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
132097 132504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132098 132505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = 0;
132099 132506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<argc; i++){
132100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- k = sqlite3_value_bytes(argv[i]);
132101 { 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]);
132102 132509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *v = (const char*)sqlite3_value_text(argv[i]);
132103 132510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( v!=0 ){
132104 132511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j>0 && nSep>0 ){
132105 132512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&z[j], zSep, nSep);
132106 132513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j += nSep;
@@ -135034,16 +135441,19 @@
135034 135441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iReg==0 ){
135035 135442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Move the previous opcode (which should be OP_MakeRecord) forward
135036 135443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by one slot and insert a new OP_TypeCheck where the current
135037 135444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_MakeRecord is found */
135038 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;
135039 135447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
135040 135448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrev = sqlite3VdbeGetLastOp(v);
135041 135449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPrev!=0 );
135042 135450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPrev->opcode==OP_MakeRecord || sqlite3VdbeDb(v)->mallocFailed );
135043 135451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrev->opcode = OP_TypeCheck;
135044 { 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);
135045 135455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
135046 135456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Insert an isolated OP_Typecheck */
135047 135457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_TypeCheck, iReg, pTab->nNVCol);
135048 135458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
135049 135459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -138772,10 +139182,12 @@
138772 139182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.43.0 and later */
138773 139183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*stmt_explain)(sqlite3_stmt*,int);
138774 139184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.44.0 and later */
138775 139185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *(*get_clientdata)(sqlite3*,const char*);
138776 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);
138777 139189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
138778 139190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
138779 139191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
138780 139192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the function signature used for all extension entry points. It
138781 139193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is also defined in the file "loadext.c".
@@ -139105,10 +139517,12 @@
139105 139517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.43.0 and later */
139106 139518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_stmt_explain sqlite3_api->stmt_explain
139107 139519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.44.0 and later */
139108 139520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3_get_clientdata sqlite3_api->get_clientdata
139109 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
139110 139524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
139111 139525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139112 139526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
139113 139527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This case when the file really is being compiled as a loadable
139114 139528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** extension */
@@ -139626,11 +140040,13 @@
139626 140040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_is_interrupted,
139627 140041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.43.0 and later */
139628 140042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt_explain,
139629 140043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Version 3.44.0 and later */
139630 140044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_get_clientdata,
139631 { 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
139632 140048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
139633 140049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139634 140050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* True if x is the directory separator character
139635 140051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
139636 140052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_OS_WIN
@@ -145252,11 +145668,11 @@
145252 145668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc, /* Array of tables to search */
145253 145669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iStart, /* First member of pSrc->a[] to check */
145254 145670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEnd, /* Last member of pSrc->a[] to check */
145255 145671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zCol, /* Name of the column we are looking for */
145256 145672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *piTab, /* Write index of pSrc->a[] here */
145257 { 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 */
145258 145674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bIgnoreHidden /* Ignore hidden columns */
145259 145675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
145260 145676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; /* For looping over tables in pSrc */
145261 145677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol; /* Index of column matching zCol */
145262 145678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -145464,11 +145880,11 @@
145464 145880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"not present in both tables", zName);
145465 145881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
145466 145882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
145467 145883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pE1 = sqlite3CreateColumnExpr(db, pSrc, iLeft, iLeftCol);
145468 145884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcItemColumnUsed(&pSrc->a[iLeft], iLeftCol);
145469 { 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 ){
145470 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
145471 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
145472 145888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contains the zName column, then this branch is a no-op.
145473 145889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** But if there are two or more tables on the left side
145474 145890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the join, construct a coalesce() function that gathers all
@@ -145480,10 +145896,12 @@
145480 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
145481 145897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** adding a new error so as to not break legacy applications.
145482 145898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
145483 145899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pFuncArgs = 0; /* Arguments to the coalesce() */
145484 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);
145485 145903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( tableAndColumnIndex(pSrc, iLeft+1, i, zName, &iLeft, &iLeftCol,
145486 145904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRight->fg.isSynthUsing)!=0 ){
145487 145905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSrc->a[iLeft].fg.isUsing==0
145488 145906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| sqlite3IdListIndex(pSrc->a[iLeft].u3.pUsing, zName)<0
145489 145907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
@@ -145496,11 +145914,17 @@
145496 145914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcItemColumnUsed(&pSrc->a[iLeft], iLeftCol);
145497 145915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
145498 145916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFuncArgs ){
145499 145917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFuncArgs = sqlite3ExprListAppend(pParse, pFuncArgs, pE1);
145500 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!
+ }
145501 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);
145502 145926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
145503 145927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pE2 = sqlite3CreateColumnExpr(db, pSrc, i+1, iRightCol);
145504 145928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SrcItemColumnUsed(pRight, iRightCol);
145505 145929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pEq = sqlite3PExpr(pParse, TK_EQ, pE1, pE2);
145506 145930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pE2!=0 || pEq==0 );
@@ -146973,10 +147397,14 @@
146973 147397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
146974 147398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zType = columnType(&sNC, p, 0, 0, 0);
146975 147399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
146976 147400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, i, COLNAME_DECLTYPE, zType, SQLITE_TRANSIENT);
146977 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);
146978 147406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_DECLTYPE) */
146979 147407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146980 147408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146981 147409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146982 147410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -147892,11 +148320,13 @@
147892 148320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int unionTab; /* Cursor number of the temp table holding result */
147893 148321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 op = 0; /* One of the SRT_ operations to apply to self */
147894 148322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int priorOp; /* The SRT_ operation to apply to prior selects */
147895 148323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLimit; /* Saved values of p->nLimit */
147896 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 */
147897 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!
+
147898 148328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
147899 148329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->op==TK_EXCEPT );
147900 148330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->op==TK_UNION );
147901 148331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
priorOp = SRT_Union;
147902 148332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( dest.eDest==priorOp ){
@@ -147931,10 +148361,12 @@
147931 148361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
147932 148362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code the current SELECT statement
147933 148363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
147934 148364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->op==TK_EXCEPT ){
147935 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);
147936 148368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
147937 148369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->op==TK_UNION );
147938 148370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = SRT_Union;
147939 148371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
147940 148372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = 0;
@@ -147951,10 +148383,11 @@
147951 148383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = pPrior;
147952 148384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pOrderBy = 0;
147953 148385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->op==TK_UNION ){
147954 148386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
147955 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);
147956 148389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, p->pLimit);
147957 148390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLimit = pLimit;
147958 148391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iLimit = 0;
147959 148392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iOffset = 0;
147960 148393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -147981,13 +148414,14 @@
147981 148414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
147982 148415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: assert( p->op==TK_INTERSECT ); {
147983 148416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tab1, tab2;
147984 148417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCont, iBreak, iStart;
147985 148418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLimit;
147986 { 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;
147987 148420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SelectDest intersectdest;
147988 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;
147989 148423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
147990 148424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* INTERSECT is different from the others since it requires
147991 148425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** two temporary tables. Hence it has its own case. Begin
147992 148426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by allocating the tables we will need.
147993 148427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -148008,18 +148442,32 @@
148008 148442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Select(pParse, pPrior, &intersectdest);
148009 148443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
148010 148444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto multi_select_end;
148011 148445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148012 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!
+
148013 148453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Code the current SELECT into temporary table "tab2"
148014 148454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
148015 148455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab2, 0);
148016 148456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->addrOpenEphm[1] == -1 );
148017 148457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->addrOpenEphm[1] = addr;
148018 { 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 */
148019 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;
148020 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!
+
148021 148469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
intersectdest.iSDParm = tab2;
148022 148470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE",
148023 148471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectOpName(p->op)));
148024 148472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
TREETRACE(0x400, pParse, p, ("multiSelect INTERSECT right...\n"));
148025 148473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Select(pParse, p, &intersectdest);
@@ -148028,32 +148476,35 @@
148028 148476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pPrior = pPrior;
148029 148477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nSelectRow>pPrior->nSelectRow ){
148030 148478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nSelectRow = pPrior->nSelectRow;
148031 148479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148032 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 */
148033 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;
148034 148486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148035 148487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate code to take the intersection of the two temporary
148036 148488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tables.
148037 148489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
148038 148490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) break;
148039 148491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pEList );
148040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iBreak = sqlite3VdbeMakeLabel(pParse);
148041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iCont = sqlite3VdbeMakeLabel(pParse);
148042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- computeLimitRegisters(pParse, p, iBreak);
148043 { 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);
148044 148493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = sqlite3GetTempReg(pParse);
148045 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);
148046 148496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(v, OP_NotFound, tab2, iCont, r1, 0);
148047 148497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
148048 148498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, r1);
148049 148499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, tab1,
148050 148500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, 0, &dest, iCont, iBreak);
148051 148501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iCont);
148052 148502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Next, tab1, iStart); VdbeCoverage(v);
148053 148503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, iBreak);
148054 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);
148055 148506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Close, tab1, 0);
148056 148507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
148057 148508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148058 148509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148059 148510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -148728,10 +149179,11 @@
148728 149179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct SubstContext {
148729 149180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse; /* The parsing context */
148730 149181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTable; /* Replace references to this table */
148731 149182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iNewTable; /* New table number */
148732 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 */
148733 149185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pEList; /* Replacement expressions */
148734 149186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pCList; /* Collation sequences for replacement expr */
148735 149187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} SubstContext;
148736 149188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148737 149189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Forward Declarations */
@@ -148834,10 +149286,13 @@
148834 149286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148835 149287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148836 149288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
148837 149289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_IF_NULL_ROW && pExpr->iTable==pSubst->iTable ){
148838 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--;
148839 149294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148840 149295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pLeft = substExpr(pSubst, pExpr->pLeft);
148841 149296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pRight = substExpr(pSubst, pExpr->pRight);
148842 149297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(pExpr) ){
148843 149298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substSelect(pSubst, pExpr->x.pSelect, 1);
@@ -148872,10 +149327,11 @@
148872 149327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
148873 149328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc;
148874 149329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem;
148875 149330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
148876 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++;
148877 149333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
148878 149334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, p->pEList);
148879 149335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, p->pGroupBy);
148880 149336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, p->pOrderBy);
148881 149337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pHaving = substExpr(pSubst, p->pHaving);
@@ -148889,10 +149345,11 @@
148889 149345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isTabFunc ){
148890 149346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, pItem->u1.pFuncArg);
148891 149347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148892 149348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148893 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--;
148894 149351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148895 149352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW) */
148896 149353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148897 149354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW)
148898 149355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -149104,13 +149561,13 @@
149104 149561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** other than the one FROM-clause subquery that is a candidate
149105 149562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for flattening. (This is due to ticket [2f7170d73bf9abf80]
149106 149563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from 2015-02-09.)
149107 149564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
149108 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
149109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (3a) the subquery may not be a join and
149110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (3b) the FROM clause of the subquery may not contain a virtual
149111 { 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"
149112 149569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (**) Was: "The outer query may not have a GROUP BY." This case
149113 149570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is now managed correctly
149114 149571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3d) the outer query may not be DISTINCT.
149115 149572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also (26) for restrictions on RIGHT JOIN.
149116 149573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -149322,11 +149779,11 @@
149322 149779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
149323 149780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also tickets #306, #350, and #3300.
149324 149781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
149325 149782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pSubitem->fg.jointype & (JT_OUTER|JT_LTORJ))!=0 ){
149326 149783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubSrc->nSrc>1 /* (3a) */
149327 { 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 */
149328 149785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (p->selFlags & SF_Distinct)!=0 /* (3d) */
149329 149786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (pSubitem->fg.jointype & JT_RIGHT)!=0 /* (26) */
149330 149787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
149331 149788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
149332 149789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -149500,11 +149957,11 @@
149500 149957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Defer deleting the Table object associated with the
149501 149958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** subquery until code generation is
149502 149959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** complete, since there may still exist Expr.pTab entries that
149503 149960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** refer to the subquery even after flattening. Ticket #3346.
149504 149961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
149505 { 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.
149506 149963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
149507 149964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pSubitem->pSTab!=0) ){
149508 149965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTabToDel = pSubitem->pSTab;
149509 149966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTabToDel->nTabRef==1 ){
149510 149967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pToplevel = sqlite3ParseToplevel(pParse);
@@ -149630,10 +150087,11 @@
149630 150087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SubstContext x;
149631 150088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pParse = pParse;
149632 150089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iTable = iParent;
149633 150090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iNewTable = iNewParent;
149634 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;
149635 150093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pEList = pSub->pEList;
149636 150094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pCList = findLeftmostExprlist(pSub);
149637 150095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substSelect(&x, pParent, 0);
149638 150096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149639 150097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -150215,10 +150673,11 @@
150215 150673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsetJoinExpr(pNew, -1, 1);
150216 150674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pParse = pParse;
150217 150675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iTable = pSrc->iCursor;
150218 150676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.iNewTable = pSrc->iCursor;
150219 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;
150220 150679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pEList = pSubq->pEList;
150221 150680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x.pCList = findLeftmostExprlist(pSubq);
150222 150681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = substExpr(&x, pNew);
150223 150682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
150224 150683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSubq->pWin && 0==pushDownWindowCheck(pParse, pSubq, pNew) ){
@@ -150612,11 +151071,11 @@
150612 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
150613 151072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pParse->pWith linked list). And if currently processing a CTE
150614 151073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CTE expression, through routine checks to see if the reference is
150615 151074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a recursive reference to the CTE.
150616 151075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
150617 { 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
150618 151077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and other fields are populated accordingly.
150619 151078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
150620 151079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 0 if no match is found.
150621 151080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 1 if a match is found.
150622 151081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return 2 if an error condition is detected.
@@ -152238,10 +152697,87 @@
152238 152697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem--;
152239 152698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.isSubquery ) return 0; /* (1c-i) */
152240 152699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
152241 152700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
152242 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!
+ }
152243 152779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152244 152780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
152245 152781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate byte-code for the SELECT statement given in the p argument.
152246 152782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
152247 152783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The results are returned according to the SelectDest structure.
@@ -152606,10 +153142,17 @@
152606 153142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
152607 153143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pNext==0 ) ExplainQueryPlanPop(pParse);
152608 153144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
152609 153145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
152610 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!
+ }
152611 153154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152612 153155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do the WHERE-clause constant propagation optimization if this is
152613 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
152614 153157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** as the equivalent optimization will be handled by query planner in
152615 153158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3WhereBegin(). tag-select-0330
@@ -153366,10 +153909,14 @@
153366 153909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
153367 153910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153368 153911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOrderByCol ){
153369 153912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pX = p->pEList->a[iOrderByCol-1].pExpr;
153370 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!
+ }
153371 153918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pBase!=0)
153372 153919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pBase->op!=TK_AGG_COLUMN
153373 153920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pBase->op!=TK_REGISTER
153374 153921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
153375 153922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprToRegister(pX, iAMem+j);
@@ -153389,24 +153936,24 @@
153389 153936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** over to a0,a1,a2. It then calls the output subroutine
153390 153937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and resets the aggregate accumulator registers in preparation
153391 153938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for the next GROUP BY batch.
153392 153939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153393 153940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regOutputRow, addrOutputRow);
153394 { 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));
153395 153942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeMove(pParse, iBMem, iAMem, pGroupBy->nExpr);
153396 153943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IfPos, iAbortFlag, addrEnd); VdbeCoverage(v);
153397 153944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "check abort flag"));
153398 153945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset);
153399 { 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));
153400 153947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153401 153948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Update the aggregate accumulators based on the content of
153402 153949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the current row
153403 153950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153404 153951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addr1);
153405 153952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
updateAccumulator(pParse, iUseFlag, pAggInfo, eDist);
153406 153953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 1, iUseFlag);
153407 { 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));
153408 153955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153409 153956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* End of the loop
153410 153957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153411 153958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( groupBySort ){
153412 153959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SorterNext, pAggInfo->sortingIdx,addrTopOfLoop);
@@ -153419,11 +153966,11 @@
153419 153966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pDistinct);
153420 153967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153421 153968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Output the final row of result
153422 153969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153423 153970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, regOutputRow, addrOutputRow);
153424 { 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));
153425 153972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153426 153973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump over the subroutines
153427 153974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153428 153975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGoto(v, addrEnd);
153429 153976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -153440,26 +153987,26 @@
153440 153987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
153441 153988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrOutputRow);
153442 153989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOutputRow = sqlite3VdbeCurrentAddr(v);
153443 153990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_IfPos, iUseFlag, addrOutputRow+2);
153444 153991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
153445 { 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));
153446 153993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
153447 153994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
finalizeAggFunctions(pParse, pAggInfo);
153448 153995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pHaving, addrOutputRow+1, SQLITE_JUMPIFNULL);
153449 153996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectInnerLoop(pParse, p, -1, &sSort,
153450 153997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&sDistinct, pDest,
153451 153998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOutputRow+1, addrSetAbort);
153452 153999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regOutputRow);
153453 { 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));
153454 154001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153455 154002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate a subroutine that will reset the group-by accumulator
153456 154003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
153457 154004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, addrReset);
153458 154005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
resetAccumulator(pParse, pAggInfo);
153459 154006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, iUseFlag);
153460 { 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));
153461 154008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, regReset);
153462 154009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
153463 154010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( distFlag!=0 && eDist!=WHERE_DISTINCT_NOOP ){
153464 154011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_func *pF = &pAggInfo->aFunc[0];
153465 154012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr);
@@ -157343,11 +157890,12 @@
157343 157890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_flags = db->flags;
157344 157891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_mDbFlags = db->mDbFlags;
157345 157892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_nChange = db->nChange;
157346 157893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_nTotalChange = db->nTotalChange;
157347 157894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_mTrace = db->mTrace;
157348 { 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;
157349 157897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->mDbFlags |= DBFLAG_PreferBuiltin | DBFLAG_Vacuum;
157350 157898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->flags &= ~(u64)(SQLITE_ForeignKeys | SQLITE_ReverseOrder
157351 157899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
| SQLITE_Defensive | SQLITE_CountRows);
157352 157900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->mTrace = 0;
157353 157901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -159046,10 +159594,11 @@
159046 159594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct WhereLevel {
159047 159595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLeftJoin; /* Memory cell used to implement LEFT OUTER JOIN */
159048 159596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTabCur; /* The VDBE cursor used to access the table */
159049 159597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iIdxCur; /* The VDBE cursor used to access pIdx */
159050 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 */
159051 159600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNxt; /* Jump here to start the next IN combination */
159052 159601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrSkip; /* Jump here for next iteration of skip-scan */
159053 159602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrCont; /* Jump here to continue with the next loop cycle */
159054 159603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrFirst; /* First instruction of interior of the loop */
159055 159604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrBody; /* Beginning of the body of this loop */
@@ -159251,10 +159800,13 @@
159251 159800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 eOperator; /* A WO_xx value describing <op> */
159252 159801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 nChild; /* Number of children that must disable us */
159253 159802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eMatchOp; /* Op for vtab MATCH/LIKE/GLOB/REGEXP terms */
159254 159803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iParent; /* Disable pWC->a[iParent] when this term disabled */
159255 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
159256 159808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
159257 159809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct {
159258 159810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int leftColumn; /* Column number of X in "X <op> <expr>" */
159259 159811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iField; /* Field in (?,?,?) IN (SELECT...) vector */
159260 159812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} x; /* Opcode other than OP_OR or OP_AND */
@@ -159743,11 +160295,10 @@
159743 160295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_DEBUG)
159744 160296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ParseToplevel(pParse)->explain==2 || IS_STMT_SCANSTATUS(pParse->db) )
159745 160297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
159746 160298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
159747 160299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeOp *pOp = sqlite3VdbeGetOp(pParse->pVdbe, addr);
159748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
159749 160300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem = &pTabList->a[pLevel->iFrom];
159750 160301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db; /* Database handle */
159751 160302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isSearch; /* True for a SEARCH. False for SCAN. */
159752 160303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pLoop; /* The controlling WhereLoop object */
159753 160304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 flags; /* Flags that describe this loop */
@@ -159766,11 +160317,14 @@
159766 160317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0))
159767 160318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (wctrlFlags&(WHERE_ORDERBY_MIN|WHERE_ORDERBY_MAX));
159768 160319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
159769 160320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StrAccumInit(&str, db, zBuf, sizeof(zBuf), SQLITE_MAX_LENGTH);
159770 160321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
str.printfFlags = SQLITE_PRINTF_INTERNAL;
159771 { 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" : "");
159772 160326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (flags & (WHERE_IPK|WHERE_VIRTUALTABLE))==0 ){
159773 160327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFmt = 0;
159774 160328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx;
159775 160329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
159776 160330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLoop->u.btree.pIndex!=0 );
@@ -160215,11 +160769,13 @@
160215 160769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=iEq; i<pLoop->nLTerm; i++){
160216 160770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i]->pExpr==pX ){
160217 160771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iField;
160218 160772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pLoop->aLTerm[i]->eOperator & (WO_OR|WO_AND))==0 );
160219 160773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iField = pLoop->aLTerm[i]->u.x.iField - 1;
160220 { 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!
+ }
160221 160777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRhs = sqlite3ExprListAppend(pParse, pRhs, pOrigRhs->a[iField].pExpr);
160222 160778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrigRhs->a[iField].pExpr = 0;
160223 160779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRhs ) pRhs->a[pRhs->nExpr-1].u.x.iOrderByCol = iField+1;
160224 160780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrigLhs ){
160225 160781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrigLhs->a[iField].pExpr!=0 );
@@ -160312,35 +160868,26 @@
160312 160868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i] && pLoop->aLTerm[i]->pExpr==pX ){
160313 160869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
disableTerm(pLevel, pTerm);
160314 160870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
160315 160871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
160316 160872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
160317 { 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++){
160318 160874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLoop->aLTerm[i]!=0 );
160319 160875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i]->pExpr==pX ) nEq++;
160320 160876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
160321 160877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
160322 160878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTab = 0;
160323 160879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !ExprUseXSelect(pX) || pX->x.pSelect->pEList->nExpr==1 ){
160324 160880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, 0, &iTab);
160325 160881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
160326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *pExpr = pTerm->pExpr;
160327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->iTable==0 || !ExprHasProperty(pExpr, EP_Subrtn) ){
160328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3 *db = pParse->db;
160329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pX = removeUnindexableInClauseTerms(pParse, iEq, pLoop, pX);
160330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !db->mallocFailed ){
160331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*nEq);
160332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap,&iTab);
160333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pExpr->iTable = iTab;
160334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
160335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprDelete(db, pX);
160336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
160337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int n = sqlite3ExprVectorSize(pX->pLeft);
160338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*MAX(nEq,n));
160339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap, &iTab);
160340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
160341 { 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);
160342 160889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
160343 160890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
160344 160891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eType==IN_INDEX_INDEX_DESC ){
160345 160892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( bRev );
160346 160893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bRev = !bRev;
@@ -160366,11 +160913,11 @@
160366 160913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sizeof(pLevel->u.in.aInLoop[0])*pLevel->u.in.nIn);
160367 160914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn = pLevel->u.in.aInLoop;
160368 160915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIn ){
160369 160916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iMap = 0; /* Index in aiMap[] */
160370 160917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn += i;
160371 { 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++){
160372 160919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i]->pExpr==pX ){
160373 160920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOut = iTarget + i - iEq;
160374 160921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eType==IN_INDEX_ROWID ){
160375 160922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn->addrInTop = sqlite3VdbeAddOp2(v, OP_Rowid, iTab, iOut);
160376 160923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -161017,19 +161564,20 @@
161017 161564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereInfo *pWInfo, /* Complete information about the WHERE clause */
161018 161565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLevel, /* Which level of pWInfo->a[] should be coded */
161019 161566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNxt, /* Jump here to bypass inner loops */
161020 161567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask notReady /* Loops that are not ready */
161021 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;
161022 161570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( ++iLevel < pWInfo->nLevel ){
161023 161571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLevel *pLevel = &pWInfo->a[iLevel];
161024 161572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pLoop = pLevel->pWLoop;
161025 161573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->regFilter==0 ) continue;
161026 161574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->pWLoop->nSkip ) continue;
161027 161575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ,--- Because sqlite3ConstructBloomFilter() has will not have set
161028 161576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** vvvvv--' pLevel->regFilter if this were true. */
161029 161577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pLoop->prereq & notReady) ) continue;
161030 { 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;
161031 161579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->addrBrk = addrNxt;
161032 161580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & WHERE_IPK ){
161033 161581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pTerm = pLoop->aLTerm[0];
161034 161582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regRowid;
161035 161583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTerm!=0 );
@@ -161055,11 +161603,11 @@
161055 161603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Int(pParse->pVdbe, OP_Filter, pLevel->regFilter,
161056 161604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrNxt, r1, nEq);
161057 161605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(pParse->pVdbe);
161058 161606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161059 161607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->regFilter = 0;
161060 { 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;
161061 161609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161062 161610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161063 161611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161064 161612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
161065 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(...)
@@ -161102,11 +161650,10 @@
161102 161650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereClause *pWC; /* Decomposition of the entire WHERE clause */
161103 161651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereTerm *pTerm; /* A WHERE clause term */
161104 161652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db; /* Database connection */
161105 161653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pTabItem; /* FROM clause term being coded */
161106 161654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrBrk; /* Jump here to break out of the loop */
161107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrHalt; /* addrBrk for the outermost loop */
161108 161655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrCont; /* Jump here to continue with next cycle */
161109 161656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRowidReg = 0; /* Rowid is stored in this register, if not zero */
161110 161657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iReleaseReg = 0; /* Temp register to free before returning */
161111 161658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx = 0; /* Index used by loop (if any) */
161112 161659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLoop; /* Iteration of constraint generator loop */
@@ -161146,11 +161693,11 @@
161146 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
161147 161694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** means to continue with the next IN value combination. When
161148 161695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** there are no IN operators in the constraints, the "addrNxt" label
161149 161696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is the same as "addrBrk".
161150 161697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
161151 { 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;
161152 161699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrCont = pLevel->addrCont = sqlite3VdbeMakeLabel(pParse);
161153 161700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161154 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
161155 161702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** initialize a memory cell that records if this table matches any
161156 161703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** row of the left table of the join.
@@ -161162,18 +161709,10 @@
161162 161709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->iLeftJoin = ++pParse->nMem;
161163 161710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, pLevel->iLeftJoin);
161164 161711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "init LEFT JOIN match flag"));
161165 161712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161166 161713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161167 { 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
161168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** this loop is empty and can never contribute content. */
161169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(j=iLevel; j>0; j--){
161170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWInfo->a[j].iLeftJoin ) break;
161171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWInfo->a[j].pRJ ) break;
161172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
161173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrHalt = pWInfo->a[j].addrBrk;
161174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
161175 161714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Special case of a FROM clause subquery implemented as a co-routine */
161176 161715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTabItem->fg.viaCoroutine ){
161177 161716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regYield;
161178 161717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Subquery *pSubq;
161179 161718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTabItem->fg.isSubquery && pTabItem->u4.pSubq!=0 );
@@ -161408,11 +161947,11 @@
161408 161947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, pX->op==TK_LE);
161409 161948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, pX->op==TK_LT);
161410 161949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, pX->op==TK_GE);
161411 161950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, rTemp);
161412 161951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
161413 { 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);
161414 161953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev==0);
161415 161954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev!=0);
161416 161955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161417 161956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pEnd ){
161418 161957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pX;
@@ -161448,40 +161987,40 @@
161448 161987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, testOp==OP_Ge);
161449 161988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, testOp==OP_Gt);
161450 161989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, SQLITE_AFF_NUMERIC | SQLITE_JUMPIFNULL);
161451 161990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161452 161991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pLoop->wsFlags & WHERE_INDEXED ){
161453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Case 4: A scan using an index.
161454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The WHERE clause may contain zero or more equality
161456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** terms ("==" or "IN" operators) that refer to the N
161457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** left-most columns of the index. It may also contain
161458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** inequality constraints (>, <, >= or <=) on the indexed
161459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** column that immediately follows the N equalities. Only
161460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the right-most column can be an inequality - the rest must
161461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** use the "==" and "IN" operators. For example, if the
161462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** index is on (x,y,z), then the following clauses are all
161463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** optimized:
161464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5
161466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND y=10
161467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND y<10
161468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND y>5 AND y<10
161469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND y=5 AND z<=10
161470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The z<10 term of the following cannot be used, only
161472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the x=5 term:
161473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** x=5 AND z<10
161475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** N may be zero if there are inequality constraints.
161477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If there are no inequality constraints, then N is at
161478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** least one.
161479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
161480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This case is also used when there are no WHERE clause
161481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** constraints but an index is selected anyway, in order
161482 { 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.
161483 162022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
161484 162023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const u8 aStartOp[] = {
161485 162024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0,
161486 162025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0,
161487 162026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OP_Rewind, /* 2: (!start_constraints && startEq && !bRev) */
@@ -161818,16 +162357,17 @@
161818 162357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161819 162358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
161820 162359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->iLeftJoin==0 ){
161821 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
161822 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
161823 { 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:
161824 162364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
161825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 2019-11-02 ticket 623eff57e76d45f6: This optimization does not work
161826 { 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)
161827 162367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
161828 { 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 ){
161829 162369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereApplyPartialIndexConstraints(pIdx->pPartIdxWhere, iCur, pWC);
161830 162370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161831 162371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
161832 162372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pIdx->pPartIdxWhere );
161833 162373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The following assert() is not a requirement, merely an observation:
@@ -162202,11 +162742,11 @@
162202 162742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = OP_Noop;
162203 162743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
162204 162744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codeCursorHint(pTabItem, pWInfo, pLevel, 0);
162205 162745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = aStep[bRev];
162206 162746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p1 = iCur;
162207 { 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);
162208 162748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev==0);
162209 162749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev!=0);
162210 162750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP;
162211 162751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
162212 162752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -163496,34 +164036,46 @@
163496 164036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** column references. This routine checks to see if pExpr is an equivalence
163497 164037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** relation:
163498 164038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 1. The SQLITE_Transitive optimization must be enabled
163499 164039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2. Must be either an == or an IS operator
163500 164040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 3. Not originating in the ON clause of an OUTER JOIN
163501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 4. The affinities of A and B must be compatible
163502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 5a. Both operands use the same collating sequence OR
163503 { 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
163504 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
163505 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.
163506 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
163507 164048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** returned when it should not be, then incorrect answers might result.
163508 164049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
163509 { 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){
163510 164051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char aff1, aff2;
163511 164052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CollSeq *pColl;
163512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !OptimizationEnabled(pParse->db, SQLITE_Transitive) ) return 0;
163513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0;
163514 { 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!
+ }
163515 164063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff1 = sqlite3ExprAffinity(pExpr->pLeft);
163516 164064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff2 = sqlite3ExprAffinity(pExpr->pRight);
163517 164065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aff1!=aff2
163518 164066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (!sqlite3IsNumericAffinity(aff1) || !sqlite3IsNumericAffinity(aff2))
163519 164067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
163520 { 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) */
163521 164069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
163522 164070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColl = sqlite3ExprCompareCollSeq(pParse, pExpr);
163523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3IsBinary(pColl) ) return 1;
163524 { 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;
163525 164077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
163526 164078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
163527 164079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
163528 164080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Recursively walk the expressions of a SELECT statement and generate
163529 164081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a bitmask indicating which tables are used in that expression
@@ -163677,10 +164229,13 @@
163677 164229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ){
163678 164230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
163679 164231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
163680 164232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWC->nTerm > idxTerm );
163681 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
163682 164237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMaskSet = &pWInfo->sMaskSet;
163683 164238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pTerm->pExpr;
163684 164239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr!=0 ); /* Because malloc() has not failed */
163685 164240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op!=TK_AS && pExpr->op!=TK_COLLATE );
163686 164241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMaskSet->bVarSelect = 0;
@@ -163784,12 +164339,12 @@
163784 164339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = &pWC->a[idxNew];
163785 164340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
markTermAsChild(pWC, idxNew, idxTerm);
163786 164341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_IS ) pNew->wtFlags |= TERM_IS;
163787 164342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm = &pWC->a[idxTerm];
163788 164343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->wtFlags |= TERM_COPIED;
163789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
163790 { 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) ){
163791 164346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->eOperator |= WO_EQUIV;
163792 164347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eExtraOp = WO_EQUIV;
163793 164348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
163794 164349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
163795 164350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDup = pExpr;
@@ -164091,11 +164646,11 @@
164091 164646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewExpr->w.iJoin = pExpr->w.iJoin;
164092 164647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164093 164648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC);
164094 164649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( idxNew==0 );
164095 164650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm = &pWC->a[idxNew];
164096 { 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;
164097 164652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm->leftCursor = pLeft->iTable;
164098 164653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm->u.x.leftColumn = pLeft->iColumn;
164099 164654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm->eOperator = WO_AUX;
164100 164655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNewTerm->eMatchOp = eOp2;
164101 164656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
markTermAsChild(pWC, idxNew, idxTerm);
@@ -164202,11 +164757,11 @@
164202 164757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SELECT statement passed as the second argument. These terms are only
164203 164758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** added if:
164204 164759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
164205 164760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 1. The SELECT statement has a LIMIT clause, and
164206 164761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2. The SELECT statement is not an aggregate or DISTINCT query, and
164207 { 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
164208 164763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that object is a virtual table, and
164209 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
164210 164765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the virtual table xBestIndex method.
164211 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
164212 164767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** method.
@@ -164239,12 +164794,26 @@
164239 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
164240 164795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will only be added if each of the child terms passes the
164241 164796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (leftCursor==iCsr) test below. */
164242 164797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
164243 164798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWC->a[ii].leftCursor!=iCsr ) return;
164245 { 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;
164246 164815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164247 164816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
164248 164817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check condition (5). Return early if it is not met. */
164249 164818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrderBy ){
164250 164819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pOrderBy->nExpr; ii++){
@@ -164904,15 +165473,15 @@
164904 165473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
164905 165474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164906 165475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pScan->pWC = pWC;
164907 165476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pScan->k = k+1;
164908 165477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef WHERETRACE_ENABLED
164909 { 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 ){
164910 165479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii;
164911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3DebugPrintf("SCAN-TERM %p: nEquiv=%d",
164912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTerm, pScan->nEquiv);
164913 { 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++){
164914 165483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf(" {%d:%d}",
164915 165484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pScan->aiCur[ii], pScan->aiColumn[ii]);
164916 165485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164917 165486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf("\n");
164918 165487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -165679,11 +166248,13 @@
165679 166248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_InitCoroutine, regYield, 0, pSubq->addrFillSub);
165680 166249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrTop = sqlite3VdbeAddOp1(v, OP_Yield, regYield);
165681 166250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
165682 166251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "next row of %s", pSrc->pSTab->zName));
165683 166252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
165684 { 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);
165685 166256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
165686 166257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPartial ){
165687 166258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iContinue = sqlite3VdbeMakeLabel(pParse);
165688 166259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprIfFalse(pParse, pPartial, iContinue, SQLITE_JUMPIFNULL);
165689 166260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop->wsFlags |= WHERE_PARTIALIDX;
@@ -165707,15 +166278,18 @@
165707 166278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLevel->iIdxCur>0 );
165708 166279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
translateColumnToCopy(pParse, addrTop, pLevel->iTabCur,
165709 166280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->u4.pSubq->regResult, pLevel->iIdxCur);
165710 166281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGoto(v, addrTop);
165711 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);
165712 166284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
165713 166285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1); VdbeCoverage(v);
165714 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!
+ }
165715 166290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
165716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, addrTop);
165717 166291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempReg(pParse, regRecord);
165718 166292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
165719 166293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Jump here when skipping the initialization */
165720 166294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrInit);
165721 166295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeScanStatusRange(v, addrExp, addrExp, -1);
@@ -166863,10 +167437,11 @@
166863 167437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zLeft),zLeft,"indexable=0x%llx",
166864 167438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->u.pOrInfo->indexable);
166865 167439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
166866 167440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zLeft),zLeft,"left=%d", pTerm->leftCursor);
166867 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);
166868 167443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf(
166869 167444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"TERM-%-3d %p %s %-12s op=%03x wtFlags=%04x",
166870 167445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTerm, pTerm, zType, zLeft, pTerm->eOperator, pTerm->wtFlags);
166871 167446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The 0x10000 .wheretrace flag causes extra information to be
166872 167447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** shown about each Term */
@@ -167637,15 +168212,12 @@
167637 168212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opMask = WO_LT|WO_LE;
167638 168213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
167639 168214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNew->u.btree.nBtm==0 );
167640 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;
167641 168216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pProbe->bUnordered || pProbe->bLowQual ){
167643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pProbe->bUnordered ) opMask &= ~(WO_GT|WO_GE|WO_LT|WO_LE);
167644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pProbe->bLowQual && pSrc->fg.isIndexedBy==0 ){
167645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- opMask &= ~(WO_EQ|WO_IN|WO_IS);
167646 { 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);
167647 168219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167648 168220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
167649 168221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNew->u.btree.nEq<pProbe->nColumn );
167650 168222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNew->u.btree.nEq<pProbe->nKeyCol
167651 168223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pProbe->idxType!=SQLITE_IDXTYPE_PRIMARYKEY );
@@ -167714,19 +168286,33 @@
167714 168286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eOp & WO_IN ){
167715 168287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pTerm->pExpr;
167716 168288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprUseXSelect(pExpr) ){
167717 168289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* "x IN (SELECT ...)": TUNING: the SELECT returns 25 rows */
167718 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;
167719 168292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nIn = 46; assert( 46==sqlite3LogEst(25) );
167720 168293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
167721 168294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The expression may actually be of the form (x, y) IN (SELECT...).
167722 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).
167723 168296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** However, the nIn multiplier should only be applied once, not once
167724 168297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for each such term. The following loop checks that pTerm is the
167725 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. */
167726 168299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pNew->nLTerm-1; i++){
167727 { 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;
167728 168314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167729 168315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( ALWAYS(pExpr->x.pList && pExpr->x.pList->nExpr) ){
167730 168316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* "x IN (value, value, ...)" */
167731 168317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nIn = sqlite3LogEst(pExpr->x.pList->nExpr);
167732 168318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -167954,11 +168540,11 @@
167954 168540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167955 168541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
167956 168542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pNew->wsFlags & WHERE_TOP_LIMIT)==0
167957 168543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pNew->u.btree.nEq<pProbe->nColumn
167958 168544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pNew->u.btree.nEq<pProbe->nKeyCol ||
167959 { 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)
167960 168546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
167961 168547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew->u.btree.nEq>3 ){
167962 168548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ProgressCheck(pParse);
167963 168549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167964 168550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nInMul+nIn);
@@ -167993,10 +168579,11 @@
167993 168579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& saved_nEq==pNew->nLTerm
167994 168580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pProbe->noSkipScan==0
167995 168581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pProbe->hasStat1!=0
167996 168582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& OptimizationEnabled(db, SQLITE_SkipScan)
167997 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
167998 168585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (rc = whereLoopResize(db, pNew, pNew->nLTerm+1))==SQLITE_OK
167999 168586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
168000 168587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LogEst nIter;
168001 168588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.btree.nEq++;
168002 168589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nSkip++;
@@ -168083,10 +168670,11 @@
168083 168670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr;
168084 168671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pTerm->pExpr;
168085 168672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (!ExprHasProperty(pExpr, EP_OuterON) || pExpr->w.iJoin==iTab)
168086 168673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& ((jointype & JT_OUTER)==0 || ExprHasProperty(pExpr, EP_OuterON))
168087 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)
168088 168676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pTerm->wtFlags & TERM_VNULL)==0
168089 168677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
168090 168678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
168091 168679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
168092 168680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -168578,11 +169166,11 @@
168578 169166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
168579 169167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( m==0
168580 169168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (HasRowid(pTab) || pWInfo->pSelect!=0 || sqlite3FaultSim(700))
168581 169169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
168582 169170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WHERETRACE(0x200,
168583 { 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",
168584 169172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pProbe->zName, m==0 ? "is" : "is not"));
168585 169173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->wsFlags = WHERE_IDX_ONLY | WHERE_INDEXED;
168586 169174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
168587 169175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
168588 169176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -171549,10 +172137,18 @@
171549 172137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171550 172138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTabItem = &pTabList->a[pLevel->iFrom];
171551 172139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pTabItem->pSTab;
171552 172140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
171553 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!
+ }
171554 172150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTab->tabFlags & TF_Ephemeral)!=0 || IsView(pTab) ){
171555 172151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do nothing */
171556 172152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
171557 172153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
171558 172154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){
@@ -171600,10 +172196,17 @@
171600 172196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171601 172197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_COLUMN_USED_MASK
171602 172198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4Dup8(v, OP_ColumnsUsed, pTabItem->iCursor, 0, 0,
171603 172199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(const u8*)&pTabItem->colUsed, P4_INT64);
171604 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!
+ }
171605 172208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
171606 172209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
171607 172210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171608 172211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & WHERE_INDEXED ){
171609 172212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIx = pLoop->u.btree.pIndex;
@@ -171856,10 +172459,13 @@
171856 172459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_SeekLT);
171857 172460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, op==OP_SeekGT);
171858 172461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Goto, 1, pLevel->p2);
171859 172462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171860 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!
+ }
171861 172467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The common case: Advance to the next row */
171862 172468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->addrCont ) sqlite3VdbeResolveLabel(v, pLevel->addrCont);
171863 172469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, pLevel->op, pLevel->p1, pLevel->p2, pLevel->p3);
171864 172470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP5(v, pLevel->p5);
171865 172471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
@@ -179928,16 +180534,25 @@
179928 180534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Expressions of the form
179929 180535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
179930 180536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expr1 IN ()
179931 180537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expr1 NOT IN ()
179932 180538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
179933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** simplify to constants 0 (false) and 1 (true), respectively,
179934 { 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.
179935 180545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
179936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy590);
179937 { 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");
179938 { 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!
+ }
179939 180554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
179940 180555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRHS = yymsp[-1].minor.yy402->a[0].pExpr;
179941 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 ){
179942 180557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yymsp[-1].minor.yy402->a[0].pExpr = 0;
179943 180558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy402);
@@ -181539,11 +182154,11 @@
181539 182154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int getToken(const unsigned char **pz){
181540 182155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned char *z = *pz;
181541 182156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int t; /* Token type to return */
181542 182157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do {
181543 182158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z += sqlite3GetToken(z, &t);
181544 { 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 );
181545 182160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( t==TK_ID
181546 182161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| t==TK_STRING
181547 182162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| t==TK_JOIN_KW
181548 182163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| t==TK_WINDOW
181549 182164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| t==TK_OVER
@@ -184489,10 +185104,11 @@
184489 185104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_API_ARMOR
184490 185105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
184491 185106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
184492 185107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ms<-1 ) return SQLITE_RANGE;
184493 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);
184494 185110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->setlkTimeout = ms;
184495 185111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->setlkFlags = flags;
184496 185112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeEnterAll(db);
184497 185113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iDb=0; iDb<db->nDb; iDb++){
184498 185114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt = db->aDb[iDb].pBt;
@@ -184500,10 +185116,11 @@
184500 185116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_file *fd = sqlite3PagerFile(sqlite3BtreePager(pBt));
184501 185117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OsFileControlHint(fd, SQLITE_FCNTL_BLOCK_ON_CONNECT, (void*)&bBOC);
184502 185118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
184503 185119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
184504 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);
184505 185122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
184506 185123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_ENABLE_API_ARMOR) && !defined(SQLITE_ENABLE_SETLK_TIMEOUT)
184507 185124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(db);
184508 185125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(flags);
184509 185126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -188886,11 +189503,11 @@
188886 189503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188887 189504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
188888 189505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros needed to provide flexible arrays in a portable way
188889 189506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
188890 189507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef offsetof
188891 { 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))
188892 189509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
188893 189510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
188894 189511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY
188895 189512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
188896 189513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY 1
@@ -209119,12 +209736,14 @@
209119 209736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtra = 0;
209120 209737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( szType==12 ){
209121 209738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtra = 1;
209122 209739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( szType==13 ){
209123 209740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtra = 2;
209124 { 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 ){
209125 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;
209126 209745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209127 209746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( szPayload<=11 ){
209128 209747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nNeeded = 0;
209129 209748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( szPayload<=0xff ){
209130 209749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nNeeded = 1;
@@ -209590,11 +210209,16 @@
209590 210209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c = z[++j];
209591 210210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='"' || c=='\\' || c=='/' || c=='b' || c=='f'
209592 210211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| c=='n' || c=='r' || c=='t'
209593 210212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (c=='u' && jsonIs4Hex(&z[j+1])) ){
209594 210213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( opcode==JSONB_TEXT ) opcode = JSONB_TEXTJ;
209595 { 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
209596 210220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (0xe2==(u8)c && 0x80==(u8)z[j+1]
209597 210221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (0xa8==(u8)z[j+2] || 0xa9==(u8)z[j+2]))
209598 210222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (c=='x' && jsonIs2Hex(&z[j+1])) ){
209599 210223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opcode = JSONB_TEXT5;
209600 210224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->hasNonstd = 1;
@@ -209977,11 +210601,11 @@
209977 210601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pParse->aBlob[i+4]!=0
209978 210602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
209979 210603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pSz = 0;
209980 210604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
209981 210605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209982 { 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) +
209983 210607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(pParse->aBlob[i+7]<<8) + pParse->aBlob[i+8];
209984 210608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = 9;
209985 210609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209986 210610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (i64)i+sz+n > pParse->nBlob
209987 210611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (i64)i+sz+n > pParse->nBlob-pParse->delta
@@ -210558,11 +211182,25 @@
210558 211182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'f': { *piOut = '\f'; return 2; }
210559 211183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'n': { *piOut = '\n'; return 2; }
210560 211184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'r': { *piOut = '\r'; return 2; }
210561 211185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 't': { *piOut = '\t'; return 2; }
210562 211186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'v': { *piOut = '\v'; return 2; }
210563 { 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!
+ }
210564 211202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '\'':
210565 211203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '"':
210566 211204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '/':
210567 211205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '\\':{ *piOut = z[1]; return 2; }
210568 211206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'x': {
@@ -212665,22 +213303,24 @@
212665 213303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z;
212666 213304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 n;
212667 213305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(argc);
212668 213306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr));
212669 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);
212670 213310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pStr->zBuf==0 ){
212671 213311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonStringInit(pStr, ctx);
212672 213312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendChar(pStr, '{');
212673 { 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 ){
212674 213314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendChar(pStr, ',');
212675 213315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212676 213316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStr->pCtx = ctx;
212677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- z = (const char*)sqlite3_value_text(argv[0]);
212678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- n = sqlite3Strlen30(z);
212679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jsonAppendString(pStr, z, n);
212680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- jsonAppendChar(pStr, ':');
212681 { 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!
+ }
212682 213322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212683 213323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
212684 213324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void jsonObjectCompute(sqlite3_context *ctx, int isFinal){
212685 213325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
JsonString *pStr;
212686 213326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
@@ -213484,10 +214124,12 @@
213484 214124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
213485 214125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include "sqlite3.h" */
213486 214126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
213487 214127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3GetToken(const unsigned char*,int*); /* In the SQLite core */
213488 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!
+
213489 214131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
213490 214132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If building separately, we will need some setup that is normally
213491 214133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** found in sqliteInt.h
213492 214134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
213493 214135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_AMALGAMATION)
@@ -213515,11 +214157,11 @@
213515 214157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
213516 214158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define ALWAYS(X) (X)
213517 214159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define NEVER(X) (X)
213518 214160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
213519 214161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef offsetof
213520 { 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))
213521 214163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
213522 214164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
213523 214165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY
213524 214166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
213525 214167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY 1
@@ -214553,10 +215195,16 @@
214553 215195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStmt = pCsr->pReadAux;
214554 215196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(pCsr, 0, sizeof(RtreeCursor));
214555 215197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->base.pVtab = (sqlite3_vtab*)pRtree;
214556 215198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->pReadAux = pStmt;
214557 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);
214558 215206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
214559 215207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
214560 215208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
214561 215209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Rtree virtual table module xClose method.
214562 215210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -227832,11 +228480,12 @@
227832 228480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DbpageTable *pTab = (DbpageTable *)pCursor->pVtab;
227833 228481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
227834 228482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pTab->db;
227835 228483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Btree *pBt;
227836 228484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
227837 { 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);
227838 228487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
227839 228488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Default setting is no rows of result */
227840 228489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->pgno = 1;
227841 228490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCsr->mxPgno = 0;
227842 228491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -231494,18 +232143,19 @@
231494 232143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
231495 232144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the SessionInput object passed as the only argument is a streaming
231496 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.
231497 232146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
231498 232147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void sessionDiscardData(SessionInput *pIn){
231499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pIn->xInput && pIn->iNext>=sessions_strm_chunk_size ){
231500 { 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;
231501 232150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nMove>=0 );
231502 232151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nMove>0 ){
231503 { 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);
231504 232153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIn->buf.nBuf -= pIn->iNext;
231506 { 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;
231507 232157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIn->nData = pIn->buf.nBuf;
231508 232158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231509 232159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231510 232160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231511 232161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -231855,12 +232505,12 @@
231855 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
231856 232506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it, or for the two single byte values otherwise. */
231857 232507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = sessionInputBuffer(&p->in, 2);
231858 232508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc!=SQLITE_OK ) return p->rc;
231859 232509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sessionDiscardData(&p->in);
231861 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);
231862 232512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231863 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. */
231864 232514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->in.iNext>=p->in.nData ){
231865 232515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_DONE;
231866 232516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -233279,10 +233929,14 @@
233279 233929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *pIter, /* Changeset to apply */
233280 233930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xFilter)(
233281 233931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of sixth arg to _apply() */
233282 233932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTab /* Table name */
233283 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!
+ ),
233284 233938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xConflict)(
233285 233939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* Copy of fifth arg to _apply() */
233286 233940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
233287 233941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
233288 233942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
@@ -233418,10 +234072,13 @@
233418 234072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233419 234073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233420 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
233421 234075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** next change. A log message has already been issued. */
233422 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;
233423 234080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233424 234081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sessionApplyOneWithRetry(db, pIter, &sApply, xConflict, pCtx);
233425 234082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233426 234083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233427 234084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bPatchset = pIter->bPatchset;
@@ -233485,10 +234142,91 @@
233485 234142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->aDb[0].pSchema->schema_cookie -= 32;
233486 234143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233487 234144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(sqlite3_db_mutex(db));
233488 234145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
233489 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!
+ }
233490 234228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233491 234229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
233492 234230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply the changeset passed via pChangeset/nChangeset to the main
233493 234231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database attached to handle "db".
233494 234232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -233507,21 +234245,43 @@
233507 234245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
233508 234246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* First argument passed to xConflict */
233509 234247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void **ppRebase, int *pnRebase,
233510 234248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags
233511 234249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
233512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_changeset_iter *pIter; /* Iterator to skip through changeset */
233513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bInv = !!(flags & SQLITE_CHANGESETAPPLY_INVERT);
233514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc = sessionChangesetStart(&pIter, 0, 0, nChangeset, pChangeset, bInv, 1);
233515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
233516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc==SQLITE_OK ){
233517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sessionChangesetApply(
233518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db, pIter, xFilter, xConflict, pCtx, ppRebase, pnRebase, flags
233519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
233520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
233521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
233522 { 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!
+ );
233523 234283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233524 234284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233525 234285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
233526 234286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply the changeset passed via pChangeset/nChangeset to the main database
233527 234287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** attached to handle "db". Invoke the supplied conflict handler callback
@@ -233540,20 +234300,45 @@
233540 234300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
233541 234301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
233542 234302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
233543 234303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx /* First argument passed to xConflict */
233544 234304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
233545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return sqlite3changeset_apply_v2(
233546 { 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
233547 234309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
233548 234310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233549 234311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233550 234312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
233551 234313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Apply the changeset passed via xInput/pIn to the main database
233552 234314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** attached to handle "db". Invoke the supplied conflict handler callback
233553 234315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to resolve any conflicts encountered while applying the change.
233554 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!
+ }
233555 234340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3changeset_apply_v2_strm(
233556 234341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db, /* Apply change to "main" db of this handle */
233557 234342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
233558 234343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pIn, /* First arg for xInput */
233559 234344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int(*xFilter)(
@@ -233567,19 +234352,15 @@
233567 234352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
233568 234353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx, /* First argument passed to xConflict */
233569 234354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void **ppRebase, int *pnRebase,
233570 234355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags
233571 234356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
233572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_changeset_iter *pIter; /* Iterator to skip through changeset */
233573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bInverse = !!(flags & SQLITE_CHANGESETAPPLY_INVERT);
233574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc = sessionChangesetStart(&pIter, xInput, pIn, 0, 0, bInverse, 1);
233575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc==SQLITE_OK ){
233576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sessionChangesetApply(
233577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db, pIter, xFilter, xConflict, pCtx, ppRebase, pnRebase, flags
233578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
233579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
233580 { 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!
+ );
233581 234362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233582 234363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3changeset_apply_strm(
233583 234364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db, /* Apply change to "main" db of this handle */
233584 234365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
233585 234366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pIn, /* First arg for xInput */
@@ -233592,12 +234373,14 @@
233592 234373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
233593 234374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *p /* Handle describing change and conflict */
233594 234375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
),
233595 234376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCtx /* First argument passed to xConflict */
233596 234377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
233597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return sqlite3changeset_apply_v2_strm(
233598 { 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
233599 234382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
233600 234383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
233601 234384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
233602 234385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
233603 234386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_changegroup handle.
@@ -234215,18 +234998,23 @@
234215 234998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
234216 234999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3changegroup_add_change(
234217 235000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changegroup *pGrp,
234218 235001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_changeset_iter *pIter
234219 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!
+
234220 235005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIter->in.iCurrent==pIter->in.iNext
234221 235006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pIter->rc!=SQLITE_OK
234222 235007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pIter->bInvert
234223 235008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
234224 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. */
234225 { 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);
234226 235014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
234227 { 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;
234228 235016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
234229 235017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
234230 235018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
234231 235019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Obtain a buffer containing a changeset representing the concatenation
234232 235020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of all changesets added to the group so far.
@@ -235520,10 +236308,11 @@
235520 236308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include "sqlite3ext.h" */
235521 236309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_EXTENSION_INIT1
235522 236310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
235523 236311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include <string.h> */
235524 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> */
235525 236314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
235526 236315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_AMALGAMATION
235527 236316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
235528 236317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef unsigned char u8;
235529 236318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef unsigned int u32;
@@ -235579,11 +236368,11 @@
235579 236368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
235580 236369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
235581 236370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros needed to provide flexible arrays in a portable way
235582 236371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
235583 236372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef offsetof
235584 { 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))
235585 236374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
235586 236375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
235587 236376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY
235588 236377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
235589 236378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define FLEXARRAY 1
@@ -244763,10 +245552,40 @@
244763 245552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer term; /* Current term */
244764 245553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iRowid; /* Current rowid */
244765 245554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nPos; /* Number of bytes in current position list */
244766 245555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 bDel; /* True if the delete flag is set */
244767 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!
+
244768 245587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
244769 245588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
244770 245589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Array of tombstone pages. Reference counted.
244771 245590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
244772 245591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct Fts5TombstoneArray {
@@ -245053,11 +245872,11 @@
245053 245872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If either of the sqlite3_blob_open() or sqlite3_blob_reopen() calls
245054 245873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** above returned SQLITE_ERROR, return SQLITE_CORRUPT_VTAB instead.
245055 245874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** All the reasons those functions might return SQLITE_ERROR - missing
245056 245875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table, missing row, non-blob/text in block column - indicate
245057 245876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** backing store corruption. */
245058 { 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);
245059 245878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
245060 245879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
245061 245880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *aOut = 0; /* Read blob data into this buffer */
245062 245881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte = sqlite3_blob_bytes(p->pReader);
245063 245882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int szData = (sizeof(Fts5Data) + 7) & ~7;
@@ -245103,11 +245922,11 @@
245103 245922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
245104 245923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static Fts5Data *fts5LeafRead(Fts5Index *p, i64 iRowid){
245105 245924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Data *pRet = fts5DataRead(p, iRowid);
245106 245925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet ){
245107 245926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet->nn<4 || pRet->szLeaf>pRet->nn ){
245108 { 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);
245109 245928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pRet);
245110 245929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet = 0;
245111 245930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245112 245931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245113 245932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRet;
@@ -245462,12 +246281,18 @@
245462 246281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pData = fts5DataRead(p, FTS5_STRUCTURE_ROWID);
245463 246282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc==SQLITE_OK ){
245464 246283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* TODO: Do we need this if the leaf-index is appended? Probably... */
245465 246284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&pData->p[pData->nn], 0, FTS5_DATA_PADDING);
245466 246285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = fts5StructureDecode(pData->p, pData->nn, &iCookie, &pRet);
245467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->rc==SQLITE_OK && (pConfig->pgsz==0 || pConfig->iCookie!=iCookie) ){
245468 { 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!
+ );
245469 246294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245470 246295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pData);
245471 246296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc!=SQLITE_OK ){
245472 246297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5StructureRelease(pRet);
245473 246298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet = 0;
@@ -246086,11 +246911,11 @@
246086 246911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246087 246912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ASSERT_SZLEAF_OK(pIter->pLeaf);
246088 246913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( iOff>=pIter->pLeaf->szLeaf ){
246089 246914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5SegIterNextPage(p, pIter);
246090 246915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIter->pLeaf==0 ){
246091 { 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);
246092 246917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246093 246918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246094 246919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = 4;
246095 246920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a = pIter->pLeaf->p;
246096 246921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -246118,11 +246943,11 @@
246118 246943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iOff = pIter->iLeafOffset; /* Offset to read at */
246119 246944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nNew; /* Bytes of new data */
246120 246945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246121 246946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&a[iOff], nNew);
246122 246947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff+nNew>pIter->pLeaf->szLeaf || nKeep>pIter->term.n || nNew==0 ){
246123 { 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);
246124 246949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246125 246950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246126 246951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->term.n = nKeep;
246127 246952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendBlob(&p->rc, &pIter->term, nNew, &a[iOff]);
246128 246953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pIter->term.n<=pIter->term.nSpace );
@@ -246160,13 +246985,13 @@
246160 246985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allocate a tombstone hash page array object (pIter->pTombArray) for
246161 246986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the iterator passed as the second argument. If an OOM error occurs,
246162 246987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** leave an error in the Fts5Index object.
246163 246988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
246164 246989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void fts5SegIterAllocTombstone(Fts5Index *p, Fts5SegIter *pIter){
246165 { 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;
246166 246991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nTomb>0 ){
246167 { 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);
246168 246993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5TombstoneArray *pNew;
246169 246994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = (Fts5TombstoneArray*)sqlite3Fts5MallocZero(&p->rc, nByte);
246170 246995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew ){
246171 246996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nTombstone = nTomb;
246172 246997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nRef = 1;
@@ -246313,11 +247138,11 @@
246313 247138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
246314 247139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRowidOff;
246315 247140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRowidOff = fts5LeafFirstRowidOff(pNew);
246316 247141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowidOff ){
246317 247142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowidOff>=pNew->szLeaf ){
246318 { 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);
246319 247144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
246320 247145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->pLeaf = pNew;
246321 247146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafOffset = iRowidOff;
246322 247147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246323 247148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -246547,11 +247372,11 @@
246547 247372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iEndofDoclist = iOff;
246548 247373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bNewTerm = 1;
246549 247374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246550 247375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert_nc( iOff<pLeaf->szLeaf );
246551 247376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>pLeaf->szLeaf ){
246552 { 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);
246553 247378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246554 247379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246555 247380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246556 247381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246557 247382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -246655,22 +247480,24 @@
246655 247480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLast ){
246656 247481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOff;
246657 247482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pIter->pLeaf);
246658 247483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->pLeaf = pLast;
246659 247484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafPgno = pgnoLast;
246660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iOff = fts5LeafFirstRowidOff(pLast);
246661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iOff>pLast->szLeaf ){
246662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->rc = FTS5_CORRUPT;
246663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
246664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
246665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iOff += fts5GetVarint(&pLast->p[iOff], (u64*)&pIter->iRowid);
246666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIter->iLeafOffset = iOff;
246667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
246668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fts5LeafIsTermless(pLast) ){
246669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIter->iEndofDoclist = pLast->nn+1;
246670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
246671 { 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!
+ }
246672 247499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246673 247500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246674 247501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246675 247502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5SegIterReverseInitPage(p, pIter);
246676 247503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -246736,11 +247563,11 @@
246736 247563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246737 247564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx = (u32)pIter->pLeaf->szLeaf;
246738 247565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx += fts5GetVarint32(&a[iPgidx], iTermOff);
246739 247566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = iTermOff;
246740 247567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>n ){
246741 { 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);
246742 247569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246743 247570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246744 247571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246745 247572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( 1 ){
246746 247573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -246779,11 +247606,11 @@
246779 247606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx += fts5GetVarint32(&a[iPgidx], nKeep);
246780 247607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTermOff += nKeep;
246781 247608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = iTermOff;
246782 247609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246783 247610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>=n ){
246784 { 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);
246785 247612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246786 247613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246787 247614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246788 247615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Read the nKeep field of the next term. */
246789 247616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5FastGetVarint32(a, iOff, nKeep);
@@ -246801,11 +247628,11 @@
246801 247628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a = pIter->pLeaf->p;
246802 247629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fts5LeafIsTermless(pIter->pLeaf)==0 ){
246803 247630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx = (u32)pIter->pLeaf->szLeaf;
246804 247631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx += fts5GetVarint32(&pIter->pLeaf->p[iPgidx], iOff);
246805 247632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff<4 || (i64)iOff>=pIter->pLeaf->szLeaf ){
246806 { 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);
246807 247634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246808 247635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
246809 247636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKeep = 0;
246810 247637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTermOff = iOff;
246811 247638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = (u32)pIter->pLeaf->nn;
@@ -246816,11 +247643,11 @@
246816 247643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}while( 1 );
246817 247644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246818 247645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246819 247646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
search_success:
246820 247647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (i64)iOff+nNew>n || nNew<1 ){
246821 { 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);
246822 247649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
246823 247650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
246824 247651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafOffset = iOff + nNew;
246825 247652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iTermLeafOffset = pIter->iLeafOffset;
246826 247653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iTermLeafPgno = pIter->iLeafPgno;
@@ -247281,11 +248108,11 @@
247281 248108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iLeafPgno
247282 248109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
247283 248110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iLeafPgno>pIter->iLeafPgno );
247284 248111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
247285 248112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iLeafPgno>pIter->pSeg->pgnoLast ){
247286 { 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);
247287 248114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
247288 248115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pIter->pNextLeaf);
247289 248116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->pNextLeaf = 0;
247290 248117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafPgno = iLeafPgno-1;
247291 248118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -247296,11 +248123,11 @@
247296 248123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = fts5LeafFirstRowidOff(pIter->pLeaf);
247297 248124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>0 ){
247298 248125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *a = pIter->pLeaf->p;
247299 248126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n = pIter->pLeaf->szLeaf;
247300 248127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff<4 || iOff>=n ){
247301 { 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);
247302 248129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
247303 248130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint(&a[iOff], (u64*)&pIter->iRowid);
247304 248131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIter->iLeafOffset = iOff;
247305 248132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5SegIterLoadNPos(p, pIter);
247306 248133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -247775,11 +248602,11 @@
247775 248602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nRem -= nChunk;
247776 248603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pData);
247777 248604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nRem<=0 ){
247778 248605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
247779 248606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pSeg->pSeg==0 ){
247780 { 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);
247781 248608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
247782 248609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
247783 248610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pgno++;
247784 248611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pData = fts5LeafRead(p, FTS5_SEGMENT_ROWID(pSeg->pSeg->iSegid, pgno));
247785 248612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pData==0 ) break;
@@ -248878,11 +249705,11 @@
248878 249705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>pData->szLeaf ){
248879 249706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This can occur if the pages that the segments occupy overlap - if
248880 249707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a single page has been assigned to more than one segment. In
248881 249708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this case a prior iteration of this loop may have corrupted the
248882 249709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** segment currently being trimmed. */
248883 { 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);
248884 249711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
248885 249712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferZero(&buf);
248886 249713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferGrow(&p->rc, &buf, pData->nn);
248887 249714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendBlob(&p->rc, &buf, sizeof(aHdr), aHdr);
248888 249715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendVarint(&p->rc, &buf, pSeg->term.n);
@@ -249345,11 +250172,11 @@
249345 250172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
249346 250173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeaf = 0;
249347 250174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( bDetailNone ){
249348 250175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
249349 250176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( iNext>=pLeaf->szLeaf || pLeaf->nn<pLeaf->szLeaf || iNext<4 ){
249350 { 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);
249351 250178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
249352 250179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
249353 250180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nShift = iNext - 4;
249354 250181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nPg;
249355 250182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -249365,11 +250192,11 @@
249365 250192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i1 = pLeaf->szLeaf;
249366 250193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i2 = 0;
249367 250194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
249368 250195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i1 += fts5GetVarint32(&aPg[i1], iFirst);
249369 250196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iFirst<iNext ){
249370 { 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);
249371 250198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
249372 250199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
249373 250200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aIdx = sqlite3Fts5MallocZero(&p->rc, (pLeaf->nn-pLeaf->szLeaf)+2);
249374 250201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aIdx==0 ) break;
249375 250202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i2 = sqlite3Fts5PutVarint(aIdx, iFirst-nShift);
@@ -249588,18 +250415,18 @@
249588 250415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
249589 250416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nPrefix = MIN(nPrefix, nPrefix2);
249590 250417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSuffix = (nPrefix2 + nSuffix2) - nPrefix;
249591 250418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
249592 250419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (iKeyOff+nSuffix)>iPgIdx || (iNextOff+nSuffix2)>iPgIdx ){
249593 { 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);
249594 250421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
249595 250422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iKey!=1 ){
249596 250423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += sqlite3Fts5PutVarint(&aPg[iOff], nPrefix);
249597 250424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
249598 250425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += sqlite3Fts5PutVarint(&aPg[iOff], nSuffix);
249599 250426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nPrefix2>pSeg->term.n ){
249600 { 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);
249601 250428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( nPrefix2>nPrefix ){
249602 250429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&aPg[iOff], &pSeg->term.p[nPrefix], nPrefix2-nPrefix);
249603 250430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += (nPrefix2-nPrefix);
249604 250431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
249605 250432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memmove(&aPg[iOff], &aPg[iNextOff], nSuffix2);
@@ -250019,11 +250846,11 @@
250019 250846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250020 250847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pStruct->aLevel[i].nMerge<=nThis );
250021 250848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250022 250849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250023 250850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte += (((i64)pStruct->nLevel)+1) * sizeof(Fts5StructureLevel);
250024 { 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) );
250025 250852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = (Fts5Structure*)sqlite3Fts5MallocZero(&p->rc, nByte);
250026 250853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250027 250854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew ){
250028 250855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5StructureLevel *pLvl;
250029 250856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte = nSeg * sizeof(Fts5StructureSegment);
@@ -250388,11 +251215,11 @@
250388 251215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5PrefixMergerInsertByPosition(&pHead, pSave);
250389 251216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSave = pNext;
250390 251217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250391 251218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250392 251219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pHead==0 || pHead->pNext==0 ){
250393 { 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);
250394 251221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
250395 251222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250396 251223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250397 251224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* See the earlier comment in this function for an explanation of why
250398 251225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** corrupt input position lists might cause the output to consume
@@ -250425,11 +251252,11 @@
250425 251252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250426 251253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* WRITEPOSLISTSIZE */
250427 251254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert_nc( tmp.n+nTail<=nTmp );
250428 251255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( tmp.n+nTail<=nTmp+nMerge*10 );
250429 251256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tmp.n+nTail>nTmp-FTS5_DATA_ZERO_PADDING ){
250430 { 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);
250431 251258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
250432 251259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250433 251260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSafeAppendVarint(&out, (tmp.n+nTail) * 2);
250434 251261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSafeAppendBlob(&out, tmp.p, tmp.n);
250435 251262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nTail>0 ){
@@ -252458,23 +253285,31 @@
252458 253285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252459 253286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252460 253287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
252461 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
252462 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.
252463 253293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
252464 253294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void fts5TestTerm(
252465 253295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Index *p,
252466 253296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer *pPrev, /* Previous term */
252467 253297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z, int n, /* Possibly new term to test */
252468 253298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 expected,
252469 { 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
252470 253301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
252471 253302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = p->rc;
252472 253303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPrev->n==0 ){
252473 253304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSet(&rc, pPrev, n, (const u8*)z);
252474 253305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
252475 { 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!
+ ){
252476 253311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 cksum3 = *pCksum;
252477 253312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTerm = (const char*)&pPrev->p[1]; /* term sans prefix-byte */
252478 253313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nTerm = pPrev->n-1; /* Size of zTerm in bytes */
252479 253314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iIdx = (pPrev->p[0] - FTS5_MAIN_PREFIX);
252480 253315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags = (iIdx==0 ? 0 : FTS5INDEX_QUERY_PREFIX);
@@ -252520,20 +253355,20 @@
252520 253355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252521 253356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cksum3 ^= ck1;
252522 253357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSet(&rc, pPrev, n, (const u8*)z);
252523 253358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252524 253359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && cksum3!=expected ){
252525 { 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;
252526 253361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252527 253362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pCksum = cksum3;
252528 253363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252529 253364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = rc;
252530 253365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252531 253366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252532 253367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
252533 253368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define fts5TestDlidxReverse(x,y,z)
252534 { 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)
252535 253370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
252536 253371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252537 253372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
252538 253373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Check that:
252539 253374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -252554,18 +253389,21 @@
252554 253389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Now check that the iter.nEmpty leaves following the current leaf
252555 253390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (a) exist and (b) contain no terms. */
252556 253391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=iFirst; p->rc==SQLITE_OK && i<=iLast; i++){
252557 253392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Data *pLeaf = fts5DataRead(p, FTS5_SEGMENT_ROWID(pSeg->iSegid, i));
252558 253393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLeaf ){
252559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !fts5LeafIsTermless(pLeaf) ) p->rc = FTS5_CORRUPT;
252560 { 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!
+ }
252561 253399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252562 253400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
252563 253401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252564 253402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252565 253403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252566 { 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){
252567 253405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iTermOff = 0;
252568 253406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii;
252569 253407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252570 253408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer buf1 = {0,0,0};
252571 253409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer buf2 = {0,0,0};
@@ -252579,33 +253417,33 @@
252579 253417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ii += fts5GetVarint32(&pLeaf->p[ii], nIncr);
252580 253418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTermOff += nIncr;
252581 253419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = iTermOff;
252582 253420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252583 253421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>=pLeaf->szLeaf ){
252584 { 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);
252585 253423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( iTermOff==nIncr ){
252586 253424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte;
252587 253425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&pLeaf->p[iOff], nByte);
252588 253426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (iOff+nByte)>pLeaf->szLeaf ){
252589 { 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);
252590 253428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252591 253429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSet(&p->rc, &buf1, nByte, &pLeaf->p[iOff]);
252592 253430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252593 253431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252594 253432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nKeep, nByte;
252595 253433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&pLeaf->p[iOff], nKeep);
252596 253434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&pLeaf->p[iOff], nByte);
252597 253435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nKeep>buf1.n || (iOff+nByte)>pLeaf->szLeaf ){
252598 { 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);
252599 253437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252600 253438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
buf1.n = nKeep;
252601 253439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferAppendBlob(&p->rc, &buf1, nByte, &pLeaf->p[iOff]);
252602 253440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252603 253441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252604 253442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc==SQLITE_OK ){
252605 253443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = fts5BufferCompare(&buf1, &buf2);
252606 { 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);
252607 253445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252608 253446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252609 253447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferSet(&p->rc, &buf2, buf1.n, buf1.p);
252610 253448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252611 253449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -252662,11 +253500,11 @@
252662 253500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
252663 253501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* special case - the very first page in a segment keeps its %_idx
252664 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
252665 253503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** operations. */
252666 253504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252667 { 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);
252668 253506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252669 253507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252670 253508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252671 253509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOff; /* Offset of first term on leaf */
252672 253510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRowidOff; /* Offset of first rowid on leaf */
@@ -252674,19 +253512,19 @@
252674 253512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int res; /* Comparison of term and split-key */
252675 253513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252676 253514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = fts5LeafFirstTermOff(pLeaf);
252677 253515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRowidOff = fts5LeafFirstRowidOff(pLeaf);
252678 253516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowidOff>=iOff || iOff>=pLeaf->szLeaf ){
252679 { 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);
252680 253518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
252681 253519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&pLeaf->p[iOff], nTerm);
252682 253520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res = fts5Memcmp(&pLeaf->p[iOff], zIdxTerm, MIN(nTerm, nIdxTerm));
252683 253521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res==0 ) res = nTerm - nIdxTerm;
252684 { 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);
252685 253523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252686 253524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252687 { 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);
252688 253526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252689 253527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
252690 253528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc ) break;
252691 253529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252692 253530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Now check that the iter.nEmpty leaves following the current leaf
@@ -252712,11 +253550,11 @@
252712 253550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check any rowid-less pages that occur before the current leaf. */
252713 253551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iPg=iPrevLeaf+1; iPg<fts5DlidxIterPgno(pDlidx); iPg++){
252714 253552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iKey = FTS5_SEGMENT_ROWID(iSegid, iPg);
252715 253553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeaf = fts5DataRead(p, iKey);
252716 253554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLeaf ){
252717 { 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);
252718 253556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
252719 253557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252720 253558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252721 253559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPrevLeaf = fts5DlidxIterPgno(pDlidx);
252722 253560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -252727,16 +253565,16 @@
252727 253565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLeaf ){
252728 253566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iRowid;
252729 253567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRowidOff = fts5LeafFirstRowidOff(pLeaf);
252730 253568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ASSERT_SZLEAF_OK(pLeaf);
252731 253569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowidOff>=pLeaf->szLeaf ){
252732 { 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);
252733 253571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( bSecureDelete==0 || iRowidOff>0 ){
252734 253572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iDlRowid = fts5DlidxIterRowid(pDlidx);
252735 253573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5GetVarint(&pLeaf->p[iRowidOff], (u64*)&iRowid);
252736 253574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRowid<iDlRowid || (bSecureDelete==0 && iRowid!=iDlRowid) ){
252737 { 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);
252738 253576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252739 253577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252740 253578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5DataRelease(pLeaf);
252741 253579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252742 253580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -252784,10 +253622,11 @@
252784 253622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252785 253623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
252786 253624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Used by extra internal tests only run if NDEBUG is not defined */
252787 253625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 cksum3 = 0; /* Checksum based on contents of indexes */
252788 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;
252789 253628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
252790 253629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const int flags = FTS5INDEX_QUERY_NOOUTPUT;
252791 253630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252792 253631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Load the FTS index structure */
252793 253632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStruct = fts5StructureRead(p);
@@ -252826,11 +253665,11 @@
252826 253665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOff = 0; /* Offset within poslist */
252827 253666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iRowid = fts5MultiIterRowid(pIter);
252828 253667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z = (char*)fts5MultiIterTerm(pIter, &n);
252829 253668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252830 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. */
252831 { 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);
252832 253671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->rc ) break;
252833 253672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252834 253673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eDetail==FTS5_DETAIL_NONE ){
252835 253674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==fts5MultiIterIsEmpty(p, pIter) ){
252836 253675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cksum2 ^= sqlite3Fts5IndexEntryCksum(iRowid, 0, 0, -1, z, n);
@@ -252844,19 +253683,30 @@
252844 253683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTokOff = FTS5_POS2OFFSET(iPos);
252845 253684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cksum2 ^= sqlite3Fts5IndexEntryCksum(iRowid, iCol, iTokOff, -1, z, n);
252846 253685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252847 253686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252848 253687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252849 { 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);
252850 253689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252851 253690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5MultiIterFree(pIter);
252852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->rc==SQLITE_OK && bUseCksum && cksum!=cksum2 ) p->rc = FTS5_CORRUPT;
252853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
252854 { 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!
+ }
252855 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!
+ }
252856 253704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferFree(&term);
252857 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);
252858 253708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5BufferFree(&poslist);
252859 253709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return fts5IndexReturn(p);
252860 253710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
252861 253711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252862 253712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*************************************************************************
@@ -257263,11 +258113,11 @@
257263 258113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
257264 258114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
257265 258115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
257266 258116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
257267 258117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
257268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2025-04-30 14:37:00 20abf1ec107f942e4527901685d61283c9c2fe7bcefad63dbf5c6cbf050da849", -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);
257269 258119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
257270 258120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
257271 258121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
257272 258122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Implementation of fts5_locale(LOCALE, TEXT) function.
257273 258123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -257386,12 +258236,13 @@
257386 258236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
257387 258237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pzErr = sqlite3_mprintf("unable to validate the inverted index for"
257388 258238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FTS5 table %s.%s: %s",
257389 258239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSchema, zTabname, sqlite3_errstr(rc));
257390 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;
257391 258243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
257392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
257393 258244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5IndexCloseReader(pTab->p.pIndex);
257394 258245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->p.pConfig->pzErrmsg = 0;
257395 258246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
257396 258247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
257397 258248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -258078,10 +258929,11 @@
258078 258929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ctx.pStorage = p;
258079 258930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ctx.iCol = -1;
258080 258931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iCol=1; rc==SQLITE_OK && iCol<=pConfig->nCol; iCol++){
258081 258932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pConfig->abUnindexed[iCol-1]==0 ){
258082 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;
258083 258935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *pText = 0;
258084 258936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nText = 0;
258085 258937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *pLoc = 0;
258086 258938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nLoc = 0;
258087 258939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -258094,15 +258946,26 @@
258094 258946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258095 258947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
258096 258948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pConfig->bLocale && sqlite3Fts5IsLocaleValue(pConfig, pVal) ){
258097 258949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Fts5DecodeLocaleValue(pVal, &pText, &nText, &pLoc, &nLoc);
258098 258950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
258099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pText = (const char*)sqlite3_value_text(pVal);
258100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nText = sqlite3_value_bytes(pVal);
258101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pConfig->bLocale && pSeek ){
258102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLoc = (const char*)sqlite3_column_text(pSeek, iCol + pConfig->nCol);
258103 { 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!
+ }
258104 258967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258105 258968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258106 258969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
258107 258970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
258108 258971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5SetLocale(pConfig, pLoc, nLoc);
@@ -258114,10 +258977,11 @@
258114 258977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && p->aTotalSize[iCol-1]<0 ){
258115 258978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = FTS5_CORRUPT;
258116 258979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258117 258980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5ClearLocale(pConfig);
258118 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);
258119 258983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258120 258984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
258121 258985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && p->nTotalRow<1 ){
258122 258986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = FTS5_CORRUPT;
258123 258987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
258124 258988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!